/* ==========================================================================
   Hudson House partner dashboard: design kit theme (dark glassmorphism)
   Brand: #0056A3 brand blue, #60B3FD light blue, #1D2024 near black.
   All classes are prefixed "hh-" so this file can sit next to other CSS.
   Contents: 1 fonts, 2 variables, 3 base, 4 background, 5 header, 6 hero and
   controls, 7 grid, 8 glass cards, 9 KPI, 10 charts, 11 park cards,
   12 table, 13 footer, 14 reveal, 15 responsive, 16 fallbacks and a11y,
   17 map tab (globe, panel, list view, flat fallback).
   ========================================================================== */

/* 1. FONTS: not declared here. Plain HTML links fonts.css before this file. Observable Framework calls loadFonts() from components.js (see README). */

/* 2. VARIABLES */
:root{
  color-scheme:dark;
  --hh-blue:#0056A3;
  --hh-blue-light:#60B3FD;
  --hh-ink-900:#1D2024;
  --hh-bg:#0A0C0F;
  --hh-bg-2:#0E1319;
  --hh-text:#F4F7FB;
  --hh-text-2:#BAC2CE;      /* secondary text, 9:1 on page bg */
  --hh-text-3:#929BA9;      /* tertiary text, 6:1 on page bg */
  --hh-line:rgba(255,255,255,.13);
  --hh-line-soft:rgba(255,255,255,.07);
  --hh-glass-top:rgba(255,255,255,.105);
  --hh-glass-bot:rgba(255,255,255,.035);
  --hh-glass-solid:#1B2027;  /* fallback when backdrop-filter is missing */
  --hh-ok:#4ADE9A;
  --hh-warn:#F5C26B;
  --hh-s1:#60B3FD;           /* chart series 1 (brand light blue) */
  --hh-s2:#7CE8C4;           /* chart series 2 */
  --hh-s3:#F6C177;           /* chart series 3 */
  --hh-focus:#8CCBFF;
  --hh-r:24px;
  --hh-r-sm:14px;
  --hh-pad:clamp(18px,2.2vw,28px);
  --hh-gap:clamp(14px,1.6vw,20px);
  --hh-ease:cubic-bezier(.22,1,.36,1);
  --hh-font:"Inter",-apple-system,BlinkMacSystemFont,"SF Pro Text","Segoe UI",Roboto,Helvetica,Arial,sans-serif;
  --hh-font-head:"Onest","Inter",-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Helvetica,Arial,sans-serif;
}

