/* BWA Store Locator Module */

/* Brand wiring. Each role resolves into a distinct local var (--sl-*) so
   there is NO self-reference cycle. Resolution order:
   1. recolor token (--bg/--text/--accent/...) injected by the stan AI Assist
      agent on this root class — wins when an editor recolors.
   2. inherited --bwa-store-locator-* emitted at :root by BrandCorpusController
      from this plugin's manifest brandInheritance (folder slug =
      "store-locator") — the live BrandCorpus value.
   3. the literal fallback — the module's original default.
   Derived tones (muted/faint/border/surface) track --sl-text/--sl-bg so a
   dark recolor stays legible. All content renders inside .bwa-storelocator;
   there is no sibling overlay. */
.bwa-storelocator {
    --sl-bg:         var(--bg,         var(--bwa-store-locator-bg, #ffffff));
    --sl-text:       var(--text,       var(--bwa-store-locator-text, #1e293b));
    --sl-accent:     var(--accent,     var(--bwa-store-locator-accent, #3b82f6));
    --sl-link:       var(--link,       var(--bwa-store-locator-link, var(--sl-accent)));
    --sl-link-hover: var(--link-hover, var(--bwa-store-locator-link-hover, color-mix(in srgb, var(--sl-accent) 82%, #000)));
    --sl-accent-ink: #ffffff;
    --sl-muted:      color-mix(in srgb, var(--sl-text) 62%, transparent);
    --sl-faint:      color-mix(in srgb, var(--sl-text) 45%, transparent);
    --sl-border:     color-mix(in srgb, var(--sl-text) 14%, transparent);
    --sl-surface-2:  color-mix(in srgb, var(--sl-text) 6%, var(--sl-bg));
}

.bwa-storelocator { max-width: 1200px; margin: 0 auto; padding: 20px 0; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif; }

/* Search */
.bwa-storelocator__search { display: flex; gap: var(--bwa-space-2, 8px); margin-bottom: 16px; }
.bwa-storelocator__search-input { flex: 1; padding: 10px 16px; border: var(--bwa-border-width, 1px) solid var(--sl-border); border-radius: var(--bwa-radius-md, 8px); font-size: 15px; outline: none; transition: border-color 0.2s ease; }
.bwa-storelocator__search-input:focus { border-color: var(--sl-accent); box-shadow: 0 0 0 3px color-mix(in srgb, var(--sl-accent) 18%, transparent); }
.bwa-storelocator__search-btn { padding: 10px 24px; background: var(--sl-accent); color: var(--sl-accent-ink); border: none; border-radius: var(--bwa-radius-md, 8px); font-size: 15px; font-weight: 600; cursor: pointer; transition: background 0.2s ease; clip-path: var(--bwa-notch-clip, none); }
.bwa-storelocator__search-btn:hover { background: var(--sl-link-hover); }

/* Body - Layout */
.bwa-storelocator__body { display: flex; gap: var(--bwa-space-3, 16px); min-height: 500px; }
.bwa-storelocator--map-left .bwa-storelocator__map { order: 1; flex: 2; }
.bwa-storelocator--map-left .bwa-storelocator__list { order: 2; flex: 1; }
.bwa-storelocator--map-right .bwa-storelocator__map { order: 2; flex: 2; }
.bwa-storelocator--map-right .bwa-storelocator__list { order: 1; flex: 1; }
.bwa-storelocator--map-full .bwa-storelocator__map { flex: 1; }
.bwa-storelocator--map-full .bwa-storelocator__list { display: none; }
/* No map (no Google Maps key): the list is the locator and takes the full width, whatever layout
   was chosen for the map. */
.bwa-storelocator--no-map .bwa-storelocator__map { display: none; }
.bwa-storelocator--no-map .bwa-storelocator__body { min-height: 0; }
.bwa-storelocator--no-map .bwa-storelocator__list { display: block; flex: 1; max-height: none; }

/* Map */
.bwa-storelocator__map { border-radius: var(--bwa-radius-md, 8px); overflow: hidden; min-height: 500px; background: var(--sl-surface-2); }

/* List */
.bwa-storelocator__list { overflow-y: auto; max-height: 600px; border: var(--bwa-border-width, 1px) solid var(--sl-border); border-radius: var(--bwa-radius-md, 8px); }
.bwa-storelocator__list-loading { padding: 20px; text-align: center; color: var(--sl-muted); }

/* Location Card */
.bwa-storelocator__location { padding: var(--bwa-space-3, 16px); border-bottom: var(--bwa-border-width, 1px) solid var(--sl-border); cursor: pointer; transition: background 0.15s ease; }
.bwa-storelocator__location:last-child { border-bottom: none; }
.bwa-storelocator__location:hover { background: var(--sl-surface-2); }
.bwa-storelocator__location--active { background: color-mix(in srgb, var(--sl-accent) 10%, var(--sl-bg)); border-left: var(--bwa-border-width-thick, 3px) solid var(--sl-accent); }

.bwa-storelocator__loc-name { font-size: 15px; font-weight: 600; color: var(--sl-text); margin: 0 0 4px 0; }
.bwa-storelocator__loc-address { font-size: 13px; color: var(--sl-muted); margin: 0 0 4px 0; line-height: 1.4; }
.bwa-storelocator__loc-phone { font-size: 13px; color: var(--sl-link); text-decoration: none; }
.bwa-storelocator__loc-phone:hover { text-decoration: underline; }
.bwa-storelocator__loc-distance { font-size: 12px; color: var(--sl-faint); margin-top: 4px; }
.bwa-storelocator__loc-hours { font-size: 12px; color: var(--sl-muted); margin-top: 4px; white-space: pre-line; }

/* Responsive */
@media (max-width: 768px) {
    .bwa-storelocator__body { flex-direction: column; }
    .bwa-storelocator--map-left .bwa-storelocator__map,
    .bwa-storelocator--map-right .bwa-storelocator__map { order: 1; }
    .bwa-storelocator--map-left .bwa-storelocator__list,
    .bwa-storelocator--map-right .bwa-storelocator__list { order: 2; max-height: 300px; }
    .bwa-storelocator__map { min-height: 300px; }
}
