*{box-sizing:border-box}html,body{margin:0;height:100%;background:#080f19;color:#f6eddc;font-family:Arial,sans-serif;overflow:hidden}body{display:grid;place-items:center}button,a{touch-action:manipulation}button{font:inherit;cursor:pointer;color:inherit}button:focus-visible,a:focus-visible{outline:3px solid #ffe5a3;outline-offset:4px}#game{position:relative;width:min(100vw,177.7778vh);aspect-ratio:16/9;overflow:hidden;background:#172437;box-shadow:0 0 90px #000}canvas{position:absolute;width:100%;height:100%;inset:0;touch-action:none}.hud{position:absolute;top:0;left:0;right:0;display:flex;align-items:start;justify-content:space-between;padding:2.2% 3%;background:linear-gradient(#101e32d9,transparent);pointer-events:none}.hud button{pointer-events:auto}.location{display:flex;flex-direction:column;gap:5px}.eyebrow{font:11px/1.4 'Courier New',monospace;font-weight:bold;letter-spacing:2.4px;color:#a9c3d4}.location strong{font:bold clamp(18px,2vw,30px) Georgia,serif}.address{font-size:13px;color:#c8d3d6}.stats{display:flex;gap:35px;position:absolute;left:50%;transform:translateX(-50%)}.stats div{display:flex;flex-direction:column;gap:4px;min-width:85px}.stats small{font:10px 'Courier New',monospace;letter-spacing:1.4px;color:#bed0dc}.stats strong{font:32px Georgia,serif;font-variant-numeric:tabular-nums}.stats i{font:16px Arial;color:#9ab2c3;margin-left:6px}.tools{display:flex;gap:8px}.tools button{height:36px;padding:0 12px;background:#182b3aa6;border:1px solid #a8c4ce35;border-radius:5px;font-size:14px;backdrop-filter:blur(8px)}.overlay{position:absolute;inset:0;background:linear-gradient(90deg,#101c30ed 0%,#101c30bc 30%,#101c3030 61%,transparent);display:flex;align-items:center;padding:8% 6%;}.overlay.hidden{display:none}.card{max-width:435px;width:39%;text-shadow:0 2px 15px #1118}.card h1{font:clamp(30px,4.8vw,72px)/1.04 Georgia,serif;letter-spacing:-2px;margin:18px 0 22px;font-weight:normal}.card h1 em{font-style:normal;color:#f2c57f}.card p{font-size:clamp(14px,1.22vw,18px);line-height:1.6;color:#d0dbe1;max-width:370px}.brief{display:flex;gap:18px;font:12px 'Courier New',monospace;margin:23px 0;color:#aec4d1}.brief b{color:#f6e8c7;font-size:18px}.primary{background:#efc27e;color:#252a2b;padding:14px 24px;border:0;border-radius:4px;font-weight:bold;font-size:16px;box-shadow:0 4px 0 #a37547,0 10px 30px #0003;min-width:215px}.primary:hover{background:#ffdaa0}.primary:disabled{opacity:.6;cursor:wait}.instructions{display:flex;gap:19px;font-size:12px;color:#b5c9d4;margin-top:23px;align-items:center}kbd{font:12px monospace;display:inline-block;padding:4px 7px;border:1px solid #688398;border-bottom-width:3px;border-radius:4px;color:#ecf0e7}.text-button{background:none;border:0;color:#a9bdc9;font-size:12px;padding:0;margin-top:20px;border-bottom:1px solid #697d8b}.text-button:hover{color:white}footer{position:absolute;bottom:2%;left:3%;right:3%;display:flex;justify-content:space-between;font:11px 'Courier New',monospace;color:#d7e0e5;text-shadow:0 2px 4px #000;pointer-events:none}footer span:last-child{letter-spacing:2px;color:#9cb1c1}#notice{position:absolute;left:50%;top:34%;transform:translateX(-50%);font:18px Georgia;color:#ffe0a5;text-shadow:0 2px 8px #000;opacity:0;transition:opacity .3s;pointer-events:none}dialog{background:#15263a;color:#eee6d5;border:1px solid #52687a;border-radius:8px;padding:36px;width:min(510px,90vw);max-height:85vh;box-shadow:0 20px 90px #000a}dialog::backdrop{background:#070f1bba;backdrop-filter:blur(5px)}dialog h2{font:32px Georgia}dialog p{font-size:16px;line-height:1.6;color:#c9d8e2}dialog a{color:#f0c685;font-size:14px}#close-details{position:absolute;right:15px;top:10px;background:none;border:0;font-size:28px}.touch-controls{display:none;position:absolute;bottom:6%;left:4%;right:4%;justify-content:start;gap:12px}.touch-controls button{background:#15283ed9;border:1px solid #becbd36b;border-radius:8px;min-width:58px;height:48px;font-size:22px;user-select:none}.touch-controls #hit{margin-left:auto;padding:0 27px;font-size:16px;background:#e7be7e;color:#172438;border:0}.rotate{display:none}#loaderror{position:absolute;inset:0;background:#15263a;align-content:center;text-align:center;padding:30px;font-size:18px}#loaderror[hidden]{display:none}#loaderror button{background:#edc27f;color:#15263a;border:0;padding:12px;margin:20px}#game.playing .overlay{display:none}.danger{color:#ffaaa4!important}@media(pointer:coarse){#game.playing .touch-controls{display:flex}footer{bottom:1%;font-size:10px}.tools button{height:30px;font-size:12px}.hud{padding:1.8% 3%}.location strong{font-size:19px}.location .eyebrow{font-size:8px}.address{font-size:10px}.stats{gap:20px}.stats strong{font-size:25px}.stats small{font-size:8px}.card h1{font-size:5vw;margin:10px 0}.card p{font-size:13px;line-height:1.45}.card{width:47%;max-width:400px}.overlay{padding:5%}.brief{margin:10px 0;font-size:10px;gap:15px}.primary{font-size:14px;padding:10px 20px}.instructions{font-size:10px;margin-top:14px;gap:12px}.text-button{margin-top:10px}.eyebrow{font-size:9px}.card h1{letter-spacing:-1px}.stats div{min-width:70px}#notice{font-size:15px}}@media(orientation:portrait) and (max-width:800px){#game{visibility:hidden}.rotate{position:fixed;inset:0;display:flex;align-items:center;justify-content:center;flex-direction:column;background:radial-gradient(ellipse at top,#223c54,#0b1422);padding:35px;text-align:center}.rotate span{font-size:65px;color:#e9c286;margin-bottom:25px}.rotate strong{font:28px Georgia}.rotate p{font-size:16px;line-height:1.5;color:#aabfcd}}@media(prefers-reduced-motion:reduce){*{transition:none!important}}

.level-picker{display:flex;gap:8px;margin:0 0 18px}.level-picker[hidden]{display:none}.level-picker button{width:35px;height:33px;border:1px solid #7790a2;background:#15273aaa;border-radius:4px;font:14px 'Courier New',monospace}.level-picker button.selected{background:#edc27f;color:#172437;border-color:#edc27f}.level-picker button:hover{border-color:#f4d4a2}.card h1{font-size:clamp(28px,4.1vw,64px)}@media(pointer:coarse){.level-picker{margin-bottom:10px;gap:7px}.level-picker button{width:29px;height:26px;font-size:12px}.card h1{font-size:4.4vw}.brief{margin:8px 0}.instructions{margin-top:10px}}

footer{justify-content:flex-end}

.street-picker{display:flex;gap:8px;margin:18px 0 12px}.street-picker[hidden]{display:none}.street-picker button{background:#15273aaa;border:1px solid #7790a2;border-radius:4px;padding:8px 12px;font-size:12px}.street-picker button.selected{border-color:#edc27f;color:#edc27f}.street-picker button:disabled,.level-picker button:disabled{opacity:.4;cursor:default}.level-picker button:disabled:hover{border-color:#7790a2}@media(pointer:coarse){.street-picker{margin:10px 0 8px}.street-picker button{padding:6px 9px;font-size:11px}}

/* Size the entire stage to the visible browser viewport, including changing phone chrome. */
body{position:fixed;inset:auto;width:var(--view-width,100vw);height:var(--view-height,100dvh);top:var(--view-top,0px);left:var(--view-left,0px);touch-action:none;overscroll-behavior:none}
#game{width:min(var(--view-width,100vw),calc(var(--view-height,100dvh) * 16 / 9));max-height:var(--view-height,100dvh);touch-action:none;user-select:none;-webkit-user-select:none}
.mobile-instructions{display:none}
#joystick{position:fixed;z-index:10;width:76px;height:76px;margin:-38px 0 0 -38px;border:1px solid #f6ddb066;border-radius:50%;background:#14283a44;pointer-events:none;box-shadow:inset 0 0 15px #0b172433}
#joystick[hidden]{display:none}#joystick-thumb{position:absolute;inset:23px;border-radius:50%;background:#f3cb8c99;border:1px solid #ffe4b4aa}
@media(pointer:coarse){.instructions{display:none}.mobile-instructions{display:block;font-size:11px;line-height:1.5;color:#b5c9d4;margin-top:12px}.hud{padding:6px 12px}.location{gap:2px}.location strong{font-size:14px}.location .eyebrow{display:none}.address{font-size:9px}.stats{gap:12px}.stats div{min-width:50px;gap:2px}.stats strong{font-size:20px}.stats small{font-size:7px;letter-spacing:.5px}.stats i{font-size:11px;margin-left:3px}.tools{gap:4px}.tools button{height:28px;padding:0 8px;font-size:11px}.overlay{padding:12px 5%;overflow-y:auto;align-items:safe center}.card{width:52%;max-width:430px}.card h1{font-size:clamp(24px,4vw,42px);margin:7px 0}.card p{font-size:11px;line-height:1.35;margin:7px 0}.card .eyebrow{font-size:8px;letter-spacing:1px}.street-picker{margin:8px 0}.street-picker button{padding:5px 8px}.level-picker{margin-bottom:9px}.primary{min-width:175px;padding:9px 16px;font-size:13px}.text-button{font-size:11px;margin-top:9px}footer{font-size:8px}#notice{font-size:12px}dialog{max-height:calc(var(--view-height,100dvh) - 20px);padding:20px 28px}dialog h2{font-size:24px;margin:10px 0}dialog p{font-size:13px;line-height:1.4}}
@media(pointer:coarse) and (max-height:360px){.card{width:60%}.mobile-instructions{font-size:10px;margin-top:8px}.card h1{font-size:26px}.street-picker button{font-size:10px}.card p{margin:5px 0}.tools button{height:26px}}

.mobile-screen-button{display:none}.fullscreen-help[hidden]{display:none}.fullscreen-help{font-size:11px!important;color:#f0cf9a!important}#game:fullscreen,#game:-webkit-full-screen{width:100%;height:100%;max-height:none;background:#080f19}#game:fullscreen canvas,#game:-webkit-full-screen canvas{object-fit:contain}#game:fullscreen .overlay,#game:-webkit-full-screen .overlay{background:linear-gradient(90deg,#101c30ed,#101c3030)}
@media(pointer:coarse){.mobile-screen-button{display:block;margin:10px auto 0;padding:7px 13px;border:1px solid #a9c3d470;border-radius:4px;background:#15273aaa;color:#d5e1e6;font-size:12px}.card .primary{display:block;margin:auto}.card .text-button{display:block;margin:9px auto 0}.mobile-instructions{text-align:center}}

body{touch-action:manipulation}#game:not(.playing){touch-action:pan-y}.overlay{touch-action:pan-y}

[hidden]{display:none!important}.install-button{display:block;margin:10px auto 0;background:#20374b;border:1px solid #f0cb8c88;border-radius:4px;color:#f0d4aa;padding:9px 14px;font-size:12px;max-width:100%}.dialog-close{position:absolute;right:15px;top:10px;background:none;border:0;font-size:28px}#install-details ol{padding-left:23px;font-size:14px;line-height:1.5;color:#d0dce4}#install-details li{margin:10px 0}#install-status{font-size:12px;color:#f0d4aa;overflow-wrap:anywhere}@media(pointer:coarse){.install-button{padding:7px 11px;font-size:11px}#install-details ol{font-size:12px;line-height:1.4}#install-details h2{font-size:23px}}

#install-game{display:none}@media(pointer:coarse){#install-game{display:block}}

#language{white-space:nowrap;font-size:12px;color:#99adbe}#language .active{color:#f4cf96;font-weight:bold}@media(pointer:coarse){#language{font-size:10px;padding:0 6px}.tools{gap:3px}}
/* Keep the HUD controls clickable while the start, pause, and result card is open. */
.hud{z-index:3}.overlay{z-index:2}#loaderror{z-index:5}
.site-links{display:flex;gap:12px;pointer-events:auto}
.site-links a{color:#d7e0e5;text-decoration:none;white-space:nowrap}
.site-links a:hover{text-decoration:underline}
#game.playing .site-links{display:none}
@media(pointer:coarse){.site-links{gap:8px;font-size:8px}}
/* On menu cards the game title replaces the HUD title, leaving the language control clear. */
#game:not(.playing) .location,#game:not(.playing) .stats{visibility:hidden}
