@font-face{font-family:Poppins;src:url('assets/poppins-regular.ttf') format('truetype');font-weight:400;font-display:swap}
@font-face{font-family:Poppins;src:url('assets/poppins-semibold.ttf') format('truetype');font-weight:600 800;font-display:swap}
:root{
  --navy:#0e2245;--orange:#ea6f24;--orange-dark:#a6420c;--gold:#f8a824;
  --bg:#f3f5f7;--panel:#fff;--surface:#f6f7f9;--line:#dfe4eb;
  --ink:#152947;--muted:#5f6c7e;--accent:var(--orange);--focus:#2366b3;
  --accent-dim:#fff1e7;--com:#58c8f3;--panel-w:410px;--header-h:82px;
  --shadow:0 8px 28px -8px #0e224540;
}
*{box-sizing:border-box}
html,body{height:100%;margin:0}
body{font:13px/1.5 Poppins,system-ui,sans-serif;color:var(--ink);background:var(--bg);overflow:hidden}
[hidden]{display:none!important}
button,input,select{font:inherit}
button{cursor:pointer;touch-action:manipulation}
button:disabled{cursor:not-allowed;opacity:.5}
button,select,input,a{-webkit-tap-highlight-color:transparent}
:where(button,select,input,a,[tabindex]):focus-visible{outline:3px solid var(--focus);outline-offset:3px}
.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;border:0}
.skip{position:fixed;left:16px;top:-80px;z-index:2000;padding:12px 18px;background:var(--navy);color:white;border-radius:6px}
.skip:focus{top:12px}
#app{height:100vh;height:100dvh;display:grid;grid-template-columns:var(--panel-w) minmax(0,1fr);grid-template-rows:var(--header-h) minmax(0,1fr);position:relative}
#brand{grid-column:1/-1;display:flex;align-items:center;gap:28px;padding:0 28px;background:white;border-bottom:1px solid var(--line);z-index:800}
.brand-logo{width:210px;height:auto;flex:none}
.brand-text{padding-left:28px;border-left:1px solid var(--line)}
#brand h1{font-size:18px;font-weight:600;letter-spacing:-.025em;margin:0}
.brand-text p{font-size:12px;color:var(--muted);margin:2px 0 0}
#presenter{margin-left:auto;display:flex;align-items:center;gap:9px;min-height:44px;cursor:pointer}
#presenter input{position:absolute;opacity:0;width:1px;height:1px}
.track{display:block;width:34px;height:20px;background:#8590a0;border-radius:20px;position:relative}
.knob{position:absolute;top:3px;left:3px;width:14px;height:14px;background:white;border-radius:50%;transition:transform .18s ease-out}
#presenter input:checked+.track{background:var(--navy)}
#presenter input:checked+.track .knob{transform:translateX(14px)}
#presenter input:focus-visible+.track{outline:3px solid var(--focus);outline-offset:3px}
.ptxt{font-size:12px;color:var(--ink)}
#mobile-views{display:none}
#panel{grid-column:1;grid-row:2;background:var(--panel);border-right:1px solid var(--line);min-height:0;min-width:0;z-index:650}
.panel-main{height:100%;display:flex;flex-direction:column;min-height:0}
#sidenav{display:flex;padding:0 20px;gap:18px;border-bottom:1px solid var(--line);flex:none}
#sidenav button{position:relative;display:flex;align-items:center;justify-content:center;gap:7px;min-height:57px;padding:0 3px;border:0;border-bottom:2px solid transparent;background:none;color:var(--muted);font-size:12px}
#sidenav button:hover{color:var(--navy)}
#sidenav button.on{color:var(--navy);border-bottom-color:var(--orange);font-weight:600}
#sidenav svg,.search-wrap svg{width:18px;height:18px;fill:none;stroke:currentColor;stroke-width:1.7;stroke-linecap:round;stroke-linejoin:round;flex:none}
#filter-badge{min-width:19px;height:19px;background:var(--navy);color:white;padding:0 5px;border-radius:10px;line-height:19px;font-size:10px;text-align:center}
#panel-content{flex:1;min-height:0;overflow:hidden}
.panel-pane{height:100%;min-height:0}
.pane-head{display:flex;gap:12px;align-items:center;padding:24px 22px 18px}
.pane-head>div{min-width:0;flex:1}
.pane-head h2{margin:0;font-size:19px;line-height:1.35;font-weight:600;letter-spacing:-.035em;text-wrap:balance}
.pane-head p{margin:6px 0 0;color:var(--muted);font-size:12px}
.pane-head button{height:40px;flex:none;border:1px solid var(--line);border-radius:6px;background:white;padding:0 10px;color:var(--ink);font-size:11px;font-weight:600}
#export{background:var(--navy);color:white;border-color:var(--navy)}
#export:hover:not(:disabled){background:#243f66}
#r-count b{color:var(--navy);font-weight:600;font-variant-numeric:tabular-nums}
.result{display:flex;flex-direction:column}
.search-wrap{margin:0 22px 14px;position:relative;flex:none}
.search-wrap svg{position:absolute;left:13px;top:14px;color:var(--muted);pointer-events:none}
input[type=search]{width:100%;height:46px;border:1px solid #cbd3de;border-radius:7px;background:white;color:var(--ink);padding:0 12px 0 39px;min-width:0;font-size:12px}
input::placeholder{color:var(--muted);opacity:1}
#active-filters{padding:0 22px 13px;display:flex;flex-wrap:wrap;gap:6px;max-height:130px;overflow-y:auto;flex:none}
.filter-chip{background:var(--accent-dim);color:var(--orange-dark);border:1px solid #f4cfb7;border-radius:5px;padding:6px 9px;display:flex;align-items:center;gap:8px;font-size:11px;max-width:100%;min-height:32px}
.filter-chip span{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.filter-chip svg{width:12px;height:12px;stroke:currentColor;stroke-width:1.8;flex:none}
#sortbar{display:flex;align-items:center;gap:10px;border-top:1px solid var(--line);border-bottom:1px solid var(--line);padding:8px 22px;background:var(--surface)}
#sortbar label{font-size:11px;color:var(--muted)}
#sortbar select{height:34px;flex:1;width:auto;border:0;background:transparent;padding:0 18px 0 0;font-size:11px;text-align:right}
#list{list-style:none;margin:0;padding:0;overflow-y:auto;flex:1;min-height:0;overscroll-behavior:contain}
#list li{border-bottom:1px solid #e8ecf1}
#list .row-btn{width:100%;display:block;text-align:left;border:0;background:white;color:var(--ink);padding:17px 22px;min-height:104px}
#list .row-btn:hover{background:#f5f7fa}
#list li.sel .row-btn{background:var(--accent-dim);box-shadow:inset 1px 0 0 var(--orange)}
.row-top{display:flex;align-items:center;gap:8px;justify-content:space-between}
#list .a{display:block;font-size:13px;font-weight:600;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.row-arrow{width:14px;height:14px;stroke:#69778b;stroke-width:1.8;fill:none;flex:none}
#list .m{display:block;font-size:11px;color:var(--muted);margin-top:4px}
.row-bottom{display:flex;align-items:center;gap:10px;margin-top:9px;justify-content:space-between}
.owner-tag{font-size:10px;color:var(--muted);display:flex;align-items:center;gap:6px}
.owner-tag:before{content:'';width:5px;height:5px;border-radius:50%;background:#8996a5}
.owner-tag.occupied{color:#34614f}.owner-tag.occupied:before{background:#468a6d}
#list .kw{color:var(--navy);font-size:11px;font-weight:600;font-variant-numeric:tabular-nums}
.more-note{padding:18px 22px;font-size:11px;color:var(--muted);text-align:center;background:var(--surface)}
.export-note{flex:none;border-top:1px solid var(--line);padding:12px 22px;color:var(--muted);font-size:10px;background:var(--surface)}
#empty{flex:1;overflow-y:auto;text-align:center;padding:38px 24px}
#empty p{font-size:15px;font-weight:600;margin:0 0 8px}
#empty small{display:block;color:var(--muted);font-size:12px}
#empty button,.filter-footer button{border:0;border-radius:6px;background:var(--navy);color:white;font-weight:600;padding:12px 16px;min-height:44px}
#empty button{margin-top:18px}
#pane-filters{display:flex;flex-direction:column}
#controls{flex:1;min-height:0;overflow-y:auto;overscroll-behavior:contain}
.filters{padding:2px 22px 24px;display:flex;flex-direction:column;gap:23px}
.f>label,.f>span{display:block;font-size:12px;font-weight:600;margin-bottom:8px}
.f label em{color:var(--orange-dark);font-weight:400;font-style:normal;float:right}
.f small{display:block;color:var(--muted);font-size:11px;margin-top:7px}
select,input[type=text]{width:100%;height:44px;background:white;border:1px solid #cbd3de;border-radius:6px;padding:0 10px;color:var(--ink);font-size:12px;min-width:0}
.row{display:flex;align-items:center;gap:10px}.row em{font-style:normal;color:var(--muted)}
input[type=range]{width:100%;height:26px;accent-color:var(--orange-dark)}
.seg{display:flex;border:1px solid #cbd3de;border-radius:6px;padding:3px;gap:3px}
.seg button{flex:1;height:36px;border:0;border-radius:4px;background:white;color:var(--muted);font-size:11px;padding:0 4px}
.seg button.on{background:var(--navy);color:white}
.filter-footer{padding:15px 22px;border-top:1px solid var(--line)}
.filter-footer button{width:100%;font-size:12px}
#pane-overview{overflow-y:auto}
.stats{display:grid;grid-template-columns:repeat(2,1fr);margin:2px 22px 24px;gap:24px 20px}
.stat b{display:block;font-size:26px;font-weight:600;letter-spacing:-.03em;font-variant-numeric:tabular-nums}
.stat span{display:block;font-size:11px;color:var(--muted)}
.stat i{font-style:normal}
.picks{padding:22px;border-block:1px solid var(--line);background:var(--surface)}
.picks h3{margin:0;font-size:14px;font-weight:600}
.picks p{margin:5px 0 14px;font-size:12px;color:var(--muted)}
#picks{display:flex;gap:8px;flex-wrap:wrap}
#picks button{background:white;border:1px solid #cbd3de;color:var(--navy);border-radius:5px;padding:10px 12px;font-size:11px;min-height:40px}
#picks button:hover{border-color:var(--orange-dark)}
#foot{padding:22px;color:var(--muted);font-size:12px;line-height:1.8}
#masknote{display:block;margin-top:14px}
/* Map controls are kept away from both the property details and the zoom control. */
#map{grid-column:2;grid-row:2;min-width:0;background:#23364a;isolation:isolate;z-index:0}
.leaflet-container{font:inherit;background:#23364a}
.solar-points{position:absolute;pointer-events:none}
.leaflet-bar{border:0!important;box-shadow:var(--shadow)!important}
.leaflet-bar a{width:38px!important;height:38px!important;line-height:38px!important;background:white;color:var(--navy);border-color:var(--line)}
.leaflet-control-zoom{margin:0 18px 34px 0!important}
.leaflet-control-attribution{background:#fffffff0!important;color:#46556b!important;font:10px/1.5 Poppins,sans-serif!important;max-width:100%}
.leaflet-control-attribution a{color:#274f7c!important}
#map-context{position:absolute;left:calc(var(--panel-w) + 22px);top:calc(var(--header-h) + 22px);z-index:600;background:white;padding:13px 17px;border-radius:7px;box-shadow:var(--shadow);pointer-events:none}
#map-context strong{display:block;font-size:13px;font-weight:600}
#map-context span{display:block;font-size:10px;color:var(--muted);margin-top:3px}
#maptools{position:absolute;left:calc(var(--panel-w) + 22px);top:calc(var(--header-h) + 107px);z-index:600;display:flex;gap:8px}
#viewtoggle{display:flex;background:white;border-radius:6px;padding:3px;box-shadow:var(--shadow)}
#viewtoggle button{height:36px;border:0;border-radius:4px;background:white;color:var(--muted);padding:0 13px;font-size:11px}
#viewtoggle button.on{background:var(--navy);color:white}
#zoomfit{height:42px;border:0;border-radius:6px;background:white;color:var(--navy);padding:0 13px;font-size:11px;box-shadow:var(--shadow)}
#zoomfit:hover:not(:disabled){background:#edf1f6}
#map-legend{position:absolute;left:calc(var(--panel-w) + 22px);bottom:30px;z-index:600;display:flex;gap:18px;background:white;padding:11px 14px;border-radius:6px;box-shadow:var(--shadow);font-size:10px}
#map-legend span{display:flex;align-items:center;gap:7px}
#map-legend i{width:8px;height:8px;border-radius:50%}.res-dot{background:#f8a824}.com-dot{background:#5cd0ff}
#mapnote{position:absolute;left:calc(var(--panel-w) + 22px);bottom:84px;max-width:calc(100% - var(--panel-w) - 90px);z-index:600;background:var(--navy);color:white;padding:10px 14px;border-radius:6px;font-size:11px}
/* Property review */
#detail{position:absolute;right:22px;top:calc(var(--header-h) + 22px);width:330px;max-height:calc(100% - var(--header-h) - 110px);overflow-y:auto;overscroll-behavior:contain;z-index:700;background:white;border-radius:12px;box-shadow:var(--shadow);padding:24px}
#detail h3{font-size:19px;line-height:1.4;font-weight:600;letter-spacing:-.025em;margin:0 25px 5px 0}
#detail .z{font-size:11px;color:var(--muted)}
#detail .close{position:absolute;right:9px;top:9px;width:36px;height:36px;display:grid;place-items:center;border:0;border-radius:6px;background:white;color:var(--muted)}
#detail .close:hover{background:var(--surface);color:var(--navy)}
.detail-summary{display:flex;gap:24px;margin:22px 0;padding-bottom:20px;border-bottom:1px solid var(--line)}
.detail-summary strong{display:block;font-size:23px;letter-spacing:-.03em;font-weight:600}
.detail-summary span{color:var(--muted);font-size:10px}
#detail h4{font-size:12px;font-weight:600;margin:22px 0 12px}
#detail dl{margin:0;display:grid;grid-template-columns:75px minmax(0,1fr);gap:12px;font-size:11px;line-height:1.7}
#detail dt{color:var(--muted)}
#detail dd{margin:0;overflow-wrap:anywhere}
.masked{color:var(--muted)}
.badge{display:inline-block;font-size:10px;color:#34614f;background:#edf6f1;padding:3px 7px;border-radius:4px}
.detail-note{font-size:10px;line-height:1.7;color:var(--muted);margin:20px 0 0;padding-top:16px;border-top:1px solid var(--line)}
.detail-link{display:flex;align-items:center;justify-content:center;gap:9px;min-height:44px;margin-top:18px;background:var(--navy);color:white!important;text-decoration:none;border-radius:6px;font-size:11px;font-weight:600}
.detail-link:hover{background:#243f66}
.detail-link svg{width:14px;height:14px;fill:none;stroke:currentColor;stroke-width:1.8}
@media(min-width:761px) and (max-width:1200px){
  :root{--panel-w:370px}
  #detail{top:calc(var(--header-h) + 170px);width:300px;max-height:calc(100% - var(--header-h) - 195px)}
  .pane-head{gap:8px;padding-inline:18px}.pane-head h2{font-size:17px}
}
@media(max-width:760px){
  :root{--header-h:70px;--panel-w:100%}
  #app{grid-template-columns:minmax(0,1fr);grid-template-rows:70px 50px minmax(0,1fr)}
  #brand{padding:0 16px;gap:12px}
  .brand-logo{width:155px}
  .brand-text{display:none}
  #presenter{gap:6px}.ptxt{font-size:10px;max-width:68px;line-height:1.4}
  #mobile-views{display:flex;grid-row:2;grid-column:1;align-items:center;gap:6px;padding:6px 14px;background:white;border-bottom:1px solid var(--line);z-index:800}
  #mobile-views button{height:36px;min-width:66px;background:white;border:0;border-radius:5px;color:var(--muted);font-size:12px;padding:0 14px}
  #mobile-views button.on{background:var(--navy);color:white}
  #mobile-filters{margin-left:auto;color:var(--navy)!important}
  #panel,#map{grid-column:1;grid-row:3;min-height:0}
  #panel{border:0}
  #app[data-mobile-view=map] #panel{display:none}
  #app[data-mobile-view=list] :is(#map,#map-context,#maptools,#map-legend,#mapnote){display:none}
  #sidenav{gap:8px;padding-inline:14px}
  #sidenav button{min-height:48px;flex:1;min-width:0;gap:5px;font-size:11px}
  .pane-head{padding-top:20px}.pane-head h2{font-size:19px}
  #list .row-btn{padding-block:16px}
  #map-context{left:14px;right:14px;top:134px;padding:12px 14px}
  #map-context strong{font-size:12px}
  #maptools{left:14px;top:213px;right:14px;gap:8px}
  #viewtoggle button{height:38px;padding-inline:14px}
  #zoomfit{height:44px;margin-left:auto}
  #map-legend{left:14px;bottom:calc(30px + env(safe-area-inset-bottom));gap:14px}
  #mapnote{left:14px;bottom:calc(87px + env(safe-area-inset-bottom));max-width:calc(100% - 80px)}
  #detail{top:auto;right:10px;left:10px;bottom:calc(22px + env(safe-area-inset-bottom));width:auto;max-height:calc(100% - 140px);padding:22px;border-radius:12px}
  #detail h3{font-size:18px}.detail-summary{margin:16px 0;padding-bottom:14px}
  #detail h4{margin-top:16px}.detail-note{margin-top:14px;padding-top:12px}
  #detail dl{gap:8px 12px}
  .export-note,.filter-footer{padding-bottom:calc(12px + env(safe-area-inset-bottom))}
}
@media(prefers-reduced-motion:reduce){*{scroll-behavior:auto!important;transition:none!important;animation:none!important}}
@media(max-width:760px){
  #detail{max-height:60dvh}
  #app:has(#detail:not([hidden])) :is(#map-context,#maptools,#map-legend,#mapnote){display:none}
}
