/* Console-only refinements for the existing analytical explorer.
   Loaded after the export styles: scoring colours keep their meaning while
   navigation and surfaces share the console's visual system. */
body.gvc {
  --ink: #152641;
  --ink-2: #34445e;
  --muted: #5b6b82;
  --bg-soft: #f4f7fb;
  --line: #dce6f1;
  --radius: 24px;
}
/* The assistant attaches to body, outside the explorer's containing block. */
body.gvc .gv-ai-fab,body.gvc .gv-ai-send{background:#136cfc;box-shadow:0 6px 24px #136cfc26}
body.gvc .gv-ai-panel{border-radius:24px;box-shadow:0 20px 70px #15264126;font-family:inherit}
body.gvc .gv-ai-head{background:#f4f7fb;color:#152641}
body.gvc .gv-ai-close{color:#152641;min-height:44px;min-width:44px}
.gvc-explorer .gv-tab-panel.is-active{animation:gvc-enter .35s var(--ease) both}

.gvc-explorer {
  --gv-bg: #f4f7fb;
  --gv-ink: #152641;
  --gv-mid: #5b6b82;
  --gv-line: #dce6f1;
  --gv-topbar: 72px;
  --red: #e42544;
  --gv-red: #e42544;
  --ui-blue: #136cfc;
  --ui-blue-soft: #e8f4fc;
  height: calc(100vh - var(--topbar-h, 64px));
  height: calc(100dvh - var(--topbar-h, 64px));
  min-height: 480px;
  font-family: Figtree,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;
  font-variant-numeric: tabular-nums;
  isolation: isolate;
}
.gvc-explorer button, .gvc-explorer input, .gvc-explorer select { font-family: inherit; }
.gvc-explorer :is(button, a, input, select):focus-visible {
  outline: 3px solid #136cfc;
  outline-offset: 3px;
}
.gvc-explorer .gv-workspace { overflow-y: auto; }
.gvc-explorer .gv-workspace__main { max-width: 1240px; padding: 52px 40px 72px; }
.gvc-explorer .gv-page-title { font-size: clamp(32px, 4vw, 48px); font-weight: 650; letter-spacing: -.045em; margin-bottom: 24px; }
.gvc-explorer .gv-filter-tabs { gap: 6px; flex-wrap: wrap; }
.gvc-explorer .gv-pill { min-height: 44px; padding: 10px 20px; }
.gvc-explorer .gv-projects { grid-template-columns: repeat(auto-fit, minmax(min(280px, 100%), 1fr)); gap: 24px; }
.gvc-explorer .gv-project-tile { max-width: none; border-radius: 26px; box-shadow: 0 6px 24px #15264105; }
.gvc-explorer .gv-project-thumb { height: 180px; }
.gvc-explorer .gv-project-body { padding: 22px 24px 26px; }
.gvc-explorer .gv-project-name { font-size: 20px; letter-spacing: -.02em; }
.gvc-explorer .gv-project-tile:hover { transform: translateY(-4px); box-shadow: 0 14px 34px #1526410e; }

.gvc-explorer .gv-topbar {
  background: rgba(255,255,255,.92);
  backdrop-filter: blur(24px) saturate(140%);
  -webkit-backdrop-filter: blur(24px) saturate(140%);
  padding: 12px 24px;
  gap: 16px;
}
.gvc-explorer .gv-portfolio__bar { box-shadow: 0 1px 0 #15264108; }
.gvc-explorer .gv-project-pill { min-width: 0; max-width: 260px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.gvc-explorer a.gv-project-pill--switch { min-height: 44px; padding: 9px 14px; border-radius: 14px; }
.gvc-explorer .gv-search { min-width: 0; max-width: 560px; height: 46px; border-radius: 14px; background: #f4f7fb; }
.gvc-explorer .gv-search:focus-within { border-color: #136cfc; box-shadow: 0 0 0 3px #136cfc18; }
.gvc-explorer .gv-search input { min-width: 0; width: 100%; font-size: 14px; }
.gvc-explorer .gv-search select { max-width: 150px; font-size: 12px; }
.gvc-explorer .gv-search input:focus-visible, .gvc-explorer .gv-search select:focus-visible { outline-offset: 0; }
.gvc-explorer .gv-viewmode { border: 1px solid #dce6f1; padding: 3px; border-radius: 14px; }
.gvc-explorer .gv-viewmode button { min-height: 38px; border-radius: 10px; font-size: 13px; }
.gvc-explorer .gv-viewmode button.is-on { box-shadow: 0 2px 6px #15264112; }
.gvc-explorer .gv-site-list { top: calc(var(--gv-topbar) + 20px); left: 20px; bottom: 20px; width: 336px; gap: 14px; padding: 3px 5px 12px 3px; }
.gvc-explorer .gv-site-card { border-radius: 22px; box-shadow: 0 4px 16px #1526410c; }
.gvc-explorer .gv-site-card.is-active, .gvc-explorer .gv-site-card.is-hover { outline-color: var(--ui-blue); }
.gvc-explorer .gv-site-card.is-hover { box-shadow: 0 8px 24px #136cfc24; }
.gvc-explorer .gv-site-photo { height: 108px; }
.gvc-explorer .gv-site-card__body { padding: 15px 17px 18px; }
.gvc-explorer .gv-site-card__name { font-size: 16px; font-weight: 650; letter-spacing: -.015em; }
.gvc-explorer .gv-site-card__row { align-items: start; }
.gvc-explorer .gv-site-card__occ { font-size: 13px; }
.gvc-explorer .gv-star { width: 44px; height: 44px; top: 8px; right: 8px; }
.gvc-explorer .gv-opp-pill { padding: 4px 9px; border-radius: 8px; }
.gvc-explorer :is(.gv-mapmode, .gv-evlegend) { border-radius: 16px; padding: 8px; background: rgba(255,255,255,.94); backdrop-filter: blur(20px); box-shadow: 0 4px 20px #15264114; }
.gvc-explorer .gv-mapmode button { min-height: 38px; padding: 8px 12px; border-radius: 10px; }
.gvc-explorer .gv-mapmode button.is-on { background: var(--ui-blue); }
.gvc-explorer .gv-evlegend { bottom: 92px; padding: 12px 14px; }
.gvc-explorer .gv-spectrum { background: #f4f7fb; gap: 22px; padding: calc(var(--gv-topbar) + 24px) 28px 28px; }
.gvc-explorer .gv-spectrum__filters { gap: 10px; }
.gvc-explorer .gv-spec-dim__label { text-transform: none; letter-spacing: 0; font-size: 13px; }
.gvc-explorer .gv-spec-chip { min-height: 38px; padding: 7px 13px; font-size: 12px; }
.gvc-explorer .gv-spec-chip.is-on { background: var(--ui-blue); border-color: var(--ui-blue); }
.gvc-explorer .gv-spectrum__stage { border-radius: 24px; padding: 20px; overflow-x: auto; }
.gvc-explorer .gv-spectrum__stage svg { min-width: 580px; }
.gvc-explorer .gv-spectrum__export { background: var(--ui-blue); min-height: 44px; padding: 10px 20px; border-radius: 999px; }

.gvc-explorer .gv-detail__bar { color: var(--gv-ink); border-bottom: 1px solid var(--gv-line); }
.gvc-explorer .gv-detail__bar .gv-logo { display: none; }
.gvc-explorer .gv-back { width: 44px; height: 44px; border-radius: 50%; background: #f4f7fb; border: 1px solid #dce6f1; color: var(--gv-ink); }
.gvc-explorer .gv-back:hover { background: #e8f4fc; color: var(--ui-blue); }
.gvc-explorer .gv-detail__title { flex: 1; gap: 12px; }
.gvc-explorer .gv-detail__name { color: var(--gv-ink); font-size: 21px; font-weight: 650; letter-spacing: -.025em; overflow: hidden; text-overflow: ellipsis; line-height: 1.3; }
.gvc-explorer .gv-detail__pc { color: var(--gv-mid); }
.gvc-explorer .gv-detail__title .gv-badge { color: #34445e; background: #f0f0f3; }
.gvc-explorer .gv-breadcrumb { color: var(--gv-mid); font-size: 12px; max-width: 30%; overflow: hidden; text-overflow: ellipsis; }
.gvc-explorer .gv-detail__split { min-width: 0; }
.gvc-explorer .gv-detail__maps, .gvc-explorer .gv-detail__tiles { width: 50%; min-width: 0; }
.gvc-explorer .gv-detail__tiles { background: #f4f7fb; }
.gvc-explorer .gv-tabs { gap: 4px; padding: 16px 20px; background: #f4f7fb; border: 0; }
.gvc-explorer .gv-tab { flex: 1; min-width: 0; min-height: 44px; padding: 10px 12px; border-radius: 12px; font-size: 14px; transition: background .18s, color .18s, box-shadow .18s; }
.gvc-explorer .gv-tab.is-active { color: var(--gv-ink); background: #fff; box-shadow: 0 2px 8px #1526410c; }
.gvc-explorer .gv-tab:hover:not(.is-active) { background: #ebebee; }
.gvc-explorer .gv-tile-panel { padding: 4px 20px 28px; gap: 20px; scroll-behavior: smooth; }
.gvc-explorer .gv-tab-panel { gap: 20px; min-width: 0; }
.gvc-explorer .gv-tile { min-width: 0; padding: 24px; border-radius: 26px; border-color: #e8e8ed; box-shadow: 0 4px 18px #15264104; }
.gvc-explorer .gv-tile--dark { background: #152641; border-color: #152641; }
.gvc-explorer .gv-tile--dark .gv-top3__score { color: #152641; }
.gvc-explorer .gv-tile__title, .gvc-explorer .gv-tile-panel.is-opp .gv-tile__title { font-size: 19px; font-weight: 650; letter-spacing: -.025em; line-height: 1.3; }
.gvc-explorer .gv-tile__hint { font-size: 13px; line-height: 1.55; margin-top: 8px; }
.gvc-explorer .gv-tile__expand { width: auto; min-width: 88px; height: 36px; top: 15px; right: 15px; border-radius: 10px; font-size: 12px; }
.gvc-explorer .gv-tile--expandable .gv-tile__title { padding-right: 100px; }
.gvc-explorer .gv-tile.is-expanded { position: relative; inset: auto; border-radius: 26px; padding: 24px; box-shadow: 0 4px 18px #15264104; }
.gvc-explorer .gv-stat-blocks { gap: 10px; }
.gvc-explorer .gv-stat { min-width: 0; padding: 16px 12px; background: #f4f7fb; border: none; border-radius: 16px; }
.gvc-explorer .gv-stat__num { font-size: clamp(21px, 2.3vw, 30px); font-weight: 650; }
.gvc-explorer .gv-stat__lab { font-size: 12px; line-height: 1.5; }
.gvc-explorer .gv-kv { font-size: 14px; gap: 20px; padding: 12px 0; }
.gvc-explorer .gv-kv__v { overflow-wrap: anywhere; }
.gvc-explorer .gv-localarea__img { height: 180px; border-radius: 17px; }
.gvc-explorer .gv-localarea__txt { font-size: 14px; line-height: 1.65; }
.gvc-explorer .persona { border-radius: 19px; }
.gvc-explorer .persona__head { padding: 18px 18px 10px; }
.gvc-explorer .persona__name { font-size: 15px; letter-spacing: -.01em; }
.gvc-explorer .persona__blurb { font-size: 13px; line-height: 1.6; padding: 0 18px 18px; }
.gvc-explorer .persona__panel { padding: 0 18px 20px; }
.gvc-explorer .persona__grading { font-size: 10px; letter-spacing: .01em; text-transform: none; }
.gvc-explorer .gv-clbtn, .gvc-explorer .competition-cat-btn { min-height: 44px; padding: 8px 14px; }
.gvc-explorer .gv-clbtn.is-active { background: var(--ui-blue); border-color: var(--ui-blue); }
.gvc-explorer .gv-cluster-modelabel, .gvc-explorer .demand-analysis__top-label { font-size: 12px; text-transform: none; letter-spacing: 0; }
.gvc-explorer .demand-analysis, .gvc-explorer .demand-detail { border-radius: 18px; }
.gvc-explorer .gv-tile .demand-analysis { background: #f4f7fb; border-color: transparent; }
.gvc-explorer .gv-tile .demand-analysis .demand-toplist__item.is-active { background: var(--ui-blue-soft); }
.gvc-explorer .demand-toplist__item { padding: 11px 8px; }
.gvc-explorer .demand-toplist__name { min-width: 0; }
.gvc-explorer .gv-pol-item { border-radius: 16px; }
.gvc-explorer .gv-pol-item__head { min-height: 52px; padding: 14px 16px; background: #f4f7fb; }
.gvc-explorer .gv-pol-summary { font-size: 13px; line-height: 1.65; }
.gvc-explorer .gv-export { gap: 10px; margin-top: 22px; padding-top: 18px; }
.gvc-explorer .gv-export__btn { display: inline-flex; align-items: center; justify-content: center; min-height: 44px; border-radius: 12px; padding: 10px 14px; font-size: 12px; line-height: 1.5; }
.gvc-explorer .gv-poi-control { border-radius: 18px; padding: 12px; box-shadow: 0 4px 20px #15264114; }
.gvc-explorer .gv-poi-catbtn { min-height: 38px; }
.gvc-explorer .gv-poi-catbtn.is-active { background: var(--ui-blue); border-color: var(--ui-blue); }
.gvc-explorer .gv-ai-panel { border-radius: 24px; box-shadow: 0 20px 70px #15264126; }
.gvc-explorer .gv-ai-head { padding: 18px; background: #f4f7fb; color: var(--gv-ink); }
.gvc-explorer .gv-ai-close { color: var(--gv-ink); min-width: 44px; min-height: 44px; }
.gvc-explorer .gv-ai-send { background: var(--ui-blue); min-width: 44px; min-height: 44px; border-radius: 50%; }
.gvc-explorer .gv-ai-input { min-width: 0; }
.gvc-explorer .leaflet-control-zoom { border: 0; box-shadow: 0 4px 20px #15264114; border-radius: 13px; overflow: hidden; }
.gvc-explorer .leaflet-control-zoom a { width: 42px; height: 42px; line-height: 42px; color: #34445e; }

/* Choropleth controls remain distinct from the values and colour schemes. */
.gvm { grid-template-columns: 324px minmax(0, 1fr); height: calc(100dvh - var(--topbar-h, 64px)); min-height: 540px; padding: 20px; gap: 20px; background: #f4f7fb; }
.gvm-panel { border: 1px solid #dce6f1; border-radius: 24px; overflow: hidden; box-shadow: 0 4px 20px #15264104; }
.gvm-panel__scroll { padding: 24px 20px 32px; overscroll-behavior: contain; }
.gvm-panel__heading { font-size: 25px; font-weight: 650; line-height: 1.2; letter-spacing: -.035em; margin-bottom: 8px; }
.gvm-panel__intro { font-size: 13px; line-height: 1.55; color: #5b6b82; margin-bottom: 28px; }
.gvm-map { border: 1px solid #dce6f1; border-radius: 24px; overflow: hidden; background: #e8edf0; }
.gvm-block { padding-bottom: 24px; margin-bottom: 24px; }
.gvm-label { font-size: 13px; color: #34445e; text-transform: none; letter-spacing: 0; margin-bottom: 10px; }
.gvm-note { font-size: 12px; line-height: 1.55; }
.gvm select, .gvm input[type=search], .gvm input[type=number], .gvm input[type=text] { min-width: 0; min-height: 44px; padding: 10px 12px; border-radius: 12px; font-size: 13px; }
.gvm :is(select, input):focus-visible { outline: 3px solid #136cfc24; border-color: #136cfc; }
.gvm-search button { min-height: 44px; padding: 10px 17px; border-radius: 12px; background: #136cfc; border-color: #136cfc; }
.gvm-search button:hover { background: #2a7bfd; }
.gvm-mini { width: 44px; height: 44px; border-radius: 12px; }
.gvm-row { gap: 8px; }
.gvm-swatchrow { min-height: 42px; gap: 10px; flex-wrap: wrap; }
.gvm-swatchrow input[type=color] { width: 38px; height: 32px; border-radius: 8px; }
.gvm-swatchrow input[type=number] { width: 82px; min-height: 38px; padding: 6px 8px; }
.gvm-cond { padding: 12px; border-radius: 16px; }
.gvm-cond__row { gap: 6px; }
.gvm-cond__row select { max-width: 82px; }
.gvm-readout { left: 384px; bottom: 40px; padding: 16px 18px; border-radius: 18px; background: rgba(255,255,255,.95); backdrop-filter: blur(20px); border-color: #dce6f1; box-shadow: 0 8px 30px #15264114; }
.gvm-readout .v { color: #152641; }
.gvm-flash { top: 36px; padding: 12px 20px; max-width: calc(100% - 48px); text-align: center; }
.gvc-invites .gvc-invite-form { max-width: 640px; }
.gvc-invites .gvc-invite-link { width: 100%; min-height: 48px; padding: 12px 16px; border: 1px solid var(--line-2); border-radius: 12px; font-family: var(--mono); font-size: 12px; background: #f4f7fb; }
.gvc-invites .gvc-project-grants { display: flex; flex-wrap: wrap; gap: 8px; }
.gvc-invites .gvc-project-grants label { display: flex; align-items: center; gap: 9px; min-height: 44px; padding: 9px 13px; border: 1px solid var(--line); border-radius: 12px; font-size: 14px; font-weight: 400; }
.gvc-invites .gvc-table-scroll { overflow-x: auto; }

@media (max-width: 1100px) {
  .gvc-explorer .gv-model-disclaimer { display: none; }
  .gvc-explorer .gv-topbar { gap: 12px; padding: 12px 18px; }
  .gvc-explorer .gv-project-pill { max-width: 160px; }
  .gvc-explorer .gv-avg-occ { display: none; }
  .gvc-explorer .gv-tabs { padding: 14px; }
  .gvc-explorer .gv-tab { padding: 10px 7px; font-size: 13px; }
  .gvc-explorer .gv-tile-panel { padding: 4px 14px 24px; }
  .gvc-explorer .gv-tile { padding: 22px 18px; }
  .gvc-explorer .gv-tile.is-expanded .demand-scores-layout { grid-template-columns: minmax(0, 1fr) !important; }
  .gvc-explorer .gv-tile.is-expanded .demand-detail { grid-column: 1 / -1; }
}

@media (max-width: 900px) {
  /* The scroll belongs to the whole detail panel on touch screens. Leaving
     both flex panes at 50% makes the tiles unreachable beneath the map. */
  .gvc-explorer .gv-detail__split { display: block; overflow-y: auto; overscroll-behavior: contain; scroll-behavior: smooth; }
  .gvc-explorer .gv-detail__maps { width: 100%; height: clamp(280px, 40vh, 400px); }
  .gvc-explorer .gv-detail__tiles { width: 100%; height: auto; border-left: none; }
  .gvc-explorer .gv-tile-panel { flex: none; overflow: visible; }
  .gvc-explorer .gv-tabs { position: sticky; top: 0; z-index: 20; background: rgba(245,245,247,.94); backdrop-filter: blur(20px); }
  .gvc-explorer .gv-breadcrumb { display: none; }
  .gvc-explorer .gv-detail__name { font-size: 19px; }
  .gvc-explorer .gv-tile.is-expanded .demand-scores-layout,
  .gvc-explorer .gv-tile.is-expanded#gv-competition-tile .demand-scores-layout,
  .gvc-explorer .gv-tile.is-expanded#gv-policy-tile .demand-scores-layout { grid-template-columns: 1fr !important; }
  .gvc-explorer .gv-tile.is-expanded .demand-radar-col { padding: 0; }
}

@media (max-width: 720px) {
  .gvc-explorer { min-height: 540px; }
  .gvc-explorer .gv-workspace__main { padding: 36px 20px 56px; }
  .gvc-explorer .gv-portfolio { --gv-topbar: 132px; }
  .gvc-explorer .gv-portfolio__bar { height: var(--gv-topbar); display: grid; grid-template-columns: minmax(0, 1fr) auto; gap: 8px; padding: 12px 16px; }
  .gvc-explorer .gv-project-pill { grid-row: 1; grid-column: 1; max-width: 100%; font-size: 13px; }
  .gvc-explorer .gv-viewmode { grid-row: 1; grid-column: 2; }
  .gvc-explorer .gv-viewmode button { padding: 7px 10px; min-height: 36px; }
  .gvc-explorer .gv-search { grid-row: 2; grid-column: 1 / -1; width: 100%; max-width: none; margin: 0; }
  .gvc-explorer .gv-search input { font-size: 16px; }
  .gvc-explorer .gv-search select { max-width: 115px; }
  .gvc-explorer .gv-site-list { top: auto; bottom: 26px; left: 12px; right: 12px; width: auto; height: 265px; display: flex; flex-direction: row; overflow-x: auto; overflow-y: hidden; padding: 4px 4px 12px; scroll-snap-type: x proximity; }
  .gvc-explorer .gv-site-card { width: min(282px, 80vw); flex: 0 0 min(282px, 80vw); scroll-snap-align: start; }
  .gvc-explorer .gv-site-card__body { padding: 13px 15px; }
  .gvc-explorer .gv-site-photo { height: 92px; }
  .gvc-explorer .gv-mapmode { bottom: 310px; right: 16px; }
  .gvc-explorer .gv-evlegend { bottom: 376px; right: 16px; }
  .gvc-explorer .gv-spectrum { padding: calc(var(--gv-topbar) + 18px) 16px 24px; }
  .gvc-explorer .gv-spec-dim { gap: 6px; }
  .gvc-explorer .gv-spec-dim__label { width: 100%; margin-bottom: 3px; }
  .gvc-explorer .gv-spectrum__stage { padding: 12px; }
  .gvc-explorer .gv-detail__bar { gap: 10px; padding: 12px 16px; }
  .gvc-explorer .gv-detail__title { flex-wrap: wrap; gap: 2px 8px; margin-left: 0; }
  .gvc-explorer .gv-detail__name { flex-basis: 100%; font-size: 17px; }
  .gvc-explorer .gv-detail__pc { font-size: 11px; }
  .gvc-explorer .gv-tile.is-expanded { position: relative; inset: auto; border-radius: 22px; padding: 24px 18px; }
  .gvc-explorer .gv-tile__title { font-size: 18px; }
  .gvc-explorer .gv-kv { font-size: 13px; gap: 12px; }
  .gvc-explorer .gv-stat-blocks { grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 7px; }
  .gvc-explorer .gv-stat { padding: 13px 9px; }
  .gvc-explorer .gv-stat__num { font-size: 23px; overflow-wrap: anywhere; }
  .gvc-explorer .gv-stat__lab { font-size: 11px; }
  .gvc-explorer .persona__head { gap: 10px; padding: 16px 14px 8px; flex-wrap: wrap; }
  .gvc-explorer .persona__grading { padding: 4px 7px; }
  .gvc-explorer .persona__blurb { padding: 0 14px 16px; }
  .gvc-explorer .gv-top3__name { font-size: 14px; min-width: 0; }
  .gvc-explorer .gv-top3 li { gap: 8px; }
  .gvc-explorer .gv-export__btn { width: 100%; }
  .gvc-explorer .gv-poi-control { max-width: min(280px, 70vw); }
  .gvc-explorer .gv-ai-panel { right: 12px; max-width: calc(100% - 24px); }
  .gvm { grid-template-columns: minmax(0, 1fr); grid-template-rows: minmax(330px, 48svh) auto; height: auto; min-height: 0; padding: 14px; gap: 14px; }
  .gvm-map { grid-row: 1; min-height: 330px; border-radius: 22px; }
  .gvm-panel { grid-row: 2; border-radius: 22px; }
  .gvm-panel__scroll { overflow: visible; padding: 24px 20px; }
  .gvm-panel__heading { font-size: 28px; }
  .gvm-block:last-child { padding-bottom: 0; margin-bottom: 0; }
  .gvm-readout { left: 28px; top: 28px; bottom: auto; max-width: calc(100% - 90px); }
  .gvm-flash { top: 28px; }
  .gvm select, .gvm input[type=search], .gvm input[type=number], .gvm input[type=text] { font-size: 16px; }
}

@media (prefers-reduced-motion: reduce) {
  .gvc-explorer *, .gvm * { scroll-behavior: auto !important; transition-duration: .01ms !important; animation-duration: .01ms !important; animation-iteration-count: 1 !important; }
}

/* ── Report layout: full-bleed map, floating analysis panel, folding header ──
   Desktop only. Below 901px the stacked layout above is kept: a floating panel
   over a phone-height map leaves room for neither. */
@media (min-width: 901px) {
  .gvc-explorer--report .gv-detail .gv-detail__maps { position: absolute; inset: 0; width: 100%; height: 100%; z-index: 0; isolation: isolate; }
  .gvc-explorer--report .gv-detail .gv-detail__tiles {
    position: absolute; top: 16px; right: 16px; bottom: 16px; width: min(48%, 780px); z-index: 5;
    border-radius: 24px; overflow: hidden; border: 1px solid #0000000d;
    background: rgba(245,245,247,.96); backdrop-filter: blur(18px); -webkit-backdrop-filter: blur(18px);
    box-shadow: 0 18px 50px #15264124, 0 2px 8px #1526410f;
    transition: transform .32s var(--ease), width .32s var(--ease), left .32s var(--ease);
  }
  .gvc-explorer--report .gv-detail[data-panel="collapsed"] .gv-detail__tiles { transform: translateX(calc(100% + 32px)); }
  .gvc-explorer--report .gv-detail[data-panel="full"] .gv-detail__tiles { width: auto; left: 16px; }
  .gvc-explorer--report .gv-tabs { align-items: center; }
  .gvc-explorer--report .gv-panel-ctl { display: inline-flex; gap: 4px; margin-left: 6px; flex: none; }
  .gvc-explorer--report .gv-panel-btn { width: 36px; height: 36px; border-radius: 10px; border: 0; background: transparent; color: var(--gv-mid); display: inline-flex; align-items: center; justify-content: center; cursor: pointer; }
  .gvc-explorer--report .gv-panel-btn:hover { background: #ebebee; color: var(--gv-ink); }
  .gvc-explorer--report .gv-panel-btn:focus-visible, .gvc-explorer--report .gv-panel-reopen:focus-visible, .gvc-explorer--report .gv-chrome-handle:focus-visible { outline: 2px solid var(--ui-blue, #136cfc); outline-offset: 2px; }
  .gvc-explorer--report .gv-panel-btn .gv-ic-shrink, .gvc-explorer--report .gv-detail[data-panel="full"] .gv-panel-btn .gv-ic-expand { display: none; }
  .gvc-explorer--report .gv-detail[data-panel="full"] .gv-panel-btn .gv-ic-shrink { display: block; }
  .gvc-explorer--report .gv-panel-reopen {
    position: absolute; top: 16px; right: 16px; z-index: 6; display: inline-flex; align-items: center; gap: 6px;
    padding: 10px 16px 10px 12px; border-radius: 999px; border: 0; cursor: pointer; font: inherit; font-size: 14px; font-weight: 600;
    color: #fff; background: #152641; box-shadow: 0 8px 24px #15264133;
    opacity: 0; pointer-events: none; transform: translateX(12px); transition: opacity .2s, transform .2s;
  }
  .gvc-explorer--report .gv-detail[data-panel="collapsed"] .gv-panel-reopen { opacity: 1; pointer-events: auto; transform: none; }
  /* Map controls on the right sit beside the panel, not under it. */
  .gvc-explorer--report .gv-detail-map .leaflet-right, .gvc-explorer--report .gv-detail-map .maplibregl-ctrl-top-right,
  .gvc-explorer--report .gv-detail-map .maplibregl-ctrl-bottom-right { right: var(--gv-panel-inset, 0px); transition: right .32s var(--ease); }

  /* Folding header. Both bars leave the flow and slide up; the 10px strip at
     the top edge, the handle or keyboard focus brings them back over the map. */
  body.gv-chrome-auto .gvc-topbar { position: fixed; left: 0; right: 0; top: 0; transform: translateY(-100%); transition: transform .25s var(--ease); }
  body.gv-chrome-auto.gv-chrome-open .gvc-topbar { transform: none; }
  body.gv-chrome-auto .gvc-explorer--report { min-height: 100vh; }
  body.gv-chrome-auto .gvc-explorer--report .gv-detail__bar { transform: translateY(-100%); transition: transform .25s var(--ease); background: rgba(255,255,255,.96); backdrop-filter: blur(18px); -webkit-backdrop-filter: blur(18px); box-shadow: 0 8px 24px #15264114; z-index: 700; }
  body.gv-chrome-auto.gv-chrome-open .gvc-explorer--report .gv-detail__bar { transform: translateY(var(--topbar-h)); }
  body.gv-chrome-auto .gvc-explorer--report .gv-detail__split { top: 0; }
  body.gv-chrome-auto .gvc-explorer--report .gv-chrome-zone { display: block; position: fixed; top: 0; left: 0; right: 0; height: 10px; z-index: 1001; }
  body.gv-chrome-auto .gvc-explorer--report .gv-chrome-handle {
    display: flex; position: fixed; top: 0; left: 50%; z-index: 1002; transform: translateX(-50%);
    width: 56px; height: 18px; align-items: center; justify-content: center; border: 0; cursor: pointer;
    border-radius: 0 0 12px 12px; background: rgba(255,255,255,.92); color: var(--gv-mid); box-shadow: 0 4px 12px #1526411f;
    transition: top .25s var(--ease), transform .25s var(--ease);
  }
  body.gv-chrome-auto.gv-chrome-open .gvc-explorer--report .gv-chrome-handle { top: calc(var(--topbar-h) + var(--gv-topbar)); }
  body.gv-chrome-auto.gv-chrome-open .gvc-explorer--report .gv-chrome-handle svg { transform: rotate(180deg); }
}
@media (min-width: 901px) and (prefers-reduced-motion: reduce) {
  .gvc-explorer--report .gv-detail .gv-detail__tiles, body.gv-chrome-auto .gvc-topbar, body.gv-chrome-auto .gvc-explorer--report .gv-detail__bar { transition: none; }
}

/* Full-screen panel, compact. A row grid left big holes (a row is as tall as
   its tallest tile), so tiles flow down columns instead, masonry-style, and
   the resident groups become a list with the selected group's detail beside
   it rather than expanding in place. Use cases keeps its own layout. */
@media (min-width: 901px) {
  .gvc-explorer--report .gv-detail[data-panel="full"] .gv-tab-panel.is-active:not([data-tabpanel="usecases"]) {
    display: block; columns: 3 460px; column-gap: 20px;
  }
  .gvc-explorer--report .gv-detail[data-panel="full"] .gv-tab-panel.is-active:not([data-tabpanel="usecases"]) > * {
    break-inside: avoid; margin: 0 0 20px;
  }
  .gvc-explorer--report .gv-detail[data-panel="full"] .gv-tab-panel.is-active > .gv-tile.is-expanded,
  .gvc-explorer--report .gv-detail[data-panel="full"] .gv-tab-panel.is-active > .gv-tile:has(#gv-clusters) { column-span: all; }

  .gvc-explorer--report .gv-detail[data-panel="full"] #gv-clusters {
    display: grid; grid-template-columns: minmax(320px, .85fr) 1.6fr; gap: 12px 22px; align-items: start;
  }
  .gvc-explorer--report .gv-detail[data-panel="full"] #gv-clusters > .gv-cluster-modebar { grid-column: 1 / -1; }
  .gvc-explorer--report .gv-detail[data-panel="full"] .gv-cluster-cards { gap: 8px; }
  .gvc-explorer--report .gv-detail[data-panel="full"] .gv-cluster-detail { display: block; position: sticky; top: 8px; }
  /* In the list every card is a one-line row; the pane carries the detail. */
  .gvc-explorer--report .gv-detail[data-panel="full"] .gv-cluster-cards .persona .gv-share-comparison,
  .gvc-explorer--report .gv-detail[data-panel="full"] .gv-cluster-cards .persona .persona__blurb,
  .gvc-explorer--report .gv-detail[data-panel="full"] .gv-cluster-cards .persona .persona__panel { display: none; }
  .gvc-explorer--report .gv-detail[data-panel="full"] .gv-cluster-cards .persona .persona__mini { display: flex; padding: 0 14px 10px; }
  .gvc-explorer--report .gv-detail[data-panel="full"] .gv-cluster-cards .persona__head { padding: 10px 14px 6px; gap: 10px; }
  .gvc-explorer--report .gv-detail[data-panel="full"] .gv-cluster-cards .persona__pct { font-size: 19px; min-width: 62px; }
  .gvc-explorer--report .gv-detail[data-panel="full"] .gv-cluster-cards .persona__name { font-size: 13.5px; }
  .gvc-explorer--report .gv-detail[data-panel="full"] .gv-cluster-cards .persona__geo { display: none; }
  .gvc-explorer--report .gv-detail[data-panel="full"] .gv-cluster-cards .persona__grading { font-size: 9.5px; padding: 3px 8px; }
  .gvc-explorer--report .gv-detail[data-panel="full"] .gv-cluster-cards .persona.is-selected { box-shadow: 0 0 0 2px var(--cluster-border) inset; }
}

/* Full screen: the travel tile takes the row, with the place, controls and
   footnotes beside the lists rather than above and below them. */
@media (min-width: 901px) {
  .gvc-explorer--report .gv-detail[data-panel="full"] .gv-tab-panel.is-active > .gv-tile:has(#gv-mobility-connections) { column-span: all; }
  .gvc-explorer--report .gv-detail[data-panel="full"] #gv-mobility-connections {
    display: grid; grid-template-columns: minmax(300px, .8fr) 2fr; grid-template-rows: auto 1fr;
    grid-template-areas: "intro lists" "notes lists"; column-gap: 32px; align-items: start;
  }
  .gvc-explorer--report .gv-detail[data-panel="full"] .gv-travel-intro { grid-area: intro; }
  .gvc-explorer--report .gv-detail[data-panel="full"] .gv-travel-notes { grid-area: notes; }
  .gvc-explorer--report .gv-detail[data-panel="full"] #gv-mobility-connections > .gv-mobility__columns { grid-area: lists; margin-top: 16px; }
  .gvc-explorer--report .gv-detail[data-panel="full"] .gv-travel-context { margin-top: 0; }
  /* One direction only: split its list into two columns. */
  .gvc-explorer--report .gv-detail[data-panel="full"] .gv-mobility__columns.is-single .gv-mobility-list { columns: 2; column-gap: 24px; }
  .gvc-explorer--report .gv-detail[data-panel="full"] .gv-mobility__columns.is-single .gv-mobility-list li { break-inside: avoid; }
  .gvc-explorer--report .gv-detail[data-panel="full"] .gv-mobility-list button { padding-top: 6px; padding-bottom: 6px; }
}

/* Stat cells: the number is sized to its own cell, never wrapped. A long
   figure such as "−£962,654" used to break after the minus sign and overflow. */
.gvc-explorer .gv-stat-blocks { grid-template-columns: repeat(auto-fill, minmax(150px, 1fr)); }
.gvc-explorer .gv-stat { container-type: inline-size; }
.gvc-explorer .gv-stat__num { white-space: nowrap; font-size: clamp(18px, 15cqi, 30px); overflow-wrap: normal; }
