:root{color-scheme:dark;font-family:system-ui,-apple-system,sans-serif;background:#101516;color:#eae9e2}*{box-sizing:border-box}body{margin:0}main{max-width:1180px;margin:auto;padding:34px 40px}header{display:flex;justify-content:space-between;align-items:center;border-bottom:1px solid #354041;padding-bottom:25px}.brand{font-size:27px;font-weight:850;letter-spacing:-1px;color:inherit;text-decoration:none}.brand span{color:#8e9995;font-weight:400}.tag,.eyebrow{font-size:11px;letter-spacing:2px;color:#a4aeaa}.tag{border:1px solid #46514e;border-radius:3px;padding:8px}.intro{margin:52px 0 32px}h1{font-size:clamp(38px,6vw,64px);line-height:1.12;letter-spacing:-3px;margin:18px 0}.intro>p:last-child{color:#a8b1ac;line-height:1.8}.screen{position:relative;aspect-ratio:16/9;background:#080c0d;border:1px solid #354041;border-radius:5px;overflow:hidden}canvas{width:100%;height:100%;display:block;outline:none}#cover{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;flex-direction:column;background:radial-gradient(ellipse at center,#24322e44,transparent 70%);pointer-events:none}#cover h2{font-size:20px;font-weight:500}.cross{font-size:44px;color:#eab471}#cover p{color:#8e9995;font-size:13px}.toolbar{display:flex;gap:10px;margin-top:18px;flex-wrap:wrap}button,.choose{font:inherit;font-size:14px;border:1px solid #46514e;border-radius:4px;color:inherit;background:transparent;padding:12px 18px;cursor:pointer}.choose{background:#dfae70;color:#171b19;border-color:#dfae70;font-weight:650}.choose input{display:block;width:220px;margin-top:8px;font-size:11px}button:disabled{opacity:.35;cursor:not-allowed}button:not(:disabled):hover{background:#34403a}#status{font-size:13px;color:#c5b592;overflow-wrap:anywhere;line-height:1.6}.details{display:grid;grid-template-columns:1fr 1fr 1fr;gap:40px;margin:42px 0;border-top:1px solid #354041;padding-top:24px}h3{font-size:12px;letter-spacing:1px;color:#dfae70}.details p{font-size:13px;line-height:1.9;color:#a8b1ac}code,kbd{font-family:monospace;font-size:12px}kbd{color:#eae9e2}.text-button{border:0;padding:0;color:#dfae70;font-size:12px}summary{font-size:12px;color:#8e9995;cursor:pointer}pre{max-height:200px;overflow:auto;font-size:11px;white-space:pre-wrap}footer{display:flex;justify-content:space-between;gap:20px;margin-top:40px;color:#7e8b84;font-size:10px}footer a{color:#9ba79f}@media(max-width:700px){main{padding:22px 18px}.details{grid-template-columns:1fr;gap:16px}.intro{margin-top:32px}.tag{font-size:8px}footer{flex-direction:column}#cover h2{font-size:16px}}

/* The game surface, including touch controls, owns fullscreen. Resize the actual
   renderer to this viewport instead of stretching a fixed 16:9 image. */
#game-screen:fullscreen,#game-screen.immersive{position:fixed;inset:0;width:100vw;height:100vh;height:100dvh;max-width:none;aspect-ratio:auto;border:0;border-radius:0;z-index:1000;background:#080c0d}
body.game-immersive{overflow:hidden;overscroll-behavior:none}
#game-screen{touch-action:none;isolation:isolate}
#touch-controls{position:absolute;inset:0;pointer-events:none;display:none;user-select:none;-webkit-user-select:none;-webkit-touch-callout:none}
#game-screen[data-running="true"].show-touch #touch-controls{display:block}
#touch-controls button,#touch-stick{pointer-events:auto;touch-action:none;-webkit-tap-highlight-color:transparent}
#touch-controls button{min-width:52px;min-height:52px;padding:8px;background:#0d171ac9;border:1px solid #b9c3bb80;border-radius:50%;font-size:12px;font-weight:650;color:#fff;box-shadow:0 2px 12px #0004}
#touch-controls button[data-held="true"]{background:#dca35cdd;color:#10201a;border-color:#ffd89b}
.touch-top{position:absolute;top:max(12px,env(safe-area-inset-top));left:50%;transform:translateX(-50%);display:flex;gap:10px}
.touch-top button{min-height:40px!important;min-width:44px!important;border-radius:12px!important}
#touch-stick{position:absolute;width:clamp(96px,22vmin,154px);height:clamp(96px,22vmin,154px);left:max(24px,env(safe-area-inset-left));bottom:max(28px,env(safe-area-inset-bottom));border-radius:50%;border:2px solid #d5dfcf66;background:#0d171a80;display:grid;place-items:center}
#stick-knob{width:42%;height:42%;border-radius:50%;border:1px solid #dfe5db9c;background:#b8c7b970;pointer-events:none;will-change:transform}
.stick-caption{position:absolute;bottom:-22px;font-size:10px;color:#e2e6e0;text-shadow:0 1px 3px #000}
.touch-actions{position:absolute;right:max(18px,env(safe-area-inset-right));bottom:max(20px,env(safe-area-inset-bottom));display:grid;grid-template-columns:repeat(3,clamp(52px,10vmin,72px));gap:9px}
#touch-fire{background:#a97842c9!important;min-height:60px!important}
#touch-fire[data-held="true"]{background:#ffcd82ee!important}
#leave-fullscreen{position:absolute;left:max(12px,env(safe-area-inset-left));top:max(12px,env(safe-area-inset-top));padding:9px 12px;min-height:40px;background:#0b141bc9;font-size:11px;z-index:2;touch-action:manipulation}
#leave-fullscreen[hidden]{display:none}
.rotate-hint{display:none;position:absolute;top:64px;left:12px;right:12px;text-align:center;font-size:11px;color:#eee;background:#0b141b99;padding:8px;pointer-events:none}
@media (pointer:coarse){#game-screen[data-running="true"] #touch-controls{display:block}.choose input{width:min(220px,65vw)}}
@media (orientation:portrait){#game-screen.immersive .rotate-hint,#game-screen:fullscreen .rotate-hint{display:block}.touch-actions{grid-template-columns:repeat(2,52px);gap:8px}#touch-stick{left:max(18px,env(safe-area-inset-left))}}
@media (max-height:420px) and (orientation:landscape){#touch-controls button{font-size:10px;min-height:44px;min-width:44px}.touch-actions{grid-template-columns:repeat(3,48px);gap:6px;bottom:max(12px,env(safe-area-inset-bottom))}#touch-fire{min-height:48px!important}#touch-stick{width:112px;height:112px;bottom:max(24px,env(safe-area-inset-bottom))}}

#game-screen.touch-hidden #touch-controls{display:none!important}

#save-info{font-size:12px;line-height:1.6;color:#a8b1ac}
#save-toast{position:absolute;top:max(58px,calc(env(safe-area-inset-top) + 48px));left:50%;transform:translateX(-50%);max-width:80%;padding:8px 12px;margin:0;border-radius:4px;background:#0b141bdf;color:#ece6d6;font-size:12px;text-align:center;pointer-events:none;z-index:3}
#save-toast:empty{display:none}
#touch-controls button:disabled{opacity:.45;cursor:not-allowed}
@media (orientation:portrait){.rotate-hint{top:110px}}

#skip-intro{position:absolute;z-index:8;left:max(12px,env(safe-area-inset-left));top:max(12px,env(safe-area-inset-top));background:#111c;color:#fff;border:1px solid #fff6;border-radius:8px;padding:10px 14px}.intro-playing #touch-controls{display:none!important}

#cancel-hotwire{position:absolute;z-index:8;left:max(12px,env(safe-area-inset-left));top:max(12px,env(safe-area-inset-top));background:#111c;color:#fff;padding:10px 14px;touch-action:manipulation}

/* The Android button sheets are decoded from the mounted original assets.
   Custom labels stay available if that data is missing. */
#touch-controls [hidden]{display:none!important}
#touch-controls .control-art{position:absolute;inset:0;width:100%;height:100%;pointer-events:none;object-fit:contain}
#touch-controls[data-original="true"] .touch-actions,#touch-controls[data-original="true"] .touch-top{position:static;display:contents;transform:none}
#touch-controls[data-original="true"] button[data-touch],#touch-controls[data-original="true"] #touch-stick{position:absolute;transform:translate(-50%,-50%);min-width:0;min-height:0!important;padding:0;left:auto;bottom:auto}
#touch-controls [data-original="true"]{background:transparent!important;border:0!important;box-shadow:none!important}
#touch-controls button[data-original="true"]:hover{filter:brightness(1.15)}
#touch-controls button[data-original="true"][data-held="true"]{filter:sepia(1) saturate(3) brightness(1.2);opacity:.85}
#touch-controls [data-original="true"]>.control-label{position:absolute;width:1px;height:1px;margin:-1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap}
#touch-controls [data-original="true"][data-caption="true"]>.control-label{clip-path:none;width:100%;height:auto;margin:0;left:0;bottom:-13px;font-size:10px;color:#fff;text-shadow:0 1px 3px #000}
#touch-stick[data-original="true"]>.control-art{opacity:.22}
#touch-stick[data-original="true"] #stick-knob{position:absolute;left:25%;top:25%;width:50%;height:50%;z-index:1}
#touch-controls[data-original="true"] #save-in-game{position:absolute;top:12px;left:50%;min-height:36px!important;padding:6px 12px;transform:translateX(-50%);border-radius:8px!important}
#touch-controls[data-original="true"] .stick-caption{bottom:-18px}

#touch-controls .control-ammo{position:absolute;left:50%;bottom:-12px;transform:translateX(-50%);font-size:11px;font-weight:700;white-space:nowrap;color:#fff;text-shadow:0 1px 3px #000;pointer-events:none}
