@import url('./mh-tokens.css');

/* This page's local variable names, mapped onto the shared tokens.
 *
 * It previously declared :root four times in this file - dark slate at the
 * top, a "production light treatment" override, a [data-theme=light] block
 * with a third palette, and the tools.css dark palette again at the bottom -
 * plus a fifth set in which-mesh-production.css that forced every value with
 * !important. Whichever won was decided by file order rather than by intent.
 * One declaration now, and it follows the visitor's mode.
 */
:root {
  --canvas: var(--mh-bg);
  --panel: var(--mh-surface);
  --panel-2: var(--mh-surface-3);
  --input: var(--mh-field-bg);
  --text: var(--mh-text);
  --muted: var(--mh-text-muted);
  --border: var(--mh-border);
  --primary: var(--mh-accent);
  --accent: var(--mh-accent-solid);
  --map-filter: var(--mh-map-filter);
  font-family: var(--mh-font-body);
}
.dashboard-header{padding:0;border-bottom:0}.eyebrow,.updated-card span,.updated-card .refresh-note{color:var(--mh-accent)}.updated-card,.node-search,.filter-panel,.age-filter,.coverage-note,.legend-card,.privacy-card,.summary-card,.sources-card{box-shadow:0 10px 28px var(--mh-shadow)}.map-shell{z-index:0}
*{box-sizing:border-box}.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} body{margin:0;background:var(--canvas);color:var(--text);min-width:320px;transition:.25s background,.25s color}
button,a{font:inherit}.site-header{height:72px;padding:0 clamp(18px,4vw,56px);display:flex;align-items:center;justify-content:space-between;border-bottom:1px solid var(--border);background:color-mix(in srgb,var(--panel) 90%,transparent);position:relative;z-index:1001}
.brand{display:flex;align-items:center;gap:12px;color:var(--text);text-decoration:none}.brand-mark{display:grid;place-items:center;width:42px;height:42px;border-radius:12px;background:var(--primary);color:var(--mh-on-accent);font-weight:900;letter-spacing:-1px;box-shadow:0 8px 25px color-mix(in srgb,var(--primary) 25%,transparent)}
.brand b,.brand small{display:block}.brand b{font-size:15px}.brand small{font-size:12px;color:var(--muted);margin-top:2px}.header-actions{display:flex;align-items:center;gap:10px}.prototype-pill{font-size:11px;text-transform:uppercase;letter-spacing:.14em;color:var(--primary);border:1px solid color-mix(in srgb,var(--primary) 45%,transparent);padding:6px 10px;border-radius:999px}
.icon-button{width:40px;height:40px;border-radius:999px;border:1px solid var(--border);background:var(--panel-2);color:var(--text);cursor:pointer;font-size:21px}.icon-button:hover{border-color:var(--accent)}
main{width:min(1380px,calc(100% - 32px));margin:0 auto;padding:34px 0 40px}.intro{display:flex;gap:28px;justify-content:space-between;align-items:end;margin-bottom:24px}.eyebrow{color:var(--primary);font-size:12px;font-weight:800;letter-spacing:.22em;text-transform:uppercase}.intro h1{font-size:clamp(30px,5vw,54px);line-height:1.04;margin:9px 0 12px;letter-spacing:-.04em}.intro p{max-width:760px;color:var(--muted);font-size:16px;line-height:1.65;margin:0}.updated-card{flex:none;min-width:240px;padding:15px 18px;border:1px solid var(--border);border-radius:16px;background:var(--panel);box-shadow:0 18px 45px rgba(0,0,0,.12)}.updated-card span,.updated-card strong,.updated-card small{display:block}.updated-card span{font-size:11px;text-transform:uppercase;letter-spacing:.15em;color:var(--primary)}.updated-card strong{margin:6px 0;font-size:14px}.updated-card small{color:var(--muted)}.updated-card .refresh-note{margin-top:3px;font-weight:750;color:var(--primary)}
.toolbar{display:flex;justify-content:space-between;gap:16px;align-items:flex-start;margin-bottom:14px}.network-toggles,.location-tools{display:flex;gap:10px;flex-wrap:wrap}.location-tools{justify-content:flex-end;max-width:820px}.place-field input{height:42px;width:min(260px,35vw);border:1px solid var(--border);border-radius:12px;padding:0 12px;background:var(--panel);color:var(--text);outline:none}.place-field input:focus{border-color:var(--primary);box-shadow:0 0 0 3px color-mix(in srgb,var(--primary) 18%,transparent)}.place-status{flex-basis:100%;min-height:15px;text-align:right;color:var(--muted);font-size:11px;line-height:1.35}.network-button,.secondary-button{height:42px;border:1px solid var(--border);border-radius:12px;padding:10px 15px;background:var(--panel);color:var(--muted);font-weight:750;cursor:pointer;transition:.18s}.network-button{display:flex;align-items:center;gap:8px}.network-button.active{color:var(--text);box-shadow:0 7px 24px rgba(0,0,0,.15)}.network-button.meshtastic.active{border-color:#64e794;background:color-mix(in srgb,#64e794 13%,var(--panel))}.network-button.meshcore.active{border-color:#38bdf8;background:color-mix(in srgb,#38bdf8 13%,var(--panel))}.button-symbol{display:grid;place-items:center;width:23px;height:23px;border-radius:7px;background:var(--panel-2)}.secondary-button:hover{border-color:var(--primary);color:var(--text)}.place-button{border-color:color-mix(in srgb,var(--primary) 60%,var(--border));color:var(--text)}
.node-search{display:grid;grid-template-columns:minmax(250px,1fr) auto auto;align-items:end;gap:12px;margin-bottom:14px;padding:13px 15px;border:1px solid var(--border);border-radius:16px;background:var(--panel)}.search-field>span,.search-networks legend{display:block;margin-bottom:6px;color:var(--muted);font-size:11px;font-weight:750;text-transform:uppercase;letter-spacing:.1em}.search-field input{width:100%;height:42px;border:1px solid var(--border);border-radius:10px;padding:0 12px;background:var(--panel-2);color:var(--text);outline:none}.search-field input:focus{border-color:var(--primary);box-shadow:0 0 0 3px color-mix(in srgb,var(--primary) 18%,transparent)}.search-networks{display:flex;align-items:center;gap:13px;height:42px;margin:0;padding:0 4px 2px;border:0}.search-networks legend{position:absolute;margin-top:-20px}.search-networks label{font-size:12px;color:var(--text);white-space:nowrap}.search-networks input{accent-color:var(--primary)}.search-button{height:42px;padding:0 17px;border:0;border-radius:10px;background:var(--primary);color:var(--mh-on-accent);font-weight:850;cursor:pointer}.search-status{grid-column:1/-1;min-height:15px;color:var(--muted);font-size:11px}
.age-filter{display:grid;grid-template-columns:150px minmax(280px,1fr) auto;align-items:center;gap:18px;margin-bottom:14px;padding:13px 16px;border:1px solid var(--border);border-radius:16px;background:var(--panel)}.age-filter>div:first-child span,.age-filter>div:first-child strong{display:block}.age-filter>div:first-child span{font-size:11px;text-transform:uppercase;letter-spacing:.12em;color:var(--muted)}.age-filter>div:first-child strong{margin-top:4px;color:var(--primary);font-size:14px}.age-filter small{color:var(--muted);font-size:11px}.age-slider-wrap input{width:100%;accent-color:var(--primary)}.age-labels{display:flex;justify-content:space-between;margin-top:3px}.age-labels button{width:25%;padding:2px 0;border:0;background:transparent;color:var(--muted);font-size:10px;cursor:pointer}.age-labels button:first-child{text-align:left}.age-labels button:last-child{text-align:right}.age-labels button.selected{color:var(--primary);font-weight:850}
.coverage-note{display:flex;align-items:flex-start;gap:10px;margin-bottom:14px;padding:12px 15px;border:1px solid color-mix(in srgb,var(--accent) 38%,var(--border));border-radius:14px;background:color-mix(in srgb,var(--accent) 7%,var(--panel));color:var(--muted)}.coverage-note>span{flex:none;color:var(--accent);font-size:18px;line-height:1.3}.coverage-note p{margin:0;font-size:12px;line-height:1.55}.coverage-note strong{color:var(--text)}
.map-shell{height:min(68vh,720px);min-height:520px;position:relative;border:1px solid var(--border);border-radius:22px;overflow:hidden;background:var(--panel);box-shadow:0 24px 70px rgba(0,0,0,.25)}#map{width:100%;height:100%;filter:var(--map-filter)}
.visible-counter{position:absolute;z-index:800;right:14px;top:14px;width:205px;padding:13px 14px;border:1px solid var(--border);border-radius:15px;background:color-mix(in srgb,var(--panel) 93%,transparent);box-shadow:0 12px 32px rgba(0,0,0,.25);backdrop-filter:blur(8px)}.counter-title{display:block;font-size:11px;text-transform:uppercase;letter-spacing:.16em;color:var(--muted);margin-bottom:9px}.counter-row{display:grid;grid-template-columns:10px 1fr auto;align-items:center;gap:8px;font-size:12px;padding:4px 0}.counter-row strong{font-size:13px}.counter-row.subtle{grid-template-columns:1fr auto;padding-left:18px;color:var(--muted)}.dot{width:9px;height:9px;border-radius:50%}.meshtastic-dot{background:#31d67b}.companion-dot{background:#38bdf8}.repeater-dot{background:#f59e0b}
.below-map{display:grid;grid-template-columns:1.5fr 1fr;gap:16px;margin-top:16px}.legend-card,.privacy-card{padding:20px;border:1px solid var(--border);border-radius:18px;background:var(--panel)}.below-map h2{font-size:15px;margin:0 0 13px}.below-map p{color:var(--muted);line-height:1.6;margin:0;font-size:13px}.legend-items{display:flex;flex-wrap:wrap;gap:12px 18px}.legend-items>span{display:flex;align-items:center;gap:8px;color:var(--muted);font-size:12px}.legend-marker,.node-icon{display:grid;place-items:center;font-style:normal;font-weight:900;color:#06141f;border:2px solid rgba(255,255,255,.85);box-shadow:0 2px 8px rgba(0,0,0,.38)}.legend-marker{width:25px;height:25px;font-size:10px}.marker-meshtastic{background:#31d67b;border-radius:50%}.marker-companion{background:#38bdf8;border-radius:50%}.marker-repeater{background:#f59e0b;border-radius:5px;transform:rotate(45deg)}.marker-repeater::first-letter{transform:rotate(-45deg)}.marker-room{background:#c084fc;border-radius:5px}.marker-sensor{background:#60a5fa;border-radius:50% 50% 50% 0;transform:rotate(-45deg)}
.node-icon{width:30px;height:30px;font-size:11px}.node-icon.mesh{background:#31d67b;border-radius:50%}.node-icon.companion{background:#38bdf8;border-radius:50%}.node-icon.repeater{background:#f59e0b;border-radius:6px;transform:rotate(45deg)}.node-icon.repeater span{transform:rotate(-45deg)}.node-icon.room{background:#c084fc;border-radius:6px}.node-icon.sensor{background:#60a5fa;border-radius:50% 50% 50% 0;transform:rotate(-45deg)}.node-icon.sensor span{transform:rotate(45deg)}.node-icon.other{background:#94a3b8;border-radius:6px}
.node-marker-wrap{position:relative;display:block;width:30px;height:30px}.gateway-badge{position:absolute;z-index:4;right:-10px;top:-10px;display:grid;place-items:center;width:17px;height:17px;border:2px solid #fff;border-radius:50%;background:#ff4fd8;color:#071018;box-shadow:0 2px 7px rgba(0,0,0,.65);font:900 9px/1 system-ui,sans-serif}.marker-gateway{position:relative;background:#39ff88;border-radius:50%}.marker-gateway::after{content:"G";position:absolute;right:-8px;top:-8px;display:grid;place-items:center;width:15px;height:15px;border:2px solid #fff;border-radius:50%;background:#ff4fd8;color:#071018;font:900 8px/1 system-ui,sans-serif}
.node-cluster{display:grid;place-items:center;width:42px;height:42px;border-radius:50%;font-size:11px;font-weight:900;color:#06141f;border:3px solid rgba(255,255,255,.9);box-shadow:0 4px 16px rgba(0,0,0,.45)}.cluster-meshtastic{background:#31d67b}.cluster-meshcore{background:#38bdf8}
.popup-title{font-weight:850;font-size:14px;margin-bottom:4px}.popup-meta{color:var(--muted);font-size:11px;line-height:1.55}.popup-network{color:var(--primary);font-weight:750;text-transform:capitalize}
.version strong{color:var(--primary);font-weight:800}
@media(max-width:760px){.prototype-pill{display:none}.intro{display:block}.updated-card{margin-top:18px;min-width:0}.toolbar{align-items:stretch;flex-direction:column}.network-toggles>*{flex:1}.location-tools{justify-content:stretch;max-width:none}.place-field{flex:1 1 100%}.place-field input{width:100%}.place-status{text-align:left}.node-search{grid-template-columns:1fr}.search-networks{margin-top:10px}.search-button{width:100%}.age-filter{grid-template-columns:1fr;gap:10px}.map-shell{height:66vh;min-height:500px}.visible-counter{top:10px;right:10px;width:180px}.below-map{grid-template-columns:1fr}.legend-items{display:grid;grid-template-columns:1fr 1fr}}

/* Vivid network-role fills and update-age rings.
 *
 * Deliberately NOT tokenised. These are a colour key: the legend swatches and
 * the map markers have to match each other exactly, and stay the same in both
 * modes, or the key stops meaning anything. They encode data, not chrome. */
.meshtastic-dot,.marker-meshtastic,.node-icon.mesh-client{background:#39ff88}.meshtastic-router-dot,.marker-meshtastic-router,.node-icon.mesh-router{background:#08783f}.companion-dot,.marker-companion,.node-icon.companion{background:#26c6ff}.repeater-dot,.marker-repeater,.node-icon.repeater{background:#1554d1}
.meshtastic-router-dot,.marker-meshtastic-router,.node-icon.mesh-router,.repeater-dot,.marker-repeater,.node-icon.repeater{border-radius:5px;transform:rotate(45deg)}.node-icon.mesh-router span,.node-icon.repeater span{transform:rotate(-45deg)}
.marker-meshtastic,.node-icon.mesh-client,.marker-companion,.node-icon.companion{border-radius:50%}.marker-meshtastic-router,.node-icon.mesh-router,.marker-repeater,.node-icon.repeater{color:#fff}.cluster-meshtastic{background:#39ff88;box-shadow:0 0 20px rgba(57,255,136,.68),0 5px 18px rgba(0,0,0,.48)}.cluster-meshcore{background:#26c6ff;box-shadow:0 0 20px rgba(38,198,255,.68),0 5px 18px rgba(0,0,0,.48)}
.node-icon.age-fresh{border:1px solid #fff;box-shadow:0 0 0 4px #39ff66,0 0 0 5px #fff,0 0 18px rgba(57,255,102,.9),0 3px 9px rgba(0,0,0,.6)}.node-icon.age-recent{border:1px solid #fff;box-shadow:0 0 0 4px #fff200,0 0 0 5px #fff,0 0 18px rgba(255,242,0,.9),0 3px 9px rgba(0,0,0,.6)}.node-icon.age-aging{border:1px solid #fff;box-shadow:0 0 0 4px #ff8a00,0 0 0 5px #fff,0 0 18px rgba(255,138,0,.9),0 3px 9px rgba(0,0,0,.6)}.node-icon.age-old{border:1px solid #fff;box-shadow:0 0 0 4px #ff1744,0 0 0 5px #fff,0 0 18px rgba(255,23,68,.9),0 3px 9px rgba(0,0,0,.6)}.node-icon.age-stale{border:1px solid #fff;box-shadow:0 0 0 4px #050505,0 0 0 5px #fff,0 3px 9px rgba(0,0,0,.75)}
.age-key{position:absolute;z-index:800;left:14px;bottom:28px;display:grid;gap:6px;padding:11px 13px;border:1px solid var(--border);border-radius:13px;background:color-mix(in srgb,var(--panel) 93%,transparent);box-shadow:0 12px 32px rgba(0,0,0,.28);backdrop-filter:blur(8px);font-size:10px;color:var(--muted)}.age-key strong{color:var(--text);font-size:11px;letter-spacing:.04em;margin-bottom:2px}.age-key span{display:flex;align-items:center;gap:8px}.age-key small{max-width:145px;padding-top:3px;border-top:1px solid var(--border);font-size:8px;line-height:1.3}.age-ring{width:10px;height:10px;border:3px solid;border-radius:50%;background:var(--panel)}.age-ring.age-fresh{border-color:#39ff66;box-shadow:0 0 8px #39ff66}.age-ring.age-recent{border-color:#fff200;box-shadow:0 0 8px #fff200}.age-ring.age-aging{border-color:#ff8a00;box-shadow:0 0 8px #ff8a00}.age-ring.age-old{border-color:#ff1744;box-shadow:0 0 8px #ff1744}.age-ring.age-stale{border-color:#050505}
@supports (color:color(display-p3 1 0 0)){.meshtastic-dot,.marker-meshtastic,.node-icon.mesh-client,.cluster-meshtastic{background:color(display-p3 .12 1 .42)}.meshtastic-router-dot,.marker-meshtastic-router,.node-icon.mesh-router{background:color(display-p3 .01 .46 .2)}.companion-dot,.marker-companion,.node-icon.companion,.cluster-meshcore{background:color(display-p3 .02 .68 1)}.repeater-dot,.marker-repeater,.node-icon.repeater{background:color(display-p3 .02 .2 .78)}}
@media(max-width:760px){.age-key{left:10px;bottom:24px;padding:9px 10px;gap:4px;font-size:9px}}

/* Numbered groups are deliberately distinct from individual node shapes. */
.node-cluster{position:relative;isolation:isolate;width:48px;height:48px;clip-path:polygon(25% 3%,75% 3%,100% 50%,75% 97%,25% 97%,0 50%);border:0;background:#fff!important;box-shadow:0 5px 18px rgba(0,0,0,.55)}.node-cluster::before{content:"";position:absolute;z-index:-1;inset:3px;clip-path:inherit}.node-cluster.cluster-meshtastic::before{background:#14b866}.node-cluster.cluster-meshcore::before{background:#178fd1}.cluster-network{position:absolute;inset:4px;width:40px;height:40px;overflow:visible}.cluster-network path{fill:none;stroke:rgba(255,255,255,.78);stroke-width:3.2;stroke-linecap:round}.cluster-network circle{fill:#fff}.cluster-network .cluster-centre{fill:rgba(4,18,28,.92);stroke:#fff;stroke-width:1}.cluster-count{fill:#fff;font-family:system-ui,sans-serif;font-weight:900;text-anchor:middle;dominant-baseline:central;paint-order:stroke;stroke:rgba(0,0,0,.55);stroke-width:.7}.cluster-count.count-short{font-size:10px}.cluster-count.count-medium{font-size:8px}.cluster-count.count-long{font-size:6.5px}
@supports (color:color(display-p3 1 0 0)){.node-cluster.cluster-meshtastic::before{background:color(display-p3 .02 .68 .28)}.node-cluster.cluster-meshcore::before{background:color(display-p3 .02 .48 .82)}}

/* Optical balance: blue is deliberately quieter because MeshCore is denser. */
.meshtastic-dot,.marker-meshtastic,.node-icon.mesh-client{background:#45f98a}.meshtastic-router-dot,.marker-meshtastic-router,.node-icon.mesh-router{background:#087a43}.companion-dot,.marker-companion,.node-icon.companion{background:#48a8c9}.repeater-dot,.marker-repeater,.node-icon.repeater{background:#174f91}.cluster-meshtastic{background:#45f98a}.cluster-meshcore{background:#48a8c9}.node-cluster.cluster-meshtastic::before{background:#24d474}.node-cluster.cluster-meshcore::before{background:#287c9f}
@supports (color:color(display-p3 1 0 0)){.meshtastic-dot,.marker-meshtastic,.node-icon.mesh-client,.cluster-meshtastic{background:color(display-p3 .18 .96 .42)}.meshtastic-router-dot,.marker-meshtastic-router,.node-icon.mesh-router{background:color(display-p3 .01 .46 .21)}.companion-dot,.marker-companion,.node-icon.companion,.cluster-meshcore{background:color(display-p3 .18 .58 .72)}.repeater-dot,.marker-repeater,.node-icon.repeater{background:color(display-p3 .03 .25 .55)}.node-cluster.cluster-meshtastic::before{background:color(display-p3 .06 .78 .34)}.node-cluster.cluster-meshcore::before{background:color(display-p3 .08 .4 .56)}}
.node-icon.mesh-router,.node-icon.repeater{width:26px;height:26px;margin:2px}

/* v0.10 comparison, filtering and accessibility controls. */
.secondary-button.compact{padding:9px 11px;font-size:11px}.secondary-button.compact.active{border-color:var(--primary);background:color-mix(in srgb,var(--primary) 15%,var(--panel));color:var(--text)}
.filter-panel{display:grid;grid-template-columns:1.5fr 1fr 1.4fr;gap:16px;align-items:start;margin:0 0 16px;padding:16px 18px;border:1px solid var(--border);border-radius:18px;background:var(--panel)}.role-filters{display:flex;flex-wrap:wrap;gap:9px 14px;border:0;padding:0;margin:0}.role-filters legend,.distance-filter>label,.radio-filters label{display:block;width:100%;margin-bottom:7px;color:var(--muted);font-size:10px;font-weight:800;letter-spacing:.08em;text-transform:uppercase}.role-filters label{font-size:11px}.distance-filter,.radio-filters{font-size:11px;color:var(--muted)}.distance-filter select,.radio-filters select{width:100%;min-height:36px;padding:7px 9px;border:1px solid var(--border);border-radius:10px;background:var(--input);color:var(--text)}.distance-filter span,.radio-filters small{display:block;margin-top:7px;font-size:9px;line-height:1.4}.radio-filters{display:grid;grid-template-columns:1fr 1fr;gap:9px}.radio-filters small{grid-column:1/-1}.radio-filters label{margin:0}
.map-empty{position:absolute;z-index:790;left:50%;top:50%;max-width:330px;transform:translate(-50%,-50%);padding:13px 16px;border:1px solid var(--border);border-radius:14px;background:color-mix(in srgb,var(--panel) 94%,transparent);box-shadow:0 10px 30px rgba(0,0,0,.3);color:var(--text);font-size:12px;text-align:center;backdrop-filter:blur(8px)}
.summary-card,.sources-card{padding:20px;border:1px solid var(--border);border-radius:18px;background:var(--panel)}.summary-card h2,.sources-card h2{font-size:15px;margin:0 0 13px}.summary-grid{display:grid;grid-template-columns:1fr 1fr;gap:12px;color:var(--muted);font-size:11px;line-height:1.65}.summary-grid span{padding:12px;border:1px solid var(--border);border-radius:12px}.summary-grid b{color:var(--text);font-size:18px}.sources-card p{margin:11px 0 0;color:var(--muted);font-size:10px;line-height:1.55}.sources-card a,.popup-meta a{color:var(--primary)}.source-health{display:flex;flex-wrap:wrap;gap:8px}.health{padding:6px 8px;border:1px solid var(--border);border-radius:999px;font-size:10px}.health.ok{color:#28d978}.health.failed{color:#ff5b68}.health.unknown{color:var(--muted)}.popup-copy{margin-top:6px;padding:4px 7px;border:1px solid var(--border);border-radius:7px;background:var(--input);color:var(--text);font-size:10px}
.node-label{opacity:0!important;pointer-events:none!important;border:1px solid rgba(255,255,255,.65)!important;border-radius:8px!important;background:rgba(5,15,23,.88)!important;color:#fff!important;box-shadow:0 3px 10px rgba(0,0,0,.45)!important;font-size:9px!important;line-height:1.25!important;transition:opacity .12s}.show-node-labels .node-label{opacity:1!important}.node-label::before{display:none}
.pattern-rings .node-icon{position:relative}.pattern-rings .node-icon::after{content:"";position:absolute;pointer-events:none;inset:-6px;border-radius:inherit}.pattern-rings .node-icon.age-fresh::after{border:1px solid #fff}.pattern-rings .node-icon.age-recent::after{border:2px dashed #fff}.pattern-rings .node-icon.age-aging::after{border:2px dotted #fff}.pattern-rings .node-icon.age-old::after{border:3px double #fff}.pattern-rings .node-icon.age-stale::after{border:2px dashed #777}
@media(max-width:900px){.filter-panel{grid-template-columns:1fr 1fr}.radio-filters{grid-column:1/-1}.below-map{grid-template-columns:1fr 1fr}}
@media(max-width:650px){.filter-panel,.below-map{grid-template-columns:1fr}.radio-filters{grid-template-columns:1fr}.summary-grid{grid-template-columns:1fr}.source-health{display:grid}.visible-counter{width:170px}.node-label{font-size:8px!important}}

/* Filter cards use the same visual language as the MHUK controls. */
.filter-panel .role-filters,.filter-panel .distance-filter,.filter-panel .radio-filters{min-width:0;padding:13px 14px!important;border:1px solid var(--border)!important;border-radius:13px;background:color-mix(in srgb,var(--input) 72%,transparent)}.filter-panel .role-filters{display:flex!important;align-items:center;align-content:flex-start}.filter-panel .role-filters legend{float:left;width:100%;padding:0;margin:0 0 9px;color:var(--muted);font-size:10px;font-weight:850;letter-spacing:.1em;text-transform:uppercase}.filter-panel .role-filters label{display:inline-flex;align-items:center;gap:6px;padding:6px 9px;border:1px solid var(--border);border-radius:999px;background:var(--panel);color:var(--text);font-size:10px;white-space:nowrap}.filter-panel input[type=checkbox]{width:14px;height:14px;margin:0;accent-color:var(--primary)}.filter-panel select{appearance:none;background-color:var(--panel);background-image:linear-gradient(45deg,transparent 50%,var(--muted) 50%),linear-gradient(135deg,var(--muted) 50%,transparent 50%);background-position:calc(100% - 14px) 15px,calc(100% - 10px) 15px;background-size:4px 4px,4px 4px;background-repeat:no-repeat;padding-right:28px}.filter-panel .distance-filter>label,.filter-panel .radio-filters label{color:var(--muted);font-size:9px;font-weight:850;letter-spacing:.09em;text-transform:uppercase}.filter-panel .distance-filter span{min-height:24px}.filter-panel .radio-filters small{padding-top:7px;border-top:1px solid var(--border)}

/* Shared visual language for the three public mesh pages. */
body{background:radial-gradient(circle at 25% 0,var(--mh-accent-wash) 0,transparent 35%),var(--canvas)}
.dashboard-header{display:flex;justify-content:space-between;align-items:flex-start;gap:2rem;padding:28px 32px 22px;border-bottom:1px solid var(--border);background:transparent}.dashboard-header h1{margin:.1em 0;font-size:clamp(2rem,4vw,4rem);line-height:1;letter-spacing:-.04em}.dashboard-eyebrow{margin:0;color:var(--primary);font-size:.72rem;font-weight:800;letter-spacing:.24em}.dashboard-lede{max-width:760px;margin:.5rem 0 0;color:var(--muted)}.header-actions{align-items:flex-start}.page-tabs{display:flex;align-items:center;gap:7px;padding:5px;border:1px solid var(--border);border-radius:12px;background:var(--panel)}.page-tabs a{padding:9px 13px;border-radius:8px;color:var(--muted);font-size:.85rem;font-weight:750;text-decoration:none;white-space:nowrap}.page-tabs a:hover{color:var(--text)}.page-tabs a.active{background:var(--panel-2);color:var(--primary)}
main{width:min(1480px,calc(100% - 40px));padding-top:28px}.intro h2{margin:9px 0 12px;font-size:clamp(28px,4vw,48px);line-height:1.04;letter-spacing:-.04em}.map-shell{border-radius:14px}.updated-card,.node-search,.filter-panel,.age-filter,.coverage-note,.legend-card,.privacy-card,.summary-card,.sources-card{border-radius:12px}
.credits{flex-basis:100%;margin:0;padding-top:9px;border-top:1px solid var(--border);font-size:.72rem;line-height:1.65}.credits a{color:var(--primary);text-decoration:none}
@media(max-width:900px){.dashboard-header{display:block;padding:20px}.header-actions{margin-top:16px;flex-wrap:wrap}.page-tabs{display:inline-flex;flex-wrap:wrap}}
@media(max-width:650px){main{width:min(100% - 24px,1480px)}.page-tabs a{padding:8px 9px;font-size:.75rem}.dashboard-header h1{font-size:2.25rem}.icon-button{display:none}}
.dashboard-header{display:block;padding:22px 0}@media(max-width:900px){.dashboard-header{padding:20px 0}.dashboard-header .header-actions{margin:0}}
