/* ==========================================================================
   Riya & Ranjan — Wedding Invitation (Bride's Side)
   ========================================================================== */

:root{
  /* -- Palette (rose / pink-forward) -- */
  --maroon-950:#2B0813;
  --maroon-900:#420F23;
  --maroon-800:#5E1832;
  --maroon-700:#7E2141;
  --maroon-600:#9E2B53;
  --rose-500:#C2456F;
  --rose-400:#D97CA0;
  --rose-300:#EBAFC5;
  --blush-100:#F9E1E6;
  --blush-50:#FDF1F3;
  --ivory:#FFFBF8;
  --gold-300:#EDD9A3;
  --gold-400:#D8B876;
  --gold-500:#C9A15A;
  --gold-600:#A9793B;
  --gold-700:#8A5E2B;
  --ink:#3B1424;
  --ink-soft:#74364C;

  /* -- Type -- */
  --font-display:'Cormorant Garamond', 'Times New Roman', serif;
  --font-script:'Great Vibes', cursive;
  --font-sans:'Jost', 'Segoe UI', sans-serif;

  --fs-eyebrow: clamp(.66rem, .6rem + .25vw, .8rem);
  --fs-h1: clamp(2.6rem, 1.6rem + 5.4vw, 6.4rem);
  --fs-h2: clamp(2rem, 1.5rem + 2.4vw, 3.6rem);
  --fs-h3: clamp(1.4rem, 1.2rem + 1vw, 1.9rem);
  --fs-body: clamp(1rem, .95rem + .2vw, 1.125rem);
  --fs-lg: clamp(1.15rem, 1rem + .6vw, 1.5rem);

  /* -- Motion / shape -- */
  --ease-silk: cubic-bezier(.22,.61,.36,1);
  --dur-1: .45s;
  --dur-2: .7s;
  --radius-card: 28px;
  --container: 1180px;

  color-scheme: light;
}

/* -- Reset -- */
*,*::before,*::after{ box-sizing:border-box; }
html{ scroll-behavior:smooth; }
body{
  margin:0;
  background:var(--blush-50);
  color:var(--ink);
  font-family:var(--font-sans);
  font-size:var(--fs-body);
  line-height:1.6;
  -webkit-font-smoothing:antialiased;
  overflow-x:hidden;
  overflow-y:hidden;
}
body.is-unlocked{ overflow-y:auto; }
img{ max-width:100%; display:block; }
a{ color:inherit; text-decoration:none; }
button{ font:inherit; cursor:pointer; }
h1,h2,h3,p{ margin:0; }
ul{ margin:0; padding:0; list-style:none; }
::selection{ background:var(--gold-400); color:var(--maroon-950); }

:focus-visible{ outline:2px solid var(--gold-500); outline-offset:4px; border-radius:4px; }

.sr-only{
  position:absolute; width:1px; height:1px; padding:0; margin:-1px;
  overflow:hidden; clip:rect(0,0,0,0); white-space:nowrap; border:0;
}

[hidden]{ display:none !important; }

/* -- Grain overlay (premium texture) -- */
.grain{
  position:fixed; inset:0; z-index:998; pointer-events:none;
  opacity:.035; mix-blend-mode:overlay;
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='120' height='120'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.85' numOctaves='2' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E");
}

/* -- Shared utility -- */
.container{ max-width:var(--container); margin-inline:auto; padding-inline:clamp(1.25rem,4vw,3rem); }
.center{ text-align:center; }

.eyebrow{
  font-family:var(--font-sans);
  font-size:var(--fs-eyebrow);
  letter-spacing:.32em;
  text-transform:uppercase;
  color:var(--gold-600);
  font-weight:500;
  display:inline-flex;
  align-items:center;
  gap:.7em;
}
.eyebrow::before,.eyebrow::after{
  content:'';
  width:26px; height:1px;
  background:linear-gradient(90deg,transparent,var(--gold-500));
}
.eyebrow::after{ background:linear-gradient(90deg,var(--gold-500),transparent); }
.eyebrow--light{ color:var(--gold-300); }
.eyebrow--light::before{ background:linear-gradient(90deg,transparent,var(--gold-300)); }
.eyebrow--light::after{ background:linear-gradient(90deg,var(--gold-300),transparent); }

