:root{color-scheme:dark;font-family:Inter,system-ui,-apple-system,sans-serif;color:#e8efff;background:#05070f;--muted:#99a9c7;--gold:#ffcf7a;--mint:#7fe6d3;--reader:324px;--bar:68px;--bottom:72px}*{box-sizing:border-box}body{margin:0;overflow:hidden}button,select,input,a{font:inherit}button,select{color:inherit;background:#141d33;border:1px solid #34425f;border-radius:8px;min-height:42px;padding:9px 14px;cursor:pointer;font-size:14px}button:hover,select:hover{background:#253353;border-color:#6b80aa}button:focus-visible,select:focus-visible,a:focus-visible,[tabindex]:focus-visible{outline:2px solid var(--gold);outline-offset:4px}a{color:#b6c9f7;text-decoration:none}a:hover{color:#fff}.primary{color:#071623;background:var(--mint);border-color:var(--mint);font-weight:650}.primary:hover{background:#b1fbea}.topbar{height:var(--bar);position:fixed;inset:0 0 auto;display:flex;align-items:center;gap:28px;padding:0 24px;z-index:5;border-bottom:1px solid #24314a;background:#080d19}.brand{font-size:16px;font-weight:750;letter-spacing:.13em;white-space:nowrap;color:#eef3ff}.brand span{font-size:12px;font-weight:500;letter-spacing:.1em;color:#8fa1c1}.formats{display:flex;align-items:center;gap:24px;margin:auto;font-size:14px}.formats a{color:#8d9fbe}.formats [aria-current]{color:#ecf1ff}.formats i{font-style:normal;color:var(--mint);font-size:11px;letter-spacing:.04em;border:1px solid #345d5e;padding:3px 5px;border-radius:4px;margin-left:6px}.reader{position:fixed;inset:var(--bar) auto var(--bottom) 0;width:var(--reader);background:linear-gradient(135deg,#0d1426,#090e1b);border-right:1px solid #23304b;display:flex;flex-direction:column;z-index:3}.reader-heading{padding:27px 25px 0}.eyebrow{font-size:12px;color:var(--gold);letter-spacing:.12em;font-weight:550}.reader h1{font-size:29px;line-height:1.12;letter-spacing:-.035em;margin:14px 0}.reader-heading p{font-size:15px;line-height:1.55;color:var(--muted);margin:0 0 21px}.voice-controls{padding:0 25px;display:flex;gap:8px;align-items:center}.voice-controls #listen{flex:1}.voice-controls select{padding:8px}.progress{height:2px;margin:17px 25px 0;background:#27334c;flex-shrink:0}.progress i{display:block;background:var(--mint);height:100%;width:0}.status{font-size:12px;line-height:1.45;color:#8198ba;padding:0 25px;min-height:34px;margin:9px 0 7px}.transcript{padding:0 25px 22px;overflow:auto;flex:1;min-height:0;scroll-behavior:smooth;scrollbar-width:thin;scrollbar-color:#35415c transparent}.transcript p{font-size:16px;line-height:1.75;color:#93a5c4;margin:0 0 22px;padding-left:13px;border-left:2px solid transparent}.transcript p.current{color:#e4ecff;border-left-color:var(--gold)}.reader-footer{padding:13px 20px;border-top:1px solid #202b43;display:flex;align-items:center;gap:7px;justify-content:space-between}.reader-footer span{font-size:10px;letter-spacing:.1em;color:#8191ac}.reader-footer button{font-size:12px;border:0;background:none;padding:5px;min-height:32px;color:#b6c8e5}.viewport{position:fixed;inset:var(--bar) 0 var(--bottom) var(--reader);overflow:hidden}#world{position:absolute;inset:0;touch-action:none}#world canvas{display:block;width:100%;height:100%;outline-offset:-4px}.scene-caption{position:absolute;inset:23px 30px auto;pointer-events:none;max-width:620px}.scene-caption .eyebrow{color:#91a4c8;font-size:11px}.scene-caption p{font-size:16px;line-height:1.5;color:#d5dff2;margin:7px 0;max-width:580px}.crosshair{position:absolute;top:50%;left:50%;width:5px;height:5px;border-radius:50%;background:#fff1cf;box-shadow:0 0 10px #ffcf7a99;pointer-events:none;z-index:2}body:not([data-camera=locked]) .crosshair{opacity:.35}.stand-button{position:absolute;z-index:2;transform:translate(-50%,-100%);background:#101e2be8;border:1px solid #559d92;border-radius:10px;box-shadow:0 7px 25px #0009,0 0 24px #7fe6d314;color:#c2fff0;white-space:nowrap;font-size:14px;min-height:44px;pointer-events:auto}.stand-button span{color:var(--mint);margin-right:5px}.stand-button kbd{margin-left:10px;color:#85c7ba;background:#1c3a3f;font-size:11px;padding:3px 5px;border-radius:4px}body[data-camera=locked] .stand-button{pointer-events:none}.operation-dock{position:absolute;bottom:40px;left:50%;transform:translateX(-50%);width:min(650px,calc(100% - 40px));border:1px solid #344561;background:#0b1123f2;backdrop-filter:blur(16px);border-radius:13px;padding:13px 16px;z-index:3;box-shadow:0 16px 50px #0006}.operation-heading{display:flex;align-items:center;justify-content:space-between;gap:10px;font-size:14px;margin-bottom:10px}.operation-heading>span{color:var(--gold);font-weight:600}.operation-heading label{display:flex;gap:7px;align-items:center;color:#95a9cb;font-size:12px}.operation-heading select{padding:3px 8px;min-height:30px;max-width:145px;font-size:12px}.steps{display:flex;gap:6px}.steps button{flex:1;padding:7px 5px;background:transparent;font-size:12px;border-color:#26334e;min-height:36px;color:#8498bc}.steps span{margin-left:5px}.steps [aria-current=true]{color:#ffe5af;border-color:#af8951;background:#40302066}.operation-dock p{font-family:ui-monospace,Consolas,monospace;font-size:12px;text-align:center;color:#a4b4d1;margin:11px 0 0}.scene-footer{position:absolute;bottom:12px;left:25px;right:25px;display:flex;justify-content:space-between;gap:10px;pointer-events:none;font-size:11px;color:#8295b8}.inspect{position:absolute;top:110px;left:50%;transform:translateX(-50%);background:#241e12ed;border:1px solid #927548;border-radius:8px;padding:12px 16px;color:#ffe4b2;font-size:15px;max-width:85%;z-index:4;pointer-events:none}.transport{position:fixed;inset:auto 0 0;height:var(--bottom);display:flex;align-items:center;gap:12px;padding:12px 24px;background:#080d19;border-top:1px solid #24314a;z-index:5}.transport p{margin:0 auto 0 4px;font-size:13px;color:#8a9dbd;line-height:1.5}.transport button{white-space:nowrap}.route{position:fixed;right:20px;top:calc(var(--bar) + 14px);bottom:calc(var(--bottom) + 14px);width:370px;max-width:calc(100% - 40px);padding:24px;background:#0d1529f7;border:1px solid #405373;box-shadow:0 20px 100px #000c;border-radius:16px;z-index:8;overflow:auto;backdrop-filter:blur(20px)}.route-heading{display:flex;align-items:center;gap:8px;justify-content:space-between}.route h2{font-size:23px;letter-spacing:-.02em;line-height:1.15;margin:0}.route-heading button{font-size:24px;padding:0;width:38px;flex-shrink:0}.route p{font-size:14px;line-height:1.6;color:#9eb1ce}.stop-list{display:grid;gap:4px;margin:20px 0}.stop-list button{border:0;background:transparent;text-align:left;display:flex;align-items:center;gap:12px}.stop-list b{font:13px ui-monospace,monospace;color:#6e85b2}.stop-list button[aria-current=true]{background:#263a4b;color:#bdffee}.stop-list .visited b{color:var(--mint)}.route>label{display:flex;align-items:center;gap:9px;font-size:14px;margin:14px 0}.route select{max-width:245px}.route input[type=checkbox]{accent-color:var(--mint);width:18px;height:18px}.route input[type=range]{min-width:50px;width:100%;accent-color:var(--mint)}.route .note,.welcome .note{font-size:13px;color:#8599bd;line-height:1.65}.route>a{font-size:13px}.welcome{position:fixed;inset:0;z-index:12;display:grid;place-items:center;padding:24px;background:radial-gradient(ellipse at 68% 50%,#05070f75,#05070ff5);backdrop-filter:blur(6px)}.welcome article{width:min(680px,100%);padding:44px;border-radius:24px;border:1px solid #35496c;background:linear-gradient(135deg,#172440ee,#080f20f5);box-shadow:0 30px 150px #0009}.welcome h2{font-size:clamp(34px,4vw,56px);letter-spacing:-.045em;line-height:1.06;margin:20px 0}.welcome p{font-size:17px;line-height:1.65;color:#afc0df}.welcome-controls{display:flex;flex-wrap:wrap;gap:16px;margin:28px 0;color:#9eafd0;font-size:13px}.welcome kbd{display:inline-block;background:#273654;border:1px solid #526184;border-radius:5px;padding:4px 7px;margin-right:5px;color:#dce6fc}.actions{display:flex;gap:12px;flex-wrap:wrap}.actions button{min-height:48px;font-size:15px}.touch{display:none;position:absolute;bottom:48px;right:15px;grid-template-columns:repeat(3,44px);gap:5px;z-index:4}.touch button{height:44px;padding:5px;touch-action:none;background:#142440e3;font-size:20px}.touch [data-move=forward]{grid-column:2}.touch [data-move=left]{grid-column:1}.touch [data-move=back]{grid-column:2}.touch [data-move=right]{grid-column:3}.fallback{padding:100px 30px}[hidden]{display:none!important}.reader-compact{--reader:84px}.reader-compact .reader-heading,.reader-compact .voice-controls,.reader-compact .progress,.reader-compact .status,.reader-compact .transcript,.reader-compact .reader-footer span{display:none}.reader-compact .reader-footer{padding:15px 8px;border:0}.reader-compact .reader-footer button{font-size:13px;line-height:1.6}.reader-compact .reader{justify-content:flex-start}
@media(pointer:coarse){.touch{display:grid}.transport #lock,.stand-button kbd{display:none}.transport p{font-size:12px}.operation-dock{bottom:153px}}
@media(max-width:1080px){:root{--reader:285px}.topbar{gap:15px;padding:0 18px}.formats{gap:14px}.brand span{display:none}.reader-heading{padding:22px 20px 0}.reader h1{font-size:27px}.voice-controls,.transcript{padding-left:20px;padding-right:20px}.transport{padding:10px 18px;gap:8px}.transport p{font-size:12px}.steps span{display:none}.scene-caption{left:22px;right:22px}.scene-caption p{font-size:14px}}
@media(max-width:700px){:root{--bar:59px;--bottom:64px;--reader:0px}.topbar{padding:0 12px;gap:8px}.brand{font-size:14px}.formats{gap:12px;font-size:12px}.formats i{display:none}.topbar>button{font-size:0;min-width:42px;padding:8px}.topbar>button::before{content:'☷';font-size:22px}.reader{inset:auto 0 var(--bottom);height:27vh;width:auto;border-right:0;border-top:1px solid #27344c;display:grid;grid-template-columns:1fr auto;grid-template-rows:38px 1fr 28px;padding:8px 14px}.reader-heading{padding:0;display:flex;gap:8px;align-items:center}.reader-heading .eyebrow{font-size:10px;white-space:nowrap}.reader h1{font-size:17px;line-height:1.2;margin:0}.reader-heading p,.progress,.status,.reader-footer span{display:none}.voice-controls{padding:0 0 0 8px;gap:5px}.voice-controls #listen{font-size:12px;min-height:34px;padding:6px 8px}.voice-controls select{font-size:12px;min-height:34px;padding:4px}.transcript{grid-column:1/-1;padding:4px 0;min-height:0}.transcript p{font-size:15px;line-height:1.6;padding-left:10px;margin-bottom:15px}.reader-footer{padding:0;border:0;grid-column:1/-1;justify-content:flex-end}.reader-footer button{min-height:24px;padding:0;font-size:11px}.viewport{inset:var(--bar) 0 calc(var(--bottom) + 27vh)}.scene-caption{inset:14px 17px auto}.scene-caption .eyebrow{font-size:10px}.scene-caption p{font-size:13px;line-height:1.4;max-width:80%;margin-top:5px}.scene-footer{left:14px;right:14px;bottom:10px;font-size:10px}.scene-footer span:last-child{max-width:150px;text-align:right}.transport{padding:9px 12px;gap:8px}.transport button{font-size:13px;padding:8px 11px}.transport p{font-size:0;flex:1}.transport p::before{content:'WASD · E · Esc';font-size:11px}.transport #lock{display:none}.operation-dock{padding:8px 10px;bottom:32px;width:calc(100% - 24px)}.operation-heading{font-size:12px;margin-bottom:7px}.operation-heading select{max-width:100px;font-size:11px;min-height:27px}.operation-heading label{font-size:11px}.steps button{min-height:32px;padding:5px;font-size:12px}.operation-dock p{font-size:10px;margin:8px 0 0}.touch{bottom:36px;right:12px;grid-template-columns:repeat(3,36px);gap:3px}.touch button{height:36px;min-height:36px;font-size:16px}.viewport:has(.operation-dock:not([hidden])) .touch{bottom:172px}.stand-button{font-size:12px;padding:7px 10px}.stand-button kbd{display:none}.reader-compact .reader{height:36px;padding:3px 12px;display:block}.reader-compact .reader-footer{display:flex;padding:0}.reader-compact .viewport{bottom:calc(var(--bottom) + 36px)}.welcome article{padding:26px}.welcome h2{font-size:39px}.welcome p{font-size:16px}.welcome-controls{gap:10px;margin:20px 0}.welcome-controls span{font-size:12px}.welcome .actions{gap:8px}.welcome .actions button{font-size:14px}.route{top:70px;bottom:75px;padding:20px}}
@media(prefers-reduced-motion:reduce){.transcript{scroll-behavior:auto}}

#world canvas:focus-visible{outline:none}.scene-caption{background:linear-gradient(#05070fbb,#05070f00);padding-bottom:10px}

@media(min-width:1081px){.steps button{font-size:14px}.operation-dock{width:min(700px,calc(100% - 40px))}.operation-dock p{font-size:13px}}

/* Local narration scrubber follows the reader column. */
.audio-scrub{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:8px;padding:0 25px 12px;font-size:11px;line-height:1.5;color:#b5c8d8}.audio-scrub output{color:#ffc478;font-variant-numeric:tabular-nums}.audio-scrub input{grid-column:1/-1;display:block;min-width:0;width:100%;margin:0;accent-color:#ffc478;box-sizing:border-box}.reader-compact .audio-scrub{display:none}@media(max-width:700px){.reader{grid-template-rows:38px auto minmax(0,1fr) 28px}.audio-scrub{grid-column:1/-1;padding:4px 0 8px;gap:4px}}

/* Keep the active probability board clear of its listening control. */
.stand-button.reading-stand{bottom:36px;transform:none}
@media(max-height:500px){body[data-phase="5"] .scene-caption{display:none}}

/* Reading and transport keep separate rows; only the transcript scrolls. */
@media(max-width:700px),(max-height:650px){
 :root{--reader-height:max(208px,27vh)}
 .welcome{overflow-y:auto;align-items:start}
 .welcome article{margin-block:auto}
 .reader{inset:auto 0 var(--bottom);height:var(--reader-height);width:auto;padding:8px 14px 4px 44px;display:grid;grid-template-columns:minmax(0,1fr);grid-template-rows:auto 34px 24px minmax(24px,1fr) 26px;gap:4px;border-right:0;border-top:1px solid #27344c}
 .reader-heading{grid-column:1;grid-row:1;display:block;min-width:0;padding:0}
 .reader-heading .eyebrow{font-size:10px;line-height:1.2}
 .reader h1{font-size:17px;line-height:1.2;margin:3px 0 0;overflow-wrap:break-word}
 .reader-heading p,.progress{display:none}
 .voice-controls{grid-column:1;grid-row:2;min-width:0;padding:0;gap:6px}
 .voice-controls #listen{min-height:34px;height:34px;padding:5px 8px;font-size:12px}
 .voice-controls select{min-height:34px;height:34px;padding:4px 8px;font-size:12px}
 .audio-scrub{grid-column:1;grid-row:3;grid-template-columns:minmax(0,1fr) auto;gap:8px;align-items:center;padding:0;font-size:11px}
 .audio-scrub-title{display:none}
 .audio-scrub input{grid-column:1;grid-row:1;height:18px}
 .audio-scrub output{grid-column:2;grid-row:1}
 .status{display:block;position:absolute;width:1px;height:1px;min-height:0;padding:0;margin:0;overflow:hidden;clip-path:inset(50%);white-space:nowrap}
 .transcript{grid-column:1;grid-row:4;min-height:0;padding:0;overflow:auto}
 .transcript p{font-size:15px;line-height:1.5;margin-bottom:14px}
 .reader-footer{grid-column:1;grid-row:5;display:flex;justify-content:flex-end;padding:0;border:0}
 .reader-footer span{display:none}
 .reader-footer button{min-height:26px;height:26px;padding:2px 0;font-size:12px;line-height:1.2}
 .viewport{inset:var(--bar) 0 calc(var(--bottom) + var(--reader-height))}
 .reader-compact .reader{height:36px;padding:3px 12px;display:block}
 .reader-compact .reader-footer{padding:0}
 .reader-compact .reader-footer button{height:auto;min-height:26px}
 .reader-compact .viewport{bottom:calc(var(--bottom) + 36px)}
}
@media(max-height:650px) and (min-aspect-ratio:6/5){
 :root{--reader:285px}
 .reader{inset:var(--bar) auto var(--bottom) 0;width:var(--reader);height:auto;border-top:0;border-right:1px solid #23304b}
 .viewport{inset:var(--bar) 0 var(--bottom) var(--reader)}
 .reader-compact .reader{height:auto;padding:0;display:flex}
 .reader-compact .reader-footer{padding:12px 8px}
 .reader-compact .viewport{inset:var(--bar) 0 var(--bottom) var(--reader)}
}

/* A recoverable voice problem stays visible even with the reader collapsed. */
.reader .status[data-problem="true"]{display:flex;align-items:center;flex-wrap:wrap;gap:10px;position:fixed;top:calc(var(--bar) + 12px);left:calc(var(--reader) + 14px);right:14px;width:auto;height:auto;min-height:44px;max-width:620px;margin:0;padding:10px 12px;overflow:visible;clip-path:none;white-space:normal;z-index:6;background:#241f15;color:#ffe4b2;border:1px solid #a8884b;border-radius:10px;font-size:13px;line-height:1.45}
.status[data-problem="true"] span{flex:1 1 160px}
#voice-retry{flex:0 0 auto;min-height:44px;font-size:12px;border-color:#a8884b;background:#3b3020;color:#fff0d4}
@media(max-width:700px){.reader .status[data-problem="true"]{left:14px}}
@media(max-height:650px) and (min-aspect-ratio:6/5){.reader .status[data-problem="true"]{left:calc(var(--reader) + 14px)}}

body[data-voice-problem="true"] .scene-caption{visibility:hidden}
