:root {
  --background: hsl(40 33% 99%);
  --foreground: hsl(213 42% 18%);
  --primary: hsl(213 42% 18%);
  --secondary: hsl(170 15% 65%);
  --muted-foreground: hsl(213 20% 45%);
  --accent: hsl(32 58% 63%);
  --primary-foreground: hsl(40 33% 99%);
  --font-heading: 'Cormorant Garamond', serif;
  --font-mono: 'Space Mono', monospace;
  --font-body: 'Inter', sans-serif;
}

* { box-sizing: border-box; margin: 0; padding: 0; }
html { scroll-behavior: smooth; }
body {
  background: var(--background);
  color: var(--foreground);
  font-family: var(--font-body);
  font-size: 1.125rem;
  line-height: 1.6;
  -webkit-font-smoothing: antialiased;
}
::-webkit-scrollbar { width: 4px; }
::-webkit-scrollbar-track { background: var(--background); }
::-webkit-scrollbar-thumb { background: var(--secondary); border-radius: 2px; }

@media (prefers-reduced-motion: no-preference) {
  .hero-bg,
  .hero-name-1,
  .hero-name-2 {
    will-change: transform, opacity;
  }

  .js-enabled .reveal {
    opacity: 0;
    transform: translateY(64px);
    transition:
      opacity 1.05s ease,
      transform 1.05s cubic-bezier(0.16, 1, 0.3, 1);
    transition-delay: var(--reveal-delay, 0ms);
  }

  .js-enabled .reveal.reveal-left {
    transform: translateX(-48px);
  }

  .js-enabled .reveal.reveal-right {
    transform: translateX(48px);
  }

  .js-enabled .reveal.revealed,
  .js-enabled .reveal.reveal-left.revealed,
  .js-enabled .reveal.reveal-right.revealed {
    opacity: 1;
    transform: translate(0, 0);
  }
}

.font-heading { font-family: var(--font-heading); }
.font-mono { font-family: var(--font-mono); }
.font-body { font-family: var(--font-body); }

/* ===== SIDE INDEX ===== */
.side-trigger {
  position: fixed; top: 50%; right: 0; transform: translateY(-50%) rotate(180deg);
  writing-mode: vertical-rl; z-index: 50;
  background: var(--primary); color: var(--primary-foreground);
  padding: 1rem 0.5rem; cursor: pointer;
  font-family: var(--font-mono); font-size: 10px; letter-spacing: 0.5em; text-transform: uppercase;
  border: none; transition: opacity 0.3s;
}
.side-drawer { position: fixed; inset: 0; z-index: 60; display: none; }
.side-drawer.open { display: block; }
.side-backdrop { position: absolute; inset: 0; background: rgba(0,0,0,0.3); }
.side-panel {
  position: absolute; top: 0; right: 0; height: 100%; width: 320px; max-width: 85vw;
  background: var(--background); padding: 4rem 3rem;
  transform: translateX(100%); transition: transform 0.4s ease;
}
.side-drawer.open .side-panel { transform: translateX(0); }
.side-panel a {
  display: block; font-family: var(--font-heading); font-size: 1.5rem; font-weight: 300;
  color: var(--foreground); text-decoration: none; padding: 0.75rem 0;
  border-bottom: 0.5px solid hsl(170 15% 65% / 0.3);
}
.side-panel a:hover { color: var(--secondary); }
.side-close {
  position: absolute; top: 1.5rem; right: 1.5rem; background: none; border: none;
  font-size: 1.5rem; color: var(--foreground); cursor: pointer;
}

