/* The storefront supplies typography, palette, controls and card tokens. */
.locator-intro { max-width:var(--wrap-narrow); margin:auto; text-align:center; padding:var(--spacer) var(--container-gutter) var(--space-lg); }
.locator-intro h1 { margin:var(--space-sm) 0; }
.locator-intro .lead { max-width:var(--measure); margin:0 auto; color:var(--ink-soft); }
.locator-section { max-width:1380px; margin:auto; padding:0 var(--container-gutter) var(--spacer); }
.locator [hidden], .locator-admin-map[hidden] { display:none!important; }
.locator-search { max-width:var(--wrap-narrow); margin:0 auto var(--space-sm); }
.locator-search__row { display:grid; grid-template-columns:minmax(0,1fr) auto auto; gap:var(--space-sm); align-items:end; }
.locator-search__field { min-width:0; }
.locator-search .field + .btn { margin:0; }
.locator-search .btn { height:var(--control-h); white-space:nowrap; }
.locator-locate { height:var(--control-h); font:inherit; font-size:var(--fs-small); color:var(--moss-deep); text-decoration:underline; text-underline-offset:.22em; white-space:nowrap; }
.locator-status { font-size:var(--fs-small); color:var(--ink-soft); margin:var(--space-md) 0 var(--space-sm); }
.locator-reset { color:var(--moss-deep); text-decoration:underline; font:inherit; font-size:var(--fs-small); margin:0 0 var(--space-sm); }
.locator-workspace { display:grid; grid-template-columns:minmax(0,380px) minmax(0,1fr); gap:var(--space-md); align-items:start; }
.locator-map-wrap { grid-column:2; grid-row:1; position:sticky; top:calc(var(--header-h) + var(--space-md)); border:1px solid var(--rule); border-radius:var(--radius); overflow:hidden; background:var(--stone-soft); }
.locator-map { height:560px; max-height:70vh; }
.locator-results { grid-column:1; grid-row:1; display:grid; gap:var(--space-md); min-width:0; }
.locator-workspace:not(:has(.locator-map-wrap:not([hidden]))) { grid-template-columns:1fr; }
.locator-workspace:not(:has(.locator-map-wrap:not([hidden]))) .locator-results { grid-template-columns:repeat(auto-fit,minmax(260px,1fr)); }
.locator-card { border:1px solid var(--rule); border-radius:var(--radius); background:var(--white); padding:var(--space-md); scroll-margin-top:calc(var(--header-h) + var(--space-md)); transition:border-color var(--dur) var(--ease),box-shadow var(--dur) var(--ease); }
.locator-card.is-selected { border-color:var(--moss-deep); box-shadow:0 0 0 1px var(--moss-deep); }
.locator-card h2 { font-size:var(--fs-h3); margin:0 0 var(--space-sm); }
.locator-store-name { padding:0; font:inherit; letter-spacing:inherit; text-transform:inherit; text-align:left; color:var(--moss-deep); text-decoration:underline; text-decoration-color:var(--rule); text-decoration-thickness:1px; text-underline-offset:.18em; }
.locator-store-name:hover, .locator-store-name:focus-visible, .locator-store-name[aria-pressed=true] { text-decoration-color:currentColor; }
.locator-card address { font-style:normal; line-height:1.55; color:var(--ink-soft); }
.locator-distance { font-size:var(--fs-small); color:var(--moss-deep); margin:0 0 var(--space-xs); }
.locator-links { display:flex; flex-wrap:wrap; gap:var(--space-sm) var(--space-md); margin-top:var(--space-md); align-items:center; }
.locator-links a { font-size:var(--fs-small); color:var(--moss-deep); }
.locator-photo { width:100%; height:160px; object-fit:cover; border-radius:var(--radius); margin-bottom:var(--space-md); }
.locator-note { font-size:var(--fs-small); line-height:1.55; margin-top:var(--space-sm); }
.locator-coming { display:inline-block; margin:0 0 var(--space-sm); font-size:var(--fs-micro); letter-spacing:.1em; text-transform:uppercase; color:var(--moss-deep); background:var(--cream); padding:var(--space-2xs) var(--space-xs); }
.locator-availability { font-size:var(--fs-small); color:var(--ink-soft); margin:var(--space-md) 0 var(--space-xs); }
.locator-expand { display:none; }
.locator-suggestions { max-width:var(--wrap-narrow); margin:0 auto; background:var(--white); border:1px solid var(--rule); }
.locator-suggestions button { display:block; width:100%; border-bottom:1px solid var(--rule); padding:var(--space-sm); text-align:left; color:var(--ink); font:inherit; }
.locator-suggestions button:hover { background:var(--cream); }
.locator-empty { text-align:center; background:var(--cream); border-radius:var(--radius); padding:var(--space-lg) var(--space-md); }
.locator-empty h2 { font-size:var(--fs-h3); }
.locator-empty p { margin:var(--space-sm) 0 var(--space-md); }
.locator-map-message { position:absolute; inset:35% var(--space-md) auto; text-align:center; background:var(--paper); padding:var(--space-md); line-height:1.55; }
.locator-cta { text-align:center; max-width:var(--wrap-narrow); margin:var(--spacer) auto 0; padding-top:var(--space-lg); border-top:1px solid var(--rule); }
.locator-cta p { margin:var(--space-sm) 0 var(--space-md); }
.mapboxgl-ctrl-logo { display:block!important; }
.mapboxgl-ctrl-attrib { font-size:11px!important; }
@media(max-width:750px) {
  .locator-intro { padding-bottom:var(--space-md); }
  .locator-search__row { grid-template-columns:minmax(0,1fr) auto; gap:var(--space-xs); }
  .locator-search .btn { font-size:var(--fs-small); padding-inline:var(--space-sm); }
  .locator-locate { grid-column:1/-1; justify-self:start; height:auto; padding:var(--space-xs) 0; }
  .locator-workspace { display:flex; flex-direction:column; gap:var(--space-md); }
  .locator-map-wrap { width:100%; position:relative; top:auto; }
  .locator-map { height:270px; max-height:none; }
  .locator-map-wrap.is-expanded .locator-map { height:65svh; }
  .locator-expand { display:block; position:absolute; bottom:32px; left:10px; font:inherit; font-size:var(--fs-small); border:1px solid var(--rule); background:var(--paper); padding:var(--space-xs) var(--space-sm); }
  .locator-results { width:100%; }
  .locator-card { padding:var(--space-md); }
  .locator-status { margin-top:var(--space-sm); }
}
/* Admin uses its own design system; these rules only size the map panel. */
.locator-admin-map { height:340px; border-radius:8px; margin-top:16px; background:#eceded; overflow:hidden; }
.locator-admin-map:empty:before { content:'Loading map…'; display:block; padding:24px; color:#4a4a42; }
[data-location-choices] { display:grid; gap:8px; margin-top:12px; }
[data-location-choices]:empty { display:none; }
[data-location-choices] button { text-align:left; }
@media(max-width:750px) { .locator-admin-map { height:290px; } }
