@font-face{font-family:Mono;src:url('../fonts/IBMPlexMono-500.woff2');font-weight:500;font-display:swap}
:root{color-scheme:dark;--ink:#d5e1e7;--muted:#a1b4bf;--cyan:#79dfed;--gold:#ffb46f;background:#03060b;font-family:Mono,monospace;font-weight:500;font-synthesis:none}*{box-sizing:border-box}body{margin:0;overflow:hidden;color:var(--ink)}[hidden]{display:none!important}canvas{position:fixed;inset:0;width:100%;height:100%;touch-action:none}button,a{-webkit-tap-highlight-color:transparent}button{font:inherit;color:inherit;cursor:pointer}button:disabled{opacity:.4;cursor:default}button:focus-visible,a:focus-visible,canvas:focus-visible{outline:2px solid var(--gold);outline-offset:3px}canvas:focus-visible{outline-offset:-3px}
header{position:fixed;top:max(20px,env(safe-area-inset-top));left:24px;right:24px;display:flex;justify-content:space-between;gap:20px;font-size:11px;line-height:1.6;color:#a1b4bf;pointer-events:none}.mono{font:inherit}#clock{margin:0}
.caption{position:fixed;bottom:max(82px,calc(env(safe-area-inset-bottom) + 68px));left:24px;max-width:min(560px,calc(100vw - 48px));text-align:left;pointer-events:none;font-size:11px;line-height:1.6;text-shadow:0 1px 5px #000,0 0 12px #000}.caption p{margin:0}#chapter{color:var(--muted)}#story{color:var(--ink);margin:3px 0}#math{color:#92afb9;font-size:10px}
footer{position:fixed;bottom:max(18px,env(safe-area-inset-bottom));left:50%;transform:translateX(-50%);display:flex;gap:6px}.icon{height:44px;width:44px;padding:0;border:0;background:transparent;display:grid;place-items:center}.icon:hover{color:var(--cyan)}.icon svg{width:20px;height:20px;fill:none;stroke:currentColor;stroke-width:2;stroke-linecap:round;stroke-linejoin:round}
.scene-labels{position:fixed;inset:0;pointer-events:none}.scene-label{position:absolute;transform:translate(-50%,0);font-size:10px;color:#c5d4dfb5;text-shadow:0 2px 8px #000;white-space:nowrap}.scene-label.volley-label{color:#92d8e2}.scene-label.salvo-label{white-space:pre;text-align:center;line-height:1.5}#help{position:fixed;right:max(16px,env(safe-area-inset-right));bottom:max(18px,env(safe-area-inset-bottom))}
dialog{position:fixed;margin:0;inset:auto max(16px,env(safe-area-inset-right)) max(72px,calc(env(safe-area-inset-bottom) + 60px)) auto;width:min(400px,calc(100vw - 32px));max-height:calc(100dvh - 100px);overflow:auto;padding:24px 20px 18px;background:#08131df2;color:var(--ink);border:1px solid #6b94ab40;border-radius:6px;font-size:11px;line-height:1.7}dialog::backdrop{background:transparent}dialog .close{position:absolute;top:0;right:0}.reference-label{color:var(--muted);margin:16px 0 4px}.reference-label:first-child{margin-top:4px;padding-right:24px}.formula{color:var(--cyan);margin:0;overflow-wrap:anywhere}.parameter{color:#92afb9;font-size:10px;margin:4px 0 0}.credit{font-size:10px;margin:18px 0 0}dialog a{color:var(--muted)}
.sr{position:absolute;width:1px;height:1px;overflow:hidden;clip-path:inset(50%)}
@media(max-width:650px){header{top:max(16px,env(safe-area-inset-top));left:16px;right:16px;display:block;font-size:10px}#clock{display:block;margin-top:4px}.caption{left:16px;max-width:calc(100vw - 32px);font-size:11px}#math{font-size:10px}}
@media(max-height:450px){header{top:10px}.caption{bottom:64px;font-size:10px}footer,#help{bottom:max(8px,env(safe-area-inset-bottom))}}
