:root{font-family:system-ui,-apple-system,Segoe UI,Arial,sans-serif;color:#e7e8df;background:#102123;font-synthesis:none;--bg:#111f20;--panel:rgba(14,29,32,.93);--border:rgba(171,185,166,.21);--muted:#97a7a6;--gold:#d8b27b;--aqua:#85c6b9}
*{box-sizing:border-box}body{padding:0;margin:0;overflow:hidden}button,input{font:inherit}button{cursor:pointer}button:focus-visible,input:focus-visible{outline:2px solid #e1bc86;outline-offset:3px}canvas#scene{display:block;width:100vw;height:100vh;background:linear-gradient(#a5b8b6,#b7bcb0)}
#app{position:relative;width:100vw;height:100dvh;overflow:hidden}.reticle{position:absolute;top:51%;left:50%;font-size:20px;color:#ffeaca33;pointer-events:none}.topbar{z-index:5;height:69px;display:flex;align-items:center;justify-content:space-between;gap:16px;background:linear-gradient(90deg,rgba(9,24,27,.98),rgba(12,28,30,.90));border-bottom:1px solid var(--border);position:absolute;top:0;left:0;right:0;padding:0 24px}.brand{display:flex;align-items:center;gap:12px;min-width:244px}.brandtitle{display:flex;flex-direction:column;gap:3px;line-height:1.15}.brandtitle b{font-size:16px;letter-spacing:.22em;color:#efe7d8}.brandtitle span{color:#acb7af;font-size:9px;letter-spacing:.24em}.topmiddle{display:flex;align-items:center;gap:21px;font-size:10px;letter-spacing:.1em}.era-pill{color:var(--gold);border:1px solid #af977457;background:#ad977416;border-radius:3px;padding:7px 10px;font-weight:700;font-size:9px;letter-spacing:.13em}.sep{margin:0 8px;color:#72817e}.muted{color:#b0b8af}.nowrap{white-space:nowrap}.topright{display:flex;align-items:center;gap:12px}.status-indicator{font-size:10px;letter-spacing:.11em;font-weight:700;color:#b2dbca;display:flex;gap:7px;align-items:center}.status-indicator i{height:7px;width:7px;border-radius:50%;background:#79d1a6;box-shadow:0 0 10px #4dc88a}.status-indicator.warning{color:#e6ba82}.status-indicator.warning i{background:#ebaa61}.iconbutton{display:flex;align-items:center;justify-content:center;border:1px solid #63777470;color:#d7e0db;background:#23383c;height:32px;width:32px;border-radius:5px;font-size:17px}
.sidebar{position:absolute;z-index:4;top:69px;bottom:61px;width:312px;background:var(--panel);border-color:var(--border);backdrop-filter:blur(11px);overflow-y:auto;scrollbar-width:thin;scrollbar-color:#586964 transparent}.sidebar.left{left:0;border-right:1px solid var(--border)}.sidebar.right{right:0;border-left:1px solid var(--border);padding-bottom:25px}.sideheader{padding:24px 23px 19px}.sideheader.small{padding-bottom:12px}.eyebrow,.p-eyebrow{font-size:10px;letter-spacing:.2em;font-weight:700;color:var(--gold)}h2{font-family:Georgia,serif;font-weight:400;font-size:24px;margin:8px 0;color:#f4eee0;line-height:1.17}.sidelead{color:#a8b5af;font-size:12px;line-height:1.5}.tabs{display:flex;border-bottom:1px solid var(--border);border-top:1px solid var(--border);padding:0 16px}.tab{border:0;border-bottom:2px solid transparent;color:#9fb0ad;background:none;padding:13px 20px 11px;font-size:10px;letter-spacing:.16em;font-weight:800;flex:1}.tab.active{border-bottom-color:var(--gold);color:#eddbbd}.tabpanel{display:none;padding:16px 22px}.tabpanel.active{display:block}.metriccard{border:1px solid #88775372;background:linear-gradient(125deg,#65563841,#1b38344d);padding:16px;border-radius:5px;margin-bottom:23px}.metric-label,.minilabel{font-size:9px;letter-spacing:.17em;color:#cfbea4;font-weight:700}.metricvalue{display:flex;align-items:baseline;gap:8px;margin-top:3px}.metricvalue strong{font-size:33px;font-weight:500;font-variant-numeric:tabular-nums}.metricvalue span{font-size:12px;color:#cfddca}.minilabel{font-size:9px;margin-top:7px;color:#9eaaa0;letter-spacing:.09em}.section-title{font-size:10px;letter-spacing:.13em;color:#d9c9b5;font-weight:700;border-bottom:1px solid var(--border);padding:0 0 9px;margin:12px 0 15px;display:flex;justify-content:space-between}.with-margin{margin-top:20px}.control{margin-bottom:17px}.control-label{display:flex;justify-content:space-between;margin-bottom:10px;align-items:center;gap:8px}.control label{color:#ccd3c8;font-size:12px}.control output{color:#e7bc7f;font-size:11px;font-weight:700;font-variant-numeric:tabular-nums}.control input[type=range]{width:100%;height:5px;appearance:none;background:#3d5250;accent-color:#d3ab72;border-radius:5px;cursor:pointer}.control input[type=range]::-webkit-slider-thumb{appearance:none;width:13px;height:13px;border-radius:50%;background:#e6be83;border:2px solid #2c3c36;box-shadow:0 0 0 1px #ac9568}.ticks{display:flex;justify-content:space-between;color:#7e918d;font-size:8px;letter-spacing:.08em;margin-top:6px}.gate-control{margin-bottom:11px}.gate-control .control-label{margin-bottom:8px}.gate-control .control-label label{font-size:11px}.gate-control input{height:4px!important}.actionrow{display:flex;gap:6px;margin-top:21px}.smallbutton{border:1px solid #9c825b63;background:#56463259;color:#e7c48f;font-size:9px;letter-spacing:.06em;border-radius:3px;padding:9px 8px;flex:1}.smallbutton.bordered{background:transparent;border-color:#a1b0a254;color:#d1d9d3}.sidebarfoot{display:flex;justify-content:space-between;gap:10px;color:#7c8e89;font-size:8px;letter-spacing:.07em;border-top:1px solid var(--border);padding:12px 22px}.locationintro{font-size:12px;color:#a1b0aa;line-height:1.6;margin-bottom:15px}.location{background:none;color:#dcded7;text-align:left;border:1px solid transparent;border-bottom:1px solid var(--border);padding:12px 6px;display:flex;gap:11px;width:100%;align-items:center}.location:hover,.location:focus-visible{background:#bdb28f18;border-color:#d4b67a44}.location .num{font-family:Georgia,serif;color:#d3b681;font-size:20px}.location strong{font-weight:600;display:block;font-size:12px}.location small{font-size:10px;color:#8e9f99;display:block;margin-top:4px;line-height:1.35}
.quadmetrics{display:grid;grid-template-columns:1fr 1fr;gap:8px;padding:0 18px 16px}.quadmetrics>div{padding:11px 11px 10px;background:#22353699;border:1px solid #6a7f725c;border-radius:4px}.quadmetrics span{font-size:8px;letter-spacing:.09em;display:block;color:#a7b2a9;min-height:20px}.quadmetrics strong{font-size:21px;font-weight:500;display:block;margin:5px 0 8px;letter-spacing:-.035em;white-space:nowrap;font-variant-numeric:tabular-nums}.quadmetrics #head-flow{font-size:16px;padding-top:4px}.progress{height:3px;background:#53666182}.progress i{height:100%;display:block;width:0;background:linear-gradient(90deg,#5f9f9a,#e2bc7a);transition:width .3s}.right>.section-title,.right>.historylegend,.right>.report{margin-left:21px;margin-right:21px}.right>.section-title{margin-top:6px}.schemacopy{padding:0 7px;border:1px solid #647471;background:none;color:#a1bcb8;border-radius:50%}#hydrodiagram{display:block;width:calc(100% - 34px);margin:0 auto 9px;height:205px}.nodes rect{fill:#263d3d;stroke:#a2a98e;stroke-width:1.2}.nodes text{font-size:8px;letter-spacing:.07em;fill:#ede6d7;font-family:system-ui,sans-serif;font-weight:700}.schemalines path{stroke:#b39a6d;transition:stroke .2s,opacity .2s}#history{display:block;width:calc(100% - 42px);height:105px;margin:0 21px;border-bottom:1px solid #81978c55}.historylegend{display:flex;justify-content:space-between;font-size:9px;color:#b1bdb5;margin-top:8px;margin-bottom:19px}.historylegend i{width:8px;height:8px;display:inline-block;margin-right:5px;border-radius:50%}.lg1{background:#d7b578}.lg2{background:#86c8c3}.lg3{background:#9db487}.report>div{display:flex;justify-content:space-between;font-size:10px;color:#aab9b3;border-bottom:1px solid #576d674a;padding:9px 0}.report strong{font-variant-numeric:tabular-nums;color:#e1e7d8;font-size:11px;font-weight:500}
.placard{position:absolute;bottom:111px;left:337px;z-index:2;min-width:310px;max-width:440px;background:linear-gradient(90deg,#152a2acd,#152a2a20);border-left:3px solid var(--gold);padding:13px 20px;pointer-events:none;text-shadow:0 1px 12px #0007}.p-eyebrow{font-size:9px}.placard h1{font-family:Georgia,serif;font-size:26px;font-weight:400;margin:6px 0 6px;color:#fff1dc}.placard p{font-size:11px;color:#c5d5ce;margin:0 0 11px}.placard-meta{display:flex;gap:22px;font-size:9px;font-weight:700;letter-spacing:.09em;color:#d2c4a9}.minimap-wrap{position:absolute;z-index:3;bottom:78px;right:331px;width:288px;border:1px solid #c3b29f77;background:rgba(16,32,34,.94);border-radius:3px;box-shadow:0 9px 35px #0005}.maphead,.mapfoot{display:flex;justify-content:space-between;font-size:9px;letter-spacing:.11em;color:#c2c9bd;padding:9px 11px}.maphead{border-bottom:1px solid var(--border)}.maphead button{border:0;background:none;color:#dabb86;font-size:8px;font-weight:700;cursor:pointer}.mapfoot{border-top:1px solid var(--border);color:#819c95}#minimap{width:286px;height:210px;display:block;cursor:crosshair}.bottom{position:absolute;left:0;right:0;bottom:0;height:61px;background:#11272aef;z-index:6;display:flex;align-items:center;padding:0 18px;gap:9px;border-top:1px solid #d6bf9140}.clockblock{display:flex;flex-direction:column;padding:0 16px 0 3px;gap:3px;min-width:142px}.clockblock span{font-size:8px;letter-spacing:.12em;color:#b1b5a9}.clockblock strong{font-size:18px;letter-spacing:.11em;font-weight:500;color:#eaddc5;font-variant-numeric:tabular-nums}.play{width:32px;height:32px;font-weight:800;font-size:14px;color:#cda969;background:#39504c;border:1px solid #9c886650;border-radius:3px}.speedbtn{border:1px solid #7587806d;color:#b8c8c0;background:transparent;font-size:11px;padding:8px 11px;border-radius:3px}.speedbtn.active{color:#e9c792;border-color:#c9aa77;background:#bca27626}.footsep{width:1px;height:28px;background:var(--border);margin:0 10px}.bottom-action{border:0;color:#c2d2c9;background:none;font-size:10px;letter-spacing:.05em;padding:8px 10px;white-space:nowrap}.bottom-action.active{color:#e8b976}.footright{margin-left:auto;display:flex;gap:16px;font-size:9px;color:#9caba8;white-space:nowrap;letter-spacing:.09em}
.loading{position:absolute;z-index:20;inset:0;background:radial-gradient(circle at 50% 45%,#2b4c49,#0c191b 65%);display:flex;flex-direction:column;justify-content:center;align-items:center;text-align:center;transition:opacity .8s,visibility .8s}.loading.hidden{opacity:0;visibility:hidden;pointer-events:none}.loadmark{font-family:Georgia,serif;color:#deb986;font-size:60px;line-height:75px;border:2px solid #b49a704d;border-radius:50%;width:89px;height:89px}.loading h2{font-size:32px;margin-top:22px}.loading #load-message{color:#a1bcb2;font-size:13px}.loadingbar{margin-top:25px;width:320px;height:3px;background:#5a69635c}.loadingbar span{display:block;background:#deb37e;height:3px;width:8%;transition:width .4s}dialog{width:min(600px,90vw);background:#172c2c;color:#e8e6d8;border:1px solid #b69e7380;border-radius:8px;padding:24px 30px;box-shadow:0 24px 110px #000a}dialog::backdrop{background:rgba(1,12,15,.75)}.dialogtop{display:flex;justify-content:space-between;color:#c4a97d;font-size:10px;letter-spacing:.16em}.dialogtop button{background:none;border:0;color:#fff;font-size:25px}.dialogtop+h2{font-size:28px}.keygrid{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin:20px 0}.keygrid>div{display:flex;align-items:center;gap:12px;font-size:12px;color:#c8d4ca}.keygrid kbd{font:10px monospace;min-width:80px;padding:7px 5px;background:#2e4141;border:1px solid #71827666;color:#ead4b2;text-align:center;border-radius:4px}dialog p{font-size:12px;color:#acbeb5;line-height:1.5}.disclaimer{padding-top:10px;border-top:1px solid var(--border)}
@media(max-width:1260px){.sidebar{width:275px}.minimap-wrap{right:292px}.placard{left:290px}.topmiddle .nowrap{display:none}.right>.section-title{font-size:9px}.footright span:last-child{display:none}}
@media(max-width:980px){.sidebar.right{display:none}.minimap-wrap{right:15px}.topmiddle{display:none}.placard{left:293px}.bottom-action{font-size:9px}}
@media(max-width:650px){.sidebar.left{width:100%;height:210px;top:auto;bottom:59px;overflow:auto;background:#102729f5}.sideheader,.tabs{display:none}#panel-flow{display:block;padding:8px 12px}.metriccard{margin:0 0 8px;padding:8px}.metricvalue strong{font-size:22px}.section-title,.control,.actionrow{display:none}.placard,.minimap-wrap{display:none}.topbar{padding:0 10px}.topright{gap:5px}.status-indicator{font-size:9px}.footsep,.bottom-action,.footright{display:none}.bottom{gap:4px;padding:0 10px}.clockblock{min-width:120px;padding-right:6px}}
