:root{--bg:#e6decf;--surface:#f9f4ea;--surface-2:#f1e9da;--ink:#16130e;--ink-2:#4a4335;--muted:#8a8070;--line:#d9cfbd;--on-fill:#f9f4ea;--shadow:#16130e29;--you:#1c6ca8;--informal:#f2b705;--informal-light:#f7dd85;--informal-ink:#8a6a00;--home:#b3aa97;--goods:#a8673a;--goods-ink:#7a4a28;--rail:#3b352b;--good:#1e7a4f;--bad:#c0392b;--bad-bg:#f8e4dc;--warn:#c8880f;--strike:#dd6b20;--strike-ink:#8f4310;--flood:#2a6f97;--fuel:#c0392b;--building:#6b4fa8;--food:#1e7a4f;--trade:#1c6ca8;--route-1:#1c6ca8;--route-2:#1e7a4f;--route-3:#6b4fa8;--route-4:#dd6b20;--route-5:#2f8fc9;--route-6:#5f3dc4;--route-7:#b8335e;--route-8:#4f8a2b;--s1:#1c6ca8;--s2:#dd6b20;--s3:#1e7a4f;--s4:#6b4fa8;--s5:#c0392b;--map-ground:#f2ede1;--map-water:#2c4a57;--map-hill:#9a8e72;--road-free:#cfc3ac;--road-busy:#dd6b20;--road-jammed:#c0392b;--paint-light-1:#fff;--paint-light-2:#e8f0f8;--paint-light-3:#fff4dc;--paint-light-4:#f2efe6;--paint-light-5:#fff0d4;--paint-light-6:#efe9dd;--paint-grey-1:#cfd6d8;--paint-grey-2:#b4b9bc;--paint-grey-3:#a7aeb3;--paint-grey-4:#9aa3a9;--paint-grey-5:#a59d90;--paint-grey-6:#8c9399;--paint-grey-7:#9a9488;--paint-grey-8:#8e9093;--paint-grey-9:#9a9184;--paint-grey-10:#9a9083;--paint-grey-11:#948e80;--paint-grey-12:#8a8277;--paint-grey-13:#7a7f85;--paint-grey-14:#77797b;--paint-grey-15:#77756e;--paint-grey-16:#6a6f75;--paint-grey-17:#6f6a60;--paint-grey-18:#5b6872;--paint-grey-19:#6f675e;--paint-grey-20:#5a5f66;--paint-grey-21:#56585b;--paint-grey-22:#4a4f55;--paint-grey-23:#3a3f45;--paint-grey-24:#3a3a3a;--paint-grey-25:#3b3a38;--paint-grey-26:#2b2b2b;--paint-earth-1:#e8e4dc;--paint-earth-2:#eae6da;--paint-earth-3:#e8e1d4;--paint-earth-4:#e6dfd2;--paint-earth-5:#efe3c8;--paint-earth-6:#e4e0d2;--paint-earth-7:#e2ddd2;--paint-earth-8:#e0d8c8;--paint-earth-9:#e3d3bd;--paint-earth-10:#d9d3c7;--paint-earth-11:#d9d3c4;--paint-earth-12:#d8d2c4;--paint-earth-13:#d8d0c2;--paint-earth-14:#cfc8bb;--paint-earth-15:#d8cbb0;--paint-earth-16:#e8b8a0;--paint-earth-17:#d9c9a8;--paint-earth-18:#c9c2b4;--paint-earth-19:#e2c79a;--paint-earth-20:#ffc46a;--paint-earth-21:#bfb8aa;--paint-earth-22:#bdb6a8;--paint-earth-23:#d8c18c;--paint-earth-24:#d8b48c;--paint-earth-25:#d4bf8a;--paint-earth-26:#b9b2a4;--paint-earth-27:#cbbd8c;--paint-earth-28:#c6b783;--paint-earth-29:#c4b27d;--paint-earth-30:#d9a066;--paint-earth-31:#b3a58c;--paint-earth-32:#b9b47f;--paint-earth-33:#bab47c;--paint-earth-34:#c9a36b;--paint-earth-35:#c98d6a;--paint-earth-36:#c9a45c;--paint-earth-37:#d9b44a;--paint-earth-38:#b39a6c;--paint-earth-39:#b98a62;--paint-earth-40:#b98a5e;--paint-earth-41:#a38f72;--paint-earth-42:#a08f74;--paint-earth-43:#ae855e;--paint-earth-44:#a88a62;--paint-earth-45:#e67e22;--paint-earth-46:#c56b3f;--paint-earth-47:#d9822b;--paint-earth-48:#a47a55;--paint-earth-49:#e8b400;--paint-earth-50:#8a7a5a;--paint-earth-51:#a65d3a;--paint-earth-52:#e0a400;--paint-earth-53:#a0603e;--paint-earth-54:#8a6a45;--paint-earth-55:#8c5a3c;--paint-earth-56:#7a6448;--paint-earth-57:#7d6544;--paint-earth-58:#8a5a2b;--paint-earth-59:#7a5a3a;--paint-earth-60:#6b4f36;--paint-earth-61:#5e4630;--paint-earth-62:#5a3a1d;--paint-earth-63:#3a2a20;--paint-green-1:#b9d3a5;--paint-green-2:#b7b37c;--paint-green-3:#adb57c;--paint-green-4:#9fb27a;--paint-green-5:#b0b770;--paint-green-6:#9fae69;--paint-green-7:#8fae68;--paint-green-8:#93a660;--paint-green-9:#84a75f;--paint-green-10:#8c9c5a;--paint-green-11:#7d8f62;--paint-green-12:#7c9a55;--paint-green-13:#7d9a4e;--paint-green-14:#6f9450;--paint-green-15:#7f9a46;--paint-green-16:#6c8a52;--paint-green-17:#5e9a42;--paint-green-18:#6e8b45;--paint-green-19:#6f8a45;--paint-green-20:#5c8846;--paint-green-21:#5c8a3c;--paint-green-22:#6f8a3c;--paint-green-23:#4f8a3a;--paint-green-24:#2b8a3e;--paint-green-25:#4f7a34;--paint-blue-1:#d6e6ee;--paint-blue-2:#b8c8ff;--paint-blue-3:#a8bcff;--paint-blue-4:#bcc7d0;--paint-blue-5:#9fd0e6;--paint-blue-6:#9dbfdc;--paint-blue-7:#9cc5d6;--paint-blue-8:#7fbdd2;--paint-blue-9:#4f97e8;--paint-blue-10:#7088c0;--paint-blue-11:#6f8fa8;--paint-blue-12:#2a78d6;--paint-blue-13:#4f86ad;--paint-blue-14:#3f86b4;--paint-blue-15:#1c7ed6;--paint-blue-16:#3d6fa8;--paint-blue-17:#1c5aa6;--paint-blue-18:#2a6f97;--paint-blue-19:#4f5b6a;--paint-blue-20:#253f5c;--paint-blue-21:#2a3450;--paint-red-1:#b8433a;--paint-red-2:#8e44ad;--paint-red-3:#c0392b;--paint-red-4:#a0392b;--paint-red-5:#8a4b3a;--paint-red-6:#8a3b2a;--paint-dark-1:#15253c;--paint-dark-2:#22222c;--paint-dark-3:#1a2232;--paint-dark-4:#0c1830;--paint-dark-5:#1e1e1e;--paint-dark-6:#000;--paint-bank:#465a2d;--paint-sand:#d6c496;--fs-headline:19px;--fs-body:13px;--fs-dense:12px;--fs-caption:11px;--fs-label:11px;--sp-1:4px;--sp-2:8px;--sp-3:12px;--sp-4:16px;--sp-5:20px;--sp-6:24px;--sp-8:32px;--label-font:ui-monospace, SFMono-Regular, Menlo, monospace;--letter-font:Georgia, "Times New Roman", serif;--label-tracking:.07em;--radius:8px;--radius-control:6px;--top:92px;--left:236px;--right:352px}html,body{background:var(--bg);height:100%;color:var(--ink);font:var(--fs-body)/1.4 system-ui, sans-serif;margin:0;overflow:hidden}#map{display:block;position:fixed;inset:0}button{font:var(--fs-body)/1.4 system-ui, sans-serif;color:var(--ink);background:var(--surface);border:1px solid var(--line);border-radius:var(--radius-control);padding:var(--sp-1) var(--sp-2);cursor:pointer}button:hover:not([disabled]){border-color:var(--ink-2)}button[disabled]{opacity:.45;cursor:default}button.primary,button.on,button.active{background:var(--ink);color:var(--on-fill);border-color:var(--ink)}button.primary:hover:not([disabled]),button.on:hover,button.active:hover{border-color:var(--ink)}kbd{font:var(--fs-caption) var(--label-font);opacity:.6;margin-left:var(--sp-1)}.production{margin:var(--sp-2) 0 var(--sp-2);gap:var(--sp-2);display:grid}.production .prow{font-size:var(--fs-dense);gap:0 var(--sp-2);grid-template-columns:1fr auto;display:grid}.production .prow.main{font-weight:600;font-size:var(--fs-body)}.production .prow .bar{grid-column:1/-1;height:6px;margin:0}.production .num{font-variant-numeric:tabular-nums;color:var(--muted)}.production .held{color:var(--bad);font-weight:600}.bar{border-radius:var(--radius-control);background:var(--line);height:10px;margin:var(--sp-1) 0 0;display:flex;overflow:hidden}.bar i{height:100%;transition:width .3s;display:block}.legend{font-size:var(--fs-dense)}.danfo-text{color:var(--informal-ink)}.panel-body h2{font-size:var(--fs-body);margin:0}.panel-body h2.section{margin-top:var(--sp-4);padding-top:var(--sp-2);border-top:1px solid var(--line)}.panel-body .hint,.panel-body .empty{margin:0 0 var(--sp-2);color:var(--muted);font-size:var(--fs-dense)}.panel-body .muted{color:var(--muted);font-weight:400}.panel-body .results{margin:0 0 var(--sp-3);font-size:var(--fs-dense);padding:0;line-height:1.4;list-style:none}.panel-body .results li{padding:var(--sp-2) var(--sp-2);margin-bottom:var(--sp-1);border-radius:var(--radius-control);background:var(--surface-2)}.panel-body .results li.good{border-left:3px solid var(--good)}.panel-body .results li.bad{border-left:3px solid var(--bad)}.panel-body .results li.pending{color:var(--muted);font-style:italic}.panel-body .moves{margin:0 0 var(--sp-3);font-size:var(--fs-dense);padding:0;line-height:1.35;list-style:none}.panel-body .moves li{gap:var(--sp-2);padding:var(--sp-2) var(--sp-2);margin-bottom:var(--sp-1);border-radius:var(--radius-control);background:var(--surface-2);grid-template-columns:1fr auto;align-items:center;display:grid}.panel-body .moves li.good{border-left:3px solid var(--good)}.panel-body .moves li.bad{border-left:3px solid var(--bad)}.panel-body .moves li span{font-weight:600}.panel-body .moves small{color:var(--muted);font-weight:400;display:block}.panel-body .results small{color:var(--muted);margin-right:var(--sp-1)}.panel-body .callout{margin:0 0 var(--sp-2);padding:var(--sp-2) var(--sp-2);border-radius:var(--radius);background:var(--bad-bg);color:var(--bad);font-size:var(--fs-dense);line-height:1.4}.panel-body .callout .k{color:inherit;margin-bottom:0;display:block}.panel-body .callout.hook{background:color-mix(in srgb, var(--informal) 14%, transparent);color:var(--ink);border-left:3px solid var(--informal)}.town-card .title{font-weight:650;font-size:var(--fs-headline);margin:0 0 var(--sp-2)}.town-card ul{margin:0 0 var(--sp-2);padding-left:var(--sp-4);font-size:var(--fs-dense)}.town-card li{margin:0 0 var(--sp-1)}.trip.cut .bar{background:repeating-linear-gradient(90deg, var(--home) 0 4px, transparent 4px 7px)}.pager{justify-content:space-between;align-items:center;gap:var(--sp-2);margin-top:var(--sp-2);font-size:var(--fs-caption);color:var(--muted);display:flex}.pager button{font-size:var(--fs-caption);padding:0 var(--sp-2);white-space:nowrap;flex:none}.pager .count{font-variant-numeric:tabular-nums;white-space:nowrap}.route-card{margin:0 0 var(--sp-2);padding:var(--sp-2) var(--sp-3);border:1px solid var(--line);border-radius:calc(var(--radius) * .8);background:var(--surface-2)}.route-card .top{justify-content:space-between;align-items:baseline;gap:var(--sp-2);display:flex}.route-card .net{font-weight:650;font-size:var(--fs-body);font-variant-numeric:tabular-nums;white-space:nowrap}.route-card .name{align-items:center;gap:var(--sp-2);font-weight:650;font-size:var(--fs-body);margin:0;display:flex}.route-card .swatch{border-radius:3px;flex:none;width:10px;height:10px}.namerow{align-items:center;gap:var(--sp-1);margin:var(--sp-1) 0 var(--sp-2);flex-wrap:wrap;display:flex}.namerow .sw{cursor:pointer;border:2px solid #0000;border-radius:50%;width:18px;min-width:0;height:18px;padding:0}.namerow .sw.on{box-shadow:0 0 0 2px var(--surface), 0 0 0 4px var(--ink)}.namein{font:600 var(--fs-body) system-ui, sans-serif;padding:var(--sp-1) var(--sp-2);border:1px solid var(--line);border-radius:var(--radius-control);background:var(--surface);color:var(--ink);width:14em}.route-card .buttons{gap:var(--sp-1);margin-left:auto;display:flex}.route-card button{width:24px;height:24px;padding:0;line-height:1}.route-card .verdict{font-size:var(--fs-dense)}.route-card .verdict.why-healthy{color:var(--good)}.route-card .bar{height:6px;margin:var(--sp-1) 0 0}.route-card small{color:var(--muted);font-size:var(--fs-caption);margin-top:var(--sp-1);display:block}.strike-badge{margin:var(--sp-1) 0;padding:var(--sp-1) var(--sp-2);border-radius:var(--radius-control);font:600 var(--fs-caption) var(--label-font);letter-spacing:.04em}.strike-badge.on{background:var(--bad);color:var(--on-fill)}.strike-badge.called{background:color-mix(in srgb, var(--strike) 18%, transparent);color:var(--strike-ink);border:1px solid var(--strike)}.panel-body .callout .actions{gap:var(--sp-2);margin-top:var(--sp-2);display:flex}.panel-body .callout .project-bar{height:6px;margin:var(--sp-2) 0 0}.strike-badge .actions{gap:var(--sp-2);margin-top:var(--sp-1);display:flex}.strike-badge.past{background:color-mix(in srgb, var(--bad) 8%, transparent);color:var(--bad)}.corridor{margin:0 0 var(--sp-2);font-size:var(--fs-dense)}.corridor .top{justify-content:space-between;gap:var(--sp-2);display:flex}.corridor .name{font-weight:650}.corridor .taken{font:600 var(--fs-caption) var(--label-font);color:var(--on-fill);background:var(--you);padding:0 var(--sp-2);border-radius:999px}.corridor .bar{height:6px;margin:var(--sp-1) 0 0}.panel-body .corridor .hint{margin:0}.corridor .noseat{color:var(--ink);margin-top:0}.corridor .wear{color:var(--muted);align-items:center;gap:var(--sp-1) var(--sp-2);flex-wrap:wrap;margin-top:0;display:flex}.corridor .wear .actions{gap:var(--sp-2);display:inline-flex}.budget{gap:0 var(--sp-2);font-size:var(--fs-dense);grid-template-columns:1fr auto;display:grid}.budget .num{font-variant-numeric:tabular-nums;text-align:right}.budget .total{border-top:1px solid var(--line);padding-top:var(--sp-1);font-weight:650}.panel-body .budget+.hint,.panel-body .budget+.callout{margin-top:var(--sp-2)}.panel-body .budget+.callout+.hint{margin-top:0}.share-bar{height:8px;margin:0 0 var(--sp-1)}.panel-body .callout kbd{font:var(--fs-caption) ui-monospace, monospace}.panel-body .townshare{margin:0 0 var(--sp-2);font-size:var(--fs-dense)}.panel-body .inside{margin:var(--sp-2) 0 var(--sp-2);padding:var(--sp-2) var(--sp-2);border-radius:var(--radius);border:1px dashed var(--line);color:var(--muted);font-size:var(--fs-dense);line-height:1.4}.panel-body .inside b{color:var(--ink)}.trip{gap:0 var(--sp-2);padding:var(--sp-1) 0;border-top:1px solid var(--line);font-size:var(--fs-body);grid-template-columns:1fr auto;display:grid}.trip .name{font-weight:600}.trip .num{font-variant-numeric:tabular-nums;color:var(--muted)}.trip .bar{grid-column:1/-1;height:6px;margin:0}.route{align-items:center;gap:var(--sp-2);padding:var(--sp-2) 0;border-top:1px solid var(--line);grid-template-columns:10px 1fr auto auto auto;display:grid}.route .detail{grid-column:2/-1}.route .detail .bar{height:6px;margin:var(--sp-1) 0}.route .why{font-size:var(--fs-dense);line-height:1.35}.route .why-healthy{color:var(--good)}.route .why-thin,.route .why-overcapacity,.route .why-long{color:var(--bad)}.route .swatch{border-radius:3px;width:10px;height:10px}.route .name{font-weight:600;font-size:var(--fs-body)}.route small{color:var(--muted);font-weight:400;font-size:var(--fs-caption);display:block}.route .net{font-variant-numeric:tabular-nums;font-weight:650;font-size:var(--fs-body)}.route button{width:24px;height:24px;padding:0;line-height:1}.chain{margin:0 0 var(--sp-2);font-size:var(--fs-dense);padding-left:var(--sp-2);border-left:3px solid var(--line)}.chain.bad{border-color:var(--bad)}.chain.warn{border-color:var(--informal)}.chain.good{border-color:var(--good)}.onway{font-size:var(--fs-dense);color:var(--ink-2);margin:0 0 var(--sp-2);line-height:1.45}#controls-col,#panel-col{top:var(--top);z-index:5;box-sizing:border-box;background:var(--surface);flex-direction:column;display:flex;position:fixed;bottom:0}#controls-col{width:var(--left);border-right:1px solid var(--line);padding:var(--sp-3);gap:var(--sp-3);left:0;overflow-y:auto}#panel-col{width:var(--right);border-left:1px solid var(--line);right:0}#panel,#log{flex:auto;min-height:0;overflow-y:auto}#overlays,#zoom-control{gap:var(--sp-1);flex-wrap:wrap;display:flex}#zoom-control button{min-width:28px}body.in3d #overlays,body.in3d #overlay-caption,body.in3d #hint,body.in3d #key{display:none!important}#overlay-caption{font-size:var(--fs-dense);color:var(--ink-2);margin-top:calc(var(--sp-1) * -1);line-height:1.4}#overlay-caption[hidden]{display:none}.label3d{pointer-events:auto;cursor:pointer;font:600 var(--fs-dense) system-ui, sans-serif;color:var(--ink);background:color-mix(in srgb, var(--surface) 85%, transparent);padding:0 var(--sp-2);border-radius:var(--radius-control);white-space:nowrap}.label3d.city{font-size:var(--fs-body)}.label3d.village{font-weight:500;font-size:var(--fs-caption);opacity:.85}.label3d.site{font-weight:500;font-size:var(--fs-caption);color:var(--goods-ink)}#toolbar{left:var(--left);right:var(--right);z-index:5;justify-content:center;gap:var(--sp-1);padding:var(--sp-1) var(--sp-2);background:var(--surface);border-top:1px solid var(--line);align-items:flex-end;display:flex;position:fixed;bottom:0}#toolbar button{white-space:nowrap;padding:var(--sp-1) var(--sp-2)}#toolbar kbd{font:var(--fs-caption) ui-monospace, monospace;opacity:.6;margin-left:var(--sp-1)}#toolbar .group{padding:var(--sp-1) var(--sp-1) var(--sp-1);border-radius:var(--radius);flex-direction:column;align-items:center;gap:0;display:flex}#toolbar .cap{font-size:var(--fs-caption);letter-spacing:.06em;text-transform:uppercase;color:var(--muted);white-space:nowrap}#toolbar .row{align-items:center;gap:0;display:flex}#toolbar .group.road,#toolbar .group.rail{background:var(--surface-2)}#toolbar .group.build{border:1px dashed var(--line)}#toolbar .group.time{margin-left:var(--sp-1)}#toolbar .switch{border:1px solid var(--line);border-radius:var(--radius-control);align-items:center;padding:0;display:flex}#toolbar .switch button{padding:var(--sp-1) var(--sp-2);border-color:#0000}#toolbar .switch kbd{margin:0 var(--sp-1)}#controls a{color:inherit}#controls{text-align:right;max-width:230px;font-size:var(--fs-caption);color:var(--muted);z-index:3;line-height:1.45;position:fixed;top:9px;right:20px}#hint{align-items:flex-start;gap:var(--sp-2);margin:var(--sp-3) var(--sp-3) 0;padding:var(--sp-2) var(--sp-2) var(--sp-2) var(--sp-3);background:var(--surface-2);border:1px solid var(--line);border-left:3px solid var(--you);border-radius:var(--radius);font-size:var(--fs-body);line-height:1.35;display:flex}#hint[hidden]{display:none}#hint button{padding:0 var(--sp-1);font:var(--fs-caption) var(--label-font);color:var(--muted);flex:none}#toast{left:calc(var(--left) + (100vw - var(--left) - var(--right)) / 2);z-index:7;box-shadow:0 6px 20px var(--shadow);background:var(--ink);color:var(--surface);padding:var(--sp-2) var(--sp-4);border-radius:var(--radius);font-size:var(--fs-body);opacity:0;pointer-events:none;max-width:calc(100% - 32px);transition:opacity .4s;position:fixed;bottom:72px;transform:translate(-50%)}#toast[data-bad=true]{background:var(--bad)}#key{box-sizing:border-box;background:var(--surface-2);border:1px solid var(--line);border-radius:var(--radius);padding:var(--sp-2) var(--sp-2);font-size:var(--fs-caption);color:var(--muted);flex:none;line-height:1.5}#key b{vertical-align:-1px;width:10px;height:10px;margin-right:var(--sp-1);border-radius:50%;display:inline-block}#key i.fam{vertical-align:-1px;width:10px;height:10px;margin:0 var(--sp-1) 0 var(--sp-1);border-radius:3px;display:inline-block}#key summary{cursor:pointer;color:var(--ink);font-weight:600}#key[open] summary{margin-bottom:var(--sp-1)}#key:not([open]){padding:var(--sp-1) var(--sp-2);align-self:flex-start}.num{font-variant-numeric:tabular-nums}.muted{color:var(--muted)}.up{color:var(--good)}.down{color:var(--bad)}.tile button{padding:0 var(--sp-2);font-size:var(--fs-body)}#strip{z-index:5;align-items:stretch;gap:var(--sp-2);padding:var(--sp-2) var(--sp-4);background:var(--ink);color:var(--on-fill);font-size:var(--fs-body);--strip-muted:color-mix(in srgb, var(--on-fill) 58%, var(--ink));--strip-rule:color-mix(in srgb, var(--on-fill) 16%, var(--ink));display:flex;position:fixed;top:0;left:0;right:0;overflow-x:auto}#strip .muted,#strip .stat .k{color:var(--strip-muted)}#strip .stat{border-right-color:var(--strip-rule)}#strip .up{color:color-mix(in srgb, var(--good) 55%, var(--on-fill))}#strip .down{color:color-mix(in srgb, var(--bad) 55%, var(--on-fill))}#strip a{color:inherit}#strip button{color:var(--on-fill);border-color:var(--strip-rule);background:0 0}#strip button:hover{border-color:var(--strip-muted)}.stat{min-width:132px;padding:0 var(--sp-3) 0 0;border-right:1px solid var(--line)}.stat:last-of-type{border-right:0}.stat .k{font-size:var(--fs-caption);color:var(--muted);text-transform:uppercase;letter-spacing:.04em}.stat .v{font-size:var(--fs-headline);font-weight:650}.stat .d{font-size:var(--fs-caption)}.stat .d a{color:inherit}.stat.term{min-width:300px;max-width:360px}.pledge{align-items:center;gap:var(--sp-2);font-size:var(--fs-caption);line-height:1.5;display:flex}.pledge .t{white-space:nowrap;text-overflow:ellipsis;color:var(--ink-2);flex:auto;overflow:hidden}.pledge.on .t{color:var(--ink);font-weight:600}.pledge.kept .t{color:var(--good)}.pledge .bar{background:var(--surface-2);border-radius:3px;flex:none;width:48px;height:5px;overflow:hidden}.pledge .bar b{background:var(--you);height:100%;display:block}.pledge.kept .bar b{background:var(--good)}.stat svg{margin-top:0;display:block}#strip .spacer{flex:1}#strip .actions{gap:var(--sp-2);align-items:center;display:flex}#log,#panel{font-size:var(--fs-body)}#log{border-top:1px solid var(--line);padding-top:var(--sp-3)}#tip{pointer-events:none;background:var(--ink);color:var(--surface);padding:var(--sp-2) var(--sp-2);border-radius:var(--radius-control);font-size:var(--fs-dense);z-index:20;max-width:280px;display:none;position:fixed}#log h2,#panel .pane>h2,#panel .pane>.chart+h2,#panel .pane h2:not(.panel-body h2){font-size:var(--fs-caption);text-transform:uppercase;letter-spacing:.05em;color:var(--muted);margin:var(--sp-4) 0 var(--sp-2);font-weight:600}#log h2:first-child{margin-top:0}.event{gap:var(--sp-2);padding:var(--sp-1) 0;border-bottom:1px solid var(--line);cursor:pointer;grid-template-columns:34px 1fr;display:grid}.event:hover{background:var(--surface-2)}.event .day{color:var(--muted);font-variant-numeric:tabular-nums}.event.bad .what{color:var(--bad)}.event.good .what{color:var(--good)}#logfilter{gap:var(--sp-1);margin-bottom:var(--sp-2);flex-wrap:wrap;display:flex}#logfilter button{padding:0 var(--sp-2);font-size:var(--fs-caption)}.tabs{gap:var(--sp-1);padding:var(--sp-2) var(--sp-3) 0;display:flex}.pane{padding:var(--sp-2) var(--sp-3) var(--sp-4)}#panel table,#revenue table{border-collapse:collapse;width:100%;font-size:var(--fs-dense)}#panel th,#revenue th{text-align:right;color:var(--muted);padding:var(--sp-1) var(--sp-1);cursor:pointer;white-space:nowrap;border-bottom:1px solid var(--line);font-weight:600}#panel th:first-child,#panel td:first-child,#revenue th:first-child,#revenue td:first-child{text-align:left}#panel th.sorted,#revenue th.sorted{color:var(--ink)}#panel td,#revenue td{text-align:right;padding:var(--sp-1) var(--sp-1);border-bottom:1px solid var(--line);font-variant-numeric:tabular-nums}tr.row{cursor:pointer}tr.row:hover td{background:var(--surface-2)}.swatch{width:8px;height:8px;margin-right:var(--sp-2);vertical-align:1px;border-radius:2px;display:inline-block}.head{justify-content:space-between;align-items:baseline;gap:var(--sp-2);display:flex}.head .title{font-size:var(--fs-headline);font-weight:650}.kicker{font-size:var(--fs-caption);color:var(--muted);text-transform:uppercase;letter-spacing:.04em}.tiles{gap:var(--sp-2);margin:var(--sp-2) 0;grid-template-columns:1fr 1fr;display:grid}.tile{background:var(--surface-2);border-radius:var(--radius);padding:var(--sp-2) var(--sp-2)}.tile .k{font-size:var(--fs-caption);color:var(--muted)}.tile .v{font-size:var(--fs-headline);font-weight:650}.problem{margin:var(--sp-2) 0;padding:var(--sp-2) var(--sp-2);border-radius:var(--radius);background:color-mix(in srgb, var(--warn) 12%, var(--surface));border-left:3px solid var(--warn);gap:var(--sp-2);flex-wrap:wrap;justify-content:space-between;align-items:center;display:flex}.problem>span{flex:180px}.problem button{flex:none;max-width:100%}.problem.none{background:var(--surface-2);border-left-color:var(--good)}.seethrough{margin:var(--sp-2) 0 var(--sp-2);background:var(--surface-2);border-radius:var(--radius);padding:var(--sp-2) var(--sp-2) var(--sp-2)}.seethrough svg{width:100%;height:auto;display:block}.seethrough .t{font:var(--fs-caption) system-ui, sans-serif;fill:var(--ink-2)}.seethrough .t.muted{fill:var(--muted)}.seethrough .t.warn{fill:var(--warn);font-weight:600}.seethrough .t.bad{fill:var(--bad);font-weight:600}.seethrough .t.small{font-size:var(--fs-caption)}.seethrough figcaption{font-size:var(--fs-dense);padding:var(--sp-1) var(--sp-2) 0}.seethrough figcaption.warn{color:var(--ink);font-weight:600}.seethrough .flow{animation:linear infinite flowdash}.seethrough .smoke{transform-box:fill-box;transform-origin:50%;animation:2.4s ease-out infinite smoke}@keyframes flowdash{to{stroke-dashoffset:-28px}}@keyframes smoke{0%{opacity:.7;transform:translateY(0)scale(.6)}to{opacity:0;transform:translateY(-14px)scale(1.4)}}.waiting{padding-bottom:var(--sp-1);margin-bottom:var(--sp-2);border-bottom:1px solid var(--line)}.waiting .problem{margin:var(--sp-2) 0}[data-back]{margin-bottom:var(--sp-2)}.bar3{border-radius:var(--radius-control);background:var(--surface);gap:0;height:8px;display:flex;overflow:hidden}.bar3 i{height:100%;display:block}.chart{margin:var(--sp-2) 0 var(--sp-3)}.chart .t{font-size:var(--fs-caption);color:var(--muted);justify-content:space-between;display:flex}.chart-empty{font-size:var(--fs-dense);padding:var(--sp-2) 0}details.more{margin:var(--sp-4) 0 0;border-top:1px solid var(--line);padding-top:var(--sp-2)}details.more>summary{cursor:pointer;font-size:var(--fs-dense);color:var(--ink-2);font-weight:600}details.more>.panel-body{padding-top:var(--sp-2)}.panel-body .k{font-family:var(--label-font);font-size:var(--fs-caption);text-transform:uppercase;letter-spacing:var(--label-tracking);color:var(--muted)}@media (width<=1100px){:root{--left:0px}#log{display:none}}#strip .stat.opens{cursor:pointer;border-radius:var(--radius-control)}#strip .stat.opens:hover{background:var(--surface-2)}#strip .stat.opens .k:after{content:" ›"}.problem .age{color:var(--muted);white-space:nowrap}.pledges-pane .pledge{padding:var(--sp-2) var(--sp-2);margin-bottom:var(--sp-1);border-radius:var(--radius-control);background:var(--surface-2);font-size:var(--fs-dense);line-height:1.4;display:block}.pledges-pane .pledge .t{white-space:normal;text-overflow:clip;display:block;overflow:visible}.pledges-pane .pledge .row{align-items:center;gap:var(--sp-2);margin-top:var(--sp-1);display:flex}.pledges-pane .pledge .bar{background:var(--line);flex:auto;width:auto}.pledges-pane .pledge button{font-size:var(--fs-dense);padding:0 var(--sp-2);flex:none}.hero.opens{cursor:pointer}#revenue{background:var(--bg);z-index:10;padding:var(--sp-4) var(--sp-6) calc(var(--sp-1) * 10);font-size:var(--fs-body);display:none;position:fixed;inset:0;overflow-y:auto}#revenue.open{display:block}#verdict{background:var(--bg);z-index:11;padding:var(--sp-4) var(--sp-6) calc(var(--sp-1) * 10);font-size:var(--fs-body);display:none;position:fixed;inset:0;overflow-y:auto}#verdict.open{display:block}#verdict .top{margin-bottom:var(--sp-4);justify-content:space-between;align-items:center;gap:var(--sp-3);display:flex}#verdict .top .title{font-size:var(--fs-headline);font-weight:700}#verdict .lede{font-size:var(--fs-body);margin:0 0 var(--sp-4);max-width:760px}#verdict ul.pledges{margin:0 0 var(--sp-4);padding:0;list-style:none}#verdict ul.pledges li{padding:var(--sp-2) 0;border-bottom:1px solid var(--line)}#verdict ul.pledges li .move{font-size:var(--fs-dense);margin-top:0}#verdict ul.pledges li .move .bad{color:var(--bad)}#verdict ul.pledges li .move .good{color:var(--good)}#verdict ul.pledges li.kept:before{content:"✓ ";color:var(--good);font-weight:700}#verdict ul.pledges li.missed:before{content:"✗ ";color:var(--bad);font-weight:700}#verdict table{border-collapse:collapse;min-width:560px}#verdict td,#verdict th{padding:var(--sp-2) var(--sp-3) var(--sp-2) 0;text-align:left;border-bottom:1px solid var(--line)}#verdict ul.pledges.choose li{font-size:var(--fs-body)}#verdict ul.pledges.choose li .line{justify-content:space-between;align-items:center;gap:var(--sp-3);display:flex}#revenue .top{margin-bottom:var(--sp-4);justify-content:space-between;align-items:center;display:flex}#revenue .top .title{font-size:var(--fs-headline);font-weight:700}.heroes{gap:var(--sp-3);margin-bottom:var(--sp-4);grid-template-columns:repeat(4,minmax(0,1fr));display:grid}.hero{background:var(--surface);border-radius:var(--radius);padding:var(--sp-3) var(--sp-4)}.hero .k{font-size:var(--fs-caption);color:var(--muted);text-transform:uppercase;letter-spacing:.04em}.hero .v{font-size:var(--fs-headline);font-weight:700}.cards{gap:var(--sp-4);grid-template-columns:1fr 1fr;display:grid}.card{background:var(--surface);border-radius:var(--radius);padding:var(--sp-3) var(--sp-4);min-width:0}.card h3{font-size:var(--fs-body);margin:0}.card .sub{font-size:var(--fs-dense);color:var(--muted);margin-bottom:var(--sp-2)}.card.wide{grid-column:1/-1}.keyrow{gap:var(--sp-3);font-size:var(--fs-dense);color:var(--ink-2);margin-bottom:var(--sp-1);flex-wrap:wrap;display:flex}.keyrow span{align-items:center;gap:var(--sp-1);display:inline-flex}.keyrow i{border-radius:2px;width:10px;height:10px;display:inline-block}.ranges{gap:var(--sp-1);display:flex}.card.treasury .tab{align-items:center;gap:var(--sp-2);font-size:var(--fs-dense);flex-wrap:wrap;display:flex}.card.treasury .tab .more{display:none}.card.treasury .tgrid{gap:var(--sp-2) var(--sp-4);grid-template-columns:repeat(4,minmax(0,1fr));display:grid}.card.treasury .tcol h3{margin:var(--sp-2) 0 var(--sp-1);font:600 var(--fs-caption) var(--label-font);letter-spacing:.06em;text-transform:uppercase;color:var(--muted)}@media (width<=1100px){.card.treasury .tgrid{grid-template-columns:1fr 1fr}}@media (width<=900px){:root{--right:300px}.heroes,.cards{grid-template-columns:1fr}}#loading{z-index:50;background:var(--bg);place-items:center;display:grid;position:fixed;inset:0}#loading .box{background:var(--surface);border-radius:var(--radius);width:min(420px,100% - 32px);padding:var(--sp-6) var(--sp-6);box-shadow:0 6px 24px var(--shadow)}#loading .title{font-size:var(--fs-headline);font-weight:700}#loading .map{font-size:var(--fs-body);margin-bottom:var(--sp-2)}#loading p{margin:0 0 var(--sp-4);font-size:var(--fs-body);color:var(--ink-2);line-height:1.45}#loading .bar{height:8px;margin:var(--sp-6) 0 0;border-radius:var(--radius-control);background:var(--road-free);position:relative}#loading .bar.rail{background:repeating-linear-gradient(90deg, var(--rail) 0 2px, transparent 2px 7px), linear-gradient(var(--rail), var(--rail)) 0 50% / 100% 1.5px no-repeat;border-radius:0;height:4px}#loading .bar i{background:var(--you);border-radius:var(--radius-control);width:0;height:100%;transition:width .15s linear;display:block}#loading .bar.rail i{height:2px;margin-top:0}#loading .bar .vehicle{filter:drop-shadow(0 1px 2px var(--shadow));line-height:0;transition:left .15s linear;position:absolute;top:50%;left:0;transform:translate(-92%,-50%)}#loading .bar{margin-left:var(--sp-2);margin-right:var(--sp-2);display:block;overflow:visible}#loading .progress{font-size:var(--fs-dense);margin-top:var(--sp-2);font-variant-numeric:tabular-nums}.letter{max-width:62ch;margin:var(--sp-2) 0 var(--sp-4);padding:var(--sp-4) var(--sp-6);background:var(--surface);border:1px solid var(--line);border-left:3px solid var(--ink-2);border-radius:var(--radius-control);font-family:var(--letter-font);font-size:var(--fs-body);color:var(--ink);line-height:1.6}.letter p{margin:0 0 var(--sp-2)}.letter .sig{margin:var(--sp-4) 0 0;font-style:italic}.letter .sig span{font-style:normal;font-family:var(--label-font);font-size:var(--fs-caption);letter-spacing:.05em;text-transform:uppercase;color:var(--muted);margin-top:0;display:block}.letterwith{gap:var(--sp-4);flex-wrap:wrap;align-items:flex-start;display:flex}.letterwith .letter{margin-top:var(--sp-2);flex:340px}.thenandnow{margin:var(--sp-2) 0 var(--sp-4);flex:none}.thenandnow svg{max-width:100%;height:auto;display:block}.thenandnow .tn-land{fill:var(--map-land,var(--surface));stroke:var(--line)}.thenandnow .tn-water{fill:none;stroke:var(--map-water);stroke-linecap:round;stroke-linejoin:round;opacity:.8}.thenandnow .tn-then{fill:none;stroke:var(--muted);stroke-width:1px;opacity:.45;stroke-dasharray:2 2}.thenandnow .tn-then-rail{fill:none;stroke:var(--muted);stroke-width:1px;opacity:.45;stroke-dasharray:1 3}.thenandnow .tn-built{fill:none;stroke:var(--ink-2);stroke-width:1.6px;stroke-linecap:round}.thenandnow .tn-paved{fill:none;stroke:var(--ink);stroke-width:2.4px;stroke-linecap:round}.thenandnow .tn-rail{fill:none;stroke:var(--you);stroke-width:2.2px;stroke-dasharray:5 2}.thenandnow .tn-was{fill:none;stroke:var(--surface);stroke-width:1.2px}.thenandnow .tn-was.tn-shrank{stroke:var(--bad);stroke-dasharray:1.5 1.5}.thenandnow .tn-town{fill:var(--ink-2);opacity:.85}.thenandnow .tn-town.tn-new{fill:var(--good)}.thenandnow .tn-pin circle{fill:none;stroke:var(--warn);stroke-width:2px}.thenandnow .tn-pin text{font:600 var(--fs-caption) system-ui, sans-serif;fill:var(--ink);paint-order:stroke;stroke:var(--surface);stroke-width:3px}.thenandnow figcaption{font-size:var(--fs-caption);color:var(--muted);margin-top:var(--sp-2)}.thenandnow .tn-key{border-top:2px solid var(--ink-2);vertical-align:middle;width:16px;height:0;margin:0 var(--sp-1) 0 var(--sp-2);display:inline-block}.thenandnow .tn-key:first-child{margin-left:0}.thenandnow .tn-key.then{border-top:1px dashed var(--muted)}.thenandnow .tn-key.paved{border-top-width:3px;border-color:var(--ink)}.thenandnow .tn-key.rail{border-top:2px dashed var(--you)}
