:root{--plate:#fff;--hi:#232327;--edge:#a4a4ac;--mid:#c3c3c9;--lo:#e0e0e4;--text:#232327;--muted:#8a8a93;--stroke:.9px;--ease:cubic-bezier(.32, .72, 0, 1);--problem:#f2552c;--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light}:root[data-theme=dark]{--plate:#101014;--hi:#fafafa;--edge:#a1a1aa;--mid:#52525b;--lo:#27272a;--text:#fafafa;--muted:#8a8a93;--problem:#ff6a3d;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}*{box-sizing:border-box}html,body,#app{background:var(--plate);height:100%;color:var(--text);margin:0;overflow:hidden}body{-webkit-font-smoothing:antialiased;font-variant-numeric:tabular-nums;touch-action:none;-webkit-user-select:none;user-select:none;font:13px/1.4 ui-sans-serif,system-ui,-apple-system,Segoe UI,Roboto,Helvetica Neue,Arial,sans-serif}.app{position:fixed;inset:0}.world{cursor:grab;touch-action:none;width:100%;height:100%;display:block;position:absolute;inset:0}.world:active{cursor:grabbing}.brand,.perf,.readout,.tools,.panel,.loading{background:var(--plate);border:var(--stroke) solid var(--mid);border-radius:10px;position:absolute}.brand{align-items:center;gap:8px;padding:7px 12px 7px 9px;display:flex;top:14px;left:14px}.brand .logo svg{fill:none;width:20px;height:20px;stroke:var(--hi);stroke-width:1.4px;stroke-linejoin:round;display:block}.brand .name{letter-spacing:.01em;font-weight:600}.brand .tag{color:var(--muted);border-left:var(--stroke) solid var(--mid);padding-left:8px}.perf{color:var(--muted);gap:10px;padding:6px 11px;font-size:12px;display:flex;top:14px;right:14px}.perf span:first-child{color:var(--text)}.readout{align-items:baseline;gap:10px;max-width:calc(100vw - 258px);padding:7px 12px;display:flex;top:62px;left:14px}.readout strong{font-weight:600}.readout span{color:var(--muted);white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.tools{right:14px;bottom:calc(14px + env(safe-area-inset-bottom));gap:2px;padding:3px;display:flex}.tools button,.segmented button,.seed button{font:inherit;color:var(--text);cursor:pointer;transition:background .7s var(--ease), color .7s var(--ease);background:0 0;border:0;border-radius:7px}.tools button{width:38px;height:38px;font-size:17px}.tools button:hover,.segmented button:hover,.seed button:hover{background:color-mix(in srgb, var(--lo) 70%, transparent)}.tools button.on{background:var(--lo)}.panel{width:288px;max-height:calc(100% - 140px);padding:6px 14px 12px;top:62px;right:14px;overflow:auto}.panel section{border-bottom:var(--stroke) solid var(--lo);grid-template-columns:minmax(0,1fr);gap:9px;padding:10px 0;display:grid}.panel h2{letter-spacing:.08em;text-transform:uppercase;color:var(--muted);margin:0;font-size:11px;font-weight:600}.segmented{border:var(--stroke) solid var(--mid);border-radius:8px;gap:2px;padding:2px;display:flex}.segmented button{flex:1 1 0;min-width:0;padding:5px 0}.segmented button.on{background:var(--hi);color:var(--plate)}.check{cursor:pointer;align-items:center;gap:8px;display:flex}.check input{accent-color:var(--hi);margin:0}.range{gap:4px;display:grid}.range span{justify-content:space-between;display:flex}.range em{color:var(--muted);font-style:normal}.range input{width:100%;accent-color:var(--hi)}.seed{gap:6px;display:flex}.seed input{width:0;min-width:0;font:inherit;color:var(--text);border:var(--stroke) solid var(--mid);background:0 0;border-radius:7px;flex:1 1 0;padding:5px 8px}.seed button{border:var(--stroke) solid var(--mid);flex:none;padding:5px 8px}.note{color:var(--muted);margin:0;font-size:12px}.keys{color:var(--muted);margin:10px 0 0;font-size:12px}.loading{animation:pulse 1.4s var(--ease) infinite alternate;padding:10px 16px;top:50%;left:50%;transform:translate(-50%,-50%)}@keyframes pulse{0%{opacity:.55}to{opacity:1}}.fallback{max-width:420px;margin:20vh auto;padding:0 20px}@media (max-width:720px){.perf{gap:7px;font-size:11px;top:62px;left:14px;right:auto}.brand .tag{display:none}.readout{max-width:calc(100vw - 28px);top:auto;bottom:calc(66px + env(safe-area-inset-bottom))}.tools{justify-content:space-between;left:14px;right:14px}.tools button{flex:1;height:42px}.panel{top:auto;bottom:calc(66px + env(safe-area-inset-bottom));width:auto;max-height:55%;left:14px;right:14px}}@media (prefers-reduced-motion:reduce){*{transition:none!important;animation:none!important}}.hud{font-variant-numeric:tabular-nums;white-space:nowrap;background:var(--plate);border:var(--stroke) solid var(--mid);border-radius:10px;align-items:center;gap:12px;padding:4px 4px 4px 14px;display:flex;position:absolute;top:14px;left:50%;transform:translate(-50%)}.hud .money{font-weight:600}.hud .clock{color:var(--muted)}.hud .speeds{border-left:var(--stroke) solid var(--mid);gap:2px;padding-left:6px;display:flex}.hud .speeds button,.toolbar button{font:inherit;color:var(--text);cursor:pointer;transition:background .7s var(--ease), color .7s var(--ease);background:0 0;border:0;border-radius:7px}.hud .speeds button{min-width:34px;height:30px;font-size:12px}.hud .speeds button.on,.toolbar button.on{background:var(--hi);color:var(--plate)}.toolbar{left:50%;bottom:calc(14px + env(safe-area-inset-bottom));background:var(--plate);border:var(--stroke) solid var(--mid);border-radius:10px;align-items:center;gap:2px;padding:3px;display:flex;position:absolute;transform:translate(-50%)}.toolbar button{height:38px;padding:0 13px}.toolbar button:disabled{opacity:.35;cursor:default}.toolbar button:not(.on):not(:disabled):hover,.hud .speeds button:not(.on):hover{background:color-mix(in srgb, var(--lo) 70%, transparent)}.toolbar .divider{width:var(--stroke);background:var(--mid);align-self:stretch;margin:6px 4px}.readout.bad{color:var(--problem);border-color:currentColor}.app:not(.tool-view) .world{cursor:crosshair}.link{color:var(--text)}@media (max-width:720px){.hud{gap:8px;padding-left:10px;font-size:12px;top:62px}.toolbar{bottom:calc(66px + env(safe-area-inset-bottom));max-width:calc(100vw - 28px);overflow-x:auto}.toolbar button{padding:0 10px}.app .readout{bottom:calc(118px + env(safe-area-inset-bottom))}}.hud .players{color:var(--muted);border-right:var(--stroke) solid var(--mid);padding-right:12px}.hud .players.closed,.hud .players.connecting{color:var(--problem)}.toolbar button.zone{min-width:38px;color:var(--zone,var(--text));padding:0 9px;font-weight:600}.toolbar button.zone.on{background:var(--zone,var(--hi));color:var(--plate)}.hud .people{color:var(--muted)}.hud .demand{align-items:flex-end;gap:3px;height:18px;display:flex}.hud .demand i{background:linear-gradient(to top, var(--c) calc(var(--v) * 100%), var(--lo) 0);border-radius:2px;width:5px;height:18px;display:block}@media (max-width:720px){.hud .people{display:none}}.hud .short,.hud .budget-toggle{font:inherit;cursor:pointer;height:30px;color:var(--text);border:var(--stroke) solid var(--mid);background:0 0;border-radius:7px;padding:0 10px;font-size:12px}.hud .short{color:var(--problem);border-color:currentColor}.hud .budget-toggle.on{background:var(--hi);color:var(--plate);border-color:var(--hi)}.panel.budget{width:320px}.panel-head{justify-content:space-between;align-items:center;padding:8px 0 2px;display:flex}.panel-head .close{font:inherit;color:var(--muted);cursor:pointer;background:0 0;border:0;padding:2px 4px;font-size:18px;line-height:1}.panel h3{margin:0;font-size:12px;font-weight:600}.books{border-collapse:collapse;font-variant-numeric:tabular-nums;width:100%;font-size:12px}.books th{text-align:left;font-weight:400}.books td{text-align:right;color:var(--muted);white-space:nowrap;padding-left:8px}.books tr.bad th,.books tr.bad td{color:var(--problem)}.books tr.sum th,.books tr.sum td{border-top:var(--stroke) solid var(--lo);color:var(--text);padding-top:4px;font-weight:600}button.link{font:inherit;text-align:left;cursor:pointer;background:0 0;border:0;padding:0;text-decoration:underline}@media (max-width:720px){.panel.budget{width:auto}.hud .budget-toggle{padding:0 7px}}.toolbar.palette{bottom:calc(66px + env(safe-area-inset-bottom));max-width:calc(100vw - 28px);overflow-x:auto}.toolbar.palette button{height:32px;padding:0 11px;font-size:13px}@media (max-width:720px){.toolbar.palette{bottom:calc(118px + env(safe-area-inset-bottom))}.app.palette-open .readout{bottom:calc(166px + env(safe-area-inset-bottom))}}.hud .money.bad,.note.bad{color:var(--problem)}.swatch{vertical-align:-1px;border-radius:3px;width:10px;height:10px;margin-right:7px;display:inline-block}.books .buses{justify-content:flex-end;align-items:center;gap:2px;display:flex}.books .buses button{font:inherit;border:var(--stroke) solid var(--mid);width:22px;height:22px;color:var(--text);cursor:pointer;background:0 0;border-radius:6px;padding:0}.books .buses span{text-align:center;min-width:18px;color:var(--text)}.books td.full{color:var(--problem)}.panel.lines{width:300px}.panel.city{width:320px}.progress{background:var(--lo);border-radius:3px;height:6px;overflow:hidden}.progress i{background:var(--hi);border-radius:3px;height:100%;display:block}.milestones{gap:3px;margin:0;padding:0;font-size:12px;list-style:none;display:grid}.milestones li{color:var(--muted);justify-content:space-between;display:flex}.milestones li.done{color:var(--text)}.milestones li.done span:before{content:"✓ "}.milestones em{font-variant-numeric:tabular-nums;font-style:normal}.chart{gap:3px;margin:0;display:grid}.chart figcaption{color:var(--text);justify-content:space-between;font-size:12px;display:flex}.chart .legend{color:var(--muted);gap:10px;display:flex}.chart .legend i{vertical-align:3px;border-radius:1px;width:10px;height:2px;margin-right:5px;display:inline-block}.chart svg{touch-action:none;width:100%;height:auto;display:block;overflow:visible}.chart polyline{fill:none;stroke-width:2px;stroke-linejoin:round;stroke-linecap:round;vector-effect:non-scaling-stroke}.chart .grid{stroke:var(--lo);stroke-width:1px;stroke-dasharray:2 3;vector-effect:non-scaling-stroke}.chart .base,.chart .cross{stroke:var(--mid);stroke-width:1px;vector-effect:non-scaling-stroke}.chart circle{stroke:var(--plate);stroke-width:2px}.chart text{fill:var(--muted);font-variant-numeric:tabular-nums;font-size:9px}.chart text.end{fill:var(--text)}.chart .readout-line{color:var(--muted);font-variant-numeric:tabular-nums;gap:10px;font-size:11px;display:flex}.chart .readout-line b{color:var(--text);font-weight:600}.toasts{z-index:5;gap:6px;max-width:min(520px,100vw - 28px);display:grid;position:absolute;top:62px;left:50%;transform:translate(-50%)}.toast{font:inherit;text-align:left;cursor:pointer;background:var(--plate);color:var(--text);border:var(--stroke) solid var(--mid);border-radius:9px;padding:8px 12px;font-size:13px}.toast.fire,.toast.burnt,.toast.debt,.toast.shortage{color:var(--problem);border-color:currentColor}.toast.milestone,.toast.server{border-color:var(--hi);font-weight:600}@media (max-width:720px){.toasts{top:108px}.panel.city{width:auto}}.guide{background:var(--plate);border:var(--stroke) solid var(--mid);border-radius:10px;width:260px;padding:10px 14px 12px;font-size:13px;position:absolute;top:62px;right:14px}.guide header{justify-content:space-between;align-items:center;margin-bottom:6px;display:flex}.guide .close{font:inherit;color:var(--muted);cursor:pointer;background:0 0;border:0;padding:0 2px;font-size:18px;line-height:1}.guide ol{gap:4px;margin:0;padding-left:18px;display:grid}.guide li{color:var(--muted)}.guide li.done{text-decoration:line-through}.guide li.next{color:var(--text)}.guide li em{color:var(--muted);font-size:12px;font-style:normal;display:block}@media (max-width:720px){.guide{top:auto;bottom:calc(118px + env(safe-area-inset-bottom));width:auto;left:14px;right:14px}}.button{background:var(--hi);color:var(--plate);text-align:center;border-radius:8px;padding:8px 12px;font-weight:600;text-decoration:none;display:inline-block}.account{gap:4px;display:grid}.city-list,.players-list,.checkpoints{gap:5px;margin:0;padding:0;font-size:13px;list-style:none;display:grid}.city-list li,.players-list li,.checkpoints li{justify-content:space-between;align-items:baseline;gap:8px;display:flex}.city-list li.here a{font-weight:600}.city-list em,.checkpoints em{color:var(--muted);white-space:nowrap;font-size:12px;font-style:normal}.checkpoints li span{min-width:0}.checkpoints{gap:8px}.checkpoints li{grid-template-columns:80px 1fr auto;align-items:center;display:grid}.checkpoints .thumb{background:var(--plate);border:var(--stroke) solid var(--mid);box-sizing:border-box;border-radius:6px;width:80px;height:80px;display:block}.checkpoints img.thumb{border:none}.checkpoints li em{white-space:normal}.link.danger{color:var(--problem)}.cursors{pointer-events:none;position:absolute;inset:0;overflow:hidden}.cursor{will-change:transform;align-items:center;gap:5px;display:flex;position:absolute;top:0;left:0}.cursor i{border:2px solid var(--player,var(--zone-office,#8f63e6));background:var(--plate);border-radius:50%;width:10px;height:10px;margin:-5px 0 0 -5px}.cursor span{background:var(--plate);border:var(--stroke) solid var(--player,var(--mid));color:var(--text);white-space:nowrap;border-radius:6px;padding:1px 6px;font-size:11px}.loading.denied{pointer-events:auto;text-align:center;gap:10px;max-width:360px;animation:none;display:grid}.loading.denied p{margin:0}@media (max-width:720px){.hud{scrollbar-width:none;gap:6px;max-width:none;padding:3px 3px 3px 10px;left:8px;right:8px;overflow-x:auto;transform:none}.hud::-webkit-scrollbar{display:none}.hud .demand,.hud .clock{display:none}.hud .speeds button{min-width:30px}.hud .short,.hud .budget-toggle{flex:none;padding:0 8px}.hud .money{flex:none}.toolbar{max-width:none;left:8px;right:8px;transform:none}.toolbar.palette{left:8px;right:8px;transform:none}.tools{right:8px}}.panel .legal{border-bottom:0;flex-wrap:wrap;grid-template-columns:none;gap:14px;font-size:12px;display:flex}@media (min-width:721px){.toolbar:not(.palette){scrollbar-width:none;max-width:calc(100vw - 294px);left:calc(50vw - 133px);overflow-x:auto}.toolbar:not(.palette)::-webkit-scrollbar{display:none}.toolbar:not(.palette)>*{flex:none}}@media (min-width:721px) and (max-width:1500px){.toolbar:not(.palette) button{padding:0 10px}}
