  .dealer-hero{ background:var(--blue-deep); color:#fff; padding-block:clamp(50px,7vw,90px); position:relative; overflow:hidden; }
  .dealer-hero::after{ content:""; position:absolute; right:-10%; top:-40%; width:60%; height:180%;
    background:radial-gradient(circle at center, rgba(31,134,216,.35), transparent 60%); }
  .dealer-hero h1{ color:#fff; font-size:clamp(40px,6vw,82px); text-transform:uppercase; position:relative; z-index:1; }
  .dealer-hero p{ color:rgba(255,255,255,.85); max-width:54ch; margin-top:14px; position:relative; z-index:1; }

  .locator{ display:grid; grid-template-columns:430px 1fr; gap:0; min-height:560px; }
  .loc-panel{ border-right:1px solid var(--line); display:flex; flex-direction:column; max-height:calc(100vh - var(--header-h)); }
  .loc-search{ padding:24px clamp(20px,3vw,32px); border-bottom:1px solid var(--line); position:sticky; top:0; background:#fff; z-index:2; }
  .loc-search .field{ display:flex; gap:10px; }
  .loc-search input{ flex:1; font-family:var(--body); font-size:15px; padding:13px 16px; border:2px solid var(--line); border-radius:6px; outline:none; }
  .loc-search input:focus{ border-color:var(--accent); }
  .loc-search select{ font-family:var(--head); font-weight:600; text-transform:uppercase; letter-spacing:.06em; font-size:13px; padding:0 14px; border:2px solid var(--line); border-radius:6px; background:#fff; outline:none; cursor:pointer; }

  .loc-list{ overflow-y:auto; flex:1; }
  .dealer{ padding:20px clamp(20px,3vw,32px); border-bottom:1px solid var(--line); cursor:pointer; transition:background .15s; }
  .dealer:hover{ background:var(--mist); }
  .dealer.active{ background:#f1f7fc; box-shadow:inset 4px 0 0 var(--accent); }
  .dealer .nm{ font-family:var(--seapro-display); font-size:22px; text-transform:uppercase; }
  .dealer .badge{ display:inline-block; font-family:var(--head); font-size:10px; text-transform:uppercase; letter-spacing:.12em; color:#fff; background:var(--accent); padding:3px 8px; border-radius:20px; margin-left:8px; vertical-align:middle; }
  .dealer .addr{ color:var(--ink-soft); font-size:14.5px; margin-top:6px; }
  .dealer .meta{ display:flex; gap:18px; margin-top:10px; font-family:var(--head); font-size:13px; font-weight:600; }
  .dealer .meta a{ color:var(--accent); }
  .dealer .dist{ float:right; font-family:var(--head); font-size:12px; color:var(--ink-soft); letter-spacing:.06em; }

  .loc-map{ position:relative; background:
      linear-gradient(180deg,#0a2d55,#08305f);
      overflow:hidden; }
  .loc-map .grid-bg{ position:absolute; inset:0; opacity:.5;
    background-image:linear-gradient(rgba(255,255,255,.06) 1px,transparent 1px),linear-gradient(90deg,rgba(255,255,255,.06) 1px,transparent 1px);
    background-size:48px 48px; }
  .loc-map .coast{ position:absolute; inset:0; display:flex; align-items:center; justify-content:center; }
  .loc-map .pin{ position:absolute; width:18px; height:18px; transform:translate(-50%,-50%); cursor:pointer; }
  .loc-map .pin::before{ content:""; position:absolute; inset:0; background:var(--blue-bright); border:2px solid #fff; border-radius:50%; box-shadow:0 0 0 4px rgba(31,134,216,.3); transition:.18s; }
  .loc-map .pin.active::before{ background:#fff; transform:scale(1.4); box-shadow:0 0 0 8px rgba(255,255,255,.25); }
  .loc-map .pin .tip{ position:absolute; bottom:24px; left:50%; transform:translateX(-50%); background:#fff; color:var(--ink); font-family:var(--head); font-weight:700; font-size:12px; white-space:nowrap; padding:6px 10px; border-radius:6px; opacity:0; pointer-events:none; transition:.18s; box-shadow:var(--shadow); }
  .loc-map .pin.active .tip, .loc-map .pin:hover .tip{ opacity:1; }
  .loc-map .legend{ position:absolute; left:24px; bottom:24px; color:rgba(255,255,255,.7); font-family:var(--head); text-transform:uppercase; letter-spacing:.14em; font-size:11px; z-index:2; }
  .loc-map .mapnote{ position:absolute; top:24px; right:24px; background:rgba(255,255,255,.1); border:1px solid rgba(255,255,255,.2); color:#fff; font-family:monospace; font-size:11px; padding:8px 12px; border-radius:6px; }

  @media (max-width:920px){
    .locator{ grid-template-columns:1fr; }
    .loc-map{ min-height:340px; order:-1; }
    .loc-panel{ max-height:none; }
  }

/* ---------------------------------------------------------------------------
   Real Google map (when a Maps API key is configured)
   ---------------------------------------------------------------------------
   The stylised pin-plot rules above still apply when no key is set, so both
   states stay styled. */
.loc-map.has-gmap{ position:relative; padding:0; }
.loc-map .gmap{ position:absolute; inset:0; width:100%; height:100%; }
.loc-map.has-gmap .legend{
  position:absolute; left:18px; bottom:18px; z-index:3;
  background:rgba(255,255,255,.94); color:var(--ink);
  border:1px solid var(--line); border-radius:30px;
  padding:8px 16px; font-family:var(--head); font-weight:600;
  text-transform:uppercase; letter-spacing:.1em; font-size:11px;
  box-shadow:0 10px 24px -16px rgba(8,48,95,.6); pointer-events:none;
}

/* Result count above the list. */
.loc-count{
  font-family:var(--head); font-weight:600; text-transform:uppercase;
  letter-spacing:.09em; font-size:11.5px; color:var(--ink-soft);
  margin:0; padding:12px 0 0;
}

/* Google's InfoWindow — pull it toward the design system. */
.map-iw{ font-family:var(--body); min-width:190px; line-height:1.5; }
.map-iw strong{
  display:block; font-family:var(--head); font-weight:700; text-transform:uppercase;
  letter-spacing:.05em; font-size:13px; color:var(--ink); margin-bottom:4px;
}
.map-iw span{ display:block; font-size:13.5px; color:var(--ink-soft); margin-bottom:8px; }
.map-iw a{
  font-family:var(--head); font-weight:700; text-transform:uppercase;
  letter-spacing:.08em; font-size:11.5px; color:var(--accent);
}
.gmap-fallback{
  display:flex; flex-direction:column; justify-content:center; height:100%;
  padding:32px clamp(20px,4vw,48px); background:var(--mist);
  font-family:var(--body); color:var(--ink-soft); font-size:15px; line-height:1.6;
}
.gmap-fallback strong{ font-family:var(--head); color:var(--ink); }
.gmap-fallback p{ margin:0 0 8px; max-width:46ch; }
