:root{font-family:Inter,Segoe UI,Arial,sans-serif;color:#eaf3f0;background:#101c22}*{box-sizing:border-box}body{margin:0}button,input,select{font:inherit}button{cursor:pointer}a{color:#91d9c2}header{height:116px;display:flex;justify-content:space-between;align-items:center;padding:18px 26px;background:#16262d;border-bottom:1px solid #30464d}header a{font-size:13px;text-decoration:none}h1{margin:5px 0 2px;font-size:25px}header p{margin:0;color:#a5b9bc;font-size:13px}.badge{font-size:11px;font-weight:800;letter-spacing:.1em;color:#8be0af;background:#254837;border:1px solid #3a7554;border-radius:20px;padding:8px 12px}main{height:calc(100vh - 116px);display:grid;grid-template-columns:315px minmax(315px,370px) minmax(350px,1fr)}.controls,.results{overflow-y:auto;padding:16px;background:#132129;border-right:1px solid #31454c}.card{background:#1b3036;border:1px solid #355057;border-radius:12px;padding:16px;margin-bottom:14px}.card h2,.results h2{font-size:17px;margin:0 0 11px}.card h3{font-size:12px;text-transform:uppercase;letter-spacing:.09em;color:#a9c2c4;margin:18px 0 9px}.card p{font-size:13px;line-height:1.5;color:#bed0ce;margin:8px 0}.age-row{display:grid;grid-template-columns:1fr 1fr;gap:9px}.age-row label,.period{font-size:12px;color:#bdd1d0;display:block}.age-row input,.period select{display:block;width:100%;margin-top:6px;background:#101f25;color:#fff;border:1px solid #4a6268;border-radius:7px;padding:8px}.presets{display:grid;gap:7px;margin-top:12px}.presets button,.secondary{background:#254a42;border:1px solid #4c826e;color:#e3fff3;padding:9px 10px;border-radius:7px;text-align:left}.secondary{width:100%;margin-top:10px}.checks{display:grid;gap:7px}.checks label{font-size:13px;color:#dbe6e3}.checks input{accent-color:#5ec49a}.period{margin-top:17px}.warning{color:#ffd783!important;background:#523d20;padding:8px;border-radius:7px}.note p{font-size:12px}.result-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:12px}.result-head p{font-size:12px;color:#adc0c0;margin:0}.result-head strong{color:#7ed4a6}.ranking{display:grid;gap:7px}.rank{width:100%;display:grid;grid-template-columns:28px 1fr auto;gap:9px;align-items:center;text-align:left;background:#1b2b33;border:1px solid #314850;border-radius:9px;padding:10px;color:#eaf3f0}.rank:hover,.rank.selected{background:#26463d;border-color:#6dcc9e}.rank .number{background:#2b5844;color:#bcf2d1;border-radius:5px;text-align:center;padding:5px;font-size:11px;font-weight:700}.rank strong{font-size:12px}.rank small{display:block;color:#9eb4b4;font-size:11px;margin-top:3px}.rank .value{text-align:right;color:#a9e7c4;font-size:15px;font-weight:800}.rank .value small{font-weight:400}.map-wrap{position:relative}#map{height:100%;width:100%;background:#d7e5d2}#mapHint{position:absolute;z-index:500;left:12px;bottom:18px;background:#16252de8;color:#eff;padding:10px 13px;border-radius:8px;font-size:12px;max-width:400px}.leaflet-control-attribution{font-size:10px}@media(max-width:1050px){main{height:auto;grid-template-columns:310px 1fr}.map-wrap{grid-column:1/-1;height:52vh}}@media(max-width:650px){header{height:auto;padding:14px}.badge{display:none}main{display:block}.controls,.results{max-height:none}.map-wrap{height:55vh}}
:root{color-scheme:dark}
.loading-card{display:flex;align-items:center;gap:12px;padding:22px 14px;border:1px solid #355057;border-radius:9px;color:#c6d7d4;font-size:13px;line-height:1.4;background:#1b3036}
.spinner{display:inline-block;flex:none;width:18px;height:18px;border:2px solid #55756c;border-top-color:#85deb5;border-radius:50%;animation:spin .8s linear infinite}
@keyframes spin{to{transform:rotate(360deg)}}
.map-loading{position:absolute;z-index:600;top:50%;left:50%;transform:translate(-50%,-50%);display:flex;align-items:center;gap:12px;min-width:250px;max-width:calc(100% - 30px);background:#172b31ee;color:#e6f4ef;border:1px solid #53736d;border-radius:10px;box-shadow:0 12px 35px #17252b44;padding:17px 20px;font-size:13px;line-height:1.4}
.map-loading.error{border-color:#a86c54;color:#ffe0c5}
.legend{display:grid;gap:6px;margin-top:12px;color:#c6d7d4;font-size:11px}.legend span{display:flex;align-items:center;gap:7px}.legend-dot{width:10px;height:10px;border-radius:50%;display:inline-block;border:1px solid #fff5}.legend-good{background:#1b926d}.legend-mid{background:#e4a843}.legend-low{background:#cb705b}
.coverage-summary{margin:0 0 12px;padding:11px 12px;border:1px solid #3c6657;border-radius:9px;background:#203d35;color:#d8f2e4;font-size:12px;line-height:1.45}.coverage-summary.estimated{border-color:#82684c;background:#3c3328;color:#ffe1ad}.flow-legend{display:flex;align-items:center;gap:8px;color:#b7ccca;font-size:11px;margin-top:14px}.flow-legend i{flex:1;height:7px;border-radius:5px;background:linear-gradient(90deg,#789c9a,#45b6a0,#f4be5b,#e56846)}.rank .value{min-width:68px}.rank .value small{line-height:1.25}.rank strong{overflow-wrap:anywhere}