.section-title{
  font-family:var(--font-display);
  font-weight:600;
  font-size:var(--fs-h2);
  color:var(--maroon-800);
  margin-top:.5em;
  letter-spacing:.01em;
}
.script{ font-family:var(--font-script); font-weight:400; }

.btn{
  --btn-fg:var(--ivory);
  position:relative;
  display:inline-flex;
  align-items:center;
  gap:.6em;
  padding:.95em 2.1em;
  border-radius:999px;
  font-size:.95rem;
  font-weight:500;
  letter-spacing:.04em;
  border:1px solid transparent;
  transition:transform var(--dur-1) var(--ease-silk), box-shadow var(--dur-1) var(--ease-silk), background var(--dur-1) var(--ease-silk), color var(--dur-1) var(--ease-silk);
  min-height:44px;
}
.btn--solid{
  background:linear-gradient(135deg,var(--gold-400),var(--gold-600));
  color:var(--maroon-950);
  box-shadow:0 10px 30px -12px rgba(169,121,59,.6);
}
.btn--solid:hover{ transform:translateY(-3px); box-shadow:0 16px 34px -12px rgba(169,121,59,.75); }
.btn--outline{
  background:transparent;
  border-color:var(--gold-600);
  color:var(--maroon-800);
}
.btn--outline:hover{ background:var(--maroon-800); color:var(--ivory); border-color:var(--maroon-800); transform:translateY(-3px); }

.pattern-jali{
  background-image:
    repeating-linear-gradient(45deg, rgba(169,121,59,.16) 0 1px, transparent 1px 42px),
    repeating-linear-gradient(-45deg, rgba(169,121,59,.16) 0 1px, transparent 1px 42px);
}

/* particles / bokeh */
.particles{ position:absolute; inset:0; overflow:hidden; pointer-events:none; }
.particle{
  position:absolute;
  border-radius:50%;
  background:radial-gradient(circle, rgba(216,184,118,.9), rgba(216,184,118,0) 70%);
  animation:twinkle 4.5s ease-in-out infinite;
}
@keyframes twinkle{
  0%,100%{ opacity:.15; transform:scale(.8); }
  50%{ opacity:.85; transform:scale(1.15); }
}

/* ==========================================================================
   Cover / lock screen
   ========================================================================== */
.cover{
  position:fixed; inset:0; z-index:500;
  display:flex; align-items:center; justify-content:center;
  overflow:hidden;
  transition:opacity .6s var(--ease-silk), visibility .6s var(--ease-silk);
}
.cover.is-open{ opacity:0; visibility:hidden; pointer-events:none; }

.cover__panel{
  position:absolute; top:0; bottom:0; width:50%;
  background-image:
    repeating-linear-gradient(45deg, rgba(216,184,118,.1) 0 1px, transparent 1px 42px),
    repeating-linear-gradient(-45deg, rgba(216,184,118,.1) 0 1px, transparent 1px 42px),
    radial-gradient(220% 100% at 50% 0%, var(--maroon-800) 0%, var(--maroon-900) 45%, var(--maroon-950) 100%);
}
.cover__panel--left{ left:0; }
.cover__panel--right{ right:0; }
.cover .particles{ z-index:2; }
.cover__panel::before{
  content:'';
  position:absolute; top:14px; bottom:14px;
  border-top:1px solid rgba(216,184,118,.55);
  border-bottom:1px solid rgba(216,184,118,.55);
  pointer-events:none;
}
.cover__panel--left::before{ left:14px; right:0; border-left:1px solid rgba(216,184,118,.55); border-radius:8px 0 0 8px; }
.cover__panel--right::before{ right:14px; left:0; border-right:1px solid rgba(216,184,118,.55); border-radius:0 8px 8px 0; }

.cover__seam{
  position:absolute; top:0; bottom:0; left:50%; width:3px; margin-left:-1.5px;
  background:linear-gradient(180deg, transparent, var(--gold-300), transparent);
  opacity:0; z-index:3; filter:blur(.5px);
  box-shadow:0 0 24px 4px rgba(216,184,118,.5);
}

.cover__butterfly{
  position:absolute; z-index:4; left:50%; top:64%; width:52px;
  transform:translate(-50%,-50%) scale(.5);
  opacity:0; pointer-events:none;
}

