/* One continuous sky. Sprites retain alpha; light blending and a soft mask feather their edges. */
body[data-student-view=route]{background:#030d1d}
body[data-student-view=route] .route-shell{background:#030d1d url('/nebula-assets/starfield.webp') center/cover fixed;min-height:100dvh;height:auto}
body[data-student-view=route] .route-shell .main{background:transparent!important;padding:26px 34px 38px;min-height:100dvh;isolation:isolate}
body[data-student-view=route] .route-shell .main:before,body[data-student-view=route] .route-shell .main:after{display:none}
body[data-student-view=route] .route-shell .topbar{display:none}
.chapter-stars{color:#e5f3ff;position:relative;max-width:1600px;margin:auto;isolation:isolate}
.star-toolbar{display:flex;justify-content:space-between;align-items:center;gap:16px;margin:0 0 34px}
.star-subjects{display:flex;gap:8px;flex-wrap:wrap}
.star-subject{border:1px solid #8ebdd136;border-radius:24px;padding:10px 25px;min-height:44px;color:#acc6df;background:#0616299c;font-size:15px}
.star-subject[aria-pressed=true]{background:#163f607a;border-color:#71c5fa91;color:#d6f2ff;box-shadow:inset 0 0 22px #65c5fc0d}
.star-total{font-size:13px;letter-spacing:.5px;color:#a1b9d0}
.star-heading{position:relative;z-index:3;pointer-events:none}
.star-heading>*{pointer-events:auto}
.star-eyebrow{display:block;color:#79b9dd;font-size:12px;letter-spacing:4px;margin-bottom:9px}
.star-heading h2{font-size:30px;letter-spacing:2px;font-weight:600;margin:0 0 10px;color:#e6f6ff;text-shadow:0 2px 20px #73c6ff25;overflow-wrap:anywhere}
.star-heading p{font-size:14px;letter-spacing:.3px;color:#abc1d7;margin:0;line-height:1.8}
.star-heading h2:focus{outline:none}
.star-back{min-height:44px;display:block;background:transparent;color:#94d6ef;border:0;padding:0 0 12px;font-size:14px}
.star-overview{position:relative;margin-top:6px;isolation:isolate}
.star-nebula-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));column-gap:15px;row-gap:0;padding:0 8px 14px;position:relative}
.star-nebula{position:relative;background:transparent!important;border:0!important;border-radius:24px;box-shadow:none!important;min-width:0;height:285px;color:inherit;padding:0;isolation:isolate;text-align:center;transition:color .2s}
.star-nebula:nth-child(3n+2){transform:translateY(20px)}
.star-cloud{display:block;position:absolute;inset:-45px -27px 0;pointer-events:none;z-index:-1;mix-blend-mode:screen;transform:scale(var(--cloud-scale,1)) rotate(var(--cloud-turn,0deg));filter:brightness(var(--cloud-light,1));}
.star-cloud img{width:100%;height:100%;object-fit:contain;position:absolute;inset:0;user-select:none;mask-image:radial-gradient(ellipse at center,#000 25%,#000e 43%,#0009 56%,#0003 65%,transparent 73%);-webkit-mask-image:radial-gradient(ellipse at center,#000 25%,#000e 43%,#0009 56%,#0003 65%,transparent 73%)}
.star-cloud img.star-cloud-glow{opacity:.28;filter:blur(22px);transform:scale(1.3);z-index:-1}
.star-cloud-empty{display:grid;place-items:center;font-size:90px;color:#83b5e4;text-shadow:0 0 50px #4288cf}
.star-nebula-label{display:flex;position:absolute;inset:auto 6px 14px;flex-direction:column;align-items:center;gap:7px;text-shadow:0 2px 10px #000,0 0 20px #00112c;z-index:2}
.star-nebula strong{font-size:20px;letter-spacing:1px;font-weight:600;line-height:1.6;max-width:100%;overflow-wrap:anywhere}
.star-nebula small{font-size:12px;color:#b0c7de}
.star-enter{display:inline-flex;align-items:center;justify-content:center;gap:16px;font-size:12px;letter-spacing:1px;color:#9adaf2;border:1px solid #70bee554;padding:7px 17px;border-radius:22px;background:#061b2e7d;margin-top:4px;transition:background .2s,border-color .2s}
.star-enter>span{font-size:18px;line-height:1}
.star-nebula:hover .star-enter,.star-nebula:focus-visible .star-enter,.star-level:hover .star-enter{border-color:#96e1ff;background:#17446d91;color:#e0f6ff}
.chapter-stars button:focus-visible{outline:2px solid #a5e5ff;outline-offset:5px}
.star-cloud-stream{position:absolute;inset:0 -30px;background:radial-gradient(ellipse 38% 22% at 25% 39%,#0c65a337,transparent 80%),radial-gradient(ellipse 42% 18% at 64% 35%,#12559b28,transparent 80%),radial-gradient(ellipse 48% 14% at 51% 74%,#143e802a,transparent 80%);filter:blur(20px);pointer-events:none;z-index:-2}
.star-map-foot{display:flex;justify-content:space-between;align-items:center;gap:16px;color:#9fbcd4;padding:22px 4px;font-size:13px;border-top:1px solid #79a7ce26;margin-top:22px}
.star-pager{display:flex;align-items:center;gap:16px;flex:none;font-size:13px}
.star-pager button{border:1px solid #7fbed55c;color:#aeddf3;background:#071b32a3;border-radius:12px;width:48px;height:44px;font-size:20px}
.star-pager button:disabled{opacity:.25;cursor:default}
.star-domain{position:relative;isolation:isolate;margin-top:28px;min-height:365px}
.star-domain-cloud{inset:-70px -5% -100px 0;opacity:.18;z-index:-1;filter:blur(2px) brightness(var(--cloud-light,1));overflow:hidden;mask-image:radial-gradient(ellipse at center,#000 18%,#0009 43%,transparent 70%);-webkit-mask-image:radial-gradient(ellipse at center,#000 18%,#0009 43%,transparent 70%)}
.star-domain-cloud img{object-fit:contain;transform:scale(1.7);}
.star-domain-cloud img.star-cloud-glow{transform:scale(2.2)}
.star-level-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:18px 12px;align-items:start;position:relative;padding:5px 0 15px}
.star-level-grid[data-count="1"]{grid-template-columns:minmax(220px,360px);justify-content:center}
.star-level-grid[data-count="2"]{grid-template-columns:repeat(2,minmax(220px,360px));justify-content:center;gap:48px}
.star-level{--planet-size:276px;min-width:0;background:transparent!important;color:#e3f2ff;border:0!important;box-shadow:none!important;border-radius:24px;display:flex;flex-direction:column;align-items:center;padding:0 10px 20px;position:relative;min-height:365px;text-shadow:0 2px 12px #010916}
.star-level[data-size=small]{--planet-size:240px}
.star-level[data-size=large]{--planet-size:312px}
.star-planet{display:grid;place-items:center;position:relative;width:100%;height:225px;}
.star-level .planet-model{width:var(--planet-size);height:var(--planet-size);max-width:none;position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);filter:drop-shadow(0 0 13px #497fcc1a);transition:filter .25s}
.star-level[data-placed=false] .planet-model{filter:grayscale(.55) brightness(.85) drop-shadow(0 0 12px #4671b925)}
.star-level:hover .planet-model{filter:drop-shadow(0 0 18px #85c4ff60)}
.star-level strong{font-size:18px;line-height:1.65;max-width:100%;overflow-wrap:anywhere;letter-spacing:.5px}
.star-level-number{font-size:12px;letter-spacing:2px;color:#9cc5df;margin-bottom:7px}
.star-level-status{font-size:12px;color:#9dd8f0;margin-top:8px}
.star-level small{font-size:12px;color:#98b2ca;margin-top:7px}
.star-level .star-enter{margin-top:14px}
.star-atlas{border:1px solid #7092b42b;border-radius:18px;background:#05162b9c;margin-top:8px;padding:0 18px 12px;position:relative;z-index:1}
.star-atlas summary{font-size:14px;color:#c0d7e8;min-height:52px;align-content:center;cursor:pointer;padding:12px 0;line-height:1.7}
.star-atlas summary>span{font-size:12px;color:#8ba9c2;margin-left:18px}
.star-atlas>div{display:grid;grid-template-columns:repeat(6,minmax(0,1fr));gap:12px;text-align:center}
.star-atlas figure{margin:0;min-width:0}
.star-atlas .planet-model{width:100%;height:104px}
.star-atlas figcaption{font-size:12px;line-height:1.6;color:#cbdeee}
.star-atlas small{display:block;color:#8cabc2;font-size:11px;margin-top:4px}

/* Teacher controls reuse the existing light workspace and backend roles. */
.star-config-launch{display:flex;align-items:center;justify-content:space-between;gap:20px;padding:24px;border:1px solid #cbdef1;background:linear-gradient(110deg,#eaf4ff,#f4f9ff);border-radius:16px;margin-bottom:22px;color:#254f77}
.star-config-launch b{font-size:18px}.star-config-launch p{margin:8px 0 0;font-size:13px;color:#57799a}
.star-admin{color:#24415e}
.star-admin-heading{display:flex;align-items:center;justify-content:space-between;gap:20px;margin-bottom:25px}
.star-admin-heading h2{font-size:26px;margin:16px 0 8px}.star-admin-heading p{color:#678099;font-size:14px;margin:0}
.star-save-actions{display:flex;align-items:center;gap:12px;flex-wrap:wrap}.star-save-actions>span{font-size:12px;color:#69819b}
.star-global{display:grid;grid-template-columns:1.4fr 1.2fr .8fr .8fr 1fr;gap:18px;align-items:center;padding:24px!important}
.star-global h3{font-size:17px;margin:0 0 8px}.star-global p{font-size:12px;line-height:1.8;color:#668097;margin:0}
.star-global label{display:grid;gap:9px;font-size:12px;color:#456582}
.star-global :is(input,select){width:100%;min-width:0;min-height:44px;border:1px solid #cbd9e7;border-radius:9px;padding:10px;background:#fff;color:#274661}
.star-sizing-note{grid-column:1/-1;border-top:1px solid #e2ebf3;padding-top:16px;display:flex;gap:24px;flex-wrap:wrap;color:#68839d;font-size:12px}
.star-admin-subjects{display:flex;gap:10px;margin:26px 0 18px;flex-wrap:wrap}
.star-editor{display:grid;grid-template-columns:220px minmax(0,1fr);gap:24px}
.star-chapter-list{display:flex;flex-direction:column;gap:8px;align-self:start;max-height:800px;overflow-y:auto}
.star-chapter-list button{display:grid;grid-template-columns:30px 1fr;align-items:center;gap:5px 8px;text-align:left;padding:15px 12px;border:1px solid #dce5ee;border-radius:12px;background:#fff;min-height:76px;color:#375a78}
.star-chapter-list button[aria-current=true]{border-color:#6fa9d8;background:#e9f3ff;color:#175c99}
.star-chapter-list button>span{grid-row:1/3;color:#7e9cb6;font-size:13px}.star-chapter-list b{font-size:14px;line-height:1.6;overflow-wrap:anywhere}.star-chapter-list small{color:#7d95ab;font-size:11px}
.star-editor-main{min-width:0}.star-style-workspace{display:grid;grid-template-columns:1.2fr 1fr;gap:20px}
.star-style-preview{position:relative;isolation:isolate;background:#031020 url('/nebula-assets/starfield.webp') center/cover;min-height:320px;border-radius:18px;overflow:hidden;display:flex;justify-content:flex-end;align-items:center;flex-direction:column;color:#d9f2ff;padding:20px}
.star-style-preview .star-cloud{inset:-25px 0 12px;z-index:-1}
.star-style-preview>strong{font-size:21px;letter-spacing:1px;text-shadow:0 2px 15px #000;max-width:100%;overflow-wrap:anywhere;text-align:center}
.star-style-preview>span:last-child{font-size:12px;margin-top:8px;color:#a3bdd1}
.star-style-controls{padding:23px!important;margin:0!important}.star-style-controls h3{font-size:16px;margin:0 0 22px;overflow-wrap:anywhere}
.star-style-controls label{display:block;font-size:13px;margin:18px 0;color:#59728b}.star-style-controls output{float:right;font-variant-numeric:tabular-nums;color:#2a6caa}
.star-style-controls input{display:block;width:100%;margin-top:6px;accent-color:#267bbb;min-height:44px}
.star-admin-heading button,.star-admin-subjects button,.star-order-controls button,.star-config-launch button{min-height:44px}
.star-order-controls{display:flex;gap:8px;flex-wrap:wrap;margin-top:22px}
.star-materials{margin-top:28px}.star-materials .page-title{align-items:baseline;gap:15px;flex-wrap:wrap;margin-bottom:17px}.star-materials h3{font-size:18px;margin:0}.star-materials h3 small{color:#7e94a7;font-size:12px;margin-left:8px;font-weight:400}.star-materials .page-title>span{font-size:12px;color:#7390a8}
.star-material-grid{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:10px}
.star-material-grid button{background:#06172a;min-width:0;border:2px solid transparent;border-radius:13px;color:#bad5ea;overflow:hidden;position:relative;padding:0 7px 12px;text-align:center}
.star-material-grid button[aria-pressed=true]{border-color:#44c5ef;box-shadow:0 0 0 2px #56bcea2a}
.star-material-grid button[aria-pressed=true]:after{content:'✓';position:absolute;right:7px;top:5px;color:#92e0fb;font-weight:bold}
.star-material-grid img{width:100%;height:106px;object-fit:contain;mix-blend-mode:screen;mask-image:radial-gradient(ellipse,#000 25%,#000b 48%,transparent 75%)}
.star-material-grid b{font-size:11px;display:block;margin-bottom:5px;font-weight:500}.star-material-grid small{font-size:10px;color:#819fba;display:block;white-space:nowrap;text-overflow:ellipsis;overflow:hidden}
@media(min-width:1500px){.star-nebula{height:325px}.star-cloud{inset:-35px -20px 0}.star-nebula-label{bottom:16px}.star-overview{margin-top:20px}}
@media(max-width:1100px){.star-global{grid-template-columns:repeat(2,minmax(0,1fr))}.star-global>div:first-child{grid-column:1/-1}.star-editor{grid-template-columns:185px minmax(0,1fr);gap:16px}.star-material-grid{grid-template-columns:repeat(4,minmax(0,1fr))}.star-style-workspace{grid-template-columns:1fr}.star-style-controls{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px}.star-style-controls h3,.star-order-controls{grid-column:1/-1;margin:0}.star-style-controls label{margin:10px 0}.star-style-preview{min-height:300px}}
@media(max-width:1000px){body[data-student-view=route] .route-shell .main{padding:24px 28px 110px}.star-toolbar{margin-bottom:28px}.star-nebula-grid{grid-template-columns:repeat(2,minmax(0,1fr));column-gap:20px}.star-nebula:nth-child(3n+2){transform:none}.star-nebula:nth-child(2n){transform:translateY(18px)}.star-nebula{height:300px}.star-cloud{inset:-38px -20px 0}.star-level-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.star-atlas>div{grid-template-columns:repeat(3,minmax(0,1fr))}.star-atlas .planet-model{height:130px}.star-admin-heading{flex-wrap:wrap}}
@media(max-width:600px){body[data-student-view=route] .route-shell .main{padding:20px 16px 105px}.star-heading h2{font-size:23px}.star-total{font-size:11px}.star-subject{padding:10px 16px}.star-nebula-grid{gap:0;padding:0}.star-nebula{height:255px}.star-nebula strong{font-size:16px}.star-cloud{inset:-10px -15px 28px}.star-nebula-label{bottom:10px}.star-nebula small{font-size:11px}.star-enter{font-size:11px;padding:7px 12px;gap:9px}.star-level-grid,.star-level-grid[data-count="2"]{grid-template-columns:1fr;gap:8px}.star-level-grid[data-count="1"]{grid-template-columns:1fr}.star-level{min-height:355px}.star-domain-cloud{inset:0}.star-map-foot{font-size:11px;gap:8px}.star-pager{gap:10px}.star-atlas summary>span{display:block;margin:4px 0 0}.star-atlas{padding:0 12px 12px}.star-atlas>div{gap:12px 5px}.star-atlas .planet-model{height:100px}.star-atlas figcaption{font-size:10px}.star-atlas small{font-size:10px}.star-config-launch{align-items:flex-start;flex-direction:column}.star-editor{grid-template-columns:1fr}.star-chapter-list{flex-direction:row;overflow-x:auto;max-height:none}.star-chapter-list button{min-width:175px}.star-global{padding:18px!important;gap:14px}.star-material-grid{grid-template-columns:repeat(3,minmax(0,1fr))}.star-style-controls{grid-template-columns:1fr}.star-order-controls,.star-style-controls h3{grid-column:auto}.star-style-preview .star-cloud{inset:-35px 0 0}.star-save-actions{gap:8px}}
@media(prefers-reduced-motion:reduce){.chapter-stars *{animation:none!important;transition:none!important;scroll-behavior:auto!important}}
/* The legacy teacher rail becomes a tall sticky row at tablet widths. Keep this workspace clear. */
@media(max-width:1000px){
  .teacher-shell:has(.star-admin,.star-config-launch){display:block;height:auto;min-height:100dvh}
  .teacher-shell:has(.star-admin,.star-config-launch) .side{display:none}
  .teacher-shell:has(.star-admin,.star-config-launch) .main{margin:0;width:100%;padding:24px 24px 110px}
  body:has(.star-admin,.star-config-launch) .mobile-nav{display:flex;position:fixed;inset:auto 12px 12px;z-index:95;gap:5px;overflow-x:auto;max-width:calc(100% - 24px);padding:7px;border:1px solid #d2e1ef;border-radius:16px;background:#f9fcff;box-shadow:0 5px 25px #193e6624;scrollbar-width:thin}
  body:has(.star-admin,.star-config-launch) .mobile-nav button{flex:none;min-width:84px;min-height:50px;border:0;background:transparent;color:#55738f;border-radius:10px;font-size:12px;padding:10px 12px}
  body:has(.star-admin,.star-config-launch) .mobile-nav button.on{background:#e5f1ff;color:#1768b8}
}

/* Connected chapter sky: reserve a quiet header, then let clouds share one dust field. */
.star-overview{margin-top:36px;overflow:hidden;overflow:clip}
.star-nebula-grid{padding:12px 8px 40px;row-gap:16px;column-gap:20px}
.star-nebula{height:330px}
.star-nebula:nth-child(3n+2){transform:translateY(26px)}
.star-nebula>.star-cloud{inset:0 -24px 40px}
.star-nebula:nth-child(3n+2)>.star-cloud{inset:10px -10px 40px}
.star-nebula-label{bottom:0}
.star-nebula strong{font-size:19px}
.star-nebula .star-enter{min-height:40px;padding:8px 20px}
canvas.star-cloud-stream{inset:0;background:none;filter:blur(1px);opacity:1;z-index:-1;mix-blend-mode:screen;pointer-events:none}
.star-cloud-body{position:absolute;display:block;inset:0;transform-origin:50% 50%}
.star-nebula .star-cloud{mask-image:radial-gradient(ellipse,#000 24%,#000e 44%,#0007 64%,transparent 78%)}
.star-nebula .star-cloud img{mask-image:radial-gradient(ellipse,#000 24%,#000d 43%,#0008 60%,transparent 77%)}
.star-nebula .star-cloud img.star-cloud-glow{opacity:.38;filter:blur(30px);transform:scale(1.48)}
.chapter-stars[data-motion=true] .star-nebula [data-drift=spin] .star-cloud-body,.star-style-preview[data-motion=true] [data-drift=spin] .star-cloud-body{animation:star-cloud-turn var(--cloud-period,180s) linear var(--cloud-phase,0s) infinite}
.star-nebula:nth-child(2n) [data-drift=spin] .star-cloud-body{animation-direction:reverse}
.chapter-stars[data-motion=true] .star-nebula [data-drift=atmosphere] .star-cloud-body,.star-style-preview[data-motion=true] [data-drift=atmosphere] .star-cloud-body{animation:star-cloud-shimmer var(--cloud-current-period,13s) ease-in-out var(--cloud-phase,0s) infinite}
@keyframes star-cloud-turn{to{transform:rotate(360deg)}}
@keyframes star-cloud-shimmer{0%,100%{opacity:.86}50%{opacity:1}}
/* Illumination moves within each asset mask. A disc keeps its original axis;
   only its light field and the blurred surrounding gas change over time. */
.star-cloud-current{position:absolute;inset:0;pointer-events:none;opacity:0;mix-blend-mode:screen;
 background:radial-gradient(ellipse at 30% 48%,#85ceffad,transparent 38%),radial-gradient(ellipse at 72% 65%,#557be582,transparent 30%);
 background-size:190% 170%;background-position:0% 30%;
 mask-image:var(--cloud-image);mask-size:contain;mask-repeat:no-repeat;mask-position:center;
 -webkit-mask-image:var(--cloud-image);-webkit-mask-size:contain;-webkit-mask-repeat:no-repeat;-webkit-mask-position:center}
.chapter-stars[data-motion=true] .star-nebula .star-cloud-current,.star-style-preview[data-motion=true] .star-cloud-current{animation:star-cloud-current var(--cloud-current-period,13s) ease-in-out var(--cloud-phase,0s) infinite alternate}
.chapter-stars[data-motion=true] .star-nebula [data-drift=atmosphere] .star-cloud-glow,.star-style-preview[data-motion=true] [data-drift=atmosphere] .star-cloud-glow{animation:star-cloud-breathe var(--cloud-current-period,13s) ease-in-out var(--cloud-phase,0s) infinite}
@keyframes star-cloud-current{0%{background-position:0% 28%;opacity:.22}50%{opacity:.55}100%{background-position:100% 78%;opacity:.28}}
@keyframes star-cloud-breathe{0%,100%{transform:scale(1.36);opacity:.2}50%{transform:scale(1.49);opacity:.34}}
/* Local flow is visible in seconds without moving the asset silhouette or labels. */
.star-cloud-flow{position:absolute;inset:0;width:100%;height:100%;object-fit:contain;pointer-events:none;mix-blend-mode:screen;opacity:.95;mask-image:var(--cloud-image);mask-size:contain;mask-repeat:no-repeat;mask-position:center}
[data-motion=false] .star-cloud-flow{display:none}
@media(prefers-reduced-motion:reduce){.star-cloud-flow{display:none}}
@media(prefers-reduced-motion:reduce){.star-cloud-current,.star-cloud-glow{animation:none!important}.star-cloud-current{opacity:0!important}}

.chapter-stars[data-travelling=true]{pointer-events:none}
body:has(.chapter-stars[data-travelling=true]){overflow-x:clip}

/* Use the original planetary backdrop and receding orbit composition inside a chapter. */
body[data-student-view=route] .route-shell:has(.is-inside){background-image:linear-gradient(180deg,#03142b28,#03132b33 65%,#03132bc9),url('/assets/route-space.png');background-position:center top;background-size:cover}
.star-domain{margin-top:18px;min-height:0}
.star-domain-cloud{opacity:.08}
.star-orbit-viewport{width:100%;max-width:100%;overflow-x:auto;overflow-y:hidden}
body[data-student-ui] .star-orbit-track{height:650px!important;min-width:100%}
.star-level.orbit-node{position:absolute;display:flex;width:228px;min-height:0;padding:0 8px 12px;transform:translateX(-50%);background:transparent!important}
.star-level.orbit-node .star-planet{height:160px;width:190px;display:block;transform:scale(var(--depth));transform-origin:center;isolation:isolate;margin:0 auto 60px}
.star-level.orbit-node .planet-model{width:var(--planet-size);height:var(--planet-size);margin:0;left:50%;top:50%;transform:translate(-50%,-50%)}
.star-level.orbit-node:hover .planet-model{transform:translate(-50%,calc(-50% - 4px))}
.star-level.orbit-node strong{font-size:16px;min-height:0;max-width:100%;line-height:1.6;display:block;overflow:visible}
.star-level.orbit-node .star-level-number{font-size:12px;margin-bottom:8px}
.star-level.orbit-node .orbit-status{font-size:12px;margin-top:10px}
.star-level.orbit-node small{font-size:11px;font-weight:400;margin:9px 0 0;color:#9db4ca}
.star-level.orbit-node .star-enter{margin-top:12px;min-height:40px;font-size:12px}
.star-level.orbit-node .orbit-sphere:after,.star-level.orbit-node[aria-pressed=true] .orbit-sphere:after{border-color:#cad8e53b;box-shadow:0 0 12px #c1d8e515,inset 0 0 8px #c1d8e511;border-width:1px;height:17px;left:18px;right:18px}
.star-orbit-track .star-dust-route .star-dust-haze{stroke:#b9c6da;stroke-width:12;stroke-dasharray:none;opacity:.085;filter:blur(7px)}
.is-inside .space-navigation{margin:0 0 22px;gap:14px}
.is-inside .orbit-controls button{width:46px;height:44px;background:#0e213b88;border-color:#bdd3e537;border-radius:12px}
.is-inside .orbit-legend{gap:12px}
.is-inside .star-atlas{margin:0 0 20px;background:#05162bb5;padding-bottom:0}
.is-inside .star-atlas>.atlas-grid{padding:0;gap:12px}
.is-inside .star-atlas .planet-model{height:115px}
.is-inside .star-atlas p{margin:12px 0 15px;line-height:1.8}
.is-inside .space-footer{margin-top:20px}
.is-inside .space-panel{background:linear-gradient(130deg,#08213cc7,#06142be0);border-color:#99bfd536}
.is-inside .space-quote{display:flex}
.is-inside .route-flight-status{color:#afc6db;margin:18px 0 4px}

/* A perspective tunnel follows the chosen cloud; depth reverses on the way out. */
.star-warp{position:fixed;inset:0;overflow:hidden;pointer-events:none;z-index:90;contain:strict;animation:star-tunnel-fade var(--travel-duration,1350ms) linear both}
.star-warp canvas{display:block;width:100%;height:100%}
@keyframes star-tunnel-fade{0%,100%{opacity:0}28%,68%{opacity:1}}
@media(max-width:1000px){
 .star-overview{margin-top:32px}.star-nebula-grid{column-gap:12px;row-gap:20px;padding-bottom:44px}
 .star-nebula:nth-child(3n+2){transform:none}.star-nebula:nth-child(2n){transform:translateY(25px)}
 .star-nebula{height:315px}.star-nebula>.star-cloud,.star-nebula:nth-child(3n+2)>.star-cloud{inset:0 -15px 40px}
 .is-inside .space-footer{grid-template-columns:1fr 1fr}.is-inside .space-quote{grid-column:1/-1;grid-row:2}
 .is-inside .space-navigation{flex-wrap:wrap}.is-inside .orbit-legend{margin-left:0}
}
@media(max-width:600px){.star-nebula{height:275px}.star-nebula strong{font-size:16px}.is-inside .space-footer{grid-template-columns:1fr}.is-inside .space-quote{grid-column:auto;grid-row:auto}}
@media(prefers-reduced-motion:reduce){.star-warp{display:none}.star-cloud-body{animation:none!important}}

.star-overview-switch{display:flex;gap:8px;margin:18px 0 0}
.star-overview-switch button{min-height:44px;padding:9px 18px;border:1px solid #93bcd339;border-radius:22px;color:#aac5d9;background:#06172b99;font-size:13px}
.star-overview-switch button[aria-pressed=true]{border-color:#9bcbd67a;color:#def2ff;background:#2443546b}
/* A composed cloud field: absolute anchors, depth, and shared gas, no rows. */
body[data-student-view=route] .route-shell:not(:has(.is-inside)){
 background:linear-gradient(180deg,#030b161a,#030b16 1100px),url('/nebula-assets/starfield.webp') center top/100% auto no-repeat #030b16;
 background-attachment:scroll;
}
.chapter-stars .star-nebula-grid{display:block;position:relative;padding:0;width:100%;min-height:360px}
.chapter-stars .star-nebula-grid .star-nebula{position:absolute;transform:none;margin:0;min-height:0;transition:color .2s}
.chapter-stars .star-nebula-grid .star-nebula>.star-cloud{
 inset:auto;top:0;left:calc(50% - var(--cloud-diameter)/2);width:var(--cloud-diameter);height:var(--cloud-diameter);
 filter:brightness(calc(var(--cloud-light,1)*var(--scene-light,1)));
 mask-image:radial-gradient(ellipse,#000 30%,#000f 48%,#000b 61%,transparent 77%);
}
.chapter-stars .star-nebula-grid .star-nebula .star-cloud img{mask-image:radial-gradient(ellipse,#000 28%,#000f 48%,#000a 62%,transparent 78%)}
.chapter-stars .star-nebula-grid .star-nebula-label{inset:calc(var(--cloud-diameter)*.69) 4px auto;gap:7px}
.chapter-stars .star-nebula-grid .star-nebula strong{font-size:18px;line-height:1.6}
.chapter-stars .star-nebula-grid .star-enter{min-height:40px;background:#061626a8}
canvas.star-cloud-stream{filter:none;mask-image:linear-gradient(90deg,transparent,#000 9%,#000 91%,transparent),linear-gradient(transparent,#000 70px,#000 calc(100% - 110px),transparent);mask-composite:intersect}
@media(max-width:900px){.chapter-stars .star-nebula-grid .star-nebula strong{font-size:17px}}

/* Restore the original shuttle for confirmed level entry, above the planet layer. */
.star-orbit-track .star-level-shuttle{width:82px;height:55px;z-index:35;mix-blend-mode:screen}
.chapter-stars[data-level-launching=true] .star-level{pointer-events:none}
@media(prefers-reduced-motion:reduce){.star-level-shuttle{display:none}}

#modal .route-level-dialog .route-dialog-actions .btn{display:flex;align-items:center;justify-content:center}
#modal .route-level-dialog .route-dialog-actions .btn.line{background:#0d2a47;color:#bedcf3;border:1px solid #527ca2}
