html,body{height:100%;margin:0}*{box-sizing:border-box}#app{height:100vh;display:flex;flex-direction:column}#app header{flex-shrink:0;height:60px;min-height:60px;display:flex;gap:16px;align-items:center;padding:0 16px;background:#0b1b2d;color:#eaf3fb}#app header nav{display:flex;gap:5px}#app header nav button.active{background:#205e95;color:white}#app header #who{margin-left:auto;white-space:nowrap}#app .page{display:none;flex:1;min-height:0;flex-direction:column}#app .page.active{display:flex}.toolbar{display:flex;align-items:center;gap:7px;padding:8px 11px;flex-shrink:0;flex-wrap:wrap}.toolbar .grow{flex:1}#mapSearch{max-width:240px} .mapWrap{height:100%;flex:1;display:flex;min-height:0;overflow:hidden}.mapWrap #map,.mapWrap #waterMap{flex:1;min-width:0;height:100%;position:relative;z-index:1}.mapWrap aside{width:340px;max-width:42vw;overflow-y:auto;background:#f7fafc;border-left:1px solid #d9e3ea;color:#172e48}.mapWrap .layerHead{position:sticky;top:0;background:#f0f5fa;z-index:2;padding:9px;display:flex;align-items:center;justify-content:space-between}.layerItem{padding:7px 5px!important}.layerItem .layerBtns{display:flex}.layerItem button{padding:4px 7px}.waterEntry{padding:10px;border-bottom:1px solid #ddd;display:flex;justify-content:space-between;gap:6px;align-items:center}.waterEntry small{font-size:12px;opacity:.7}.adminContentWrap{overflow:auto;padding:26px;flex:1}.adminGrid{display:grid;grid-template-columns:repeat(auto-fit,minmax(320px,1fr));gap:14px;align-items:start}.adminGrid .card{padding:16px;background:#f6f8fb;border:1px solid #dbe4ee;color:#152a43}.adminGrid .card label{margin:8px 0;display:block}.adminGrid .card label.inline{display:flex;gap:9px;align-items:center}.adminGrid input:not([type=checkbox]),.adminGrid select{max-width:100%;padding:8px 10px;width:100%;background:#fff;color:#102536}.adminGrid .card button{margin:7px 0}.secret{white-space:pre-wrap;overflow-wrap:anywhere;font-size:12px;background:#eef3f8;padding:6px;border-radius:4px}.subTitle{font-size:12px;opacity:.75}.waterDrawBadge{font-weight:600;color:#a21e1e}.hydrantDot{background:#e00000;color:white;border:2px solid white;border-radius:50%;width:15px;height:15px;box-shadow:0 1px 4px #1116}.hydrantLabel{color:#b40000;font-size:12px;font-weight:bold;background:#ffffffe6;border-radius:2px;padding:1px 3px;white-space:nowrap}.waterLineLabel{font-size:11px;color:#1d588c;background:#fffd;padding:1px 4px;border-radius:3px}.editorMap{min-height:410px}.areaEditor{height:min(72vh,800px)}.adminContentWrap .card h3{margin-top:0}#login{min-height:100vh;display:flex;align-items:center;justify-content:center;background:#0f2133}#login[hidden],#app[hidden],#modalBack[hidden]{display:none!important}#modalBack{z-index:10000}.mapWrap .leaflet-container{font:inherit}.waterEntry button{min-width:64px}.waterBtnRow{display:flex;gap:5px}#toast{z-index:20000}input[type=file]{width:100%}@media (max-width:820px){#app header{height:auto;min-height:60px;flex-wrap:wrap;padding:9px}.toolbar{gap:4px}.toolbar button{font-size:12px}.mapWrap aside{width:190px}.subTitle{display:none}.adminGrid{grid-template-columns:1fr}.areaEditor{height:70vh}}

/* 0.2.1 Water network: fixed pixel stroke and labels at every zoom level */
.dnQuickbar{display:flex;flex-wrap:wrap;gap:4px;max-width:100%;align-items:center}
.dnQuickbar[hidden]{display:none!important}.dnChip{border:1px solid #cbd5e1;background:#fff;color:#152c45;padding:6px 7px;font-size:12px;border-radius:5px;display:inline-flex;align-items:center;gap:4px;cursor:pointer}
.dnChip:hover,.dnChip.selected{outline:2px solid #184a80;outline-offset:1px}
.dnDot{display:inline-block;width:16px;height:6px;border-radius:4px;background:var(--dn)}
.waterTree{padding:9px;color:#152c45}.waterTree details{margin:3px 0 3px 8px;padding:3px 0 3px 6px;border-left:2px solid #e5edf5}.waterTree summary{font-weight:700;cursor:pointer;display:flex;align-items:center;gap:6px}.waterTree label{display:inline-flex;gap:6px;align-items:center;cursor:pointer}.waterTree input[type=checkbox]{margin:0}.waterFolderTitle{display:inline-flex;align-items:center;gap:6px}.waterTree .waterEntry{font-weight:400;font-size:13px}.waterTree .waterEntry .lineMeta{display:block;opacity:.72;font-size:12px}.waterEmpty{padding:6px;font-size:12px;opacity:.7}.waterColorPip{display:inline-block;width:22px;height:4px;background:var(--dn);border-radius:4px}.waterLineLabelFixed{font-size:12px;line-height:16px;font-weight:700;letter-spacing:.1px;background:rgba(255,255,255,.83);padding:0 2px;border-radius:2px;white-space:nowrap;display:inline-block;position:absolute;left:50%;top:50%;transform:translate(-50%,-50%) rotate(var(--rot));text-shadow:0 1px #fff;pointer-events:none}.waterLabelIcon{background:transparent;border:0;pointer-events:none}.waterSettingsGrid{display:grid;grid-template-columns:repeat(auto-fit,minmax(170px,1fr));gap:10px}.waterSettingsGrid label{display:block}.waterStdRow{display:flex;gap:7px;align-items:center;padding:5px;border-bottom:1px solid #dde6ed}.waterStdRow input[type=number]{width:105px}.waterStdRow input[type=color]{width:60px}.waterStdRow button{padding:5px 8px}.dnHelp{font-size:12px;opacity:.76}.waterDrawActive{background:#f1bd43!important;color:#16242f!important}

/* 0.2.4: keep drawing controls visible and readable. */
#waterHint{display:inline-flex;align-items:center;gap:6px;flex-wrap:wrap}
#waterHint button{white-space:nowrap}

/* v0.2.5 – Utility selectors, provider hierarchy and constant-pixel labels */
.waterProviderQuickbar{display:flex;align-items:center;gap:4px;flex-wrap:wrap}
.waterProviderQuickbar[hidden]{display:none!important}
.providerBarCaption{color:#334155;font-size:12px;font-weight:700;white-space:nowrap}
.providerChip{background:#fff;color:#17334e;border:1px solid #b8c7d7;border-radius:5px;padding:6px 9px;font-weight:750;font-size:12px;cursor:pointer}
.providerChip.selected{background:#164e79;color:#fff;border-color:#164e79;outline:2px solid #a7cdeb}
.providerChip:focus-visible{outline:3px solid #f0b429}
.waterTree>details>details>details{margin-left:6px}
.waterTree>details>details>details>details{margin-left:11px}
.waterLineLabelFixed{font-size:11px;line-height:15px;max-width:none}
