:root{color-scheme:dark;--ink:#0b1717;--panel:#132421;--cream:#f5edd9;--gold:#e6bd78;--muted:#b6c5b5;--line:#d6bc7740;--danger:#f2947d;color:var(--cream);background:var(--ink);font:15px/1.5 'Trebuchet MS',Arial,sans-serif;font-synthesis:none}*{box-sizing:border-box}body{margin:0}button,input,a,summary{-webkit-tap-highlight-color:transparent}button,input{font:inherit}button,summary{cursor:pointer;touch-action:manipulation}button{color:inherit}button:disabled{opacity:.42;cursor:default}button,a,input,summary{outline-offset:5px}button:focus-visible,a:focus-visible,input:focus-visible,summary:focus-visible,canvas:focus-visible{outline:2px solid var(--gold)}a{color:inherit;text-decoration:none}button{transition:background .18s,color .18s,border-color .18s,transform .18s}button:not(:disabled):active{transform:translateY(1px)}[hidden],.hidden{display:none!important}
#app{position:relative;isolation:isolate;min-height:100svh;overflow:hidden}#scene-viewport{position:absolute;inset:0;height:100svh;z-index:-3}#scene{display:block;width:100%;height:100%;touch-action:none}.scene-shade{position:absolute;inset:0;z-index:-2;pointer-events:none;background:linear-gradient(90deg,#071212f7 0%,#081716d9 28%,#08171650 63%,#07121216),linear-gradient(0deg,#071212e6,transparent 25%,transparent 80%,#07121288)}.masthead{display:flex;align-items:center;justify-content:space-between;padding:24px 4vw;gap:20px}.brand{display:flex;align-items:center;gap:12px;font-size:10px;letter-spacing:.22em;color:#e9dcc1}.build{font-size:9px;letter-spacing:.25em;color:#d8ddccaa}.intro{width:440px;max-width:88vw;margin:1vh 0 8vh 7vw}.eyebrow{font-size:9px;letter-spacing:.24em;color:var(--gold);line-height:1.7;margin:0 0 20px}h1{margin:0;line-height:0}.game-logo{width:100%;height:310px;object-fit:contain;filter:drop-shadow(0 4px 16px #0007)}.logo-tagline{text-align:center;font-size:9px;letter-spacing:.28em;color:var(--gold);margin:0 0 24px}.description{font-family:Georgia,serif;font-size:19px;line-height:1.65;color:#d8e0d1;max-width:370px;margin:0 0 27px}.actions{display:flex;flex-direction:column;gap:9px;max-width:350px}.primary,.secondary{border:1px solid var(--line);border-radius:3px;min-height:48px;padding:12px 18px;font-size:13px;font-weight:600;letter-spacing:.025em}.primary{background:var(--gold);border-color:var(--gold);color:#17241c;box-shadow:inset 0 1px #ffedc4}.primary:hover:not(:disabled){background:#f4d6a1;border-color:#f4d6a1}.secondary{background:#233b32aa;color:var(--cream)}.secondary:hover:not(:disabled){background:#355044;border-color:#c6b77d}.actions .primary{font-size:16px;text-align:left;padding:16px 22px}.actions .primary:after{content:'→';float:right}.title-nav{display:flex;flex-direction:column;max-width:350px;margin-top:12px}.title-nav button{border:0;border-bottom:1px solid #d6bc771c;background:none;text-align:left;padding:13px 8px;font-size:14px;color:#c8d3c4;min-height:46px}.title-nav button span{float:right;color:#a8a78a}.title-nav button:hover{color:var(--gold);background:#a7b99b0b}.status,#boot-status{font-size:10px;color:#a0b3a2;max-width:350px;line-height:1.6;margin:17px 0 0}#boot-status{color:var(--gold)}.loading-line{display:inline-block;width:24px;height:2px;background:var(--gold);vertical-align:middle;margin-right:10px;animation:breathe 1.4s ease-in-out infinite}.assets-ready #boot-status{display:none}body[data-vr=false] #enter-vr{display:none}body[data-vr=true] .actions #desktop{background:transparent;color:var(--cream);border-color:var(--line);font-size:13px}.intro>.eyebrow{text-align:center}footer{position:absolute;bottom:0;left:4vw;right:4vw;display:flex;gap:24px;align-items:center;padding:21px 0;font-size:10px;letter-spacing:.09em;color:#a3b19f;border-top:1px solid #d6bc7721}footer>span{margin-right:auto;font-size:9px;letter-spacing:.18em}footer a{padding:8px 0}footer a:hover{color:var(--gold)}
/* Game menus leave the scene in view. Mouse capture removes every interactive overlay. */
.playing #app{height:100svh;min-height:0}.playing #scene-viewport{height:100%}.playing .masthead{padding:16px 3vw;pointer-events:none}.playing .masthead a{pointer-events:auto}.playing .build,.playing footer{display:none}.playing .scene-shade{background:linear-gradient(90deg,#07121280,transparent 55%)}.session{position:absolute;top:76px;left:3vw;width:370px;max-height:calc(100svh - 100px);overflow:auto;overscroll-behavior:contain;background:linear-gradient(145deg,#193028f5,#0c1b1af7);border:1px solid var(--line);border-top:2px solid var(--gold);padding:24px;box-shadow:0 18px 70px #0005;scrollbar-width:thin;scrollbar-color:#6c7757 #122420}.session-top{display:flex;justify-content:space-between;align-items:center;font-size:9px;letter-spacing:.18em;color:var(--gold)}.session-top button{background:none;border:0;min-height:40px;color:var(--muted);font-size:11px}.session h2{font:32px/1.1 Georgia,serif;letter-spacing:-.035em;margin:12px 0}.session-subtitle,#session-subtitle{font-size:12px;color:var(--muted);margin:0 0 20px}.session #mouse-play{width:100%;margin-bottom:16px;min-height:52px;font-size:15px}.desktop-keys{display:none}.fuel-top{display:flex;align-items:center;justify-content:space-between;gap:16px;font-size:9px;letter-spacing:.15em;color:var(--muted)}.fuel-top strong{font:29px Georgia,serif;color:var(--gold)}.meter{height:4px;background:#b8c7b224;margin:8px 0 14px}#fuel-fill{height:100%;width:70%;background:var(--gold);transition:width .2s}#session-message{font-size:12px;color:var(--muted);line-height:1.7}#game-notice{font-size:12px;color:var(--gold);padding-left:12px;border-left:2px solid var(--gold);margin:16px 0}#game-notice:empty{display:none}.session-actions{display:grid;grid-template-columns:1.4fr 1fr 1fr;gap:6px}.session button{font-size:11px;min-height:44px;padding:9px 10px}.build-actions{display:grid;grid-template-columns:1fr 1fr;gap:7px;margin:12px 0}.fort-actions{display:grid;grid-template-columns:1fr 1fr;gap:6px}.fort-actions button:first-child{grid-column:1/-1}.game-disclosure,.tool-kit-panel{border-top:1px solid var(--line);margin:17px 0 0}.game-disclosure summary,.tool-kit-panel summary{list-style:none;padding:17px 0;font-size:12px;color:#e5d9b7;min-height:48px}.game-disclosure summary::-webkit-details-marker,.tool-kit-panel summary::-webkit-details-marker{display:none}.game-disclosure summary span{float:right;color:var(--gold)}.game-disclosure p,.section-note{font-size:12px;color:var(--muted);line-height:1.7;margin:0 0 16px}.tool-kit-panel canvas{display:block;width:100%;height:auto;touch-action:manipulation}.tool-kit-panel[open]{margin-top:0}.session:has(.tool-kit-panel[open]){width:460px;max-width:94vw}.session:has(.tool-kit-panel[open])>:not(.session-top):not(.tool-kit-panel):not(.menu-links){display:none}.tool-kit-panel[open] summary{color:var(--gold)}.menu-links{display:flex;justify-content:space-between;border-top:1px solid var(--line);margin-top:18px;padding-top:8px}.menu-links button{background:none;border:0;color:var(--muted)}.walk-actions{display:none}.session>.desktop-vr{width:100%;margin-bottom:10px}.game-paused .session{border-top-color:var(--cream)}.game-danger .session{border-top-color:var(--danger)}.game-danger .fuel-top strong,.game-danger #game-notice{color:var(--danger)}.game-ended .session-actions{grid-template-columns:1fr}.game-ended #feed,.game-ended #pause,.game-ended #build-controls,.game-ended #torch-action,.game-ended .walk-actions,.game-ended #mouse-play{display:none}.game-ended #restart{background:var(--gold);color:var(--ink);font-size:15px}.game-ended .tool-kit-panel{display:none}
/* Native dialogs own focus and keyboard navigation; opening one pauses the run. */
.game-dialog{width:min(520px,calc(100vw - 28px));max-height:calc(100svh - 36px);overflow:auto;border:1px solid #c1a46a88;border-top:3px solid var(--gold);border-radius:4px;padding:28px 32px;color:var(--cream);background:linear-gradient(145deg,#1e342c,#0e1c1b);box-shadow:0 25px 110px #0009;scrollbar-width:thin}.game-dialog::backdrop{background:#071111b8;backdrop-filter:blur(8px)}.dialog-top{display:flex;align-items:center;justify-content:space-between;gap:14px;margin-bottom:24px;font-size:9px;color:var(--gold);letter-spacing:.2em}.dialog-top button{background:none;border:1px solid var(--line);font-size:24px;width:44px;height:44px;line-height:1}.game-dialog h2{font:38px/1.13 Georgia,serif;letter-spacing:-.025em;margin:8px 0 28px}.game-dialog p{color:var(--muted);font-size:14px;line-height:1.75}.game-dialog .eyebrow{font-size:9px;color:var(--gold);margin:0}.setting-row{display:grid;grid-template-columns:1fr auto;gap:8px;margin:22px 0}.setting-row label{font-size:14px}.setting-row label small{display:block;font-size:11px;color:var(--muted);margin-top:5px}.setting-row output{font-size:12px;color:var(--gold);align-self:center}.setting-row input{grid-column:1/-1;width:100%;accent-color:var(--gold);min-height:30px;cursor:pointer}.check-setting{display:flex;gap:12px;align-items:center;min-height:44px;font-size:13px}.check-setting input{accent-color:var(--gold);width:18px;height:18px}.grip-settings>div{display:flex;gap:8px;align-items:center;justify-content:space-between}.grip-settings>div>span{font-size:12px;color:var(--gold)}.dialog-back{width:100%;margin-top:18px}.guide-dialog{width:min(640px,calc(100vw - 28px))}#help-content ol{padding:0;margin:24px 0;list-style:none;counter-reset:steps}#help-content li{counter-increment:steps;display:flex;gap:16px;font-size:14px;line-height:1.65;margin:20px 0;color:#d0dccb}#help-content li:before{content:counter(steps,decimal-leading-zero);font:12px/2 Georgia,serif;color:var(--gold)}.guide-nav{display:flex;justify-content:space-between;align-items:center;gap:10px}.guide-nav span{font-size:11px;color:var(--gold)}
/* Quiet screen HUD with contextual actions and sprint feedback. */
#mouse-hud{display:none;pointer-events:none}.mouse-locked{overflow:hidden}.mouse-locked .session,.mouse-locked .masthead,.mouse-locked footer,.mouse-locked .scene-shade{display:none!important}.mouse-locked #scene-viewport{position:fixed!important;inset:0!important;width:100vw!important;height:100svh!important}.mouse-locked #mouse-hud{display:block;position:fixed;inset:0;z-index:10;text-shadow:0 2px 8px #000}.mouse-locked #mouse-status{position:absolute;top:28px;left:32px;font:12px 'Trebuchet MS',sans-serif;letter-spacing:.04em;padding:12px 16px 12px 20px;border-left:2px solid var(--gold);background:linear-gradient(90deg,#10241cdf,#10241c00)}#mouse-notice{position:absolute;top:100px;left:32px;width:min(430px,calc(100vw - 64px));font-size:14px;line-height:1.6;color:var(--gold)}#mouse-crosshair{position:absolute;left:50%;top:50%;width:5px;height:5px;border-radius:50%;background:#fff1d3;box-shadow:0 0 0 2px #0003;transform:translate(-50%,-50%)}#mouse-objective{position:absolute;top:68px;left:52px;font-size:11px;color:#d1ddca}#mouse-tool{position:absolute;bottom:53px;left:24px;right:24px;text-align:center;font-size:12px;color:#efe5cb}#mouse-hud>small{position:absolute;bottom:22px;left:24px;right:24px;text-align:center;color:var(--muted);font-size:10px}kbd{border:1px solid #c3c7a960;padding:3px 6px;border-radius:3px;font:10px 'Trebuchet MS',sans-serif;color:var(--cream)}#mouse-hud i{margin:0 10px;font-style:normal}#stamina-hud{position:absolute;bottom:102px;left:calc(50% - 50px);width:100px;height:3px;background:#b8c7b22e;opacity:.8}#stamina-hud span{display:block;height:100%;background:#c4d8a6;width:100%}.no-control-hints #mouse-hud>small,.no-control-hints #mouse-tool{display:none}#diagnostics{position:fixed;right:22px;top:75px;z-index:50;padding:15px;background:#081413ed;border:1px solid var(--line);white-space:pre-wrap;font:11px/1.7 monospace;pointer-events:none;max-width:90vw}.error{position:fixed;z-index:150;left:5vw;right:5vw;bottom:50px;padding:20px;background:#442b26;border:1px solid var(--danger);font-size:14px}
/* The story shares the game typography and keeps its accessible transport controls. */
.prologue-overlay{position:fixed;inset:0;z-index:1000;background:#080f13;display:flex;flex-direction:column;justify-content:center;align-items:center;padding:24px;overflow:auto}.prologue-top{display:flex;justify-content:space-between;align-items:center;gap:20px;width:100%;max-width:1100px;margin-bottom:18px;font:15px Georgia,serif;letter-spacing:.08em}.prologue-top small{display:block;margin-top:6px;font:9px 'Trebuchet MS',sans-serif;letter-spacing:.18em;color:var(--gold)}.prologue-top>div{display:flex;gap:8px;flex-wrap:wrap;justify-content:flex-end}.prologue-top button{min-height:44px;padding:10px 14px;border:1px solid var(--line);border-radius:3px;background:#14251f;color:var(--cream);font-size:11px}.prologue-frame{width:min(100%,1000px,calc((100svh - 150px)*1.42857));box-shadow:0 20px 80px #0008;border:1px solid var(--line)}.prologue-frame canvas{display:block;width:100%;height:auto}.prologue-caption{position:absolute;width:1px;height:1px;overflow:hidden;clip-path:inset(50%)}.prologue-foot{font-size:9px;letter-spacing:.18em;color:#90a290;margin-top:18px}body.prologue-active{overflow:hidden}
@keyframes breathe{50%{opacity:.3;transform:scaleX(.5)}}
@media(min-width:1500px){.intro{margin-left:10vw;width:490px}.game-logo{height:340px}.actions,.title-nav{max-width:390px}.description{font-size:21px}}
@media(max-height:820px) and (min-width:721px){.masthead{padding-top:18px;padding-bottom:12px}.intro{margin-top:0;margin-bottom:78px;width:390px}.game-logo{height:235px}.logo-tagline{margin-bottom:16px}.intro>.eyebrow{margin-bottom:8px}.description{font-size:16px;margin-bottom:18px}.title-nav button{padding:9px 8px;min-height:42px}.actions .primary{padding:12px 20px}}
@media(max-width:720px){.masthead{padding:20px 6vw}.build{display:none}.brand{font-size:9px}.intro{width:auto;max-width:none;margin:12px 7vw 100px}.game-logo{height:260px;max-width:420px}.intro>.eyebrow{font-size:8px;margin-bottom:8px;text-align:left}.logo-tagline{text-align:left;font-size:8px;margin-bottom:22px}.description{font-size:18px}.actions,.title-nav{max-width:none}.scene-shade{background:linear-gradient(90deg,#071212e9,#0712128c),linear-gradient(0deg,#071212f5,transparent 90%)}footer{left:7vw;right:7vw;gap:18px;font-size:10px}footer>span{font-size:8px;max-width:145px;line-height:1.8}.playing .masthead{padding:10px 4vw;height:48px}.playing .brand img{width:19px;height:25px}.playing #scene-viewport{top:0;left:0;width:100%;height:57svh}.playing .scene-shade{display:none}.session{left:0;top:57svh;bottom:0;width:100%;max-height:none;height:43svh;padding:14px 5vw 22px;border-left:0;border-right:0}.session h2{font-size:24px;margin:4px 0 10px}.session-top{min-height:30px}.session-top button{min-height:36px}.session #session-subtitle{margin-bottom:12px}.session #mouse-play{display:none}.session:has(.tool-kit-panel[open]){width:100%;max-width:none}.session #session-message{margin:8px 0}.session #game-notice{margin:12px 0}.walk-actions{display:grid;grid-template-columns:repeat(4,1fr);gap:8px;margin-top:12px}.walk-actions button{user-select:none;font-size:20px;min-height:46px}.session .game-disclosure{margin-top:14px}.session #torch-action{min-height:44px}.game-paused .session,.game-ended .session{top:48px;height:calc(100svh - 48px)}.game-paused #scene-viewport,.game-ended #scene-viewport{height:100svh}.game-dialog{padding:22px;max-height:calc(100svh - 24px)}.game-dialog h2{font-size:32px}.dialog-top{margin-bottom:18px}.game-dialog .secondary{font-size:12px;padding:10px 12px}.prologue-overlay{padding:18px 14px}.prologue-top{font-size:12px}.prologue-top button{font-size:10px;padding:8px 10px}.prologue-frame{width:100%;aspect-ratio:16/9;overflow:hidden}.prologue-caption{position:static;width:auto;height:auto;overflow:visible;clip-path:none;text-align:center;padding:22px 8px 10px;min-height:125px}.prologue-caption small{font-size:10px;color:var(--gold);letter-spacing:.12em}.prologue-caption p{font:21px/1.4 Georgia,serif}.prologue-foot{font-size:8px;letter-spacing:.08em}.grip-settings>div{flex-wrap:wrap}}
@media(max-height:520px){.masthead{padding-top:10px}.intro{margin-top:0}.game-logo{height:130px}.intro .description{display:none}.intro .logo-tagline{margin-bottom:10px}.prologue-overlay{padding:10px}.prologue-frame{width:min(70%,calc((100svh - 92px)*1.42857))}.prologue-top{margin-bottom:8px}.prologue-caption{position:absolute;width:1px;height:1px;overflow:hidden;clip-path:inset(50%)}.session{top:52px;max-height:calc(100svh - 62px)}.game-dialog{padding:16px 24px}}
@media(max-height:520px) and (max-width:950px){.playing #scene-viewport{left:42%;width:58%;height:100svh}.session,.game-paused .session,.game-ended .session{left:0;top:46px;width:42%;height:calc(100svh - 46px);max-height:none;padding:12px}.session:has(.tool-kit-panel[open]){width:42%}.session h2{font-size:24px}.playing .scene-shade{display:none}.playing .build{display:none}.walk-actions{display:grid;grid-template-columns:repeat(4,1fr);gap:5px;margin-top:10px}.session #mouse-play{display:none}}
.reduce-motion *{animation:none!important;transition:none!important}@media(prefers-reduced-motion:reduce){*,*::before,*::after{animation:none!important;transition:none!important}}

/* Pause is a destination, not a disabled command console. */
.game-paused #build-controls,.game-paused #torch-action,.game-paused .walk-actions,.game-paused #feed,.game-paused #game-notice{display:none}
.game-paused .session-actions{grid-template-columns:1fr}.game-paused #pause{display:none}.game-paused #session-message{margin-bottom:20px}.game-paused #restart{background:transparent;border-color:var(--line)}
@media(max-width:720px),(pointer:coarse){.game-paused #pause{display:block;background:var(--gold);color:var(--ink);font-size:15px}.game-paused .session-actions{grid-template-columns:1fr 1fr}}

@media(max-height:520px) and (min-width:721px) and (max-width:950px) and (pointer:fine){.session #mouse-play{display:block}}

/* Approved flame crest: its own tagline is part of the artwork. */
.logo-tagline{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip-path:inset(50%)}
.game-logo{display:block;margin:0 auto 18px;max-width:100%}.intro>.eyebrow{text-align:center}.story-brand{width:32px;height:38px;object-fit:contain;vertical-align:middle;margin-right:10px}.brand img{object-fit:contain}
@media(max-width:720px){.game-logo{height:260px}.intro>.eyebrow{text-align:center}.description{text-align:center;max-width:none}}
@media(max-height:650px) and (min-width:721px){.game-logo{height:170px}.intro>.eyebrow{margin-bottom:4px}}
