@import url('https://fonts.googleapis.com/css2?family=DM+Sans:wght@400;450;500;550;600;650;700&family=Manrope:wght@400;500;600;650;700;750;800&display=swap');
:root{--navy:#0e233c;--ink:#182d43;--muted:#5d6d7b;--line:#dbe3e8;--paper:#fff;--soft:#f4f7f9;--mint:#5ae0c3;--accent:#167d70;font-family:'DM Sans',system-ui,sans-serif;color:var(--ink);font-size:16px;font-synthesis:none}*{box-sizing:border-box}body{margin:0;background:var(--soft)}button,input,select{font:inherit}button,a,input,select{-webkit-tap-highlight-color:transparent}button{cursor:pointer}button:focus-visible,a:focus-visible,input:focus-visible,select:focus-visible{outline:3px solid #318ba6;outline-offset:3px}button{color:inherit}a{color:#175995;text-decoration:none}a:hover{text-decoration:underline}button{border:0;background:none}button:disabled{opacity:.5;cursor:wait}[hidden]{display:none!important}.masthead{height:82px;display:flex;align-items:center;gap:24px;padding:0 28px;background:var(--navy);color:white}.brand{display:flex;gap:15px;align-items:center;color:white;margin-right:auto;text-decoration:none!important}.brand-symbol{font-family:'Manrope',sans-serif;font-size:43px;font-weight:800;line-height:1}.brand-symbol span{color:var(--mint)}.brand b{font-size:14px;letter-spacing:.13em;font-weight:650}.brand small{display:block;font-size:11px;letter-spacing:.1em;color:#b8c7d6;margin-top:6px}.edition{font-size:11px;letter-spacing:.06em;display:flex;gap:10px;align-items:center;color:#b8c7d6}.edition b{display:block;color:white;margin-top:3px;font-weight:500}.edition-mark{width:6px;height:6px;background:var(--mint);border-radius:50%}.header-button{color:white;font-size:13px;padding:10px 0}.header-button.light{border:1px solid #698194;padding:11px 14px;border-radius:4px}.workspace{height:calc(100dvh - 82px);display:grid;grid-template-columns:348px minmax(0,1fr);min-height:480px}.sidebar{background:var(--paper);z-index:3;display:flex;flex-direction:column;min-height:0;border-right:1px solid var(--line)}.side-intro{padding:28px 25px 17px}.eyebrow{font-size:11px;letter-spacing:.16em;font-weight:700;color:var(--muted);margin-bottom:12px}.title-row{display:flex;align-items:flex-start;justify-content:space-between;gap:12px}h1{font-family:Manrope,system-ui,sans-serif;font-size:29px;letter-spacing:-1.2px;line-height:1.14;margin:0;font-weight:750}.total{font-family:Manrope,sans-serif;font-size:31px;font-weight:500;letter-spacing:-1.6px;border-bottom:3px solid var(--mint);line-height:1.4}.side-intro p{font-size:13px;line-height:1.5;color:var(--muted);margin:14px 0 0}.filters{padding:0 24px 15px;border-bottom:1px solid var(--line)}.scope-switch{display:flex;border:1px solid var(--line);border-radius:5px;padding:3px;margin-bottom:15px}.scope-switch button{flex:1;font-size:13px;padding:8px 4px;border-radius:3px}.scope-switch button[aria-pressed=true]{background:var(--navy);color:white}.search{display:flex;align-items:center;border:1px solid #bbcbd4;border-radius:4px;padding:0 11px;gap:8px;height:43px}.search span{font-size:25px;color:var(--muted)}.search input{min-width:0;width:100%;border:0;outline:0;background:transparent;font-size:13px}.search kbd{font-size:12px;color:#7b8994;border:1px solid var(--line);padding:1px 4px}.filter-grid{display:grid;grid-template-columns:1fr;gap:10px;margin-top:13px}.filter-grid label{font-size:11px;letter-spacing:.02em;color:var(--muted)}select{display:block;width:100%;margin-top:6px;border:1px solid var(--line);border-radius:4px;padding:9px 5px;font-size:12px;background:white;color:var(--ink)}.view-filter{font-size:12px;display:flex;align-items:center;gap:6px;margin-top:13px;color:var(--muted)}input[type=checkbox]{accent-color:var(--navy)}.result-heading{display:flex;justify-content:space-between;align-items:center;padding:15px 24px 11px;font-size:12px;color:var(--muted)}.result-heading button{font-size:11px;text-decoration:underline;padding:0}.results{overflow-y:auto;flex:1;overscroll-behavior:contain}.result{padding:15px 24px;display:block;width:100%;text-align:left;border-bottom:1px solid #e8eef1;position:relative}.result:hover{background:#f5f9fa}.result.selected{background:#edf7f5}.result.selected:before{content:'';position:absolute;left:0;top:0;bottom:0;width:3px;background:var(--accent)}.result-top{font-size:10px;letter-spacing:.06em;text-transform:uppercase;color:var(--muted);display:flex;align-items:center;gap:7px;margin-bottom:6px}.result-name{font-size:15px;line-height:1.3;font-weight:600}.result-address{font-size:12px;color:var(--muted);margin-top:5px;line-height:1.4}.result-team{font-size:11px;color:#536774;margin-top:8px;line-height:1.4}.side-footer{padding:14px 24px;display:flex;justify-content:space-between;gap:10px;border-top:1px solid var(--line);font-size:10px;color:var(--muted)}.side-footer button{padding:0;font-size:10px;white-space:nowrap}.map-region{position:relative;overflow:hidden;min-width:0}#map{position:absolute;inset:0;background:#e4eced}.map-top{position:absolute;top:20px;left:23px;right:70px;display:flex;justify-content:space-between;pointer-events:none}.presets{display:flex;pointer-events:auto;background:white;border:1px solid #d0dce3;border-radius:5px;box-shadow:0 3px 15px #17374c13;padding:4px}.presets button{padding:9px 13px;font-size:12px;border-radius:3px;white-space:nowrap}.presets button.active{background:var(--navy);color:white}.map-tools{position:absolute;left:23px;top:82px;display:flex;align-items:stretch;gap:6px;flex-wrap:wrap;max-width:calc(100% - 90px)}.map-tools button,.map-button{padding:9px 12px;font-size:12px;border:1px solid #c5d3dc;border-radius:4px;background:white;box-shadow:0 2px 8px #17374c10}.map-tools button[aria-pressed=true]{background:var(--navy);border-color:var(--navy);color:white}#mobile-list{display:none;pointer-events:auto}.map-legend{position:absolute;left:23px;bottom:62px;background:#fffffff2;padding:15px 17px;border:1px solid var(--line);border-radius:6px;display:block;font-size:11px;max-width:calc(100% - 46px);box-shadow:0 3px 15px #17374c13;backdrop-filter:blur(8px)}.map-legend span{display:flex;align-items:center;gap:6px}.map-caption{position:absolute;bottom:27px;left:23px;right:20px;display:flex;justify-content:space-between;font-size:11px;color:#405768;pointer-events:none;text-shadow:0 1px 3px white,0 -1px 3px white}.map-status{position:absolute;bottom:200px;left:23px;right:23px;padding:12px 16px;border-radius:4px;background:var(--navy);color:white;z-index:4;font-size:13px;max-width:510px}.maplibregl-ctrl-top-right{top:17px;right:12px}.maplibregl-ctrl-bottom-left{bottom:0;left:17px}.maplibregl-ctrl-attrib{font-size:10px}.detail{position:absolute;right:20px;top:20px;bottom:52px;width:380px;max-width:calc(100% - 40px);background:white;border:1px solid #cbd8df;border-radius:6px;box-shadow:0 14px 55px #18324725;z-index:5;overflow-y:auto;overscroll-behavior:contain}.detail-top{padding:25px 25px 22px;background:var(--navy);color:white;position:relative}.detail-close{position:absolute;right:13px;top:12px;font-size:25px;line-height:1;color:#c7d6e3;width:32px;height:32px}.detail-top .eyebrow{color:var(--mint);padding-right:30px;font-size:10px}.detail h2{font-family:Manrope,sans-serif;font-size:27px;line-height:1.2;letter-spacing:-.8px;margin:12px 0;font-weight:650}.detail-address{font-size:13px;line-height:1.5;color:#c8d8e3}.detail-body{padding:22px 25px}.status{display:inline-block;font-size:11px;padding:5px 8px;border:1px solid #b5d7cb;color:#216453;border-radius:3px;background:#f0faf5;margin-bottom:15px}.listing-meta{display:flex;gap:12px;flex-wrap:wrap;font-size:12px;font-weight:500;line-height:1.5;margin-bottom:14px}.detail p{font-size:14px;line-height:1.6;margin:0 0 14px}.detail h3{font-size:11px;text-transform:uppercase;letter-spacing:.12em;margin:23px 0 13px}.client-line{display:grid;grid-template-columns:72px 1fr;gap:10px;font-size:12px;border-top:1px solid var(--line);padding-top:13px;line-height:1.5}.client-line span{color:var(--muted)}.person{display:flex;gap:12px;padding:11px 0;border-bottom:1px solid #edf1f3}.avatar{background:#eaf0f5;border-radius:50%;width:33px;height:33px;display:flex;justify-content:center;align-items:center;font-size:11px;color:#375c74;flex:none}.person-name{font-size:14px;font-weight:550}.person-title,.person-contact{font-size:12px;line-height:1.5;color:var(--muted);margin-top:4px}.person-contact{display:flex;gap:12px;flex-wrap:wrap}.person-contact a{color:#376777}.detail p.fine{font-size:12px;color:var(--muted);line-height:1.5}.evidence-box{border-left:2px solid #87b9ad;padding-left:12px;margin:14px 0}.evidence-box p{font-size:12px}.source-link{display:flex;gap:10px;font-size:12px;line-height:1.4;margin:11px 0}.source-number{font-size:10px;color:var(--muted);flex:none;padding-top:2px}.spatial{border-top:1px solid var(--line);margin-top:20px;padding-top:15px}.spatial .spatial-controls{display:flex;gap:6px;flex-wrap:wrap}.spatial button{border:1px solid var(--line);padding:7px 10px;border-radius:3px;font-size:12px}.spatial button.active{background:var(--navy);color:white}.nearby-row{display:block;width:100%;text-align:left;font-size:12px;padding:9px 0;border-bottom:1px solid var(--line)}.detail-footer{display:flex;gap:14px;margin-top:20px;font-size:12px}.cluster-menu{position:absolute;bottom:205px;left:23px;width:350px;max-width:calc(100% - 46px);max-height:calc(100% - 340px);overflow:auto;overscroll-behavior:contain;background:white;padding:17px 18px 8px;border:1px solid #cbd8df;border-radius:7px;box-shadow:0 10px 35px #17374c26;z-index:4}.cluster-menu strong{font-size:14px;line-height:1.4}.cluster-menu button{display:block;text-align:left;width:100%;font-size:13px;border-bottom:1px solid var(--line);padding:12px 0;line-height:1.4}.cluster-menu button:hover{color:var(--accent)}.cluster-menu button:last-child{border-bottom:0}.empty{padding:25px;font-size:14px;color:var(--muted);line-height:1.6}dialog{width:min(740px,calc(100vw - 36px));max-height:85dvh;border:1px solid var(--line);border-radius:8px;color:var(--ink);padding:38px;box-shadow:0 20px 90px #00172d40}dialog::backdrop{background:#0b233c77;backdrop-filter:blur(3px)}#dialog-close{position:absolute;right:14px;top:11px;font-size:28px}dialog h2{font-family:Manrope,sans-serif;font-size:28px;letter-spacing:-.7px;margin:8px 0 20px}dialog h3{font-size:15px;margin-top:24px}dialog p,dialog li{font-size:14px;line-height:1.7}dialog .button{display:inline-block;padding:11px 15px;border:1px solid var(--line);border-radius:4px;font-size:14px;margin:5px 8px 5px 0;background:var(--navy);color:white}dialog table{width:100%;border-collapse:collapse;font-size:12px}dialog td,dialog th{border-bottom:1px solid var(--line);padding:11px 7px;text-align:left;vertical-align:top}dialog td:first-child{width:30%}.maplibregl-popup-content{font-family:'DM Sans',sans-serif;padding:9px 13px;font-size:12px}.detail-open .map-legend{max-width:calc(100% - 425px)}
@media(min-width:1600px){.workspace{grid-template-columns:380px minmax(0,1fr)}.side-intro,.filters,.result,.result-heading{padding-left:28px;padding-right:28px}.detail{width:410px}}
@media(max-width:1150px){.masthead{gap:18px;padding:0 22px}.edition{display:none}.workspace{grid-template-columns:310px minmax(0,1fr)}.side-intro{padding:24px 20px 16px}.filters{padding:0 20px 14px}h1{font-size:27px}.result{padding:14px 20px}.map-top{left:15px}.map-tools{left:15px}.presets button{padding:9px 9px}.detail{right:12px;width:350px;max-width:calc(100% - 24px)}.detail-open .map-legend{display:none}.detail-open .map-caption{display:none}.header-button{font-size:12px}.brand b{font-size:12px}}
@media(max-width:760px){.masthead{height:70px;padding:0 16px;gap:12px}.brand-symbol{font-size:34px}.brand{gap:10px}.brand b{font-size:10px;letter-spacing:.08em}.brand small{font-size:8px;letter-spacing:.06em}.header-button{font-size:11px}.header-button.light{display:none}.workspace{height:calc(100dvh - 70px);display:block}.map-region{height:100%}.sidebar{position:absolute;left:0;top:70px;bottom:0;width:min(340px,90vw);z-index:7;box-shadow:0 10px 40px #0e233c40;transform:translateX(-110%);transition:transform .2s}.sidebar.open{transform:none}.side-intro{padding-top:20px}#mobile-list{display:block;position:absolute;right:0;top:52px}.map-top{left:13px;right:60px;top:16px}.presets{max-width:100%}.presets button{font-size:11px;padding:8px 9px}.map-tools{left:13px;top:122px;max-width:130px;display:grid;grid-template-columns:1fr 1fr;gap:5px}.map-tools button{padding:9px;font-size:11px}.map-legend{left:13px;bottom:83px;padding:9px 12px;gap:9px;max-width:calc(100% - 26px);font-size:10px}.map-caption{left:13px;right:13px;font-size:10px;bottom:45px}.maplibregl-ctrl-scale{display:none}#coordinates{display:none}.detail{top:80px;bottom:40px;right:10px;width:360px;max-width:calc(100% - 20px)}.detail-top{padding:21px}.detail-body{padding:20px 21px}.detail h2{font-size:25px}.map-status{left:13px;bottom:190px;font-size:12px}.detail-open .map-tools{display:none}dialog{padding:28px 22px}dialog h2{font-size:24px}.maplibregl-ctrl-top-right{top:12px;right:6px}.cluster-menu{left:13px;right:13px;bottom:195px;width:auto;max-width:none;max-height:calc(100% - 340px)}}
@media(prefers-reduced-motion:reduce){*{scroll-behavior:auto!important;transition:none!important}}

/* Listing list and selected hexagon */
.hex-summary{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:13px 24px;background:#edf8f5;border-bottom:1px solid #cbe6de;font-size:12px;color:#225d53;line-height:1.45}
.hex-summary strong{display:block;font-size:12px;font-weight:650;color:var(--navy)}
.hex-summary small,.hex-summary>div>span{display:block;font-size:11px;margin-top:2px}
.hex-summary button{flex:none;padding:5px 0 5px 8px;font-size:11px;text-decoration:underline;text-underline-offset:3px;color:#225d53}
.result-title{display:flex;align-items:baseline;gap:11px}
.result-index{font-family:Manrope,system-ui,sans-serif;font-variant-numeric:tabular-nums;font-size:11px;letter-spacing:.02em;font-weight:600;color:#79918e;flex:none;min-width:18px}
.result-name{overflow-wrap:anywhere}
.result.selected .result-index{color:var(--accent)}
/* Map resolution and count legend */
.hex-size-control{display:flex;align-items:center;gap:9px;padding:0 9px 0 11px;border:1px solid #c5d3dc;border-radius:4px;background:white;box-shadow:0 2px 8px #17374c10;min-height:36px}
.hex-size-control>span{font-size:11px;color:var(--muted);white-space:nowrap}
.hex-size-control select{width:65px;min-width:65px;margin:0;padding:7px 0;border:0;border-radius:0;font-size:12px;color:var(--navy);background:transparent;font-weight:600;cursor:pointer}
.heat-legend{min-width:184px}
.heat-legend-title{display:block;font-size:11px;font-weight:650;color:var(--navy);letter-spacing:.015em;margin-bottom:10px}
.heat-scale{display:flex;align-items:center;gap:5px;margin:7px 0}
.heat-swatch{display:block!important;flex:none;width:30px;height:24px;background:var(--color,#5ae0c3);clip-path:polygon(25% 0,75% 0,100% 50%,75% 100%,25% 100%,0 50%)}
.heat-key{display:flex;flex:1;flex-direction:column;align-items:center;justify-content:space-between;gap:4px;font-size:10px;font-variant-numeric:tabular-nums;color:var(--muted);line-height:1.4}
.heat-legend-note{font-size:10px;line-height:1.5;color:var(--muted);margin:9px 0 0;max-width:240px}
.heat-legend p{margin:8px 0 0;font-size:10px;color:var(--muted);line-height:1.5}
.cluster-heading{display:flex;align-items:flex-start;justify-content:space-between;gap:10px;padding-bottom:12px;border-bottom:1px solid var(--line)}
.cluster-heading p{font-size:11px;color:var(--muted);margin:4px 0 0;line-height:1.4}
.cluster-menu .cluster-close{width:24px;height:24px;padding:0;flex:none;text-align:center;font-size:22px;border:0;line-height:1;color:var(--muted)}
.cluster-row{display:flex!important;flex-direction:column;align-items:flex-start;gap:4px}.cluster-row>strong{font-size:13px;font-weight:600}.cluster-row>span{font-size:10px;color:var(--accent);margin-top:3px}.cluster-heading .eyebrow{display:block;font-size:9px;margin:0 0 7px}.cluster-heading strong{display:block}
.cluster-row small{display:block;font-size:11px;color:var(--muted);margin-top:3px}
@media(min-width:1600px){.hex-summary{padding-left:28px;padding-right:28px}}
@media(max-width:1150px){.hex-summary{padding-left:20px;padding-right:20px}.hex-size-control{gap:6px;padding-left:9px}.hex-size-control>span{font-size:10px}.map-tools button{padding-left:10px;padding-right:10px}}
@media(max-width:760px){.hex-size-control{grid-column:1/-1;display:block;padding:7px 9px}.hex-size-control>span{display:block;font-size:10px}.hex-size-control select{width:100%;font-size:12px;min-width:0;padding:4px 0 0}.map-tools #boundaries{font-size:10px;padding-left:5px;padding-right:5px}.heat-legend{min-width:165px}.heat-legend-title{font-size:10px;margin-bottom:7px}.heat-swatch{height:21px}.heat-key{font-size:9px}.heat-legend-note{font-size:9px;margin-top:7px}.map-legend{padding:11px 13px}.cluster-menu{padding-top:14px}.hex-summary{padding-top:11px;padding-bottom:11px}}
@media(max-width:390px){.brand b{font-size:9px;letter-spacing:.035em}.brand-symbol{font-size:30px}.masthead{gap:9px}.header-button{font-size:10px}.presets button{padding:8px 7px;font-size:10px}}

/* BGP catalogue details */
.brand-symbol{font-size:27px;letter-spacing:-1.5px}.brand small{font-size:10px}.unit-list{border-top:1px solid var(--line)}.unit-row{display:flex;align-items:center;justify-content:space-between;gap:15px;padding:11px 0;border-bottom:1px solid var(--line);font-size:12px;line-height:1.45}.unit-row strong,.unit-row span,.unit-row small{display:block}.unit-row strong{font-weight:600;font-size:13px}.unit-row span{color:var(--muted);margin-top:3px}.unit-row small{font-size:11px;color:var(--muted)}.unit-row .unit-status{color:#746136;background:#f6f2e9;padding:3px 5px;margin-top:5px;border-radius:3px;font-size:10px;line-height:1.4}.unit-row>a{white-space:nowrap;font-size:11px}.unit-count{background:#e5f2ec;border-radius:3px;padding:3px 5px;letter-spacing:0;margin-left:4px;color:var(--accent)}.detail p.data-note{border-left:2px solid #96bcb1;padding-left:10px}.detail p.contact-note{margin-top:12px;font-size:11px}.listing-meta{font-size:16px;font-weight:600}.result-address{font-size:11px}.result-team:empty{display:none}dialog table a{overflow-wrap:anywhere}
@media(max-width:760px){.brand-symbol{font-size:24px}.brand small{font-size:7px;letter-spacing:.02em}.brand b{font-size:9px}.masthead{gap:9px}.brand{gap:8px}}
