/* ═══════════════════════════════════════════
   DESIGN TOKENS
═══════════════════════════════════════════ */
:root {
  --dark-blue:   #22375E;
  --yellow:      #F9E5A9;
  --green:       #64976A;
  --red:         #FF523B;
  --pink:        #FFDBD6;
  --gold:        #F2C94C;
  --white:       #FFFFFF;
  --muted:       #BDC3CF;
  --cream:       #FCF4D9;
  --green-light: #BFD4C1;

  --font-display: 'Lobster', cursive;
  --font-label:   'Caveat', cursive;
  --font-body:    'Open Sans', sans-serif;
}


/* ═══════════════════════════════════════════
   RESET & BASE
═══════════════════════════════════════════ */
*, *::before, *::after { box-sizing: border-box; margin: 0; padding: 0; }
html  { scroll-behavior: smooth; }
body  { font-family: var(--font-body); overflow-x: hidden; cursor: none;
        -webkit-font-smoothing: antialiased; background: var(--dark-blue); }
* { cursor: none !important; }
img   { display: block; max-width: 100%; }
a     { text-decoration: none; }
strong { font-weight: 700; }


/* ═══════════════════════════════════════════
   INTRO OVERLAY
═══════════════════════════════════════════ */
#intro-overlay {
  position: fixed;
  inset: 0;
  z-index: 10000;
  background: #22375E;
  overflow: hidden;
  opacity: 1;
  transition: opacity 0.9s ease;
  will-change: opacity;
}
#intro-overlay.fade-out {
  opacity: 0;
  pointer-events: none;
}

/* Video sits beneath the gate */
#intro-video {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  object-fit: cover;
  display: block;
}

/* Gate: dark blue screen shown first, fades to reveal video */
#intro-gate {
  position: absolute;
  inset: 0;
  display: flex;
  align-items: center;
  justify-content: center;
  background: #22375E;
  opacity: 1;
  transition: opacity 0.7s ease;
}
#intro-gate.fade-out {
  opacity: 0;
  pointer-events: none;
}

/* Invitation button — same style as .waze-btn */
#intro-btn {
  background: var(--gold);
  border: 24px solid var(--gold);
  border-radius: 4px 12px 3px 10px / 10px 3px 12px 4px;
  padding: 20px 48px;
  font-family: var(--font-display);
  font-size: 32px;
  color: var(--dark-blue);
  cursor: none !important;
  transition: transform 0.15s ease;
  outline: none;
}
#intro-btn:hover  { transform: scale(1.04); }
#intro-btn:active { transform: scale(0.97); }

/* Hide custom cursor only during video phase of intro (gate phase keeps it) */
body.intro-video #cursor { display: none !important; }


/* ═══════════════════════════════════════════
   PAGE WRAPPER
═══════════════════════════════════════════ */
.page-wrapper {
  position: relative;
  width: 100%;
  min-width: 1440px;
  overflow-x: hidden;
  isolation: isolate;
}

.section-inner {
  position: relative;
  max-width: 1440px;
  margin: 0 auto;
  height: 100%;
  z-index: 5;
}


/* ═══════════════════════════════════════════
   SECTIONS
═══════════════════════════════════════════ */
.section { position: relative; width: 100%; }

.section-hero      { background: var(--dark-blue); height: 1024px; z-index: 6; }
.section-countdown { background: var(--yellow);    height: 1024px; z-index: 5; }
.section-venue     { background: var(--green);     height: 1100px; z-index: 4; }
.section-names     { background: var(--red);       height: 1024px; z-index: 3; }
.section-story     { background: var(--pink);      min-height: 1440px; padding-bottom: 100px; z-index: 2; }
.section-dresscode { background: var(--dark-blue); min-height: 1440px; padding-bottom: 120px; z-index: 1; }

/* Old SVG outlines — replaced by CSS waves */
.section-outline { display: none !important; }

/* ── Wavy section transitions ── */
.section::after {
  content: '';
  position: absolute;
  bottom: -1px; left: 0; right: 0;
  height: 72px;
  background-size: 100% 100%;
  pointer-events: none;
  z-index: 2;
}
.section-hero::after {
  background-image: url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 1440 72' preserveAspectRatio='none'><path d='M0,40 C160,15 320,62 480,32 C640,6 800,55 960,30 C1120,6 1280,55 1440,36 L1440,72 L0,72 Z' fill='%23F9E5A9'/></svg>");
}
.section-countdown::after {
  background-image: url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 1440 72' preserveAspectRatio='none'><path d='M0,22 C200,58 400,4 600,42 C800,72 1000,12 1200,48 C1320,66 1400,28 1440,42 L1440,72 L0,72 Z' fill='%2364976A'/></svg>");
}
.section-venue::after {
  background-image: url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 1440 72' preserveAspectRatio='none'><path d='M0,50 C120,18 300,66 460,34 C620,8 780,62 940,30 C1100,4 1260,58 1380,36 C1420,28 1440,32 1440,32 L1440,72 L0,72 Z' fill='%23FF523B'/></svg>");
}
.section-names::after {
  background-image: url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 1440 72' preserveAspectRatio='none'><path d='M0,28 C180,64 360,4 540,48 C720,80 900,14 1080,52 C1260,80 1380,22 1440,42 L1440,72 L0,72 Z' fill='%23FFDBD6'/></svg>");
}
.section-story::after {
  background-image: url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 1440 72' preserveAspectRatio='none'><path d='M0,46 C150,12 340,66 520,32 C700,2 880,62 1060,30 C1240,4 1360,52 1440,38 L1440,72 L0,72 Z' fill='%2322375E'/></svg>");
}
.section-dresscode::after { display: none; }


/* ═══════════════════════════════════════════
   DECORATIVE LAYER
═══════════════════════════════════════════ */
.deco-layer {
  position: absolute;
  inset: 0;
  pointer-events: none;
  z-index: 200;
}