.cover__content{
  position:relative; z-index:5;
  text-align:center;
  padding:2rem 1.5rem;
  max-height:100vh; max-height:100svh; overflow-y:auto; overscroll-behavior:contain;
  display:flex; flex-direction:column; align-items:center; gap:.75rem;
  opacity:0; transform:translateY(14px);
  animation:coverIn 1.1s var(--ease-silk) .3s forwards;
}
@keyframes coverIn{ to{ opacity:1; transform:translateY(0); } }

.cover__deity{ width:clamp(92px,20vw,132px); }
.ganesha-svg{ width:100%; height:auto; display:block; filter:drop-shadow(0 2px 6px rgba(0,0,0,.3)); }

.invocation{
  font-family:'Tiro Devanagari Sanskrit', var(--font-display), serif;
  color:var(--gold-300);
  line-height:1.7;
}
.invocation--cover{ font-size:clamp(.9rem,3.4vw,1.05rem); letter-spacing:.02em; margin-top:-.2rem; }

.monogram{
  width:clamp(96px,20vw,132px); height:clamp(96px,20vw,132px);
  border-radius:50%;
  border:1px solid var(--gold-500);
  display:flex; align-items:center; justify-content:center;
  position:relative;
  margin-block:.25rem;
}
.monogram::before{
  content:''; position:absolute; inset:7px; border:1px solid rgba(216,184,118,.45); border-radius:50%;
}
.monogram__text{
  font-family:var(--font-display);
  font-size:clamp(1.6rem,5vw,2.4rem);
  color:var(--gold-300);
  letter-spacing:.03em;
}
.monogram__text .script{ color:var(--gold-400); font-size:.8em; margin-inline:.05em; }

.cover__names{
  font-family:var(--font-display);
  font-weight:500;
  color:var(--ivory);
  font-size:clamp(2.1rem,7vw,3.4rem);
  line-height:1.15;
}
.cover__names .script{
  display:block;
  color:var(--gold-400);
  font-size:1.05em;
  margin-block:.05em;
}
.cover__date{
  font-size:var(--fs-eyebrow);
  letter-spacing:.28em;
  text-transform:uppercase;
  color:var(--gold-300);
}
.cover__cta{
  margin-top:.75rem;
  background:transparent;
  border:1px solid var(--gold-500);
  color:var(--gold-300);
  padding:.85em 1.8em;
  border-radius:999px;
  font-size:.85rem;
  letter-spacing:.14em;
  text-transform:uppercase;
  display:inline-flex; align-items:center; gap:.7em;
  transition:background var(--dur-1) var(--ease-silk), color var(--dur-1) var(--ease-silk), transform var(--dur-1) var(--ease-silk);
  min-height:44px;
}
.cover__cta::after{
  content:''; width:8px; height:8px; border-radius:50%;
  background:var(--gold-400);
  box-shadow:0 0 0 0 rgba(216,184,118,.7);
  animation:pulseRing 1.8s ease-out infinite;
}
@keyframes pulseRing{
  0%{ box-shadow:0 0 0 0 rgba(216,184,118,.55); }
  100%{ box-shadow:0 0 0 10px rgba(216,184,118,0); }
}
.cover__cta:hover{ background:var(--gold-400); color:var(--maroon-950); transform:translateY(-2px); }

/* ==========================================================================
   Butterflies
   ========================================================================== */
.butterfly-track{
  position:fixed; inset:0;
  pointer-events:none; z-index:45;
  overflow:hidden;
}
.butterfly{
  position:absolute;
  width:clamp(46px,6vw,84px);
  pointer-events:none;
  filter:drop-shadow(0 8px 14px rgba(58,15,30,.28));
  will-change:transform, left, top;
}
.butterfly--primary{ left:82%; top:14%; width:clamp(52px,6.6vw,88px); }

/* Ambient accents: page-relative, live inside their own section, scroll away normally */
.butterfly--a1{ top:2%; left:2%; width:clamp(36px,4.6vw,54px); opacity:.9; z-index:2; }
.butterfly--a2{ top:4%; right:6%; width:clamp(32px,4.2vw,48px); opacity:.85; z-index:2; }

.butterfly-float{ will-change:transform; }

.butterfly-svg{ width:100%; height:auto; overflow:visible; display:block; }

