:root{--ink:#111e24;--deep:#0e1b21;--panel:#14242a;--panel2:#192a30;--edge:#344449;--muted:#91a0a1;--gold:#d9b47b;--pale:#eee7d7;--water:#7dbfba;--font:'Trebuchet MS',Arial,sans-serif;--serif:Georgia,'Times New Roman',serif}
*{box-sizing:border-box}html,body{margin:0;width:100%;height:100%;font-family:var(--font);overflow:hidden;background:#101f25;color:var(--pale)}button,input,select{font:inherit}button{cursor:pointer}button:focus-visible,input:focus-visible,select:focus-visible{outline:2px solid var(--water);outline-offset:2px}button:disabled{opacity:.4;cursor:default}.app-shell{display:flex;width:100%;height:100dvh}.sidebar{width:317px;min-width:317px;background:linear-gradient(180deg,#101e24,#13262b 70%,#102027);border-right:1px solid #405056;display:flex;flex-direction:column;z-index:30;box-shadow:3px 0 25px #0003}.brand{display:flex;align-items:center;gap:12px;padding:25px 20px 23px;border-bottom:1px solid #34454a}.brand-logo{font:normal 38px Georgia,serif;border:1px solid #a98b59;color:#e0c394;width:51px;height:51px;display:grid;place-items:center;line-height:1}.brand-logo span{color:var(--water)}.eyebrow,.brand .eyebrow{letter-spacing:1.8px;font-weight:700;font-size:8px;color:#89a4a4}.brand-name{font:600 20px var(--serif);letter-spacing:4px;color:#e7d9b7;margin-top:3px}.brand-sub{font-size:8px;letter-spacing:2.2px;color:#9a9e92;margin-top:4px}.sidebar-scroll{overflow-y:auto;scrollbar-color:#4b6267 transparent;scrollbar-width:thin;flex:1}.historical-line{padding:18px 20px 11px;font:italic 12px Georgia,serif;line-height:1.6;color:#a9ac9e}.symbol{color:var(--gold);padding-right:8px}.panel-section{padding:17px 19px 22px;border-bottom:1px solid #2a3d41}.section-label{font-size:11px;font-weight:700;letter-spacing:1.6px;color:#e1d7c2;display:flex;align-items:center;gap:9px}.section-label>span{color:#b89a67;font-family:Georgia,serif;font-size:14px}.section-label small{margin-left:auto;color:#6f8d91;font-size:8px;letter-spacing:.7px}.section-copy{font-size:11px;color:#8d9e9f;margin:9px 0 14px;line-height:1.6}.district-list{display:flex;flex-direction:column;gap:4px}.district{background:transparent;border:1px solid transparent;color:#b5c2be;text-align:left;padding:10px 8px 10px 6px;display:flex;gap:12px;align-items:center;transition:.2s}.district:hover{background:#21363a}.district.active{background:linear-gradient(90deg,#2c4544aa,#18303255);border:1px solid #53716b;border-left:2px solid var(--gold);color:#f8f1dc}.district-icon{width:29px;height:27px;display:grid;place-items:center;border:1px solid #42605f;color:#b7b396;font-size:16px;flex-shrink:0}.district b{font-size:12px;font-weight:600;display:block}.district small{font-size:10px;color:#8d9f9d;display:block;padding-top:3px}.district-arrow{margin-left:auto;color:#718887;font-size:17px}.gate-list{padding:11px 0 2px}.gate-row{margin-bottom:15px}.small-row,.gate-title{display:flex;justify-content:space-between;gap:5px;align-items:center}.gate-title{font-size:11px;color:#c9d1c6;margin-bottom:8px}.gate-title strong,.small-row b{font-size:10px;color:#a8d7cf;font-weight:600;font-variant-numeric:tabular-nums}.small-row{font-size:9px;color:#a1b3b0;letter-spacing:1.1px;font-weight:700;margin:14px 0 8px}.sidebar input[type=range]{appearance:none;width:100%;height:3px;background:#3b5559;border-radius:5px;display:block;margin:8px 0 18px;accent-color:var(--water)}.sidebar input[type=range]::-webkit-slider-thumb{appearance:none;width:12px;height:12px;background:var(--gold);border:2px solid #253f41;border-radius:50%;box-shadow:0 0 0 2px #a9baaf}.scenario-grid{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin-top:13px}.scenario{background:#1a2b30;border:1px solid #395156;color:#aabdbc;font-size:11px;padding:10px 3px;border-radius:3px}.scenario:hover,.scenario.active{border-color:#a68d5b;background:#263b3b;color:#ebd4a6}.notes p{font:12px/1.7 Georgia,serif;color:#aeb9ab}.sidebar-foot{flex-shrink:0;height:45px;display:flex;gap:8px;align-items:center;padding:0 18px;border-top:1px solid #405054;font-size:9px;color:#9ab2a8;letter-spacing:.75px}.status-led,.live-dot{width:6px;height:6px;border-radius:50%;background:#82c6ab;box-shadow:0 0 13px #82c6ab}.ver{margin-left:auto;color:#627c7c}.viewport-wrap{position:relative;flex:1;overflow:hidden;background:radial-gradient(circle at 55% 35%,#a8ad9a,#55797a 64%,#304e55)}#scene{width:100%;height:100%;display:block;touch-action:none;cursor:grab}#scene:active{cursor:grabbing}.viewport-top{position:absolute;z-index:4;left:0;right:0;top:0;display:flex;justify-content:space-between;align-items:flex-start;padding:24px 28px;pointer-events:none;background:linear-gradient(180deg,#172328bd,transparent)}.viewport-top>*{pointer-events:auto}.location-title small{color:#e1eadf;font-size:9px;letter-spacing:1.75px;font-weight:700}.location-title h1{font:600 27px var(--serif);text-transform:uppercase;letter-spacing:2.2px;margin:7px 0 4px;color:#fff6e2;text-shadow:0 2px 15px #0007}.location-title>span{font:italic 13px Georgia,serif;color:#e0ded2}.top-actions{display:flex;gap:11px;align-items:center}.live-pill{display:flex;align-items:center;gap:9px;background:#14282ccc;border:1px solid #5c7770;padding:10px 12px;border-radius:3px;font-size:9px;letter-spacing:1.2px;font-weight:700;color:#d3e5d9}.quiet-button{background:#172b31bf;border:1px solid #7b8f87;color:#e5eadd;padding:8px 13px;border-radius:3px;font-size:12px}.quiet-button:hover{background:#1e3a40}.render-stats{position:absolute;z-index:3;left:28px;top:115px;background:#112126a8;border:1px solid #6278756b;padding:8px 11px;font-size:9px;color:#b4ccbe;letter-spacing:.8px;font-weight:600}.render-stats b{color:#ebd2a7;margin-left:10px}.render-stats .separator{color:#7f8c84;padding:0 4px}.watermark{position:absolute;left:30px;bottom:94px;font:600 13px var(--serif);letter-spacing:5px;color:#fff8e5a1;text-shadow:0 2px 5px #0006;pointer-events:none}.watermark span{color:#e6c38a}.compass{position:absolute;top:160px;left:38px;z-index:3;display:flex;flex-direction:column;align-items:center;gap:4px;font:13px var(--serif);color:#e5dfc9;text-shadow:0 1px 4px #0009}.compass i{height:43px;width:1px;background:linear-gradient(#e4c797,#243f45);position:relative}.compass i:before{content:'◆';position:absolute;top:12px;left:-5px;color:#e8c991;font-size:12px}.compass span:last-child{font-size:10px}.info-card{position:absolute;z-index:3;left:27px;bottom:111px;width:310px;background:linear-gradient(110deg,#11232be8,#20363ade);border:1px solid #90a5987d;display:flex;gap:13px;padding:15px 13px;color:#e2eadb;box-shadow:0 10px 30px #0004}.info-icon{font-size:29px;color:#dfc28d}.info-kicker{font-size:8px;letter-spacing:1.35px;color:#9acbc3;font-weight:700}.info-card b{font:600 16px var(--serif);display:block;margin:6px 0}.info-card p{font:11px/1.5 Georgia,serif;color:#c6cfc5;margin:0}.info-card>button{align-self:start;background:none;border:0;color:#a6bebc;font-size:20px;padding:0}.info-card.hidden{display:none}.top-metrics{position:absolute;top:126px;right:25px;display:grid;grid-template-columns:repeat(2,minmax(145px,1fr));gap:9px;width:350px;z-index:3}.metric{background:#142830e0;border:1px solid #5274788a;backdrop-filter:blur(7px);padding:12px 13px 11px;min-height:86px;box-shadow:0 4px 10px #10202636}.metric>span{font-size:9px;letter-spacing:1px;color:#9dbbb8;font-weight:700}.metric strong{display:block;font:500 27px Georgia,serif;color:#f0dfb9;margin:5px 0}.metric strong small{font:13px var(--font);color:#adc9c3}.metric .status-metric{font:600 13px var(--font);letter-spacing:.7px;margin-top:16px;color:#8ee0bd}.meter{height:3px;background:#3e5a5d}.meter>span{background:linear-gradient(90deg,#6da6a4,#ced49e);height:100%;display:block;transition:width .7s}.metric-sub{font-size:8px;color:#7f9c9e;font-weight:700;letter-spacing:.75px;margin-top:7px}.right-dashboard{position:absolute;right:25px;bottom:91px;width:303px;padding:17px 16px;background:linear-gradient(145deg,#102228ee,#1b3438ec);border:1px solid #64847e80;z-index:3;box-shadow:0 10px 25px #0005}.chart-header{display:flex;justify-content:space-between}.chart-eyebrow{font-size:8px;letter-spacing:1.15px;color:#9dbab7}.chart-tag{color:#8fc9c3;font-size:10px}.chart-title{font:600 18px var(--serif);color:#e6d2a8;margin:7px 0}.chart-indicator{float:right;color:#8cc5bb}.right-dashboard canvas{width:100%;height:106px;display:block}.chart-bottom{display:flex;justify-content:space-between;font-size:9px;color:#a5c4c3;font-weight:600;letter-spacing:.6px}.cyan-dot{display:inline-block;border-radius:50%;width:6px;height:6px;margin-right:6px;background:#78d0cd}.dashboard-divider{height:1px;background:#496464;margin:16px 0}.diagram-title{font:600 14px var(--serif);color:#eadbb9;display:flex;justify-content:space-between;align-items:center}.diagram-title button{background:none;border:1px solid #5f7d78;color:#b0d9c4;width:24px;height:24px}.network-mini{width:100%;height:150px;margin:12px auto 3px}.network-mini .net-node{fill:#29444a;stroke:#739f9b;stroke-width:1}.network-mini text{fill:#e9e6ce;font:600 10px var(--font);letter-spacing:.35px}.diagram-footnote{font:italic 10px/1.3 Georgia,serif;color:#91aba7}.view-controls{position:absolute;right:25px;top:334px;display:flex;flex-direction:column;gap:3px;z-index:3}.view-controls button{height:36px;width:35px;background:#1c3439c9;border:1px solid #789d97a4;color:#f2ead4;font-size:20px}.view-controls button.selected{border-color:var(--gold);color:#f2c880;background:#36504c}.control-line{height:10px}.scene-footer{position:absolute;z-index:5;bottom:0;left:0;right:0;height:65px;background:linear-gradient(90deg,#101f26ed,#1d3439e8);border-top:1px solid #627d79;display:flex;justify-content:space-between;align-items:center;padding:0 27px;gap:14px}.hint{font-size:10px;color:#aec3bd;letter-spacing:.3px}.hint b{color:#e5d7b5;font-size:9px}.hint i{font-style:normal;padding:0 7px;color:#697e7f}.time-control{display:flex;align-items:center;gap:13px;white-space:nowrap;font-size:10px;color:#e0e6d9;letter-spacing:.7px;font-weight:700}.time-control button{background:#2c4a4c;color:#e9e6d7;border:1px solid #6c9d97;width:30px;height:29px}.time-control select{background:#213c40;color:#e6dbbc;border:1px solid #577a78;font-size:11px;padding:6px}.loading-screen{position:absolute;inset:0;background:radial-gradient(circle at 50% 40%,#284b4c,#101e26 65%);z-index:50;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;gap:13px;transition:opacity .5s ease}.loading-screen.done{opacity:0;pointer-events:none}.loading-emblem{font:96px Georgia,serif;color:#e4cc99;width:160px;height:160px;border:1px solid #b6a57f;display:grid;place-items:center;margin-bottom:12px}.loading-title{font:600 20px var(--serif);letter-spacing:4px}.loading-copy{font:italic 14px Georgia,serif;color:#9eaba7}.loading-track{width:260px;height:3px;background:#3d5354;margin:18px 0 0}.loading-track>div{height:100%;background:#d6b37e;width:1%;transition:width .25s}.loading-small{font-size:9px;letter-spacing:2px;color:#688889}.modal-overlay{position:absolute;inset:0;background:#071116be;display:grid;place-items:center;z-index:60;padding:20px}.modal-overlay.hidden{display:none}.modal{position:relative;width:min(100%,520px);max-height:85vh;overflow-y:auto;background:#193038;color:#e7e5d6;padding:38px;border:1px solid #8da19c;box-shadow:0 25px 75px #0007}.modal.wide{width:min(100%,720px)}.modal-close{position:absolute;top:16px;right:18px;border:0;background:none;font-size:25px;color:#d3b780}.modal h2{font:600 26px/1.3 var(--serif);color:#f0dfb6}.modal p{font:14px/1.8 Georgia,serif;color:#b6c8be}.modal kbd{display:inline-grid;place-items:center;min-width:24px;padding:2px 4px;border:1px solid #658782;border-radius:3px;margin-right:2px;color:#e7dbb4;font:11px var(--font)}.modal-primary{margin-top:12px;border:1px solid #bb9d71;background:#304742;color:#eddec0;font-size:12px;letter-spacing:1px;font-weight:700;padding:12px 18px}.network-details-table{width:100%;border-collapse:collapse;font-size:11px}.network-details-table td,.network-details-table th{border-bottom:1px solid #405d5b;padding:9px 7px;text-align:left}.network-details-table th{color:#a8d9cd;font-weight:700;font-size:9px;letter-spacing:1px}.network-details-table td:last-child{font-variant-numeric:tabular-nums;color:#eed8b8}.small-print{font-size:11px!important;color:#8daba6!important}.mobile-menu{display:none}
@media(max-width:1280px){.top-metrics{right:14px;width:298px;grid-template-columns:repeat(2,1fr)}.metric{padding:9px;min-height:73px}.metric strong{font-size:23px}.right-dashboard{right:14px;width:265px}.view-controls{right:14px}.info-card{left:15px;bottom:105px;width:270px}.sidebar{width:285px;min-width:285px}}
@media(max-width:950px){.sidebar{position:absolute;left:-320px;top:0;bottom:0;transition:left .3s;width:310px;min-width:310px}.sidebar.open{left:0}.mobile-menu{display:block;background:#1a3338cc;border:1px solid #618d88;color:#eae4cf;padding:8px 10px;font-size:19px;margin-right:12px}.viewport-top{padding:18px}.location-title{flex:1}.location-title h1{font-size:19px}.top-actions .live-pill{display:none}.render-stats{top:91px;left:18px}.top-metrics{top:110px}.compass{top:145px}.view-controls{top:295px}.watermark{display:none}}
@media(max-width:670px){.viewport-top{gap:5px}.location-title small{display:none}.location-title h1{font-size:15px;letter-spacing:.6px}.location-title>span{font-size:11px}.top-actions{gap:5px}.quiet-button{padding:7px}.quiet-button span{display:none}.top-metrics{top:82px;left:11px;right:11px;width:auto;grid-template-columns:repeat(4,minmax(0,1fr));gap:4px}.metric{padding:8px 5px;min-height:66px}.metric>span{font-size:7px;letter-spacing:0}.metric strong{font-size:17px}.metric .status-metric{font-size:10px;margin-top:12px}.metric-sub{font-size:6px;margin:0}.render-stats{top:160px;font-size:8px;left:11px}.compass{display:none}.right-dashboard{bottom:68px;right:11px;width:210px;padding:10px}.right-dashboard .network-mini,.right-dashboard .diagram-footnote,.right-dashboard .diagram-title,.dashboard-divider{display:none}.right-dashboard canvas{height:80px}.info-card{left:11px;bottom:69px;width:175px;padding:9px}.info-card p{font-size:9px}.info-card b{font-size:12px}.info-icon{display:none}.view-controls{right:10px;top:185px}.view-controls button{width:30px;height:28px;font-size:16px}.scene-footer{height:56px;padding:0 8px}.hint{font-size:8px}.hint i{padding:0 3px}.time-control{gap:4px;font-size:9px}.time-control select{padding:4px}.modal{padding:28px 19px}}