/* Hero photo overlaps section 1 → 2 */
.hero-photo { pointer-events: auto; }
.hero-photo {
  position: absolute;
  left: calc(50% - 300px);
  top: 641px;
  width: 600px;
  height: 720px;
  z-index: 7;
  outline: 32px solid var(--cream);
  outline-offset: -32px;
}
.hero-photo img { width: 100%; height: 100%; object-fit: cover; }

/* Decorative elements */
.deco { position: absolute; }

.deco-lemon  { left: 302px;  top: calc(575px  + var(--py,0px)); width: 180px; z-index: 9; }
.deco-flower { left: 937px;  top: calc(585px  + var(--py,0px)); width: 165px; z-index: 8; }
.deco-heart  { left: 82px;   top: 348px;  width: 158px; z-index: 8; }
.deco-rings  { right: 106px; top: 34px;   width: 231px; z-index: 8; }
.deco-leaf   { right: 79px;  top: 562px;  width: 126px; z-index: 8; }
.deco-italy  { left: calc(50% + 193.5px); top: calc(1131px + var(--py,0px)); width: 153px; z-index: 10; transform: translateX(-50%); }
.deco-suit   { left: 76px;   top: 5775px; width: 200px; z-index: 11; }


/* ═══════════════════════════════════════════
   KEYFRAMES
═══════════════════════════════════════════ */
@keyframes float-slow  { 0%,100%{transform:translateY(0)}   50%{transform:translateY(-14px)} }
@keyframes float       { 0%,100%{transform:translateY(0)}   50%{transform:translateY(-8px)}  }
@keyframes bob-pos     { 0%,100%{transform:translateY(0)    rotate(16deg)}  50%{transform:translateY(-10px) rotate(16deg)}  }
@keyframes bob-neg     { 0%,100%{transform:translateY(0)    rotate(-16deg)} 50%{transform:translateY(-10px) rotate(-16deg)} }
@keyframes lemon-spin  { from{transform:rotate(0deg)} to{transform:rotate(360deg)} }
@keyframes music-pulse { 0%,100%{box-shadow:0 0 0 0 rgba(242,201,76,.5)} 60%{box-shadow:0 0 0 14px rgba(242,201,76,0)} }
@keyframes wave-bounce { 0%,100%{transform:scaleY(.4)} 50%{transform:scaleY(1)} }
@keyframes fade-up     { 0%{opacity:0;transform:translateY(40px)} 100%{opacity:1;transform:translateY(0)} }
@keyframes btn-enter   { to{opacity:1;transform:translateY(0)} }
@keyframes pulse-num   { 0%,100%{transform:scale(1)} 50%{transform:scale(1.07)} }
@keyframes names-left  { from{opacity:0;transform:translateX(-220px)} to{opacity:1;transform:translateX(0)} }
@keyframes names-right { from{opacity:0;transform:translateX(220px)}  to{opacity:1;transform:translateX(0)} }
@keyframes names-amp   { from{opacity:0;transform:scale(0) rotate(-15deg)} to{opacity:1;transform:scale(1) rotate(0)} }

/* Float classes used on elements */
.float      { animation: float     4s ease-in-out infinite; }
.float-slow { animation: float-slow 6s ease-in-out infinite; }

.deco-lemon  { animation: float-slow 6s ease-in-out infinite; }
.deco-flower { animation: float     4s ease-in-out infinite; }
.deco-heart  { animation: bob-pos  5.5s ease-in-out infinite; }
.deco-rings  { animation: bob-neg  4.5s ease-in-out infinite; }
.deco-leaf   { animation: bob-pos  7s ease-in-out infinite; }
.deco-italy  { animation: float    5s ease-in-out infinite; }
.deco-suit   { animation: bob-neg  6s ease-in-out infinite; }



/* ═══════════════════════════════════════════
   SCROLL REVEAL
═══════════════════════════════════════════ */
.reveal, .reveal-photo {
  opacity: 0;
  transform: translateY(40px);
  transition: opacity .7s cubic-bezier(.22,1,.36,1) var(--d,0s),
              transform .7s cubic-bezier(.22,1,.36,1) var(--d,0s);
}
.reveal.visible, .reveal-photo.visible { opacity:1; transform:translateY(0); }

.reveal-card {
  opacity: 0;
  transform: translateY(50px);
  transition: opacity .65s cubic-bezier(.22,1,.36,1) calc(var(--i,0) * .09s),
              transform .65s cubic-bezier(.22,1,.36,1) calc(var(--i,0) * .09s);
}
.reveal-card.visible { opacity:1; transform:translateY(0); }


/* ═══════════════════════════════════════════
   TYPOGRAPHY
═══════════════════════════════════════════ */
.heading-display { font-family:var(--font-display); font-size:72px; line-height:1.2; letter-spacing:-1.44px; font-weight:400; }
.heading-sm      { font-family:var(--font-display); font-size:24px; line-height:1.2; letter-spacing:-.48px;  font-weight:400; }
.label           { font-family:var(--font-label);   font-size:24px; font-weight:700; letter-spacing:4.8px; text-transform:uppercase; line-height:1.2; }
.body-text       { font-family:var(--font-body);    font-size:24px; line-height:1.2; letter-spacing:-.48px; font-weight:400; }

.text-white     { color:var(--white);     }
.text-gold      { color:var(--gold);      }
.text-dark-blue { color:var(--dark-blue); }
.text-muted     { color:var(--muted);     }
.text-center    { text-align:center;      }
.label-gold     { color:var(--gold);      }
.label-dark     { color:var(--dark-blue); }
.c-green        { color:var(--green) !important; }
.c-red          { color:var(--red)   !important; }
.c-gold         { color:var(--gold)  !important; }


/* ═══════════════════════════════════════════
   SHARED COMPONENTS
═══════════════════════════════════════════ */
.section-header { display:flex; flex-direction:column; align-items:center; gap:16px; width:100%; }
.header-divider { width:191px; height:32px; }

.white-card {
  background: var(--white);
  border: 24px solid var(--white);
  padding: 20px;
  min-width: 280px;
  max-width: 320px;
  border-radius: 3px 10px 4px 8px / 8px 3px 12px 4px;
}
.tilt-neg { transform: rotate(-16deg); }
.tilt-pos { transform: rotate(16deg);  }