.wing-group{ transform-box:fill-box; }
.wing-group--left{ transform-origin:100% 50%; animation:flapL .5s ease-in-out infinite; }
.wing-group--right{ transform-origin:0% 50%; animation:flapR .5s ease-in-out infinite; }
@keyframes flapL{
  0%,100%{ transform:scaleX(1) rotate(0deg); }
  45%{ transform:scaleX(.42) rotate(-8deg); }
}
@keyframes flapR{
  0%,100%{ transform:scaleX(1) rotate(0deg); }
  45%{ transform:scaleX(.42) rotate(8deg); }
}
.butterfly--a1 .wing-group{ animation-duration:.62s; }
.butterfly--a2 .wing-group{ animation-duration:.4s; }

/* ==========================================================================
   Hero
   ========================================================================== */
.hero{
  position:relative;
  min-height:100svh;
  display:flex; align-items:flex-end;
  overflow:hidden;
  background:var(--maroon-950);
}
.hero__media{
  position:absolute; inset:0;
  transform:scale(1.08);
}
.hero__media img{
  width:100%; height:100%; object-fit:cover; object-position:50% 18%;
}
.hero__scrim{
  position:absolute; inset:0;
  background:
    linear-gradient(180deg, rgba(37,8,17,.5) 0%, rgba(37,8,17,.3) 26%, rgba(37,8,17,.62) 50%, rgba(37,8,17,.88) 76%, rgba(37,8,17,.97) 100%);
}
.hero__content{
  position:relative; z-index:2;
  width:100%;
  padding:clamp(6rem,18vh,9rem) clamp(1.25rem,6vw,4rem) clamp(2.5rem,6vh,3.5rem);
  text-align:center;
  display:flex; flex-direction:column; align-items:center; gap:1rem;
}
.hero__title{
  font-family:var(--font-display);
  font-weight:600;
  font-size:var(--fs-h1);
  color:var(--ivory);
  line-height:1.05;
  text-shadow:0 6px 30px rgba(0,0,0,.35);
}
.hero__title .script{ color:var(--gold-400); font-size:.62em; margin-inline:.12em; }
.hero__kicker{
  font-family:var(--font-display);
  font-style:italic;
  font-size:var(--fs-lg);
  color:var(--blush-100);
}
.hero__schedule{
  margin-top:1rem;
  width:min(100%,340px);
  padding:.3rem clamp(1.1rem,4vw,1.6rem);
  border:1px solid rgba(216,184,118,.35);
  border-radius:24px;
  background:rgba(255,255,255,.05);
  backdrop-filter:blur(10px);
}
.hero__schedule-row{
  display:grid; grid-template-columns:5.1rem 1fr; align-items:center; gap:.9rem;
  padding:.78rem 0;
  text-align:left;
}
.hero__schedule-row + .hero__schedule-row{ border-top:1px solid rgba(216,184,118,.22); }
.hero__schedule-date{
  font-family:var(--font-display); font-size:1.45rem; font-weight:600; line-height:1;
  color:var(--gold-300); white-space:nowrap;
}
.hero__schedule-label{
  font-size:.7rem; letter-spacing:.16em; text-transform:uppercase;
  color:var(--blush-100); opacity:.9;
}
.hero__schedule-row--main .hero__schedule-date{ color:var(--ivory); }
.hero__schedule-row--main .hero__schedule-label{ color:var(--gold-300); opacity:1; font-weight:500; }

.scroll-cue{
  margin-top:1.6rem;
  display:inline-flex; flex-direction:column; align-items:center; gap:.5rem;
  font-size:.68rem; letter-spacing:.22em; text-transform:uppercase; color:var(--gold-300);
}
.scroll-cue__line{
  width:1px; height:34px;
  background:linear-gradient(180deg,var(--gold-400),transparent);
  position:relative;
  overflow:hidden;
}
.scroll-cue__line::after{
  content:''; position:absolute; top:-100%; left:0; width:100%; height:100%;
  background:linear-gradient(180deg,transparent,var(--gold-300));
  animation:scrollDrip 1.8s ease-in-out infinite;
}
@keyframes scrollDrip{ to{ top:100%; } }

/* ==========================================================================
   Formal invitation card
   ========================================================================== */
