:root{font-family:Georgia,serif;color:#f5eddc;background:#142524;font-synthesis:none;--gold:#edbd6e;--muted:#a7b3a9;--line:#ffffff1c}*{box-sizing:border-box}body{margin:0}button,input,select{font:inherit}button{cursor:pointer;touch-action:manipulation;min-height:46px;border:1px solid var(--line);color:inherit;background:#28403c;border-radius:7px;padding:10px 17px}button:hover{background:#3a5550;border-color:#b9a477}button:focus-visible,a:focus-visible,input:focus-visible{outline:3px solid var(--gold);outline-offset:3px}button.primary{background:var(--gold);color:#25322c;border:0;font-weight:bold}button.danger{color:#f2ada0}button:disabled{opacity:.4;cursor:not-allowed}header{height:86px;padding:16px 4vw;display:flex;align-items:center;justify-content:space-between;border-bottom:1px solid var(--line);gap:20px}.brand{font-size:32px;font-weight:bold;font-style:italic;letter-spacing:-2px;color:var(--gold)}.brand small{font:10px system-ui;letter-spacing:3px;display:block;text-transform:uppercase;color:#b9c3b7;margin-top:3px}.stats{display:flex;gap:30px;font:14px system-ui}.stats strong{display:block;font:22px Georgia;margin-top:4px}.eyebrow{font:11px system-ui;letter-spacing:2px;text-transform:uppercase;color:var(--gold)}.layout{max-width:1540px;margin:auto;display:grid;grid-template-columns:96px 1fr;min-height:calc(100vh - 86px)}nav{border-right:1px solid var(--line);display:flex;flex-direction:column;gap:12px;padding:24px 9px}nav button{padding:12px 2px;background:transparent;border-color:transparent;font:11px system-ui;color:var(--muted)}nav button span{display:block;font:26px Georgia;margin-bottom:7px}nav button.active{color:var(--gold);background:#edbd6e12;border-color:#edbd6e30}main{padding:28px 3vw 35px;min-width:0}.title{display:flex;justify-content:space-between;align-items:center;gap:18px;margin-bottom:22px}h1{font-size:clamp(28px,3vw,44px);font-weight:normal;margin:6px 0}h2{font-size:26px;font-weight:normal;margin:0 0 10px}h3{font-size:20px;margin:8px 0}p{line-height:1.6;color:#bdc8bd}.title p{margin:0;font-size:14px}.badge{display:inline-block;border:1px solid #dab06c66;border-radius:30px;padding:8px 14px;font:11px system-ui;color:var(--gold);white-space:nowrap}.garage-grid{display:grid;grid-template-columns:minmax(0,1fr) 290px;gap:22px}.scene{position:relative;background:#66726a;border:1px solid #ceba8e50;border-radius:12px;overflow:hidden;aspect-ratio:1.7}.scene svg{display:block;width:100%;height:100%}.scene-label{position:absolute;left:20px;top:18px;font:11px system-ui;letter-spacing:2px;color:#ffe6ac}.hotspots{display:flex;gap:8px;flex-wrap:wrap;margin-top:15px}.panel{border:1px solid var(--line);background:#1c302d;border-radius:10px;padding:22px}.panel p{font-size:14px}.metric{display:flex;justify-content:space-between;font:13px system-ui;padding:13px 0;border-bottom:1px solid var(--line)}.metric strong{color:var(--gold)}.bar{height:5px;background:#081b19;border-radius:4px;overflow:hidden;margin:5px 0 14px}.bar i{display:block;height:100%;background:var(--gold)}.wide{width:100%;margin-top:10px}.tip{padding:18px 0;color:#9eafa3;font-size:14px}.cards{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:18px}.card{border:1px solid var(--line);padding:20px;background:#203630;border-radius:10px;overflow:hidden}.car-art{width:100%;height:125px}.paper{color:#343a30;background:#e8dfc4;border-color:#ad9d7a}.paper p{color:#626454}.paper .eyebrow{color:#8b5933}.paper button{background:#38483c;color:#f3e8ca}.paper .price{font:28px Georgia}.card .actions{display:flex;gap:8px;flex-wrap:wrap;margin-top:15px}.card small{font:12px system-ui;color:#9dad9d}.paper small{color:#68684f}.row{display:flex;gap:10px;flex-wrap:wrap;align-items:center}.sections{display:grid;grid-template-columns:1fr 1fr;gap:20px}.parts{display:grid;grid-template-columns:repeat(2,1fr);gap:12px}.part{padding:15px;border:1px solid var(--line);border-radius:8px}.part button{margin-top:10px}.rival-head{height:95px;display:flex;align-items:center;gap:20px;background:linear-gradient(120deg,#0000,#0003);margin:-20px -20px 16px;padding:20px}.avatar{font-size:44px;font-style:italic;border:2px solid currentColor;border-radius:50%;width:64px;height:64px;text-align:center}.route{margin-top:10px;width:100%;padding:12px;background:#162926;color:#f4e8cb;border:1px solid #506358;border-radius:5px}footer{margin-top:30px;font:11px system-ui;color:#80978a;display:flex;justify-content:space-between;gap:12px}.empty{padding:25px;text-align:center}.racewrap{position:relative;border-radius:12px;overflow:hidden;background:#24382e}.racewrap canvas{display:block;width:100%;aspect-ratio:16/9}.racehud{display:flex;gap:20px;justify-content:space-around;padding:12px;background:#102320;font:12px system-ui}.racehud b{display:block;font:bold 26px Georgia;color:var(--gold)}.controls{display:flex;gap:10px;margin-top:12px;justify-content:center;flex-wrap:wrap}.controls button{min-width:100px;min-height:58px;user-select:none;-webkit-user-select:none}.controls button.pressed{background:var(--gold);color:#152521}.raceoverlay{position:absolute;inset:0;display:grid;place-items:center;text-align:center;background:#12292488;pointer-events:none}.raceoverlay strong{font-size:64px;color:#ffe3a1;text-shadow:0 3px 10px #000}.raceoverlay p{font-size:20px;color:white}.result{max-width:640px;margin:20px auto;text-align:center;padding:40px}.table{width:100%;border-collapse:collapse;font:14px system-ui}.table td,.table th{padding:15px;text-align:left;border-bottom:1px solid var(--line)}#toast{position:fixed;bottom:26px;left:50%;transform:translateX(-50%);max-width:90vw;min-width:260px;background:#f0d5a1;color:#21312a;box-shadow:0 5px 35px #0005;border-radius:8px;padding:15px 22px;z-index:50;display:none;font:14px system-ui}input[type=file]{max-width:100%;margin:15px 0}.intro{padding:16px 20px;background:#edbd6e12;border-left:3px solid var(--gold);margin-bottom:20px}.intro p{margin:0}.swatches button{width:46px;border:3px solid #ffffff30}.muted{color:var(--muted);font:13px system-ui}@media(max-width:1000px){.garage-grid{grid-template-columns:1fr}.cards{grid-template-columns:repeat(2,minmax(0,1fr))}.garage-grid aside{display:grid;grid-template-columns:1fr 1fr;gap:20px}.sections{grid-template-columns:1fr}.stats{gap:16px}}@media(max-width:600px){header{height:76px;padding:12px 16px}.brand{font-size:26px}.brand small{font-size:8px;letter-spacing:2px}.stats{font-size:10px;gap:12px}.stats strong{font-size:17px}.layout{display:block;padding-bottom:80px}nav{position:fixed;bottom:0;left:0;right:0;z-index:20;flex-direction:row;justify-content:space-around;gap:0;padding:4px 3px calc(4px + env(safe-area-inset-bottom));background:#142724f5;border-top:1px solid var(--line);border-right:0}nav button{flex:1;font-size:10px;min-width:0;padding:5px 2px}nav button span{font-size:20px;margin-bottom:2px}main{padding:20px 15px}.title{align-items:flex-start}.title .badge{display:none}.scene{aspect-ratio:1.35}.cards{grid-template-columns:1fr}.garage-grid aside{display:block}.panel{padding:18px}.parts{grid-template-columns:1fr 1fr}.part{padding:12px}.part button{padding:8px 10px}.racehud{gap:5px;font-size:10px}.racehud b{font-size:19px}.controls{gap:6px}.controls button{min-width:55px;flex:1;padding:10px 5px}.racewrap canvas{aspect-ratio:4/3}.raceoverlay strong{font-size:38px}footer{flex-direction:column}#toast{bottom:88px}.table td,.table th{padding:10px 5px;font-size:12px}}@media(max-height:550px) and (orientation:landscape){body.racing header,body.racing nav,body.racing .title,body.racing footer{display:none}body.racing .layout{display:block;padding:0}body.racing main{padding:0 12px}body.racing .racewrap canvas{height:calc(100dvh - 130px);aspect-ratio:auto}body.racing .controls{margin-top:4px}}
.raceoverlay:empty{display:none}.scene .car-art{height:auto}

.bolts{display:grid;grid-template-columns:repeat(4,1fr);gap:5px;margin-top:10px}.bolts button{padding:5px;min-width:0;font-size:24px}.bolts .tight{color:#d9c692}.bolts .loose{color:#79998a;background:#122820}

.illustrated{aspect-ratio:1.5;background:#3b3528}.garage-bg{width:100%;height:100%;object-fit:cover;display:block}.garage-car{position:absolute;left:8%;right:8%;bottom:0}.garage-car .empty{background:#12251eb8;border-radius:12px}.scene-hotspot{position:absolute;min-height:40px;padding:8px 12px;background:#182e28cc;backdrop-filter:blur(4px);font:12px system-ui;border-color:#efc77b88;box-shadow:0 3px 8px #0004}.scene-hotspot.newspaper{left:14%;top:36%}.scene-hotspot.workbench{left:9%;top:16%}.scene-hotspot.exit{right:10%;top:40%}.scene-label{background:#142621aa;padding:8px;border-radius:5px;left:12px;top:12px}
@media(max-width:600px){.illustrated{aspect-ratio:1.2}.scene-hotspot{font-size:10px;min-height:40px;padding:6px}.scene-label{font-size:9px;letter-spacing:1px}.garage-car{left:2%;right:2%;bottom:2%}}

@media(max-height:550px) and (orientation:landscape){body.racing .racewrap canvas{height:calc(100dvh - 170px)}body.racing .race-help{display:none}body.racing #race-warning{font:12px system-ui;min-height:18px;margin:2px 0}body.racing .racehud{padding:8px}}