/* ═══════════════════════════════════════════
   SECTION 1 — HERO
═══════════════════════════════════════════ */
.hero-content {
  position: absolute;
  top: 140px;
  left: 50%;
  transform: translateX(-50%);
  width: 820px;
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 28px;
  z-index: 1;
  text-align: center;
}


/* ═══════════════════════════════════════════
   SECTION 2 — COUNTDOWN  (centered)
═══════════════════════════════════════════ */
.section-countdown .section-inner {
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: flex-start;
  padding-top: 390px;
}

.countdown-content {
  width: 736px;
  display: flex;
  flex-direction: column;
  gap: 40px;
  z-index: 1;
}

.countdown-grid { display:flex; gap:20px; align-items:stretch; width: 100%; }

.countdown-card {
  flex: 1;
  min-width: 0;
  position: relative;
  background: var(--dark-blue);
  border: 12px solid var(--dark-blue);
  padding: 20px;
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 20px;
  text-align: center;
  border-radius: 4px 10px 3px 8px / 8px 3px 10px 4px;
}

.cd-outline { display: none; }

.countdown-num {
  font-family: var(--font-display);
  font-size: 116px;
  line-height: 0.85;
  letter-spacing: -2px;
  display: block;
}
.countdown-num.tick { animation: pulse-num .25s ease; }

.countdown-unit {
  font-family: var(--font-body);
  font-weight: 800;
  font-size: 13px;
  color: var(--white);
  letter-spacing: 8px;
  text-transform: uppercase;
  line-height: 1.2;
}

.countdown-msg {
  position: relative;
  background: var(--white);
  border: 24px solid var(--white);
  padding: 20px;
  border-radius: 4px 12px 3px 10px / 10px 4px 12px 3px;
  display: flex;
  align-items: center;
  justify-content: center;
  min-height: 98px;
  border-radius: 8px 3px 9px 2px / 3px 7px 2px 8px;
}

.msg-outline { display: none; }


/* ═══════════════════════════════════════════
   SECTION 3 — VENUE
═══════════════════════════════════════════ */
.venue-photos { position:absolute; inset:0; pointer-events:none; }
.vp           { position:absolute; pointer-events: auto; }
.vp img:first-child { width:100%; height:100%; object-fit:cover; outline:32px solid var(--white); outline-offset:-32px; }
.vp-outline { display: none; }

.vp-1 { left:91px;   top:285px; width:300px; height:225px; transform:rotate(16deg);  }
.vp-2 { left:1100px; top:411px; width:300px; height:225px; transform:rotate(-16deg); }
.vp-3 { left:175px;  top:673px; width:225px; height:300px; }

.venue-quote {
  position: absolute;
  right: 9px; top: 739px;
  background: #F2C94C;
  border: 24px solid #F2C94C;
  border-radius: 4px 14px 3px 10px / 10px 3px 14px 4px;
  padding: 20px;
  width: 320px;
  transform: rotate(-16deg);
  pointer-events: auto;
}

.venue-card-col {
  position: absolute;
  top: 100px;
  left: 440px;
  width: 580px;
  display: flex;
  flex-direction: column;
  gap: 32px;
  z-index: 1;
}
.venue-card-col .heading-display { text-align:center; }

.venue-card {
  background: var(--dark-blue);
  border: 24px solid var(--dark-blue);
  padding: 40px 20px 20px;
  display: flex;
  flex-direction: column;
  gap: 40px;
  border-radius: 5px 12px 4px 10px / 10px 4px 12px 5px;
}
.venue-rows { display:flex; flex-direction:column; gap:10px; }
.venue-row  { display:flex; gap:10px; align-items:flex-start; }
.vi         { width:36px; height:32px; flex-shrink:0; }
.vi-sm      { width:22px; }
.venue-date  { font-family:var(--font-body); font-weight:800; font-size:24px; color:var(--gold); text-transform:uppercase; line-height:1.2; }
.venue-place { font-family:var(--font-body); font-weight:800; font-size:24px; color:var(--white); text-transform:uppercase; line-height:1.2; }
.venue-address { font-family:var(--font-body); font-size:20px; color:var(--white); line-height:1.4; padding-left:32px; }
.venue-times { padding-left:46px; display:flex; flex-direction:column; gap:4px; }
.venue-times .body-text { font-size:24px; line-height:1.4; }
.card-divider { width:100%; height:30px; }
.venue-nav-row { display:flex; gap:20px; align-items:center; }
.nav-icon { width:64px; height:64px; flex-shrink:0; }

.waze-btn {
  display:flex; align-items:center; justify-content:center; gap:10px;
  background:var(--gold); border:24px solid var(--gold); padding:20px;
  cursor:pointer;
  border-radius: 4px 12px 3px 10px / 10px 3px 12px 4px;
  transition: transform .25s cubic-bezier(.22,1,.36,1), box-shadow .25s ease;
}
.waze-btn:hover  { transform:translateY(-4px); box-shadow:0 16px 48px rgba(0,0,0,.25); }
.waze-btn:active { transform:translateY(-1px); }
.waze-btn span { font-family:var(--font-display); font-size:32px; color:var(--dark-blue); white-space:nowrap; }
.waze-icon { width:35px; height:32px; }


/* ═══════════════════════════════════════════
   SECTION 4 — NAMES (split animation)
═══════════════════════════════════════════ */
.names-logo {
  position: absolute;
  top: 50%; left: 50%;
  transform: translate(-50%,-50%);
  width: 650px; height: 997px;
  pointer-events: none;
}
.names-logo img { width:100%; height:100%; object-fit:contain; }

.names-headline {
  position: absolute;
  left: 50%;
  top: calc(50% - 144px);
  transform: translateX(-50%);
  white-space: nowrap;
  text-align: center;
  z-index: 1;
  /* hide parts initially; JS adds .animated class */
}

