/* ═══════════════════════════════════════════════════════
   Locations — rebuilt from Figma Phase 1 API inspection
   ═══════════════════════════════════════════════════════ */

.main { padding-top: 0; }

/* ── Hero — bg: #335d88 ────────────────────────────────── */
.hero {
  position: relative;
  background: #335d88;
  height: clamp(320px, 36vw, 520px);
  overflow: hidden;
  display: flex;
  align-items: center;
}
.heroWatermark {
  position: absolute;
  right: 0;
  top: 50%;
  transform: translateY(-50%);
  width: 50%;
  pointer-events: none;
}
.watermarkImg {
  width: 100%;
  height: auto;
  filter: brightness(0) invert(1) opacity(0.11);
  transform: scale(4.2) translateX(12%);
  transform-origin: center center;
}
.heroContent { position: relative; z-index: 1; padding: 0 119px; }
.heroTitle    { margin: 0 0 16px; }
.heroSans {
  display: block;
  font-family: 'Teodor TRIAL', Georgia, serif;
  font-size: clamp(32px, 4vw, 60px);
  font-weight: 400;
  line-height: 1.36;
  color: #fffdf8;
}
.heroScript {
  display: block;
  font-family: 'La Belle Aurore', cursive;
  font-style: normal;
  font-size: clamp(32px, 4vw, 60px);
  line-height: 1.36;
  color: #fffdf8;
}
.heroSub {
  font-family: 'Barlow', sans-serif;
  font-size: 20px;
  font-weight: 400;
  line-height: 24px;
  color: rgba(255, 253, 248, 0.75);
  margin: 0 0 8px;
  max-width: 520px;
}
.heroNote {
  font-family: 'Barlow', sans-serif;
  font-size: 13px;
  color: rgba(255, 253, 248, 0.45);
  margin: 0;
  max-width: 480px;
}