.formal-invite{
  position:relative;
  padding:clamp(4rem,11vh,6.5rem) clamp(1.25rem,6vw,2rem);
  background:var(--blush-100);
  overflow:hidden;
}
.formal-invite__dot{
  position:absolute; border-radius:50%; pointer-events:none;
}
.formal-invite__dot--1{ width:8px; height:8px; top:12%; left:18%; background:var(--rose-400); opacity:.6; }
.formal-invite__dot--2{ width:6px; height:6px; top:70%; right:14%; background:var(--gold-400); opacity:.7; }
.formal-invite__dot--3{ width:5px; height:5px; top:24%; right:24%; background:var(--rose-300); opacity:.5; }

.formal-invite__card{
  position:relative; z-index:1;
  max-width:480px; margin-inline:auto;
  background:var(--ivory);
  border:1px solid var(--gold-500);
  border-radius:22px;
  padding:clamp(2.5rem,6vw,3.5rem) clamp(1.75rem,6vw,2.5rem) clamp(2.25rem,5vw,3rem);
  text-align:center;
  box-shadow:0 30px 60px -32px rgba(58,15,30,.28);
}
.formal-invite__card::before{
  content:'';
  position:absolute; inset:9px;
  border:1px dashed var(--gold-300);
  border-radius:14px;
  pointer-events:none;
}

.formal-invite__icon{
  position:relative; z-index:1;
  width:clamp(58px,11vw,78px); margin:0 auto .9rem;
}
.kalash-svg{ width:100%; height:auto; display:block; }

.formal-invite__hosts{
  position:relative; z-index:1;
  font-family:var(--font-display); font-weight:600;
  font-size:clamp(1.1rem,1rem + .5vw,1.4rem);
  color:var(--maroon-800);
  line-height:1.5;
}
.formal-invite__address{
  position:relative; z-index:1;
  margin-top:.7rem;
  font-family:var(--font-display); font-style:italic;
  font-size:clamp(.95rem,.9rem + .25vw,1.05rem);
  color:var(--ink-soft);
  line-height:1.5;
  text-wrap:balance;
}
.formal-invite__address span{
  display:block; margin-bottom:.15rem;
  font-family:var(--font-sans); font-style:normal;
  font-size:.58rem; letter-spacing:.28em; text-transform:uppercase;
  color:var(--gold-600);
}
.formal-invite__body{
  position:relative; z-index:1;
  font-family:var(--font-display); font-style:italic;
  font-size:clamp(1rem,.95rem + .3vw,1.15rem);
  color:var(--ink-soft);
  margin-top:1.1rem;
  line-height:1.6;
}

.formal-invite__names{
  position:relative; z-index:1;
  margin-top:1rem;
  display:flex; flex-direction:column; align-items:center; gap:.2rem;
}
.formal-invite__bride, .formal-invite__groom{
  font-family:var(--font-script);
  line-height:1.15;
  text-shadow:0 2px 10px rgba(179,58,92,.18);
}
.formal-invite__bride{
  font-size:clamp(2.7rem,8vw,3.8rem);
  color:var(--rose-500);
}
.formal-invite__groom{
  font-size:clamp(2.2rem,6.4vw,3.1rem);
  color:var(--maroon-700);
}
.formal-invite__divider{
  display:flex; align-items:center; gap:.9em;
  width:100%; max-width:220px;
  margin-block:.15em;
  color:var(--gold-600);
  font-family:var(--font-display); font-style:italic; font-size:1rem;
}
.formal-invite__divider i{
  flex:1; height:1px;
  background:linear-gradient(90deg,transparent,var(--gold-400),transparent);
}

.formal-invite__parent-line{
  position:relative; z-index:1;
  margin-top:1rem;
  font-family:var(--font-display); font-size:1rem; color:var(--ink-soft);
  line-height:1.5;
  text-wrap:balance;
}

.formal-invite__closing{
  position:relative; z-index:1;
  margin-top:1.8rem;
  font-family:var(--font-display); font-style:italic;
  font-size:clamp(1rem,.95rem + .3vw,1.15rem);
  color:var(--maroon-800);
}
.formal-invite__closing::before{
  content:''; display:block; width:48px; height:1px; background:var(--gold-400);
  margin:0 auto 1.2rem;
}

/* ==========================================================================
   Note section
   ========================================================================== */
