*{box-sizing:border-box}body{margin:0;background:#080f1c;color:#edf6ff;font:15px system-ui,sans-serif}button,select,input{font:inherit}button{color:#edf6ff;background:#152b40;border:1px solid #53768c;border-radius:9px;min-height:44px;padding:8px 15px;cursor:pointer}button:hover{background:#284a61}button:focus-visible,input:focus-visible,select:focus-visible{outline:3px solid #efc776;outline-offset:3px}#viewport{position:fixed;inset:0;touch-action:none}canvas{display:block;width:100%;height:100%}header{position:fixed;top:20px;left:25px;right:25px;display:flex;align-items:center;gap:24px;pointer-events:none}header button{margin-left:auto;pointer-events:auto}.brand{font-weight:800;letter-spacing:.18em}.brand span{display:block;font-size:calc(10px * var(--text-scale,1));letter-spacing:.3em;color:#83afc4;margin-top:7px}.badge{font-size:calc(10px * var(--text-scale,1));color:#9ab6c9;letter-spacing:.16em}.intro{position:fixed;top:112px;left:32px;max-width:330px;pointer-events:none;text-shadow:0 2px 12px #000}.eyebrow{font-size:calc(10px * var(--text-scale,1));letter-spacing:.22em;color:#71d6db}h1{font-size:calc(40px * var(--text-scale,1));line-height:1.05;margin:15px 0}p{line-height:1.6}.disclaimer{font-size:calc(11px * var(--text-scale,1));color:#9db7c9;max-width:270px}.status{position:fixed;left:25px;bottom:25px;display:flex;gap:14px;align-items:center;background:#0b182be8;border:1px solid #294557;border-radius:12px;padding:8px 12px;font-size:calc(12px * var(--text-scale,1))}#time{color:#f2cf83;font-variant-numeric:tabular-nums}#prompt{position:fixed;bottom:105px;left:50%;transform:translateX(-50%);background:#0b182bea;padding:10px 18px;border:1px solid #3a6275;border-radius:10px;text-align:center;max-width:90vw}#interact{position:fixed;right:28px;bottom:85px;border-color:#76d5d9}#interact:disabled{opacity:.45}.keys{position:fixed;right:25px;bottom:30px;font-size:calc(11px * var(--text-scale,1));color:#b6ccd5}.touch{display:none}dialog{background:#102237;color:#edf6ff;border:1px solid #729aae;border-radius:20px;padding:25px;max-width:min(440px,92vw)}dialog::backdrop{background:#020813ba}dialog h2{font-size:calc(28px * var(--text-scale,1));margin-top:0}dialog label{display:flex;justify-content:space-between;align-items:center;gap:20px;margin:20px 0}dialog button{margin:5px}#error{position:fixed;top:40%;left:10%;right:10%;padding:25px;background:#422b26;border:1px solid #efc776} @media(pointer:coarse),(max-width:750px){header{top:max(12px,env(safe-area-inset-top));left:14px;right:14px;gap:8px}.badge{display:none}.brand{font-size:calc(12px * var(--text-scale,1))}.brand span{font-size:calc(8px * var(--text-scale,1))}header button{font-size:calc(12px * var(--text-scale,1));padding:6px 9px}.intro{top:90px;left:18px;max-width:250px}h1{font-size:calc(27px * var(--text-scale,1));margin:8px 0}.intro p{font-size:calc(12px * var(--text-scale,1));margin:5px 0}.disclaimer{display:none}.status{left:12px;right:12px;bottom:max(8px,env(safe-area-inset-bottom));font-size:calc(10px * var(--text-scale,1));gap:8px;justify-content:space-between}.status button{font-size:calc(11px * var(--text-scale,1))}.keys{display:none}#prompt{bottom:205px;font-size:calc(12px * var(--text-scale,1));min-width:240px}#interact{right:18px;bottom:145px}.touch{display:block}#joystick{position:fixed;left:25px;bottom:85px;width:110px;height:110px;border-radius:50%;background:#143249a8;border:1px solid #80bec7;touch-action:none}#joystick span{position:absolute;width:42px;height:42px;left:33px;top:33px;border-radius:50%;background:#6eb2c8;pointer-events:none}.actions{position:fixed;right:18px;bottom:85px;display:flex;gap:8px}.actions button{touch-action:none}}

.wayfinding{position:fixed;top:330px;left:30px;max-width:260px;background:#0b182bea;border:1px solid #294557;border-radius:12px;padding:12px;display:flex;flex-wrap:wrap;gap:8px;font-size:calc(12px * var(--text-scale,1))}.wayfinding select{background:#153148;color:#edf6ff;border:1px solid #7195a8;border-radius:5px;padding:6px;min-height:44px}.wayfinding label{width:100%}@media(max-width:750px){.wayfinding{top:auto;bottom:270px;left:12px;max-width:215px;padding:7px;font-size:calc(10px * var(--text-scale,1))}.wayfinding button{font-size:calc(10px * var(--text-scale,1));padding:4px 8px}.wayfinding select{font-size:calc(11px * var(--text-scale,1))}.intro{pointer-events:none}}

#citizen-panel{position:fixed;right:25px;top:100px;width:280px;padding:13px;background:#102237ed;border:1px solid #729aae;border-radius:12px;font-size:calc(12px * var(--text-scale,1));max-height:58vh;overflow:auto}#citizen-panel summary{cursor:pointer;min-height:30px;color:#91e0df}#citizen-panel select{max-width:100%;min-height:44px;background:#153148;color:white}#citizen-panel h2{font-size:calc(14px * var(--text-scale,1))}#citizen-panel p{white-space:pre-line}@media(max-width:750px){#citizen-panel{top:190px;right:12px;width:220px;max-height:42vh}#citizen-panel:not([open]){width:170px}}

#construction-panel{position:fixed;left:30px;top:515px;width:280px;background:#102237f2;border:1px solid #729aae;border-radius:12px;padding:12px;font-size:calc(12px * var(--text-scale,1));max-height:24vh;overflow:auto}#construction-panel summary{cursor:pointer;min-height:30px;color:#edc784}#construction-panel select{min-height:44px;background:#153148;color:white;max-width:100%}#building-orders{white-space:pre-line}@media(max-width:750px){#construction-panel{left:12px;top:190px;width:160px;max-height:40vh}#construction-panel[open]{width:220px;z-index:3}#citizen-panel{top:245px}#citizen-panel[open]{z-index:4}}

#business-panel{position:fixed;right:25px;top:170px;width:280px;max-height:60vh;overflow:auto;background:#102237f5;border:1px solid #729aae;border-radius:12px;padding:12px;font-size:calc(12px * var(--text-scale,1));z-index:2}#business-panel summary{cursor:pointer;min-height:30px;color:#edc784}#business-panel select{min-height:44px;background:#153148;color:white;max-width:100%}#business-panel button{margin:4px 0}#business-stock{white-space:pre-line}#citizen-panel[open]{z-index:3}@media(max-width:750px){#business-panel{top:300px;right:12px;width:190px;max-height:45vh}#business-panel[open]{z-index:5}}

#quest-nav{position:fixed;right:25px;top:72px;display:flex;gap:6px;align-items:center;font-size:calc(11px * var(--text-scale,1));max-width:65vw;flex-wrap:wrap}#quest-nav button{font-size:calc(12px * var(--text-scale,1))}#progress{width:100%;text-align:right;color:#d6bd85}#citizen-panel{top:180px}#business-panel{top:245px}#garage-dialog{max-width:min(740px,96vw);max-height:94vh;overflow:auto}#race-canvas{width:100%;height:auto;max-height:44vh;background:#081525;border:1px solid #729aae}.drive-controls{display:flex;gap:4px;flex-wrap:wrap}.drive-controls button{touch-action:none;min-width:80px}#ledger-data{white-space:pre-wrap;overflow-wrap:anywhere;font:12px/1.6 monospace}#vault-dialog,#observatory-dialog{max-height:90vh;overflow:auto}dialog a{color:#94dedf}@media(max-width:750px){#quest-nav{top:185px;left:12px;right:12px;max-width:none}#quest-nav button{font-size:calc(10px * var(--text-scale,1));min-height:38px;padding:5px 7px}#quest-nav #progress{font-size:calc(9px * var(--text-scale,1));text-align:left}#construction-panel{top:280px}#citizen-panel{top:330px}#business-panel{top:380px}.wayfinding{bottom:260px}#vault-dialog,#observatory-dialog{font-size:calc(13px * var(--text-scale,1))}}
@media(min-width:751px){.wayfinding{top:auto;bottom:100px}#construction-panel{left:auto;right:25px;top:310px;max-height:30vh;z-index:2}#construction-panel[open]{z-index:4}}
@media(max-height:650px) and (min-width:751px){.intro{top:100px}.intro h1{font-size:calc(30px * var(--text-scale,1))}.intro .disclaimer{max-width:250px}.wayfinding{padding:8px;max-width:310px}.wayfinding label{width:auto}.wayfinding button{font-size:calc(11px * var(--text-scale,1));padding:6px 8px}#prompt{bottom:100px;max-width:38vw}}
/* Release 2: the world stays visible; detailed controls live at the City desk. */
#quest-nav{left:25px;right:25px;top:82px;max-width:none;font-size:calc(12px * var(--text-scale,1));z-index:2;justify-content:flex-start}#progress{width:auto;margin-left:auto;font-size:calc(11px * var(--text-scale,1))}.intro{top:145px;max-width:310px}.intro h1{font-size:calc(29px * var(--text-scale,1))}.intro #intro-dismiss{pointer-events:auto;font-size:calc(11px * var(--text-scale,1));padding:4px 10px;min-height:32px;float:right}.intro[hidden]{display:none}.intro .disclaimer{font-size:calc(10px * var(--text-scale,1));max-width:270px}
#city-desk,#missions-dialog,#settings{width:min(660px,94vw);max-width:94vw;max-height:90vh;overflow:auto}#city-desk details#citizen-panel,#city-desk details#construction-panel,#city-desk details#business-panel{position:static;top:auto;left:auto;right:auto;width:100%;max-height:none;margin:12px 0;padding:12px;background:#132e43}#city-desk details summary{font-size:calc(15px * var(--text-scale,1));min-height:44px;padding:10px}#city-desk details select,#city-desk details label{font-size:calc(13px * var(--text-scale,1))}#city-desk details p{font-size:calc(13px * var(--text-scale,1))}#city-desk details[open]{z-index:auto}#missions-dialog article{border-top:1px solid #416476;padding:10px 0}#missions-dialog h3{margin-bottom:4px}#missions-dialog p{font-size:calc(13px * var(--text-scale,1))}#recovery-code{display:block;width:100%;font-family:monospace;background:#081525;color:#fff;min-height:44px;border:1px solid #729aae}#settings label{flex-wrap:wrap}#recover-input{max-width:100%;min-height:44px}#activity-status,#mission-status,#recovery-status{color:#f2cf83}
.wayfinding{top:auto;bottom:105px;left:25px;max-width:270px;padding:8px 12px;display:block;z-index:2}.wayfinding summary{cursor:pointer;min-height:44px;padding:10px 0;font-size:calc(13px * var(--text-scale,1))}.wayfinding nav{display:flex;flex-wrap:wrap;gap:6px;padding-top:8px}.wayfinding:not([open]) nav{display:none}.wayfinding[open]{max-height:250px;overflow:auto}#race-canvas{height:auto;aspect-ratio:5/3;max-height:none;min-height:180px}#garage-dialog{width:min(760px,96vw)}#garage-dialog label{display:inline-flex;gap:8px;margin:8px;flex-wrap:wrap}#garage-dialog p{font-size:calc(13px * var(--text-scale,1))}#garage-dialog h2{font-size:calc(24px * var(--text-scale,1))}.status{z-index:2}#prompt{font-size:calc(12px * var(--text-scale,1));max-width:40vw;bottom:95px}.keys{bottom:28px;font-size:calc(10px * var(--text-scale,1))}
@media(max-width:750px){#quest-nav{top:70px;left:12px;right:12px;gap:4px}#quest-nav button{font-size:calc(11px * var(--text-scale,1));min-height:44px;padding:6px 8px}#progress{width:100%;font-size:calc(10px * var(--text-scale,1));margin:0}.intro{top:205px;left:18px;max-width:240px}.intro h1{font-size:calc(24px * var(--text-scale,1))}.intro .eyebrow{display:none}.intro .disclaimer{display:none}.wayfinding{top:auto;bottom:220px;left:12px;max-width:230px}.wayfinding[open]{max-height:180px}.wayfinding summary{padding:7px 0;min-height:38px}#prompt{bottom:190px;max-width:94vw;min-width:0;width:max-content;padding:6px 10px;font-size:calc(11px * var(--text-scale,1))}#interact{bottom:145px}.status{bottom:8px}#city-desk,#missions-dialog,#settings{padding:18px}#city-desk details{font-size:calc(12px * var(--text-scale,1))}dialog h2{font-size:calc(24px * var(--text-scale,1))}#garage-dialog{padding:15px}#garage-dialog button{font-size:calc(12px * var(--text-scale,1))}.drive-controls button{min-width:65px}#race-canvas{min-height:150px}}
@media(max-height:600px) and (min-width:751px){.intro{top:150px}.intro .disclaimer{display:none}.intro h1{font-size:calc(24px * var(--text-scale,1))}.wayfinding{bottom:100px}#quest-nav button{font-size:calc(11px * var(--text-scale,1));padding:6px 10px}}

#race-canvas:focus-visible{outline:3px solid #efc776;outline-offset:3px}#race-result{color:#f2cf83}

/* Release 4: accessible objective and controls; preserve the central city view. */
.website-return{color:#9ce4dc;font-size:12px;text-underline-offset:4px}.next-step{position:fixed;right:25px;top:135px;width:285px;max-height:32vh;overflow:auto;padding:10px 12px;background:#102237ed;border:1px solid #8caebc;border-radius:10px;z-index:2;font-size:calc(12px * var(--text-scale,1))}.next-step summary{cursor:pointer;color:#f1d28c;min-height:30px}.next-step p{line-height:1.5}.next-step button{min-height:44px}button,a,summary,select,input{outline-offset:4px}button:focus-visible,a:focus-visible,summary:focus-visible,select:focus-visible,input:focus-visible{outline:3px solid #f1d28c}#city-pulse{white-space:pre-line}dialog{overscroll-behavior:contain}#city-desk summary{padding:8px 0}#quest-nav button{min-height:44px}.drive-controls button{min-height:52px;min-width:90px}#course-guide{font-size:13px;line-height:1.5}
@media(max-width:750px){header{gap:6px}.website-return{font-size:10px}.next-step{top:165px;left:12px;right:12px;width:auto;max-height:24vh;padding:7px 10px}.next-step summary{min-height:32px}.next-step:not([open]){max-height:48px}.intro{top:215px;max-width:230px}.intro h1{font-size:22px}.intro p{font-size:11px}.touch #joystick{width:120px;height:120px;left:18px;bottom:85px}.touch #joystick span{left:38px;top:38px}.actions button{min-width:60px;min-height:52px}#interact{min-height:52px;bottom:148px}#quest-nav{gap:4px}#quest-nav button{min-height:44px}.drive-controls{display:grid;grid-template-columns:repeat(3,1fr)}.drive-controls button{min-width:0;font-size:12px}dialog{width:calc(100vw - 20px);max-height:88dvh}.wayfinding{max-height:28vh;overflow:auto}}
@media(prefers-reduced-motion:reduce){*{scroll-behavior:auto!important}}
