:root{--ink:#eeeadd;--gold:#e5c16b;--panel:rgba(18,25,26,.91)}*{box-sizing:border-box}html,body{margin:0;width:100%;height:100%;overflow:hidden;background:#202c2b;color:var(--ink);font-family:Arial,Helvetica,sans-serif}button{font:inherit;color:inherit;cursor:pointer}#world{position:absolute;width:100%;height:100%;image-rendering:auto}.vignette{position:absolute;inset:0;pointer-events:none;box-shadow:inset 0 0 150px #0008}header{position:absolute;top:27px;left:32px;right:32px;display:flex;justify-content:space-between;align-items:center}.identity{display:flex;gap:14px;align-items:center;text-shadow:0 2px 8px #000}.mark{font-weight:900;font-size:29px;border:1px solid #d1bd8644;padding:10px}.mark span{color:var(--gold)}strong{font-size:17px;letter-spacing:4px}.identity small{display:block;font-size:9px;letter-spacing:2.7px;margin-top:6px;color:#c2c5bd}.topright{display:flex;gap:10px;align-items:center}.topright button{background:var(--panel);border:1px solid #ffffff24;padding:11px 14px;font-size:10px;letter-spacing:1px}.live{font-size:9px;letter-spacing:2px;color:#afc6a5;margin-right:12px}.district{position:absolute;left:32px;top:116px}.district>span{font-size:11px;letter-spacing:3px;font-weight:700}.district small{display:block;font-size:9px;letter-spacing:1.5px;color:#b5c1bb;margin-top:8px}.contract{position:absolute;top:170px;left:32px;width:290px;background:var(--panel);border:1px solid #ffffff20;border-top:2px solid var(--gold);padding:21px}.eyebrow{font-size:9px;letter-spacing:2px;color:#b4bdb6}.accent{color:var(--gold)}#contractnum{float:right;font-size:8px;color:#949e99;letter-spacing:0}.contract h2{font-size:18px;line-height:1.4;margin:15px 0 9px;font-weight:500}.contract p{font-size:11px;line-height:1.6;color:#aeb8b2}.contractbottom{border-top:1px solid #ffffff1b;padding-top:13px;margin-top:16px;display:flex;justify-content:space-between;font-size:9px;letter-spacing:1px}.mapcard{position:absolute;bottom:74px;left:32px;background:var(--panel);padding:14px;border:1px solid #ffffff20;width:278px}.maphead,.mapfoot{display:flex;justify-content:space-between;font-size:9px;letter-spacing:1.3px}.maphead{margin-bottom:12px}.mapfoot{margin-top:10px;color:#a9b4ac;font-size:8px}#minimap{width:250px;height:180px;display:block;background:#253430}.mapfoot i{display:inline-block;width:5px;height:5px;background:var(--gold);margin-right:5px}kbd{font:inherit;border:1px solid #ffffff44;padding:2px 4px}.speedcard{position:absolute;right:32px;bottom:86px;text-align:right;text-shadow:0 2px 8px #000}.cash{color:var(--gold);font-family:monospace;font-size:23px;letter-spacing:3px}.speed{display:flex;gap:12px;justify-content:flex-end;align-items:center;margin-top:16px}.speed>span{font-size:72px;line-height:1;font-weight:700;letter-spacing:-5px}.speed small{font-size:10px;letter-spacing:2px;line-height:2;text-align:left}.speed b{font-size:8px;font-weight:400;color:#b9c4bc;letter-spacing:1px}.health{display:flex;gap:4px;justify-content:flex-end;margin-top:15px}.health span{width:25px;height:3px;background:#c4d0a3}.status{position:absolute;bottom:99px;left:50%;transform:translateX(-50%);font-size:10px;letter-spacing:2px;background:#131a1acc;padding:12px 18px;border:1px solid #ffffff22}footer{position:absolute;bottom:30px;left:32px;right:32px;display:flex;justify-content:space-between;font-size:9px;letter-spacing:1px;color:#ddd}footer em{font-style:normal;color:#89978e;margin:0 17px 0 7px}footer b{font-weight:400}.build{color:#87988d;font-size:8px}.attribution{position:absolute;right:9px;bottom:6px;font-size:8px;color:#8a9c95}.attribution a{color:inherit}.overlay{position:absolute;inset:0;background:linear-gradient(90deg,#101a18ee 0%,#101a18b0 43%,#101a1844);display:flex;align-items:center;padding:7vw}.introcontent{max-width:600px}.introcontent .eyebrow{color:var(--gold);font-size:10px;letter-spacing:3px}h1{font-size:clamp(90px,12vw,170px);line-height:.84;letter-spacing:-8px;margin:32px 0;font-weight:900}h1 span{color:var(--gold)}.introcontent p{font-size:16px;line-height:1.8;color:#c2c9bf}.introcontent button{display:flex;justify-content:space-between;align-items:center;background:var(--gold);color:#1c2820;border:0;width:310px;padding:19px 22px;font-size:11px;font-weight:700;letter-spacing:2px;margin-top:30px}.introcontent button span{font-size:20px}.introcontent button:disabled{opacity:.4;cursor:wait}.introdetails{font-size:8px;letter-spacing:2px;color:#8eaa97;margin-top:22px}#load{display:block;margin-top:18px;color:#8eaa97;font-size:10px}.introaside{position:absolute;right:9vw;bottom:15vh;text-align:right}.introaside span{font-size:58px;line-height:1.2;font-weight:700;color:#eeeadd66}.introaside p{font-size:10px;letter-spacing:4px;line-height:2;color:#c6d1c2}dialog{background:#182422;color:var(--ink);border:1px solid #ffffff33;max-width:460px;padding:40px}dialog::backdrop{background:#0009}dialog h2{font-size:28px;font-weight:400}dialog p{font-size:13px;line-height:2.3}dialog b{display:inline-block;width:170px;color:var(--gold)}dialog small{font-size:10px;color:#9aaea0;line-height:1.7}#closehelp{position:absolute;right:15px;top:12px;border:0;background:none;font-size:25px}#touch{display:none}body.playing #intro{display:none}body.map-open .contract,body.map-open .district{display:none}@media(max-width:800px){header{left:18px;right:18px;top:18px}.identity strong{font-size:12px;letter-spacing:2px}.mark{font-size:20px;padding:6px}.topright .live,#audio,.build{display:none}.contract{width:225px;left:18px;top:138px;padding:14px}.district{left:18px;top:93px}.mapcard{left:18px;bottom:62px;width:180px;padding:10px}#minimap{width:158px;height:112px}.mapfoot{font-size:6px;letter-spacing:0}.speedcard{right:18px;bottom:70px}.speed>span{font-size:48px}.cash{font-size:18px}.status{bottom:207px;font-size:8px;max-width:80%;text-align:center}footer{bottom:28px;left:18px;font-size:7px}footer em{margin-right:7px}.introaside{display:none}.introcontent .eyebrow{font-size:8px}h1{font-size:110px}.introcontent p{font-size:14px}}@media(pointer:coarse){#touch{position:absolute;display:block;right:15px;bottom:210px;text-align:center}#touch button{background:#14231dcc;border:1px solid #ffffff45;padding:14px;margin:3px;border-radius:6px;touch-action:none}.status{bottom:340px}}

body.map-open .mapcard,body.map-open .speedcard,body.map-open .status,body.map-open footer{display:none}

#touch button.held{background:#e5c16b;color:#1c2820}button:focus-visible{outline:2px solid var(--gold);outline-offset:3px}
@media(pointer:coarse){#touch{display:none;left:15px;right:15px;bottom:30px;justify-content:space-between;align-items:end;pointer-events:none}body.playing #touch{display:flex}#touch button{min-width:48px;min-height:48px;pointer-events:auto;user-select:none}#touch .touch-actions{display:grid;grid-template-columns:repeat(2,auto)}#touch .touch-move{display:flex;align-items:center}#touch .touch-move>div{display:flex;flex-direction:column}.mapcard{bottom:150px}.speedcard{bottom:160px}.status{bottom:275px}footer{display:none}body.map-open #touch{display:flex}}
@media(pointer:coarse) and (max-height:540px){.contract{top:90px;width:205px;padding:10px}.contract h2{font-size:14px;margin:8px 0}.contract p{display:none}.district{display:none}.mapcard{display:none}.speedcard{bottom:140px}.status{bottom:150px;max-width:40%}header{top:10px}.introcontent h1{font-size:70px;margin:20px 0}.introcontent p{display:none}.introcontent button{margin-top:15px}}

@media(pointer:coarse) and (min-height:541px){.status{bottom:325px}}

/* Keep the longer 2032 title inside narrow screens. */
@media(max-width:800px){.introcontent h1{font-size:clamp(54px,19vw,110px);letter-spacing:-.065em}.introcontent{width:100%;min-width:0}.introcontent button{max-width:100%}}

.ride-choice{display:flex;flex-direction:column;gap:8px;margin-top:18px;font-size:9px;letter-spacing:2px;color:var(--gold);max-width:310px}.ride-choice select{font:14px Arial;color:var(--ink);background:#182c29;border:1px solid #748777;padding:11px;border-radius:4px}.introcontent .ride-choice+button{margin-top:15px}
@media(max-width:800px){.ride-choice{margin-top:10px}.introcontent h1{margin:22px 0}.introcontent button{padding:15px 20px}.introdetails{margin-top:15px}}

.interaction-hint{position:absolute;left:50%;bottom:148px;transform:translateX(-50%);max-width:70%;padding:9px 14px;border:1px solid #65d7d466;border-radius:5px;background:#142b2bee;color:#9ce6df;font-size:11px;letter-spacing:.7px;text-align:center;pointer-events:none}.interaction-hint[hidden]{display:none}body:not(.playing) .interaction-hint,body.map-open .interaction-hint{display:none}@media(max-width:800px){.interaction-hint{bottom:256px;max-width:85%;font-size:10px}}@media(pointer:coarse){.interaction-hint{bottom:365px}}@media(pointer:coarse) and (max-height:540px){.interaction-hint{bottom:194px;max-width:55%}}

/* Player-created identity; appearance never locks story paths. */
.overlay{overflow-y:auto;padding:5vh 7vw}.introcontent{width:min(600px,100%);margin:auto 0}.introcontent h1{font-size:clamp(62px,8vw,116px);letter-spacing:-4px;margin:22px 0}.player-setup{max-width:480px;margin-top:18px}.player-setup label,.appearance-label{display:block;font-size:9px;letter-spacing:2px;color:#c5d3c5;margin:0 0 8px}.player-setup input{box-sizing:border-box;width:100%;padding:11px 13px;border:1px solid #6a8173;border-radius:3px;background:#132622;color:#f8ecd1;font:15px system-ui;outline-offset:3px}.appearance-label{margin-top:15px}.appearance-label[hidden]{display:none}.appearance-options{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:8px}.introcontent .appearance-choice{display:flex;flex-direction:column;gap:5px;justify-content:center;align-items:center;width:auto;padding:6px;margin:0;background:#203730;color:#e7ead9;border:1px solid #5e786a;border-radius:4px;letter-spacing:.4px}.introcontent .appearance-choice[aria-pressed="true"]{border-color:#e5c16b;background:#385045;box-shadow:inset 0 0 0 1px #e5c16b}.appearance-choice img{width:100%;height:64px;object-fit:contain}.introcontent .appearance-choice span{font-size:9px}.introcontent #start{margin-top:18px}.introdetails{margin-top:14px}#load{margin-top:10px}
@media(max-width:1000px){.introaside{display:none}}
@media(max-width:500px){.overlay{padding:26px 7vw;align-items:flex-start}.introcontent{margin:0}.introcontent h1{font-size:clamp(52px,15vw,74px);letter-spacing:-3px;margin:18px 0}.introcontent p{font-size:13px;line-height:1.6}.appearance-choice img{height:48px}.introcontent .appearance-choice span{font-size:8px}.player-setup{margin-top:12px}.introcontent #start{width:100%;padding:15px 18px}.introdetails{font-size:7px}}

#contactDialog{box-sizing:border-box;width:min(540px,92vw);max-height:85vh;overflow:auto}#contactDialog h3{color:#e5c16b;font-size:20px;margin:20px 0 12px}#contactDialog p{white-space:pre-line;line-height:1.7}#contactReward{color:#85ded5}.contact-actions{display:flex;gap:10px;flex-wrap:wrap;margin-top:24px}.contact-actions button{padding:12px 16px;border:1px solid #708d7f;color:#f0e8d5;background:#253e34;font:11px system-ui;letter-spacing:1px;cursor:pointer}.contact-actions button[hidden]{display:none}#acceptJob,#reportJob{background:#e5c16b;color:#172b22}#abandonJob{color:#f2b2a1}#contactResult:empty{display:none}@media(max-width:500px){.topright{gap:5px}.topright button{padding:7px 8px;font-size:8px}.topright .live{display:none}#contactDialog{padding:28px 22px}.contact-actions button{flex:1}}

#closeContact{position:absolute;right:15px;top:12px;border:0;background:none;color:#e8eedf;font-size:25px;line-height:1;padding:4px;cursor:pointer}#closeContact:focus-visible{outline:2px solid #e5c16b;outline-offset:2px}

.hover-status{position:absolute;left:50%;bottom:192px;transform:translateX(-50%);max-width:75%;padding:8px 13px;border:1px solid #76e9e177;background:#122b2cec;color:#92eee5;font-size:10px;letter-spacing:1px;text-align:center;pointer-events:none}.hover-status[hidden],#touchJump[hidden]{display:none}#touchJump:disabled{opacity:.45}@media(max-width:800px){.hover-status{bottom:298px;max-width:85%}}@media(pointer:coarse){.hover-status{bottom:405px}}@media(pointer:coarse) and (max-height:540px){.hover-status{bottom:235px;max-width:60%}}

#contactDialog .contact-location{font-size:11px;line-height:1.5;color:#91c7bd;margin:0 0 20px;overflow-wrap:anywhere}

.contact-badge{float:left;width:40px;height:40px;image-rendering:pixelated;margin:0 12px 10px 0}.contact-badge[hidden]{display:none}

.cargo-status{display:flex;align-items:center;gap:8px;padding:7px 0;color:#f0cb81;font-size:10px;letter-spacing:.6px}.cargo-status[hidden]{display:none}.cargo-status img{width:24px;height:24px;image-rendering:pixelated}.cargo-status img[hidden]{display:none}#pickupCargo{background:#e5c16b;color:#172b22}

/* Keep extended story objectives clear of the map on short desktop screens. */
@media(min-width:801px) and (max-height:800px){#minimap{height:100px}}

.save-notice{position:absolute;top:78px;right:32px;max-width:min(400px,85vw);padding:8px 12px;background:#241c16ee;border:1px solid #e5c16b;color:#ffdc88;font-size:11px;line-height:1.5;z-index:5}.save-notice[hidden],#resumeNotice[hidden]{display:none}#resumeNotice{display:block;max-width:420px;margin-top:12px;color:#ffdc88;font-size:11px;line-height:1.5}@media(max-width:800px){.save-notice{top:70px;right:18px;font-size:10px}}

/* Supplied artwork governs the charcoal, ivory and gold conversation panel. */
#contactDialog{width:min(1180px,96vw);max-width:1180px;max-height:42vh;margin:auto auto 22px;padding:22px 28px;display:grid;grid-template-columns:minmax(0,1fr) minmax(220px,30%);gap:24px;background:#101718f5;border:2px solid #d6ac4f;box-shadow:0 0 0 3px #080e10;font-family:'Courier New',monospace}#contactDialog:not([open]){display:none}#contactDialog.has-portrait{grid-template-columns:150px minmax(0,1fr) minmax(220px,30%)}.contact-portrait{width:150px;height:auto;max-height:170px;object-fit:contain;object-position:center;image-rendering:pixelated;border:3px solid #e5c16b;align-self:center}.contact-portrait[hidden]{display:none}#contactDialog h2{font:700 23px 'Courier New',monospace;letter-spacing:2px;color:#f1c965;margin:4px 0 8px}#contactDialog h3{font-size:15px;margin:10px 0 8px}#contactDialog p{font-size:15px;line-height:1.5;margin:8px 0}#contactDialog .contact-location{font-size:11px;margin:0 0 8px}.contact-actions{display:flex;flex-direction:column;align-self:center;gap:10px;margin:0}.contact-actions button{width:100%;font:700 13px 'Courier New',monospace;letter-spacing:1px;background:#151d20;color:#eeeadd;border:2px solid #65706f;padding:11px}#acceptJob,#reportJob,#pickupCargo{background:#141c1e;color:#f4ce6b;border-color:#e5c16b}.contact-badge{width:28px;height:28px}#closeContact{position:absolute;right:7px;top:3px;background:none;border:0;color:#aaa;font-size:22px}@media(max-width:700px){#contactDialog,#contactDialog.has-portrait{grid-template-columns:76px minmax(0,1fr);gap:12px;padding:18px 14px;margin:auto auto 12px;max-height:72vh;width:96vw}#contactDialog:not(.has-portrait){grid-template-columns:1fr}.contact-portrait{width:76px;height:auto;max-height:88px;align-self:start}#contactDialog h2{font-size:18px;letter-spacing:1px}#contactDialog p{font-size:13px}.contact-actions{grid-column:1/-1;display:flex;flex-direction:row;flex-wrap:wrap}.contact-actions button{width:auto;flex:1 1 140px;font-size:11px}.contact-copy{min-width:0}}

/* Compact play tracker and independent full-screen map controls. */
#world{image-rendering:pixelated;outline:none}.contract{top:96px;width:300px;padding:12px 14px}.contract h2{font:700 15px/1.35 'Courier New',monospace;margin:8px 0}.contract:not(.expanded) #missiondesc{display:none}.contractbottom{margin-top:8px;padding-top:8px}.contract .eyebrow{padding-right:60px}#contractnum{display:none}#missionDetails{position:absolute;top:9px;right:8px;background:none;border:1px solid #8b8051;color:#e5c16b;font:9px monospace;padding:3px}.district{left:32px;top:55px;pointer-events:none}.district small{display:none}.mapcard{bottom:auto;left:auto;right:24px;top:100px;width:202px;padding:10px}#minimap{width:180px;height:130px}.mapfoot{font-size:7px}.camera-controls{position:absolute;right:24px;bottom:32px;display:flex;gap:4px}.camera-controls button{background:#101718ed;border:1px solid #a68c42;padding:7px 10px;font:11px monospace;color:#f5cf57}.map-open .camera-controls{display:none}#mapPanel{position:absolute;inset:0;pointer-events:none;font:13px 'Courier New',monospace}#mapPanel[hidden]{display:none}.map-toolbar,.map-search,.map-selection{pointer-events:auto;background:#101718ef;border:1px solid #d6ac4f;padding:12px;position:absolute}.map-toolbar{top:18px;left:18px;right:18px;display:flex;gap:8px;align-items:center;flex-wrap:wrap}.map-toolbar strong{font-size:16px;letter-spacing:1px;margin-right:auto}#mapPanel button{background:#172423;border:1px solid #af964e;color:#f4cc63;padding:8px;font:11px monospace}#mapPanel button:disabled{opacity:.4}.map-search{top:84px;left:18px;width:min(350px,calc(100vw - 36px));max-height:50vh;overflow:auto}#mapSearch{width:100%;background:#202e2c;color:#eeeadd;padding:10px;border:1px solid #75857b}#mapResults{display:flex;flex-direction:column;gap:4px;margin-top:6px}.map-filters{display:flex;gap:8px;flex-wrap:wrap;margin-top:10px;font-size:11px}.map-selection{bottom:18px;left:18px;max-width:min(580px,calc(100vw - 36px));display:grid;gap:8px}.map-selection small{color:#b0beb6}.map-open header,.map-open .mapcard,.map-open .contract,.map-open .district,.map-open .speedcard,.map-open footer,.map-open #touch,.map-open .status{display:none}@media(max-width:800px){header{top:14px;left:16px;right:16px}.identity strong{font-size:13px;letter-spacing:1px}.district{display:none}.contract{top:64px;left:12px;width:220px;padding:10px}.contract h2{font-size:12px}.mapcard{right:12px;top:230px;width:142px}#minimap{width:120px;height:85px}.camera-controls{right:12px;bottom:52px}.map-toolbar{top:8px;left:8px;right:8px;padding:8px;gap:4px}.map-toolbar strong{width:100%;font-size:13px}.map-search{top:114px;left:8px;max-height:34vh}.map-selection{bottom:8px;left:8px}.map-selection small{font-size:10px}}

.contract:not(.expanded) h2{display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.map-open .vignette{display:none}