.note{
  position:relative;
  background:var(--blush-50);
  padding:clamp(4.5rem,12vh,7rem) 0;
}
.note__inner{
  position:relative; z-index:1;
  max-width:840px; margin-inline:auto;
  padding-inline:clamp(1.25rem,6vw,2rem);
  text-align:center;
  display:flex; flex-direction:column; align-items:center; gap:1.75rem;
}
.note .invocation{
  color:var(--gold-700);
  font-size:clamp(1rem,.9rem + .6vw,1.3rem);
  text-align:center;
}
.invocation__translation{
  font-family:var(--font-display);
  font-style:italic;
  font-size:clamp(.95rem,.9rem + .3vw,1.1rem);
  color:var(--ink-soft);
  max-width:34ch;
  margin-top:-.5rem;
}
.ornament{ width:64px; height:auto; color:var(--gold-500); }
.note__text{
  font-family:var(--font-display);
  font-style:italic;
  font-weight:500;
  font-size:clamp(1.4rem,1.1rem + 1.6vw,2.3rem);
  line-height:1.5;
  color:var(--maroon-800);
}
.note__text .highlight{ color:var(--rose-500); }
.note__sign{
  font-family:var(--font-script);
  font-size:clamp(1.6rem,4vw,2.2rem);
  color:var(--rose-500);
}

/* ==========================================================================
   Gallery
   ========================================================================== */
.gallery{ position:relative; padding:clamp(4rem,10vh,6rem) 0 clamp(5rem,12vh,7rem); background:var(--ivory); }
.gallery__head{ margin-bottom:clamp(2.5rem,6vh,3.5rem); }
.gallery__grid{
  display:grid;
  grid-template-columns:repeat(6,1fr);
  gap:clamp(.9rem,2vw,1.5rem);
}
.gallery__item{
  position:relative;
  margin:0;
  border-radius:20px;
  overflow:hidden;
  grid-column:span 6;
  aspect-ratio:4/5;
  box-shadow:0 20px 40px -22px rgba(58,15,30,.35);
  transition:transform var(--dur-2) var(--ease-silk), box-shadow var(--dur-2) var(--ease-silk);
}
.gallery__item img{ width:100%; height:100%; object-fit:cover; transition:transform 1.2s var(--ease-silk); }
.gallery__item:hover{ transform:translateY(-8px) rotate(-.4deg); box-shadow:0 30px 54px -20px rgba(58,15,30,.42); }
.gallery__item:hover img{ transform:scale(1.06); }
.gallery__item--wide{ grid-column:span 6; aspect-ratio:16/11; }
.gallery__item--couple img{ object-position:50% 20%; }
.gallery__item figcaption{
  position:absolute; left:0; right:0; bottom:0;
  padding:1.4rem 1.2rem 1.1rem;
  background:linear-gradient(0deg, rgba(37,8,17,.82), rgba(37,8,17,0));
  color:var(--ivory);
  font-family:var(--font-display);
  font-size:1.3rem;
  font-style:italic;
}

@media (min-width:720px){
  .gallery__item{ grid-column:span 3; }
  .gallery__item--wide{ grid-column:span 6; }
}
@media (min-width:1024px){
  .gallery__grid{ grid-template-columns:repeat(12,1fr); align-items:center; }
  .gallery__item{ grid-column:span 4; }
  .gallery__item--wide{ grid-column:span 4; aspect-ratio:4/5; order:0; }
}

/* ==========================================================================
   Countdown
   ========================================================================== */
.countdown{
  position:relative;
  padding:clamp(4.5rem,12vh,6.5rem) 0;
  background:radial-gradient(120% 100% at 50% 0%, var(--maroon-800), var(--maroon-950) 70%);
  overflow:hidden;
}
.countdown__head{ position:relative; z-index:2; margin-bottom:clamp(2.2rem,6vh,3rem); }
.countdown__grid{
  position:relative; z-index:2;
  display:grid; grid-template-columns:repeat(4,1fr);
  gap:clamp(.6rem,2.4vw,1.5rem);
  max-width:640px; margin-inline:auto;
  padding-inline:clamp(1.25rem,6vw,2rem);
}
.countdown__box{
  background:rgba(255,255,255,.06);
  border:1px solid rgba(216,184,118,.32);
  backdrop-filter:blur(8px);
  border-radius:120px 120px 14px 14px;
  padding:clamp(1.1rem,4vw,1.7rem) .5rem clamp(.9rem,2vw,1.2rem);
  text-align:center;
}
.countdown__num{
  display:block;
  font-family:var(--font-display);
  font-weight:600;
  font-size:clamp(1.8rem,5vw,3rem);
  color:var(--gold-300);
  font-variant-numeric:tabular-nums;
}
.countdown__label{
  display:block; margin-top:.3rem;
  font-size:.62rem; letter-spacing:.18em; text-transform:uppercase; color:var(--blush-100); opacity:.8;
}
.countdown__note{
  position:relative; z-index:2;
  text-align:center; margin-top:clamp(1.6rem,4vh,2.2rem);
  padding-inline:clamp(1.25rem,6vw,2rem);
  font-family:var(--font-display); font-style:italic; font-size:var(--fs-lg); color:var(--blush-100);
}

