:root{--bg: #0f1216;--panel: rgba(18, 21, 27, .92);--panel-solid: #171b22;--line: rgba(255, 255, 255, .09);--text: #e8ebf0;--muted: #98a2b3;--accent: #2f80ed;--accent-2: #56ccf2;--ok: #4cc38a;--warn: #f2b84b;--danger: #eb5757;--hp: #eb5757;--hunger: #f2994a;--energy: #f2c94c;--mood: #bb6bd9;--radius: 12px;--gutter: 16px;--safe-b: env(safe-area-inset-bottom, 0px);--safe-t: env(safe-area-inset-top, 0px)}*{box-sizing:border-box}html,body{margin:0;height:100%;overflow:hidden;background:var(--bg);color:var(--text)}body{font:15px/1.4 system-ui,-apple-system,Segoe UI,Roboto,sans-serif;-webkit-text-size-adjust:100%;touch-action:none;overscroll-behavior:none}#game-canvas{position:fixed;inset:0;width:100%;height:100%;display:block;outline:none}#ui-root{position:fixed;inset:0;pointer-events:none}#ui-root>*{pointer-events:auto}[hidden]{display:none!important}kbd.key{display:inline-block;min-width:24px;padding:2px 7px;margin-right:8px;text-align:center;border:1px solid var(--line);border-bottom-width:3px;border-radius:6px;background:#2a2f38;font:inherit;font-weight:600}.btn{min-height:44px;padding:10px 16px;border:1px solid var(--line);border-radius:10px;background:#262b34;color:var(--text);font:inherit;font-weight:600;cursor:pointer;touch-action:manipulation}.btn:hover{background:#2f3540}.btn:disabled{opacity:.45;cursor:not-allowed}.btn-primary{background:var(--accent);border-color:transparent}.btn-primary:hover{background:#3b8bf2}.btn-danger{background:var(--danger);border-color:transparent}.btn-link{background:none;border:none;color:var(--accent-2);min-height:36px}.btn-small{min-height:36px;padding:6px 12px;font-size:13px}.btn-big{min-height:56px;font-size:18px;width:100%}.btn-wide{width:100%}.btn-icon{min-width:44px;padding:0}.input{width:100%;min-height:44px;padding:10px 12px;border:1px solid var(--line);border-radius:10px;background:#0d1014;color:var(--text);font:inherit}.input:focus{outline:2px solid var(--accent);outline-offset:1px}select.input{appearance:auto}.checkbox{width:22px;height:22px;accent-color:var(--accent)}.row{display:flex;gap:10px;align-items:center}.row.wrap{flex-wrap:wrap}.row.between{justify-content:space-between}.muted{color:var(--muted)}.small{font-size:13px}.pill{display:inline-block;padding:4px 10px;border-radius:999px;background:#262b34;font-size:13px}.pill-accent{background:#2f80ed40;color:var(--accent-2)}.form-error{color:var(--danger);min-height:1.4em;margin:4px 0;font-size:14px}.section-title{font-size:13px;text-transform:uppercase;letter-spacing:.08em;color:var(--muted);margin:18px 0 8px}.kv{display:grid;gap:6px;margin:10px 0}.kv-row{display:flex;justify-content:space-between}.kv-k{color:var(--muted)}.list-card{padding:12px;border:1px solid var(--line);border-radius:var(--radius);background:#ffffff08;margin-bottom:10px}.list-card .btn{margin-top:8px}.list-card.row .btn{margin-top:0}.list-title{font-weight:600}.field{display:block;margin:12px 0}.field-label{display:block;margin-bottom:6px;color:var(--muted);font-size:13px}.field-inline{display:flex;align-items:center;gap:10px}.field-inline .field-label{margin:0;color:var(--text);font-size:15px}.overlay{position:fixed;inset:0;display:flex;padding:var(--gutter);background:#080a0ec7;backdrop-filter:blur(4px)}.overlay-center{align-items:center;justify-content:center}.card{width:100%;max-width:380px;padding:24px;border-radius:16px;background:var(--panel-solid);border:1px solid var(--line);box-shadow:0 20px 60px #00000080}.card-title{margin:0 0 14px;font-size:20px}.brand{margin:0 0 6px;font-size:28px;letter-spacing:-.02em}.login-card .input{margin-bottom:10px}.login-card .btn-wide{margin-top:4px}.loading .card{text-align:center}#ui-root>.hud,.hud>*{pointer-events:none}.hud{position:fixed;inset:0}.hud-bars{position:absolute;left:var(--gutter);top:calc(var(--gutter) + var(--safe-t));display:grid;gap:5px;padding:10px 12px;border-radius:var(--radius);background:var(--panel);min-width:190px}.bar{display:grid;grid-template-columns:48px 1fr 30px;align-items:center;gap:8px;font-size:12px}.bar-label{color:var(--muted)}.bar-track{height:8px;border-radius:4px;background:#ffffff1a;overflow:hidden}.bar-fill{height:100%;border-radius:4px;transition:width .3s}.bar-fill.low{animation:pulse 1s infinite alternate}.bar-hp .bar-fill{background:var(--hp)}.bar-hunger .bar-fill{background:var(--hunger)}.bar-energy .bar-fill{background:var(--energy)}.bar-mood .bar-fill{background:var(--mood)}.bar-value{text-align:right;font-variant-numeric:tabular-nums}@keyframes pulse{0%{opacity:1}to{opacity:.45}}.hud-money{position:absolute;right:var(--gutter);top:calc(var(--gutter) + var(--safe-t));text-align:right;padding:10px 14px;border-radius:var(--radius);background:var(--panel);font-variant-numeric:tabular-nums}.money-cash{font-size:20px;font-weight:700;color:var(--ok)}.money-bank{font-size:12px;color:var(--muted)}.hud-clock{position:absolute;left:50%;top:calc(var(--gutter) + var(--safe-t));transform:translate(-50%);padding:6px 14px;border-radius:999px;background:var(--panel);font-weight:600;font-variant-numeric:tabular-nums;white-space:nowrap}.hud-prompt{position:absolute;left:50%;bottom:calc(120px + var(--safe-b));transform:translate(-50%);padding:10px 16px;border-radius:var(--radius);background:var(--panel);border:1px solid var(--line);font-weight:600;white-space:nowrap;max-width:calc(100vw - 2 * var(--gutter));overflow:hidden;text-overflow:ellipsis}.hud-conn{position:absolute;right:var(--gutter);bottom:calc(var(--gutter) + var(--safe-b));font-size:12px;color:var(--muted);padding:4px 10px;border-radius:999px;background:var(--panel)}.hud-conn:before{content:"";display:inline-block;width:8px;height:8px;border-radius:50%;margin-right:6px;background:var(--muted)}.conn-online:before{background:var(--ok)}.conn-connecting:before,.conn-lost:before{background:var(--warn)}.toasts{position:fixed;left:50%;top:calc(64px + var(--safe-t));transform:translate(-50%);display:grid;gap:8px;width:min(420px,calc(100vw - 2 * var(--gutter)));z-index:50;pointer-events:none}.toast{pointer-events:auto;padding:10px 14px;border-radius:10px;background:var(--panel-solid);border-left:4px solid var(--accent);box-shadow:0 8px 24px #0006;animation:toast-in .2s ease-out;font-size:14px}.toast-success{border-color:var(--ok)}.toast-warn{border-color:var(--warn)}.toast-error{border-color:var(--danger)}.toast-out{opacity:0;transition:opacity .25s}@keyframes toast-in{0%{opacity:0;transform:translateY(-6px)}}.chat{position:fixed;left:var(--gutter);bottom:calc(var(--gutter) + var(--safe-b));width:min(380px,calc(100vw - 2 * var(--gutter)));display:grid;gap:6px;transition:opacity .6s}.chat.idle{opacity:.35}.chat-log{max-height:160px;overflow-y:auto;padding:8px 10px;border-radius:var(--radius);background:var(--panel);font-size:13px;scrollbar-width:thin}.chat-log:empty{display:none}.chat-line{margin:2px 0;word-break:break-word}.chat-name{color:var(--accent-2);font-weight:600}.chat-global .chat-name{color:var(--warn)}.chat-system{color:var(--muted);font-style:italic}.chat-row{display:flex;gap:6px}.chat-row .input{min-height:40px;background:var(--panel)}.chat-channel{min-width:64px}.chat-channel.global{color:var(--warn)}.phone,.sheet{position:fixed;left:0;right:0;bottom:0;max-height:75vh;display:flex;flex-direction:column;background:var(--panel-solid);border-top:1px solid var(--line);border-radius:18px 18px 0 0;box-shadow:0 -10px 40px #00000080;padding-bottom:var(--safe-b);z-index:20;animation:sheet-in .2s ease-out}@keyframes sheet-in{0%{transform:translateY(24px);opacity:0}}.phone-head{display:flex;align-items:center;justify-content:space-between;padding:10px var(--gutter);border-bottom:1px solid var(--line)}.phone-title{font-weight:700;font-size:17px}.phone-tabs{display:flex;gap:4px;padding:8px var(--gutter) 0;border-bottom:1px solid var(--line)}.phone-tab{flex:1;min-height:44px;border:none;border-bottom:3px solid transparent;background:none;color:var(--muted);font:inherit;font-weight:600;cursor:pointer;position:relative}.phone-tab.active{color:var(--text);border-bottom-color:var(--accent)}.phone-tab.badge:after{content:"";position:absolute;top:8px;right:12px;width:8px;height:8px;border-radius:50%;background:var(--ok)}.phone-content,.sheet-body{overflow-y:auto;padding:var(--gutter)}.tab-job .btn-big{margin-top:14px}.stats-header{margin-bottom:6px}.stats-name{font-size:18px;font-weight:700}.stat-list{display:grid;gap:10px}.stat-top{display:flex;justify-content:space-between;font-size:14px}.stat-track{position:relative;height:8px;margin:4px 0;border-radius:4px;background:#ffffff1a}.stat-fill{height:100%;border-radius:4px;background:linear-gradient(90deg,var(--accent),var(--accent-2))}.tier-mark{position:absolute;top:-3px;width:2px;height:14px;background:#ffffff59;transform:translate(-1px)}.tier-mark.reached{background:var(--ok)}.stat-today{font-size:12px;color:var(--muted)}.stat-today.capped{color:var(--warn)}.balance{font-size:18px;font-weight:700;font-variant-numeric:tabular-nums}.tab-bank .row{margin-top:10px}.stats-overlay{position:fixed;left:var(--gutter);top:calc(130px + var(--safe-t));margin:0;padding:8px 10px;border-radius:8px;background:#0009;color:#cde;font:12px/1.5 ui-monospace,Menlo,Consolas,monospace;pointer-events:none;z-index:40}.touch-layer{position:fixed;inset:0;pointer-events:none;z-index:10}.touch-zone{position:absolute;top:25%;bottom:0;width:50%;pointer-events:auto}.touch-zone-left{left:0}.touch-zone-right{right:0}.stick-ring{position:absolute;width:112px;height:112px;border-radius:50%;border:2px solid rgba(255,255,255,.35);background:#ffffff14;pointer-events:none}.stick-knob{position:absolute;left:32px;top:32px;width:48px;height:48px;border-radius:50%;background:#fff9}.touch-buttons{position:absolute;right:var(--gutter);bottom:calc(56px + var(--safe-b));display:grid;gap:10px;pointer-events:auto}.tbtn{min-width:72px;min-height:56px;padding:0 14px;border-radius:14px;border:1px solid var(--line);background:var(--panel);color:var(--text);font:inherit;font-weight:700;touch-action:manipulation;user-select:none;-webkit-user-select:none}.tbtn.active{background:var(--accent)}.tbtn-row{display:flex;gap:10px;justify-content:flex-end}.tbtn-row[hidden]{display:none}.tbtn-row .tbtn{flex:1 1 0;min-width:64px;padding:0 8px}.tbtn-interact{background:var(--accent);border-color:transparent;max-width:220px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}@media(min-width:900px)and (hover:hover){.phone,.sheet{left:auto;right:var(--gutter);top:calc(80px + var(--safe-t));bottom:calc(80px + var(--safe-b));width:400px;max-height:none;border-radius:16px;border:1px solid var(--line)}.hud-prompt{bottom:110px}.touch-layer{display:none}}@media(max-width:480px){.hud-clock{left:auto;right:var(--gutter);transform:none;top:calc(var(--gutter) + var(--safe-t) + 66px);font-size:13px}.hud-bars{min-width:150px;padding:8px 10px}.bar{grid-template-columns:40px 1fr 26px}.money-cash{font-size:16px}.chat{width:min(300px,calc(100vw - 2 * var(--gutter) - 90px))}.chat-log{max-height:100px}}.phone-tabs{overflow-x:auto;scrollbar-width:none}.phone-tab{flex:1 0 auto;min-width:64px;padding:0 8px;font-size:14px}.pill-danger{background:#eb57574d;color:#ffb3b3}.swatches{display:flex;flex-wrap:wrap;gap:8px;margin:6px 0 10px}.swatch{width:36px;height:36px;border-radius:50%;border:2px solid rgba(255,255,255,.25);padding:0;cursor:pointer;touch-action:manipulation}.swatch.selected{border-color:#fff;box-shadow:0 0 0 2px var(--accent)}.slider{width:100%;margin:10px 0;accent-color:var(--accent)}.dealer-head{display:flex;flex-wrap:wrap;gap:4px 12px;align-items:baseline;justify-content:space-between;margin-bottom:6px}.dealer-cash{font-weight:700;color:#6fdc8c}.dealer-top{align-items:flex-start}.dealer-name{display:flex;flex-direction:column;gap:2px;min-width:0;overflow-wrap:anywhere}.dealer-price{flex:0 0 auto;font-weight:600;white-space:nowrap}.dealer-stats{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:6px;margin:10px 0 4px}.dealer-stat{display:flex;flex-direction:column;gap:1px;min-width:0;padding:6px 8px;border-radius:8px;background:#ffffff0a}.dealer-stat-label{font-size:11px;letter-spacing:.04em;text-transform:uppercase;color:var(--muted)}.dealer-stat-value{font-weight:600;font-size:14px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.dealer-locked{border-color:#eb575747}.dealer-locked .dealer-name,.dealer-locked .dealer-stats,.dealer-locked .swatches{opacity:.6}.dealer-locked .btn:disabled{opacity:1;background:#eb575729;color:#ffb3b3;border-color:#eb57574d}.hud-vehicle{position:absolute;right:var(--gutter);bottom:calc(60px + var(--safe-b));min-width:170px;padding:10px 14px;border-radius:var(--radius);background:var(--panel);display:grid;gap:6px}.speedo{display:flex;align-items:baseline;gap:6px;font-variant-numeric:tabular-nums}.speedo-value{font-size:34px;font-weight:800;line-height:1}.speedo-unit{color:var(--muted);font-size:13px}.vehicle-role{margin-top:-2px}.vbar{display:grid;grid-template-columns:44px 1fr 40px;align-items:center;gap:8px;font-size:12px}.vbar-fuel .bar-fill{background:var(--warn)}.vbar-cond .bar-fill{background:var(--accent-2)}#ui-root>.hud-combat,.hud-combat>*{pointer-events:none}.hud-combat{position:fixed;inset:0}.hud-combat .hud-actions,.hud-combat .hud-actions .btn{pointer-events:auto}.crosshair{position:absolute;left:50%;top:50%;width:18px;height:18px;transform:translate(-50%,-50%);border:2px solid rgba(255,255,255,.85);border-radius:50%;box-shadow:0 0 0 1px #00000080}.crosshair:after{content:"";position:absolute;left:50%;top:50%;width:3px;height:3px;transform:translate(-50%,-50%);background:#fff;border-radius:50%}.hit-flash{position:absolute;inset:0;opacity:0}.hit-flash.flash-red{animation:flash-red .22s ease-out}.hit-flash.flash-white{animation:flash-white .18s ease-out}@keyframes flash-red{0%{opacity:1;box-shadow:inset 0 0 120px 40px #eb2828bf}to{opacity:0;box-shadow:inset 0 0 160px 60px #eb282800}}@keyframes flash-white{0%{opacity:.55;background:#fff}to{opacity:0;background:#fff}}.hud-status{position:absolute;left:50%;top:calc(var(--gutter) + var(--safe-t) + 44px);transform:translate(-50%);display:flex;gap:8px;align-items:center;white-space:nowrap}.wanted-stars{font-size:20px;letter-spacing:2px;color:var(--muted);text-shadow:0 1px 4px rgba(0,0,0,.6)}.wanted-stars.hot,.hud-status .wanted-stars{color:var(--warn)}.hud-weapon{position:absolute;left:var(--gutter);top:calc(var(--gutter) + var(--safe-t) + 118px);padding:4px 10px;border-radius:999px;background:var(--panel);font-size:12px;color:var(--muted)}.hud-weapon.masked{color:var(--warn)}.hud-channel{position:absolute;left:50%;bottom:calc(180px + var(--safe-b));transform:translate(-50%);width:min(320px,calc(100vw - 2 * var(--gutter)));padding:8px 12px;border-radius:var(--radius);background:var(--panel);display:grid;gap:6px}.hud-channel .bar-fill{background:var(--accent-2);transition:none}.hud-actions{position:absolute;left:50%;bottom:calc(176px + var(--safe-b));transform:translate(-50%);display:flex;gap:10px}.hud-actions .btn:hidden{display:none}.downed{position:fixed;left:50%;top:calc(90px + var(--safe-t));transform:translate(-50%);width:min(420px,calc(100vw - 2 * var(--gutter)));z-index:30}.downed-card{padding:16px;border-radius:16px;background:#3c0a0ee6;border:1px solid rgba(235,87,87,.5);box-shadow:0 16px 40px #00000080}.downed-title{font-size:20px;font-weight:800;color:#ffb3b3}.downed-count{font-variant-numeric:tabular-nums;font-weight:600;margin:4px 0 6px}.downed .row{margin-top:8px}.tbtn-attack{background:#eb5757bf;border-color:transparent}.tbtn-brake{background:#f2b84bcc;color:#1a1a1a;border-color:transparent}@media(min-width:900px)and (hover:hover){.hud-vehicle{right:auto;left:50%;transform:translate(-50%);bottom:24px;min-width:240px}.hud-actions{bottom:170px}.hud-channel{bottom:220px}}@media(max-width:480px){.hud-vehicle{right:var(--gutter);bottom:calc(240px + var(--safe-b));min-width:140px;padding:8px 10px}.speedo-value{font-size:26px}.hud-status{top:calc(var(--gutter) + var(--safe-t) + 100px)}.hud-weapon{top:calc(var(--gutter) + var(--safe-t) + 128px)}}.hud-prompt-vehicle{bottom:calc(168px + var(--safe-b))}.hud-prompt.with-vehicle{bottom:calc(120px + var(--safe-b))}@media(min-width:900px)and (hover:hover){.hud-prompt-vehicle{bottom:158px}}@media(max-width:480px){.hud-actions{left:var(--gutter);right:auto;transform:none;bottom:calc(110px + var(--safe-b));flex-direction:column;align-items:flex-start}}.chat-radio .chat-name{color:#7ee0a3}.chat-radio .chat-text{color:#d6f5e3}.chat-channel.radio{color:#7ee0a3;border-color:#7ee0a380}#ui-root>.hud-self,.hud-self>*{pointer-events:none}.hud-self{position:fixed;inset:0}.duty-block{position:absolute;left:50%;top:calc(var(--gutter) + var(--safe-t) + 44px);transform:translate(-50%);text-align:center;white-space:nowrap}.duty-badge{display:inline-block;padding:3px 12px;border-radius:999px;font-weight:800;letter-spacing:.12em;font-size:13px}.duty-police{background:#2f80ed59;color:#cfe3ff;border:1px solid rgba(143,193,255,.5)}.duty-ems{background:#eb57574d;color:#ffd0d0;border:1px solid rgba(255,154,154,.5)}.duty-hint{color:var(--muted);margin-top:2px;font-size:11px;max-width:calc(100vw - 2 * var(--gutter));overflow:hidden;text-overflow:ellipsis}.self-pills{position:absolute;left:50%;top:calc(var(--gutter) + var(--safe-t) + 96px);transform:translate(-50%);display:flex;gap:8px;white-space:nowrap}.self-pill{font-weight:800;letter-spacing:.06em;animation:pulse .9s infinite alternate}.star-burst{position:absolute;left:50%;top:calc(var(--gutter) + var(--safe-t) + 54px);width:0;height:0}.burst-star{position:absolute;left:0;top:0;color:var(--warn);font-size:26px;text-shadow:0 0 10px rgba(242,184,75,.9);animation:burst 1.1s ease-out forwards;transform:rotate(calc(var(--i) * 60deg)) translateY(0)}@keyframes burst{0%{opacity:1;transform:rotate(calc(var(--i) * 60deg)) translateY(0) scale(.6)}to{opacity:0;transform:rotate(calc(var(--i) * 60deg)) translateY(-90px) scale(1.4)}}#game-canvas.shake{animation:shake .45s linear}@keyframes shake{0%,to{transform:translate(0)}20%{transform:translate(-7px,4px)}40%{transform:translate(6px,-5px)}60%{transform:translate(-5px,-3px)}80%{transform:translate(4px,5px)}}.target-card{position:fixed;left:var(--gutter);bottom:calc(196px + var(--safe-b));width:min(320px,calc(100vw - 2 * var(--gutter)));padding:10px 12px;border-radius:var(--radius);background:var(--panel);border:1px solid var(--line);z-index:15;display:grid;gap:8px}.target-head{display:grid;gap:4px}.target-name{font-weight:700;font-size:15px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.target-meta{gap:8px}.target-status{font-weight:700}.status-downed{background:#eb57574d;color:#ffb3b3}.status-cuffed{background:#f2b84b4d;color:#ffe0a6}.status-stunned{background:#f2c94c4d;color:#fff0b3}.status-handsUp{background:#4cc38a4d;color:#b8f0d0}.target-actions{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}.target-btn .btn{width:100%;display:flex;align-items:center;justify-content:center;gap:4px;padding:8px 10px;font-size:14px}.target-btn .btn kbd.key{margin-right:2px;min-width:20px;padding:0 5px;font-size:12px}.target-reason{font-size:11px;color:var(--muted);margin-top:2px;line-height:1.25}.ticket-picker{display:grid;gap:6px}.ticket-list{display:grid;gap:6px;max-height:220px;overflow-y:auto}.ticket-row{display:flex;justify-content:space-between;gap:8px;width:100%;text-align:left}.ticket-meta{color:var(--warn);font-weight:600;white-space:nowrap}.dispatch{position:fixed;left:var(--gutter);top:calc(var(--gutter) + var(--safe-t) + 152px);width:280px;max-height:40vh;display:flex;flex-direction:column;border-radius:var(--radius);background:var(--panel);border:1px solid var(--line);z-index:12}.dispatch-head{display:flex;align-items:center;justify-content:space-between;padding:6px 8px 6px 12px;border-bottom:1px solid var(--line)}.dispatch.collapsed .dispatch-head{border-bottom:none}.dispatch-title{font-weight:700;font-size:13px;text-transform:uppercase;letter-spacing:.08em}.dispatch-list{overflow-y:auto;padding:6px;display:grid;gap:6px;scrollbar-width:thin}.dispatch-empty{margin:6px}.dispatch-row{display:grid;grid-template-columns:34px 1fr auto;align-items:center;gap:8px;padding:8px;border-radius:10px;background:#ffffff08;border:1px solid transparent;cursor:pointer;min-height:48px}.dispatch-row:hover{background:#ffffff12}.dispatch-row.selected{border-color:var(--accent);background:#2f80ed26}.dispatch-icon{font-size:16px;text-align:center;color:var(--accent-2);line-height:1;letter-spacing:-1px}.kind-warrant .dispatch-icon{color:var(--warn);font-size:12px}.kind-downed .dispatch-icon{color:var(--danger);font-size:20px}.dispatch-name{font-weight:600;font-size:14px}.dispatch-ack{min-height:36px}.dispatch-taken{font-size:11px;white-space:nowrap}.dispatch-chip{position:fixed;left:var(--gutter);top:calc(var(--gutter) + var(--safe-t) + 152px);z-index:12;min-height:40px}.dispatch-chip.has-calls{border-color:var(--accent);color:var(--accent-2)}.dispatch-chip.active{background:var(--accent);color:#fff}.dispatch.dispatch-sheet{inset:auto 0 0;width:auto;max-height:60vh;border-radius:18px 18px 0 0;background:var(--panel-solid);padding-bottom:var(--safe-b);z-index:20;animation:sheet-in .2s ease-out}.dispatch-sheet .dispatch-head,.dispatch-sheet .dispatch-list{padding:10px var(--gutter)}.waypoint{position:fixed;left:50%;top:calc(var(--gutter) + var(--safe-t) + 40px);transform:translate(-50%);display:flex;align-items:center;gap:8px;padding:4px 12px;border-radius:999px;background:var(--panel);border:1px solid rgba(47,128,237,.6);font-size:13px;font-weight:600;white-space:nowrap;z-index:11;cursor:pointer}.waypoint-arrow{display:inline-block;color:var(--accent-2);font-size:18px;line-height:1;transition:transform .1s linear}.booked{z-index:60}.booked-card .list-card{margin-bottom:6px;padding:8px 12px}.booked-card .btn-wide{margin-top:12px}.jail{position:fixed;left:50%;top:calc(90px + var(--safe-t));transform:translate(-50%);width:min(400px,calc(100vw - 2 * var(--gutter)));z-index:30}.jail-card{padding:14px 16px;border-radius:16px;background:#1c1e28f0;border:1px solid rgba(242,184,75,.45);box-shadow:0 16px 40px #00000080;display:grid;gap:6px}.jail-title{font-size:13px;font-weight:800;letter-spacing:.12em;text-transform:uppercase;color:var(--warn)}.jail-remaining{font-size:24px;font-weight:800;font-variant-numeric:tabular-nums}.jail-track{height:6px}.jail-track .bar-fill{background:var(--warn)}.jail-card p{margin:0}.jail-card .btn-wide{margin-top:6px}@media(min-width:900px)and (hover:hover){.target-card{left:auto;right:var(--gutter);bottom:56px;width:340px}.self-pills{top:calc(var(--gutter) + var(--safe-t) + 84px)}.hud-status{top:calc(var(--gutter) + var(--safe-t) + 20px)}}@media(max-width:480px){.duty-block{top:calc(var(--gutter) + var(--safe-t) + 100px)}.duty-hint{display:none}.self-pills{top:calc(var(--gutter) + var(--safe-t) + 128px)}.star-burst{top:calc(var(--gutter) + var(--safe-t) + 110px)}.dispatch-chip{top:calc(var(--gutter) + var(--safe-t) + 160px)}.target-card{bottom:calc(170px + var(--safe-b));width:calc(100vw - 2 * var(--gutter) - 160px);padding:8px 10px}.tbtn-interact{max-width:150px}.target-actions{grid-template-columns:1fr}.waypoint{top:calc(var(--gutter) + var(--safe-t) + 66px);left:var(--gutter);transform:none;font-size:12px}}.lot-card{position:fixed;left:var(--gutter);bottom:calc(196px + var(--safe-b));width:min(340px,calc(100vw - 2 * var(--gutter)));padding:10px 12px;border-radius:var(--radius);background:var(--panel);border:1px solid var(--line);z-index:14;display:grid;gap:8px}.lot-title{font-weight:700;font-size:14px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.lot-badges{display:flex;flex-wrap:wrap;gap:6px}.lot-badge{font-size:12px;font-weight:600}.badge-yours{background:#4cc38a4d;color:#b8f0d0}.badge-owner{background:#2f80ed40;color:var(--accent-2)}.badge-state{background:#ffffff14;color:var(--text)}.badge-sale{background:#f2b84b4d;color:#ffe0a6}.badge-private{background:#eb57574d;color:#ffb3b3}.badge-building{background:#bb6bd940;color:#e4c3f0}.lot-actions{display:flex;flex-wrap:wrap;gap:6px}.lot-actions .btn{flex:1 1 auto}.lot-card.compact{padding:8px 10px;gap:6px}.lot-card.compact .lot-title{font-size:13px}.lot-card.compact .lot-actions .btn{min-height:36px;padding:4px 10px;font-size:13px}.sheet-tabs{display:flex;gap:4px;margin:-6px 0 10px;border-bottom:1px solid var(--line)}.sheet-tabs .phone-tab{flex:1 1 0;min-width:0}.land-filters{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin-bottom:10px}.land-filters .input:last-child{grid-column:1 / -1}.land-row .pill-accent{white-space:nowrap}.pager{margin-top:6px}.pager:empty{display:none}.lot-sheet-badges{margin-bottom:4px}.survey-lines{margin:4px 0 8px;padding-left:18px;font-size:14px;display:grid;gap:2px}.permit-lots{margin-bottom:8px}.blueprint.ineligible .list-title{color:var(--muted)}.tab-land .list-card .row.wrap .btn{margin-top:0}.tab-land .list-card .row.wrap{margin-top:8px}@media(min-width:900px)and (hover:hover){.lot-card{bottom:230px;width:360px}.land-filters{grid-template-columns:1fr 1fr 1fr}.land-filters .input:last-child{grid-column:auto}}@media(max-width:480px){.lot-card{bottom:calc(300px + var(--safe-b));width:calc(100vw - 2 * var(--gutter) - 160px)}.lot-actions .btn{flex:1 1 100%}}.site-progress{height:10px;margin:8px 0 6px}.material-row .btn-small{white-space:nowrap}.material-row .list-title,.menu-row .list-title,.restock-row .list-title{overflow-wrap:anywhere}.biz-badge{font-size:12px;font-weight:700;letter-spacing:.04em}.badge-open{background:#4cc38a4d;color:#b8f0d0}.badge-closed{background:#eb57574d;color:#ffb3b3}.buy-row{gap:6px;flex-shrink:0}.buy-row .btn{margin-top:0}.tab-business .biz-head{margin:-6px 0 4px}.tab-business .biz-head .btn-link{padding-left:0}.biz-input-row{gap:8px;margin:6px 0}.biz-input-row .input{flex:1 1 auto;min-width:0}.biz-input-row .btn{margin-top:0;white-space:nowrap}.price-row .row.between{margin-bottom:2px}.stock-bar{margin:6px 0 10px}.stock-bar .stat-top{font-size:14px}.stock-bar .stat-fill.empty{background:var(--danger);min-width:2px}.staff-grid{display:grid;grid-template-columns:1fr 1fr;gap:10px}.staff-grid .field{margin:6px 0}.staff-grid .input{width:100%}.tab-business .list-card .btn-small{margin-top:8px}.tab-business .list-card.row .btn-small,.tab-business .restock-row .btn-small{margin-top:0}@media(max-width:380px){.staff-grid{grid-template-columns:1fr}}.ind-subtitle{margin:12px 0 6px;font-size:14px;font-weight:600;color:var(--muted)}.ind-status{margin:4px 0 8px}.ind-status .stat-top{font-size:14px}.ind-status .stat-fill.idle{background:var(--warn)}.ind-idle{display:inline-block;margin-top:6px}.ind-deposit{margin:2px 0 6px}.ind-total{margin-top:10px}.ind-picker{gap:6px}.ind-picker .btn{margin-top:0}.ind-vehicle{margin:8px 0}.ind-vehicle .input{width:100%}.recipe-row.selected{border-color:var(--accent)}.recipe-row .row.between{margin-bottom:2px}.stat-fill.full{background:var(--danger)}.storage-row .stat-top{font-size:14px}.storage-row .list-title{overflow-wrap:anywhere}.qty-row{gap:8px;margin-top:8px;align-items:center;flex-wrap:wrap}.qty-row .btn{margin-top:0;white-space:nowrap}.qty-input{width:84px;flex:0 0 auto;min-width:0;text-align:right;font-variant-numeric:tabular-nums}.qty-reason{flex:1 1 auto}.cargo-row{gap:8px}.cargo-row .qty-row{margin-top:0;flex-shrink:0;flex-wrap:nowrap}.cargo-row .list-title{overflow-wrap:anywhere}.depot-row .row.between{align-items:flex-start;gap:8px}.depot-row .row.between .btn{margin-top:0;flex-shrink:0}.depot-truck-row{border-top:1px dashed var(--line);padding-top:8px}.vbar-cargo .bar-fill.full{background:var(--danger)}.hud-cargo-btn{position:absolute;left:50%;bottom:calc(216px + var(--safe-b));transform:translate(-50%);margin:0;min-height:34px;white-space:nowrap;max-width:calc(100vw - 2 * var(--gutter));overflow:hidden;text-overflow:ellipsis}@media(min-width:900px)and (hover:hover){.hud-cargo-btn{bottom:206px}}.garage-cargo{margin-top:2px}@media(max-width:380px){.cargo-row{flex-direction:column;align-items:stretch}.cargo-row .qty-row{justify-content:flex-end}.qty-input{width:72px}}.phone-tabs{overflow-x:auto;scrollbar-width:none;-webkit-overflow-scrolling:touch}.phone-tabs::-webkit-scrollbar{display:none}.phone-tabs .phone-tab{flex:1 0 auto;min-width:72px;padding:0 10px;white-space:nowrap}.market-nav{display:flex;gap:4px;margin:-6px 0 10px;border-bottom:1px solid var(--line)}.market-nav .phone-tab{flex:1 1 0;min-width:0;min-height:40px}.market-filters{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin-bottom:10px;align-items:center}.market-filters .btn{margin:0;grid-column:1 / -1}.market-status{margin:0 0 8px}.market-row .row.between{align-items:flex-start;gap:8px}.market-row .list-title{overflow-wrap:anywhere}.market-title{gap:8px;min-width:0}.market-side{font-size:11px;font-weight:700;letter-spacing:.06em;padding:3px 8px;flex-shrink:0}.market-side-sell{background:#4cc38a4d;color:#b8f0d0}.market-side-buy{background:#f2b84b4d;color:#ffe0a6}.market-row.side-sell{border-left:3px solid rgba(76,195,138,.6)}.market-row.side-buy{border-left:3px solid rgba(242,184,75,.6)}.market-row.mine{border-left-color:var(--accent)}.market-row .btn-danger,.market-deliver{margin-top:8px}.market-deliver .input:not(.qty-input){width:100%}.market-deliver .qty-row{margin-top:6px}.market-form{display:grid;grid-template-columns:1fr;gap:0 12px}.market-form .field{margin:8px 0}.market-form .input{width:100%}.market-form .qty-input{width:100%;text-align:left}.market-preview,.market-quote{margin:4px 0 8px;min-height:1.4em}.tab-market .btn-wide{margin-top:4px}.haul-row.delivered{opacity:.7}.haul-eta{white-space:nowrap;font-variant-numeric:tabular-nums;flex-shrink:0}@media(min-width:520px){.market-filters{grid-template-columns:1fr 1fr auto}.market-filters .btn{grid-column:auto}.market-form{grid-template-columns:1fr 1fr}}@media(max-width:380px){.market-row .qty-row{flex-wrap:wrap}.qty-input{width:72px}}.sheet-tabs.scroll{overflow-x:auto;scrollbar-width:none}.sheet-tabs.scroll::-webkit-scrollbar{display:none}.sheet-tabs.scroll .phone-tab{flex:1 0 auto;min-width:72px;white-space:nowrap}.gov-phase{display:block;text-align:center;font-weight:600;padding:8px 12px;margin-bottom:4px}.gov-phase.phase-filing{background:#2f80ed40;color:var(--accent-2)}.gov-phase.phase-campaign{background:#f2b84b4d;color:#ffe0a6}.gov-phase.phase-voting{background:#4cc38a4d;color:#b8f0d0}.gov-phase.phase-closed{background:#ffffff14;color:var(--text)}.gov-office-head{margin:10px 0 6px}.gov-view .kv-row{gap:12px}.gov-view .kv-row>:last-child{text-align:right;overflow-wrap:anywhere}.candidate .btn{flex:0 0 auto}.candidate>div{min-width:0;overflow-wrap:anywhere}.gov-table{width:100%;border-collapse:collapse;font-size:14px;margin-top:8px}.gov-table th{text-align:left;font-weight:600;color:var(--muted);font-size:12px;text-transform:uppercase;letter-spacing:.06em}.gov-table th,.gov-table td{padding:6px 4px;border-bottom:1px solid var(--line)}.gov-table th:not(:first-child),.gov-table td.num{text-align:right;white-space:nowrap;font-variant-numeric:tabular-nums}.gov-table tr.total td{font-weight:600;border-bottom:none}.proposal.status-passed{border-color:#4cc38a80}.proposal.status-rejected,.proposal.status-expired{opacity:.75}.proposal .row{margin-top:4px}.gov-form{display:grid;gap:8px;padding:12px;border:1px solid var(--line);border-radius:var(--radius);background:#ffffff08;margin-bottom:10px}.gov-form .row>.input{flex:1 1 0;min-width:0}.gov-form .row>.gov-seat{flex:0 1 46%}.gov-range input[type=range]{flex:1 1 auto;min-width:0;min-height:36px;accent-color:var(--accent)}.gov-range .gov-num{flex:0 0 84px;width:84px}.gov-toggle{min-height:44px;cursor:pointer}.gov-toggle input{width:20px;height:20px;accent-color:var(--accent)}.board-input{width:100%;resize:vertical;min-height:72px;font:inherit}.board-text{margin:6px 0 2px;white-space:pre-wrap;overflow-wrap:anywhere}.auctions{margin-bottom:6px}.auction-status{margin-top:4px;color:#ffe0a6}.badge-auction{background:#f2b84b4d;color:#ffe0a6}@media(min-width:900px)and (hover:hover){.gov-form{padding:14px}}.pill.tone-warn{background:#f2b84b4d;color:#ffe0a6}.pill.tone-accent{background:#2f80ed40;color:var(--accent-2)}.pill.tone-ok{background:#4cc38a4d;color:#b8f0d0}.pill.tone-danger{background:#eb57574d;color:#ffb3b3}.pill.tone-muted{background:#ffffff14;color:var(--muted)}.court-head{margin-bottom:4px}.court-head .pill{font-weight:600}.court-case .row.between{align-items:flex-start;gap:8px}.court-case .list-title{min-width:0;overflow-wrap:anywhere}.court-case .pill{flex:0 0 auto;white-space:nowrap}.court-case>.small{margin-top:4px;overflow-wrap:anywhere}.court-form{display:grid;gap:8px;margin-top:10px;padding:12px;border:1px solid var(--line);border-radius:var(--radius);background:#ffffff08}.court-form .input{width:100%}.court-form .btn{margin-top:0}.court-form .form-error{margin:0}.court-form .form-error:empty{display:none}.court-form p{margin:0}.court-inputs{align-items:flex-end}.court-field{flex:1 1 0;min-width:0;display:block}.court-field .field-label{display:block;margin-bottom:4px;font-size:12px;color:var(--muted)}.court-range{width:100%;min-height:44px;accent-color:var(--accent)}.court-jobs{margin-top:6px}.custody .jail-remaining{font-size:22px}.custody .jail-card{max-height:calc(100vh - 200px - var(--safe-t));overflow-y:auto}.custody .court-form{margin-top:4px}.custody .form-error{min-height:0}.tab-contracts .contract .row.between{align-items:flex-start;gap:8px}.tab-contracts .contract .list-title{min-width:0;overflow-wrap:anywhere}.tab-contracts .contract .pill{flex:0 0 auto;white-space:nowrap}.tab-contracts .contract>.small{margin-top:4px;overflow-wrap:anywhere}.contract-text{white-space:pre-wrap;font-style:italic}.contract.status-cancelled,.contract.status-settled,.contract.status-completed{opacity:.8}.contract.highlight{border-color:var(--accent)}.contract-actions{margin-top:8px;gap:8px}.contract-actions .btn{margin-top:0;min-height:40px}.contract-form .contract-row{align-items:flex-end;gap:8px}.contract-form .contract-row .grow{flex:1 1 auto;min-width:0}.contract-form .contract-row .qty{flex:0 0 84px}.contract-form .form-error:empty{display:none}.contract-form textarea.input{min-height:56px}@media(min-width:900px)and (hover:hover){.court-form{padding:14px}.custody .jail-card{max-height:none}}.minimap{position:fixed;right:var(--gutter);top:calc(var(--gutter) + var(--safe-t) + 104px);width:100px;z-index:11}.minimap.covered{visibility:hidden}.minimap-face{display:block;width:100%;aspect-ratio:1;padding:0;border:1px solid rgba(255,255,255,.24);border-radius:var(--radius);overflow:hidden;background:#0b0e12;cursor:pointer;box-shadow:0 6px 18px #00000073;touch-action:manipulation}.minimap-face:focus-visible,.minimap-btn:focus-visible,.mapview-cat:focus-visible,.mapview-place:focus-visible{outline:2px solid var(--accent-2);outline-offset:2px}.minimap-canvas{display:block;width:100%;height:100%}.minimap-bar{display:none}.minimap-btn{flex:1 1 0;min-width:0;min-height:28px;padding:0 6px;border:1px solid var(--line);border-radius:8px;background:var(--panel);color:var(--text);font:inherit;font-size:13px;font-weight:700;line-height:1;cursor:pointer}.minimap-btn:hover{background:#2f3540}.minimap-open{flex:1.6 1 0}@media(min-width:481px){.minimap{top:calc(var(--gutter) + var(--safe-t) + 74px);width:132px}}@media(min-width:900px)and (hover:hover){.minimap{width:190px;z-index:9}.minimap-bar{display:flex;gap:4px;margin-top:4px}}@media(min-width:900px)and (hover:hover)and (max-height:640px){.minimap{width:150px}}@media(max-height:500px)and (hover:none){.minimap{top:calc(var(--gutter) + var(--safe-t));right:calc(var(--gutter) + 150px);width:84px}}@media(max-width:480px){.waypoint{top:calc(var(--gutter) + var(--safe-t) + 212px);left:auto;right:var(--gutter);max-width:64vw}.waypoint-text{min-width:0;overflow:hidden;text-overflow:ellipsis}}.mapview{position:fixed;inset:0;z-index:25;display:flex;flex-direction:column;background:var(--bg);outline:none}.mapview-stage{position:relative;flex:1 1 auto;min-width:0;min-height:0;overflow:hidden;background:#0b0e12}.mapview-canvas{position:absolute;inset:0;width:100%;height:100%;display:block;touch-action:none;cursor:grab;user-select:none;-webkit-user-select:none}.mapview-canvas.over-place{cursor:pointer}.mapview-canvas.dragging{cursor:grabbing}.mapview-tools{position:absolute;right:var(--gutter);top:calc(var(--gutter) + var(--safe-t));display:grid;gap:8px}.mapview-tool{background:var(--panel);font-size:20px;line-height:1;box-shadow:0 4px 14px #0006}.mapview-hint{position:absolute;left:50%;bottom:10px;transform:translate(-50%);max-width:calc(100% - 2 * var(--gutter));padding:5px 12px;border-radius:999px;background:var(--panel);color:var(--muted);font-size:12px;text-align:center;pointer-events:none}.mapview-panel{flex:0 0 auto;max-height:48vh;display:flex;flex-direction:column;gap:8px;padding:10px var(--gutter) calc(10px + var(--safe-b));background:var(--panel-solid);border-top:1px solid var(--line)}.mapview-panel>*{flex:0 0 auto;min-width:0}.mapview-head{display:flex;align-items:center;gap:8px}.mapview-title{display:none;margin:0;font-size:18px}.mapview-head .mapview-search{flex:1 1 auto;min-width:0}.mapview-head .btn{min-height:44px}.mapview-wp{display:flex;align-items:center;gap:8px;padding:4px 4px 4px 12px;border-radius:10px;border:1px solid rgba(255,79,216,.6);background:#ff4fd81f}.mapview-wp-label{flex:1 1 auto;min-width:0;font-weight:600;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.mapview-wp-label:before{content:"Waypoint · ";color:var(--muted);font-weight:400}.mapview-wp-dist{flex:0 0 auto;font-variant-numeric:tabular-nums;font-size:13px}.mapview-legend{display:flex;gap:6px;overflow-x:auto;padding-bottom:2px;scrollbar-width:none}.mapview-legend::-webkit-scrollbar{display:none}.mapview-cat{display:inline-flex;align-items:center;gap:6px;flex:0 0 auto;min-height:40px;padding:2px 12px 2px 4px;border:1px solid var(--line);border-radius:999px;background:#20252d;color:var(--text);font:inherit;font-size:13px;font-weight:600;white-space:nowrap;cursor:pointer;touch-action:manipulation}.mapview-cat:hover,.mapview-place:hover{background:#2a303a}.mapview-cat.active{border-color:var(--accent-2);background:#2f80ed47}.mapview-cat-count{padding:0 6px;border-radius:999px;background:#ffffff1a;color:var(--muted);font-size:11px}.mapview-icon{display:block;flex:0 0 auto}.mapview-empty{margin:8px 0}.mapview-panel>.mapview-results{flex:0 1 auto;display:grid;gap:4px;align-content:start;overflow-y:auto;min-height:0;scrollbar-width:thin}.mapview-panel>.mapview-results:empty{display:none}.mapview-place{display:grid;grid-template-columns:auto minmax(0,1fr) auto;align-items:center;gap:8px;width:100%;min-height:44px;padding:2px 12px 2px 6px;border:1px solid transparent;border-radius:10px;background:#ffffff0a;color:var(--text);font:inherit;text-align:left;cursor:pointer;touch-action:manipulation}.mapview-place-name{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-weight:600}.mapview-place-dist{font-size:12px;font-variant-numeric:tabular-nums}.mapview-mini{display:flex;align-items:center;gap:8px}.mapview-mini .btn{min-height:36px}.mapview-rotate{margin-left:auto;min-width:96px}@media(min-width:900px)and (hover:hover){.mapview{flex-direction:row-reverse}.mapview-panel{width:340px;max-height:none;padding:var(--gutter) var(--gutter) 0;border-top:none;border-right:1px solid var(--line);overflow-y:auto;scrollbar-width:thin}.mapview-head{flex-wrap:wrap}.mapview-title{display:block;flex:1 1 auto;order:1}.mapview-head .btn{order:2;min-height:36px}.mapview-head .mapview-search{order:3;flex:1 1 100%}.mapview-legend{display:grid;grid-template-columns:1fr 1fr;overflow:visible}.mapview-cat{border-radius:10px;min-height:36px;white-space:normal;text-align:left;line-height:1.15}.mapview-cat-count{margin-left:auto}.mapview-panel>.mapview-results{flex:0 0 auto;overflow:visible}.mapview-panel>.mapview-mini{margin-top:auto;position:sticky;bottom:0;padding:10px 0 var(--gutter);background:var(--panel-solid)}.mapview-hint{bottom:14px}}@media(max-height:500px)and (max-width:899px),(max-height:500px)and (hover:none){.mapview{flex-direction:row-reverse}.mapview-panel{width:280px;max-height:none;overflow-y:auto;border-top:none;border-right:1px solid var(--line)}.mapview-legend{flex-wrap:wrap;overflow:visible}.mapview-panel>.mapview-results{flex:0 0 auto;overflow:visible}}.phone-tab[data-tab=admin]{color:#ffb86b}.phone-tab[data-tab=admin].active{border-bottom-color:#ffb86b}.tab-admin .admin-nav{gap:6px;margin-bottom:10px}.tab-admin .admin-nav .btn{flex:1 0 auto}.tab-admin .admin-target{flex-wrap:wrap;gap:8px;margin-bottom:4px}.tab-admin .admin-target .pill{flex:1 1 auto;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.tab-admin .row{margin:8px 0}.tab-admin .row.wrap{flex-wrap:wrap}.tab-admin .row>.input{flex:1 1 0;min-width:0}.tab-admin .row>.btn{flex:0 0 auto}.tab-admin select.input{min-width:0}.admin-list{display:grid;gap:8px}.admin-list .list-card{margin-bottom:0}.admin-row{display:block;width:100%;text-align:left;color:var(--text);font:inherit;cursor:pointer;touch-action:manipulation}.admin-row.active{border-color:var(--accent);background:#2f80ed29}.admin-item{justify-content:space-between;margin:0}.admin-item-info{min-width:0;overflow-wrap:anywhere}.admin-spawn-opts>.input:nth-child(2){flex:0 0 72px}.admin-force{flex:0 0 auto;gap:6px;min-height:44px}.admin-range .slider{flex:1 1 auto;min-width:0;min-height:36px;margin:0}.admin-range-value{flex:0 0 44px;text-align:right;font-variant-numeric:tabular-nums;font-weight:600}.admin-pager{justify-content:space-between}.admin-params{margin-top:4px;color:var(--muted);font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;overflow-wrap:anywhere}
