:root{color-scheme:dark;--ink:#dfeaf0;--muted:#91a8b8;--blue:#79c5e9}*{box-sizing:border-box}body{margin:0;background:#0a1924;color:var(--ink);font:15px/1.45 Arial,sans-serif}button,input{font:inherit}button{background:#203a4b;color:#f6fbff;border:1px solid #456174;border-radius:7px;padding:10px 15px;cursor:pointer;min-height:44px}button:hover,button:focus-visible{background:#31566a;outline:2px solid #91d5f5}button:disabled{opacity:.55;cursor:wait}a{color:#a6d6ee}button[hidden],[hidden]{display:none!important}.gamehead{display:flex;align-items:center;gap:28px;padding:20px 3vw;border-bottom:1px solid #253b48}.wordmark{font-weight:900;font-size:29px;color:#fff;text-decoration:none;letter-spacing:-3px}.wordmark span{font-size:10px;letter-spacing:2px;display:block}.gamehead small,.eyebrow{color:var(--muted);font-size:10px;letter-spacing:2px}.gamehead h1{font-size:25px;line-height:1;margin:4px 0}.back{margin-left:auto;text-decoration:none}main{max-width:1600px;margin:auto;padding:20px 3vw}.dashboard{display:flex;gap:26px;align-items:center;padding:0 0 18px;flex-wrap:wrap}.dashboard small{display:block;letter-spacing:1.5px;font-size:9px;color:var(--muted);margin-bottom:5px}.dashboard strong{font-size:17px}.dashboard meter{width:82px;height:12px;accent-color:#80c6c9;vertical-align:middle}.dashboard span{font-size:12px;margin-left:5px}.tools{display:flex;gap:6px;margin-left:auto}.tools button{font-size:12px;padding:8px}.game-layout{display:grid;grid-template-columns:minmax(0,1fr) 230px;gap:18px}.scene{position:relative;overflow:hidden;border:1px solid #587082;border-radius:12px;background:#abc0aa;height:min(72vh,770px);min-height:440px;isolation:isolate}canvas{display:block;width:100%;height:100%;touch-action:none;outline:0}.scene-badge{position:absolute;top:14px;left:15px;pointer-events:none;background:#102a3beb;padding:8px 12px;border-radius:4px;font-size:11px;font-weight:bold;letter-spacing:1px}.scene-badge span{font-size:8px;display:block;color:#9bb8c6;margin-top:2px}.dispatch{padding:18px;background:linear-gradient(145deg,#172e3e,#0e2332);border:1px solid #294757;border-radius:12px;max-height:770px;overflow:auto}.dispatch h2{font-size:21px;margin:8px 0 18px}.order{padding:10px 0;border-bottom:1px solid #344c59}.order b{font-size:13px}.order time{float:right;font:700 17px monospace}.order p{font-size:12px;color:#b6cbd7;margin:4px 0}.order.done{opacity:.45}.order.warn time{color:#ffd275}.order.critical time{color:#ff9595}.legend{margin-top:20px;border-top:1px solid #344c59}.legend h3{font-size:12px}.legend p{font-size:11px;color:#9db6c6}.overlay{position:absolute;inset:0;background:#051925bf;display:flex;align-items:center;justify-content:center;backdrop-filter:blur(5px);z-index:5;padding:16px;overflow:auto}.modal{width:min(100%,480px);padding:28px;background:linear-gradient(135deg,#18394d,#0c2332);border:1px solid #658496;border-radius:12px;box-shadow:0 25px 80px #0006}.modal h2{font-size:clamp(24px,3vw,40px);line-height:1.1;margin:14px 0}.modal p{color:#bbd1dc}.modal>button,#reward button{background:#a9d6eb;color:#0d2c3f;width:100%;font-weight:700;border:0}.small{font-size:11px}.modal input{width:100%;background:#0d202e;border:1px solid #537385;border-radius:4px;color:white;padding:10px;margin:6px 0}.modal .consent{display:flex;align-items:flex-start;font-size:11px;gap:6px;margin:8px 0}.modal input[type=checkbox]{width:auto;margin:2px}#coupon{overflow-wrap:anywhere}#message{background:#142d3e;padding:13px 16px;border-left:3px solid #8ec7df;font-size:13px}.controls,.legal{color:#92adbd;font-size:12px}.dpad{position:absolute;bottom:16px;right:16px;display:none;flex-direction:column;align-items:center;gap:5px;z-index:3;touch-action:none;user-select:none;-webkit-user-select:none}.dpad div{display:flex;gap:5px}.dpad button{height:54px;width:54px;font-size:27px;padding:0;background:#173347c9;border:1px solid #c7e3ee99;touch-action:none;user-select:none;-webkit-user-select:none}.dpad button.held{background:#a8d5eb;color:#123}.orientation{display:none;position:absolute;bottom:5px;left:8px;font-size:10px;background:#102a3bdd;padding:4px;pointer-events:none}#service{position:absolute;left:50%;top:65px;transform:translateX(-50%);background:#102b3ee8;border-radius:7px;padding:12px 18px;min-width:190px;text-align:center;font-size:12px}#service progress{display:block;width:100%;margin-top:8px;accent-color:#a7d8e9}#result{font-size:12px}#discard{margin-top:16px;font-size:11px}@media(pointer:coarse){.dpad{display:flex}}@media(max-width:850px){main{padding:12px}.gamehead{padding:14px;gap:16px}.dashboard{gap:12px}.tools{width:100%;margin:0}.game-layout{grid-template-columns:1fr}.scene{height:65vh;min-height:420px}.dispatch{max-height:none;padding:14px}#orders{display:grid;grid-template-columns:repeat(2,1fr);gap:0 18px}.legend{display:none}.dpad{display:flex}.gamehead small{font-size:8px}}@media(max-width:600px) and (orientation:portrait){.orientation{display:block}.scene{height:62vh}.dashboard strong{font-size:14px}.dashboard meter{width:55px}.dashboard small{font-size:8px}.back{font-size:12px}}@media(max-height:550px) and (orientation:landscape){.gamehead{display:none}main{padding:7px}.dashboard{padding-bottom:7px;gap:15px}.tools{width:auto;margin-left:auto}.game-layout{grid-template-columns:minmax(0,1fr) 175px;gap:8px}.scene{height:calc(100dvh - 95px);min-height:250px}.dispatch{max-height:calc(100dvh - 95px)}#orders{display:block}.controls,.legal,#message{display:none}.dispatch h2{font-size:15px;margin:4px 0}.modal{padding:16px}.modal h2{font-size:24px}.modal p{margin:8px 0}}:fullscreen{background:#0a1924;overflow:auto} :fullscreen .scene{height:75vh}

/* v13: readable dispatch labels */
.controls,.legal{font-size:14px;line-height:1.6}.order b,.order time{font-size:17px}.order p{font-size:14px}.legend p{font-size:14px;line-height:1.5}

.briefing{display:flex;align-items:center;justify-content:space-between;gap:20px;background:#193e50;border:1px solid #71adba;border-radius:10px;padding:18px;margin:0 0 16px}.briefing[hidden]{display:none}.briefing h2{margin:0 0 8px}.briefing p{max-width:780px;margin:0;line-height:1.5}.briefing button{flex-shrink:0;background:#b8e3d2;color:#102e36;font-weight:bold}@media(max-width:600px){.briefing{display:block}.briefing button{margin-top:12px;width:100%}}

.countdown{display:flex;align-items:center;gap:12px;min-width:140px;color:#c7f1d6}.countdown strong{font-size:44px;font-variant-numeric:tabular-nums}.countdown span{font-size:14px}

#map-countdown{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);z-index:4;display:flex;flex-direction:column;justify-content:center;gap:0;width:120px;min-width:0;height:120px;border-radius:50%;background:#153344df;border:2px solid #b4d7cf99;pointer-events:none;box-shadow:0 8px 30px #10242c40}#map-countdown[hidden]{display:none}#map-countdown strong{font-size:62px;line-height:1.15}#map-countdown span{font-size:13px}

/* Mobile GPU/compositor: avoid expensive backdrop effects during gameplay. */
@media(max-width:850px){.overlay{backdrop-filter:none}.scene{contain:layout paint}#map-countdown{box-shadow:none}.dpad button{transition:none}.scene{height:65svh}}

.vehicle-alerts{position:absolute;left:50%;top:8px;transform:translateX(-50%);z-index:4;width:max-content;max-width:90%;pointer-events:none}.vehicle-alert{background:#574525f2;border:1px solid #d9b564;color:#fff2ca;padding:7px 12px;border-radius:6px;font-size:13px;font-weight:700;margin:4px 0;text-align:center}.vehicle-alert.danger{background:#6b322df5;border-color:#dc8d7e;color:#fff0eb}.order.urgent{background:#33464b;box-shadow:inset 0 0 0 1px #d7bd79;border-radius:6px;padding-top:12px;padding-bottom:12px}.order.urgent time{color:#ffe6a3}.order.urgent b:before{content:"СРОЧНЫЙ · ";color:#ffe6a3;font-size:11px}@media(max-width:850px){.order.urgent{grid-column:1/-1}.vehicle-alert{font-size:12px;padding:6px 9px}.vehicle-alerts{top:6px}.scene:has(.vehicle-alert:not([hidden])) .scene-badge{display:none}}

/* Let vertical swipes reach the document while the map is being previewed. */
.previewing #world{touch-action:pan-y pinch-zoom}.previewing .dpad{visibility:hidden;pointer-events:none}.previewing .scene{touch-action:pan-y pinch-zoom}

#service{max-width:calc(100% - 24px);min-width:min(260px,calc(100% - 24px));line-height:1.45}

#begin-game{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);z-index:6;background:#c3e2d6;color:#173b42;border:1px solid #e0f3eb;padding:17px 30px;font-size:20px;font-weight:700;white-space:nowrap;box-shadow:0 6px 20px #0a243444}

#service.waiting{border:2px solid #e9ba5e;background:#26323eee;box-shadow:0 0 0 3px #e9ba5e22}#service.waiting::before{content:"!";display:inline-block;width:28px;height:28px;line-height:28px;margin-right:8px;background:#f2bc55;color:#473211;border-radius:50%;font-size:23px;font-weight:900;vertical-align:middle}

.game-field{min-width:0}.game-field .briefing{margin:14px 0 0}.game-invitation{display:flex;flex-wrap:wrap;gap:7px 20px;padding:14px 18px;margin-bottom:16px;background:linear-gradient(110deg,#244858,#173340);border-left:3px solid #b0d9cd;border-radius:5px}.game-invitation strong{color:#d1eee2;font-size:clamp(15px,2vw,20px)}.game-invitation span{color:#b9ccd5;font-size:13px;align-self:center}

/* Landscape phones: full-width field, dispatch and briefing stay below it. */
@media (orientation:landscape) and (max-height:600px) and (pointer:coarse), (orientation:landscape) and (max-height:500px) and (max-width:950px){
main{padding:5px max(6px,env(safe-area-inset-right)) 8px max(6px,env(safe-area-inset-left))}.gamehead,.game-invitation,.orientation{display:none}.game-layout{grid-template-columns:minmax(0,1fr);gap:10px}.scene,:fullscreen .scene{height:calc(100svh - 65px);height:calc(100dvh - 65px);min-height:220px;border-radius:7px}.dashboard{flex-wrap:nowrap;gap:10px;padding-bottom:5px;min-height:50px;overflow-x:auto}.dashboard>div{flex-shrink:0}.dashboard small{font-size:8px;letter-spacing:.4px}.dashboard strong{font-size:13px}.dashboard meter{width:48px}.tools{width:auto;margin-left:auto}.tools button{font-size:10px;padding:5px;min-height:38px}.dispatch{max-height:none}#orders{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:0 16px}.dpad{display:flex;right:12px;bottom:10px}.dpad button{width:46px;height:46px;min-height:46px}.scene-badge{padding:5px 8px;top:8px;left:8px}.scene-badge span{display:none}.overlay{backdrop-filter:none}.briefing{padding:12px}.modal{max-height:100%;overflow:auto}
}

.cargo-next{min-width:0}#cargo-queue{display:flex;align-items:center;gap:5px}.cargo-step{display:grid;grid-template-columns:19px auto;align-items:center;gap:0 5px;padding:4px 7px;background:#173343;border:1px solid #3f5969;border-radius:6px}.cargo-step.next{border-color:#b7d7bd;background:#284b50}.cargo-step b{font-size:11px;font-weight:600}.cargo-step time{grid-column:2;font:11px monospace;color:#c3d4dc}.material-icon{width:18px;height:15px;display:block;grid-row:1/3;clip-path:polygon(0 100%,24% 37%,39% 51%,63% 0,100% 100%)}.material-icon.sand{background:linear-gradient(135deg,#f5d991,#c59847)}.material-icon.gravel{background:repeating-linear-gradient(135deg,#b6c3cb 0 4px,#7c8d99 4px 6px);clip-path:polygon(0 100%,0 69%,28% 25%,44% 39%,69% 0,89% 39%,100% 100%)}.dashboard .cargo-more{margin-left:0;font-size:11px;color:#c5dacd}.dashboard .cargo-complete{margin-left:0;font-size:12px;color:#b7d7bd}@media(max-width:600px){.cargo-next{flex:1 1 210px}.cargo-step{padding:3px 5px}.dashboard{gap:9px 12px}}@media(orientation:landscape) and (max-height:600px){.dashboard .cargo-next{flex:0 0 auto}.cargo-step{padding:2px 4px}.cargo-step b,.cargo-step time{font-size:10px}}

#map-pause{position:absolute;right:10px;top:10px;z-index:6;background:#173b4ff2;border:1px solid #b1d6dc;color:#f2fbff;font-weight:700;font-size:13px;padding:9px 13px;min-height:44px;touch-action:manipulation}

#bonus-status{position:absolute;left:50%;bottom:12px;transform:translateX(-50%);z-index:2;max-width:45%;padding:6px 9px;border:1px solid #87cbb4;border-radius:6px;background:#143742ed;color:#d5ffe7;font-size:12px;text-align:center;pointer-events:none}@media(max-width:600px){#bonus-status{bottom:138px;max-width:85%;width:max-content;font-size:11px}}

/* Modern lightweight game surface */
.scene{border-color:#65848b;background:#8cab87;box-shadow:0 10px 28px #020e192b}.dashboard{column-gap:20px}.dispatch{background:linear-gradient(145deg,#213d4c,#142c3b);border-color:#395966}.gamehead{background:linear-gradient(110deg,#102735,#1b3a49)}.order{border-color:#44616d}.scene-badge{background:#173543e8;border:1px solid #759d9c55}.dpad button{background:#173d50e8;border-color:#aacbd0;border-radius:11px}.game-invitation{background:linear-gradient(110deg,#315557,#203d4e)}
