/* Locations reuse the site's fonts, colours, cards and page header. */
.locations-page .location-eyebrow{color:var(--brand);font-size:11px;font-weight:800;letter-spacing:.12em;margin-bottom:14px}
.locations-page .locations-map{margin:0;padding:18px 10px 6px}
.locations-map>img{width:100%;height:auto}
.locations-map figcaption{display:flex;justify-content:center;flex-wrap:wrap;gap:10px;margin-top:14px}
.locations-map figcaption a{background:#fff;border:1px solid var(--line);border-radius:999px;padding:8px 13px;color:var(--brand);font-size:12px;font-weight:700;transition:background .2s}
.locations-map figcaption a:hover{background:var(--brand-50)}
.location-heading{max-width:740px;margin-bottom:32px}
.location-heading>p{color:var(--muted);line-height:1.75}
.location-regions{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:22px}
.location-region{display:flex;flex-direction:column;background:#fff;border:1px solid var(--line);border-radius:20px;padding:28px;box-shadow:var(--shadow-sm);scroll-margin-top:110px;overflow:hidden}
.location-region__top{display:flex;align-items:center;gap:12px;margin-bottom:22px}
.location-region__top img{width:28px;height:34px;object-fit:contain}
.location-region__top span{font-size:11px;font-weight:750;color:var(--brand);letter-spacing:.04em;background:var(--brand-50);border-radius:999px;padding:6px 10px}
.location-region h2{font-size:clamp(23px,2vw,28px);letter-spacing:-.025em;margin:0 0 14px}
.location-region h3{font-size:16px;line-height:1.5;margin:0 0 14px}
.location-region>p{font-size:14px;line-height:1.8;color:var(--muted);margin-bottom:22px}
.location-region address{font-style:normal;font-size:14px;line-height:1.8;padding:16px 0;border-top:1px solid var(--line);margin-bottom:12px}
.location-region__towns{margin-top:auto;padding-top:8px}
.location-region__towns>span{display:block;font-size:11px;color:var(--muted);font-weight:700;margin-bottom:10px}
.location-region__towns ul{display:flex;flex-wrap:wrap;gap:6px;list-style:none;padding:0;margin:0}
.location-region__towns li{font-size:11px;padding:5px 8px;background:#f2f5f8;color:var(--slate);border-radius:6px}
.location-region__link{display:flex;justify-content:space-between;gap:10px;margin-top:24px;padding-top:18px;border-top:1px solid var(--line);color:var(--brand);font-size:13px;font-weight:750;line-height:1.5}
.location-services .sub-card{border-top:3px solid var(--c)}
.location-services .sub-card>span{margin-top:auto;padding-top:14px;color:var(--c);font-size:24px}
.location-contact{display:grid;grid-template-columns:1.5fr 1fr;gap:48px;padding:clamp(28px,4vw,48px);background:var(--brand-50);border:1px solid var(--line);border-radius:24px}
.location-contact>div>p:not(.location-eyebrow){color:var(--muted);line-height:1.8;max-width:54ch;margin-bottom:24px}
.location-contact__details{display:flex;flex-direction:column;align-items:flex-start;justify-content:center;gap:12px;padding-left:36px;border-left:1px solid var(--line)}
.location-contact__details address{font-style:normal;line-height:1.8;margin-bottom:8px}
.location-contact__details>a{color:var(--brand);font-weight:650;font-size:14px;overflow-wrap:anywhere}
@media(max-width:1050px){.location-regions{gap:16px}.location-region{padding:22px}}
@media(max-width:860px){.location-regions{grid-template-columns:1fr}.locations-map{max-width:560px;justify-self:center}.location-contact{grid-template-columns:1fr;gap:28px}.location-contact__details{padding:24px 0 0;border-left:0;border-top:1px solid var(--line)}.location-region__towns{margin-top:0}.location-region__link{margin-top:20px}}
@media(max-width:520px){.locations-page .locations-map{padding:0}.locations-map figcaption{gap:6px}.locations-map figcaption a{font-size:11px;padding:7px 9px}.location-contact{border-radius:18px}.location-contact .btn{max-width:100%}}
@media(prefers-reduced-motion:reduce){.locations-map figcaption a{transition:none}}

.locations-map__drawing{width:100%;height:auto;overflow:visible}.location-crest{opacity:0;transform:translateY(4px);transition:opacity .45s ease,transform .45s ease;pointer-events:none;filter:drop-shadow(0 2px 2px rgba(0,0,0,.2))}.location-crest--bl{transition-delay:.12s}.location-crest--zh{transition-delay:.24s}.locations-map.is-revealed .location-crest{opacity:1;transform:translateY(-2px)}@media(prefers-reduced-motion:reduce){.location-crest{transition:none;opacity:1;transform:none}}

/* Shared canton interactions, adapted to the light location map. */
.locations-canton-map{position:relative;width:100%;margin:0}
.locations-canton-map .canton-map__svg{display:block;width:100%;height:auto;overflow:visible;touch-action:pan-y}
.locations-canton-map .canton-map__shape{fill:#e2e7ee;stroke:#fff;stroke-width:1.4;stroke-linejoin:round;pointer-events:none;transform-box:view-box;transition:transform .2s ease,fill .2s ease}
.locations-canton-map .canton-map__hit{fill:transparent;stroke:none;cursor:pointer}
.locations-canton-map .is-region .canton-map__shape{fill:#e2e7ee}
.locations-canton-map .canton-map__canton{outline:none}
.locations-canton-map .is-active .canton-map__shape{fill:#aebfd3;transform:translateY(-4px);filter:drop-shadow(0 3px 2px #061b3d33)}
.locations-canton-map .is-region.is-active .canton-map__shape{fill:var(--brand)}
.locations-canton-map .canton-map__canton:focus-visible .canton-map__shape{stroke:var(--brand);stroke-width:2}
.locations-canton-map .canton-map__emblem{position:absolute;z-index:4;transform:translate(-50%,-50%);pointer-events:none;display:flex;flex-direction:column;align-items:center;gap:4px;background:none;border:0;box-shadow:none;padding:0}
.locations-canton-map .canton-map__emblem[hidden]{display:none}
.locations-canton-map .canton-map__emblem img{display:block;width:var(--crest-size,24px);height:calc(var(--crest-size,24px)*1.22);object-fit:contain;filter:drop-shadow(0 2px 2px #061b3d44)}
.locations-canton-map .canton-map__emblem span{font-size:11px;font-weight:700;color:var(--ink);white-space:nowrap;text-shadow:0 1px 4px #fff,0 0 6px #fff}
.locations-canton-map .canton-map__hint,.locations-canton-map .canton-map__chooser{display:none}
@media(pointer:coarse){.locations-canton-map .canton-map__chooser{display:flex;justify-content:center;gap:8px;align-items:center;font-size:12px;margin-top:12px}.locations-canton-map select{font:inherit;min-height:44px;border:1px solid var(--line);border-radius:8px;background:#fff;padding:8px}}
@media(prefers-reduced-motion:reduce){.locations-canton-map .canton-map__shape{transition:none}}

/* Service regions remain quiet until the visitor explores the map. */
.locations-canton-map .location-crest,.locations-map.is-revealed .locations-canton-map .location-crest{opacity:.38;filter:grayscale(1);transform:none;transition:opacity .2s ease}
.locations-canton-map:has([data-canton="bs"].is-active) .location-crest--bs,.locations-canton-map:has([data-canton="bl"].is-active) .location-crest--bl,.locations-canton-map:has([data-canton="zh"].is-active) .location-crest--zh{opacity:0}
