:root{color-scheme:dark;--bg:#071116;--panel:#0b1b21;--panel-2:#0e2026;--line:#203840;--line-soft:#182f36;--text:#e8f1ed;--muted:#97aaa7;--quiet:#6e8583;--mint:#80e7c0;--mint-2:#3fbf99;--amber:#e7b372;--blue:#89b8ff;--font:Manrope,Inter,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;--mono:"DM Mono",ui-monospace,SFMono-Regular,monospace}
*{box-sizing:border-box}html{min-width:320px;background:var(--bg);scroll-behavior:smooth}body{margin:0;background:radial-gradient(ellipse at 76% 8%,#12322d 0,transparent 31rem),linear-gradient(180deg,#08161a 0,#071116 62rem);color:var(--text);font-family:var(--font);font-size:14px;-webkit-font-smoothing:antialiased}a{color:inherit;text-decoration:none}button,input{font:inherit}.skip-link{position:absolute;z-index:20;top:8px;left:8px;transform:translateY(-150%);padding:10px 14px;border-radius:8px;background:var(--mint);color:#071116;font-weight:800}.skip-link:focus{transform:none}.city-header{height:70px;display:flex;align-items:center;justify-content:space-between;gap:20px;padding:0 clamp(20px,5vw,76px);border-bottom:1px solid #24404780;background:#081419d9;backdrop-filter:blur(18px)}.brand{display:inline-flex;align-items:center;gap:10px;font-size:15px;font-weight:800;letter-spacing:-.04em}.brand>span{display:grid;place-items:center;width:29px;height:29px;border:1px solid #43836e;border-radius:9px;color:var(--mint);font-size:17px}.header-links{display:flex;align-items:center;gap:23px;color:#a8bab6;font-size:11px;font-weight:700}.header-links a:hover,.city-footer a:hover{color:var(--mint)}.header-live{padding:9px 12px;border:1px solid #416557;border-radius:8px;color:#c6f6df}.header-live span{margin-left:6px;color:var(--mint)}.city-shell{width:min(1480px,100%);margin:0 auto;padding:56px clamp(18px,4vw,62px) 34px}.hero{display:flex;justify-content:space-between;align-items:flex-end;gap:30px;margin:0 0 28px}.eyebrow,.section-kicker{margin:0 0 13px;color:#92aba5;font:500 10px/1.2 var(--mono);letter-spacing:.14em}.eyebrow{display:flex;align-items:center;gap:9px}.eyebrow>i,.signal-dot{width:7px;height:7px;border-radius:50%;background:var(--mint);box-shadow:0 0 11px #80e7c0a0}.eyebrow>span{margin-left:3px;color:var(--amber);font-size:9px}.hero h1{margin:0;color:#f1f6f2;font-size:clamp(34px,4vw,55px);font-weight:600;line-height:1.04;letter-spacing:-.06em}.hero h1 em{color:var(--mint);font-style:normal}.lede{max-width:650px;margin:14px 0 0;color:#9aafaa;font-size:14px;line-height:1.65}.simulation-badge{display:flex;align-items:center;gap:12px;flex:none;margin-bottom:2px;padding:12px 15px;border:1px solid #31534b;border-radius:12px;background:#10251f99;box-shadow:inset 0 0 25px #80e7c008}.badge-orbit{display:grid;place-items:center;width:34px;height:34px;border:1px solid #548470;border-radius:50%;color:var(--mint);font-size:17px;animation:orbit-pulse 3s ease-in-out infinite}.simulation-badge b,.simulation-badge small{display:block}.simulation-badge b{color:#c6f6df;font:500 9px var(--mono);letter-spacing:.13em}.simulation-badge small{margin-top:4px;color:#8ba29b;font-size:10px}.panel{border:1px solid var(--line);border-radius:16px;background:linear-gradient(145deg,#0d2026f2,#09181d);box-shadow:0 18px 60px #0000001d}.control-room{display:grid;grid-template-columns:minmax(0,1.6fr) minmax(330px,.78fr);gap:14px;align-items:stretch}.map-panel{min-width:0;padding:15px 15px 12px}.panel-topline,.detail-topline{display:flex;align-items:center;justify-content:space-between;gap:12px;color:#829b97;font:500 9px var(--mono);letter-spacing:.11em}.panel-topline>span:first-child,.detail-topline>span:first-child{display:inline-flex;align-items:center;gap:9px}.panel-topline b{color:#425e5d}.panel-topline>span:last-child{color:#657d7b}.map-wrap{margin-top:12px;overflow:hidden;border:1px solid #1c3439;border-radius:13px;background:#08151a}.city-map{display:block;width:100%;height:auto;min-height:320px}.street-lines{fill:none;stroke:#7e9c9b;stroke-width:2;stroke-opacity:.17}.route-lines>path{fill:none;stroke:url(#route-glow);stroke-width:2.1;stroke-linecap:round;stroke-dasharray:5 8;stroke-opacity:.6}.route-runner{fill:#effff5;stroke:var(--mint);stroke-width:1.5;filter:drop-shadow(0 0 8px #80e7c0)}.route-runner-blue{fill:#e6f2ff;stroke:var(--blue)}.district{cursor:pointer;outline:none}.district-shape{fill:#10252b80;stroke:#355159;stroke-width:1.3;stroke-dasharray:3 4;transition:fill .2s,stroke .2s,stroke-width .2s}.district:hover .district-shape,.district:focus .district-shape{fill:#17382f80;stroke:#9ae7c8;stroke-width:2}.district.is-selected .district-shape{fill:#20463870;stroke:var(--mint);stroke-width:2;stroke-dasharray:0;filter:drop-shadow(0 0 8px #80e7c030)}.district-orbit{fill:#0b191e;stroke:#66887f;stroke-width:1.5;transition:stroke .2s,fill .2s}.district.is-selected .district-orbit{fill:#194234;stroke:#a4f1cb;filter:drop-shadow(0 0 10px #80e7c0a0)}.district-core{fill:#f0c182;filter:drop-shadow(0 0 5px #e7b372)}.district.is-selected .district-core{fill:#bfffe0}.district text{fill:#d6e4df;text-anchor:middle;font:700 10px var(--mono);letter-spacing:.12em;pointer-events:none}.district text.district-index{fill:#78918b;font-size:7px;letter-spacing:.17em}.district.is-selected text{fill:#c6f6df}.district.is-selected text.district-index{fill:#9dc4b0}.map-label rect{fill:#0b1c20;stroke:#29444a}.map-label circle{fill:var(--mint);filter:drop-shadow(0 0 5px var(--mint))}.map-label text{fill:#aec3bc;font:500 8px var(--mono);letter-spacing:.1em}.map-footer{fill:#68817c;font:500 8px var(--mono);letter-spacing:.13em}.map-footer tspan{fill:var(--amber)}.map-legend{display:flex;align-items:center;gap:19px;padding:12px 4px 0;color:#829a94;font-size:9px}.map-legend>span{display:inline-flex;align-items:center;gap:7px}.legend-route{width:18px;border-top:2px dashed var(--mint)}.legend-node{width:9px;height:9px;border:1px solid var(--mint);border-radius:50%;box-shadow:0 0 7px #80e7c077}.map-hint{margin-left:auto;color:#647b77}.detail-panel{display:flex;flex-direction:column;min-width:0;padding:15px}.detail-topline>span:first-child{color:#9bb1ab}.detail-topline b{color:var(--mint);font-weight:500}.sim-chip{padding:5px 7px;border:1px solid #345249;border-radius:5px;color:#9fd6bd;font-size:8px}.scene-frame{position:relative;margin-top:13px;overflow:hidden;border:1px solid #244147;border-radius:12px;background:#08151a}.scene-svg{display:block;width:100%;height:auto}.scene-buildings path:first-child{fill:#10252b;stroke:#29434a;stroke-width:1}.scene-buildings path:last-child{fill:#25473d;opacity:.58}.road-mark{fill:none;stroke:#72918b;stroke-width:1;stroke-dasharray:6 9;stroke-opacity:.58}.scene-route{fill:none;stroke:url(#vehicle-glow);stroke-width:2;stroke-linecap:round;stroke-dasharray:4 8;opacity:.64}.vehicle rect{fill:#d3e6d9;stroke:#80e7c0;stroke-width:1;filter:drop-shadow(0 0 5px #80e7c0a0)}.vehicle circle{fill:#e7b372}.vehicle-one{animation:vehicle-drift 6s linear infinite}.vehicle-two{animation:vehicle-drift 8s linear -3s infinite}.scene-scan{position:absolute;inset:0;pointer-events:none;overflow:hidden}.scene-scan path{stroke:#9bf0ca;stroke-opacity:.09;stroke-width:15;animation:scan 6s linear infinite}.scene-stamp rect{fill:#0b1c20;stroke:#29444a}.scene-stamp circle{fill:#e7b372}.scene-stamp text,.scene-caption{fill:#8ea69f;font:500 8px var(--mono);letter-spacing:.1em}.scene-corner{position:absolute;width:12px;height:12px;border-color:#88dfb9;border-style:solid;opacity:.8}.corner-a{top:8px;left:8px;border-width:1px 0 0 1px}.corner-b{top:8px;right:8px;border-width:1px 1px 0 0}.corner-c{bottom:8px;left:8px;border-width:0 0 1px 1px}.corner-d{right:8px;bottom:8px;border-width:0 1px 1px 0}.selected-place{display:flex;align-items:center;justify-content:space-between;margin:16px 1px 0}.place-kicker{margin:0 0 4px;color:#78918b;font:500 8px var(--mono);letter-spacing:.13em}.selected-place h2{margin:0;color:#eef5f0;font-size:20px;font-weight:600;letter-spacing:-.04em}.place-index{display:grid;place-items:center;width:37px;height:37px;border:1px solid #345149;border-radius:50%;color:var(--mint);font:500 11px var(--mono)}.place-summary{min-height:33px;margin:7px 1px 0;color:#9aacaa;font-size:10px;line-height:1.5}.metrics-grid{display:grid;grid-template-columns:1fr 1fr;gap:9px;margin-top:13px}.metric{min-width:0;padding:10px 11px;border:1px solid #1d353b;border-radius:10px;background:#0c1e23}.metric>span,.metric small{display:block;color:#738a86;font:500 8px var(--mono);letter-spacing:.08em}.metric>b{display:block;margin:6px 0 1px;color:#e6f2ea;font-size:22px;font-weight:600;line-height:1.05;letter-spacing:-.04em;font-variant-numeric:tabular-nums}.metric>b span{margin-left:2px;color:var(--mint);font-size:13px}.metric small{color:#718884;font-size:8px;letter-spacing:0}.insight-card{display:flex;gap:10px;align-items:flex-start;margin-top:11px;padding:11px;border:1px solid #355044;border-radius:10px;background:linear-gradient(120deg,#112720,#0e1c21)}.insight-icon{display:grid;place-items:center;flex:none;width:25px;height:25px;border:1px solid #456d58;border-radius:8px;color:var(--mint);font-size:13px}.insight-label{color:#94b6a2;font:500 8px var(--mono);letter-spacing:.1em}.insight-card p{margin:4px 0 0;color:#c5d3cb;font-size:9px;line-height:1.5}.open-live-link{display:flex;justify-content:space-between;align-items:center;gap:12px;margin-top:auto;padding:12px 2px 0;color:#a8d9c0;font-size:10px;font-weight:700}.open-live-link:hover{color:#dbffed}.open-live-link span{color:var(--mint);font-size:14px}.timeline-panel{margin-top:14px;padding:19px 20px 15px}.timeline-heading{display:flex;align-items:flex-end;justify-content:space-between;gap:20px}.timeline-heading .section-kicker{margin-bottom:6px}.timeline-heading h2{margin:0;color:#e9f2ed;font-size:20px;font-weight:600;letter-spacing:-.04em}.clock-readout{text-align:right}.clock-readout span{display:block;color:var(--mint);font:500 18px var(--mono);font-variant-numeric:tabular-nums}.clock-readout small{display:block;margin-top:3px;color:#6e8580;font:500 7px var(--mono);letter-spacing:.1em}.timeline-graph{display:grid;grid-template-columns:repeat(24,minmax(2px,1fr));align-items:end;gap:5px;height:62px;margin-top:15px;padding:0 2px;border-bottom:1px solid #294047}.timeline-bar{position:relative;display:block;min-height:6px;border-radius:4px 4px 0 0;background:linear-gradient(180deg,#88e7c1aa,#3e89726b);opacity:.62;transition:height .25s,opacity .2s,background .2s}.timeline-bar.is-current{background:linear-gradient(180deg,#bfffe0,#55c49a);opacity:1;box-shadow:0 0 16px #80e7c030}.range-row{display:grid;grid-template-columns:42px 1fr 42px;align-items:center;gap:9px;margin-top:9px;color:#6e8580;font:500 8px var(--mono)}input[type=range]{width:100%;height:20px;margin:0;appearance:none;background:transparent;cursor:pointer}input[type=range]::-webkit-slider-runnable-track{height:3px;border-radius:4px;background:linear-gradient(90deg,#376a5e,#263e41)}input[type=range]::-moz-range-track{height:3px;border-radius:4px;background:linear-gradient(90deg,#376a5e,#263e41)}input[type=range]::-webkit-slider-thumb{width:13px;height:13px;margin-top:-5px;appearance:none;border:2px solid #071116;border-radius:50%;background:var(--mint);box-shadow:0 0 0 2px #84e6be66,0 0 14px #80e7c0b0}input[type=range]::-moz-range-thumb{width:10px;height:10px;border:2px solid #071116;border-radius:50%;background:var(--mint);box-shadow:0 0 0 2px #84e6be66,0 0 14px #80e7c0b0}.timeline-controls{display:flex;align-items:center;gap:13px;margin-top:12px}.play-control,.reset-control{display:inline-flex;align-items:center;justify-content:center;gap:8px;min-height:34px;padding:0 12px;border:1px solid #315046;border-radius:8px;background:#10251f;color:#c3f1da;font-size:10px;font-weight:700;cursor:pointer;transition:background .2s,border-color .2s,transform .2s}.play-control:hover,.reset-control:hover{border-color:#72bb95;background:#15332b}.play-control:active,.reset-control:active{transform:translateY(1px)}.play-control span:first-child{color:var(--mint);font-size:9px}.timeline-controls p{flex:1;margin:0;color:#718884;font:500 8px var(--mono);letter-spacing:.04em}.reset-control{border-color:#293f44;background:transparent;color:#91a5a0}.city-footer{display:flex;align-items:center;justify-content:space-between;gap:16px;padding:19px 3px 0;color:#708781;font-size:9px}.city-footer p{margin:0}.city-footer p:first-child{color:#a1b8ac;font:500 8px var(--mono);letter-spacing:.08em}.city-footer p:first-child span{margin-right:5px;color:var(--mint)}.city-footer a{color:#a8d9c0;font-weight:700}.visually-hidden{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}
@keyframes orbit-pulse{0%,100%{box-shadow:0 0 0 0 #80e7c000;transform:rotate(0)}50%{box-shadow:0 0 18px 1px #80e7c022;transform:rotate(35deg)}}@keyframes vehicle-drift{0%{transform:translate(38px,145px)}50%{transform:translate(238px,174px)}100%{transform:translate(482px,204px)}}@keyframes scan{from{transform:translateY(0)}to{transform:translateY(300px)}}
@media(max-width:980px){.city-shell{padding-top:40px}.control-room{grid-template-columns:minmax(0,1.15fr) minmax(310px,.85fr)}.city-map{min-height:260px}.map-legend{gap:12px}.detail-panel{padding:12px}.city-footer{flex-wrap:wrap}}
@media(max-width:760px){.city-header{height:62px;padding:0 18px}.header-links{gap:14px;font-size:10px}.city-shell{padding:35px 14px 24px}.hero{align-items:flex-start;flex-direction:column;gap:18px}.hero h1{font-size:42px}.simulation-badge{padding:9px 12px}.control-room{grid-template-columns:1fr}.map-panel{padding:11px}.city-map{min-height:0}.detail-panel{padding:13px}.scene-frame{max-height:300px}.scene-svg{max-height:300px}.map-legend{flex-wrap:wrap}.map-hint{width:100%;margin:0}.timeline-panel{padding:16px 14px 13px}.timeline-graph{gap:3px;height:52px}.timeline-controls{flex-wrap:wrap}.timeline-controls p{order:3;flex-basis:100%}.city-footer{align-items:flex-start;flex-direction:column;gap:8px}}
@media(max-width:420px){.header-links>a:first-child{display:none}.hero h1{font-size:37px}.lede{font-size:12px}.panel-topline,.detail-topline{font-size:8px}.panel-topline>span:last-child{font-size:7px}.metrics-grid{gap:6px}.metric{padding:9px}.metric>b{font-size:20px}}
@media(prefers-reduced-motion:reduce){*,*::before,*::after{scroll-behavior:auto!important;animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}}
.neighborhood-layer .district-shape{fill:rgba(72,179,136,var(--heat));stroke:#6f9185;stroke-opacity:.58;stroke-width:1.2;vector-effect:non-scaling-stroke;transition:fill .18s,stroke .18s,stroke-width .18s;cursor:pointer}.neighborhood-layer .district:hover .district-shape,.neighborhood-layer .district:focus .district-shape{fill:#367d65;stroke:#d3ffe8;stroke-opacity:1;stroke-width:2.2}.neighborhood-layer .district.is-selected .district-shape{fill:#51c795;stroke:#c8ffe1;stroke-opacity:1;stroke-width:2.5;filter:drop-shadow(0 0 5px #80e7c060)}.selected-area-marker{pointer-events:none;transition:transform .28s ease}.marker-halo{fill:#80e7c02a;stroke:#bbf5d8;stroke-width:2;vector-effect:non-scaling-stroke;filter:drop-shadow(0 0 8px #80e7c0a0)}.marker-core{fill:#f4c181;stroke:#061116;stroke-width:2;vector-effect:non-scaling-stroke}.selected-area-marker text{fill:#f1fff6;font:700 17px var(--mono);letter-spacing:1.4px;paint-order:stroke;stroke:#071116;stroke-width:5px;stroke-linejoin:round}.map-label text{fill:#aec3bc;font:500 8px var(--mono);letter-spacing:.1em}.map-label rect{fill:#0b1c20;stroke:#29444a}.map-label circle{fill:var(--mint);filter:drop-shadow(0 0 5px var(--mint))}.map-footer{fill:#68817c;font:500 8px var(--mono);letter-spacing:.13em}.map-footer tspan{fill:var(--amber)}.legend-activity{width:13px;height:9px;border:1px solid #80e7c0;border-radius:2px;background:linear-gradient(90deg,#17372d,#51c795)}.scene-route{stroke:var(--scene-accent,#80e7c0)}.vehicle rect{stroke:var(--scene-accent,#80e7c0)}
@media(max-width:760px){.header-links>a:first-child{display:none}.header-links{gap:8px}.header-live{padding:8px 10px}}