/* ==========================================================================
   Celebrations
   ========================================================================== */
.celebrations{ padding:clamp(4.5rem,12vh,7rem) 0; background:var(--blush-50); position:relative; }
.celebrations__head{ margin-bottom:clamp(2.2rem,5vh,3rem); }
.celebrations__sub{
  margin:1rem auto 0; max-width:30ch;
  font-family:var(--font-display); font-style:italic;
  font-size:var(--fs-lg); line-height:1.4; color:var(--ink-soft);
}

.timeline{
  list-style:none; margin:0 auto; padding:0;
  max-width:520px; position:relative;
  display:flex; flex-direction:column; gap:1.1rem;
}
.timeline::before{
  content:''; position:absolute; left:33.5px; top:34px; bottom:34px; width:1px;
  background:linear-gradient(180deg,var(--gold-400),var(--gold-500));
}
.timeline__item{
  position:relative;
  display:grid; grid-template-columns:68px 1fr; gap:clamp(.9rem,3vw,1.25rem); align-items:center;
}
.timeline__date{
  position:relative; z-index:1;
  width:68px; height:68px; border-radius:50%;
  display:flex; flex-direction:column; align-items:center; justify-content:center;
  background:var(--ivory);
  border:1px solid var(--gold-500);
  box-shadow:0 0 0 6px var(--blush-50);
  line-height:1;
}
.timeline__date b{
  font-family:var(--font-display); font-size:1.7rem; font-weight:600; color:var(--maroon-700);
}
.timeline__date span{
  margin-top:.28rem;
  font-size:.56rem; letter-spacing:.22em; text-transform:uppercase; color:var(--gold-600);
}
.timeline__card{
  background:var(--ivory);
  border:1px solid var(--gold-300);
  border-radius:18px;
  padding:1rem clamp(1rem,4vw,1.4rem);
  box-shadow:0 18px 36px -26px rgba(58,15,30,.35);
}
.timeline__day{
  font-size:.6rem; letter-spacing:.24em; text-transform:uppercase;
  color:var(--gold-600); font-weight:500;
}
.timeline__card h3{
  margin-top:.2rem;
  font-family:var(--font-display); font-weight:600; line-height:1.2;
  font-size:clamp(1.3rem,1.15rem + .6vw,1.6rem);
  color:var(--maroon-800);
}
.timeline__place{ margin-top:.25rem; font-size:.85rem; color:var(--ink-soft); }

.timeline__item--main .timeline__date{
  background:linear-gradient(135deg,var(--maroon-700),var(--rose-500));
  border-color:var(--gold-400);
  box-shadow:0 0 0 6px var(--blush-50), 0 12px 26px -8px rgba(126,33,65,.55);
}
.timeline__item--main .timeline__date b{ color:var(--ivory); }
.timeline__item--main .timeline__date span{ color:var(--gold-300); }
.timeline__item--main .timeline__card{
  border-color:var(--gold-500);
  background:linear-gradient(180deg,var(--ivory),var(--blush-100));
  box-shadow:0 26px 46px -26px rgba(126,33,65,.5);
}
.timeline__item--main .timeline__card h3{ color:var(--maroon-700); font-size:clamp(1.5rem,1.3rem + .8vw,1.85rem); }

