/* Standorte und Ansprechpartner (docs/Standorte_01.md): Standortübersicht, Standortdetail,
   Ansprechpartner-Karten (auch auf Artikel- und Kategorieseiten) und Filialverfügbarkeit.
   Nur Designtokens aus app.css; keine eingebetteten Karten oder Drittanbieter-Ressourcen. */

.location-page { padding: clamp(1.5rem, 4vw, 3rem) 0; }
.location-page__header { max-width: 46rem; margin-bottom: 1.75rem; }
.location-page__header h1 { margin-bottom: .75rem; font-size: var(--shop-text-3xl); } /* gleiche Seitentitelgröße wie Katalog und Konto (a62) */
.location-page__lead { margin: 0; color: var(--shop-text); font-size: var(--shop-text-lg); line-height: 1.6; }
.location-page__note { margin: 1.5rem 0 0; color: var(--shop-text-muted); font-size: var(--shop-text-xs); }

.location-list { display: grid; gap: 1rem; grid-template-columns: minmax(0, 1fr); }
.location-card { display: grid; gap: 1rem; align-content: start; }
.location-card__title { margin: 0; font-size: var(--shop-text-xl); }
.location-card__title a { color: var(--shop-navy); text-decoration: none; }
.location-card__title a:hover { color: var(--shop-accent); text-decoration: underline; }

.location-facts { display: grid; gap: .75rem; margin: 0; font-size: var(--shop-text-sm); }
.location-facts__row { display: grid; gap: .15rem; }
.location-facts dt { color: var(--shop-text-muted); font-size: var(--shop-text-xs); font-weight: 700; letter-spacing: .04em; text-transform: uppercase; }
.location-facts dd { margin: 0; color: var(--shop-ink); overflow-wrap: anywhere; }
.location-facts__address { margin: 0; font-style: normal; }
.location-facts__map { display: inline-block; margin-top: .35rem; color: var(--shop-navy); font-weight: 700; }
.location-facts__map::after { content: " ↗"; }
.location-facts a { color: var(--shop-navy); }
.location-facts a:hover { color: var(--shop-accent); }

.location-detail { display: grid; gap: 1.5rem; margin-bottom: 2rem; }
.location-detail__description p { margin: 0 0 .75rem; color: var(--shop-text); }
.location-detail__image { margin: 0; }
.location-detail__image img { display: block; width: 100%; height: auto; border-radius: var(--shop-radius); object-fit: cover; }

.location-contacts { margin-bottom: 2rem; }
.location-contacts h2 { margin-bottom: 1rem; font-size: var(--shop-text-xl); }
.location-contacts__grid { display: grid; gap: 1rem; grid-template-columns: minmax(0, 1fr); }
.location-contacts__empty { color: var(--shop-text-muted); }

/* Ansprechpartner-Karte */
.location-contact { display: flex; gap: 1rem; align-items: flex-start; padding: 1rem; border: 1px solid var(--shop-line); border-radius: var(--shop-radius); background: var(--shop-canvas); }
.location-contact__photo { flex: 0 0 auto; width: 4.5rem; height: 4.5rem; border-radius: 50%; object-fit: cover; }
.location-contact__avatar { display: inline-flex; flex: 0 0 auto; align-items: center; justify-content: center; width: 4.5rem; height: 4.5rem; border-radius: 50%; background: var(--shop-navy-soft); color: var(--shop-navy); font-size: var(--shop-text-lg); font-weight: 700; text-transform: uppercase; }
.location-contact__body { min-width: 0; }
.location-contact__name { margin: 0 0 .15rem; font-size: var(--shop-text-base); }
.location-contact__role { margin: 0 0 .5rem; color: var(--shop-text-muted); font-size: var(--shop-text-sm); }
.location-contact__links { display: grid; gap: .3rem; margin: 0; padding: 0; list-style: none; font-size: var(--shop-text-sm); }
.location-contact__links li { display: flex; gap: .4rem; align-items: center; min-width: 0; }
.location-contact__links a { display: inline-flex; align-items: center; min-height: 1.5rem; color: var(--shop-navy); overflow-wrap: anywhere; } /* Zielgröße 24 px (a62) */
.location-contact__links a:hover { color: var(--shop-accent); }
.location-contact__location { margin: .5rem 0 0; font-size: var(--shop-text-xs); }
.location-contact--compact { padding: .6rem .75rem; background: var(--shop-surface); }
.location-contact--compact .location-contact__name { font-size: var(--shop-text-sm); }
.location-contact--compact .location-contact__role { margin-bottom: .25rem; font-size: var(--shop-text-xs); }

/* Artikelseite: „Ihr Ansprechpartner“ und Filialverfügbarkeit */
.product-contact { display: grid; gap: .75rem; margin-top: 1rem; }
.product-contact__heading { margin: 0; font-size: var(--shop-text-lg); }
.product-contact__greeting { margin: 0; color: var(--shop-text); font-size: var(--shop-text-sm); }
.product-store-availability { margin-top: 1.5rem; }
.product-store-availability h2 { font-size: var(--shop-text-lg); }
.product-store-availability__note { margin: .5rem 0 0; color: var(--shop-text-muted); font-size: var(--shop-text-xs); }

/* Kategorieseite: kleiner Ansprechpartner im Kopf */
.catalog-category-contact { max-width: 26rem; margin-top: 1rem; }
.catalog-category-contact__label { margin: 0 0 .35rem; color: var(--shop-text-muted); font-size: var(--shop-text-xs); font-weight: 700; letter-spacing: .04em; text-transform: uppercase; }

@media (min-width: 768px) {
    .location-list, .location-contacts__grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
    .location-detail--image { grid-template-columns: minmax(0, 3fr) minmax(0, 2fr); align-items: start; }
    .location-facts__row { grid-template-columns: 9rem minmax(0, 1fr); gap: 1rem; }
}

@media (min-width: 1200px) {
    .location-list { grid-template-columns: repeat(3, minmax(0, 1fr)); }
    .location-card .location-facts__row { grid-template-columns: minmax(0, 1fr); gap: .15rem; }
}

/* Zielgröße 24 px (Design-Review a62): Routenlink und Standortlinks der Filialverfügbarkeit */
.location-facts__map, .product-store-availability th a { display: inline-flex; align-items: center; gap: .25rem; min-height: 1.5rem; }