.names-part {
  display: inline-block;
  font-family: var(--font-display);
  font-size: 240px;
  color: var(--pink);
  letter-spacing: -4.8px;
  line-height: 1.2;
  opacity: 0;
  transition: opacity .8s cubic-bezier(.22,1,.36,1),
              transform .8s cubic-bezier(.22,1,.36,1);
}
.names-left  { transform: translateX(-220px); }
.names-right { transform: translateX(220px); }
.names-amp   { transform: scale(0) rotate(-15deg); }

/* Forward: add .animated — transitions to visible */
.names-headline.animated .names-left  { opacity:1; transform:translateX(0);        transition-delay:.1s; }
.names-headline.animated .names-amp   { opacity:1; transform:scale(1) rotate(0);   transition-delay:.3s; }
.names-headline.animated .names-right { opacity:1; transform:translateX(0);        transition-delay:.2s; }

/* Reverse: removing .animated — transitions back instantly (no delay) */
.names-headline .names-left,
.names-headline .names-right { transition-delay: 0s; }
.names-headline .names-amp   { transition-delay: 0s; }


/* ═══════════════════════════════════════════
   SECTION 5 — STORY
═══════════════════════════════════════════ */
.story-header {
  position: relative;
  padding-top: 200px;
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 20px;
  width: 720px;
  margin: 0 auto;
  z-index: 1;
}

.story-timeline-line {
  position: absolute;
  left: -80px;
  top: 160px;
  bottom: -40px;
  width: 4px;
  background: linear-gradient(to bottom, transparent 0%, var(--green) 12%, var(--green) 88%, transparent 100%);
  border-radius: 2px;
}

.story-quote-top {
  position: absolute;
  right: -40px; top: 0;
  z-index: 2;
  pointer-events: none;
}

/* Navigation arrows */
.story-nav {
  position: relative;
  display: flex;
  justify-content: center;
  gap: 16px;
  margin-top: 32px;
  z-index: 2;
}

.story-arrow {
  width: 52px; height: 52px;
  border-radius: 50%;
  border: 2px solid var(--dark-blue);
  background: var(--white);
  color: var(--dark-blue);
  cursor: pointer;
  display: flex; align-items: center; justify-content: center;
  transition: background .2s ease, color .2s ease, transform .2s ease;
  flex-shrink: 0;
}
.story-arrow:hover  { background: var(--dark-blue); color: var(--white); transform: scale(1.08); }
.story-arrow:active { transform: scale(.96); }
.story-arrow svg    { flex-shrink: 0; }

/* Horizontal scroll strip */
.story-scroll {
  position: relative;
  margin-top: 32px;
  width: 100%;
  overflow-x: scroll;
  overflow-y: visible;
  scrollbar-width: none;
  -ms-overflow-style: none;
  cursor: grab;
  user-select: none;
  z-index: 1;
}
.story-scroll::-webkit-scrollbar { display:none; }
.story-scroll.dragging { cursor:grabbing; }

.story-cards {
  display: flex;
  align-items: flex-start;
  gap: 40px;
  padding: 20px 80px 40px;
  width: max-content;
}

.story-card {
  position: relative;
  background: var(--white);
  border: 24px solid var(--white);
  padding: 20px;
  width: 320px;
  display: flex;
  flex-direction: column;
  gap: 20px;
  flex-shrink: 0;
  border-radius: 3px 9px 4px 8px / 7px 3px 8px 4px;
}

.card-outline { display: none; }

.sc-date { display:flex; gap:10px; align-items:center; }
.sc-date img { width:22px; height:19px; flex-shrink:0; }
.sc-date span { font-family:var(--font-body); font-weight:800; font-size:16px; color:var(--red); text-transform:uppercase; line-height:1.2; }

.sc-title    { font-family:var(--font-display); font-size:32px; color:var(--dark-blue); letter-spacing:-.64px; line-height:1.2; font-weight:400; }
.sc-subtitle { font-family:var(--font-label); font-size:16px; color:var(--green); font-weight:700; line-height:1.3; margin-top:-8px; }
.sc-text     { font-family:var(--font-body); font-size:16px; color:var(--dark-blue); line-height:1.4; }

/* Photo with hover zoom */
.sc-photo {
  position: relative;
  width: 100%;
  height: 240px;
  flex-shrink: 0;
  overflow: hidden;
  margin-top: 12px;
}
.sc-photo > img:first-child {
  width: 100%; height: 100%;
  object-fit: cover;
  transition: transform .5s cubic-bezier(.22,1,.36,1);
}
.story-card:hover .sc-photo > img:first-child {
  transform: scale(1.08);
}
.sc-photo::after {
  content: '';
  position: absolute;
  inset: 0;
  background: linear-gradient(to top, rgba(34,55,94,.45) 0%, transparent 60%);
  opacity: 0;
  transition: opacity .4s ease;
}
.story-card:hover .sc-photo::after { opacity: 1; }
.sc-outline { display: none; }

.sc-location { display:flex; gap:10px; align-items:flex-start; }
.sc-location img { width:14px; height:20px; flex-shrink:0; margin-top:2px; }
.sc-location span { font-family:var(--font-body); font-size:14px; color:var(--green); line-height:1.4; }


/* ═══════════════════════════════════════════
   SECTION 6 — DRESS CODE
═══════════════════════════════════════════ */
.dc-content {
  position: relative;
  padding-top: 200px;
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 40px;
  width: 720px;
  margin: 0 auto;
  z-index: 1;
}
.dc-quote-top    { position:absolute; right:-40px; top:0;     z-index:2; pointer-events:none; }
.dc-dress        { position:absolute; right:45px;  top:227px; width:180px; pointer-events:none; transform:rotate(16deg); }
.dc-dress img    { width:100%; }
.dc-quote-bottom { position:absolute; left:-40px;  bottom:250px; z-index:2; pointer-events:none; }

.swatches    { display:flex; flex-direction:column; gap:40px; width:100%; }
.swatch-row  { display:flex; gap:20px; align-items:center; justify-content:center; }

.swatch-item {
  display: flex; flex-direction: column; gap: 20px;
  align-items: center; padding: 10px; width: 120px;
  cursor: none;
  transition: transform .4s cubic-bezier(.34,1.56,.64,1);
  transform-origin: bottom center;
}
.swatch-item:hover { transform: translateY(-16px) rotate(-4deg) scale(1.12); }
.swatch-item:nth-child(even):hover { transform: translateY(-16px) rotate(4deg) scale(1.12); }

