@font-face{font-family:LocalMono;src:local("Consolas")}*{box-sizing:border-box} :root{color-scheme:dark;--bg:#0c110e;--line:#30362a;--ink:#e5e5cb;--muted:#92977f;--yellow:#e7d86d}body{margin:0;background:radial-gradient(ellipse at 50% 0,#20261a,transparent 70%),var(--bg);color:var(--ink);font-family:LocalMono,"Courier New",monospace}main{max-width:1320px;padding:28px 48px 20px;margin:auto}header{display:flex;justify-content:space-between;align-items:center;border-bottom:1px solid var(--line);padding-bottom:21px;font-size:10px;letter-spacing:1.6px}.brand{display:flex;align-items:center;gap:12px;color:var(--ink);text-decoration:none;font-weight:bold}.brand-icon{display:inline-grid;place-items:center;background:var(--yellow);color:#1f2516;font-size:25px;width:31px;height:31px}.muted{color:var(--muted)}.connection i,.live-dot{display:inline-block;width:6px;height:6px;background:#cbdb91;margin-right:9px;box-shadow:0 0 8px #9dac57}.heading{display:flex;justify-content:space-between;align-items:end;padding:32px 0 24px}.eyebrow{font-size:10px;letter-spacing:2.5px;color:var(--yellow);margin:0 0 13px}h1{font-family:Impact,"Arial Narrow",sans-serif;font-size:clamp(36px,5.3vw,69px);letter-spacing:1px;line-height:1;margin:0;font-weight:900}h1 span{color:var(--yellow);margin-left:16px}.intro{text-align:right;color:#b2b69f;font-size:12px;line-height:1.8;margin:0}.game-shell{border:1px solid #6a6a44;box-shadow:0 15px 70px #0007}.telemetry{height:48px;display:flex;align-items:center;justify-content:space-between;padding:0 22px;background:#181e16;font-size:10px;letter-spacing:1.4px}.telemetry>div{display:flex;gap:30px}.telemetry strong{font-size:18px;color:var(--yellow);margin-left:9px;font-weight:normal;font-variant-numeric:tabular-nums}.telemetry b{font-weight:normal}.viewport{position:relative;overflow:hidden;aspect-ratio:16/9;background:#3c3c24}canvas{width:100%;height:100%;display:block;image-rendering:pixelated;outline:none}.overlay{position:absolute;inset:0;display:flex;align-items:center;background:linear-gradient(90deg,#09110eed,#0c130e80 53%,transparent);padding:5% 7%}.overlay.hidden{display:none}.overlay h2{font-family:Impact,"Arial Narrow",sans-serif;font-size:clamp(36px,6.3vw,82px);letter-spacing:2px;line-height:.98;margin:17px 0;color:#f0eccb}.overlay p:not(.eyebrow){font-size:12px;line-height:1.8;color:#c0c5a4}.primary{background:var(--yellow);color:#192016;border:1px solid var(--yellow);font-size:12px;font-weight:bold;letter-spacing:1px;padding:16px 23px;margin-top:16px;cursor:pointer}.primary:hover{background:#f7e998}.primary:disabled{opacity:.5;cursor:wait}.small{display:block;font-size:9px;letter-spacing:1.7px;color:#b9bd9e;margin-top:13px}.filemark{position:absolute;right:24px;bottom:44px;text-align:right;font-size:9px;line-height:1.7;letter-spacing:2px;color:#d8dab77a}.coordinates{position:absolute;bottom:16px;left:21px;right:21px;display:flex;justify-content:space-between;pointer-events:none;font-size:8px;letter-spacing:2px;color:#dddab077}.game-bottom{display:flex;justify-content:space-between;background:#181e16;padding:12px 22px;font-size:9px;letter-spacing:1px;color:#a4ab89}.signal-bars{color:var(--yellow);margin-right:7px}.console{display:flex;justify-content:space-between;align-items:center;gap:15px;padding:19px 0 10px;font-size:9px;color:#aeb599}.controls,.audio-controls{display:flex;align-items:center;gap:16px}.controls span{white-space:nowrap}kbd{font:inherit;border:1px solid #49513d;padding:5px;color:#e0e2c8}button,.file-button{font-family:inherit}.audio-controls button,.file-button,#effectsToggle{cursor:pointer;background:transparent;color:#c5c8ae;border:1px solid #454c38;padding:8px;font-size:9px;white-space:nowrap}button:hover,.file-button:hover{border-color:var(--yellow);color:var(--yellow)}button:focus-visible,.file-button:focus-visible,canvas:focus-visible{outline:2px solid var(--yellow);outline-offset:4px}#musicFile{position:absolute;width:1px;height:1px;opacity:0}body:has(#musicFile:focus-visible) .file-button{outline:2px solid var(--yellow)}.track-line{display:flex;align-items:center;justify-content:space-between;font-size:8px;color:#949d7d;letter-spacing:1px;padding:3px 0 22px}#effectsToggle{border:0;padding-right:0;font-size:8px;color:#949d7d}.levels{display:grid;grid-template-columns:repeat(4,1fr);border:1px solid var(--line)}.levels article{display:flex;align-items:center;gap:15px;padding:19px 17px;border-right:1px solid var(--line);color:#747e68}.levels article:last-child{border:0}.levels article>span{font-size:25px}.levels h3{font-size:10px;margin:0 0 7px;font-weight:normal;letter-spacing:1px}.levels p{font-size:8px;margin:0}.levels i{margin-left:auto;font-style:normal}.levels .active{background:#252b19;color:var(--yellow);box-shadow:inset 0 2px var(--yellow)}footer{display:flex;justify-content:space-between;font-size:8px;color:#858e75;letter-spacing:1.3px;padding-top:22px}.yellow{color:var(--yellow)}#toast{position:absolute;top:15%;left:0;right:0;text-align:center;pointer-events:none;white-space:pre-line;font-size:20px;letter-spacing:4px;color:#fff7c0;text-shadow:0 2px 4px #000;opacity:0;transition:opacity .25s}#toast.visible{opacity:1}.touch-controls{display:none;position:absolute;bottom:35px;left:15px;right:15px;justify-content:space-between;pointer-events:none}.touch-controls button{pointer-events:auto;touch-action:none;padding:16px;background:#141d12a8;border:1px solid #d8d09580;color:#eeeac9} @media(pointer:coarse){.touch-controls{display:flex}.coordinates{bottom:10px}}@media(max-width:1000px){main{padding:20px}.console{flex-wrap:wrap}.audio-controls{gap:10px}.levels article{padding:15px 10px;gap:9px}}@media(max-width:650px){main{padding:12px}.brand .muted,.connection .muted,.intro,.filemark{display:none}.heading{padding:25px 0 19px}h1{font-size:36px}h1 span{margin-left:8px}.eyebrow{font-size:8px}.telemetry{padding:0 10px;font-size:8px;height:42px;letter-spacing:0}.telemetry>div{gap:12px}.telemetry strong{font-size:13px;margin-left:4px}.overlay{padding:4% 6%}.overlay h2{font-size:35px;margin:8px 0}.overlay p:not(.eyebrow){font-size:9px;margin:6px 0}.overlay .eyebrow{margin-bottom:5px}.primary{padding:10px 13px;margin-top:5px;font-size:10px}.small{font-size:7px;margin-top:7px}.levels{grid-template-columns:1fr 1fr}.levels article{border-bottom:1px solid var(--line)}.controls{gap:12px;font-size:8px;flex-wrap:wrap}.game-bottom{font-size:7px;padding:10px}.coordinates span{display:none}.track-line{gap:10px;letter-spacing:0}.track-line>span{max-width:55%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}footer{font-size:7px;gap:20px}#toast{font-size:13px}.touch-controls button{padding:9px;font-size:9px}.overlay~.touch-controls{bottom:12px}.viewport:has(.overlay:not(.hidden)) .touch-controls{display:none}}
.field-guide{margin-top:20px;border:1px solid var(--line);padding:16px;color:#bac0a3;font-size:11px;line-height:1.7}.field-guide summary{cursor:pointer;color:var(--yellow);font-size:10px;letter-spacing:1px}.field-guide summary span{float:right;color:#919e82;font-size:9px}.guide-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:25px;margin-top:18px}.guide-grid h3{font-size:11px;color:var(--yellow)}.guide-grid p{margin:7px 0}.guide-note{font-size:10px;color:#9ba88c}@media(max-width:650px){.guide-grid{grid-template-columns:1fr;gap:10px}.field-guide summary span{float:none;display:block;margin-top:8px}}
.prop-reference{margin:20px 0 10px;max-width:660px}.prop-reference img{width:100%;height:auto;display:block;image-rendering:pixelated}.prop-reference figcaption{font-size:9px;margin-top:8px;color:#a5ad8d}

#app.in-game .controls{display:none}#app.in-game .console{justify-content:flex-end}

.levels{grid-template-columns:repeat(auto-fit,minmax(205px,1fr))}.cycle-note{font-size:10px;letter-spacing:1.5px;color:#828c7e;margin-top:12px}.in-game .cycle-note{opacity:.5}

@media(max-width:650px){.levels{grid-template-columns:1fr 1fr}.levels h3{font-size:9px}.levels article{min-width:0}.levels p{font-size:8px}}

/* Game-only presentation: keep existing controls in the DOM for game bindings. */
html,body{width:100%;height:100%;overflow:hidden;background:#000}
#app{width:100%;max-width:none;height:100%;height:100dvh;margin:0;padding:0;display:grid;place-items:center}
#app>header,#app>.heading,#app>.console,#app>.track-line,#app>.levels,#app>.cycle-note,#app>footer{display:none}
.game-shell{width:min(100vw,177.777778vh);width:min(100vw,177.777778dvh);border:0;box-shadow:none}
.game-shell>.telemetry,.game-shell>.game-bottom,.coordinates,.filemark{display:none}
.viewport{width:100%;aspect-ratio:16/9}
canvas:focus-visible{outline:none}

/* Minimal score display inside the game screen. */
.game-shell{position:relative}
.game-shell>.telemetry{display:flex;position:absolute;top:0;right:0;z-index:2;height:auto;padding:12px 16px;background:linear-gradient(180deg,#080d0bcc,transparent);pointer-events:none;border-radius:0 0 0 8px}
.game-shell>.telemetry>span{display:none}
.telemetry>div{gap:22px}
.telemetry strong{text-shadow:0 1px 3px #000}
@media(max-width:650px){.game-shell>.telemetry{padding:8px 10px}.telemetry>div{gap:14px}}

/* Title menu stays inside the game viewport. */
.overlay.title-screen{justify-content:center;text-align:center;background:linear-gradient(180deg,#070b0bd9,#101409a8 60%,#050805e8)}
.title-screen h2{font-size:clamp(32px,7vw,88px);letter-spacing:5px;text-shadow:4px 4px #15170b;margin:12px 0}
.title-screen h2 span{color:var(--yellow)}
.title-screen .primary{min-width:200px}
.title-help{margin-top:18px;font-size:10px;letter-spacing:1px;color:#c9cbaa}
.title-help summary{cursor:pointer;list-style:none;padding:8px}
.title-help p{margin:4px 0!important;font-size:10px!important;line-height:1.6!important}
.overlay:not(.title-screen) .title-help,.title-screen .menu-return{display:none}
.menu-return{display:block;margin-top:14px;padding:8px 0;background:none;border:0;color:#bec3a5;font:10px monospace;cursor:pointer}
.game-shell:has(.title-screen:not(.hidden))>.telemetry{display:none}
@media(max-height:500px){.title-screen h2{font-size:clamp(28px,7vh,52px);margin:6px 0}.title-screen .eyebrow{margin-bottom:4px}.title-help{margin-top:4px}.title-screen .primary{margin-top:4px;padding:10px 20px}.title-screen .small{margin-top:5px}}

.title-screen .title-option{display:inline-block;margin:10px 0 0;padding:8px 16px;border:1px solid #717151;color:#d8d6ac}
.overlay:not(.title-screen) .title-option{display:none}
.archive-panel[hidden]{display:none}.archive-panel{position:absolute;inset:0;z-index:5;overflow:auto;padding:24px;background:#0c110ff5;color:#e7e5c8}.archive-heading{display:flex;align-items:center;justify-content:space-between;gap:15px}.archive-heading h2{font-size:22px;letter-spacing:3px}.archive-heading button{padding:10px;background:#23291d;border:1px solid #757651;color:#e7df98;cursor:pointer}.archive-panel>p{font-size:11px;color:#adb39b}.scene-cards{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px}.scene-card{border:1px solid #4c523d;background:#1a2017;overflow:hidden}.scene-card img{width:100%;aspect-ratio:16/7;object-fit:cover;image-rendering:pixelated;display:block}.scene-card.locked img{filter:grayscale(1) brightness(.4)}.scene-card h3{font-size:11px;margin:10px}.scene-card p{font-size:9px;margin:10px;color:#ded079}.scene-card.locked p{color:#9caa94}@media(max-width:650px){.archive-panel{padding:12px}.scene-cards{grid-template-columns:repeat(2,minmax(0,1fr))}.archive-heading h2{font-size:16px}}

.player-name{display:block;font-size:9px;letter-spacing:1px;margin-top:12px;color:#bbbfa4}.player-name input{margin-left:8px;max-width:145px;background:#11190edb;color:#e6dfb5;border:1px solid #777750;padding:7px;font:12px monospace}.overlay:not(.title-screen) .player-name{display:none}.score-table{width:100%;border-collapse:collapse;text-align:left;font-size:13px}.score-table th,.score-table td{padding:12px;border-bottom:1px solid #3e4634}.score-table th{color:#ded079;font-size:10px}.score-table td:last-child{text-align:right;font-variant-numeric:tabular-nums}.title-screen{overflow:auto}.title-screen .overlay-content{margin:auto}.title-screen h2{font-size:clamp(28px,6vw,66px)}