/* 3. BASE */
.hh-root,.hh-root *,.hh-root *::before,.hh-root *::after{box-sizing:border-box}
.hh-root{
  position:relative;min-height:100vh;margin:0;background:var(--hh-bg);color:var(--hh-text);
  font-family:var(--hh-font);font-size:16px;line-height:1.5;letter-spacing:-.006em;
  font-feature-settings:"tnum" 1,"cv11" 1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;
  -webkit-text-size-adjust:100%;overflow-x:hidden;
}
.hh-root h1,.hh-root h2,.hh-root h3{font-family:var(--hh-font-head);font-weight:700;margin:0;letter-spacing:-.02em;line-height:1.15}
.hh-root p{margin:0}
.hh-root img{max-width:100%}
.hh-container{width:100%;max-width:1240px;margin:0 auto;padding:0 clamp(16px,4vw,40px)}
.hh-sr{position:absolute!important;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0 0 0 0);clip-path:inset(50%);white-space:nowrap;border:0}
.hh-skip{position:absolute;left:12px;top:-60px;z-index:100;padding:10px 16px;border-radius:10px;background:#fff;color:var(--hh-ink-900);font-weight:600;text-decoration:none;transition:top .2s}
.hh-skip:focus{top:12px}

/* 4. BACKGROUND (gradients only, no blur filters, cheap on phones) */
.hh-bg{position:fixed;inset:0;z-index:0;overflow:hidden;pointer-events:none;
  background:radial-gradient(120% 70% at 50% -12%,#0E2A4A 0%,#0B1118 48%,var(--hh-bg) 100%)}
.hh-orb{position:absolute;border-radius:50%;will-change:transform}
.hh-orb--1{width:min(70vw,780px);aspect-ratio:1;left:-14vw;top:-18vh;background:radial-gradient(circle,rgba(0,86,163,.62),transparent 68%);animation:hh-drift-1 28s ease-in-out infinite alternate}
.hh-orb--2{width:min(60vw,680px);aspect-ratio:1;right:-16vw;top:26vh;background:radial-gradient(circle,rgba(96,179,253,.2),transparent 68%);animation:hh-drift-2 34s ease-in-out infinite alternate}
.hh-orb--3{width:min(66vw,720px);aspect-ratio:1;left:14vw;bottom:-26vh;background:radial-gradient(circle,rgba(0,86,163,.4),transparent 68%);animation:hh-drift-3 40s ease-in-out infinite alternate}
.hh-gridlines{position:absolute;inset:0;opacity:.5;
  background-image:linear-gradient(rgba(255,255,255,.035) 1px,transparent 1px),linear-gradient(90deg,rgba(255,255,255,.035) 1px,transparent 1px);
  background-size:64px 64px;-webkit-mask-image:radial-gradient(70% 55% at 50% 15%,#000,transparent);mask-image:radial-gradient(70% 55% at 50% 15%,#000,transparent)}
@keyframes hh-drift-1{to{transform:translate(12vw,10vh) scale(1.12)}}
@keyframes hh-drift-2{to{transform:translate(-14vw,-8vh) scale(.92)}}
@keyframes hh-drift-3{to{transform:translate(12vw,-10vh) scale(1.15)}}
.hh-app{position:relative;z-index:1}

/* 5. HEADER, LOGO, FRESHNESS PULSE */
.hh-top{position:sticky;top:0;z-index:30;background:linear-gradient(180deg,rgba(10,12,15,.78),rgba(10,12,15,.42));
  -webkit-backdrop-filter:blur(22px) saturate(160%);backdrop-filter:blur(22px) saturate(160%);border-bottom:1px solid var(--hh-line-soft)}
.hh-top-inner{display:flex;align-items:center;gap:16px;min-height:64px;padding-top:10px;padding-bottom:10px}
/* LOGO RULE: on this dark UI use the WHITE logo (assets/logo-white.png).
   Never place the dark logo on a dark surface. If you must use the dark logo,
   wrap it in .hh-logo-chip (light chip) so it is always visible. */
.hh-logo{display:block;height:34px;width:auto}
.hh-logo-chip{display:inline-flex;align-items:center;padding:8px 14px;border-radius:12px;background:#F4F7FB;border:1px solid rgba(255,255,255,.5);box-shadow:0 6px 20px rgba(0,0,0,.35)}
.hh-logo-chip .hh-logo{height:28px}
/* Logo intro "signal trace" (components.js logoTraceIn). The wrapper holds the size, so nothing shifts.
   The img is hidden only while the intro runs and only when JS is on; every failure path adds .is-done.
   No blur and no pixelation: an SVG outline draws in light blue, the real img fades in, one light sweep passes. */
.hh-logo-anim{position:relative;display:block;flex:none;line-height:0}
.hh-logo-anim .hh-logo-trace{position:absolute;left:0;top:0;width:100%;height:100%;pointer-events:none;overflow:visible}
.hh-logo-trace .hh-trace-g{filter:drop-shadow(0 0 1.5px rgba(96,179,253,.9))}
.hh-js .hh-logo-anim:not(.is-done) .hh-logo{opacity:0}
.hh-js .hh-logo-anim.is-fill:not(.is-done) .hh-logo{opacity:1;transition:opacity var(--hh-fill-ms,400ms) ease-out}
.hh-sep{width:1px;height:24px;background:var(--hh-line);flex:none}
.hh-partner{font-family:var(--hh-font-head);font-weight:700;font-size:17px;letter-spacing:-.01em;white-space:nowrap}
.hh-sp{flex:1}
.hh-fresh{display:inline-flex;align-items:center;gap:10px;padding:8px 14px;border-radius:999px;background:var(--hh-glass-top);border:1px solid var(--hh-line);
  font-size:13px;color:var(--hh-text-2);white-space:nowrap}
.hh-fresh-text{color:var(--hh-text);font-weight:500}
.hh-dot{position:relative;display:inline-block;width:8px;height:8px;border-radius:50%;background:var(--hh-ok);flex:none;box-shadow:0 0 12px var(--hh-ok)}
.hh-dot::after{content:"";position:absolute;inset:-5px;border-radius:50%;border:1.5px solid var(--hh-ok);animation:hh-pulse 2.4s ease-out infinite}
.hh-fresh--stale .hh-dot{background:var(--hh-warn);box-shadow:0 0 12px var(--hh-warn)}
.hh-fresh--stale .hh-dot::after{border-color:var(--hh-warn)}
@keyframes hh-pulse{0%{transform:scale(.5);opacity:.9}100%{transform:scale(2.3);opacity:0}}

.hh-badge{display:inline-flex;align-items:center;gap:6px;padding:3px 9px;border-radius:999px;font-size:11px;font-weight:600;letter-spacing:.04em;text-transform:uppercase;white-space:nowrap;
  color:var(--hh-text-2);background:rgba(255,255,255,.07);border:1px solid var(--hh-line)}
.hh-badge--example{color:#FFE2A8;background:rgba(246,193,119,.12);border-color:rgba(246,193,119,.4)}

/* 6. HERO AND CONTROLS */
.hh-hero{padding:clamp(32px,6vw,72px) 0 8px}
.hh-eyebrow{font-size:13px;letter-spacing:.14em;text-transform:uppercase;color:var(--hh-blue-light);font-weight:600}
.hh-title{margin:12px 0 10px!important;font-size:clamp(40px,7vw,80px)!important;line-height:1.02!important;letter-spacing:-.035em!important;
  background:linear-gradient(180deg,#fff 25%,rgba(255,255,255,.66));-webkit-background-clip:text;background-clip:text;color:transparent;-webkit-text-fill-color:transparent}
.hh-lede{max-width:640px;font-size:clamp(16px,2vw,19px);line-height:1.5;color:var(--hh-text-2);font-weight:300}
.hh-controls{display:flex;flex-wrap:wrap;gap:14px;align-items:center;justify-content:space-between;margin:32px 0 var(--hh-gap)}
.hh-seg{display:inline-flex;padding:4px;border-radius:999px;background:var(--hh-glass-top);border:1px solid var(--hh-line);
  -webkit-backdrop-filter:blur(16px);backdrop-filter:blur(16px)}
.hh-seg button{appearance:none;border:0;background:transparent;color:var(--hh-text-2);font:inherit;font-size:14px;font-weight:500;padding:9px 18px;border-radius:999px;cursor:pointer;
  transition:color .3s,background .35s var(--hh-ease),box-shadow .35s}
.hh-seg button:hover{color:var(--hh-text)}
.hh-seg button[aria-pressed="true"]{color:var(--hh-ink-900);background:linear-gradient(180deg,#fff,#CFE6FB);box-shadow:0 4px 18px rgba(96,179,253,.35)}
.hh-note{font-size:13px;color:var(--hh-text-3)}

/* 7. GRID (12 columns) */
.hh-grid{display:grid;grid-template-columns:repeat(12,minmax(0,1fr));gap:var(--hh-gap)}
.hh-section{margin-top:var(--hh-gap)}
.hh-span-3{grid-column:span 3}.hh-span-4{grid-column:span 4}.hh-span-5{grid-column:span 5}
.hh-span-6{grid-column:span 6}.hh-span-7{grid-column:span 7}.hh-span-8{grid-column:span 8}.hh-span-12{grid-column:span 12}

/* 8. GLASS CARDS */
.hh-card{position:relative;isolation:isolate;display:flex;flex-direction:column;min-width:0;border-radius:var(--hh-r);padding:var(--hh-pad);
  background:linear-gradient(155deg,var(--hh-glass-top),var(--hh-glass-bot) 55%,rgba(96,179,253,.045));
  border:1px solid var(--hh-line);
  -webkit-backdrop-filter:blur(28px) saturate(170%);backdrop-filter:blur(28px) saturate(170%);
  box-shadow:0 26px 60px -24px rgba(0,0,0,.65),inset 0 1px 0 rgba(255,255,255,.15),inset 0 0 0 1px rgba(255,255,255,.015);
  transition:transform .5s var(--hh-ease),border-color .4s,box-shadow .5s}
/* pointer glow, driven by cardGlow() in components.js (--hh-mx, --hh-my) */
.hh-card::before{content:"";position:absolute;inset:0;z-index:-1;border-radius:inherit;pointer-events:none;opacity:.9;
  background:radial-gradient(420px 220px at var(--hh-mx,18%) var(--hh-my,-10%),rgba(96,179,253,.16),transparent 65%)}
/* top edge light line */
.hh-card::after{content:"";position:absolute;left:12%;right:12%;top:-1px;height:1px;pointer-events:none;
  background:linear-gradient(90deg,transparent,rgba(160,210,255,.7),transparent);opacity:.6}
.hh-card--hover:hover{transform:translateY(-3px);border-color:rgba(96,179,253,.35);box-shadow:0 30px 70px -24px rgba(0,60,120,.55),inset 0 1px 0 rgba(255,255,255,.2)}
.hh-card--raised{background:linear-gradient(155deg,rgba(255,255,255,.14),rgba(255,255,255,.05) 55%,rgba(0,86,163,.12))}
.hh-inset{border-radius:var(--hh-r-sm);padding:12px 14px;background:rgba(10,12,15,.38);border:1px solid var(--hh-line-soft)}
.hh-card-head{display:flex;align-items:flex-start;justify-content:space-between;gap:12px;flex-wrap:wrap;margin-bottom:14px}
.hh-card-title{font-size:16px!important;letter-spacing:-.01em!important}
.hh-card-sub{font-size:13px;color:var(--hh-text-3);margin-top:3px}
.hh-card-tools{display:flex;gap:8px;align-items:center;flex-wrap:wrap}

/* 9. KPI */
.hh-kpi-label{font-size:13px;color:var(--hh-text-2);font-weight:500;display:flex;flex-direction:column;align-items:flex-start;gap:10px}
.hh-kpi-value{margin:12px 0 4px;font-size:clamp(40px,4.4vw,56px);font-weight:250;letter-spacing:-.045em;line-height:1.05;font-variant-numeric:tabular-nums;
  background:linear-gradient(180deg,#fff,#CFE6FB);-webkit-background-clip:text;background-clip:text;color:transparent;-webkit-text-fill-color:transparent}
.hh-kpi-unit{font-size:.4em;font-weight:400;letter-spacing:0;margin-left:6px;color:var(--hh-text-2);-webkit-text-fill-color:var(--hh-text-2)}
.hh-kpi-meta{font-size:13px;color:var(--hh-text-3)}
.hh-kpi-foot{margin-top:auto;padding-top:18px}
.hh-trend{display:inline-flex;align-self:flex-start;align-items:center;gap:4px;font-size:12.5px;font-weight:600;padding:2px 8px;border-radius:999px;background:rgba(74,222,154,.12);color:var(--hh-ok)}
.hh-trend--down{background:rgba(245,194,107,.12);color:var(--hh-warn)}
.hh-meter{height:8px;border-radius:8px;background:rgba(255,255,255,.09);overflow:hidden}
.hh-meter-fill{height:100%;width:var(--hh-v,0%);border-radius:inherit;background:linear-gradient(90deg,var(--hh-blue),var(--hh-blue-light));box-shadow:0 0 16px rgba(96,179,253,.55);transform-origin:left;transition:width 1.4s var(--hh-ease)}
.hh-ap-dots{display:flex;flex-wrap:wrap;gap:7px}
.hh-ap-dots i{width:12px;height:12px;border-radius:50%;background:var(--hh-ok);box-shadow:0 0 10px rgba(74,222,154,.6)}
.hh-ap-dots i.is-quiet{background:transparent;border:2px solid var(--hh-warn);box-shadow:none}
.hh-est-list{list-style:none;margin:10px 0 0;padding:0;display:grid;gap:8px}
.hh-est-list li{display:flex;align-items:center;gap:10px;font-size:14px;color:var(--hh-text-2)}
.hh-est-list li b{margin-left:auto;font-size:17px;font-weight:600;color:var(--hh-text);font-variant-numeric:tabular-nums}
.hh-swatch{width:9px;height:9px;border-radius:50%;background:var(--c,var(--hh-s1));box-shadow:0 0 10px var(--c,var(--hh-s1));flex:none}
.hh-disclaimer{font-size:12.5px;line-height:1.5;color:var(--hh-text-2)}
.hh-card .hh-disclaimer{margin-top:12px;padding-top:12px;border-top:1px solid var(--hh-line-soft);color:var(--hh-text-3)}
.hh-disclaimer-strip{padding:14px 18px;border-radius:var(--hh-r-sm);background:rgba(96,179,253,.07);border:1px solid rgba(96,179,253,.22)}

/* 10. CHARTS */
.hh-chip{appearance:none;display:inline-flex;align-items:center;gap:8px;font:inherit;font-size:13px;color:var(--hh-text);padding:6px 12px;border-radius:999px;
  background:var(--hh-glass-top);border:1px solid var(--hh-line);cursor:pointer;transition:opacity .3s,background .3s}
.hh-chip i{width:9px;height:9px;border-radius:50%;background:var(--c,var(--hh-s1));box-shadow:0 0 10px var(--c,var(--hh-s1))}
.hh-chip[aria-pressed="false"]{opacity:.55}
.hh-chip[aria-pressed="false"] i{background:transparent;border:1.5px solid var(--c);box-shadow:none}
.hh-chip:hover{background:rgba(255,255,255,.14)}
.hh-chart{position:relative;width:100%;outline:none}
.hh-chart svg{display:block;width:100%;height:auto;overflow:visible;touch-action:pan-y}
.hh-chart-grid{stroke:rgba(255,255,255,.08);stroke-width:1;stroke-dasharray:3 5}
.hh-chart-axis text{fill:var(--hh-text-3);font-size:11.5px;font-family:var(--hh-font)}
.hh-chart-line{fill:none;stroke-width:2.5;stroke-linecap:round;stroke-linejoin:round}
.hh-chart-guide{stroke:rgba(255,255,255,.4);stroke-width:1;stroke-dasharray:3 4}
.hh-chart-pt{stroke:#0A0C0F;stroke-width:2}
.hh-chart:focus-visible,.hh-bars:focus-visible{outline:2px solid var(--hh-focus);outline-offset:6px;border-radius:12px}
.hh-tip{position:absolute;top:0;left:0;z-index:5;min-width:150px;max-width:240px;padding:12px 14px;border-radius:14px;pointer-events:none;
  background:rgba(14,19,26,.86);border:1px solid var(--hh-line);-webkit-backdrop-filter:blur(18px);backdrop-filter:blur(18px);
  box-shadow:0 18px 44px rgba(0,0,0,.55);font-size:12.5px;opacity:0;transform:translateY(4px);transition:opacity .16s,transform .16s}
.hh-tip.is-on{opacity:1;transform:none}
.hh-tip-title{font-weight:600;margin-bottom:6px;color:var(--hh-text)}
.hh-tip-row{display:flex;align-items:center;gap:8px;color:var(--hh-text-2);padding:2px 0}
.hh-tip-row b{margin-left:auto;padding-left:14px;color:var(--hh-text);font-weight:600;font-variant-numeric:tabular-nums}
.hh-tip-total{border-top:1px solid var(--hh-line);margin-top:6px;padding-top:6px}
/* hourly bars */
.hh-bars{position:relative;outline:none}
.hh-bars-plot{position:relative;display:grid;grid-template-columns:repeat(24,minmax(0,1fr));align-items:end;gap:clamp(2px,.5vw,6px);height:var(--hh-bars-h,220px);
  background:repeating-linear-gradient(to top,transparent 0,transparent calc(25% - 1px),rgba(255,255,255,.07) calc(25% - 1px),rgba(255,255,255,.07) 25%)}
.hh-bar{position:relative;height:100%;display:flex;align-items:flex-end;justify-content:center}
.hh-bar-fill{display:block;width:100%;height:calc(var(--h,0)*100%);min-height:3px;border-radius:7px 7px 3px 3px;transform-origin:bottom;
  background:linear-gradient(180deg,var(--hh-blue-light),var(--hh-blue));opacity:.82;transition:opacity .25s,filter .25s,transform .25s}
.hh-bar.is-active .hh-bar-fill,.hh-bar:hover .hh-bar-fill{opacity:1;filter:drop-shadow(0 0 10px rgba(96,179,253,.7))}
.hh-bar--now .hh-bar-fill{opacity:1;background:linear-gradient(180deg,#BFE1FF,var(--hh-blue-light) 40%,var(--hh-blue));box-shadow:0 0 22px rgba(96,179,253,.55)}
.hh-bar--future .hh-bar-fill{height:3px;background:rgba(255,255,255,.18);opacity:1;box-shadow:none}
.hh-bars-axis{display:grid;grid-template-columns:repeat(24,minmax(0,1fr));gap:clamp(2px,.5vw,6px);margin-top:8px;font-size:11.5px;color:var(--hh-text-3);text-align:center}
.hh-bars-axis span{overflow:visible;white-space:nowrap}
.hh-bars-peak{position:absolute;transform:translate(-50%,-100%);font-size:12px;font-weight:600;color:var(--hh-blue-light);white-space:nowrap;pointer-events:none}

/* 11. PARK (LOCATION) CARDS */
.hh-park-head{display:flex;align-items:center;justify-content:space-between;gap:8px;flex-wrap:wrap}
.hh-park-name{display:flex;align-items:center;gap:10px;font-family:var(--hh-font-head);font-weight:700;font-size:18px;letter-spacing:-.015em}
.hh-last{display:flex;align-items:center;gap:12px;font-size:13px;color:var(--hh-text-2);margin:10px 0 4px}
.hh-last .hh-dot{width:7px;height:7px;margin-left:4px}
.hh-park-stats{display:flex;gap:22px;flex-wrap:wrap;margin:10px 0 0}
.hh-park-stats b{display:block;font-size:30px;font-weight:300;letter-spacing:-.04em;line-height:1.1;font-variant-numeric:tabular-nums}
.hh-park-stats>div>span{font-size:12px;color:var(--hh-text-3)}
.hh-spark{margin:14px 0 4px;min-height:56px}
.hh-estimate{margin-top:auto;padding-top:14px}
.hh-estimate-inner{margin-top:14px;padding-top:14px;border-top:1px solid var(--hh-line-soft)}
.hh-estimate-label{font-size:12px;color:var(--hh-text-3);display:flex;justify-content:space-between;gap:8px;align-items:center;flex-wrap:wrap}
.hh-estimate-value{margin-top:2px;font-size:30px;font-weight:300;letter-spacing:-.035em;font-variant-numeric:tabular-nums}
.hh-estimate-value small{font-size:12px;font-weight:500;color:var(--hh-text-3);margin-left:6px;letter-spacing:0}

/* 12. TABLE (access point list) */
.hh-tabs{display:flex;gap:6px;flex-wrap:wrap}
.hh-tab{appearance:none;font:inherit;font-size:13px;color:var(--hh-text-2);padding:7px 14px;border-radius:999px;background:transparent;border:1px solid transparent;cursor:pointer;transition:all .3s}
.hh-tab:hover{color:var(--hh-text)}
.hh-tab[aria-selected="true"]{color:var(--hh-text);background:rgba(255,255,255,.1);border-color:var(--hh-line)}
.hh-table-wrap{overflow-x:auto;margin:0 calc(-1*var(--hh-pad));padding:0 var(--hh-pad)}
.hh-table{width:100%;border-collapse:collapse;font-size:14px}
.hh-table th{text-align:left;font-weight:500;font-size:12px;color:var(--hh-text-3);padding:10px 10px;border-bottom:1px solid var(--hh-line);letter-spacing:.03em;white-space:nowrap}
.hh-table td{padding:13px 10px;border-bottom:1px solid var(--hh-line-soft);font-variant-numeric:tabular-nums;vertical-align:middle}
.hh-table .is-num{text-align:right}
.hh-table tbody tr{transition:background .2s}
.hh-table tbody tr:hover{background:rgba(255,255,255,.045)}
.hh-ap-name{font-weight:600;color:var(--hh-text)}
.hh-ap-id{display:block;font-size:12px;color:var(--hh-text-3);font-weight:400}
.hh-status{display:inline-flex;align-items:center;gap:7px;font-size:12.5px;font-weight:600;padding:3px 10px 3px 8px;border-radius:999px;white-space:nowrap}
.hh-status::before{content:"";width:7px;height:7px;border-radius:50%;background:currentColor}
.hh-status--active{color:var(--hh-ok);background:rgba(74,222,154,.12)}
.hh-status--quiet{color:var(--hh-warn);background:rgba(245,194,107,.12)}
.hh-status--quiet::before{background:transparent;border:1.5px solid currentColor;width:8px;height:8px}
.hh-bar-inline{display:block;height:6px;border-radius:6px;min-width:3px;width:calc(var(--w,0)*1%);background:linear-gradient(90deg,var(--c,var(--hh-s1)),transparent);transform-origin:left;
  animation:hh-grow .9s var(--hh-ease) both}
.hh-cell-bar{min-width:120px}
@keyframes hh-grow{from{transform:scaleX(0)}}

/* GB by carrier panel: neutral type and neutral bars on purpose. No logos, no carrier colors, no carrier style icons. */
.hh-carriers{list-style:none;margin:6px 0 0;padding:0;display:grid;gap:18px}
.hh-carrier{display:grid;grid-template-columns:minmax(120px,200px) 1fr auto;align-items:center;gap:8px 18px}
.hh-carrier-name{font-size:16px;font-weight:500;color:var(--hh-text)}
.hh-carrier-gb{font-size:22px;font-weight:300;letter-spacing:-.03em;font-variant-numeric:tabular-nums;color:var(--hh-text);text-align:right;min-width:7ch}
.hh-carrier-gb small{font-size:12px;color:var(--hh-text-3);margin-left:5px;letter-spacing:0}
.hh-gbar{display:block;height:8px;border-radius:8px;background:rgba(255,255,255,.07);overflow:hidden}
.hh-gbar>i{display:block;height:100%;width:calc(var(--w,0)*1%);border-radius:inherit;background:linear-gradient(90deg,rgba(255,255,255,.38),rgba(255,255,255,.62));transform-origin:left}
.hh-js .hh-gbar:not(.is-grown)>i{transform:scaleX(0)}
.hh-js .hh-gbar>i{transition:transform 2s cubic-bezier(.65,0,.35,1)}
.hh-asof{font-size:13px;color:var(--hh-text-2);font-weight:500}
.hh-carrier-foot{margin:22px 0 0;padding-top:16px;border-top:1px solid var(--hh-line-soft);font-size:12.5px;line-height:1.5;color:var(--hh-text-3);max-width:none}
.hh-subnote{margin:14px 0 0;font-size:12px;color:var(--hh-text-3)}

/* Filter bar (range, daily or monthly, custom dates, CSV) */
.hh-filterbar{display:flex;flex-wrap:wrap;align-items:center;gap:12px 14px;margin:26px 0 var(--hh-gap);padding:10px 12px;border-radius:20px;background:rgba(14,18,24,.72);border:1px solid var(--hh-line);
  -webkit-backdrop-filter:blur(18px) saturate(150%);backdrop-filter:blur(18px) saturate(150%)}
.hh-filterbar .hh-sp{flex:1}
.hh-custom{display:flex;flex-wrap:wrap;align-items:center;gap:8px 12px;font-size:13px;color:var(--hh-text-2);order:5;flex:1 1 100%;padding:2px 4px 4px}
.hh-custom[hidden]{display:none}
.hh-custom label{display:inline-flex;align-items:center;gap:8px}
.hh-date{font:inherit;font-size:14px;color:var(--hh-text);background:rgba(255,255,255,.07);border:1px solid var(--hh-line);border-radius:10px;padding:7px 10px;color-scheme:dark;min-width:9.5em}
.hh-date:focus-visible{outline:2px solid var(--hh-focus);outline-offset:2px}
.hh-btn{appearance:none;display:inline-flex;align-items:center;gap:8px;font:inherit;font-size:14px;font-weight:600;color:var(--hh-ink-900);padding:9px 18px;border-radius:999px;border:0;cursor:pointer;background:linear-gradient(180deg,#fff,#CFE6FB);box-shadow:0 4px 18px rgba(96,179,253,.3);transition:transform .25s var(--hh-ease),box-shadow .3s}
.hh-btn:hover{transform:translateY(-1px);box-shadow:0 8px 24px rgba(96,179,253,.45)}
.hh-btn:focus-visible{outline:2px solid var(--hh-focus);outline-offset:2px}
.hh-btn--ghost{color:var(--hh-text);background:rgba(255,255,255,.1);box-shadow:none;border:1px solid var(--hh-line)}
.hh-toast{position:fixed;left:50%;bottom:28px;z-index:60;max-width:min(92vw,720px);transform:translate(-50%,20px);opacity:0;pointer-events:none;padding:12px 18px;border-radius:14px;font-size:14px;color:var(--hh-text);background:rgba(20,28,38,.96);border:1px solid rgba(96,179,253,.5);box-shadow:0 12px 40px rgba(0,0,0,.5);transition:opacity .35s,transform .45s var(--hh-ease);word-break:break-word}
.hh-toast.is-on{opacity:1;transform:translate(-50%,0)}
@media (min-width:1101px){.hh-filterbar{position:sticky;top:var(--hh-top-h,65px);z-index:20}}

/* 13. FOOTER */
.hh-footer{margin-top:44px;padding:24px 0 56px;border-top:1px solid var(--hh-line);color:var(--hh-text-3);font-size:13px;line-height:1.6}
.hh-footer-inner{display:flex;gap:24px;flex-wrap:wrap;align-items:center;justify-content:space-between}
.hh-footer p{max-width:620px}

/* 14. REVEAL (only active once the page adds .hh-js to <html>) */
.hh-js [data-hh-reveal]{opacity:0;transform:translateY(24px) scale(.985);transition:opacity .9s var(--hh-ease),transform .9s var(--hh-ease)}
.hh-js [data-hh-reveal].hh-in{opacity:1;transform:none}

/* 15. RESPONSIVE: desktop >1100, tablet 641 to 1100, phone <=640 */
@media (max-width:1100px){
  .hh-span-3,.hh-span-4{grid-column:span 6}
  .hh-span-5,.hh-span-6,.hh-span-7,.hh-span-8{grid-column:span 12}
  .hh-span-3:last-child:nth-child(odd),.hh-span-4:last-child:nth-child(odd){grid-column:span 12}
  .hh-bars-plot{--hh-bars-h:200px}
  .hh-top-inner{flex-wrap:wrap;row-gap:8px}
  .hh-sp{display:none}
  .hh-nav{flex:1 1 auto}
  .hh-map-strip{grid-template-columns:repeat(3,minmax(0,1fr))}
}
@media (max-width:640px){
  .hh-grid>*{grid-column:span 12!important}
  .hh-logo{height:28px}
  .hh-top-inner{gap:10px;flex-wrap:wrap;row-gap:8px}
  .hh-partner{font-size:15px}
  .hh-nav{flex-wrap:wrap;width:100%}
  .hh-nav a{padding:8px 12px}
  .hh-fresh{white-space:normal;max-width:100%}
  .hh-fresh{padding:6px 12px;font-size:12px}
  .hh-seg button{padding:9px 14px}
  .hh-controls{margin-top:24px}
  .hh-filterbar{margin-top:20px;border-radius:18px}
  .hh-filterbar .hh-seg{flex:1 1 auto}
  .hh-filterbar .hh-seg button{flex:1}
  .hh-filterbar .hh-btn{flex:1 1 100%;justify-content:center}
  .hh-bars-plot{--hh-bars-h:170px}
  .hh-bars-axis .hh-xl-opt{visibility:hidden}
  /* table becomes stacked rows */
  .hh-table thead{display:block;position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0)}
  .hh-table thead tr,.hh-table thead th{display:block}
  .hh-table,.hh-table tbody,.hh-table tr,.hh-table td{display:block;width:100%}
  .hh-table tr{padding:12px 0;border-bottom:1px solid var(--hh-line-soft)}
  .hh-table td{display:flex;justify-content:space-between;align-items:center;gap:12px;padding:5px 0;border:0;text-align:right}
  .hh-table td::before{content:attr(data-label);color:var(--hh-text-3);font-size:12px;text-align:left;flex:none}
  .hh-table td.hh-cell-bar{min-width:0}
  .hh-table td.hh-cell-bar::before,.hh-table td.hh-cell-main::before{display:none}
  .hh-table td.hh-cell-bar .hh-bar-inline{flex:1}
  .hh-carrier{grid-template-columns:1fr auto}
  .hh-carrier .hh-gbar{grid-column:1 / -1;order:3}
  .hh-table td.hh-cell-main{justify-content:space-between;text-align:left;padding-bottom:8px}
  .hh-table td.hh-cell-main .hh-ap-id{display:inline;margin-left:8px}
  .hh-table-wrap{overflow-x:visible}
  .hh-footer-inner{flex-direction:column;align-items:flex-start}
}

/* 16. FALLBACKS AND ACCESSIBILITY */
.hh-root a,.hh-root button,.hh-root [tabindex]{-webkit-tap-highlight-color:transparent}
.hh-root :focus-visible{outline:2px solid var(--hh-focus);outline-offset:3px;border-radius:8px}
.hh-seg button:focus-visible,.hh-chip:focus-visible,.hh-tab:focus-visible{outline-offset:2px;border-radius:999px}
/* no backdrop-filter: swap to solid, slightly lighter surfaces */
@supports not ((-webkit-backdrop-filter:blur(1px)) or (backdrop-filter:blur(1px))){
  .hh-card{background:linear-gradient(155deg,#242B34,var(--hh-glass-solid) 60%,#161A20)}
  .hh-top{background:rgba(10,12,15,.96)}
  .hh-seg,.hh-fresh,.hh-chip{background:#262D37}
  .hh-tip{background:#10151C}
}
/* users who ask for less transparency or more contrast */
@media (prefers-reduced-transparency:reduce){
  .hh-card{background:linear-gradient(155deg,#242B34,var(--hh-glass-solid) 60%,#161A20);-webkit-backdrop-filter:none;backdrop-filter:none}
  .hh-top{background:rgba(10,12,15,.97);-webkit-backdrop-filter:none;backdrop-filter:none}
}
@media (prefers-contrast:more){
  :root{--hh-text-2:#DCE2EA;--hh-text-3:#C2CAD6;--hh-line:rgba(255,255,255,.4)}
  .hh-card{background:#1B2027;-webkit-backdrop-filter:none;backdrop-filter:none}
}
@media (forced-colors:active){
  .hh-card,.hh-fresh,.hh-chip,.hh-inset{border:1px solid CanvasText}
  .hh-meter-fill,.hh-bar-fill,.hh-gbar>i{background:Highlight}
}
/* reduced motion: no drift, no pulse ring, no reveal movement, instant bars */
@media (prefers-reduced-motion:reduce){
  .hh-orb,.hh-dot::after,.hh-bar-inline{animation:none!important}
  .hh-dot::after{opacity:0}
  .hh-js [data-hh-reveal]{opacity:1;transform:none;transition:none}
  .hh-card,.hh-meter-fill,.hh-bar-fill,.hh-tip,.hh-seg button,.hh-gbar>i,.hh-toast,.hh-btn{transition:none!important}
  .hh-logo-trace{display:none}
  .hh-js .hh-logo-anim .hh-logo{opacity:1}
  .hh-js .hh-gbar>i{transform:none!important}
  .hh-card--hover:hover{transform:none}
}

/* 17. MAP TAB (initPartnerMap in map.js). Globe, clusters, panel, list view, flat fallback. */
.hh-nav{display:inline-flex;gap:4px;padding:4px;border-radius:999px;background:var(--hh-glass-top);border:1px solid var(--hh-line)}
.hh-nav a{display:inline-flex;align-items:center;gap:8px;padding:8px 18px;border-radius:999px;font-size:14px;font-weight:500;color:var(--hh-text-2);text-decoration:none;transition:color .3s,background .35s var(--hh-ease),box-shadow .35s}
.hh-nav a:hover{color:var(--hh-text)}
.hh-nav a[aria-current="page"]{color:var(--hh-ink-900);background:linear-gradient(180deg,#fff,#CFE6FB);box-shadow:0 4px 18px rgba(96,179,253,.35)}
.hh-nav a:focus-visible{outline:2px solid var(--hh-focus);outline-offset:2px;border-radius:999px}
.hh-nav svg{flex:none}
main[data-view="map"] .hh-view-ov,main[data-view="map"] .hh-ov-only{display:none!important}
main[data-view="map"] .hh-filterbar{margin-top:16px}
main[data-view="overview"] .hh-view-map{display:none!important}
.hh-view-map[hidden]{display:none}

.hh-map-head{display:flex;align-items:flex-end;justify-content:space-between;gap:12px 16px;flex-wrap:wrap;padding:clamp(6px,1.4vw,14px) 0 6px}
.hh-map-lede{font-size:15px;color:var(--hh-text-2);font-weight:300;max-width:640px}
.hh-map-title{margin:6px 0 6px!important;font-size:clamp(28px,3.6vw,40px)!important;line-height:1.06!important;letter-spacing:-.03em!important;background:linear-gradient(180deg,#fff 25%,rgba(255,255,255,.66));-webkit-background-clip:text;background-clip:text;color:transparent;-webkit-text-fill-color:transparent}
.hh-map-strip{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:6px 18px;margin:var(--hh-gap) 0 0;padding:16px var(--hh-pad)}
.hh-map-stat{display:flex;flex-direction:column;gap:2px;min-width:0;text-align:left;font:inherit;color:inherit;background:none;border:0;padding:0}
.hh-map-stat-label{font-size:12px;color:var(--hh-text-3);letter-spacing:.02em}
.hh-map-stat b{font-size:clamp(22px,2.6vw,32px);font-weight:300;letter-spacing:-.035em;line-height:1.15;font-variant-numeric:tabular-nums}
.hh-map-stat b small{font-size:12px;font-weight:500;color:var(--hh-text-3);margin-left:6px;letter-spacing:0}
.hh-map-dq{cursor:pointer;border-radius:14px;padding:4px 10px;margin:-4px -10px;transition:background .25s}
.hh-map-dq:hover,.hh-map-dq.is-on{background:rgba(245,194,107,.1)}
.hh-map-dq:focus-visible{outline:2px solid var(--hh-focus);outline-offset:2px}
.hh-map-dq b{color:var(--hh-warn)}
.hh-map-strip-note{grid-column:1/-1;margin-top:8px!important}

.hh-map-bar{display:flex;flex-wrap:wrap;align-items:flex-end;gap:10px 12px;margin-bottom:8px}
.hh-map-search{position:relative;flex:1 1 280px;max-width:420px}
.hh-map-search-ico{position:absolute;left:14px;top:50%;transform:translateY(-50%);color:var(--hh-text-3);pointer-events:none}
.hh-map-input{width:100%;font:inherit;font-size:14px;color:var(--hh-text);background:rgba(255,255,255,.07);border:1px solid var(--hh-line);border-radius:999px;padding:10px 16px 10px 40px;min-height:42px;transition:border-color .25s,box-shadow .25s}
.hh-map-input::placeholder{color:var(--hh-text-3)}
.hh-map-input:focus-visible{outline:2px solid var(--hh-focus);outline-offset:2px}
.hh-map-input:focus{border-color:rgba(96,179,253,.55);box-shadow:0 0 0 4px rgba(96,179,253,.12)}
.hh-map-sugg{position:absolute;left:0;right:0;top:calc(100% + 6px);z-index:40;list-style:none;margin:0;padding:6px;border-radius:16px;background:rgba(14,19,26,.97);border:1px solid var(--hh-line);box-shadow:0 18px 44px rgba(0,0,0,.55)}
.hh-map-sugg[hidden]{display:none}
.hh-map-sugg li{display:flex;flex-direction:column;gap:1px;padding:9px 12px;border-radius:10px;cursor:pointer;font-size:14px}
.hh-map-sugg li span{font-size:12px;color:var(--hh-text-3)}
.hh-map-sugg li:hover,.hh-map-sugg li[aria-selected="true"]{background:rgba(96,179,253,.14)}
.hh-map-field{display:flex;flex-direction:column;gap:4px;font-size:12px;color:var(--hh-text-3);flex:1 1 140px;max-width:100%;min-width:0}
.hh-select{appearance:none;-webkit-appearance:none;font:inherit;font-size:14px;color:var(--hh-text);min-height:42px;width:100%;max-width:100%;min-width:0;padding:9px 34px 9px 14px;border-radius:12px;border:1px solid var(--hh-line);cursor:pointer;color-scheme:dark;
  background:rgba(255,255,255,.07) url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='8' viewBox='0 0 12 8'%3E%3Cpath d='M1 1.5l5 5 5-5' fill='none' stroke='%23BAC2CE' stroke-width='1.6' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E") no-repeat right 12px center}
.hh-select option{background:#10161E;color:#F4F7FB}
.hh-select:focus-visible{outline:2px solid var(--hh-focus);outline-offset:2px}
.hh-map-viewseg{margin-left:auto}
.hh-map-live{margin:2px 2px 12px;font-size:13px;color:var(--hh-text-3)}

.hh-map-stage{position:relative;height:clamp(560px,calc(100vh - 170px),860px);padding-bottom:30px}
.hh-map-frame{position:absolute;inset:0 0 30px 0}
.hh-map-box{position:absolute;inset:0;border-radius:var(--hh-r);overflow:hidden;border:1px solid var(--hh-line);isolation:isolate;
  background:radial-gradient(90% 80% at 50% 45%,#0C2748 0%,#07131F 55%,#05090E 100%);box-shadow:0 30px 70px -26px rgba(0,60,120,.55),inset 0 1px 0 rgba(255,255,255,.12)}
.hh-map-box[hidden],.hh-map-list[hidden]{display:none}
.hh-map-box::before{content:"";position:absolute;inset:0;z-index:0;pointer-events:none;opacity:.7;
  background-image:radial-gradient(1px 1px at 12% 18%,#fff,transparent),radial-gradient(1px 1px at 28% 72%,#CFE6FB,transparent),radial-gradient(1.2px 1.2px at 46% 9%,#fff,transparent),radial-gradient(1px 1px at 63% 83%,#CFE6FB,transparent),radial-gradient(1.2px 1.2px at 81% 24%,#fff,transparent),radial-gradient(1px 1px at 92% 66%,#CFE6FB,transparent),radial-gradient(1px 1px at 7% 52%,#fff,transparent),radial-gradient(1px 1px at 74% 47%,#fff,transparent),radial-gradient(1px 1px at 38% 40%,#CFE6FB,transparent),radial-gradient(1px 1px at 55% 61%,#fff,transparent)}
.hh-mapview .hh-map-canvas{position:absolute!important;inset:0;width:100%;height:100%;z-index:1;outline:none}
.hh-map-canvas .maplibregl-canvas{outline:none}
.hh-map-canvas .maplibregl-canvas:focus-visible{outline:2px solid var(--hh-focus);outline-offset:-4px}
.hh-map-loading{position:absolute;inset:0;z-index:3;display:flex;align-items:center;justify-content:center;gap:12px;color:var(--hh-text-2);font-size:14px;background:rgba(5,9,14,.55);pointer-events:none}
.hh-map-loading[hidden]{display:none}
.hh-map-spinner{width:18px;height:18px;border-radius:50%;border:2px solid rgba(96,179,253,.25);border-top-color:var(--hh-blue-light);animation:hh-spin 1s linear infinite}
@keyframes hh-spin{to{transform:rotate(360deg)}}
.hh-map-tip{position:absolute;left:0;top:0;z-index:6;display:flex;flex-direction:column;gap:2px;max-width:260px;padding:9px 12px;border-radius:12px;pointer-events:none;font-size:13px;background:rgba(14,19,26,.92);border:1px solid var(--hh-line);box-shadow:0 14px 36px rgba(0,0,0,.5);opacity:0;transition:opacity .15s}
.hh-map-tip.is-on{opacity:1}
.hh-map-tip span{font-size:12px;color:var(--hh-text-3)}
.hh-map-tools{position:absolute;left:52px;top:10px;z-index:5;display:flex;gap:8px;flex-wrap:wrap;max-width:calc(100% - 64px)}
.hh-map-tool{appearance:none;font:inherit;font-size:13px;font-weight:500;color:var(--hh-text);padding:7px 14px;min-height:34px;border-radius:999px;cursor:pointer;background:rgba(14,19,26,.78);border:1px solid var(--hh-line);-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px);transition:background .25s,border-color .25s}
.hh-map-tool:hover{background:rgba(30,45,64,.9);border-color:rgba(96,179,253,.45)}
.hh-map-tool:focus-visible{outline:2px solid var(--hh-focus);outline-offset:2px}
.hh-map-tool[aria-pressed="false"]{border-color:rgba(96,179,253,.5)}
.hh-map-legend{position:absolute;left:12px;bottom:12px;z-index:4;list-style:none;margin:0;padding:10px 14px;display:grid;gap:5px;max-width:min(330px,calc(100% - 24px));border-radius:14px;font-size:12px;color:var(--hh-text-2);background:rgba(10,14,20,.72);border:1px solid var(--hh-line-soft);-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px)}
.hh-map-legend li{display:flex;align-items:center;gap:10px}
.hh-lg{flex:none;position:relative;width:14px;height:14px;border-radius:50%;display:inline-block}
.hh-lg--active{background:#EAF6FF;box-shadow:0 0 0 2px var(--hh-blue-light),0 0 10px var(--hh-blue-light)}
.hh-lg--quiet{background:transparent;box-shadow:0 0 0 2px var(--hh-warn);width:12px;height:12px}
.hh-lg--unv{background:#EAF6FF;width:8px;height:8px;margin:0 3px;box-shadow:0 0 0 2px var(--hh-blue-light),0 0 0 5px rgba(10,14,20,.9),0 0 0 6px rgba(255,255,255,.75)}
.hh-lg--cl{background:#0B3A6B;box-shadow:0 0 0 2px var(--hh-blue-light),0 0 12px rgba(96,179,253,.7)}
.hh-map-attrib{position:absolute;left:4px;right:4px;bottom:4px;font-size:11.5px;line-height:1.35;color:var(--hh-text-3)}
.hh-map-attrib a{color:var(--hh-text-2);text-underline-offset:2px}
.hh-map-attrib a:hover{color:var(--hh-text)}
.hh-map-attrib[hidden]{display:none}
.hh-map-note{position:absolute;left:50%;top:56px;transform:translateX(-50%);z-index:5;max-width:min(560px,calc(100% - 28px));padding:10px 16px;border-radius:14px;font-size:13px;text-align:center;color:var(--hh-text);background:rgba(20,28,38,.94);border:1px solid rgba(246,193,119,.4)}
.hh-map-note[hidden]{display:none}
/* MapLibre controls, restyled to the glass look */
.hh-mapview .maplibregl-ctrl-group{background:rgba(14,19,26,.78);border:1px solid var(--hh-line);border-radius:14px;box-shadow:none;-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px);overflow:hidden}
.hh-mapview .maplibregl-ctrl-group button{width:34px;height:34px;background-color:transparent}
.hh-mapview .maplibregl-ctrl-group button+button{border-top:1px solid var(--hh-line-soft)}
.hh-mapview .maplibregl-ctrl button .maplibregl-ctrl-icon{filter:invert(1) brightness(1.6)}
.hh-mapview .maplibregl-ctrl-globe .maplibregl-ctrl-icon,.hh-mapview .maplibregl-ctrl-globe-enabled .maplibregl-ctrl-icon{filter:none}
.hh-mapview .maplibregl-ctrl-group button:hover{background-color:rgba(96,179,253,.18)}
.hh-mapview .maplibregl-ctrl-group button:focus-visible{outline:2px solid var(--hh-focus);outline-offset:-2px}
.hh-mapview .maplibregl-ctrl-top-left{top:4px;left:4px}

/* location panel: right side card on desktop, bottom sheet on phones */
.hh-map-panel{position:absolute;z-index:8;top:12px;right:12px;bottom:12px;width:min(400px,calc(100% - 24px));display:flex;flex-direction:column;border-radius:22px;overflow:hidden;outline:none;
  background:linear-gradient(160deg,rgba(24,34,48,.94),rgba(11,16,23,.96));border:1px solid rgba(96,179,253,.28);box-shadow:0 30px 80px rgba(0,0,0,.6),0 0 0 1px rgba(0,0,0,.2),inset 0 1px 0 rgba(255,255,255,.14);
  -webkit-backdrop-filter:blur(22px) saturate(160%);backdrop-filter:blur(22px) saturate(160%);
  opacity:0;transform:translateX(28px);transition:opacity .35s var(--hh-ease),transform .45s var(--hh-ease)}
.hh-map-panel[hidden]{display:none}
.hh-map-panel.is-open{opacity:1;transform:none}
.hh-mp-body{flex:1 1 auto;min-height:0;overflow-y:auto;overscroll-behavior:contain;padding:18px 20px 16px;display:flex;flex-direction:column;gap:12px;-webkit-overflow-scrolling:touch}
.hh-mp-footbar{flex:none;display:flex;flex-wrap:wrap;gap:10px;padding:12px 20px 16px;border-top:1px solid var(--hh-line-soft);background:rgba(8,12,18,.55)}
.hh-mp-close{position:absolute;top:12px;right:12px;z-index:2;width:34px;height:34px;border-radius:50%;display:inline-flex;align-items:center;justify-content:center;cursor:pointer;color:var(--hh-text);background:rgba(255,255,255,.1);border:1px solid var(--hh-line)}
.hh-mp-close:hover{background:rgba(255,255,255,.18)}
.hh-mp-close:focus-visible{outline:2px solid var(--hh-focus);outline-offset:2px}
.hh-mp-grab{display:none}
.hh-mp-top{padding-right:40px}
.hh-mp-name{font-size:22px!important;letter-spacing:-.02em!important;line-height:1.15}
.hh-mp-city{font-size:14px;color:var(--hh-text-2);margin-top:2px}
.hh-mp-chips{display:flex;flex-wrap:wrap;gap:8px;margin-top:12px;align-items:center}
.hh-mp-last{font-size:13px;color:var(--hh-text-3);margin-top:10px}
.hh-mp-warn{margin-top:10px!important;padding:10px 12px;border-radius:12px;font-size:12.5px;line-height:1.45;color:#FFE2A8;background:rgba(246,193,119,.1);border:1px solid rgba(246,193,119,.35)}
.hh-vbadge{display:inline-flex;align-items:center;gap:6px;padding:3px 10px 3px 8px;border-radius:999px;font-size:12.5px;font-weight:600;white-space:nowrap}
.hh-vbadge::before{content:"";width:8px;height:8px;border-radius:50%;flex:none}
.hh-vbadge.is-ok{color:var(--hh-text);background:rgba(96,179,253,.14)}
.hh-vbadge.is-ok::before{background:var(--hh-blue-light);box-shadow:0 0 8px var(--hh-blue-light)}
.hh-vbadge.is-no{color:#FFE2A8;background:rgba(246,193,119,.12)}
.hh-vbadge.is-no::before{background:transparent;border:2px solid #fff}
.hh-mp-kpis{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px}
.hh-mp-kpi{display:flex;flex-direction:column;gap:3px;padding:12px;border-radius:14px;background:rgba(255,255,255,.05);border:1px solid var(--hh-line-soft);min-width:0}
.hh-mp-kpi-l{font-size:11.5px;color:var(--hh-text-3);line-height:1.25}
.hh-mp-kpi b{font-size:clamp(20px,2vw,26px);font-weight:300;letter-spacing:-.035em;line-height:1.1;font-variant-numeric:tabular-nums;overflow-wrap:anywhere}
.hh-mp-kpi b small{font-size:11px;font-weight:500;color:var(--hh-text-3);margin-left:4px;letter-spacing:0}
.hh-mp-na{font-size:14px;font-weight:500;color:var(--hh-text-3)}
.hh-mp-range{font-size:12.5px;color:var(--hh-text-3);margin-top:-6px}
.hh-mp-range .hh-badge{margin-left:4px;vertical-align:middle}
.hh-mp-est{padding:12px 14px;border-radius:16px;background:linear-gradient(160deg,rgba(0,86,163,.22),rgba(96,179,253,.06));border:1px solid rgba(96,179,253,.25)}
.hh-mp-est .hh-estimate-value{font-size:34px}
.hh-mp-est .hh-disclaimer{margin-top:10px;font-size:12px;line-height:1.45;color:var(--hh-text-2)}
.hh-mp-h{font-family:var(--hh-font-head);font-size:13px!important;letter-spacing:.02em!important;color:var(--hh-text-2);margin:0 0 10px!important;font-weight:700}
.hh-mp-carriers{gap:12px;margin:0}
.hh-mp-carriers .hh-carrier{grid-template-columns:minmax(84px,110px) 1fr auto;gap:8px 12px}
.hh-mp-carriers .hh-carrier-name{font-size:14px}
.hh-mp-carriers .hh-carrier-gb{font-size:18px;min-width:6ch}
.hh-mp-fill{display:block;height:100%;width:calc(var(--w,0)*1%);border-radius:inherit;background:linear-gradient(90deg,rgba(255,255,255,.38),rgba(255,255,255,.62));transform-origin:left;animation:hh-grow 1.6s var(--hh-ease) both}
.hh-mp-foot{margin-top:12px!important;padding-top:10px!important;font-size:11.5px!important}
.hh-mp-chart{min-height:108px}
.hh-mp-src{font-size:11.5px;color:var(--hh-text-3)}
.hh-mp-body .hh-sec,.hh-mp-sec{min-width:0}

/* list view */
.hh-map-list{position:absolute;inset:0;overflow:auto;padding:var(--hh-pad);border-radius:var(--hh-r);border:1px solid var(--hh-line);background:linear-gradient(155deg,rgba(255,255,255,.08),rgba(255,255,255,.03) 55%,rgba(96,179,253,.04));overscroll-behavior:contain}
.hh-th-btn{appearance:none;background:none;border:0;color:inherit;font:inherit;letter-spacing:inherit;cursor:pointer;padding:4px 2px;border-radius:6px}
.hh-th-btn:hover{color:var(--hh-text)}
.hh-th-btn:focus-visible{outline:2px solid var(--hh-focus);outline-offset:2px}
th[aria-sort="ascending"] .hh-th-btn::after{content:" \25B2";font-size:9px}
th[aria-sort="descending"] .hh-th-btn::after{content:" \25BC";font-size:9px}
th[aria-sort="ascending"],th[aria-sort="descending"]{color:var(--hh-text)}
.hh-map-rowbtn{appearance:none;display:block;text-align:left;background:none;border:0;padding:4px 6px;margin:-4px -6px;border-radius:10px;font:inherit;color:inherit;cursor:pointer}
.hh-map-rowbtn:hover .hh-ap-name{color:var(--hh-blue-light);text-decoration:underline}
.hh-map-rowbtn:focus-visible{outline:2px solid var(--hh-focus);outline-offset:2px}
.hh-map-table tr.is-sel{background:rgba(96,179,253,.1)}
.hh-map-empty{padding:28px 10px!important;text-align:center;color:var(--hh-text-3)}
.hh-map-more{margin-top:16px}
.hh-map-more[hidden]{display:none}
.hh-map-stage[data-view="list"] .hh-map-panel{top:12px;bottom:12px}

/* flat fallback (no WebGL) */
.hh-map-canvas.is-flat{cursor:grab;touch-action:none;background:radial-gradient(90% 80% at 50% 45%,#0C2748,#07131F)}
.hh-fm-svg{position:absolute;inset:0;width:100%;height:100%;background:#0A2342}
.hh-fm-land{fill:#111B28;stroke:#4FA3E8;stroke-opacity:.55;stroke-width:.9;vector-effect:non-scaling-stroke}
.hh-fm-border{fill:none;stroke:#60B3FD;stroke-opacity:.3;stroke-width:.7;vector-effect:non-scaling-stroke}
.hh-fm-pts{position:absolute;inset:0;overflow:hidden}
.hh-fm-pt,.hh-fm-cl{position:absolute;transform:translate(-50%,-50%);appearance:none;cursor:pointer;border-radius:50%;padding:0;font:inherit}
.hh-fm-pt{width:18px;height:18px;background:#EAF6FF;border:2.5px solid var(--hh-blue-light);box-shadow:0 0 14px rgba(96,179,253,.8)}
.hh-fm-pt.is-quiet{background:#0A0C0F;border-color:var(--hh-warn);box-shadow:0 0 12px rgba(245,194,107,.5)}
.hh-fm-pt.is-unv{outline:1.5px solid rgba(255,255,255,.8);outline-offset:3px}
.hh-fm-pt.is-sel{width:24px;height:24px;box-shadow:0 0 0 4px rgba(96,179,253,.35),0 0 22px rgba(96,179,253,.9)}
.hh-fm-cl{background:#0B3A6B;border:2px solid var(--hh-blue-light);color:#fff;font-size:13px;font-weight:700;box-shadow:0 0 20px rgba(96,179,253,.55)}
.hh-fm-pt:focus-visible,.hh-fm-cl:focus-visible{outline:2px solid #fff;outline-offset:3px}
.hh-fm-zoom{position:absolute;left:10px;top:10px;display:flex;flex-direction:column;border-radius:14px;overflow:hidden;border:1px solid var(--hh-line);background:rgba(14,19,26,.8);z-index:3}
.hh-fm-zoom button{appearance:none;width:34px;height:34px;border:0;background:transparent;color:var(--hh-text);font-size:18px;cursor:pointer}
.hh-fm-zoom button+button{border-top:1px solid var(--hh-line-soft)}
.hh-fm-zoom button:focus-visible{outline:2px solid var(--hh-focus);outline-offset:-2px}
.hh-mapview[data-mode="flat"] .hh-map-tools{left:56px}

/* focus banner on the Overview after "Open full details" */
.hh-focus{display:flex;flex-wrap:wrap;gap:14px 26px;align-items:center;margin:0 0 var(--hh-gap);padding:16px var(--hh-pad)}
.hh-focus[hidden]{display:none}
.hh-focus-main{flex:1 1 260px;min-width:0}
.hh-focus-name{font-family:var(--hh-font-head);font-weight:700;font-size:20px;letter-spacing:-.02em}
.hh-focus-sub{font-size:13px;color:var(--hh-text-3);margin-top:2px}
.hh-focus-stats{display:flex;gap:22px;flex-wrap:wrap}
.hh-focus-stats div{display:flex;flex-direction:column;font-size:12px;color:var(--hh-text-3)}
.hh-focus-stats b{font-size:24px;font-weight:300;letter-spacing:-.03em;color:var(--hh-text);font-variant-numeric:tabular-nums}
.hh-focus-actions{display:flex;gap:10px;flex-wrap:wrap}
.hh-focus .hh-disclaimer{flex:1 1 100%;margin:0}

@media (max-width:1100px){
  .hh-map-strip{grid-template-columns:repeat(3,minmax(0,1fr))}
  .hh-map-stage{height:clamp(520px,calc(100vh - 340px),760px)}
}
@media (max-width:640px){
  html[data-view="map"] .hh-top{position:static}
  .hh-nav{order:10;flex:1 1 100%;display:flex}
  .hh-nav a{flex:1;justify-content:center}
  .hh-map-strip{grid-template-columns:repeat(2,minmax(0,1fr))}
  .hh-map-search{flex:1 1 100%;max-width:none}
  .hh-map-field{flex:1 1 calc(50% - 6px)}
  .hh-map-field .hh-select{width:100%}
  .hh-map-viewseg{margin-left:0;flex:1 1 100%}
  .hh-map-viewseg button{flex:1}
  .hh-map-stage{height:min(78vh,700px);min-height:520px}
  .hh-map-legend{padding:8px 12px;font-size:11.5px;gap:4px}
  .hh-map-legend li:nth-child(4){display:none}
  .hh-map-stage.has-panel .hh-map-legend{display:none}
  .hh-map-tools{left:48px;max-width:calc(100% - 56px)}
  .hh-map-tool{padding:6px 11px}
  .hh-map-panel{top:auto;left:0;right:0;bottom:0;width:auto;max-height:80%;border-radius:22px 22px 0 0;transform:translateY(105%)}
  .hh-map-panel.is-open{transform:none}
  .hh-mp-grab{display:block;flex:none;width:42px;height:5px;border-radius:5px;background:rgba(255,255,255,.28);margin:9px auto 0}
  .hh-mp-body{padding:14px 16px 14px}
  .hh-mp-footbar{padding:10px 16px calc(12px + env(safe-area-inset-bottom))}
  .hh-mp-close{top:12px}
  .hh-mp-kpis{gap:8px}
  .hh-mp-kpi{padding:10px}
  .hh-map-table.hh-table td.hh-cell-main{display:block}
  .hh-map-list{padding:14px}
  .hh-focus-stats{gap:16px}
}
@media (prefers-reduced-motion:reduce){
  .hh-map-panel,.hh-map-tip,.hh-map-tool,.hh-map-input{transition:none!important}
  .hh-map-panel{transform:none}
  .hh-map-spinner{animation:none}
  .hh-mp-fill{animation:none}
}
@media (forced-colors:active){
  .hh-map-box,.hh-map-panel,.hh-map-list,.hh-map-tool,.hh-map-legend,.hh-nav{border:1px solid CanvasText}
}
@supports not ((-webkit-backdrop-filter:blur(1px)) or (backdrop-filter:blur(1px))){
  .hh-map-panel{background:#141C27}.hh-map-tool,.hh-map-legend{background:#10161E}
}
@media (prefers-reduced-transparency:reduce){
  .hh-map-panel{background:#141C27;-webkit-backdrop-filter:none;backdrop-filter:none}
}