/* ===== HERO ===== */
.hero { position: relative; height: 100vh; min-height: 600px; overflow: hidden; cursor: default; }
.hero * { cursor: inherit; }
.hero-bg { position: absolute; inset: 0; }
.hero-img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; }
.hero-overlay {
  position: absolute; inset: 0;
  background: linear-gradient(
    to bottom,
    hsl(213 42% 18% / 0.3) 0%,
    transparent 42%,
    hsl(40 33% 99% / 0.08) 62%,
    hsl(40 33% 99% / 0.72) 88%,
    var(--background) 100%
  );
}
.hero-horizon {
  position: absolute; left: 0; right: 0; top: 50%;
  height: 0.5px; background: hsl(170 15% 65% / 0.4);
}
.hero-name-1 {
  position: absolute; top: 15vh; left: 8vw;
  font-family: var(--font-heading); font-weight: 300; line-height: 0.9;
  font-size: 10vw; color: white; text-shadow: 0 2px 20px rgba(0,0,0,0.3);
}
@media (min-width: 768px) { .hero-name-1 { left: 10vw; font-size: 7vw; } }
.hero-date {
  position: absolute; top: 41%; left: 50%; transform: translate(-50%, -50%);
  display: flex; align-items: center; gap: .85rem; width: min(62vw, 32rem);
  text-align: center; z-index: 10;
  font-family: var(--font-heading); font-size: clamp(.96rem, 1.68vw, 1.32rem); font-weight: 400; letter-spacing: .2em;
  color: rgba(255,255,255,0.95);
  text-shadow: 0 2px 14px rgba(7,63,104,0.85), 0 0 3px rgba(7,63,104,0.75);
}
.hero-date time { flex: 0 0 auto; }
.hero-date-line { position: relative; flex: 1; height: .5px; background: rgba(255,255,255,.27); }
.hero-date-line::after { content: ''; position: absolute; top: 50%; width: 4px; height: 4px; background: rgba(255,255,255,.78); }
.hero-date-line:first-child::after { right: 0; transform: translate(50%, -50%) rotate(45deg); }
.hero-date-line:last-child::after { left: 0; transform: translate(-50%, -50%) rotate(45deg); }
.hero-name-2 {
  position: absolute; bottom: 15vh; right: 8vw; text-align: right;
  font-family: var(--font-heading); font-weight: 300; line-height: 0.9;
  font-size: 10vw; color: white; text-shadow: 0 2px 20px rgba(0,0,0,0.3);
}
@media (min-width: 768px) { .hero-name-2 { right: 10vw; font-size: 7vw; } }
@media (max-width: 767px) {
  .hero-bg { background: #77b7d2; }
  .hero-bg::before { content: ''; position: absolute; inset: -4%; background: url('../images/chapel-cover.jpg') 25% center / cover no-repeat; filter: blur(16px); opacity: .58; transform: scale(1.06); }
  .hero-img { inset: 10% 0 auto; width: 100%; height: 80%; object-fit: cover; object-position: 25% center; -webkit-mask-image: linear-gradient(180deg, transparent 0%, black 8%, black 91%, transparent 100%); mask-image: linear-gradient(180deg, transparent 0%, black 8%, black 91%, transparent 100%); }
  .hero-date { top: 42.5%; gap: .6rem; width: min(76vw, 24rem); }
  .hero-date-line::after { width: 3px; height: 3px; }
}
.hero-scroll {
  position: absolute; bottom: 2rem; left: 50%; transform: translateX(-50%);
  width: 1px; height: 3rem; background: rgba(255,255,255,0.5);
}
.hero-location {
  position: absolute; bottom: 2rem; left: 8vw;
  font-family: var(--font-mono); font-size: 10px; letter-spacing: 0.3em;
  text-transform: uppercase; color: rgba(255,255,255,0.7);
}
@media (min-width: 768px) { .hero-location { left: 10vw; } }

/* ===== SECTIONS ===== */
section { position: relative; }
.section-pad { padding: 6rem 8vw; }
@media (min-width: 768px) { .section-pad { padding: 10rem 10vw; } }
.section-label {
  font-family: var(--font-mono); font-size: 10px; letter-spacing: 0.5em;
  text-transform: uppercase; color: var(--muted-foreground);
  display: block; margin-bottom: 1.5rem;
}
.section-title {
  font-family: var(--font-heading); font-weight: 300; line-height: 1.1;
  font-size: 8vw; color: var(--foreground); margin-bottom: 2rem;
}
@media (min-width: 768px) { .section-title { font-size: 4vw; } }
.divider { width: 4rem; height: 0.5px; background: var(--secondary); margin-top: 2rem; }
.ceremony-overview { position: relative; isolation: isolate; width: 100%; min-height: clamp(30rem, 40vw, 52rem); margin-bottom: 2.5rem; overflow: hidden; border-bottom: .5px solid hsl(170 15% 65% / .35); background: var(--background); }
.ceremony-overview::after { content: ''; position: absolute; z-index: 1; inset: 0; background: linear-gradient(90deg, var(--background) 0%, hsl(40 33% 99% / .9) 20%, hsl(40 33% 99% / .22) 52%, transparent 100%); pointer-events: none; }
.ceremony-map-layer { position: absolute; top: clamp(2rem, 5vw, 4.5rem); right: 0; bottom: 0; width: 100%; pointer-events: none; }
.ceremony-overview-map { position: absolute; z-index: 0; inset: 0; display: block; width: 100%; height: 100%; object-fit: contain; opacity: .44; filter: blur(.6px); -webkit-mask-image: radial-gradient(ellipse at 59% 50%, black 34%, hsl(0 0% 0% / .88) 59%, transparent 100%); mask-image: radial-gradient(ellipse at 59% 50%, black 34%, hsl(0 0% 0% / .88) 59%, transparent 100%); }
.ceremony-overview-content { position: relative; z-index: 2; display: flex; flex-direction: column; justify-content: space-between; min-height: inherit; padding: clamp(2rem, 5vw, 4rem); padding-left: 0; }
.ceremony-overview .section-title { max-width: 34rem; margin: 0; font-size: clamp(3rem, 5.2vw, 5rem); }
.ceremony-details { max-width: 38rem; margin: 4rem 0 1rem; }
.ceremony-date { margin-top: .45rem; font-family: var(--font-heading); font-size: clamp(1.15rem, 1.8vw, 1.5rem); font-weight: 300; line-height: 1.3; }
.ceremony-where-label { margin-top: 2rem; }
.ceremony-place { margin-top: .45rem; font-family: var(--font-heading); font-size: clamp(1.45rem, 2.15vw, 1.9rem); font-weight: 600; line-height: 1; white-space: nowrap; }
.ceremony-location { margin-top: .5rem; font-size: .85rem; font-weight: 300; color: var(--muted-foreground); }
.ceremony-map-detail { position: absolute; right: 0; bottom: 0; z-index: 3; display: inline-flex; align-items: center; justify-content: flex-end; gap: .35rem; min-width: 8rem; padding: .8rem 1rem; border: 0; border-radius: 1px; background: linear-gradient(90deg, hsl(202 55% 67% / .88), hsl(204 68% 43% / .96)); color: white; font-family: var(--font-body); font-size: .76rem; font-weight: 400; letter-spacing: .01em; text-transform: uppercase; cursor: pointer; pointer-events: auto; }
.ceremony-map-detail span { font-family: Arial, sans-serif; font-size: 1rem; font-weight: 300; line-height: 1; }
.ceremony-map-detail:hover, .ceremony-map-detail:focus-visible { background: linear-gradient(90deg, hsl(202 55% 62% / .92), hsl(204 70% 38% / .98)); outline: none; }
.ceremony-map-dialog { position: relative; width: min(94vw, 90rem); max-width: none; max-height: 92vh; margin: auto; padding: 0; overflow: auto; border: 0; background: var(--background); box-shadow: 0 2rem 6rem hsl(213 42% 10% / .45); }
.ceremony-map-dialog::backdrop { background: hsl(213 42% 10% / .74); backdrop-filter: blur(5px); }
.ceremony-map-dialog img { display: block; width: 100%; height: auto; opacity: 1; cursor: none; }
.ceremony-map-close { position: absolute; right: auto; left: .75rem; bottom: .75rem; z-index: 1; display: inline-flex; align-items: center; justify-content: flex-end; gap: .35rem; min-width: 8rem; padding: .8rem 1rem; border: 0; border-radius: 1px; background: linear-gradient(90deg, hsl(202 55% 67% / .88), hsl(204 68% 43% / .96)); color: white; font-family: var(--font-body); font-size: .76rem; font-weight: 400; letter-spacing: .01em; text-transform: uppercase; cursor: pointer; transform: scale(.7); transform-origin: left bottom; }
.ceremony-map-close span { font-family: Arial, sans-serif; font-size: 1rem; font-weight: 300; line-height: 1; }
.ceremony-map-close:hover, .ceremony-map-close:focus-visible { background: linear-gradient(90deg, hsl(202 55% 62% / .92), hsl(204 70% 38% / .98)); outline: none; }
.ceremony-map-dialog.is-inline-map[open] { position: absolute; z-index: 12; top: clamp(2rem, 5vw, 4.5rem); right: 0; bottom: auto; left: 0; width: 100%; max-width: none; max-height: none; margin: 0; overflow: visible; box-shadow: 0 1rem 2.5rem hsl(213 42% 10% / .28); }
.ceremony-divider { margin: 0 0 2rem; }
@media (max-width: 767px) {
  .ceremony-overview { min-height: 36rem; }
  .ceremony-overview::after { background: linear-gradient(180deg, var(--background) 0%, hsl(40 33% 99% / .6) 24%, hsl(40 33% 99% / .08) 56%, hsl(40 33% 99% / .68) 100%); }
  .ceremony-map-layer { top: 7rem; right: -18%; bottom: auto; width: 150%; aspect-ratio: 1983 / 793; }
  .ceremony-overview-map { opacity: .46; filter: blur(.45px); -webkit-mask-image: radial-gradient(ellipse at 58% 50%, black 40%, hsl(0 0% 0% / .88) 66%, transparent 100%); mask-image: radial-gradient(ellipse at 58% 50%, black 40%, hsl(0 0% 0% / .88) 66%, transparent 100%); }
  .ceremony-map-detail { right: 12%; }
  .ceremony-overview-content { padding: 2rem 1.5rem 3.5rem 0; }
  .ceremony-overview .section-title { font-size: clamp(2.75rem, 13vw, 4rem); }
  .ceremony-details { margin-top: 3rem; }
  .ceremony-place { font-size: clamp(1.25rem, 6vw, 1.65rem); white-space: normal; }
  .ceremony-map-dialog.is-inline-map[open] { top: 7rem; overflow: hidden; }
}
#ceremony { padding-bottom: 3rem; }
#logistics { padding-top: 3rem; }

/* ===== THE JOURNEY SO FAR ===== */
.journey-section { background: linear-gradient(180deg, var(--background), hsl(202 45% 96%)); overflow: hidden; }
.journey-heading { max-width: 42rem; margin-bottom: 6rem; }
.journey-title { font-family: var(--font-heading); font-weight: 300; line-height: .95; font-size: 11vw; color: var(--foreground); }
.journey-interaction-hint { margin-top: 1.75rem; font-family: var(--font-mono); font-size: 9px; letter-spacing: .24em; text-transform: uppercase; color: var(--secondary); }
.hint-mobile { display: none; }
@media (min-width: 768px) { .journey-title { font-size: 5vw; } }
.journey-route { position: relative; display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: clamp(1rem, 3vw, 3.5rem); }
.journey-line { position: absolute; top: 1.05rem; left: 1.05rem; right: 1.05rem; height: 1px; background: hsl(170 15% 65% / .55); }
.journey-stop { position: relative; padding-top: 4rem; min-height: 15rem; }
.journey-marker { position: absolute; top: 0; left: 0; z-index: 1; width: 2.1rem; height: 2.1rem; border: 1px solid var(--secondary); border-radius: 50%; background: var(--background); display: grid; place-items: center; }
.journey-marker { padding: 0; color: var(--foreground); cursor: pointer; }
.journey-marker:hover, .journey-marker:focus { background: var(--foreground); border-color: var(--foreground); color: var(--background); }
.journey-preview { position: absolute; left: 50%; bottom: calc(100% + 1rem); z-index: 10; width: clamp(10rem, 18vw, 15rem); padding: .45rem; background: var(--background); box-shadow: 0 18px 45px hsl(213 42% 18% / .2); opacity: 0; visibility: hidden; transform: translate(-50%, .75rem) rotate(-2deg) scale(.94); transform-origin: bottom center; transition: opacity .3s ease, transform .4s cubic-bezier(.2,.8,.2,1), visibility .3s; pointer-events: none; }
.journey-preview img { display: block; width: 100%; aspect-ratio: 4/3; object-fit: cover; }
.journey-stop:first-of-type .journey-preview img { aspect-ratio: 3/4; }
.journey-stop:first-of-type .journey-preview { left: 0; width: clamp(8rem, 14.4vw, 12rem); transform: translate(0, .75rem) rotate(-2deg) scale(.94); }
.journey-marker:focus-visible .journey-preview, .journey-marker.is-preview-open .journey-preview { opacity: 1; visibility: visible; transform: translate(-50%, 0) rotate(-2deg) scale(1); }
.journey-stop:first-of-type .journey-marker:focus-visible .journey-preview, .journey-stop:first-of-type .journey-marker.is-preview-open .journey-preview { transform: translate(0, 0) rotate(-2deg) scale(1); }
@media (hover: hover) and (pointer: fine) {
  .journey-marker:hover .journey-preview { opacity: 1; visibility: visible; transform: translate(-50%, 0) rotate(-2deg) scale(1); }
  .journey-stop:first-of-type .journey-marker:hover .journey-preview { transform: translate(0, 0) rotate(-2deg) scale(1); }
}
.journey-marker:focus-visible { outline: 2px solid var(--foreground); outline-offset: 4px; }
.journey-view-cue { position: absolute; top: .7rem; left: 3rem; white-space: nowrap; font-family: var(--font-mono); font-size: 7px; letter-spacing: .14em; text-transform: uppercase; color: var(--secondary); opacity: 0; }
.journey-engaged .journey-marker { animation: journey-pulse .7s cubic-bezier(.2,.8,.2,1) both; }
.journey-engaged .journey-stop:nth-child(3) .journey-marker { animation-delay: .12s; }
.journey-engaged .journey-stop:nth-child(4) .journey-marker { animation-delay: .24s; }
.journey-engaged .journey-stop:nth-child(5) .journey-marker { animation-delay: .36s; }
.journey-engaged .journey-view-cue { animation: journey-cue 5s .9s both; }
@keyframes journey-pulse { 0% { transform: scale(.75); box-shadow: 0 0 0 0 hsl(170 15% 65% / .35); } 55% { transform: scale(1.15); box-shadow: 0 0 0 10px hsl(170 15% 65% / 0); } 100% { transform: scale(1); box-shadow: none; } }
@keyframes journey-cue { 0%, 15% { opacity: 0; transform: translateX(-6px); } 28%, 70% { opacity: 1; transform: translateX(0); } 100% { opacity: 0; transform: translateX(5px); visibility: hidden; } }
.journey-marker span, .journey-year, .journey-code { font-family: var(--font-mono); text-transform: uppercase; }
.journey-marker span { font-size: 8px; letter-spacing: .08em; }
.journey-year { font-size: 10px; letter-spacing: .28em; color: var(--muted-foreground); }
.journey-stop h3 { margin-top: .85rem; font-family: var(--font-heading); font-size: clamp(1.9rem, 3vw, 3.2rem); font-weight: 300; line-height: 1; }
.journey-note { margin-top: 1rem; max-width: 14rem; font-size: .8rem; font-weight: 300; color: var(--muted-foreground); }
.journey-code { margin-top: 2.5rem; font-size: 9px; letter-spacing: .35em; color: var(--secondary); }
.journey-stop-final .journey-marker { background: var(--foreground); color: var(--background); border-color: var(--foreground); }
.journey-image-wrap { position: relative; margin-top: 4rem; margin-left: auto; width: min(100%, 46rem); }
.journey-image-wrap img { display: block; width: 100%; aspect-ratio: 16/8; object-fit: cover; filter: saturate(.75); }
.journey-image-wrap p { position: absolute; right: 1.5rem; bottom: 1.25rem; font-family: var(--font-mono); font-size: 9px; letter-spacing: .28em; color: #fff; text-shadow: 0 1px 8px hsl(213 42% 18% / .65); }
.journey-image-wrap p span { margin: 0 .7rem; }
@media (max-width: 767px) {
  .hint-desktop { display: none; }
  .hint-mobile { display: inline; }
  .journey-heading { margin-bottom: 4rem; }
  .journey-route { display: block; }
  .journey-line { top: 1rem; bottom: 1rem; left: 1rem; right: auto; width: 1px; height: auto; }
  .journey-stop { min-height: 0; padding: 0 0 4rem 4rem; }
  .journey-stop:last-child { padding-bottom: 1rem; }
  .journey-code { margin-top: 1.5rem; }
  .journey-image-wrap img { aspect-ratio: 16/8; object-fit: contain; object-position: center; }
  .journey-preview { left: 0; bottom: auto; top: calc(100% + .75rem); width: min(62vw, 14rem); transform: translate(0, -.5rem) rotate(-2deg) scale(.94); }
  .journey-stop:first-of-type .journey-preview { width: min(49.6vw, 11.2rem); }
  .journey-marker:focus-visible .journey-preview, .journey-marker.is-preview-open .journey-preview { transform: translate(0, 0) rotate(-2deg) scale(1); }
}

/* ===== LEGACY INTRO ===== */
.intro-grid { display: grid; grid-template-columns: 1fr; gap: 3rem; align-items: center; }
@media (min-width: 768px) { .intro-grid { grid-template-columns: 1fr 1fr; gap: 5rem; } }
.intro-heading {
  font-family: var(--font-heading); font-weight: 300; line-height: 1.15;
  font-size: 7vw; color: var(--foreground); margin-bottom: 2rem;
}
@media (min-width: 768px) { .intro-heading { font-size: 3vw; } }
.intro-img-wrap { position: relative; }
.intro-img { width: 100%; aspect-ratio: 4/5; object-fit: cover; }
.intro-img-frame {
  position: absolute; bottom: -1rem; right: -1rem; width: 6rem; height: 6rem;
  border: 0.5px solid hsl(170 15% 65% / 0.3);
}

/* ===== TRANSPORTATION PANELS ===== */
.panels {
  display: flex; flex-direction: column;
  border-top: 0.5px solid hsl(170 15% 65% / 0.3);
  border-left: 0.5px solid hsl(170 15% 65% / 0.3);
}
@media (min-width: 768px) { .panels { flex-direction: row; overflow-x: auto; } }
.panel {
  position: relative; flex: 1; min-width: 0; padding: 2rem;
  border-bottom: 0.5px solid hsl(170 15% 65% / 0.3);
}
@media (min-width: 768px) {
  .panel { min-width: 280px; border-bottom: none; border-right: 0.5px solid hsl(170 15% 65% / 0.3); }
  .panel:last-child { border-right: none; }
}
.panel-num {
  position: absolute; top: 1.5rem; right: 1.5rem;
  font-family: var(--font-mono); font-size: 3.5rem; font-weight: 700;
  color: hsl(170 15% 65% / 0.25); line-height: 1;
}
@media (min-width: 768px) { .panel-num { font-size: 4rem; } }
.panel h3 {
  font-family: var(--font-heading); font-size: 1.5rem; font-weight: 300;
  color: var(--foreground); margin: 3rem 0 1.5rem;
}
.map-frame {
  margin-top: 3rem; width: 100%; aspect-ratio: 4/3; overflow: hidden;
  border: 0.5px solid hsl(170 15% 65% / 0.3); position: relative;
}
.map-frame iframe { position: absolute; inset: 0; width: 100%; height: 100%; border: 0; }
.panel-link {
  font-family: var(--font-mono); font-size: 10px; letter-spacing: 0.15em;
  text-transform: uppercase; color: var(--secondary); text-decoration: none;
  display: block; margin-top: 1rem; transition: color 0.3s;
}
.panel-link:hover { color: var(--foreground); }
.panel-sub {
  font-family: var(--font-mono); font-size: 10px; letter-spacing: 0.15em;
  text-transform: uppercase; color: var(--secondary); margin-bottom: 0.25rem;
}
.panel-text {
  font-size: 0.875rem; color: hsl(213 42% 18% / 0.8); font-weight: 300; line-height: 1.6;
}
.panel-text + .panel-sub { margin-top: 1rem; }
.transport-intro { max-width: 40rem; margin: -1rem 0 2.5rem; font-size: .9rem; line-height: 1.7; font-weight: 300; color: hsl(213 42% 18% / .7); }
.arrival-notice { display: grid; grid-template-columns: 10rem minmax(14rem, 1fr) minmax(16rem, 1.3fr); align-items: center; gap: 2rem; margin: -1rem 0 3rem; padding: 1.6rem 0; border-top: .5px solid var(--secondary); border-bottom: .5px solid var(--secondary); }
.arrival-notice > span, .transport-reference-label { font-family: var(--font-mono); font-size: 9px; letter-spacing: .22em; text-transform: uppercase; color: var(--secondary); }
.arrival-notice > strong { font-family: var(--font-heading); font-size: clamp(1.5rem, 2.5vw, 2.2rem); font-weight: 300; line-height: 1; }
.arrival-notice > p { font-size: .8rem; line-height: 1.6; font-weight: 300; color: hsl(213 42% 18% / .7); }
.transport-reference-label { margin: 4rem 0 1rem; }
.transport-reference { border-bottom: .5px solid hsl(170 15% 65% / .4); }
.transport-followup { margin-top: 1rem; padding-left: 1rem; border-left: .5px solid var(--secondary); color: var(--secondary) !important; }
.transport-stage-overview { display: grid; grid-template-columns: repeat(3, 1fr); margin-bottom: 4rem; border-top: .5px solid hsl(170 15% 65% / .35); border-left: .5px solid hsl(170 15% 65% / .35); }
.transport-stage-overview > div { position: relative; min-height: 10rem; padding: 1.6rem; border-right: .5px solid hsl(170 15% 65% / .35); border-bottom: .5px solid hsl(170 15% 65% / .35); display: grid; align-content: end; }
.transport-stage-overview span { position: absolute; top: 1.25rem; right: 1.25rem; font-family: var(--font-mono); font-size: 2.5rem; font-weight: 700; color: hsl(170 15% 65% / .25); }
.transport-stage-overview b, .transport-stage-overview strong { font-family: var(--font-heading); font-size: clamp(1.5rem, 2.7vw, 2.4rem); font-weight: 300; line-height: .9; }
.transport-stage-overview i { margin: .4rem 0; font-family: var(--font-mono); font-size: 8px; font-style: normal; letter-spacing: .2em; text-transform: uppercase; color: var(--secondary); }
.transport-stage-heading { margin: 0 0 1.5rem; }
.transport-stage-heading > span { font-family: var(--font-mono); font-size: 9px; letter-spacing: .24em; text-transform: uppercase; color: var(--secondary); }
.transport-stage-heading h3 { margin: .55rem 0 .65rem; font-family: var(--font-heading); font-size: clamp(2rem, 4vw, 3.8rem); font-weight: 300; line-height: 1; }
.transport-stage-heading p { max-width: 38rem; font-size: .85rem; font-weight: 300; color: hsl(213 42% 18% / .7); }
.transport-collapse { border-top: .5px solid hsl(170 15% 65% / .4); }
.transport-collapse:last-of-type { border-bottom: .5px solid hsl(170 15% 65% / .4); }
.transport-collapse summary { display: grid; grid-template-columns: 8rem 1fr 2.5rem; align-items: center; gap: 1.5rem; min-height: 7rem; padding: 1.25rem 0; cursor: pointer; list-style: none; }
.transport-collapse summary::-webkit-details-marker { display: none; }
.transport-collapse summary > span { font-family: var(--font-mono); font-size: 9px; letter-spacing: .22em; text-transform: uppercase; color: var(--secondary); }
.transport-collapse summary > strong { font-family: var(--font-heading); font-size: clamp(2rem, 4vw, 3.8rem); font-weight: 300; line-height: 1; }
.transport-collapse summary > i { position: relative; width: 2.3rem; height: 2.3rem; border: .5px solid var(--secondary); border-radius: 50%; }
.transport-collapse summary > i::before, .transport-collapse summary > i::after { content:''; position:absolute; left:50%; top:50%; width:.7rem; border-top:.5px solid var(--foreground); transform:translate(-50%,-50%); transition:transform .3s ease; }
.transport-collapse summary > i::after { transform:translate(-50%,-50%) rotate(90deg); }
.transport-collapse[open] summary > i::after { transform:translate(-50%,-50%) rotate(0); }
.transport-collapse[open] summary { color: var(--foreground); }
.transport-collapse-body { padding: 0 0 3.5rem; animation: transport-reveal .45s ease both; }
.transport-collapse-body.compact { max-width: 46rem; padding: 1rem 0 3.5rem; }
.transport-collapse-body.compact > small { display:block; margin-top:2rem; font-family:var(--font-mono); font-size:8px; letter-spacing:.18em; text-transform:uppercase; color:var(--secondary); }
.transport-collapse-intro { width: min(100%, 68rem); max-width: none; margin: 0 0 1.5rem; font-size: .85rem; line-height: 1.75; font-weight: 300; color: hsl(213 42% 18% / .7); }
@keyframes transport-reveal { from { opacity:0; transform:translateY(-.6rem); } to { opacity:1; transform:translateY(0); } }
.transport-route-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); border-top: .5px solid hsl(170 15% 65% / .35); border-left: .5px solid hsl(170 15% 65% / .35); }
.transport-route-card { position: relative; display: flex; flex-direction: column; min-height: 27rem; padding: clamp(1.75rem, 3vw, 2.75rem); border-right: .5px solid hsl(170 15% 65% / .35); border-bottom: .5px solid hsl(170 15% 65% / .35); }
.transport-route-card.recommended { background: hsl(170 18% 97% / .65); }
.transport-route-top { display: flex; align-items: center; justify-content: space-between; min-height: 2rem; margin-bottom: 3rem; }
.transport-route-num { font-family: var(--font-mono); font-size: 2.6rem; font-weight: 700; line-height: 1; color: hsl(170 15% 65% / .28); }
.transport-tag { padding: .45rem .7rem; border: .5px solid var(--secondary); border-radius: 2rem; font-family: var(--font-mono); font-size: 8px; letter-spacing: .18em; text-transform: uppercase; color: var(--secondary); }
.transport-route-card h3 { margin: 0 0 2rem; font-family: var(--font-heading); font-size: clamp(1.8rem, 3vw, 2.8rem); font-weight: 300; line-height: 1; }
.transport-graphic { display: flex; align-items: flex-start; width: 100%; min-height: 6.25rem; margin: 0 0 2rem; overflow: hidden; overscroll-behavior-x: none; touch-action: pan-y; scrollbar-width: none; }
.transport-graphic::-webkit-scrollbar { display: none; }
.transport-point { flex: 0 0 clamp(4.2rem, 7vw, 5rem); display: flex; flex-direction: column; align-items: center; text-align: center; }
.transport-point b { display: grid; place-items: center; width: clamp(3.65rem, 5vw, 4.25rem); height: clamp(3.65rem, 5vw, 4.25rem); border: 1px solid var(--secondary); border-radius: 50%; font-family: var(--font-mono); font-size: 12px; font-weight: 400; letter-spacing: .06em; color: var(--foreground); background: var(--background); }
.recommended .transport-point b { background: hsl(170 18% 97%); }
.transport-point small { margin-top: .55rem; font-family: var(--font-mono); font-size: 9px; line-height: 1.25; letter-spacing: .06em; text-transform: uppercase; color: var(--secondary); }
.transport-leg { position: relative; flex: 1 1 4.5rem; min-width: 3.25rem; height: 4.25rem; }
.transport-leg::before { content: ''; position: absolute; left: 0; right: .12rem; top: 50%; border-top: 1px dashed var(--secondary); }
.transport-leg::after { content: ''; position: absolute; right: .08rem; top: 50%; width: .55rem; height: .55rem; border-top: 1px solid var(--secondary); border-right: 1px solid var(--secondary); transform: translateY(-50%) rotate(45deg); transform-origin: center; }
.transport-leg i { position: absolute; z-index: 1; left: 50%; top: calc(50% - .85rem); transform: translate(-50%,-50%); padding: .1rem .35rem; background: var(--background); font-family: var(--font-mono); font-size: 8px; font-style: normal; letter-spacing: .08em; text-transform: uppercase; white-space: nowrap; color: var(--foreground); }
.recommended .transport-leg i { background: hsl(170 18% 97%); }
.transport-leg.short { flex-basis: 2.6rem; min-width: 2.6rem; }
.transport-facts { display: flex; flex-wrap: wrap; align-items: baseline; gap: .55rem 1.15rem; margin-bottom: 1.35rem; }
.transport-facts span { font-family: var(--font-mono); font-size: 10px; letter-spacing: .08em; color: var(--secondary); }
.transport-facts b { color: var(--foreground); font-size: 12px; font-weight: 400; }
.transport-facts .transport-walk { padding-left: 1rem; border-left: .5px solid hsl(170 15% 65% / .55); }
.transport-facts .transport-walk b { color: var(--secondary); font-weight: 700; }
.transport-route-card > .panel-text { max-width: 31rem; margin: 0; }
.transport-links { display: flex; flex-wrap: wrap; gap: .75rem 1.5rem; margin-top: auto; padding-top: 2rem; }
.transport-links a { display: inline-flex; align-items: center; min-height: 2.5rem; padding: .65rem 1rem; background: var(--primary); border: 1px solid var(--primary); font-family: var(--font-mono); font-size: 9px; letter-spacing: .14em; text-transform: uppercase; color: var(--primary-foreground); text-decoration: none; }
.transport-links a:hover, .transport-links a:focus-visible { background: hsl(213 42% 24%); border-color: hsl(213 42% 24%); color: var(--primary-foreground); outline: none; }
.transport-small { margin-top: 1.25rem; font-family: var(--font-mono); font-size: 9px; line-height: 1.8; letter-spacing: .08em; color: var(--secondary); }
.transport-onward-grid { display: grid; grid-template-columns: repeat(2, minmax(0,1fr)); margin-top: 4rem; border-top: .5px solid hsl(170 15% 65% / .35); border-left: .5px solid hsl(170 15% 65% / .35); }
.transport-onward-card { position: relative; min-height: 24rem; padding: clamp(1.5rem, 3vw, 2.5rem); border-right: .5px solid hsl(170 15% 65% / .35); border-bottom: .5px solid hsl(170 15% 65% / .35); }
.transport-onward-card > .transport-route-num { position: absolute; top: 1.5rem; right: 1.5rem; }
.transport-onward-card h3 { margin: 3.5rem 0 2rem; font-family: var(--font-heading); font-size: clamp(2rem, 3vw, 3rem); font-weight: 300; }
.transport-onward-graphic { display: flex; align-items: center; margin-bottom: 2rem; }
.transport-onward-graphic span { display: grid; place-items: center; width: 2.5rem; height: 2.5rem; border: .5px solid var(--secondary); border-radius: 50%; font-family: var(--font-mono); font-size: 8px; }
.transport-onward-graphic i { position: relative; flex: 1; text-align: center; font-family: var(--font-mono); font-size: 7px; font-style: normal; letter-spacing: .1em; text-transform: uppercase; color: var(--secondary); }
.transport-onward-graphic i::before { content:''; position:absolute; z-index:-1; left:0; right:0; top:50%; border-top:.5px dashed var(--secondary); }
.transport-onward-graphic i::after { content:'›'; position:absolute; right:0; top:50%; transform:translateY(-58%); font-size:1rem; }
.transport-onward-graphic i { background: var(--background); }
.transport-onward-card small { display: block; margin-top: 2rem; font-family: var(--font-mono); font-size: 8px; letter-spacing: .18em; text-transform: uppercase; color: var(--secondary); }
@media (max-width: 767px) {
  .arrival-notice { grid-template-columns: 1fr; gap:.75rem; }
  .transport-stage-overview, .transport-route-grid, .transport-onward-grid { grid-template-columns: 1fr; }
  .transport-route-card { min-height: 0; padding-block: 2rem 2.5rem; }
  .transport-route-top { margin-bottom: 2.5rem; }
  .transport-route-card h3 { margin-bottom: 1.75rem; }
  .transport-graphic { margin-bottom: 1.75rem; }
  .transport-point { flex: 0 1 3.8rem; min-width: 0; }
  .transport-point b { width: 3.25rem; height: 3.25rem; font-size: 10px; }
  .transport-point small { font-size: 7px; }
  .transport-leg { flex: 1 1 2.2rem; min-width: 0; height: 3.25rem; }
  .transport-leg.short { flex-basis: 1.75rem; min-width: 0; }
  .transport-leg i { top: calc(50% - .72rem); padding-inline: .25rem; font-size: 7px; letter-spacing: .06em; }
  .transport-links { margin-top: 0; }
  .transport-stage-overview > div { min-height: 8rem; }
  .transport-collapse summary { grid-template-columns: 1fr 2.5rem; gap:.75rem; }
  .transport-collapse summary > span { grid-column:1; margin-bottom:.35rem; }
  .transport-collapse summary > strong { grid-column:1; }
  .transport-collapse summary > i { grid-column:2; grid-row:1 / span 2; }
}