/* ── Tab strip — bg: #fffdf8 ───────────────────────────── */
.tabStrip {
  background: #fffdf8;
  border-bottom: 1px solid rgba(155, 149, 141, 0.3);
  overflow-x: auto;
  scrollbar-width: none;
  position: sticky;
  top: 0;
  z-index: 100;
}
.tabStrip::-webkit-scrollbar { display: none; }
.tabInner {
  display: flex;
  align-items: center;
  min-width: max-content;
  padding: 0 119px;
}
.tab {
  padding: 18px 21px;
  background: transparent;
  border: none;
  border-bottom: 2px solid transparent;
  color: rgba(26, 23, 18, 0.45);
  font-family: 'Barlow', sans-serif;
  font-size: 14px;
  font-weight: 400;
  white-space: nowrap;
  cursor: pointer;
  transition: color 0.2s, border-color 0.2s;
}
.tab + .tab::before {
  content: '✦';
  font-size: 5px;
  color: rgba(26, 23, 18, 0.2);
  margin-right: 0;
  position: relative;
  top: -1px;
}
.tab:hover     { color: #335d88; }
.tabActive     { color: #335d88; border-bottom-color: #335d88; font-weight: 500; }

/* ── Map band + 3-tier card carousel ───────────────────── */
/* Figma: Frame 2147203178 — 1920×1151, kristina bg photo + cream fallback */
.mapBand {
  position: relative;
  height: clamp(480px, 60vw, 900px);
  overflow: hidden;
  background: #fffdf8;  /* cream — matches Figma canvas colour */
  display: flex;
  flex-direction: column;
  justify-content: center;
}
.mapImg {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  object-fit: cover;
  object-position: center top;
  display: block;
  z-index: 1;
}
/* Union vector — Figma node 2023:92543, 1018×1018, fill #9b958d
   Opacity 0.2 is baked into the PNG alpha by Figma — do NOT add CSS opacity.
   z-index 2: in front of background photo, behind the carousel (z-index 3). */
.mapUnion {
  position: absolute;
  top: 50%;
  left: 50%;
  transform: translate(-50%, -50%);
  width: 1018px;
  height: 1018px;
  z-index: 2;
  pointer-events: none;
}

/* ── 3-tier carousel container ─────────────────────────── */
/* Figma: Frame 48095631 — HORIZONTAL, gap 24, CENTER/CENTER */
.cardCarousel {
  position: relative;
  z-index: 3;
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 24px;
  padding: 48px 0;
  height: 100%;
}

/* Figma: Slider Arrow — circle, border #fffdf8, radius 33px, pad 8px
   z-index: 40 — must be above locCard_center (z-index 30) within carousel context */
.carouselArrow {
  flex-shrink: 0;
  width: 44px;
  height: 44px;
  border-radius: 50%;
  border: 1px solid rgba(255, 253, 248, 0.8);
  background: rgba(255, 253, 248, 0.08);
  display: flex;
  align-items: center;
  justify-content: center;
  cursor: pointer;
  transition: background 0.2s, border-color 0.2s;
  position: relative;
  z-index: 40;
}
.carouselArrow:hover {
  background: rgba(255, 253, 248, 0.18);
  border-color: #fffdf8;
}

/* Cards track */
.carouselTrack {
  position: relative;
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 24px;
  width: 100%;
  max-width: 1680px;
  overflow: hidden;
  height: 630px;
}

/* ── Individual location card ───────────────────────────── */
/* Tier sizes from Figma:
   center:   464×630   opacity 1.0  scale 1.0  z 30
   adjacent: 464×550   opacity 0.85 scale 0.87 z 20
   side:     411×470   opacity 0.6  scale 0.73 z 10
   hidden:   0 opacity                          z 0  */
.locCard {
  position: absolute;
  border: none;
  padding: 0;
  cursor: pointer;
  border-radius: 40px;
  overflow: hidden;
  transition: transform 0.5s cubic-bezier(0.4,0,0.2,1),
              opacity   0.5s ease,
              width     0.5s ease,
              height    0.5s ease,
              z-index   0s;
  background: #000;
}
.locCard_center {
  width: 464px;
  height: 630px;
  opacity: 1;
  z-index: 30;
  transform: translateX(calc(var(--offset) * 488px)) scale(1);
}
.locCard_adjacent {
  width: 464px;
  height: 550px;
  opacity: 0.8;
  z-index: 20;
  transform: translateX(calc(var(--offset) * 488px)) scale(0.87);
}
.locCard_side {
  width: 411px;
  height: 470px;
  opacity: 0.55;
  z-index: 10;
  transform: translateX(calc(var(--offset) * 488px)) scale(0.73);
}
.locCard_hidden {
  width: 411px;
  height: 470px;
  opacity: 0;
  z-index: 0;
  pointer-events: none;
  transform: translateX(calc(var(--offset) * 488px)) scale(0.6);
}

.locCardImg {
  width: 100%;
  height: 100%;
  object-fit: cover;
  display: block;
  transition: transform 0.6s ease;
}
.locCard:hover .locCardImg { transform: scale(1.04); }

/* Location name label — La Belle Aurore 80px, #ece8dd */
.locCardLabel {
  position: absolute;
  bottom: 24px;
  left: 0;
  right: 0;
  text-align: center;
  font-family: 'La Belle Aurore', cursive;
  font-size: clamp(28px, 3.5vw, 60px);
  font-weight: 400;
  color: #ece8dd;
  line-height: 1;
  text-shadow: 0 2px 16px rgba(0,0,0,0.5);
  pointer-events: none;
}

/* Marquee at bottom of map band */
.marqueeWrap {
  position: absolute;
  bottom: 0;
  left: 0;
  right: 0;
  background: rgba(26, 23, 18, 0.7);
  padding: 10px 0;
  overflow: hidden;
  z-index: 3;
}
.marqueeTrack {
  display: flex;
  white-space: nowrap;
  animation: marquee 50s linear infinite;
}
.marqueeText {
  font-family: 'Barlow', sans-serif;
  font-size: 12px;
  font-weight: 400;
  letter-spacing: 0.14em;
  text-transform: uppercase;
  color: rgba(255, 253, 248, 0.6);
  padding-right: 80px;
}
@keyframes marquee {
  from { transform: translateX(0); }
  to   { transform: translateX(-50%); }
}

/* ── Location detail sections ───────────────────────────── */
/* Figma: HORIZONTAL, gap 142px, pad 0/119px, h 730px      */
.locSection {
  display: grid;
  grid-template-columns: 542px 1fr;
  gap: 142px;
  padding: 0 119px;
  min-height: 730px;
  background: #fffdf8;
  align-items: center;
  scroll-margin-top: 100px;
}
.locAlt     { background: #ece8dd; }
.locReverse { grid-template-columns: 1fr 542px; }
.locReverse .locInfo    { order: 2; }
.locReverse .locGallery { order: 1; }

/* ── Text info panel ── */
.locInfo {
  display: flex;
  flex-direction: column;
  gap: 18px;
}
/* La Belle Aurore 80px/400, #335d88 */
.locName {
  font-family: 'La Belle Aurore', cursive;
  font-size: clamp(36px, 4.5vw, 80px);
  font-weight: 400;
  line-height: 1.02;
  color: #335d88;
  margin: 0;
}
/* Barlow 20px/400, #676767 */
.locDesc {
  font-family: 'Barlow', sans-serif;
  font-size: 20px;
  font-weight: 400;
  line-height: 24px;
  color: #676767;
  margin: 0;
}
/* Divider — #b3b3b3 */
.locDivider { width: 100%; height: 1px; background: #b3b3b3; }

.locMeta    { display: flex; flex-direction: column; gap: 0; margin: 0; }
.locMetaRow {
  display: grid;
  grid-template-columns: 90px 1fr;
  gap: 22px;
  align-items: flex-start;
  padding: 12px 0;
  border-bottom: 1px solid rgba(179, 179, 179, 0.35);
}
/* "Address:" / "Phone:" — Barlow 20px/500, #335d88 */
.locLabel {
  font-family: 'Barlow', sans-serif;
  font-size: 20px;
  font-weight: 500;
  line-height: 24px;
  color: #335d88;
  white-space: nowrap;
}
/* Values — Barlow 20px/400, #676767 */
.locValue {
  font-family: 'Barlow', sans-serif;
  font-size: 20px;
  font-weight: 400;
  line-height: 24px;
  color: #676767;
  margin: 0;
}
.locPhone { color: #676767; text-decoration: none; }
.locPhone:hover { color: #335d88; }

.locActions { display: flex; align-items: center; gap: 24px; margin-top: 8px; }
/* Book Now — outlined, #335d88, radius 100px, Barlow 16px/600 */
.bookBtn {
  display: inline-flex;
  align-items: center;
  padding: 14px 24px;
  border: 1px solid #335d88;
  border-radius: 100px;
  color: #335d88;
  font-family: 'Barlow', sans-serif;
  font-size: 16px;
  font-weight: 600;
  line-height: 14px;
  letter-spacing: 0.32px;
  text-transform: uppercase;
  text-decoration: none;
  transition: background 0.2s, color 0.2s;
}
.bookBtn:hover { background: #335d88; color: #fffdf8; text-decoration: none; }
.learnBtn {
  font-family: 'Barlow', sans-serif;
  font-size: 16px;
  font-weight: 600;
  color: #335d88;
  text-decoration: none;
  border-bottom: 1px solid #335d88;
  padding-bottom: 2px;
}
.learnBtn:hover { opacity: 0.75; text-decoration: none; }

/* ── Gallery — 5 images, arrows + dots ─────────────────── */
/* Figma: Frame 3452×460, 5 Hero E images 649×460px r=10px */
.locGallery {
  display: flex;
  flex-direction: column;
  gap: 16px;
  padding: 60px 0;
}
.galleryViewport {
  overflow: hidden;
  border-radius: 10px;
  width: 100%;
  aspect-ratio: 649 / 460;
}
.galleryTrack {
  display: flex;
  gap: 24px;
  transition: transform 0.45s cubic-bezier(0.4,0,0.2,1);
  width: calc(5 * 100% + 4 * 24px); /* 5 images */
}
.galleryImg {
  width: calc(20% - (4 * 24px / 5));
  flex-shrink: 0;
  height: 100%;
  object-fit: cover;
  border-radius: 10px;
  display: block;
}

/* Figma: Slide arrows — HORIZONTAL, gap 351, SPACE_BETWEEN/CENTER */
.galleryControls {
  display: flex;
  align-items: center;
  justify-content: space-between;
}
/* Arrow buttons — Figma: circle, border #335d88 (from arrow stroke) */
.galleryArrow {
  width: 44px;
  height: 44px;
  border-radius: 50%;
  border: 1px solid #335d88;
  background: transparent;
  display: flex;
  align-items: center;
  justify-content: center;
  cursor: pointer;
  transition: background 0.2s;
  flex-shrink: 0;
}
.galleryArrow:hover { background: #335d88; }
.galleryArrow:hover svg path { stroke: #fffdf8; }

/* Dots — Figma: #335d88, 8px ellipse, inactive 20% opacity */
.galleryDots {
  display: flex;
  align-items: center;
  gap: 8px;
}
.dot {
  width: 8px;
  height: 8px;
  border-radius: 50%;
  background: #335d88;
  opacity: 0.2;
  border: none;
  cursor: pointer;
  padding: 0;
  transition: opacity 0.2s;
}
.dotActive { opacity: 1; }

/* ── Responsive ─────────────────────────────────────────── */
@media (max-width: 1280px) {
  .locSection { grid-template-columns: 380px 1fr; gap: 64px; padding: 0 60px; }
  .locReverse { grid-template-columns: 1fr 380px; }
  .heroContent, .tabInner { padding-left: 60px; padding-right: 60px; }
  .locCard_center   { width: 360px; height: 490px; }
  .locCard_adjacent { width: 360px; height: 420px; }
  .locCard_side     { width: 300px; height: 360px; }
  .carouselTrack    { height: 490px; }
  .locCard_center, .locCard_adjacent, .locCard_side, .locCard_hidden {
    transform: translateX(calc(var(--offset) * 384px)) scale(1);
  }
  .locCard_adjacent { transform: translateX(calc(var(--offset) * 384px)) scale(0.87); }
  .locCard_side     { transform: translateX(calc(var(--offset) * 384px)) scale(0.73); }
  .locCard_hidden   { transform: translateX(calc(var(--offset) * 384px)) scale(0.6); }
}

@media (max-width: 900px) {
  .locSection, .locReverse {
    grid-template-columns: 1fr;
    gap: 32px;
    padding: 48px 24px;
    min-height: auto;
  }
  .locReverse .locInfo, .locReverse .locGallery { order: unset; }
  .locName   { font-size: 48px; }
  .locDesc, .locLabel, .locValue { font-size: 16px; }
  .locMetaRow { grid-template-columns: 80px 1fr; }
  .heroContent { padding: 0 24px; }
  .heroWatermark { display: none; }
  .tabInner  { padding: 0 16px; }
  .tab       { padding: 14px 12px; font-size: 12px; }
  .mapBand   { height: auto; padding-bottom: 40px; }
  .cardCarousel { padding: 32px 8px; }
  .carouselTrack { height: 380px; }
  .locCard_center   { width: 260px; height: 350px; transform: translateX(calc(var(--offset) * 280px)) scale(1); }
  .locCard_adjacent { width: 260px; height: 300px; transform: translateX(calc(var(--offset) * 280px)) scale(0.87); }
  .locCard_side     { width: 220px; height: 260px; transform: translateX(calc(var(--offset) * 280px)) scale(0.73); }
  .locCard_hidden   { transform: translateX(calc(var(--offset) * 280px)) scale(0.6); }
  .galleryViewport { aspect-ratio: 4/3; }
}

/* ── Pre-footer Rectangle (Figma: I1980-87913-0-447, 1920×1075) ── */
.preFooterRect {
  width: 100%;
  line-height: 0;
  overflow: hidden;
}
.preFooterImg {
  display: block;
  width: 100%;
  height: auto;
  object-fit: cover;
}
