.z5loc{
  --z5loc-accent:#D32127;
  --z5loc-dark:#171214;
  --z5loc-light:#fff;
  --z5loc-muted:#6f6f73;
  --z5loc-gap:24px;
  --z5loc-radius:22px;
  --z5loc-media-ratio:.58;
  --z5loc-hover-lift:6px;
  position:relative;
  width:100%;
  overflow:hidden;
  background:#f4f4f4;
  color:var(--z5loc-dark);
  isolation:isolate;
}
.z5loc *{box-sizing:border-box}
.z5loc__inner{width:100%; max-width:1500px; margin-inline:auto;}
.z5loc__header{max-width:760px; margin:0 auto clamp(32px,4vw,56px); text-align:center; display:flex; flex-direction:column; align-items:center; gap:14px;}
.z5loc__eyebrow{font-size:12px; line-height:1.1; font-weight:700; letter-spacing:.18em; text-transform:uppercase; color:var(--z5loc-accent);}
.z5loc__heading{margin:0; color:var(--z5loc-dark); font-size:clamp(34px,3.2vw,58px); line-height:.94; font-weight:800; letter-spacing:.08em; text-transform:uppercase;}
.z5loc__intro{max-width:56ch; color:var(--z5loc-muted); font-size:clamp(15px,1.05vw,18px); line-height:1.55;}
.z5loc__intro p{margin:0}
.z5loc__viewport{width:100%; overflow:visible;}
.z5loc__list{display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:var(--z5loc-gap); width:100%;}
.z5loc--cols-3 .z5loc__list{grid-template-columns:repeat(3,minmax(0,1fr));}
.z5loc--cols-4 .z5loc__list{grid-template-columns:repeat(4,minmax(0,1fr));}
.z5loc__slide{height:auto; min-width:0;}
.z5loc__card{height:100%; position:relative; border-radius:var(--z5loc-radius); overflow:hidden; background:#fff; color:var(--z5loc-dark); display:flex; flex-direction:column; transform:translateZ(0); transition:transform .45s cubic-bezier(.625,.05,0,1), box-shadow .45s cubic-bezier(.625,.05,0,1);}
.z5loc__card:hover{transform:translateY(calc(var(--z5loc-hover-lift) * -1));}
.z5loc__media{position:relative; width:100%; height:auto; aspect-ratio:1 / var(--z5loc-media-ratio); overflow:hidden; border-radius:var(--z5loc-radius) var(--z5loc-radius) 0 0; background:#171214; isolation:isolate;}
.z5loc__media::after{content:""; position:absolute; inset:0; pointer-events:none; opacity:.18; background:linear-gradient(180deg,rgba(0,0,0,0) 48%,rgba(0,0,0,.6) 100%); z-index:2; transition:opacity .45s cubic-bezier(.625,.05,0,1);}
.z5loc__card:hover .z5loc__media::after{opacity:.30;}
.z5loc__media-layer{position:absolute; inset:0; width:100%; height:100%; transform-origin:center; will-change:transform;}
.z5loc[data-parallax="true"] .z5loc__media-layer{inset:-6% 0; height:112%;}
.z5loc[data-kenburns="true"] .z5loc__media-layer{animation:z5locKenburns 14s ease-in-out infinite alternate;}
.z5loc__media picture,.z5loc__media img{position:absolute !important; inset:0 !important; display:block !important; width:100% !important; height:100% !important; max-width:none !important; min-width:100% !important; object-fit:cover !important; object-position:center center; margin:0 !important; padding:0 !important;}
.z5loc__media-index{position:absolute; top:20px; left:20px; z-index:3; color:rgba(255,255,255,.75); font-size:12px; line-height:1; font-weight:700; letter-spacing:.12em;}
.z5loc__badge{position:absolute; top:18px; right:18px; z-index:3; background:rgba(23,18,20,.72); border:1px solid rgba(255,255,255,.16); color:#fff; backdrop-filter:blur(12px); border-radius:999px; padding:8px 12px; font-size:11px; line-height:1; font-weight:700; letter-spacing:.08em; text-transform:uppercase;}
.z5loc__content{display:flex; flex-direction:column; flex:1; min-height:0; padding:34px; gap:10px;}
.z5loc__title{margin:0; color:var(--z5loc-dark); font-size:clamp(20px,1.35vw,28px); line-height:1; font-weight:800; letter-spacing:.06em; text-transform:uppercase;}
.z5loc__address{color:var(--z5loc-muted); font-size:clamp(15px,1vw,18px); line-height:1.45; font-weight:500;}
.z5loc__description{color:var(--z5loc-muted); font-size:15px; line-height:1.55; margin-top:10px;}
.z5loc__description p{margin:0}
.z5loc__actions{display:flex; flex-wrap:wrap; align-items:center; gap:12px; margin-top:auto; padding-top:20px;}
.z5loc__button{display:inline-flex; align-items:center; justify-content:center; gap:10px; min-height:44px; padding:12px 18px; border-radius:999px; border:1px solid currentColor; text-decoration:none !important; font-size:12px; font-weight:700; letter-spacing:.04em; line-height:1; text-transform:uppercase; transition:background .25s ease,color .25s ease,border-color .25s ease,transform .25s ease;}
.z5loc__button svg{width:16px; height:16px; fill:none; stroke:currentColor; stroke-width:2; stroke-linecap:round; stroke-linejoin:round; transition:transform .25s ease;}
.z5loc__button:hover svg{transform:translateX(4px)}
.z5loc__button--primary{background:var(--z5loc-dark); color:#fff; border-color:var(--z5loc-dark);}
.z5loc .z5loc__button--primary:hover,.z5loc .z5loc__button--primary:focus-visible{background:var(--z5loc-accent); color:#fff !important; border-color:var(--z5loc-accent);}
.z5loc__button--secondary{background:transparent; color:var(--z5loc-dark);}
.z5loc__button--secondary:hover{background:var(--z5loc-dark); color:#fff;}
.z5loc--cinematic .z5loc__card{min-height:clamp(460px,36vw,640px); background:#171214; justify-content:flex-end;}
.z5loc--cinematic .z5loc__media{position:absolute; inset:0; aspect-ratio:auto; height:100%; border-radius:var(--z5loc-radius);}
.z5loc--cinematic .z5loc__media::after{opacity:1; background:linear-gradient(180deg,rgba(0,0,0,.04) 0%,rgba(0,0,0,.55) 100%);}
.z5loc--cinematic .z5loc__content{position:relative; z-index:4; color:#fff; padding-top:120px;}
.z5loc--cinematic .z5loc__title,.z5loc--cinematic .z5loc__address,.z5loc--cinematic .z5loc__description{color:#fff;}
.z5loc--cinematic .z5loc__address,.z5loc--cinematic .z5loc__description{opacity:.82;}
.z5loc--cinematic .z5loc__button--primary{background:#fff; color:#171214; border-color:#fff;}
.z5loc.z5loc--cinematic .z5loc__button--primary:hover,.z5loc.z5loc--cinematic .z5loc__button--primary:focus-visible{background:var(--z5loc-accent); border-color:var(--z5loc-accent); color:#fff !important;}
.z5loc--cinematic .z5loc__button--secondary{color:#fff;}
.z5loc--cinematic .z5loc__button--secondary:hover{background:#fff; color:#171214; border-color:#fff;}
.z5loc--dark{background:#111; color:#fff;}
.z5loc--dark .z5loc__heading{color:#fff;}
.z5loc--dark .z5loc__intro{color:rgba(255,255,255,.72);}
.z5loc__nav{display:none; align-items:center; justify-content:space-between; gap:24px; width:100%; margin-top:24px; pointer-events:none;}
.z5loc__arrows{display:flex; gap:10px; pointer-events:auto;}
.z5loc__arrow{width:46px; height:46px; border-radius:999px; border:0; background:#171214; color:#fff; display:flex; align-items:center; justify-content:center; cursor:pointer; padding:0; transition:opacity .2s ease,transform .2s ease,background .2s ease;}
.z5loc__arrow:hover:not([disabled]){transform:translateY(-1px)}
.z5loc__arrow[disabled]{opacity:.25; cursor:default; pointer-events:none;}
.z5loc__arrow svg{width:20px; height:20px; fill:none; stroke:currentColor; stroke-width:2; stroke-linecap:round; stroke-linejoin:round;}
.z5loc__progress{display:flex; align-items:center; justify-content:flex-end; gap:18px; flex:1; min-width:0; pointer-events:auto;}
.z5loc__progress-track{height:2px; background:#d8d8d8; width:min(260px,100%); transform:translateZ(0); overflow:hidden;}
.z5loc__progress-bar{display:block; height:100%; width:100%; background:var(--z5loc-accent); transform-origin:left center; transform:scaleX(0); transition:transform .35s cubic-bezier(.625,.05,0,1);}
.z5loc__counter{display:flex; gap:8px; align-items:center; white-space:nowrap; color:var(--z5loc-dark); font-size:12px; font-weight:700; letter-spacing:.08em;}
.z5loc--dark .z5loc__counter{color:#fff;}
.z5loc.is-prep [data-z5loc-reveal="header"],.z5loc.is-prep [data-z5loc-reveal="card"]{opacity:0;}
@keyframes z5locKenburns{from{transform:scale(1.02)}to{transform:scale(1.08)}}
@media (max-width: 1024px){
  .z5loc__list,.z5loc--cols-3 .z5loc__list,.z5loc--cols-4 .z5loc__list{grid-template-columns:repeat(2,minmax(0,1fr));}
}
@media (max-width: 767px){
  .z5loc__header{text-align:left; align-items:flex-start; margin-bottom:30px;}
  .z5loc__heading{font-size:clamp(32px,10vw,46px); letter-spacing:.06em;}
  .z5loc--mobile-swiper .z5loc__viewport{overflow:visible;}
  .z5loc--mobile-swiper .z5loc__list{display:flex; gap:0; width:100%;}
  .z5loc--mobile-swiper .z5loc__slide{width:82vw; max-width:420px; height:auto; margin-right:var(--z5loc-gap); flex:0 0 auto;}
  .z5loc--mobile-stack .z5loc__list{display:grid; grid-template-columns:1fr;}
  .z5loc__media{aspect-ratio:1 / .68;}
  .z5loc__nav{display:flex;}
  .z5loc__progress-track{width:100%;}
  .z5loc__content{padding:26px 24px;}
}

/* v1.0.1: use shared Swiper assets and protect desktop grid from any late global Swiper stylesheet. */
@media (min-width: 768px){
  .z5loc .z5loc__list.swiper-wrapper{
    display:grid !important;
    transform:none !important;
    transition:none !important;
  }
  .z5loc .z5loc__slide.swiper-slide{
    width:auto !important;
    margin-right:0 !important;
    flex:initial !important;
  }
}
@media (max-width: 767px){
  .z5loc.z5loc--mobile-swiper .z5loc__list.swiper-wrapper{
    display:flex !important;
    gap:0 !important;
    transition-property:transform !important;
  }
  .z5loc.z5loc--mobile-stack .z5loc__list.swiper-wrapper{
    display:grid !important;
    transform:none !important;
  }
}

/* v1.0.2 - CTA visibility fallback: labels render even when no URL is configured. */
.z5loc__button--no-link{
  cursor:default;
  pointer-events:none;
  opacity:.88;
}
.z5loc__button--no-link svg{
  transform:none !important;
}

/* v1.0.4 - Keep both primary CTA states independent from global theme link colors. */
.z5loc:not(.z5loc--cinematic) .z5loc__button--primary,
.z5loc:not(.z5loc--cinematic) a.z5loc__button--primary:link,
.z5loc:not(.z5loc--cinematic) a.z5loc__button--primary:visited{
  color:#fff !important;
}
