/* Skin only. Node semantics, navigation, previews and progress remain shared. */
.text-nodes-review :is(.sector-landscape,.sector-activity-detail,.sector-preview-thumbnail,.sector-preview-planet,.preview-planet,.planet-sphere,.course-star,.orbit,.orbital-tracks,.stage-twinkle){display:none!important}
.text-nodes-review .map-popover header::before{display:none!important}
.text-nodes-review .map-popover.sector-lesson-preview header,.text-nodes-review .map-popover:has([data-action="enter-preview-unit"]) header{padding-left:0!important;min-height:65px}
.text-nodes-review .planet-popover-header{display:block}.text-nodes-review .preview-header{display:block}
.text-nodes-review .sector-map{background-color:#090e1c;background-image:radial-gradient(1px 1px at 20% 35%,#a5b2db 80%,transparent),radial-gradient(1px 1px at 65% 70%,#a5b2db 80%,transparent),radial-gradient(1px 1px at 85% 20%,#66638a 80%,transparent);background-size:220px 180px,310px 250px,370px 280px}
.text-nodes-review .planet-node{left:var(--text-node-x,50%)!important;top:48%!important;transform:translate(-50%,-50%)!important;width:240px!important;height:130px!important}
.text-nodes-review [data-planet-trigger]{width:240px!important;height:130px!important;background:#141a30;border:1px solid #b68af5;box-shadow:3px 3px #050814;clip-path:none!important}
.text-nodes-review .planet-label{position:static!important;transform:none!important;max-width:none;width:100%;text-align:center}.text-nodes-review .planet-label strong{display:block;font-size:19px;margin:10px 0}.text-nodes-review .planet-label small{font-size:14px}
.text-nodes-review .planet-popover{z-index:50}
.text-nodes-review .territory-marker{display:block!important;width:210px;min-width:210px;height:auto!important;min-height:96px;padding:14px!important;line-height:1.5;background:#141a30!important;border:1px solid #b68af5;white-space:normal!important;pointer-events:auto}
.text-nodes-review .territory-marker::after{display:none!important}
.text-nodes-review .world-layer > :is(.unit-territory,.territory-anchor){z-index:3}
.text-nodes-review .sector-map:has(.sector-journey-dock) .module-heading{width:auto;height:auto;margin:0;padding:0;overflow:visible;clip-path:none;white-space:normal}
.text-node-title{display:block;font:15px/1.45 "Segoe UI",sans-serif;margin-top:8px;white-space:normal}
.text-node-state{display:block;font:11px/1.4 "Segoe UI",sans-serif;color:#b9bdec;margin-top:8px}
.text-nodes-review .activity-tile-rest{display:block!important;text-align:center;width:190px!important;min-height:96px;padding:12px!important;white-space:normal!important;background:#141a30!important;border:1px solid #8575ad;pointer-events:auto!important}
.text-nodes-review .activity-tile.state-completed .activity-tile-rest{border-color:#59e6aa}.text-nodes-review .activity-tile.state-completed .text-node-state{color:#89dfb9}
.text-nodes-review .activity-tile.state-locked .activity-tile-rest{border-color:#56566b;color:#a6a6b6}
.text-nodes-review .activity-tile:is(:hover,:focus-visible) .activity-tile-rest{outline:2px solid #c7a5ff;outline-offset:3px}
.text-nodes-review .surface-territory{background:none!important;box-shadow:none!important}
.text-nodes-review .sector-lesson-path{opacity:.85}.text-nodes-review .sector-lesson-path line{stroke-width:2}
.text-nodes-review .sector-study-continue{font-size:14px}
.text-nodes-review .planet-popover-header .sector-preview-planet{display:none}
.text-nodes-review .map-popover{position:fixed!important;left:50%!important;top:45%!important;transform:translate(-50%,-50%)!important;max-height:calc(100vh - 240px);overflow-y:auto;z-index:100}
/* Reusable split/rejoin presentation inside the existing course preview. */
.text-nodes-review .map-popover.course-fork-preview{width:660px!important;max-width:calc(100vw - 40px);top:48%!important;max-height:calc(100vh - 180px)}
.course-fork-graph{display:grid;gap:0;text-align:center;margin:18px 0;color:#eee8ff}
.course-fork-end{padding:12px;background:#202038;border:1px solid #8b76ae;font-size:14px}
.course-fork-branches{position:relative;display:grid;grid-template-columns:1fr 1fr;gap:40px;padding:26px 24px}
.course-fork-branches:before,.course-fork-branches:after{content:'';position:absolute;left:25%;right:25%;height:13px;border:2px dashed #88849e}
.course-fork-branches:before{top:0;border-bottom:0}.course-fork-branches:after{bottom:0;border-top:0}
.course-fork-branches button{position:relative;min-height:48px;border:1px solid #ad89e9;background:#191d34;color:#eee8ff;font:14px/1.4 var(--ecg-font-pixel);cursor:pointer}
.course-fork-branches button:before,.course-fork-branches button:after{content:'';position:absolute;left:50%;height:13px;border-left:2px dashed #88849e}
.course-fork-branches button:before{bottom:100%}.course-fork-branches button:after{top:100%}
.course-fork-branches button.is-current{border-color:#79e3b1;color:#a5f4ce}
.course-fork-branches button[aria-pressed=true]{outline:2px solid #d4bdff;outline-offset:3px}
.course-fork-branches.is-folded{grid-template-columns:1fr;max-width:300px;width:100%;margin:auto}
.course-fork-branches.is-folded:before,.course-fork-branches.is-folded:after{left:50%;right:auto;border-right:0;border-top:0;border-bottom:0}
.course-fork-branches button[hidden],.course-fork-toggle[hidden]{display:none!important}
.course-fork-detail{margin-top:12px;padding:16px;background:#11182a;border:1px solid #716286}
.course-fork-detail h3{margin:0 0 8px;font-size:16px}.course-fork-detail p{font-size:14px;line-height:1.5}
.course-fork-detail button,.course-fork-toggle{min-height:44px;padding:10px;margin-top:8px;width:100%;border:1px solid #967eaf;background:#242139;color:#eee8ff;font:14px/1.4 var(--ecg-font-pixel)}
.course-fork-detail .course-fork-use:not(:disabled){background:#b18aef;color:#130d27;cursor:pointer}
.course-fork-detail button:disabled{opacity:.65}.course-fork-graph button:focus-visible,.course-fork-toggle:focus-visible,.course-fork-detail button:focus-visible{outline:2px solid #c9efff;outline-offset:3px}
.course-fork-preview .sector-study-actions{display:none}
.skill-tree-guide{position:fixed;top:126px;left:50%;transform:translateX(-50%);margin:0;padding:5px 12px;background:#090e1cee;color:#c4c3d7;font:12px/1.5 var(--ecg-font-pixel);z-index:20;white-space:nowrap;pointer-events:none}
.text-nodes-review .tree-recommended .activity-tile-rest{border-color:#cfb3ff;box-shadow:0 0 0 2px #ad88e844}
.tree-objectives{grid-column:1/-1;min-width:0;border-bottom:1px solid #62547e;padding-bottom:10px}
.tree-objectives-heading{display:flex;justify-content:space-between;gap:16px;font-size:12px;color:#c7c1da;margin-bottom:8px}
.tree-objectives-row{display:flex;flex-wrap:wrap;gap:6px}
.tree-objectives-row button{min-height:38px;padding:7px 10px;background:#202432;border:1px solid #6b6c7f;color:#c5c7d4;font:12px/1.4 var(--ecg-font-pixel);cursor:pointer}
.tree-objectives-row button.is-covered{background:#122e27;border-color:#70d9ac;color:#a2efd0}
.tree-objectives-row button.is-previewed{outline:2px dashed #d3b2ff;outline-offset:1px}
.tree-objectives-row button:focus-visible{outline:2px solid white;outline-offset:3px}
.tree-objectives-feedback{font:13px/1.5 var(--ecg-font-pixel);color:#bcebdc;margin:8px 0 4px;min-height:20px}
.tree-objective-info{font:12px/1.4 var(--ecg-font-pixel);color:#b6b6c8;margin:0}
.tree-preview-coverage{border-left:3px solid #c0a0f0;padding:10px;background:#242136;color:#e7dbff;font-size:14px;line-height:1.5}
.tree-objectives-row .is-newly-covered{animation:tree-goal-credit .5s ease-out}
@keyframes tree-goal-credit{from{box-shadow:0 0 12px #7ef5b7;transform:translateY(-3px)}to{box-shadow:none;transform:none}}
@media(prefers-reduced-motion:reduce){.tree-objectives-row .is-newly-covered{animation:none}}
.skill-tree-view .sector-lesson-path line{stroke:#777588!important;opacity:.45;animation:none!important}
.skill-tree-view .sector-lesson-path .tree-edge-done{stroke:#70d9ac!important;opacity:.8}
.skill-tree-view .sector-lesson-path .tree-edge-next{stroke:#d3b2ff!important;stroke-width:4;opacity:1}
/* Desktop tree workspace: fixed inspector, reserved map area, persistent objectives. */
.text-nodes-review .skill-tree-view .sector-viewport{top:164px;right:364px;left:0;width:auto}
.tree-preview-rail{position:fixed;right:12px;top:158px;width:336px;box-sizing:border-box;padding:18px;border:1px solid #655a7c;background:#101626;z-index:15;color:#bfc1d3;font:14px/1.6 var(--ecg-font-pixel)}
.text-nodes-review:has(.skill-tree-view) .map-popover{left:auto!important;right:12px!important;top:158px!important;width:336px!important;max-width:336px!important;transform:none!important;box-sizing:border-box}
.skill-tree-view .skill-tree-guide{left:16px;transform:none;top:136px;font-size:11px;max-width:calc(100vw - 380px);overflow:hidden}
.tree-explorer-tools{position:fixed;right:374px;top:100px;display:flex;gap:4px;z-index:25}
.tree-explorer-tools button{border:1px solid #a58bc7;background:#232037;color:#eee6ff;min-height:36px;padding:6px 12px;font:13px/1.4 var(--ecg-font-pixel);cursor:pointer}
.tree-group-toggle{position:absolute;z-index:10;transform:translateX(-50%) scale(calc(1 / var(--sector-scale)));transform-origin:center top;white-space:nowrap}
.tree-group-hidden{display:none!important}
.skill-tree-view .sector-lesson-path path{fill:none;stroke:#777588;stroke-width:2;stroke-dasharray:5 8;opacity:.45;vector-effect:non-scaling-stroke}
.skill-tree-view .sector-lesson-path path.tree-edge-next{stroke:#d3b2ff;stroke-width:3;opacity:1}
.skill-tree-view .sector-lesson-path path.tree-edge-done{stroke:#70d9ac;opacity:.8}
.tree-explorer-tools button:focus-visible,.tree-group-toggle:focus-visible{outline:2px solid white;outline-offset:3px}
.skill-tree-view .unit-heading{max-width:calc(100vw - 720px)}
.skill-tree-view .sector-study-status>span{display:none}
.skill-tree-view .sector-study-status button{min-height:24px;padding:2px 8px}
.skill-tree-view .sector-study-dock{gap:8px;padding:12px 16px}
.tree-group-toggle{pointer-events:auto;z-index:30}

/* Fixed previews need no hover bridge: the old invisible corridor intercepted node clicks. */
.text-nodes-review [data-map-preview-bridge]{display:none!important;pointer-events:none!important}
/* Group headings are disclosure controls, deliberately distinct from lesson cards. */
.tree-group-toggle{display:flex;align-items:center;gap:8px;width:270px;min-height:44px;padding:5px 8px;box-sizing:border-box;white-space:normal;text-align:left;border:0;border-bottom:1px solid #655a7c;background:#090e1c;color:#d3c5e7;font:12px/1.4 var(--ecg-font-pixel);cursor:pointer;box-shadow:none}
.tree-group-copy{display:block;min-width:0}
.tree-group-toggle strong{display:block;font:12px/1.4 var(--ecg-font-pixel);font-weight:normal}
.tree-group-summary-text{display:block;margin-top:2px;color:#afb3c9;font:12px/1.4 var(--ecg-font-pixel)}
.tree-group-chevron{flex:none;font-size:18px;line-height:1;transform-origin:center}
.tree-group-toggle[data-group-state="expanded"] .tree-group-chevron{transform:rotate(90deg)}
.tree-group-toggle:hover{color:#eee3ff;border-bottom-color:#cfb3ff}
.tree-group-toggle:focus-visible{outline:2px solid #bdefff;outline-offset:3px}
/* Future imagery is a separate decorative layer; it cannot intercept disclosure clicks. */
.tree-group-visual{pointer-events:none;flex:none}
.tree-group-visual[hidden]{display:none}
.tree-group-visual img{width:32px;height:32px;object-fit:contain;image-rendering:pixelated}

/* Availability is a hint; only the inspected node gets the strong selection frame. */
.text-nodes-review .skill-tree-view .activity-tile.sector-next .activity-tile-rest{outline:none;box-shadow:none}
.text-nodes-review .skill-tree-view .tree-recommended .activity-tile-rest{border-color:#a58bc7;box-shadow:none}
.text-nodes-review .skill-tree-view:has(.activity-tile.is-selected) .tree-recommended:not(.is-selected) .activity-tile-rest{border-color:#716780;box-shadow:none}
.text-nodes-review .skill-tree-view .activity-tile:is(.is-selected,:hover,:focus-visible) .activity-tile-rest{outline:2px solid #d6b8ff;outline-offset:3px;border-color:#cfb3ff}

/* Completed route stays green; optional branches remain readable and inspectable. */
.text-nodes-review .skill-tree-view .tree-alternative:not(:is(.is-selected,:hover,:focus-visible)) .activity-tile-rest{background:#101522!important;border-color:#42475b;color:#a9adbf;box-shadow:none}
.text-nodes-review .skill-tree-view .tree-alternative .text-node-state{color:#a9adbf}
.skill-tree-view .sector-lesson-path path.tree-edge-alternative{stroke:#555968;opacity:.22;stroke-width:2}
.text-nodes-review .skill-tree-view .state-completed .activity-tile-rest{border-color:#59e6aa;color:#89dfb9}
.text-nodes-review .skill-tree-view .activity-tile.is-selected .text-node-state{color:#dcc9ff}

.tree-group-toggle.tree-group-optional:not(:is(:hover,:focus-visible)){border-color:#42475b;color:#a9adbf;background:#090e1c}
.tree-group-toggle.tree-group-next{border-color:#cbb0ef}
.tree-completion-receipt{padding:12px;margin-bottom:16px;background:#122e27;border:1px solid #70d9ac;color:#a2efd0}
.tree-completion-receipt p{margin:8px 0 0;color:#dbf3e9}

.tree-preview-rail{overflow-y:auto}
.tree-next-choices{display:grid;gap:10px}
.tree-next-choices button,.tree-course-complete a{display:block;padding:10px 12px;min-height:44px;border:1px solid #9782b9;background:#191d34;color:#eee6ff;font:13px/1.5 var(--ecg-font-pixel);text-align:left;cursor:pointer;text-decoration:none}
.tree-next-choices button:is(:hover,:focus-visible),.tree-course-complete a:focus-visible{outline:2px solid #cbb0ef;outline-offset:2px}
.tree-preview-rail:has(.tree-next-choices)>:is(strong,p,.tree-completion-receipt){display:none}
.tree-course-complete{margin-top:16px;padding-top:12px;border-top:1px solid #70d9ac;color:#a2efd0}

/* Zooming out scales the labels too, keeping neighboring nodes from overlapping. */
.text-nodes-review .skill-tree-view .activity-tile-rest,.skill-tree-view .tree-group-toggle{transform:translateX(-50%) scale(calc(var(--tree-zoom,1) / var(--sector-scale)))}
.tree-next-choices button span{display:block;margin-top:4px;font-size:12px;color:#bfc1d3}

/* Keep navigation tools clear of the unit title. */
.skill-tree-view .tree-explorer-tools{top:64px}

/* Shared node face across the course, module/unit selectors, and lessons. */
.text-nodes-review{--course-node-bg:#141a30;--course-node-border:#8575ad;--course-node-width:190px}
.text-nodes-review .course-node-face{background:var(--course-node-bg)!important;border:1px solid var(--course-node-border);text-align:center;box-sizing:border-box}
.text-nodes-review .planet-node,.text-nodes-review [data-planet-trigger]{width:var(--course-node-width)!important;height:112px!important}
.text-nodes-review [data-planet-trigger]{border-color:var(--course-node-border);box-shadow:none}
.text-nodes-review .planet-label strong{font-size:15px;margin:8px 0}
.text-nodes-review .planet-label small{font-size:12px}
.text-nodes-review .planet-node.state-completed [data-planet-trigger]{border-color:#59e6aa;color:#89dfb9}
.text-nodes-review .planet-node.state-locked [data-planet-trigger]{border-color:#56566b;color:#a6a6b6}
.text-nodes-review .planet-node:is(:hover,:focus-within,.is-preview-open) [data-planet-trigger]{outline:2px solid #d6b8ff;outline-offset:3px}
.course-module-links{position:absolute;inset:0;width:100%;height:100%;pointer-events:none}
.course-module-links line{stroke:#777588;stroke-width:2;stroke-dasharray:5 8;vector-effect:non-scaling-stroke}
.course-module-links .is-covered{stroke:#70d9ac}

/* Explicit temporary controls in the course explorer, outside the learning path. */
.text-nodes-review .course-test-reset{position:absolute;right:20px;bottom:20px;width:auto;z-index:8;margin:0}
.text-nodes-review .review-complete-world:focus-visible{outline:2px solid #cbb0ef;outline-offset:3px}

/* Shared orientation and progressive preview details, without another modal. */
.skill-tree-view .skill-tree-guide{display:none}
.tree-mission{position:fixed;top:146px;left:16px;right:380px;z-index:18;pointer-events:none;background:#090e1cf2;border-left:2px solid #ad88e8;padding:5px 12px;box-sizing:border-box}
.tree-mission small{display:block;color:#baa1e0;font:11px/1.3 var(--ecg-font-pixel)}
.tree-mission strong{display:block;color:#eee9ff;font:14px/1.4 var(--ecg-font-pixel);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.tree-mission p{margin:3px 0 0;color:#bec5d7;font:12px/1.4 var(--ecg-font-pixel)}
.text-nodes-review .skill-tree-view .sector-viewport{top:226px}
.tree-guided-preview .map-preview-content>.map-preview-requirement{display:none}
.tree-preview-guide{margin:12px 0;color:var(--ecg-ui-text,#d8dcec);font:14px/1.5 var(--ecg-font-pixel)}
.tree-preview-guide>small,.tree-preview-guide details>strong{color:var(--ecg-ui-silver,#c3a2f2);font-size:12px}
.tree-preview-guide p{margin:6px 0 12px;white-space:pre-line}
.tree-preview-guide .tree-guide-fit{border-left:2px solid var(--ecg-ui-accent,#688f9b);padding-left:10px;color:var(--ecg-ui-muted,#bdd5dd)}
.tree-preview-guide details{border-top:1px solid var(--ecg-ui-border-soft,#4b435e);padding-top:10px}
.tree-preview-guide summary{cursor:pointer;min-height:32px;color:var(--ecg-ui-silver,#dfcdf9)}
.tree-preview-guide summary:focus-visible{outline:2px solid var(--ecg-ui-focus,#cbb0ef);outline-offset:3px}

.text-nodes-review .tree-guided-preview{display:block!important}
.tree-guided-preview .map-preview-content{height:auto!important;max-height:none!important;overflow:visible!important;flex:none!important}
.tree-guided-preview .lesson-preview-action{display:block;width:100%;box-sizing:border-box}

/* Inspecting emphasizes connections only; availability and progress keep their own state. */
.text-nodes-review .tree-node-rule{display:block;margin-top:8px;padding-top:6px;border-top:1px solid #625773;color:#d9c5ee;font:12px/1.4 var(--ecg-font-pixel)}
.tree-node-rule[hidden]{display:none!important}
.tree-preview-guide .tree-requirement-rule{color:var(--ecg-ui-lock,#d9c5ee);border-left:2px solid var(--ecg-ui-lock,#b38ae5);padding-left:10px}

.tree-variant-facts{margin:14px 0;padding:12px;background:var(--ecg-ui-inset-bg,#14283a);border:1px solid var(--ecg-ui-border-soft,#536579)}
.tree-variant-facts dt{font-size:12px;color:var(--ecg-ui-silver,#cbd5e2);margin-top:12px}.tree-variant-facts dt:first-child{margin-top:0}
.tree-variant-facts dd{margin:4px 0 0;font-size:14px;line-height:1.5;color:var(--ecg-ui-text,#e6edf7)}
.tree-preview-rail{overflow-y:auto}
.tree-resume{margin-top:16px;padding-top:12px;border-top:1px solid #615476}
.tree-resume small{color:#c7a8f4}.tree-resume p{font-size:14px;line-height:1.5}
.tree-resume button{display:block;width:100%;margin-top:8px;padding:10px;min-height:44px;border:1px solid #a58bc7;background:#232037;color:#eee6ff;font:13px/1.5 var(--ecg-font-pixel);text-align:left;cursor:pointer}
.tree-resume button:focus-visible{outline:2px solid #cbb0ef;outline-offset:3px}
.tree-preview-rail:has(.tree-resume:not([hidden]))>p{display:none}

/* A fitting lesson map is stationary; oversized axes retain bounded navigation. */
.skill-tree-view .sector-viewport[data-pan-x="false"][data-pan-y="false"]{cursor:default;overflow:hidden}
.skill-tree-view .sector-viewport[data-pan-x="false"]{overflow-x:hidden}
.skill-tree-view .sector-viewport[data-pan-y="false"]{overflow-y:hidden}
