:root{font-family:Inter,ui-sans-serif,system-ui,sans-serif;color:#16231d;background:#e9eeeb;--ink:#16231d;--green:#075c48;--line:#d5ddd8}
*{box-sizing:border-box}
body{margin:0}
header{height:74px;background:#fbfcfa;border-bottom:1px solid var(--line);display:flex;align-items:center;justify-content:space-between;padding:12px 20px}
h1{font-size:21px;margin:1px 0}
.eyebrow{font-size:10px;font-weight:900;letter-spacing:.18em;color:var(--green)}
.status{font-size:12px;background:#e1f1e9;padding:8px 12px;border-radius:18px;color:#174d3a}
main{height:calc(100vh - 74px);display:grid;grid-template-columns:286px minmax(420px,1fr) 310px}
.sidebar{background:#fbfcfa;padding:16px;overflow:auto}
.controls{border-right:1px solid var(--line)}
.detail{border-left:1px solid var(--line)}
section{margin-bottom:20px}
h2{font-size:14px;margin:0 0 10px}
details{border-top:1px solid var(--line);padding:11px 0}
summary{font-size:13px;font-weight:800;cursor:pointer;margin-bottom:10px}
label{display:block;font-size:11px;font-weight:700;margin:8px 0}
select,input{width:100%;margin-top:4px;padding:7px;border:1px solid #bac8c0;border-radius:6px;background:white;color:var(--ink)}
button{border:0;border-radius:6px;background:var(--green);color:#fff;font-weight:750;padding:8px 10px;cursor:pointer}
.secondary{background:#67736c;margin-top:5px}.primary-action{width:100%;font-size:13px;padding:10px;margin-top:8px;box-shadow:0 2px 7px #075c4840}.opportunity-panel{border:1px solid #9dbbad;background:#f3f8f5;border-radius:8px;padding:11px;margin-bottom:10px}.parameter-title{font-size:10px;font-weight:900;text-transform:uppercase;letter-spacing:.06em;color:#52655b;margin:12px 0 3px}.precomputed-parameters{display:grid;gap:3px;background:#fff;border:1px solid #d3e0d9;border-radius:6px;padding:8px;font-size:10.5px;line-height:1.35}.precomputed-parameters small{color:#65736b;margin-top:3px}.opportunity-summary{display:grid;grid-template-columns:1fr 1fr;gap:5px;margin-top:8px}.opportunity-summary div{background:#fff;border:1px solid #d5e1da;border-radius:5px;padding:6px;font-size:10px}.opportunity-summary strong{display:block;font-size:13px}.download-link{display:block;font-size:11px;margin:9px 0;color:var(--green);font-weight:750}.opportunity-table-wrap{overflow:auto;max-height:44vh}.opportunity-table-wrap table{border-collapse:collapse;width:100%;font-size:10px}.opportunity-table-wrap th,.opportunity-table-wrap td{padding:5px;border-bottom:1px solid var(--line);text-align:left;white-space:nowrap}.opportunity-table-wrap th{cursor:pointer;background:#eef2ef;position:sticky;top:0}.opportunity-table-wrap tr{cursor:pointer}.opportunity-table-wrap tr:hover,.opportunity-table-wrap tr.selected{background:#fff0bd}
.controls>button{width:100%}
.two{display:grid;grid-template-columns:1fr 1fr;gap:8px}
.layer-group{margin:10px 0}
.layer-group h3{font-size:11px;text-transform:uppercase;letter-spacing:.08em;color:#68766e;margin:7px 0}
.layer-option{display:flex;align-items:center;gap:8px;font-size:12px;font-weight:650;margin:6px 0}
.layer-option input{width:auto;margin:0}
.layer-count{margin-left:auto;color:#718078;font-variant-numeric:tabular-nums}
.notice{font-size:10.5px;line-height:1.45;color:#6d7972;background:#eef2ef;padding:8px;border-radius:6px}
.map-wrap{position:relative;min-width:0}
#map{width:100%;height:100%;background:#dbe5df}
.leaflet-interactive{cursor:pointer}
#map.measurement-active .leaflet-interactive{cursor:crosshair}
.legend,.measure-box{position:absolute;z-index:600;background:#fff;box-shadow:0 3px 14px #21322933;border-radius:8px;padding:9px 11px;font-size:10px}
.legend{right:12px;bottom:18px}
.legend-toggle{display:flex;align-items:center;justify-content:space-between;gap:14px;width:100%;padding:3px;background:transparent;color:var(--ink);font-size:16px;font-weight:800;text-align:left}
.legend-toggle-icon{font-size:18px;line-height:1}
.legend-content{margin-top:5px}
.legend-content>span{display:block;margin:5px 3px;font-size:14px;line-height:1.25}
.legend.is-collapsed{padding:7px 9px}
.legend.is-collapsed .legend-content{display:none}
.legend i{display:inline-block;width:12px;height:9px;border:2px solid;margin-right:6px}
.distribution{background:#1261a055;border-color:#1261a0}
.industrial{background:#00897b55;border-color:#00897b}
.soil{background:#e58b1a55;border-color:#e58b1a}
.center{background:#6046c955;border-color:#6046c9}
.pv{background:#d4ad1555;border-color:#d4ad15}
.measure-box{left:62px;top:12px;max-width:310px}
.measure-box>b,.measure-box>span,.measure-box>small{display:block;margin-bottom:6px}
.measure-box div{display:flex;gap:4px}
.measure-box button{font-size:10px;padding:6px}
.measure-box button:nth-child(3),.measure-box button:nth-child(4){background:#67736c}
.muted{color:#758179;font-size:12px}
.detail dl{font-size:11.5px}
.detail dt{font-weight:800;color:#5e6d65;margin-top:9px}
.detail dd{margin:2px 0;overflow-wrap:anywhere}
.detail-relation{margin:16px 0 0;padding-top:12px;border-top:1px solid var(--line)}
.detail-relation h3{font-size:13px;margin:0 0 9px}
.detail-relation p{font-size:11.5px;margin:4px 0}
.associated-distribution-list{max-height:190px;overflow-y:auto;margin:8px 0 0;padding-left:20px;font-size:11.5px}
.associated-distribution-list li{margin:5px 0;padding-right:5px}
.physical-node-list{padding-left:17px;font-size:11px}.physical-node{margin:8px 0;padding:7px;background:#f3f5f3;border-left:3px solid #929d96}.physical-node.matches-filter{border-left-color:#1261a0;background:#edf5fb}.physical-node.same-site{opacity:.78}.physical-node dl{margin:5px 0}
.layer-option>span:first-of-type{display:flex;flex-direction:column}
.layer-subtitle{font-size:9.5px;font-weight:500;color:#748078;margin-top:1px}
.fixed-filter{font-size:10.5px;line-height:1.45;color:#6d7972;background:#eef2ef;padding:8px;border-radius:6px;margin:9px 0 0}
.legend .transport{background:#fff;border-color:#4b277b;border-width:3px;border-radius:50%}
.provenance-warning{font-size:10.5px;line-height:1.45;background:#f2edf8;color:#412566;border-left:3px solid #5d348b;padding:9px;margin-bottom:12px}
.summary-line{display:flex;justify-content:space-between;font-size:11px;padding:3px 0;border-bottom:1px dotted #d9dfdb}
.summary-line strong{font-variant-numeric:tabular-nums}
.filter-error{color:#8b1e1e;background:#fff0f0;border-left:3px solid #b72a2a;padding:7px 8px;border-radius:4px;font-size:11px;line-height:1.35}
@media(max-width:1050px){main{grid-template-columns:250px 1fr}
.detail{display:none}
}
@media(max-width:720px){header{height:auto}
.status{display:none}
main{display:block;height:auto}
.sidebar{border:0}
.map-wrap,#map{height:72vh}
.measure-box{left:56px;right:8px;max-width:310px}
.legend{right:8px;bottom:10px;max-width:calc(100% - 16px)}
}