.event-card{
  background:var(--ivory);
  border:1px solid var(--gold-300);
  border-radius:160px 160px var(--radius-card) var(--radius-card);
  padding:clamp(2.2rem,5vw,3rem) clamp(1.6rem,5vw,2.4rem) clamp(2rem,4vw,2.4rem);
  text-align:center;
  display:flex; flex-direction:column; align-items:center; gap:.65rem;
  box-shadow:0 24px 44px -28px rgba(58,15,30,.3);
  transition:transform var(--dur-2) var(--ease-silk), box-shadow var(--dur-2) var(--ease-silk);
}
.event-card:hover{ transform:translateY(-6px); box-shadow:0 30px 54px -24px rgba(58,15,30,.38); }
.event-card h3{ font-family:var(--font-display); font-size:var(--fs-h3); color:var(--maroon-800); font-weight:600; }
.event-card__divider{ width:36px; height:1px; background:var(--gold-400); margin-block:.4rem; }
.event-card__venue{ font-size:.95rem; color:var(--ink-soft); line-height:1.55; }
.event-card .btn{ margin-top:.9rem; }

.venue-card{ max-width:420px; margin:clamp(2.4rem,6vh,3.2rem) auto 0; }
.venue-card__pin{ width:30px; height:30px; margin-top:.2rem; }
.venue-card__label{
  font-size:.62rem; letter-spacing:.3em; text-transform:uppercase;
  color:var(--gold-600); font-weight:500;
}

/* ==========================================================================
   Footer
   ========================================================================== */
.site-footer{
  position:relative;
  background:linear-gradient(180deg, var(--maroon-900), var(--maroon-950));
  color:var(--blush-100);
  padding:clamp(4rem,10vh,5.5rem) clamp(1.25rem,6vw,3rem) clamp(2rem,5vh,2.5rem);
  text-align:center;
  display:flex; flex-direction:column; align-items:center; gap:1.1rem;
}
.footer__meta{ text-wrap:balance; }
.footer__title{ font-family:var(--font-display); font-style:italic; font-size:clamp(1.6rem,4vw,2.3rem); color:var(--ivory); }
.footer__love{ font-family:var(--font-script); font-size:clamp(1.8rem,5vw,2.6rem); color:var(--gold-400); }
.footer__meta{ font-size:.72rem; letter-spacing:.2em; text-transform:uppercase; color:var(--gold-300); opacity:.85; }
.footer__credit{ font-size:.68rem; color:rgba(253,245,239,.4); margin-top:1.5rem; }

/* ==========================================================================
   Sound toggle
   ========================================================================== */
.sound-toggle{
  position:fixed; top:max(16px, env(safe-area-inset-top)); right:16px; z-index:210;
  width:46px; height:46px; border-radius:50%;
  display:flex; align-items:center; justify-content:center;
  background:var(--maroon-900);
  border:1px solid var(--gold-500);
  color:var(--gold-300);
  box-shadow:0 10px 24px -12px rgba(37,8,17,.65);
  opacity:0; transform:scale(.7);
  transition:opacity .5s var(--ease-silk), transform .35s var(--ease-silk), background .3s;
}
.sound-toggle.is-shown{ opacity:1; transform:scale(1); }
.sound-toggle:hover{ transform:scale(1.07); }
.sound-toggle__icon{ width:19px; height:19px; }
.sound-toggle__icon--off{ display:none; }
.sound-toggle.is-muted{ color:var(--blush-100); opacity:.75; }
.sound-toggle.is-muted .sound-toggle__icon--on{ display:none; }
.sound-toggle.is-muted .sound-toggle__icon--off{ display:block; }
.sound-toggle:not(.is-muted)::after{
  content:''; position:absolute; inset:-1px; border-radius:50%;
  border:1px solid var(--gold-400);
  animation:pulseRing 2.4s ease-out infinite;
}

/* ==========================================================================
   Reveal utility (JS toggles .is-visible)
   ========================================================================== */
[data-reveal]{
  opacity:0; transform:translateY(28px);
  transition:opacity 1s var(--ease-silk), transform 1s var(--ease-silk);
}
[data-reveal].is-visible{ opacity:1; transform:translateY(0); }

/* ==========================================================================
   Responsive tweaks
   ========================================================================== */
@media (max-width:540px){
  .countdown__grid{ gap:.5rem; }
  .butterfly--a1, .butterfly--a2{ display:none; }
}

/* ==========================================================================
   Reduced motion
   ========================================================================== */
@media (prefers-reduced-motion:reduce){
  html{ scroll-behavior:auto; }
  .wing-group--left, .wing-group--right{ animation:none; }
  .cover__cta::after{ animation:none; }
  .particle{ animation:none; opacity:.3; }
  .scroll-cue__line::after{ animation:none; }
  [data-reveal]{ opacity:1; transform:none; }
}
