:root{--font-display:ui-serif, "Iowan Old Style", "Palatino Linotype", Palatino, Georgia, serif;--font-body:system-ui, -apple-system, "Segoe UI", Inter, Roboto, sans-serif;--font-mono:ui-monospace, "JetBrains Mono", Menlo, Consolas, monospace;--space-xxs:4px;--space-xs:8px;--space-sm:12px;--space-md:16px;--space-lg:24px;--space-xl:32px;--radius-xs:4px;--radius-sm:6px;--radius-md:8px;--radius-lg:12px;--radius-xl:16px;--radius-pill:9999px;--tracking-caps:.12em}:root,[data-theme=light]{--canvas:#faf9f5;--surface:#f5f0e8;--card:#efe9de;--card-raised:#e8e0d2;--hairline:#e0d8cb;--hairline-soft:#ebe6df;--ink:#141413;--body:#3d3d3a;--muted:#6c6a64;--muted-soft:#8e8b82;--coral:#cc785c;--coral-active:#a9583e;--on-coral:#fdfcfa;--success:#4f9c63;--warning:#c08a1a;--error:#c64545;--good-holz:#6b8f5e;--good-erz:#b8863b;--good-werkzeug:#8a6a9c;--city:#cc785c;--transfer:#5b7c96;--map-grid:#ece5d8;--map-route:#bdb1a0;--map-node-fill:#fdfcfa;--truck-empty:#a49a8c;--shadow:0 1px 2px #1414130f, 0 4px 12px #1414130d}[data-theme=dark]{--canvas:#181715;--surface:#1f1e1b;--card:#252320;--card-raised:#2d2b27;--hairline:#35322c;--hairline-soft:#2b2924;--ink:#faf9f5;--body:#d9d5cc;--muted:#8e8b82;--muted-soft:#6c6a64;--coral:#d9835f;--coral-active:#e79c7c;--on-coral:#1a1408;--success:#6bc47e;--warning:#dcae3a;--error:#e0645f;--good-holz:#79bd7f;--good-erz:#e0a355;--good-werkzeug:#b494c9;--city:#d9835f;--transfer:#8ab4cf;--map-grid:#211f1c;--map-route:#4a443c;--map-node-fill:#201e1b;--truck-empty:#6c6a64;--shadow:0 1px 2px #0006, 0 4px 14px #0000004d}*{box-sizing:border-box;margin:0;padding:0}html,body,#app{height:100dvh}body{background:var(--canvas);color:var(--body);font-family:var(--font-body);font-variant-numeric:tabular-nums;-webkit-font-smoothing:antialiased;-webkit-tap-highlight-color:transparent;overscroll-behavior:none;font-size:14px;overflow:hidden}.topbar,.controls,.statusbar,canvas{-webkit-user-select:none;user-select:none}#app{flex-direction:column;display:flex}.topbar{align-items:center;gap:var(--space-lg);padding:var(--space-sm) var(--space-lg);background:var(--surface);border-bottom:1px solid var(--hairline);flex-wrap:wrap;flex-shrink:0;display:flex}.wordmark{font-family:var(--font-display);letter-spacing:.16em;color:var(--ink);padding-right:var(--space-xs);font-size:21px;font-weight:400}.stat{flex-direction:column;line-height:1.3;display:flex}.stat-label{text-transform:uppercase;letter-spacing:var(--tracking-caps);color:var(--muted);font-size:11px;font-weight:500}.stat-value{color:var(--ink);font-size:18px;font-weight:500}.stat-value.alarm{color:var(--error)}.stat-value.event{font-size:14px}#stat-event[hidden]{display:none}#stat-event[data-kind=fuel] .stat-value{color:var(--error)}#stat-event[data-kind=subsidy] .stat-value{color:var(--success)}#stat-event[data-kind=throughput] .stat-value{color:var(--warning)}.goal{width:180px}.goal-track{border-radius:var(--radius-pill);background:var(--card-raised);height:5px;margin-top:6px;overflow:hidden}.goal-fill{border-radius:var(--radius-pill);background:var(--coral);width:0%;height:100%;transition:width .35s}.spacer{flex:1}.btn-group{gap:var(--space-xxs);display:flex}.btn-group button{font:inherit;cursor:pointer;color:var(--muted);border:1px solid var(--hairline);border-radius:var(--radius-sm);background:0 0;padding:7px 12px;font-size:12px;font-weight:500;transition:color .12s,border-color .12s,background .12s}.btn-group button:hover{color:var(--ink);border-color:var(--muted-soft)}.btn-group button[aria-pressed=true]{background:var(--coral);border-color:var(--coral);color:var(--on-coral)}#theme-toggle[aria-pressed=true]{border-color:var(--hairline);color:var(--muted);background:0 0}#theme-toggle[aria-pressed=true]:hover{color:var(--ink);border-color:var(--muted-soft)}.main{flex:1;min-height:0;display:flex}.map-wrap{flex:1;min-width:0;position:relative}canvas{touch-action:none;-webkit-touch-callout:none;width:100%;height:100%;display:block}.controls{display:contents}.sidebar{width:288px;padding:var(--space-md);background:var(--surface);border-left:1px solid var(--hairline);gap:var(--space-sm);overscroll-behavior:contain;flex-direction:column;flex-shrink:0;display:flex;overflow-y:auto}.sidebar h2{text-transform:uppercase;letter-spacing:var(--tracking-caps);color:var(--muted);font-size:11px;font-weight:500}.sheet-handle{display:none}.card{background:var(--card);border:1px solid var(--hairline);border-radius:var(--radius-lg);padding:var(--space-md)}.card-title{align-items:center;gap:var(--space-xs);font-family:var(--font-display);color:var(--ink);margin-bottom:var(--space-sm);font-size:18px;display:flex}.swatch{border-radius:var(--radius-pill);flex-shrink:0;width:10px;height:10px}.kv{justify-content:space-between;gap:var(--space-xs);color:var(--muted);padding:3px 0;font-size:13px;display:flex}.kv strong{color:var(--ink);font-weight:500}.meter{border-radius:var(--radius-pill);background:var(--card-raised);height:6px;margin:8px 0 4px;overflow:hidden}.meter>i{border-radius:var(--radius-pill);height:100%;transition:width .15s linear;display:block}.action{width:100%;margin-top:var(--space-sm);font:inherit;cursor:pointer;color:var(--on-coral);background:var(--coral);border:1px solid var(--coral);border-radius:var(--radius-md);padding:10px;font-size:14px;font-weight:500;transition:background .12s,border-color .12s}.action:hover:not(:disabled){background:var(--coral-active);border-color:var(--coral-active)}.action:disabled{background:var(--card-raised);border-color:var(--hairline);color:var(--muted-soft);cursor:not-allowed}.action.secondary{color:var(--muted);border-color:var(--hairline);background:0 0}.action.secondary:hover{color:var(--error);border-color:var(--error);background:0 0}.hint-body{color:var(--muted);font-size:13px;line-height:1.65}.hint-body strong{color:var(--ink);font-weight:500}kbd{font:inherit;background:var(--card-raised);border:1px solid var(--hairline);border-radius:var(--radius-xs);color:var(--body);padding:1px 5px;font-size:11px}.statusbar{padding:10px var(--space-lg);color:var(--muted);background:var(--surface);border-top:1px solid var(--hairline);flex-shrink:0;font-size:13px}.statusbar strong{color:var(--coral);font-weight:500}.overlay{justify-content:center;align-items:center;gap:var(--space-md);padding:var(--space-xl);background:color-mix(in srgb, var(--canvas) 88%, transparent);-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);flex-direction:column;display:none;position:absolute;inset:0}.overlay[data-open=true]{display:flex}.overlay h1{font-family:var(--font-display);letter-spacing:-.01em;color:var(--ink);font-size:40px;font-weight:400}.overlay p{text-align:center;max-width:400px;color:var(--muted);line-height:1.65}.overlay .action{width:190px}#saves,#manual{width:min(560px,92vw);padding:var(--space-lg);border:1px solid var(--hairline);border-radius:var(--radius-lg);background:var(--surface);color:var(--body);box-shadow:var(--shadow);overscroll-behavior:contain}#saves::backdrop{-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px);background:#0006}#manual::backdrop{-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px);background:#0006}#saves h2,#manual h2{font-family:var(--font-display);color:var(--ink);margin-bottom:var(--space-md);font-size:22px;font-weight:400}#saves-list{gap:var(--space-xs);flex-direction:column;display:flex}.saves-error{margin-bottom:var(--space-sm);padding:var(--space-xs) var(--space-sm);color:var(--error);border:1px solid var(--error);border-radius:var(--radius-sm);font-size:13px}.save-row{gap:var(--space-xxs) var(--space-sm);padding:var(--space-sm);background:var(--card);border:1px solid var(--hairline);border-radius:var(--radius-md);grid-template-columns:1fr auto;align-items:center;display:grid}.save-row[data-active=true]{border-color:var(--coral)}.save-row .btn-group{grid-row:span 2}.save-name{font:inherit;color:var(--ink);width:100%;padding:2px var(--space-xxs);margin-left:calc(var(--space-xxs) * -1);border-radius:var(--radius-xs);background:0 0;border:1px solid #0000;font-size:15px}.save-name:hover{border-color:var(--hairline-soft)}.save-name:focus{border-color:var(--coral);background:var(--canvas);outline:none}.save-meta{color:var(--muted);font-size:13px}.save-seed{font-family:ui-monospace,SFMono-Regular,Menlo,monospace}.dialog-actions{gap:var(--space-xs);margin-top:var(--space-md);padding-top:var(--space-md);border-top:1px solid var(--hairline);display:flex}.dialog-actions .action{flex:1}#manual-list{gap:var(--space-md);flex-direction:column;max-height:min(60vh,520px);display:flex;overflow-y:auto}.manual-entry h3{color:var(--ink);margin-bottom:var(--space-xxs);font-size:15px;font-weight:500}.manual-link{text-align:left;width:100%;padding:var(--space-sm) var(--space-md);border:1px solid var(--hairline);border-radius:var(--radius-md);background:var(--card-raised);color:var(--ink);font:inherit;cursor:pointer;font-size:15px;display:block}.manual-link:hover{border-color:var(--coral)}#manual-list[hidden],#manual-entry[hidden],#manual-back[hidden]{display:none}#manual-entry{max-height:min(60vh,520px);overflow-y:auto}@media (pointer:coarse){.btn-group button,.save-name,.action{min-height:44px}.btn-group button{min-width:44px;font-size:14px}.btn-group button:hover{color:var(--muted);border-color:var(--hairline)}.btn-group button[aria-pressed=true]:hover{color:var(--on-coral)}.save-name:hover{border-color:#0000}}@media (max-width:759px),(max-height:499px){.topbar{gap:var(--space-sm) var(--space-md);padding:calc(var(--space-xs) + env(safe-area-inset-top)) var(--space-md) var(--space-xs);flex-wrap:wrap}.wordmark,.spacer{display:none}.stat-value{font-size:16px}.goal{flex:1 0 100%;width:auto}.main{flex-direction:column}.map-wrap{flex:1;min-height:0}.sidebar{border-left:none;border-top:1px solid var(--hairline);width:100%;max-height:min(42dvh,300px);padding:var(--space-sm) var(--space-md);flex-shrink:1;overflow-y:auto}.sidebar[data-open=false],.sidebar h2{display:none}.sidebar{gap:0;padding-top:0}.sheet-handle{cursor:grab;touch-action:none;background:0 0;border:none;flex-shrink:0;align-self:stretch;height:44px;margin:0;padding:0;display:block}.sheet-handle:before{content:"";border-radius:var(--radius-pill);background:var(--muted-soft);width:40px;height:4px;margin:20px auto;display:block}.sheet-handle:active{cursor:grabbing}.sidebar[data-collapsed=true]{max-height:44px;padding-bottom:0;overflow:hidden}#app{--toolbar-h:calc(60px + env(safe-area-inset-bottom));padding-bottom:var(--toolbar-h)}.controls{z-index:2;align-items:center;gap:var(--space-xs);min-height:var(--toolbar-h);padding:var(--space-xs) var(--space-md) calc(var(--space-xs) + env(safe-area-inset-bottom));background:var(--surface);border-top:1px solid var(--hairline);display:flex;position:fixed;bottom:0;left:0;right:0}#speeds{flex:1}#speeds button{flex:1;padding-left:0;padding-right:0}.statusbar{padding:8px var(--space-md);min-height:calc(2lh + 16px);font-size:12px;line-height:1.4}#app:has(.sidebar[data-open=true]) .statusbar{display:none}.overlay{padding:var(--space-lg)}.overlay h1{font-size:30px}.overlay .action{width:100%;max-width:280px}}@media (max-height:499px) and (min-width:600px){.main{flex-direction:row}.goal{flex:0 160px}.sidebar{border-top:none;border-left:1px solid var(--hairline);flex-shrink:0;width:260px;height:auto;max-height:none}.sidebar[data-open=false],.statusbar{display:none}#saves,#manual{width:100vw;max-width:100vw;height:100dvh;max-height:100dvh;padding:calc(var(--space-lg) + env(safe-area-inset-top)) var(--space-md) calc(var(--space-lg) + env(safe-area-inset-bottom));border:none;border-radius:0;overflow-y:auto}#manual-list{max-height:none;overflow-y:visible}.save-row{grid-template-columns:1fr}.save-row .btn-group{grid-row:auto}.save-row .btn-group button{flex:1}.dialog-actions{flex-wrap:wrap}}