.swatch-item img {
  width: 80px; height: 181px; object-fit: contain;
  transition: filter .35s ease;
  filter: drop-shadow(0 0 0 transparent);
}
.swatch-item:hover img {
  filter: drop-shadow(0 8px 20px rgba(0,0,0,.5)) brightness(1.15);
}

.swatch-item span {
  font-family: var(--font-display); font-size: 24px; color: var(--white);
  text-align: center; letter-spacing: -.48px; line-height: 1.2; font-weight: 400;
  transition: color .3s ease, letter-spacing .3s ease;
}
.swatch-item:hover span { color: var(--gold); letter-spacing: 1px; }

.dc-divider { width:100%; height:8px; }
.dc-note    { background:#FF523B; padding:28px 32px; width:100%; border-radius: 6px 2px 8px 3px / 2px 7px 3px 8px; }
.dc-note .body-text { font-size:18px; line-height:1.4; font-weight:400; font-style:italic; color:#FFDBD6; text-align:center; }
.dc-content .heading-display { text-align: center; }

/* Smaller countdown units in LV */
[data-lang="lv"] .countdown-unit { font-size: 12px; letter-spacing: 6px; }


/* ═══════════════════════════════════════════
   CUSTOM CURSOR
═══════════════════════════════════════════ */
.cursor {
  position: fixed;
  top: 0; left: 0;
  pointer-events: none;
  z-index: 99999;
  will-change: transform;
  transform: translate(-4px, -4px);
}
.cur-hand { display: none; }
.cursor.is-pointer .cur-arrow { display: none; }
.cursor.is-pointer .cur-hand  { display: block; }


/* ═══════════════════════════════════════════
   MUSIC PLAYER BUTTON
═══════════════════════════════════════════ */
.music-btn {
  position: fixed;
  bottom: 32px; right: 32px;
  z-index: 9999;
  display: flex;
  align-items: center;
  gap: 10px;
  background: var(--dark-blue);
  border: 2px solid var(--gold);
  border-radius: 50px;
  padding: 12px 20px;
  color: var(--gold);
  opacity: 0;
  transform: translateY(20px);
  animation: btn-enter .6s .9s cubic-bezier(.22,1,.36,1) forwards;
  transition: background .25s ease, color .25s ease, transform .25s cubic-bezier(.22,1,.36,1);
}
.music-btn:hover  { background: var(--gold); color: var(--dark-blue); transform: translateY(-3px) !important; }
.music-btn.playing {
  animation: btn-enter .6s .9s cubic-bezier(.22,1,.36,1) forwards,
             music-pulse 2s 1.5s ease-in-out infinite;
}

.music-icon { flex-shrink: 0; }

.music-label {
  font-family: var(--font-label);
  font-size: 14px;
  font-weight: 700;
  letter-spacing: 2px;
  text-transform: uppercase;
  line-height: 1;
}

.music-waves {
  display: none;
  align-items: flex-end;
  gap: 3px;
  height: 20px;
}
.music-btn.playing .music-waves { display: flex; }

.wave {
  display: block;
  width: 3px;
  background: currentColor;
  border-radius: 2px;
  transform-origin: bottom;
}
.wave:nth-child(1) { height:8px;  animation: wave-bounce .6s .0s ease-in-out infinite; }
.wave:nth-child(2) { height:14px; animation: wave-bounce .6s .1s ease-in-out infinite; }
.wave:nth-child(3) { height:18px; animation: wave-bounce .6s .2s ease-in-out infinite; }
.wave:nth-child(4) { height:11px; animation: wave-bounce .6s .3s ease-in-out infinite; }


/* ═══════════════════════════════════════════
   VINYL INDICATOR (above music btn when playing)
═══════════════════════════════════════════ */
@keyframes vinyl-spin { from{transform:rotate(0deg)} to{transform:rotate(360deg)} }

.vinyl-indicator {
  position: fixed;
  bottom: 120px;
  right: 47px;
  z-index: 9998;
  opacity: 0;
  transform: translateY(12px) scale(0.7);
  transition: opacity .4s cubic-bezier(.22,1,.36,1), transform .4s cubic-bezier(.22,1,.36,1);
  pointer-events: none;
}
.vinyl-indicator.visible {
  opacity: 1;
  transform: translateY(0) scale(1);
}

.vinyl-ring {
  position: relative;
  width: 64px; height: 64px;
  border-radius: 50%;
  background: #1a1a1a;
  box-shadow:
    0 0 0 3px #222,
    0 0 0 6px #111,
    0 0 0 9px #222,
    0 6px 20px rgba(0,0,0,.6);
  animation: vinyl-spin 2s linear infinite;
}

.vinyl-grooves-sm {
  position: absolute;
  inset: 4px;
  border-radius: 50%;
  background: repeating-radial-gradient(
    circle at center,
    #222 0px, #222 2px,
    #111 2px, #111 4px
  );
}

.vinyl-center-sm {
  position: absolute;
  top: 50%; left: 50%;
  transform: translate(-50%, -50%);
  width: 22px; height: 22px;
  border-radius: 50%;
  overflow: hidden;
  background: var(--gold);
  z-index: 1;
}
.vinyl-center-sm img { width: 100%; height: 100%; object-fit: cover; }


/* ═══════════════════════════════════════════
   FLOATING HEARTS
═══════════════════════════════════════════ */
@keyframes heart-rise {
  0%   { opacity: 0; transform: translateY(0)     scale(.4) rotate(var(--hr,0deg)); }
  18%  { opacity: 1; transform: translateY(-22px)  scale(1)  rotate(calc(var(--hr,0deg)*.4)); }
  100% { opacity: 0; transform: translateY(-160px) scale(.6) rotate(var(--hre,15deg)); }
}

.float-heart {
  position: fixed;
  pointer-events: none;
  z-index: 99990;
  font-size: 18px;
  line-height: 1;
  animation: heart-rise var(--dur,.9s) ease-out forwards;
  transform-origin: center bottom;
  user-select: none;
}


/* ═══════════════════════════════════════════
   LANGUAGE SWITCHER
═══════════════════════════════════════════ */
.lang-switcher {
  position: fixed;
  bottom: 32px; left: 32px;
  z-index: 9999;
  display: flex;
  align-items: center;
  gap: 6px;
  background: var(--dark-blue);
  border: 2px solid rgba(255,255,255,.15);
  border-radius: 100px;
  padding: 10px 20px;
  opacity: 0;
  transform: translateY(20px);
  animation: btn-enter .6s 1.2s cubic-bezier(.22,1,.36,1) forwards;
  transition: background .25s ease, transform .25s cubic-bezier(.22,1,.36,1);
}
.lang-switcher:hover { background: rgba(34,55,94,.95); transform: translateY(-3px) !important; }

.lang-btn {
  font-family: var(--font-label);
  font-weight: 700;
  font-size: 14px;
  color: var(--muted);
  background: none;
  border: none;
  letter-spacing: 2px;
  padding: 0;
  transition: color .2s;
}
.lang-btn.lang-active { color: var(--white); }
.lang-btn:hover       { color: rgba(255,255,255,.7); }
.lang-sep { color: var(--muted); font-size: 12px; opacity: .35; }


/* ═══════════════════════════════════════════
   STORY CLOSING
═══════════════════════════════════════════ */
.story-closing-wrap {
  max-width: 1440px;
  margin: 0 auto;
  padding: 48px 80px 0;
  display: flex;
  flex-direction: column;
  gap: 6px;
  position: relative;
  z-index: 5;
  text-align: center;
}

/* Heart battery animation */
.heart-battery {
  display: flex;
  justify-content: center;
  align-items: center;
  gap: 10px;
  margin-top: 20px;
}

.hb-heart {
  font-size: 28px;
  opacity: 0.15;
  filter: grayscale(1);
  animation: hb-charge 2.5s ease-in-out infinite;
}

.hb-heart:nth-child(1) { animation-delay: 0s;    }
.hb-heart:nth-child(2) { animation-delay: 0.35s;  }
.hb-heart:nth-child(3) { animation-delay: 0.70s;  }
.hb-heart:nth-child(4) { animation-delay: 1.05s;  }
.hb-heart:nth-child(5) { animation-delay: 1.40s;  }

@keyframes hb-charge {
  0%   { opacity: 0.15; filter: grayscale(1) brightness(0.7); transform: scale(1);    }
  30%  { opacity: 1;    filter: grayscale(0) brightness(1.2); transform: scale(1.35); color: #FF523B; }
  55%  { opacity: 1;    filter: grayscale(0) brightness(1);   transform: scale(1.1);  color: #FF523B; }
  100% { opacity: 0.15; filter: grayscale(1) brightness(0.7); transform: scale(1);    }
}

/* Hero mobile photo — hidden on desktop */
.hero-photo-mobile { display: none; }


/* ═══════════════════════════════════════════
   RESPONSIVE — WIDE TABLET / IPAD AIR & PRO  (1101px – 1439px)
   Fixes horizontal scroll + cursor on large iPads in landscape
═══════════════════════════════════════════ */
@media (min-width: 1101px) and (max-width: 1439px) {
  .page-wrapper { min-width: 0; overflow-x: hidden; }
  .cursor { display: none; }
  * { cursor: auto !important; }
  body { cursor: auto; }
  /* vp-2 at left:1100px overflows viewports narrower than ~1400px */
  .vp-2 { left: auto; right: 8px; }

  /* Venue section: flow layout so quote appears below the card */
  .section-venue { height: auto; }
  .section-venue .section-inner { min-height: 900px; }
  .venue-card-col {
    position: relative;
    left: auto; top: auto;
    transform: none;
    width: min(600px, 70%);
    margin: 0 auto;
    padding: 80px 20px 0;
    gap: 32px;
  }
  .venue-quote {
    position: relative;
    top: auto; right: auto; left: auto;
    transform: rotate(-10deg);
    width: min(300px, 40%);
    margin: 40px auto 80px;
    font-size: 16px;
  }
  /* Prevent subpixel gap between venue and names sections */
  .section-venue::after { bottom: -2px; }
}


/* ═══════════════════════════════════════════
   RESPONSIVE — TABLET  (≤ 1100px)
═══════════════════════════════════════════ */
@media (max-width: 1100px) {
  .page-wrapper { min-width: 0; }

  /* ── Hide cursor on tablets (touch devices) ── */
  .cursor { display: none; }
  * { cursor: auto !important; }
  body { cursor: auto; }

  /* ── Typography ── */
  .heading-display { font-size: 54px; letter-spacing: -1px; }
  .body-text       { font-size: 20px; }
  .label           { font-size: 20px; letter-spacing: 3.5px; }

  /* ── Section heights ── */
  .section-hero      { height: 720px; }
  .section-countdown { height: auto; min-height: 780px; }
  .section-venue     { height: auto; min-height: 0; }
  .section-venue .section-inner { min-height: 880px; }
  .section-names     { height: 720px; }

  /* ── Decos: scale & reposition relative to center ── */
  .deco-lemon  { left: calc(50% - 310px); top: calc(430px + var(--py,0px)); width: 110px; }
  .deco-flower { right: calc(50% - 340px); left: auto; top: calc(440px + var(--py,0px)); width: 100px; }
  .deco-heart  { left: 24px;  top: 270px; width: 100px; }
  .deco-rings  { right: 30px; top: 16px;  width: 150px; }
  .deco-leaf   { right: 24px; top: 430px; width: 80px; }
  .deco-italy  { left: calc(50% + 80px); top: calc(2100px + var(--py,0px)); width: 90px; }
  .deco-suit   { display: none; }

  /* ── Hero photo ── */
  .hero-photo {
    left: calc(50% - 200px);
    top: 490px;
    width: 400px;
    height: 480px;
    outline-width: 22px;
    outline-offset: -22px;
  }

  /* ── Venue photos: thinner outline ── */
  .vp img:first-child { outline-width: 16px; outline-offset: -16px; }

  /* ── Section 1: hero content ── */
  .hero-content { width: min(700px, 90%); top: 88px; }

  /* ── Section 2: countdown ── */
  .section-countdown .section-inner { padding-top: 300px; }
  .countdown-content { width: min(680px, 90%); }
  .countdown-num { font-size: 92px; }

  /* ── Section 3: venue ── */
  .vp-1 { left: 16px;  top: 360px; width: 210px; height: 158px; }
  .vp-2 { left: auto; right: 8px; top: 400px; width: 210px; height: 158px; }
  .vp-3 { left: 80px;  top: 590px; width: 158px; height: 210px; }
  .venue-card-col {
    position: relative;
    left: auto; top: auto;
    transform: none;
    width: min(520px, 80%);
    margin: 0 auto;
    padding: 80px 20px 0;
    gap: 28px;
  }
  .venue-quote {
    position: relative;
    top: auto; right: auto; left: auto;
    transform: rotate(-10deg);
    width: min(260px, 60%);
    margin: 32px auto 64px;
    font-size: 15px;
  }

  /* ── Section 4: names ── */
  .names-part      { font-size: 150px; }
  .names-left      { transform: translateX(-170px); }
  .names-right     { transform: translateX(170px); }
  .names-headline  { top: calc(50% - 90px); }
  .names-headline.animated .names-left  { transform: translateX(0); }
  .names-headline.animated .names-right { transform: translateX(0); }

  /* ── Section 5: story ── */
  .story-header { width: min(720px, 92%); padding-top: 120px; }

  /* ── Section 6: dresscode ── */
  .dc-content      { width: min(720px, 92%); padding-top: 120px; }
  .dc-quote-top    { right: -16px; }
  .dc-quote-bottom {
    position: relative;
    left: auto; bottom: auto;
    margin: 0 auto 48px;
    width: min(280px, 60%);
  }

  /* ── Vinyl ── */
  .vinyl-indicator { right: 38px; }
}


/* ═══════════════════════════════════════════
   RESPONSIVE — MOBILE  (≤ 767px)
═══════════════════════════════════════════ */
@media (max-width: 767px) {

  /* ── Base ── */
  .page-wrapper { min-width: 0; }
  .cursor { display: none; }
  * { cursor: auto !important; }
  body { cursor: auto; }

  /* ── Typography ── */
  .heading-display { font-size: 38px; letter-spacing: -.5px; line-height: 1.15; }
  .heading-sm      { font-size: 19px; letter-spacing: -.3px; }
  .label           { font-size: 14px; letter-spacing: 3px; }
  .body-text       { font-size: 17px; line-height: 1.5; letter-spacing: -.2px; }
  .header-divider  { width: 140px; height: 24px; }

  /* ── Waves ── */
  .section::after { height: 44px; }

  /* ── Sections: height auto ── */
  .section-hero      { height: auto; }
  .section-countdown { height: auto; min-height: 0; }
  .section-venue     { height: auto; min-height: 0; }
  .section-names     { height: 100vh; }
  .section-names .section-inner { height: 100%; }
  .section-story     { min-height: 0; }
  .section-dresscode { min-height: 0; padding-bottom: 80px; }

  /* ── Deco layer: hide most decos + desktop hero photo ── */
  .deco           { display: none; }
  .hero-photo     { display: none; }

  /* ── Hero decos: show 5 elements, repositioned for mobile ── */
  .deco-italy  { display: block; right: 8px; left: auto; top: calc(1420px + var(--py,0px)); width: 68px; transform: none; }
  .deco-rings  { display: block; right: 12px; left: auto; top: 10px;  width: 75px; }
  .deco-heart  { display: block; left: 8px;                top: 198px; width: 60px; }
  .deco-leaf   { display: block; right: 10px; left: auto;  top: 222px; width: 50px; }
  /* Lemon and flower near the hero photo */
  .deco-flower { display: block; right: 8px;  left: auto; top: 330px;                   width: 56px; }
  .deco-lemon  { display: block; left: 8px;               top: calc(350px + var(--py,0px)); width: 58px; }

  /* ── Section 1: HERO ── */
  .section-inner { height: auto; }

  .hero-content {
    position: relative;
    top: auto; left: auto;
    transform: none;
    width: 100%;
    padding: 56px 24px 32px;
    gap: 18px;
  }

  .hero-photo-mobile {
    display: block;
    position: relative;
    z-index: 3;
    width: calc(100% - 48px);
    max-width: 320px;
    height: 340px;
    margin: 0 auto 64px;
    outline: 18px solid var(--cream);
    outline-offset: -18px;
    overflow: hidden;
  }
  .hero-photo-mobile img {
    width: 100%; height: 100%; object-fit: cover;
  }

  /* ── Section 2: COUNTDOWN ── */
  .section-countdown .section-inner {
    padding-top: 64px;
    padding-bottom: 72px;
  }
  .countdown-content {
    width: 100%;
    padding: 0 20px;
    gap: 24px;
  }
  .countdown-grid {
    display: grid;
    grid-template-columns: repeat(2, 1fr);
    gap: 12px;
  }
  .countdown-num  { font-size: 68px; }
  .countdown-unit { font-size: 11px; letter-spacing: 5px; }
  [data-lang="lv"] .countdown-unit { font-size: 10px; letter-spacing: 4px; }
  .countdown-msg  { padding: 14px; border-width: 16px; }
  .countdown-msg .heading-sm { font-size: 17px; }

  /* ── Section 3: VENUE ── */
  .section-venue { padding-bottom: 56px; }
  .venue-photos  { display: none; }
  .venue-quote {
    position: relative;
    top: auto; right: auto; left: auto;
    transform: rotate(-6deg);
    width: calc(100% - 48px);
    max-width: 320px;
    margin: 24px auto 0;
    font-size: 15px;
  }
  .venue-card-col {
    position: relative;
    top: auto; left: auto;
    transform: none;
    width: 100%;
    padding: 56px 20px 0;
    gap: 20px;
  }
  .venue-card-col .heading-display { font-size: 36px; }
  .venue-card { border-width: 16px; gap: 28px; padding: 28px 16px 16px; }
  .venue-date    { font-size: 17px; }
  .venue-place   { font-size: 17px; }
  .venue-address { font-size: 15px; padding-left: 24px; }
  .venue-times   { padding-left: 36px; }
  .venue-times .body-text { font-size: 17px; }
  .waze-btn { border-width: 16px; padding: 14px; }
  .waze-btn span { font-size: 22px; }
  /* Nav row: icon left, text right — no wrapping */
  .nav-icon { width: 36px; height: 36px; flex-shrink: 0; }
  .venue-nav-row { gap: 12px; flex-wrap: nowrap; align-items: flex-start; }

  /* ── Section 4: NAMES — vertical stack, large text ── */
  .names-logo { width: min(300px, 75vw); height: auto; }
  .names-headline {
    white-space: normal;
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 0;
    top: 50%;
    transform: translate(-50%, -50%);
    text-align: center;
  }
  .names-part      { font-size: 100px; letter-spacing: -2px; line-height: 1.1; }
  .names-amp       { font-size: 72px; }
  .names-left      { transform: translateY(-70px); }
  .names-right     { transform: translateY(70px); }
  .names-headline.animated .names-left  { opacity: 1; transform: translateY(0); }
  .names-headline.animated .names-amp   { opacity: 1; transform: scale(1) rotate(0); }
  .names-headline.animated .names-right { opacity: 1; transform: translateY(0); }

  /* ── Section 5: STORY ── */
  .story-header {
    width: 100%;
    padding: 56px 20px 0;
    gap: 14px;
  }
  .story-quote-top { display: none; }
  .story-nav { margin-top: 20px; }
  .story-scroll { margin-top: 20px; }
  .story-cards  { padding: 16px 20px 36px; gap: 20px; }
  .story-card   { width: 268px; border-width: 16px; gap: 16px; }
  .sc-photo     { height: 190px; }
  .sc-title     { font-size: 26px; }
  .sc-text      { font-size: 15px; }
  .story-closing-wrap { padding: 36px 24px 0; }
  .hb-heart { font-size: 22px; }

  /* ── Section 6: DRESSCODE ── */
  .dc-content {
    width: 100%;
    padding: 56px 20px 0;
    gap: 24px;
  }
  .dc-content .heading-display { font-size: 34px; }
  .dc-quote-top    { display: none; }
  .dc-dress        { display: none; }
  .dc-quote-bottom {
    position: relative;
    left: auto; bottom: auto;
    margin: 0 auto 40px;
    width: min(260px, 80%);
  }
  /* Compact white cards on mobile */
  .white-card {
    border-width: 14px;
    padding: 12px;
    min-width: 0;
  }

  /* Swatches: 4 + 3 + 3 flex rows */
  .swatches   { display: flex; flex-direction: column; gap: 16px; }
  .swatch-row { display: flex; flex-wrap: nowrap; justify-content: center; gap: 6px; }
  .swatch-item      { width: 74px; flex-shrink: 0; padding: 4px; gap: 6px; }
  .swatch-item img  { width: 44px; height: 100px; }
  .swatch-item span { font-size: 13px; }
  .dc-note          { padding: 20px 24px; }
  .dc-note .body-text { font-size: 16px; }

  /* ── Fixed UI: music + lang ── */
  .music-btn    { bottom: 20px; right: 20px; padding: 10px 16px; gap: 8px; }
  .music-label  { font-size: 13px; }
  .lang-switcher { bottom: 20px; left: 20px; padding: 8px 16px; }
  .lang-btn     { font-size: 13px; }
  .vinyl-indicator { right: 28px; bottom: 88px; }
}


/* ═══════════════════════════════════════════
   RESPONSIVE — SMALL MOBILE  (≤ 399px / iPhone SE)
═══════════════════════════════════════════ */
@media (max-width: 399px) {
  .heading-display { font-size: 34px; }
  .heading-sm      { font-size: 17px; }
  .body-text       { font-size: 16px; }
  .label           { font-size: 13px; letter-spacing: 2.5px; }

  .hero-content    { padding: 48px 20px 28px; gap: 16px; }
  .hero-photo-mobile { height: 290px; }

  .countdown-num   { font-size: 58px; }
  .countdown-unit  { font-size: 10px; letter-spacing: 4px; }

  .venue-card-col  { padding: 44px 16px 0; }
  .venue-card-col .heading-display { font-size: 32px; }
  .venue-card      { gap: 22px; padding: 22px 14px 14px; border-width: 14px; }
  .venue-date      { font-size: 15px; }
  .venue-place     { font-size: 15px; }
  .venue-address   { font-size: 14px; }
  .venue-times .body-text { font-size: 15px; }
  .waze-btn span   { font-size: 19px; }

  .names-part { font-size: 86px; }
  .names-amp  { font-size: 62px; }
  .names-left  { transform: translateY(-60px); }
  .names-right { transform: translateY(60px); }

  .story-header    { padding: 44px 16px 0; }
  .story-cards     { padding: 14px 16px 32px; }
  .story-card      { width: 248px; border-width: 14px; }
  .sc-photo        { height: 170px; }

  .dc-content      { padding: 44px 16px 0; }
  .swatch-item     { width: 62px; }
  .swatch-item img { width: 36px; height: 82px; }
  .swatch-item span { font-size: 12px; }
  .dc-note .body-text { font-size: 15px; }

  .music-btn    { right: 16px; bottom: 16px; padding: 8px 14px; }
  .lang-switcher { left: 16px; bottom: 16px; padding: 6px 14px; }
}


/* ═══════════════════════════════════════════
   RESPONSIVE — MOBILE LANDSCAPE
═══════════════════════════════════════════ */
@media (max-width: 900px) and (orientation: landscape) {
  .deco-italy { display: block; right: 12px; left: auto; top: calc(1000px + var(--py,0px)); width: 72px; transform: none; }
}