/* ===== DRESS CODE REFERENCES ===== */
.dress-intro { max-width: 42rem; margin-bottom: 2.25rem; }
.dress-intro .panel-text { font-size: 1rem; }
.dress-intro .panel-text + .panel-text { margin-top: 0.5rem; color: var(--secondary); }
.dress-palette { max-width: 42rem; margin-bottom: 2.75rem; }
.dress-swatches { display: grid; grid-template-columns: repeat(6, 1fr); gap: 0.7rem; margin-top: 0.85rem; }
.dress-swatches span { display: block; height: 0.7rem; background: var(--swatch); }
.dress-copy-grid { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 2rem; max-width: 64rem; }
.dress-reference { margin-top: 4rem; }
.dress-reference-head {
  display: flex; align-items: baseline; justify-content: space-between; gap: 1.5rem;
  padding-bottom: 1rem; border-bottom: 0.5px solid hsl(170 15% 65% / 0.35);
}

/* ===== TOP NAVIGATION ===== */
.home-nav { position: fixed; top: 1.5rem; right: 2rem; z-index: 80; display: flex; align-items: stretch; font-family: var(--font-mono); font-size: 10.8px; letter-spacing: .16em; text-transform: uppercase; }
.home-nav-logo { position: relative; width: 5.58rem; height: 5.58rem; display: grid; place-items: center; align-self: center; margin: -1.14rem .3rem -1.14rem 0; padding: .768rem; border: 0; background: transparent; cursor: pointer; filter: drop-shadow(0 1px 3px hsl(213 42% 18% / .42)); transition: filter .25s ease; }
.home-nav-logo img { display: block; width: 100%; height: 100%; object-fit: contain; transition: opacity .25s ease; }
.home-nav-logo::after { content: ''; position: absolute; inset: .768rem; background: #1B2C41; -webkit-mask: url('../images/lily-red-logo.svg') center / contain no-repeat; mask: url('../images/lily-red-logo.svg') center / contain no-repeat; opacity: 0; pointer-events: none; transition: opacity .25s ease; }
.home-explore { position: relative; }
.home-explore summary, .home-explore-trigger, .manifest-link { height: 3.3rem; display: flex; align-items: center; gap: .84rem; padding: 0 1.2rem; border: 0; background: transparent; color: var(--primary-foreground); text-decoration: none; text-shadow: 0 1px 3px hsl(213 42% 18% / .48); cursor: pointer; list-style: none; transition: color .25s ease, text-shadow .25s ease; }
.home-explore summary::-webkit-details-marker { display: none; }
.home-explore summary span, .home-explore-trigger span, .manifest-link span { font-size: 14.4px; transition: transform .25s ease; }
.home-explore[open] summary span, .home-explore.is-open .home-explore-trigger span { transform: rotate(180deg); }
.home-explore summary:hover, .home-explore-trigger:hover, .manifest-link:hover { color: hsl(40 33% 99% / .72); }
.home-nav.is-light .home-nav-logo { filter: none; }
.home-nav.is-light .home-nav-logo img { opacity: 0; }
.home-nav.is-light .home-nav-logo::after { opacity: 1; }
.home-nav.is-light .home-explore summary,
.home-nav.is-light .home-explore-trigger,
.home-nav.is-light .manifest-link { color: #1B2C41; text-shadow: none; }
.home-nav.is-light .home-explore summary:hover,
.home-nav.is-light .home-explore-trigger:hover,
.home-nav.is-light .manifest-link:hover { color: var(--secondary); }
.home-explore-menu { position: absolute; top: calc(100% + .5rem); right: 0; width: 15rem; padding: .55rem; background: hsl(40 33% 99% / .97); border: .5px solid hsl(170 15% 65% / .6); box-shadow: 0 1.25rem 3rem hsl(213 42% 18% / .14); backdrop-filter: blur(16px); }
.home-explore-menu a, .home-explore-menu button { width: 100%; display: grid; grid-template-columns: 2rem 1fr; align-items: center; padding: .8rem .7rem; border: 0; background: transparent; color: var(--foreground); font: inherit; letter-spacing: inherit; text-align: left; text-decoration: none; text-transform: uppercase; cursor: pointer; }
.home-explore-menu a:hover, .home-explore-menu button:hover { background: hsl(170 15% 65% / .12); }
.home-explore-menu small { color: var(--secondary); font-size: 8px; }

@media (max-width: 640px) {
  .home-nav { top: 1rem; right: 1rem; left: 1rem; justify-content: flex-end; isolation: isolate; }
  .home-nav.is-light::before { content: ''; position: absolute; z-index: -1; inset: -.55rem -.35rem; border: .5px solid hsl(170 15% 65% / .28); border-radius: 2px; background: hsl(40 33% 99% / .82); box-shadow: 0 .65rem 1.8rem hsl(213 42% 18% / .1); -webkit-backdrop-filter: blur(16px); backdrop-filter: blur(16px); }
  .home-explore summary, .home-explore-trigger, .manifest-link { padding: 0 .9rem; font-size: 9.6px; }
  .home-explore-menu { right: auto; left: 0; width: min(15rem, calc(100vw - 2rem)); }
}

/* ===== GUEST MANIFEST ===== */
.manifest-page { min-height: 100vh; background: var(--background); }
.manifest-header { display: flex; justify-content: space-between; align-items: center; padding: 1.5rem 5vw; border-bottom: .5px solid hsl(170 15% 65% / .35); font-family: var(--font-mono); font-size: 9px; letter-spacing: .16em; text-transform: uppercase; }
.manifest-header a { color: inherit; text-decoration: none; }
.manifest-header-brand { display: flex; align-items: center; gap: 1rem; }
.manifest-header-logo { display: block; width: 2.5rem; height: 2.5rem; flex: 0 0 auto; background: #1B2C41; -webkit-mask: url('../images/lily-red-logo.svg') center / contain no-repeat; mask: url('../images/lily-red-logo.svg') center / contain no-repeat; }
.manifest-main { padding: clamp(5rem, 10vw, 9rem) 8vw; }
.manifest-main h1 { max-width: 60rem; margin: 1rem 0; font-family: var(--font-heading); font-size: clamp(4rem, 9vw, 8rem); font-weight: 300; line-height: .9; }
.manifest-intro { color: hsl(213 42% 18% / .65); font-weight: 300; }
.manifest-grid { display: grid; grid-template-columns: repeat(3, 1fr); max-width: 72rem; margin-top: 5rem; border-top: .5px solid hsl(170 15% 65% / .5); border-left: .5px solid hsl(170 15% 65% / .5); }
.manifest-grid section { min-height: 18rem; padding: 2rem; border-right: .5px solid hsl(170 15% 65% / .5); border-bottom: .5px solid hsl(170 15% 65% / .5); }
.manifest-grid section > span, .manifest-action { font-family: var(--font-mono); font-size: 8px; letter-spacing: .16em; text-transform: uppercase; }
.manifest-grid section > span:not(.manifest-action) { color: var(--secondary); font-size: 10.4px; }
.manifest-action { display: inline-flex; align-items: center; min-height: 2.35rem; padding: .65rem 1rem; border: .5px solid var(--foreground); background: var(--foreground); color: var(--background); cursor: pointer; transition: background .25s ease, color .25s ease; }
.manifest-action:hover, .manifest-action:focus-visible { background: transparent; color: var(--foreground); outline: none; }
.manifest-action.is-static { cursor: default; }
.manifest-action.is-static:hover { background: var(--foreground); color: var(--background); }
.manifest-grid h2 { margin: 4rem 0 1rem; font-family: var(--font-heading); font-size: clamp(1.45rem, 2.2vw, 1.75rem); font-weight: 300; white-space: nowrap; }
.manifest-grid p { min-height: 4rem; font-size: .85rem; font-weight: 300; color: hsl(213 42% 18% / .7); }
@media (max-width: 767px) { .manifest-header { padding: .75rem 1rem; } .manifest-header-brand-copy { display: none; } .manifest-header-logo { width: 2rem; height: 2rem; } .manifest-grid { grid-template-columns: 1fr; } .manifest-grid section { min-height: 14rem; } }

.restaurant-seating,
.transfer-groups,
.room-allocation { max-width: 72rem; margin-top: clamp(5rem, 10vw, 8rem); scroll-margin-top: 3rem; }
.restaurant-seating[hidden],
.transfer-groups[hidden],
.room-allocation[hidden] { display: none; }
.restaurant-seating-body,
.transfer-groups-body,
.room-allocation-body { padding-top: 0; }
.room-list-title { margin: 0 0 2rem; font-family: var(--font-heading); font-size: clamp(2.1rem, 3.5vw, 3.85rem); font-weight: 300; line-height: .95; color: var(--foreground); }
.restaurant-seating .section-label { display: block; margin-bottom: 1rem; }
.seating-plan { padding: clamp(1.5rem, 4vw, 3rem); border: .5px solid hsl(170 15% 65% / .45); background: linear-gradient(180deg, hsl(40 33% 99%), hsl(170 18% 97% / .45)); }
.seating-head-table { position: relative; display: grid; place-items: center; width: min(100%, 24rem); min-height: 5.5rem; margin: 0 auto clamp(3rem, 7vw, 5.5rem); border: .5px solid hsl(170 15% 65% / .62); background: hsl(203 33% 88% / .42); }
.seating-head-table::before { content: ''; position: absolute; top: 0; left: 0; width: 100%; height: 3px; background: #497399; opacity: .78; }
.seating-head-table span { position: absolute; top: 1rem; left: 1rem; font-family: var(--font-mono); font-size: 8px; letter-spacing: .16em; text-transform: uppercase; color: var(--secondary); }
.seating-head-table strong { padding-top: .65rem; font-family: var(--font-heading); font-size: 1.8rem; font-weight: 300; color: var(--foreground); }
.seating-table-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: clamp(2.5rem, 7vw, 6rem); }
.seating-cluster { display: grid; grid-template-columns: minmax(0, 1fr) clamp(3.5rem, 6vw, 5rem) minmax(0, 1fr); gap: clamp(.5rem, 1.6vw, 1rem); min-width: 0; }
.seating-cluster-cd { --seat-rows: 6; }
.seating-cluster-ab { --seat-rows: 6; }
.seating-table-spine { display: grid; grid-template-rows: repeat(2, 1fr); min-height: 24rem; border: .5px solid hsl(170 15% 65% / .62); background: hsl(203 33% 88% / .42); }
.seating-cluster-ab .seating-table-spine { background: hsl(210 30% 84% / .48); }
.seating-table-spine span { display: grid; place-items: center; font-family: var(--font-heading); font-size: 2rem; font-weight: 300; color: var(--foreground); }
.seating-table-spine span + span { border-top: .5px solid hsl(170 15% 65% / .62); }
.seating-guests { display: grid; grid-template-rows: repeat(var(--seat-rows), minmax(0, 1fr)); min-width: 0; padding: .65rem 0; }
.seating-guests span { display: flex; align-items: center; min-height: 2.5rem; padding: .45rem .6rem; border-bottom: .5px solid hsl(170 15% 65% / .42); font-size: clamp(.72rem, 1.2vw, .9rem); line-height: 1.35; font-weight: 300; color: hsl(213 42% 18% / .78); }
.seating-guests-left span { justify-content: flex-end; text-align: right; }
.seating-guests .seat-empty { color: transparent; }
@media (max-width: 900px) { .seating-table-grid { grid-template-columns: 1fr; max-width: 34rem; margin-inline: auto; } .seating-cluster-ab { order: -1; } }
@media (max-width: 480px) { .seating-plan { margin-inline: -1rem; padding: 1.5rem 1rem 2rem; } .seating-head-table { min-height: 5rem; margin-bottom: 3rem; } .seating-cluster { grid-template-columns: minmax(0, 1fr) 3.25rem minmax(0, 1fr); gap: .45rem; } .seating-table-spine { min-height: 22rem; } .seating-guests span { padding-inline: .35rem; font-size: .7rem; } }

.transfer-groups .section-label { display: block; margin-bottom: 1rem; }
.transfer-meeting { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); border-top: .5px solid hsl(170 15% 65% / .45); border-left: .5px solid hsl(170 15% 65% / .45); }
.transfer-meeting-copy { display: flex; flex-direction: column; justify-content: center; min-height: 19rem; padding: clamp(2rem, 4vw, 3.5rem); border-right: .5px solid hsl(170 15% 65% / .45); border-bottom: .5px solid hsl(170 15% 65% / .45); background: hsl(203 33% 88% / .2); }
.transfer-meeting-copy > span { font-family: var(--font-mono); font-size: 9px; letter-spacing: .16em; text-transform: uppercase; color: var(--secondary); }
.transfer-meeting-copy h3 { margin: 2rem 0 1.25rem; font-family: var(--font-heading); font-size: clamp(2.4rem, 4vw, 4rem); font-weight: 300; line-height: .95; }
.transfer-meeting-note { display: flex; align-items: center; justify-content: space-between; gap: 1.25rem; }
.transfer-meeting-copy p { margin: 0; font-size: .875rem; line-height: 1.75; font-weight: 400; white-space: nowrap; color: var(--foreground); }
.transfer-mobile-break { display: none; }
.transfer-desktop-break { display: inline; }
.transfer-meeting-arrow { position: relative; display: block; width: 2.6rem; height: 2.6rem; flex: 0 0 2.6rem; border: 1px solid hsl(203 33% 58% / .65); border-radius: 50%; }
.transfer-meeting-arrow::before { content: ''; position: absolute; left: .7rem; right: .7rem; top: 50%; border-top: 1px solid hsl(203 33% 58%); }
.transfer-meeting-arrow::after { content: ''; position: absolute; right: .65rem; top: 50%; width: .45rem; height: .45rem; border-top: 1px solid hsl(203 33% 58%); border-right: 1px solid hsl(203 33% 58%); transform: translateY(-50%) rotate(45deg); }
.transfer-meeting-preview { position: relative; min-height: 19rem; overflow: hidden; border-right: .5px solid hsl(170 15% 65% / .45); border-bottom: .5px solid hsl(170 15% 65% / .45); background: linear-gradient(135deg, hsl(203 33% 88% / .34), hsl(170 18% 97%)); outline: none; }
.transfer-meeting-photo { position: absolute; inset: 0; margin: 0; overflow: hidden; }
.transfer-meeting-photo img { display: block; width: 100%; height: 100%; object-fit: cover; object-position: center 52%; filter: saturate(.62) contrast(.94) brightness(1.06); }
.transfer-meeting-photo::after { content: ''; position: absolute; inset: 0; background: linear-gradient(180deg, transparent 62%, hsl(213 42% 18% / .38)); pointer-events: none; }
.transfer-meeting-photo figcaption { position: absolute; z-index: 1; left: 1.5rem; bottom: 1.25rem; font-family: var(--font-mono); font-size: 8px; letter-spacing: .16em; text-transform: uppercase; color: white; text-shadow: 0 1px 4px hsl(213 42% 18% / .45); }
.transfer-trip-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); border-left: .5px solid hsl(170 15% 65% / .45); }
.transfer-trip-card { position: relative; min-width: 0; padding: clamp(1.75rem, 3vw, 2.75rem); border-right: .5px solid hsl(170 15% 65% / .45); border-bottom: .5px solid hsl(170 15% 65% / .45); }
.transfer-trip-card::before { content: ''; position: absolute; top: 0; left: 0; width: 100%; height: 3px; background: #7896AE; opacity: .82; }
.transfer-trip-return::before { background: #497399; }
.transfer-trip-top { display: flex; justify-content: space-between; align-items: center; font-family: var(--font-mono); font-size: 8px; letter-spacing: .16em; text-transform: uppercase; color: var(--secondary); }
.transfer-trip-card > h3 { margin: 2.75rem 0 1.75rem; font-family: var(--font-heading); font-size: clamp(2rem, 3.2vw, 3.2rem); font-weight: 300; line-height: .95; }
.transfer-trip-route { display: flex; align-items: flex-start; min-height: 5.75rem; margin-bottom: 2.25rem; }
.transfer-trip-point { flex: 0 0 4.25rem; display: flex; flex-direction: column; align-items: center; text-align: center; }
.transfer-trip-point b { display: grid; place-items: center; width: 3.5rem; height: 3.5rem; border: 1px solid var(--secondary); border-radius: 50%; font-family: var(--font-mono); font-size: 10px; font-weight: 400; letter-spacing: .06em; }
.transfer-trip-point small { margin-top: .45rem; font-family: var(--font-mono); font-size: 8px; letter-spacing: .08em; text-transform: uppercase; color: var(--secondary); }
.transfer-trip-line { position: relative; flex: 1; height: 3.5rem; min-width: 2.5rem; }
.transfer-trip-line::before { content: ''; position: absolute; left: 0; right: .12rem; top: 50%; border-top: 1px dashed var(--secondary); }
.transfer-trip-line::after { content: ''; position: absolute; right: .08rem; top: 50%; width: .5rem; height: .5rem; border-top: 1px solid var(--secondary); border-right: 1px solid var(--secondary); transform: translateY(-50%) rotate(45deg); }
.transfer-trip-line i { position: absolute; z-index: 1; left: 50%; top: calc(50% - .7rem); transform: translate(-50%,-50%); padding: .12rem .45rem; background: var(--background); font-family: var(--font-mono); font-size: 10px; font-style: normal; font-weight: 700; letter-spacing: .12em; text-transform: uppercase; color: var(--foreground); white-space: nowrap; }
.transfer-trip-groups { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); border-top: .5px solid hsl(170 15% 65% / .45); border-left: .5px solid hsl(170 15% 65% / .45); }
.transfer-trip-groups section { min-width: 0; min-height: 13rem; padding: 1.35rem; border-right: .5px solid hsl(170 15% 65% / .45); border-bottom: .5px solid hsl(170 15% 65% / .45); }
.transfer-group-top { display: flex; align-items: center; justify-content: space-between; font-family: var(--font-mono); letter-spacing: .16em; text-transform: uppercase; }
.transfer-group-top span { font-size: 10px; color: var(--foreground); }
.transfer-group-top small { font-size: 8px; color: var(--secondary); }
.transfer-trip-groups ul { margin: 1.6rem 0 0; padding: 0; list-style: none; }
.transfer-trip-groups li { padding: .55rem 0; border-bottom: .5px solid hsl(170 15% 65% / .38); font-size: .88rem; line-height: 1.35; font-weight: 300; color: hsl(213 42% 18% / .78); }
.transfer-call-note { font-family: var(--font-mono); font-size: .62rem; font-style: normal; font-weight: 700; letter-spacing: .03em; color: var(--foreground); white-space: nowrap; }
.transfer-uber-note { margin: 1.5rem 0 0; font-size: .8rem; line-height: 1.6; font-weight: 400; color: hsl(213 42% 18% / .72); }
@media (max-width: 900px) { .transfer-trip-grid { grid-template-columns: 1fr; } }
@media (max-width: 800px) { .transfer-meeting { grid-template-columns: 1fr; width: 100%; } .transfer-meeting-copy, .transfer-meeting-preview { min-width: 0; min-height: 17rem; } .transfer-meeting-copy p { white-space: normal; } .transfer-mobile-break { display: inline; } .transfer-desktop-break { display: none; } .transfer-meeting-note { flex-direction: column; align-items: flex-start; gap: 1.1rem; } .transfer-meeting-arrow { width: 1.9rem; height: 1.9rem; flex-basis: 1.9rem; } .transfer-meeting-arrow::before { left: 50%; right: auto; top: .47rem; width: 1px; height: .72rem; border: 0; background: hsl(203 33% 58%); transform: translateX(-50%); } .transfer-meeting-arrow::after { right: auto; left: 50%; top: 1rem; width: .43rem; height: .43rem; border-top: 0; border-right: 1px solid hsl(203 33% 58%); border-bottom: 1px solid hsl(203 33% 58%); transform: translate(-50%, -50%) rotate(45deg); } }
@media (max-width: 520px) { .transfer-trip-groups { grid-template-columns: 1fr; } .transfer-trip-groups section { min-height: 0; } }

.room-card-grid { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); border-top: .5px solid hsl(170 15% 65% / .45); border-left: .5px solid hsl(170 15% 65% / .45); }
.room-card { --room-accent: var(--secondary); position: relative; min-height: 15rem; padding: 1.6rem; border-right: .5px solid hsl(170 15% 65% / .45); border-bottom: .5px solid hsl(170 15% 65% / .45); }
.room-card::before { content: ''; position: absolute; top: 0; left: 0; width: 100%; height: 3px; background: var(--room-accent); opacity: .82; }
.room-card-top { display: flex; justify-content: space-between; align-items: center; }
.room-card-top span, .room-card-top small { font-family: var(--font-mono); font-size: 13px; letter-spacing: .16em; text-transform: uppercase; color: var(--muted-foreground); }
.room-card h3 { margin: 3.2rem 0 .9rem; font-family: var(--font-heading); font-size: 1.65rem; font-weight: 300; }
.room-card > p { font-size: 1rem; line-height: 1.85; font-weight: 300; color: hsl(213 42% 18% / .76); }
.room-card-top + p { margin-top: 3.2rem; }
.room-blue-1 { --room-accent: #AEC4D4; }
.room-blue-2 { --room-accent: #7896AE; }
.room-blue-3 { --room-accent: #497399; }
.room-blue-4 { --room-accent: #7090C2; }
.room-blue-5 { --room-accent: #1E4E78; }
.room-blue-6 { --room-accent: #3E70B1; }
.accent-red { --room-accent: hsl(9 62% 66%); } .accent-pink { --room-accent: hsl(344 40% 78%); } .accent-blue { --room-accent: hsl(207 53% 62%); } .accent-orange { --room-accent: hsl(37 92% 55%); } .accent-yellow { --room-accent: hsl(44 82% 57%); } .accent-green { --room-accent: hsl(103 32% 60%); } .accent-peach { --room-accent: hsl(29 78% 70%); } .accent-purple { --room-accent: hsl(253 30% 60%); } .accent-rose { --room-accent: hsl(356 54% 68%); }
.couple-card { --room-accent: var(--foreground); }
@media (max-width: 900px) { .room-card-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
@media (max-width: 600px) { .room-card-grid { grid-template-columns: 1fr; } .room-card { min-height: 12rem; } }
.dress-reference-head p,
.dress-reference-head span,
.dress-card figcaption {
  font-family: var(--font-mono); text-transform: uppercase;
}
.dress-reference-head p { font-size: 10px; letter-spacing: 0.3em; color: var(--foreground); }
.dress-reference-head span { font-size: 9px; letter-spacing: 0.18em; color: var(--secondary); }
.dress-carousel-meta { display: flex; align-items: center; gap: 1.25rem; }
.dress-carousel-controls { display: flex; gap: 0.45rem; }
.dress-carousel-controls button {
  width: 2.15rem; height: 2.15rem; border: 0.5px solid hsl(170 15% 65% / 0.55);
  border-radius: 50%; background: transparent; color: var(--foreground); cursor: pointer;
  font-size: 0.95rem; transition: background 0.25s ease, color 0.25s ease, transform 0.25s ease;
}
.dress-carousel-controls button:hover,
.dress-carousel-controls button:focus-visible { background: var(--foreground); color: var(--background); transform: scale(1.05); outline: none; }
.dress-gallery {
  display: flex; gap: clamp(0.7rem, 1.4vw, 1.4rem); overflow-x: auto;
  padding: 2rem 0 1.5rem; scroll-snap-type: x mandatory; scroll-behavior: smooth;
  scrollbar-width: none; perspective: 1200px; perspective-origin: center;
}
.dress-gallery::-webkit-scrollbar { display: none; }
.dress-card {
  flex: 0 0 26.666%; min-width: 0; margin: 0; scroll-snap-align: center;
  transform: scale(.88) translateZ(-45px); opacity: .58; transform-style: preserve-3d;
  transition: transform .65s cubic-bezier(.2,.8,.2,1), opacity .45s ease;
}
.dress-card.is-active { transform: scale(1) translateZ(70px); opacity: 1; z-index: 3; }
.dress-card.is-before { transform: scale(.88) rotateY(10deg) translateZ(-40px); transform-origin: right center; }
.dress-card.is-after { transform: scale(.88) rotateY(-10deg) translateZ(-40px); transform-origin: left center; }
.dress-card img {
  display: block; width: 100%; aspect-ratio: 3 / 4; object-fit: cover; object-position: center top;
  filter: saturate(0.82); transition: transform 0.6s cubic-bezier(.2,.8,.2,1), filter 0.45s ease;
}
.dress-card:nth-child(5) img { object-position: center 35%; }
.dress-card figcaption { margin-top: 0.75rem; font-size: 8px; letter-spacing: 0.22em; color: var(--secondary); }
@media (hover: hover) {
  .dress-card { overflow: hidden; }
  .dress-card:hover img { transform: scale(1.025); filter: saturate(1); }
}
@media (max-width: 767px) {
  .dress-swatches { grid-template-columns: repeat(3, 1fr); row-gap: 0.65rem; }
  .dress-copy-grid { grid-template-columns: 1fr; }
  .dress-reference { margin-top: 3rem; }
  .dress-reference-head { display: block; }
  .dress-carousel-meta { justify-content: space-between; margin-top: 0.7rem; }
  .dress-reference-head span { display: block; }
  .dress-gallery {
    margin-right: -2rem; padding-right: 2rem; scrollbar-width: none;
  }
  .dress-card { flex: 0 0 52.8vw; overflow: hidden; }
  .dress-card.is-before { transform: scale(.9) rotateY(7deg) translateZ(-25px); }
  .dress-card.is-after { transform: scale(.9) rotateY(-7deg) translateZ(-25px); }
}

/* ===== TIMELINE ===== */
.timeline { width: 100%; max-width: none; }
.timeline-date {
  padding: 0 0 1rem calc(100px + 3rem + 1px);
  font-family: var(--font-heading); font-size: 1.75rem; font-weight: 300; color: var(--foreground);
}
.timeline-date-next { padding-top: 3rem; }
.timeline-item {
  display: grid; grid-template-columns: 100px 1px 1fr; gap: 1.5rem;
  padding: 2rem 0; border-bottom: 0.5px solid hsl(170 15% 65% / 0.2);
}
.timeline-time {
  font-family: var(--font-mono); font-size: 0.875rem; color: var(--secondary);
  letter-spacing: 0.1em; padding-top: 0.25rem; white-space: nowrap;
}
.timeline-line { background: hsl(170 15% 65% / 0.3); }
.timeline-title {
  font-family: var(--font-heading); font-size: 1.5rem; font-weight: 300; color: var(--foreground);
}
.timeline-desc { font-size: 0.875rem; color: hsl(213 42% 18% / 0.7); font-weight: 300; margin-top: 0.5rem; }
.timeline-desc strong { font-weight: 600; color: var(--foreground); }
.timeline-note { margin-top: .45rem; font-size: .75rem; line-height: 1.5; font-style: italic; color: var(--secondary); }
@media (max-width: 767px) { .timeline-date { padding-left: 2.5rem; } }

/* ===== FOOTER ===== */
.footer {
  background: var(--primary); color: var(--primary-foreground);
  padding: 2.5rem 2rem 6rem; text-align: center;
}
.footer-inner { max-width: 32rem; margin: 0 auto; }
.footer-logo {
  display: block; width: 3.5rem; height: 3.5rem; object-fit: contain;
  margin: 0 auto 1.5rem;
}
.countdown { display: flex; justify-content: center; gap: 2rem; margin: 2rem 0 3rem; }
@media (min-width: 768px) { .countdown { gap: 3rem; } }
.count-unit { text-align: center; }
.count-val {
  font-family: var(--font-heading); font-size: 1.875rem; font-weight: 300; display: block;
}
@media (min-width: 768px) { .count-val { font-size: 3rem; } }
.count-label {
  font-family: var(--font-mono); font-size: 9px; letter-spacing: 0.3em;
  text-transform: uppercase; color: hsl(40 33% 99% / 0.4); margin-top: 0.5rem; display: block;
}
.footer-divider { width: 3rem; height: 0.5px; background: hsl(170 15% 65% / 0.3); margin: 0 auto 2rem; }
.footer-date { font-family: var(--font-heading); font-size: 1.125rem; font-weight: 300; color: hsl(40 33% 99% / 0.6); }
.footer-loc {
  font-family: var(--font-mono); font-size: 10px; letter-spacing: 0.4em;
  text-transform: uppercase; color: hsl(40 33% 99% / 0.3); margin-top: 0.5rem;
}
.transport-other-note {
  display: flex;
  align-items: baseline;
  gap: 1rem;
  margin-top: 1.5rem;
  padding: 1.25rem 0;
  border-bottom: 0.5px solid hsl(170 15% 65% / 0.25);
  color: hsl(213 42% 18% / 0.7);
  font-size: 0.82rem;
  font-weight: 300;
  line-height: 1.6;
}

.transport-other-note span {
  flex: 0 0 auto;
  color: var(--secondary);
  font-family: var(--font-mono);
  font-size: 8px;
  letter-spacing: 0.16em;
  text-transform: uppercase;
}

@media (max-width: 640px) {
  .transport-other-note {
    display: block;
  }

  .transport-other-note span {
    display: block;
    margin-bottom: 0.45rem;
  }
}
