:root{--bg:#101513;--panel:#19221d;--line:#303d33;--muted:#9ba99f;--lime:#d8f58b;--white:#ecf1e8}body{padding-bottom:112px}header{height:72px;padding:0 4%;border-color:#2b3730;background:#111814}nav[hidden]{display:none}.city-brand{display:flex;align-items:center;gap:21px;border:0;background:none;color:var(--white);padding:0}.city-brand .logo{font-size:27px}.brand-divider{height:20px;width:1px;background:#425046}.city-brand-sub{letter-spacing:2px;font-size:10px;color:var(--muted)}.city-header-right{display:flex;gap:18px;align-items:center;color:var(--muted);font-size:11px}.map-home-button{width:35px;height:35px;display:grid;place-items:center;background:#222e25;border:1px solid #3e4e40;border-radius:6px;color:var(--lime)}.map-home-button svg{width:19px;height:19px}main{padding-top:26px;max-width:1360px}.city-intro{display:flex;justify-content:space-between;align-items:flex-end;gap:24px;margin-bottom:22px}.city-intro .eyebrow{font-size:9px;margin-bottom:10px}.city-intro h1{font-size:40px;letter-spacing:1px;margin-bottom:8px}.city-intro p{margin:0;font-size:12px}.map-period{color:var(--lime)}.city-key{display:flex;gap:20px;align-items:center;padding-bottom:4px}.city-key span{font-size:9px;letter-spacing:1px;color:#b2bdb4;white-space:nowrap;display:flex;align-items:center;gap:6px}.key-dot{display:inline-block;width:7px;height:7px;border-radius:50%}.key-dot.service{background:#e1d3b2}.key-dot.race{background:var(--lime)}.world-map{position:relative;overflow:hidden;border-radius:12px;background:#26392e;aspect-ratio:1.65;min-height:520px;border:1px solid #4d5c48;isolation:isolate}.world-art{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;filter:brightness(.72) saturate(.65)}.map-shade{position:absolute;inset:0;background:linear-gradient(180deg,#0d1c1480,transparent 28%,transparent 75%,#0d1c14b0);pointer-events:none}.map-caption{position:absolute;top:20px;left:23px;right:23px;display:flex;justify-content:space-between;font-size:8px;letter-spacing:2px;color:#e1edddc4}.compass{position:absolute;right:22px;top:55px;display:flex;flex-direction:column;align-items:center;color:#ecf1e8;font-size:11px;gap:2px}.compass span:last-child{font-size:30px;font-weight:400}.water-label{position:absolute;left:3%;top:24%;color:#b9d4d580;font-family:'Barlow Condensed';font-size:21px;letter-spacing:6px;line-height:1.5;transform:rotate(-15deg);text-align:center}.map-pin{position:absolute;transform:translate(-50%,-50%);z-index:2;display:flex;flex-direction:column;align-items:center;background:none;border:0;color:#e6decc;padding:5px;min-width:90px;transition:transform .2s}.map-pin:hover,.map-pin:focus-visible{transform:translate(-50%,-55%);z-index:4}.pin-symbol{display:grid;place-items:center;width:37px;height:37px;background:#17231ef2;border:1px solid #d6d0bc;box-shadow:0 5px 20px #0007;border-radius:9px;transform:rotate(-5deg)}.pin-symbol svg{width:20px;height:20px;transform:rotate(5deg)}.map-pin.race{color:var(--lime)}.map-pin.race .pin-symbol{border-color:#bad96c;background:#26371ff0}.pin-label{display:flex;flex-direction:column;gap:3px;align-items:center;margin-top:7px;background:#0e1a14e8;border:1px solid #8a9a733d;padding:8px 12px;border-radius:5px;box-shadow:0 4px 14px #0004;min-width:124px;white-space:nowrap}.pin-label strong{font-size:11px;font-weight:600}.pin-label small{color:#a6b7a6;font-size:9px}.home-pin .pin-symbol{background:var(--lime);color:#182317;border-color:var(--lime)}.home-pin .pin-label strong{color:var(--lime)}.racing-pin .pin-symbol{box-shadow:0 0 0 6px #d8f58b22,0 0 30px #d8f58b44}.racing-pin .pin-label small{color:var(--lime)}.map-bottom{position:absolute;bottom:20px;left:23px;right:23px;display:flex;justify-content:space-between;color:#c4d0bf;font-size:10px}.map-bottom span:first-child{font-size:8px;letter-spacing:2px}.city-shortcuts{display:flex;gap:14px;margin-top:15px}.city-shortcuts button{display:flex;align-items:center;gap:11px;border:1px solid var(--line);background:#1b261f;color:#c2cfbe;padding:14px 18px;border-radius:7px;font-size:12px;flex:1}.city-shortcuts svg{width:17px;height:17px;color:var(--lime)}.city-shortcuts button span:last-child{margin-left:auto}.city-legal{display:flex;justify-content:space-between;align-items:center;margin-top:20px;padding-top:12px;font-size:9px;color:#738474;letter-spacing:1px}.city-legal button{font-size:10px;letter-spacing:0}.location-trail{display:flex;align-items:center;gap:20px;margin:0 0 28px;font-size:9px;letter-spacing:1px;color:#839580}.location-trail button{border:0;background:none;color:var(--lime);padding:0;font-size:12px;letter-spacing:0}.location-screen h1{font-size:40px}.location-screen .topline{margin-bottom:24px}#playerDock{position:fixed;bottom:0;left:0;right:0;z-index:4;border-top:1px solid #4a5941;box-shadow:0 -10px 30px #0003;background:#121c16f5;backdrop-filter:blur(20px);padding:12px max(4%,calc((100vw - 1280px)/2));padding-bottom:max(12px,env(safe-area-inset-bottom));display:grid;grid-template-columns:1.1fr .6fr 1.2fr;align-items:center;gap:25px}.dock-car,.dock-race{display:flex;align-items:center;text-align:left;background:none;border:0;color:var(--white);padding:0;min-width:0;gap:15px}.dock-car .realcar{width:100px;height:62px;min-width:100px;aspect-ratio:auto;object-fit:contain;filter:none}.dock-empty{width:55px;height:55px;display:grid;place-items:center;color:var(--lime)}.dock-empty svg{width:33px;height:33px}.dock-car small,.dock-cash small,.dock-race small{display:block;color:#8ea08c;font-size:8px;letter-spacing:1.5px;margin-bottom:5px}.dock-car strong,.dock-race strong{font-size:13px;display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:250px}.dock-car em,.dock-race em{display:block;font-style:normal;font-size:9px;color:#9fb18e;margin-top:5px}.dock-chevron{margin-left:auto;color:#a3b597}.dock-cash{padding:3px 28px;border-left:1px solid #344332;border-right:1px solid #344332}.dock-cash strong{font-size:23px;letter-spacing:.3px}.dock-race-icon{display:grid;place-items:center;width:36px;min-width:36px;height:36px;background:#263523;border-radius:7px;color:#bad79a}.dock-race-icon svg{width:19px;height:19px}.dock-race.is-live small{color:var(--lime)}.dock-race.is-live .dock-race-icon{color:var(--lime)}#toast{bottom:130px}.live-strip{display:none}
@media(max-width:800px){.world-map{aspect-ratio:1.13;min-height:530px}.pin-label{min-width:110px;padding:7px 8px}.city-key{flex-direction:column;align-items:flex-start;gap:9px}.dock-cash{padding:3px 17px}#playerDock{gap:14px}.dock-car .realcar{width:75px;min-width:75px}.dock-race-icon{display:none}.dock-race strong{max-width:210px}.city-brand-sub{display:none}.brand-divider{display:none}}
@media(max-width:520px){body{padding-bottom:153px}header{height:59px;padding:0 19px}main{padding:23px 14px 22px}.city-intro{display:block;margin:0 4px 17px}.city-intro h1{font-size:33px;letter-spacing:.5px}.city-intro p{font-size:11px}.city-key{flex-direction:row;gap:18px;margin-top:15px}.city-key span{font-size:8px}.world-map{min-height:490px;aspect-ratio:.79;border-radius:9px}.world-art{object-fit:cover;object-position:50% 50%}.map-caption{top:15px;left:14px;right:14px;font-size:6px;letter-spacing:1px}.map-bottom{left:14px;right:14px;bottom:16px;font-size:8px}.map-bottom span:first-child{font-size:6px;letter-spacing:1px}.compass{top:44px;right:13px}.water-label{left:1%;top:26%;font-size:14px;letter-spacing:3px}.pin-symbol{width:32px;height:32px;border-radius:7px}.pin-symbol svg{width:18px;height:18px}.map-pin{min-width:75px;padding:4px}.pin-label{min-width:0;padding:7px 7px;margin-top:5px;gap:3px}.pin-label strong{font-size:9px}.pin-label small{font-size:7px}.city-shortcuts{gap:9px;margin-top:11px}.city-shortcuts button{padding:13px 10px;font-size:10px;gap:7px}.city-shortcuts svg{width:15px;height:15px}.city-header-right{font-size:10px}.city-legal{margin-top:17px;font-size:7px}.city-legal button{font-size:9px}.location-trail{margin-bottom:22px;gap:14px;font-size:7px}.location-screen h1{font-size:35px}#playerDock{grid-template-columns:1fr auto;gap:10px;padding:6px 18px;padding-bottom:max(9px,env(safe-area-inset-bottom))}.dock-car{gap:8px}.dock-car .realcar{width:72px;height:49px;min-width:72px}.dock-car strong{font-size:12px}.dock-car small,.dock-cash small{font-size:7px;letter-spacing:1px;margin-bottom:3px}.dock-car em{font-size:7px;margin-top:4px}.dock-car .dock-chevron{display:none}.dock-cash{border:0;padding:0;text-align:right}.dock-cash strong{font-size:22px}.dock-race{grid-column:1/-1;border-top:1px solid #344332;padding:9px 0 2px;gap:10px}.dock-race-icon{display:grid;width:27px;min-width:27px;height:27px}.dock-race-icon svg{width:15px}.dock-race>span:nth-child(2){display:grid;grid-template-columns:auto auto;column-gap:9px;row-gap:3px;align-items:center;flex:1;min-width:0}.dock-race small{grid-column:1/-1;font-size:6px;margin:0;letter-spacing:1px}.dock-race strong{font-size:10px;max-width:190px}.dock-race em{font-size:9px;margin:0;text-align:right}.dock-chevron{font-size:11px}#toast{bottom:163px}.dock-empty{height:49px;width:49px}.city-header-right>span{max-width:130px;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}}
@media(prefers-reduced-motion:reduce){.map-pin{transition:none}}
/* Keep the entire illustrated city visible so destination coordinates stay consistent. */
.world-map{height:clamp(520px,calc(100dvh - 290px),720px);aspect-ratio:auto}.world-art{object-fit:fill}@media(max-width:800px){.world-map{height:600px}}@media(max-width:520px){.world-map{height:510px;min-height:490px}}
/* Quieter screens: one title, contextual controls and information on demand. */
.city-intro{align-items:center;margin-bottom:18px}.city-intro h1{font-size:34px;margin:0}.location-trail{margin-bottom:18px}.location-screen .topline h1{margin-bottom:0}.location-screen h1{font-size:35px}.city-header-right [hidden]{display:none}.pin-label{min-width:0;padding:9px 12px}.pin-label small{font-size:8px}.race-tabs[hidden]{display:none}.paint-toggle{display:inline-flex;align-items:center;gap:9px;background:none;border:1px solid var(--line);border-radius:6px;padding:8px 10px;color:var(--muted);font-size:11px;margin:4px 0}.paint-toggle i{width:17px;height:17px;border-radius:50%;border:1px solid #ffffff55}.paint-toggle span:last-child{color:var(--white);margin-left:7px}.paint-options{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin:20px 0 4px}.paint-option{display:flex;gap:10px;align-items:center;background:#222e25;border:1px solid var(--line);border-radius:6px;padding:13px;color:var(--white);font-size:12px;min-height:48px;text-align:left}.paint-option i{display:block;width:24px;height:24px;border-radius:50%;border:1px solid #ffffff44;flex-shrink:0}.paint-option.chosen{border-color:var(--lime)}.icon-button,.info-button{border:1px solid var(--line);border-radius:6px;background:none;color:var(--muted);width:36px;height:36px;display:inline-grid;place-items:center;flex-shrink:0;font-size:17px}.upgrade-list{padding-top:8px;padding-bottom:8px}.upgrade{padding:21px 0}.upgrade p.upgrade-gain{color:var(--lime);font-size:12px;margin:8px 0}.upgrade-stage{color:var(--muted);font-size:10px}.credit-shortfall{display:block;font-size:10px;color:#c9b994;margin-top:5px}.event-format{font-size:9px;letter-spacing:1px;color:var(--muted);display:block;margin-bottom:12px}.conditions{font-size:11px;color:var(--muted);margin:0 0 17px;min-height:0!important}.entry-summary{display:flex;flex-wrap:wrap;gap:8px;margin:15px 0}.entry-summary span{background:#293426;border-radius:4px;padding:7px 9px;font-size:11px;color:#c4d0be}.commitment{font-size:12px;padding:12px 0;border-top:1px solid var(--line);border-bottom:1px solid var(--line);color:var(--white);margin:15px 0 20px}.entry-controls{gap:15px;margin:0 0 16px}.entry-controls label,.pit-label{font-size:12px;color:var(--muted)}.entry-controls select,.pit-label select{display:block;width:100%;margin-top:7px}.compact-note{font-size:11px;margin-bottom:16px}.entry-payouts{display:grid;grid-template-columns:repeat(4,1fr);gap:8px;border-top:1px solid var(--line);padding:17px 0;margin-top:17px;font-size:10px;color:var(--muted)}.entry-payouts b{display:block;font-size:13px;color:var(--white);margin-top:6px}.entry-confirm{width:100%}.entry-footnote{display:block;text-align:center;color:var(--muted);font-size:10px;margin-top:10px}.auction-context{font-size:12px;margin-top:-8px}.race-car-name{font-size:14px}.hub-grid h2{font-size:24px;margin-bottom:18px}.race-kpis{margin-bottom:17px}.card .price{font-size:22px}.city-legal{display:none}
@media(max-width:520px){.city-intro h1{font-size:29px}.city-key{margin-top:12px}.pin-label{padding:8px}.paint-options{gap:8px}.paint-option{padding:11px 8px;font-size:11px}.paint-option i{width:21px;height:21px}.location-screen h1{font-size:30px}.entry-payouts{gap:5px}.entry-payouts b{font-size:12px}.event .btn{margin-top:15px}.modal h2{font-size:29px}.modal .row h2{margin-bottom:0}.entry-controls{grid-template-columns:1fr}.world-map{height:530px}}

/* A viewport-sized shell reserves the dock's real height. Only main scrolls. */
html,body{height:100%;overflow:hidden;transform:none;filter:none;perspective:none}body{padding-bottom:0}
#appViewport{position:fixed;top:var(--app-viewport-top,0px);left:var(--app-viewport-left,0px);width:var(--app-viewport-width,100%);height:var(--app-viewport-height,100vh);height:var(--app-viewport-height,100dvh);display:flex;flex-direction:column;overflow:hidden;isolation:isolate;transform:none;filter:none;contain:none}
#appViewport>header,#appViewport>nav{flex-shrink:0}
#appViewport>#app{flex:1;min-height:0;overflow-y:auto;overflow-x:hidden;overscroll-behavior-y:contain;-webkit-overflow-scrolling:touch;width:100%;margin:0 auto;padding-bottom:max(24px,env(safe-area-inset-bottom));scroll-padding-bottom:24px}
#appViewport>#playerDock{position:relative;inset:auto;flex-shrink:0;width:100%;margin:0;transform:none}
.overlay{top:var(--app-viewport-top,0px);left:var(--app-viewport-left,0px);width:var(--app-viewport-width,100%);height:var(--app-viewport-height,100dvh);right:auto;bottom:auto}.modal{max-height:calc(var(--app-viewport-height,100dvh) - 40px)}
@media(max-width:520px){#appViewport>header{height:calc(59px + env(safe-area-inset-top));padding-top:env(safe-area-inset-top)}input,select,.market-toolbar input,.market-toolbar select,.range-inputs input{font-size:16px}}
