:root{color-scheme:dark;--ink:#0a0e10;--paper:#ddd6c5;--dim:#9b9c94;--gold:#ad9869}*{box-sizing:border-box}body{margin:0;background:var(--ink);color:var(--paper);font:16px/1.6 system-ui,sans-serif}header,main,footer{width:min(1200px,calc(100% - 48px));margin:auto}header{display:flex;justify-content:space-between;align-items:center;padding:24px 0;border-bottom:1px solid #293030}header span,.eyebrow,footer{font-size:11px;letter-spacing:2px;color:var(--dim)}.wordmark{font:bold 27px Georgia,serif;letter-spacing:6px;color:var(--paper);text-decoration:none}.intro{padding:42px 0 26px}.eyebrow{color:var(--gold);margin:0 0 12px}h1,h2{font-family:Georgia,serif;font-weight:normal;line-height:1.1;margin:0 0 18px}h1{font-size:clamp(32px,4vw,52px)}h2{font-size:30px}.intro>p:last-child{color:var(--dim);margin:0}#stage{position:relative;aspect-ratio:16/9;background:#05080a;border:1px solid #3b3a31;overflow:hidden}#canvas{display:none;width:100%;height:100%;object-fit:contain;outline:none;image-rendering:pixelated}#gate{position:absolute;inset:0;display:grid;place-items:center;text-align:center;background:linear-gradient(#060a1080,#060a10e0),url('poster.png') center/cover}#gate h2{font-size:clamp(42px,7vw,80px);letter-spacing:10px}#gate p{color:#c0bdae}button{font:inherit;color:var(--paper);border:1px solid #777055;background:#24271f;padding:10px 20px;cursor:pointer}button:hover{background:#373b2c}button:focus-visible,a:focus-visible{outline:2px solid #e0cb92;outline-offset:4px}button:disabled{opacity:.4;cursor:default}#play{margin-top:12px;min-width:230px}#play span{margin-left:20px}.download{font-size:11px;letter-spacing:.4px}#status{position:absolute;bottom:8px;left:12px;margin:0;font-size:12px;color:#cfc5ad;background:#090e12c0;padding:4px 8px;pointer-events:none}#status:empty{display:none}#spinner.loading{position:absolute;top:calc(50% - 20px);left:calc(50% - 20px);width:40px;height:40px;border:2px solid #ffffff30;border-top-color:var(--gold);border-radius:50%;animation:spin 1s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.toolbar{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:12px 0;color:var(--dim);font-size:13px}.toolbar button{font-size:12px;padding:7px 13px}.guide{display:grid;grid-template-columns:1fr 1fr;gap:64px;padding:44px 0;border-top:1px solid #293030;margin-top:20px}.guide p{color:var(--dim);max-width:470px}.guide .muted{font-size:13px}dl{margin:0}dl>div{display:grid;grid-template-columns:125px 1fr;gap:10px;border-bottom:1px solid #242a2b;padding:9px 0;font-size:13px}dt{color:var(--gold)}dd{margin:0}footer{border-top:1px solid #293030;display:flex;justify-content:space-between;padding:25px 0;letter-spacing:1px}a{color:var(--dim)}/* Keep the fullscreen canvas box at its image aspect ratio so mouse hit areas follow the visible pixels. */
#stage{display:grid;place-items:center}#stage:fullscreen{width:100vw;height:100vh;aspect-ratio:auto;background:black;border:0}#stage:fullscreen canvas{max-width:100%;max-height:100%;object-fit:fill}@media(max-width:760px){header,main,footer{width:calc(100% - 24px)}header span{max-width:140px;text-align:right;font-size:9px}.guide{grid-template-columns:1fr;gap:20px}.intro{padding-top:26px}#gate p{font-size:12px;margin:8px}#gate h2{margin:6px}#gate .download{display:none}#play{padding:7px 12px;margin:4px}footer{font-size:9px}.toolbar{font-size:11px}}@media(prefers-reduced-motion:reduce){#spinner.loading{animation:none}}

.native-downloads{padding:26px;margin:0 0 30px;border:1px solid #8d7d9e;background:linear-gradient(120deg,#26202e,#151c20);border-radius:4px}.native-downloads h2{font-size:clamp(25px,3vw,34px);margin:0 0 10px}.native-downloads p{margin:0;color:var(--dim)}.native-downloads .eyebrow{color:#d1b9e7;margin-bottom:10px}.native-actions{display:grid;grid-template-columns:1fr 1fr;gap:14px;margin-top:22px}.native-button{display:block;padding:14px 18px;text-align:center;background:#d1bd93;color:#171715;border:1px solid #e1d1af;border-radius:3px;text-decoration:none;font-size:17px;font-weight:650;line-height:1.4}.native-button:hover{background:#e5d4b3}.native-button span{display:block;font-size:12px;font-weight:400;margin-top:4px}.native-downloads .native-note{font-size:12px;margin-top:16px}.native-note a{color:#dfc8f2}@media(max-width:600px){.native-downloads{padding:20px}.native-actions{grid-template-columns:1fr;gap:10px}.native-button{font-size:16px}}

/* Coarse-pointer devices get the whole viewport; gameplay input stays in LÖVE. */
#canvas{touch-action:none}body.touch-play{overflow:hidden;overscroll-behavior:none}body.touch-play #stage{position:fixed;inset:0;z-index:100;width:100vw;height:100vh;height:100dvh;aspect-ratio:auto;border:0;padding:env(safe-area-inset-top) env(safe-area-inset-right) env(safe-area-inset-bottom) env(safe-area-inset-left);background:#05080a;touch-action:none}#touch-exit{display:none}body.touch-play #touch-exit{display:block;position:fixed;left:max(8px,env(safe-area-inset-left));top:max(8px,env(safe-area-inset-top));z-index:102;font-size:12px;padding:6px 10px;background:#111b20df}#touch-rotate{display:none}@media(orientation:portrait){body.touch-play #touch-rotate{display:grid;position:absolute;inset:0;place-content:center;text-align:center;padding:25px;background:#080d10f5;z-index:101;color:#e5decf}#touch-rotate strong{font:30px Georgia,serif}#touch-rotate p{max-width:300px;color:#adb0a5}}

.touch-guide{color:var(--dim);font-size:14px;max-width:850px;line-height:1.7}

.updates-link{display:flex;flex-wrap:wrap;gap:8px 18px;align-items:center;margin:0 0 26px}.updates-link a{color:var(--paper);font-weight:650;text-underline-offset:4px}.updates-link span{font-size:13px;color:var(--dim)}footer{flex-wrap:wrap;gap:12px 24px}
