:root{--bg-frost:#f3f6ef;--bg-surface:#fff;--bg-subtle:#edf3ed;--bg-hover:#e5eee6;--bg-periwinkle:#e1ede7;--border-light:#d7e2d7;--border-medium:#bdcfc2;--border-dark:#839d8c;--text-primary:#192d25;--text-secondary:#3d5748;--text-muted:#52665b;--text-dim:#6c8274;--accent-blue:#24656b;--accent-wind:#24656b;--accent-mint:#3e7660;--accent-aqua:#3e7660;--font-sans:Inter,"Avenir Next",system-ui,sans-serif;--shadow-sm:none;--shadow-md:none;--shadow-lg:0 8px 28px #173e3114;--shadow-xl:0 12px 40px #173e311a}
body{font-family:var(--font-sans);height:100dvh;min-height:0;background:#f3f6ef}
body>header{display:grid;grid-template-columns:minmax(230px,.85fr) minmax(0,2fr);gap:24px;height:auto;min-height:114px;padding:22px 28px;background:#fff;border-bottom:1px solid #cddbd0;box-shadow:none;z-index:910}
.logo-badge{width:42px;height:42px;border-radius:14px;background:#dde8df;color:#173e31;box-shadow:none;font-size:24px}
.logo-section{align-items:flex-start;gap:12px}.logo-title h1{font-size:23px;line-height:1.15;letter-spacing:-.65px;font-weight:650;max-width:320px}.logo-title p{font-size:11px;line-height:1.5;margin-top:7px;max-width:300px;color:#52665b}
.kpi-bar{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:0;align-content:center;min-width:0}.kpi-item{border:0;border-left:1px solid #d7e2d7;background:transparent;border-radius:0;padding:5px 10px;min-width:0;text-align:left;box-shadow:none}.kpi-label{font-size:10px;text-transform:none;letter-spacing:0;line-height:1.4;white-space:normal;color:#52665b}.kpi-value{font-size:17px;letter-spacing:-.4px;font-variant-numeric:tabular-nums;line-height:1.5;font-family:inherit;font-weight:650;color:#173e31}
.app-container{height:auto;flex:1;min-height:0;background:#f3f6ef;isolation:isolate}.sidebar{width:370px;flex:0 0 370px;border-right:1px solid #cddbd0;box-shadow:none;background:#f3f6ef}.tab-nav{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));overflow:visible;padding:10px;gap:5px;background:#fff;border-bottom:1px solid #cddbd0}.tab-btn{min-width:0;min-height:48px;border:1px solid transparent;border-radius:8px;padding:8px 5px;font-size:11px;font-weight:550;gap:4px;color:#52665b;white-space:normal}.tab-btn.active{color:#fff;background:#173e31;box-shadow:none;border-color:#173e31}.tab-btn:hover:not(.active){background:#edf3ed;color:#173e31}.tab-content{padding:16px;background:#f3f6ef;scrollbar-width:thin;scrollbar-color:#a7bfae #f3f6ef}
.panel-section{border:1px solid #d7e2d7;border-radius:12px;padding:16px;margin-bottom:14px;box-shadow:none}.section-title{font-size:12px;text-transform:none;letter-spacing:0;font-weight:650;margin-bottom:12px;color:#173e31}.layer-item{min-height:44px;gap:10px}.layer-label{font-size:12px;line-height:1.45}.layer-id{font-size:10px;background:#edf3ed;border-color:#d7e2d7;color:#52665b}input[type=checkbox],input[type=radio]{accent-color:#3e7660}input[type=range]{accent-color:#3e7660}.scenario-controls input,.scenario-controls select{font-family:inherit}
.map-floating-overlay{background:#fffffff2;border:1px solid #cddbd0;box-shadow:0 8px 25px #173e3112;border-radius:12px;min-width:240px;max-width:280px;padding:14px}.legend-section-title{font-family:inherit;font-size:11px;text-transform:none;letter-spacing:0}.legend-item{font-size:11px}.bottom-control-bar{left:390px;right:20px;padding:13px 18px;border:1px solid #cddbd0;background:#fffffff2;border-radius:12px;box-shadow:0 6px 22px #173e3110;gap:16px}.time-display{font-size:22px;letter-spacing:-.5px;color:#173e31}.dispatch-slider-labels{font-family:inherit;font-size:10px;color:#52665b;line-height:1.3}.info-panel{border-color:#cddbd0;box-shadow:0 15px 45px #173e3122;border-radius:14px}
.eco-map-links{display:none}.leaflet-control-zoom{border:1px solid #cddbd0!important;border-radius:10px!important;overflow:hidden}.leaflet-control-zoom a{color:#173e31!important;min-width:38px;min-height:38px;line-height:38px!important}
@media(min-width:761px) and (max-width:1200px){body>header{grid-template-columns:1fr;padding:16px 22px;gap:14px}.logo-title h1{max-width:none;font-size:24px}.logo-title p{max-width:none;margin-top:3px}.sidebar{width:330px;flex-basis:330px}.bottom-control-bar{left:345px;right:15px}.map-floating-overlay{max-width:245px;min-width:220px}.kpi-bar{width:100%}.kpi-item:first-child{border-left:0;padding-left:0}}
@media(max-width:760px){body{height:auto;min-height:100dvh;overflow:auto}body>header{grid-template-columns:1fr;gap:17px;padding:20px 16px 16px}.logo-title h1{max-width:none;font-size:25px}.logo-title p{font-size:12px;max-width:55ch}.logo-badge{width:40px;height:40px;flex:0 0 40px}.kpi-bar{grid-template-columns:repeat(3,minmax(0,1fr));gap:12px 8px}.kpi-item{border:0;border-top:1px solid #d7e2d7;padding:7px 0 0}.kpi-value{font-size:18px}.kpi-label{font-size:10px;min-height:28px}.app-container{display:flex;flex-direction:column;height:auto;overflow:visible;flex:none;isolation:auto}.eco-map-links{display:flex;gap:8px;padding:12px 16px;background:#fff;border-bottom:1px solid #cddbd0}.eco-map-links a{display:flex;align-items:center;justify-content:center;flex:1;min-height:44px;border:1px solid #bdd0c4;border-radius:8px;color:#173e31;text-decoration:none;font-size:13px;font-weight:600;background:#edf3ed}#map{order:0;height:52dvh;min-height:360px;width:100%;flex:none;scroll-margin-top:12px}.bottom-control-bar{order:1;position:static;left:auto;right:auto;margin:12px 14px;gap:12px;padding:14px}.sidebar{order:2;flex:none;width:100%;border:0;background:#f3f6ef;scroll-margin-top:12px}.tab-nav{grid-template-columns:repeat(3,minmax(0,1fr));padding:12px 14px;gap:6px}.tab-btn{font-size:12px;min-height:50px}.tab-content{overflow:visible;padding:14px}.map-floating-overlay{order:3;position:static;max-width:none;width:auto;margin:0 14px 18px;min-width:0}.panel-section{padding:17px}.layer-label{font-size:13px}.section-title{font-size:14px}.info-panel{position:fixed;right:12px;bottom:12px;top:auto;max-height:72dvh;width:calc(100% - 24px);z-index:1200}.dispatch-slider-wrapper{width:100%;flex-basis:100%}.time-display{font-size:19px}.dispatch-slider-labels{font-size:10px}}
@media(max-width:350px){.kpi-bar{grid-template-columns:repeat(2,minmax(0,1fr))}.logo-title h1{font-size:22px}.logo-title p{font-size:11px}}
@media(prefers-reduced-motion:reduce){.flow-pulse-forward,.flow-pulse-reverse,.legend-pulse-indicator{animation:none!important}}
body{font-family:var(--eco-font,Inter,system-ui,sans-serif)!important}
.kpi-value.warning{color:#94621c}.kpi-value.alert{color:#a14336}
