:root{--ink:#213d35;--muted:#6e7b73;--green:#28644e;--cream:#f5f5ef;--line:#dce3d8;--soft:#e9eee5;--orange:#d5774b}
*{box-sizing:border-box}body{margin:0;background:var(--cream);color:var(--ink);font:14px/1.5 system-ui,-apple-system,"Segoe UI",sans-serif}button,input,select{font:inherit}button,a,input,select{touch-action:manipulation}button{cursor:pointer}a{color:var(--green)}button:focus-visible,a:focus-visible,input:focus-visible,select:focus-visible{outline:3px solid #c88045;outline-offset:3px}button:disabled{cursor:default}.sr-only,.skip:not(:focus){position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0,0,0,0)}.skip:focus{position:absolute;z-index:2000;background:white;padding:12px}
.topbar{height:70px;margin:0 36px;border-bottom:1px solid var(--line);display:flex;align-items:center;justify-content:space-between}.brand{font-size:25px;letter-spacing:-1.5px;text-decoration:none;color:var(--ink);font-weight:750;display:flex;align-items:center}.brand>span:first-child{font-weight:400}.brand-label{font-size:11px!important;letter-spacing:.3px;font-weight:450!important;margin-left:18px;border-left:1px solid #bac8bc;padding-left:18px;color:var(--muted)}.source-button{background:none;border:0;color:var(--ink);font-size:12px;display:flex;gap:15px;align-items:center;padding:10px}.source-button span{font-size:18px}
.intro{padding:27px 36px 28px;display:flex;justify-content:space-between;align-items:center;gap:24px}.eyebrow{font-size:10px;letter-spacing:1.8px;font-weight:700;margin:0 0 8px}.intro h1{font-size:clamp(30px,3vw,45px);letter-spacing:-1.8px;line-height:1.15;margin:0 0 9px;font-weight:650}.intro h1 em{font-family:Georgia,serif;font-weight:400;color:var(--green)}.lead{margin:0;color:var(--muted);font-size:14px}.intro-meta{text-align:right}.intro-meta p{font-size:11px;color:var(--muted);margin:9px 0 0}.data-tag{background:#e6eddf;border:1px solid #d6e1ce;display:inline-flex;align-items:center;gap:8px;padding:7px 11px;border-radius:30px;font-size:11px}.dot{width:6px;height:6px;background:var(--green);border-radius:100%}
.workspace{display:grid;grid-template-columns:270px minmax(0,1fr) 285px;gap:0;margin:0 24px;border:1px solid var(--line);border-radius:15px;overflow:hidden;background:#fff;min-height:610px;height:calc(100vh - 270px)}.controls{padding:23px 20px;border-right:1px solid var(--line);overflow:auto}.section-label{display:flex;align-items:center;justify-content:space-between;margin-bottom:10px}.section-label .eyebrow{font-size:9px;margin:0}.section-note{font-size:10px;color:var(--muted)}.layers{display:flex;flex-direction:column;gap:5px}.layer{display:flex;align-items:center;gap:11px;text-align:left;border:1px solid transparent;background:transparent;padding:10px;border-radius:9px;color:var(--ink)}.layer:hover{background:#f5f6f1}.layer.active{background:#e9efe4;border-color:#ccd9c4}.layer-icon{font-size:24px;width:25px;line-height:1;text-align:center;color:var(--green)}.layer strong{font-size:12px;font-weight:600;display:block}.layer small{display:block;font-size:9px;color:var(--muted);margin-top:2px}.layer-mark{margin-left:auto;border:1px solid #b8c7b7;width:12px;height:12px;border-radius:50%;flex-shrink:0}.active .layer-mark{border:3px solid #e9efe4;background:var(--green);outline:1px solid var(--green)}
.filter-section{margin-top:24px;padding-top:21px;border-top:1px solid var(--line)}.search-wrap{border:1px solid #cbd7cc;border-radius:7px;background:#fff;display:flex;align-items:center;padding:0 10px}.search-wrap>span{font-size:22px;color:var(--muted);margin-right:7px}.search-wrap input{border:0;min-width:0;width:100%;padding:10px 0;font-size:12px;color:var(--ink);outline-offset:0}.filter-row{display:flex;align-items:center;margin-top:9px;gap:10px}.filter-row label{font-size:10px;min-width:28px;color:var(--muted)}.filter-row select{width:100%;min-width:0;border:1px solid var(--line);background:#fff;padding:7px;font-size:11px;border-radius:6px;color:var(--ink)}.results-meta{font-size:10px;color:var(--muted);margin:14px 0 8px}.results{max-height:155px;overflow:auto}.result{display:flex;justify-content:space-between;align-items:center;width:100%;border:0;border-top:1px solid #edf0e8;background:#fff;padding:9px 1px;text-align:left;color:var(--ink);font-size:11px}.result:hover{color:var(--green);background:#f3f6ed}.result span{font-size:9px;color:var(--muted)}.clear-filters{background:none;border:0;color:var(--green);font-size:10px;padding:7px 0;text-decoration:underline;text-underline-offset:3px}.coverage-note{font-size:10px;color:var(--muted);line-height:1.6;background:#f4f5ef;border-radius:7px;padding:11px;margin:19px 0 0}
.map-panel{position:relative;min-width:0;isolation:isolate;background:#e8ede8}#map{height:100%;width:100%;z-index:0}.map-top{position:absolute;top:14px;left:14px;right:14px;z-index:800;display:flex;justify-content:space-between;align-items:flex-start;gap:10px;pointer-events:none}.map-title{display:inline-block;padding:8px 11px;background:#fffef6f2;box-shadow:0 2px 12px #213d3510;border:1px solid #d9e2d5;border-radius:7px;font-size:11px;font-weight:600;max-width:60%}.map-button{pointer-events:auto;padding:8px 10px;background:#fffef6f2;border:1px solid #d9e2d5;border-radius:7px;font-size:10px;color:var(--ink);white-space:nowrap}.map-button span{margin-left:6px}.leaflet-control-zoom{margin-top:64px!important;box-shadow:0 2px 12px #213d3510!important;border:1px solid #d9e2d5!important}.leaflet-control-zoom a{color:var(--ink)!important}.leaflet-control-attribution{font-size:9px!important;background:#fffef6e8!important}.legend{position:absolute;z-index:800;bottom:29px;left:14px;background:#fffef6f2;border:1px solid #d9e2d5;border-radius:9px;padding:12px 14px;box-shadow:0 3px 15px #213d3509;max-width:250px}.legend h2{font-size:11px;margin:0 0 8px;font-weight:600}.legend-row{display:flex;align-items:center;gap:8px;font-size:10px;color:#506157;margin-top:5px}.swatch{width:10px;height:10px;border-radius:2px;border:1px solid #00000008}.legend p{font-size:9px;color:var(--muted);margin:10px 0 0;max-width:180px}.map-error{position:absolute;z-index:850;bottom:25px;right:12px;max-width:230px;background:#fff6e9;border:1px solid #eed1aa;border-radius:7px;padding:10px;font-size:10px}.leaflet-tooltip{border:1px solid var(--line)!important;border-radius:6px!important;font:12px system-ui!important;box-shadow:0 2px 12px #213d3510!important;color:var(--ink)!important}
.detail{border-left:1px solid var(--line);padding:25px 22px;overflow:auto;background:#fbfcf7}.detail-empty{padding-top:50px}.empty-symbol{display:flex;align-items:center;justify-content:center;border:1px solid #d6e0cd;width:48px;height:48px;border-radius:12px;background:#eef3e8;font-size:30px;color:var(--green);margin-bottom:22px}.detail h2{margin:0 0 14px;letter-spacing:-.8px;font-size:25px;font-weight:550;line-height:1.2}.detail-empty>p:not(.eyebrow){font-size:12px;color:var(--muted);line-height:1.8}.detail-tip{margin-top:27px;padding-top:17px;border-top:1px solid var(--line);font-size:10px;color:var(--muted)}.municipality-kicker{font-size:9px;color:var(--muted);letter-spacing:1px;text-transform:uppercase;margin:0 0 9px}.detail .municipality-name{margin-bottom:4px}.municipality-code{font-size:10px;color:var(--muted);margin:0 0 20px}.plan-section{padding:16px 0;border-top:1px solid var(--line)}.plan-section h3{font-size:9px;letter-spacing:1.2px;text-transform:uppercase;color:var(--muted);font-weight:600;margin:0 0 9px}.op-year{font-size:34px;font-weight:500;line-height:1;letter-spacing:-1px;margin:0 0 7px}.plan-caption{font-size:10px;color:var(--muted);margin:0}.pill{font-size:10px;display:inline-block;background:#e6eddf;padding:4px 8px;border-radius:20px;color:var(--green);font-weight:550}.pill.unknown{background:#edf0e9;color:#737e72}.pill.no{background:#f5e8dd;color:#8a553a}.plan-year{font-size:12px;margin:8px 0 0}.plan-note{font-size:11px;margin:9px 0;color:#607163;line-height:1.7;overflow-wrap:anywhere}.plan-link{display:inline-block;font-size:10px;margin-top:9px;text-underline-offset:4px}.detail-footnote{font-size:9px;color:var(--muted);line-height:1.6;margin-top:15px}
footer{padding:15px 27px 20px;display:flex;justify-content:space-between;gap:15px;font-size:9px;color:var(--muted)}dialog{border:1px solid var(--line);border-radius:16px;padding:25px 30px;color:var(--ink);max-width:620px;width:calc(100% - 32px);max-height:85vh}dialog::backdrop{background:#16362c80;backdrop-filter:blur(3px)}.dialog-heading{display:flex;justify-content:space-between;align-items:center}.dialog-heading button{border:0;background:transparent;font-size:26px;color:var(--ink)}dialog h2{font-size:28px;font-weight:550;letter-spacing:-1px;margin:5px 0 25px}dialog h3{font-size:14px;margin:23px 0 8px}dialog p{font-size:12px;color:var(--muted);line-height:1.8}dialog a{font-size:12px}
@media(min-width:1600px){.workspace{grid-template-columns:300px minmax(0,1fr) 320px}.controls{padding:26px}.detail{padding:28px}}
@media(max-width:1100px){.workspace{grid-template-columns:240px minmax(0,1fr) 240px}.controls{padding:18px 14px}.detail{padding:22px 17px}.map-title{max-width:55%}.map-button{font-size:9px}.intro-meta p{max-width:200px}.brand-label{display:none}}
@media(max-width:850px){.topbar{margin:0 18px;height:59px}.intro{padding:23px 18px;display:block}.intro-meta{display:flex;text-align:left;align-items:center;gap:12px;margin-top:15px}.intro-meta p{max-width:none;font-size:9px;margin:0}.intro h1{font-size:35px}.lead{font-size:12px}.workspace{grid-template-columns:minmax(0,1fr);margin:0 12px;height:auto;min-height:0}.controls{border-right:0;border-bottom:1px solid var(--line);padding:18px}.layers{display:grid;grid-template-columns:1fr 1fr}.layer{padding:9px 8px;gap:8px}.layer-icon{font-size:22px;width:20px}.layer strong{font-size:11px}.layer small{font-size:8px}.layer-mark{width:10px;height:10px}.section-note{font-size:9px}.filter-section{margin-top:17px;padding-top:16px}.filter-row{display:inline-flex;width:calc(50% - 7px);margin-right:7px;gap:6px}.filter-row:last-of-type{margin-right:0}.results-meta{margin-bottom:0}.results:empty{display:none}.results{max-height:135px;margin-top:7px}.coverage-note{margin-top:12px;font-size:9px}.map-panel{height:68vh;min-height:450px}.map-top{left:10px;right:10px;top:10px}.map-title{max-width:55%;font-size:10px}.map-button{font-size:9px}.detail{border-left:0;border-top:1px solid var(--line);padding:22px}.detail-empty{padding-top:5px}.detail-empty h2 br{display:none}.empty-symbol{float:left;margin:0 17px 12px 0}.detail-empty p{max-width:480px}.detail-tip{margin-top:12px}.plan-section{display:inline-block;width:calc(50% - 12px);vertical-align:top;margin-right:12px;padding-right:10px}.plan-section:last-of-type{margin-right:0}.legend{bottom:28px;left:10px}footer{display:block;font-size:8px;padding:13px 19px}footer span{display:block;margin-bottom:5px}.source-button{font-size:10px;gap:8px}}
@media(prefers-reduced-motion:reduce){*{scroll-behavior:auto!important}}
.leaflet-tile{filter:grayscale(1);opacity:.68!important}

.top-actions{display:flex;align-items:center;gap:16px}.portal-link{font-size:10px;text-decoration:none;color:var(--muted)}.summary{display:flex;gap:29px}.summary>div{display:flex;flex-direction:column;text-align:right}.summary strong{font-size:31px;line-height:1.1;letter-spacing:-1px;font-weight:500}.summary span{font-size:10px;color:var(--muted);margin-top:5px}
.workspace{grid-template-columns:295px minmax(0,1fr) 305px}.filter-row label{min-width:49px}.background-row{margin-top:14px}.background-row label{font-size:10px}.results{max-height:220px}.result{display:block;padding:9px 4px}.result strong{display:block;font-size:10px;font-weight:550}.result>span{display:block;margin-top:3px;font-size:9px;line-height:1.5}.result.selected{background:#e9efe4;border-radius:5px}.result-actions{display:flex;justify-content:space-between;gap:12px;margin:3px 0 8px}.map-actions{display:flex;gap:5px}.map-actions button{pointer-events:auto}#fullscreen{font-size:15px;padding:5px 8px}.map-panel:fullscreen{width:100vw;height:100vh}.map-panel.satellite .leaflet-tile{filter:none;opacity:1!important}
.dc-marker{border:0;background:none}.dc-dot{width:14px;height:14px;display:block;border-radius:50%;background:#286b53;border:2px solid #fffff7;box-shadow:0 1px 5px #183d3540}.dc-dot.planned{background:#c67a4d}.dc-dot.under_construction{background:#6996a4}.dc-dot.shelved{background:#8a8b82}.dc-marker.is-selected .dc-dot{outline:3px solid #c78850;outline-offset:2px}.dc-cluster{background:#e0eadbcf;border:1px solid #cad8c2;border-radius:50%;box-shadow:0 2px 8px #213d3520;display:flex;justify-content:center;align-items:center;color:#234c3b;font-size:12px;font-weight:650}.dc-cluster.large{background:#28634ef0;color:white;border:4px solid #d5e2c9d9;font-size:14px}.detail .facility-name{font-size:23px;line-height:1.3;margin-bottom:7px;overflow-wrap:anywhere}.facility-operator{font-size:12px;color:var(--muted);margin:0 0 17px}.info-list{margin:15px 0 0}.info-list>div{padding:10px 0;border-top:1px solid var(--line)}.info-list dt{font-size:9px;text-transform:uppercase;letter-spacing:1px;color:var(--muted);margin-bottom:4px}.info-list dd{font-size:12px;margin:0;overflow-wrap:anywhere}.facility-description{font-size:11px;line-height:1.7;color:var(--muted);white-space:pre-wrap;overflow-wrap:anywhere}.facility-source{display:block;text-align:center;background:var(--green);color:#fff;padding:10px;font-size:11px;border-radius:7px;text-decoration:none;margin-top:20px}.description-toggle{border-top:1px solid var(--line);padding-top:14px;margin-top:16px;font-size:11px}.description-toggle summary{cursor:pointer}.area-count{font-size:40px;margin:8px 0;line-height:1;font-weight:500}.area-action{border:1px solid #ccd8c6;background:#edf2e8;border-radius:6px;padding:9px 12px;font-size:11px;color:var(--green);margin-top:15px}.leaflet-marker-icon{font-family:system-ui}.no-script{padding:18px;background:#fff}
@media(min-width:1600px){.workspace{grid-template-columns:310px minmax(0,1fr) 320px}}
@media(max-width:1100px) and (min-width:851px){.workspace{grid-template-columns:250px minmax(0,1fr) 250px}.summary{gap:18px}.summary strong{font-size:27px}}
@media(max-width:850px){.workspace{grid-template-columns:1fr}.intro{padding-bottom:22px}.summary{margin-top:20px;justify-content:flex-start;gap:28px}.summary>div{text-align:left}.summary strong{font-size:27px}.summary span{font-size:9px}.intro h1{font-size:34px}.top-actions{gap:5px}.portal-link{display:none}.layers{grid-template-columns:1fr 1fr}.layer:first-child{grid-column:1 / -1}.filter-row label{min-width:43px}.filter-row{width:calc(50% - 8px)}.background-row{width:100%;margin-top:10px}.background-row select{max-width:200px}.results{max-height:140px}.result{padding:8px 5px}.map-title{max-width:50%;font-size:9px}.map-button{font-size:9px}.facility-source{max-width:400px}.detail-empty h2 br{display:none}.detail-empty{padding-top:5px}.map-panel{min-height:460px}.map-error{bottom:25px}.map-actions{gap:3px}}
@media(max-width:850px){.filter-grid{display:grid;grid-template-columns:1fr 1fr;gap:9px 12px;margin-top:12px}.filter-grid .filter-row{width:100%;display:flex;flex-direction:column;align-items:flex-start;gap:3px;margin:0}.filter-grid .filter-row:last-child{grid-column:1 / -1}.filter-grid .filter-row select{width:100%}.filter-grid .filter-row label{font-size:9px}}
