/* ============================================================
   Bestin & Mareena — Wedding Invitation · style.css
   Pure HTML5 + CSS3 + Vanilla JS. No frameworks.
   Color palette: Cream · Ivory · Gold · Sage Green · Soft White
   Inspired by the invitation card florals (white roses, greenery, gold cross)
   ============================================================ */

/* ---------- 1 · TOKENS ---------- */
:root{
  /* Core palette — drawn from the invitation card's cream/ivory/gold/sage green */
  --ivory:#FBF8F1;
  --ivory-2:#F5EFE2;
  --cream:#F0E8D6;
  --cream-2:#E8DECA;
  --gold:#B8942A;
  --gold-lt:#D4B86A;
  --gold-dk:#8A6E1C;
  --brass:#9A7830;
  --sage:#5A7A5A;
  --sage-lt:#7A9E7A;
  --sage-dk:#3D5E3D;
  --forest:#2E4E2E;
  --warm-white:#FDFAF4;
  --ink:#2E2416;
  --ink-soft:#5E4E3C;
  --night:#0E0C08;
  --night-2:#1A160E;
  --parchment:#F7F2E8;

  --shadow-s:0 2px 10px rgba(46,36,22,.07);
  --shadow-m:0 12px 34px -14px rgba(46,36,22,.28);
  --shadow-l:0 30px 70px -30px rgba(46,36,22,.40);

  --f-display:"Cormorant Garamond",Georgia,"Times New Roman",serif;
  --f-title:"Marcellus",Georgia,serif;
  --f-script:"Pinyon Script","Cormorant Garamond",Georgia,serif;
  --f-body:"Jost","Segoe UI",system-ui,-apple-system,sans-serif;

  --wrap:1120px;
  --pad:clamp(20px,5vw,44px);
  --sec-y:clamp(72px,12vw,132px);

  --ease:cubic-bezier(.22,.61,.36,1);
  --ease-soft:cubic-bezier(.4,0,.2,1);

  --motif:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='72' height='22' viewBox='0 0 72 22'%3E%3Cg fill='none' stroke='%23B8942A' stroke-width='1' stroke-linecap='round' opacity='.6'%3E%3Cpath d='M0 11h14M58 11h14'/%3E%3Cpath d='M22 11c0-3.6 2.6-6.4 5.6-6.4S33.2 7.4 33.2 11s-2.6 6.4-5.6 6.4S22 14.6 22 11z'/%3E%3Cpath d='M38.8 11c0-3.6 2.6-6.4 5.6-6.4S50 7.4 50 11s-2.6 6.4-5.6 6.4S38.8 14.6 38.8 11z'/%3E%3C/g%3E%3Ccircle cx='36' cy='11' r='1.7' fill='%23B8942A' opacity='.75'/%3E%3C/svg%3E");
}

/* ---------- 2 · RESET ---------- */
*,*::before,*::after{box-sizing:border-box}
html{-webkit-text-size-adjust:100%;scroll-behavior:smooth}
body{
  margin:0;
  background:var(--night);
  color:var(--ink);
  font-family:var(--f-body);
  font-weight:300;
  font-size:clamp(15px,1.05vw + 12px,17px);
  line-height:1.75;
  -webkit-font-smoothing:antialiased;
  text-rendering:optimizeLegibility;
  overflow-x:hidden;
}
body.is-locked{overflow:hidden;height:100%;position:fixed;inset:0;width:100%}
img,video,canvas,svg{display:block;max-width:100%}
h1,h2,h3,p,dl,dd,ul,ol,figure{margin:0}
ul,ol{list-style:none;padding:0}
a{color:inherit;text-decoration:none}
button{font:inherit;color:inherit;border:0;background:none;cursor:pointer}
::selection{background:var(--gold);color:#fff}
.sprite{position:absolute;width:0;height:0;overflow:hidden}

.ico{
  width:1em;height:1em;flex:none;
  fill:none;stroke:currentColor;stroke-width:3.8;
  stroke-linecap:round;stroke-linejoin:round;
  overflow:visible;
}

/* ---------- 3 · SHARED BITS ---------- */
.wrap{width:100%;max-width:var(--wrap);margin-inline:auto;padding-inline:var(--pad);position:relative;z-index:2}
.wrap--center{text-align:center}

.divider{display:flex;align-items:center;justify-content:center;gap:14px;margin:18px auto 0;max-width:280px;color:var(--gold)}
.divider .ico{width:22px;height:22px;stroke-width:3.6;opacity:.95}
.divider-line{height:1px;flex:1;background:linear-gradient(90deg,transparent,rgba(184,148,42,.75))}
.divider-line:last-child{background:linear-gradient(270deg,transparent,rgba(184,148,42,.75))}
.divider--sm{max-width:200px}
.divider--light{color:var(--gold-lt)}
.divider--light .divider-line{background:linear-gradient(90deg,transparent,rgba(212,184,106,.65))}
.divider--light .divider-line:last-child{background:linear-gradient(270deg,transparent,rgba(212,184,106,.65))}

.mural-border{position:absolute;left:0;right:0;height:22px;background-image:var(--motif);background-repeat:repeat-x;background-position:center;opacity:.5;pointer-events:none}
.mural-border--top{top:22px}

.muted{color:var(--ink-soft)}

/* ---------- 4 · PARTICLE CANVAS ---------- */
#particles{
  position:fixed;inset:0;width:100%;height:100%;
  z-index:80;pointer-events:none;
  opacity:0;transition:opacity 1.4s var(--ease);
  will-change:opacity;
}
#particles.on{opacity:1}

/* ============================================================
   5 · LANDING COVER
   ============================================================ */
#landing{
  position:fixed;
  inset:0;
  z-index:70;
  width:100%;
  height:100svh; height:100vh;
  min-height:100svh; min-height:100vh;
  display:flex;
  flex-direction:column;
  align-items:center;
  overflow:hidden;
  background:#0E0C08;
  transition:opacity .42s var(--ease);
  will-change:opacity;
}
#landing.is-opening .btn-open{ pointer-events:none; opacity:.72; }
#landing.is-out{ opacity:0; pointer-events:none; }
#landing.is-gone{ display:none; }

/* All BG layers sit behind content, absolutely positioned */
.landing-media,
#landing > .rays,
#landing > .vignette,
#landing > .temple-glow,
#landing > .landing-overlay{
  position:absolute;
  inset:0;
  width:100%;
  height:100%;
  pointer-events:none;
}
.landing-media{ z-index:0; overflow:hidden; }
#landing > .rays       { z-index:2; }
#landing > .vignette   { z-index:2; }
#landing > .temple-glow{ z-index:2; }
#landing > .landing-overlay{ z-index:2; }

/* Centre content — grows to fill space, centres everything */
.landing-inner{
  position:relative;
  z-index:5;
  flex:1 1 auto;
  display:flex;
  flex-direction:column;
  align-items:center;
  justify-content:center;
  text-align:center;
  width:100%;
  padding:clamp(8px,2vh,20px) clamp(20px,7vw,52px);
  box-sizing:border-box;
  color:var(--ivory);
}

/* Top spacer — pushes content down from status bar */
#landing::before{
  content:"";
  display:block;
  flex:0 0 max(clamp(20px,4vh,40px), env(safe-area-inset-top, 0px));
  width:100%;
}
/* Bottom spacer */
#landing::after{
  content:"";
  display:block;
  flex:0 0 max(clamp(14px,2.5vh,28px), env(safe-area-inset-bottom, 0px));
  width:100%;
}
.cover-img{
  position:absolute;inset:0;width:100%;height:100%;
  object-fit:cover;
  object-position:center center;
  animation:kenburns 26s var(--ease-soft) infinite alternate;
  will-change:transform;
}
.cover-img.failed{display:none}
.cover-fallback{
  position:absolute;inset:0;opacity:0;
  background:
    radial-gradient(120% 70% at 50% 12%,rgba(240,232,214,.28),transparent 62%),
    radial-gradient(80% 55% at 20% 90%,rgba(184,148,42,.22),transparent 70%),
    radial-gradient(80% 55% at 82% 84%,rgba(90,122,90,.24),transparent 70%),
    linear-gradient(180deg,#1A180E 0%,#100E08 55%,#0E0C08 100%);
}
.landing-media.fallback-on .cover-fallback{opacity:1}

@keyframes kenburns{
  from{transform:scale(1.04) translate3d(0,0,0)}
  to{transform:scale(1.12) translate3d(0,-1.2%,0)}
}

.vignette{
  background:
    radial-gradient(115% 78% at 50% 34%,transparent 34%,rgba(14,12,8,.35) 82%,rgba(14,12,8,.62) 100%),
    linear-gradient(180deg,rgba(10,8,4,.35) 0%,transparent 26%,transparent 48%,rgba(10,8,4,.55) 100%);
}
.landing-overlay{
  background:radial-gradient(70% 50% at 50% 45%,transparent 30%,rgba(14,12,8,.2) 100%);
}
.temple-glow{
  pointer-events:none;
  background:radial-gradient(ellipse 55% 40% at 50% 18%,rgba(240,224,180,.22),transparent 70%);
  animation:breathe 7.5s var(--ease-soft) infinite;
}
@keyframes breathe{
  0%,100%{opacity:.55}
  50%{opacity:1}
}

.rays{
  pointer-events:none;opacity:.22;mix-blend-mode:screen;
  overflow:hidden;
}
.rays::before,.rays::after{
  content:"";position:absolute;inset:-20%;
  background:repeating-conic-gradient(from 0deg at 50% 8%,
    rgba(240,224,180,.18) 0deg 2.2deg,
    transparent 2.2deg 10deg);
  -webkit-mask-image:radial-gradient(65% 78% at 50% 6%,#000,transparent 72%);
  mask-image:radial-gradient(65% 78% at 50% 6%,#000,transparent 72%);
  animation:sweep 46s linear infinite;
  will-change:transform;
}
.rays::after{animation-duration:74s;animation-direction:reverse;opacity:.6}
@keyframes sweep{to{transform:rotate(360deg)}}
.rays--hero{opacity:.28}

.landing-inner{
  color:var(--ivory);
  z-index:5;
}

.landing-eyebrow{
  display:flex;flex-direction:column;gap:6px;
  animation:riseIn 1.5s .35s var(--ease) both;
}
.landing-eyebrow .en{
  font-size:clamp(9px,2.4vw,11px);
  letter-spacing:.28em;
  text-transform:uppercase;
  color:rgba(255,215,160,.88);
}

.landing-inner .divider{ animation:riseIn 1.5s .6s var(--ease) both; }

.landing-names{
  margin-top:16px;font-family:var(--f-script);font-weight:400;
  font-size:clamp(48px,15vw,108px);line-height:1.1;letter-spacing:0;
  display:flex;flex-direction:column;align-items:center;gap:2px;
  color:#FFF8EC;
  text-shadow:0 2px 30px rgba(240,206,130,.32),0 1px 3px rgba(0,0,0,.4);
}
.landing-names .n{animation:riseIn 1.6s .8s var(--ease) both}
.landing-names .n:last-child{animation-delay:1.05s}
.landing-names .amp{
  font-family:var(--f-display);font-style:italic;font-size:.3em;
  color:var(--gold-lt);opacity:.9;margin:2px 0;
  animation:riseIn 1.6s .95s var(--ease) both;
}
.landing-date{
  margin-top:14px;
  font-size:clamp(11px,3vw,13px);
  letter-spacing:.44em;
  text-indent:.44em;
  font-weight:600;
  color:rgba(255,248,235,.78);
  animation:riseIn 1.6s 1.25s var(--ease) both;
}

@keyframes riseIn{
  from{opacity:0;transform:translate3d(0,22px,0)}
  to{opacity:1;transform:none}
}

/* ---------- Open Invitation button ---------- */
.btn-open{
  position:relative;margin-top:clamp(34px,7vw,52px);
  padding:0;border-radius:999px;isolation:isolate;
  -webkit-tap-highlight-color:transparent;
  animation:riseIn 1.6s 1.5s var(--ease) both;
  transition:transform .4s var(--ease);
}
.btn-open__inner{
  position:relative;z-index:3;display:flex;align-items:center;gap:14px;
  padding:16px clamp(26px,6vw,38px);border-radius:999px;
  background:linear-gradient(145deg,rgba(28,24,14,.72),rgba(14,12,6,.62));
  border:1px solid rgba(212,184,106,.55);
  backdrop-filter:blur(9px);-webkit-backdrop-filter:blur(9px);
  box-shadow:inset 0 1px 0 rgba(255,240,200,.24),0 14px 40px -18px rgba(0,0,0,.9);
  transition:border-color .4s var(--ease),box-shadow .4s var(--ease);
}
.btn-open__lamp{
  width:22px;height:22px;color:var(--gold-lt);stroke-width:3.8;
  animation:flicker 3.4s ease-in-out infinite
}
@keyframes flicker{
  0%,100%{opacity:.85;filter:drop-shadow(0 0 4px rgba(212,184,106,.5))}
  45%{opacity:1;filter:drop-shadow(0 0 12px rgba(220,190,120,.95))}
  70%{opacity:.9}
}

.btn-open__label{display:flex;flex-direction:column;align-items:flex-start;line-height:1.3}
.btn-open__en{font-size:clamp(13px,3.3vw,15px);letter-spacing:.24em;text-transform:uppercase;color:#FFF8EC}

.btn-open__glow{
  position:absolute;inset:-26px;z-index:1;border-radius:999px;
  background:radial-gradient(closest-side,rgba(212,184,106,.38),transparent 74%);
  animation:pulseGlow 3.6s var(--ease-soft) infinite;
}
@keyframes pulseGlow{0%,100%{opacity:.45;transform:scale(.94)}50%{opacity:1;transform:scale(1.06)}}

.btn-open__ring{
  position:absolute;inset:-7px;z-index:2;border-radius:999px;
  border:1px solid rgba(212,184,106,.42);
  animation:ringOut 3.6s var(--ease-soft) infinite;
}
@keyframes ringOut{0%{opacity:.75;transform:scale(.96)}70%{opacity:0;transform:scale(1.16)}100%{opacity:0}}

.btn-open__shimmer{
  position:absolute;inset:0;z-index:4;border-radius:999px;overflow:hidden;pointer-events:none;
  -webkit-mask-image:linear-gradient(#000,#000);
}
.btn-open__shimmer::before{
  content:"";position:absolute;top:-60%;bottom:-60%;width:34%;left:-45%;
  background:linear-gradient(100deg,transparent,rgba(255,248,220,.5),transparent);
  transform:skewX(-18deg);
  animation:shimmer 4.6s 2.4s var(--ease-soft) infinite;
}
@keyframes shimmer{0%{left:-45%}55%,100%{left:125%}}

.btn-open:hover{transform:translateY(-2px)}
.btn-open:hover .btn-open__inner{border-color:rgba(212,184,106,.95);box-shadow:inset 0 1px 0 rgba(255,240,200,.34),0 18px 46px -16px rgba(212,184,106,.42)}
.btn-open:active{transform:translateY(0) scale(.985)}
.btn-open:focus-visible{outline:2px solid var(--gold-lt);outline-offset:8px}

.landing-hint{
  margin-top:18px;font-size:10px;letter-spacing:.34em;text-transform:uppercase;
  color:rgba(251,248,241,.42);
  animation:riseIn 1.6s 1.9s var(--ease) both,hintFade 3.4s 3s ease-in-out infinite;
}
@keyframes hintFade{0%,100%{opacity:.35}50%{opacity:.85}}

/* ============================================================
   6 · REVEAL VIDEO
   ============================================================ */
#reveal{
  position:fixed;inset:0;z-index:60;background:#0E0C08;
  opacity:0;visibility:hidden;
  transition:opacity .42s var(--ease),visibility 0s linear .42s;
  will-change:opacity;
}
#reveal.is-armed,
#reveal.is-on{
  opacity:1;visibility:visible;
  transition:opacity .42s var(--ease),visibility 0s;
}
#reveal.is-live{z-index:95}
#reveal.is-out{opacity:0;visibility:hidden;transition:opacity .85s var(--ease),visibility 0s linear .85s;z-index:95}
#reveal.is-gone{display:none}
#revealVideo{
  position:absolute;inset:0;z-index:1;
  width:100%;height:100%;
  object-fit:cover;
  object-position:center center;
  background:#0E0C08;
}
.reveal-fade{
  position:absolute;inset:0;z-index:2;pointer-events:none;opacity:0;
  background:radial-gradient(120% 80% at 50% 55%,rgba(240,224,180,.22),transparent 60%),#0E0C08;
  transition:opacity 1.1s var(--ease);
}
#reveal.is-out .reveal-fade{opacity:1}

.btn-skip{
  position:absolute;z-index:3;right:max(16px,env(safe-area-inset-right));
  bottom:max(18px,env(safe-area-inset-bottom));
  padding:8px 18px;border-radius:999px;
  font-size:10px;letter-spacing:.26em;text-transform:uppercase;
  color:rgba(255,248,235,.8);border:1px solid rgba(212,184,106,.32);
  background:rgba(0,0,0,.3);backdrop-filter:blur(6px);
  opacity:0;animation:fadeIn .8s var(--ease) forwards;
}
@keyframes fadeIn{to{opacity:.6}}
.btn-skip:hover{opacity:1}

/* ============================================================
   7 · SITE SHELL
   ============================================================ */
#site{
  position:relative;z-index:1;
  opacity:0;visibility:hidden;
  transition:opacity .85s var(--ease);
  background:var(--ivory);
}
body.is-revealed #site{opacity:1;visibility:visible}
body:not(.is-revealed) #site *{animation-play-state:paused!important}

#story,#timeline,#couple,#family,#verse,#venue,#gallery,#thankyou,#footer{
  content-visibility:auto;
  contain-intrinsic-size:auto 720px;
}

/* ============================================================
   8 · HERO TYPOGRAPHY
   ============================================================ */
.hero-bless{display:flex;flex-direction:column;gap:clamp(2px,.8%,5px);margin-bottom:clamp(4px,1.5%,10px)}
.hero-bless--top{
  /* positioning handled by scenes.css flex layout */
  display:flex;flex-direction:column;align-items:center;gap:4px;
}
.hero-bless__en{
  font-size:clamp(9px,2.4vw,11px);
  letter-spacing:.22em;
  text-transform:uppercase;
  color:rgba(60,40,10,.82);
  text-shadow:0 1px 6px rgba(255,248,220,.9), 0 0 16px rgba(255,248,220,.7);
  white-space:nowrap;
}
.hero-divider{
  margin-top:10px;
  color:var(--gold-dk);
  opacity:.8;
}
.hero-names{
  display:flex;flex-direction:column;align-items:center;gap:0;
  font-family:var(--f-script);font-weight:400;
  font-size:clamp(36px,9.5vw,68px);line-height:1.15;letter-spacing:0;
  color:#2A1E0E;
  text-shadow:0 2px 18px rgba(255,248,226,.7), 0 1px 0 rgba(255,248,226,.55);
}
.hero-names__n{display:block}
.hero-names__amp{
  font-family:var(--f-display);font-style:italic;font-weight:300;
  font-size:.32em;line-height:1;margin:clamp(2px,1%,5px) 0;color:var(--gold-dk);
}
.hero-date{
  margin-top:clamp(6px,2%,12px);
  display:flex;flex-direction:column;align-items:center;gap:clamp(2px,.8%,5px);
}
.hero-subtitle{
  /* positioning handled by scenes.css flex layout */
  font-family:var(--f-title);
  font-size:clamp(10px,2.6vw,13px);
  letter-spacing:.12em;
  color:rgba(60,40,10,.88);
  text-shadow:0 1px 6px rgba(255,248,220,.9), 0 0 14px rgba(255,248,220,.7);
  opacity:1;
  line-height:1.5;
  text-align:center;
  white-space:nowrap;
}
.hero-date__en{
  font-family:var(--f-title);font-size:clamp(11px,3.2vw,14px);
  letter-spacing:.14em;text-transform:uppercase;color:#5A3E1E;
}

.scroll-indicator{
  display:flex;flex-direction:column;align-items:center;gap:8px;
  color:#fff;
  padding:10px 14px;
  -webkit-tap-highlight-color:transparent;
}
.scroll-indicator__word{font-size:10.5px;letter-spacing:.36em;text-transform:uppercase;font-weight:900;color:#fff;text-shadow:0 1px 6px rgba(0,0,0,.5);}
.scroll-indicator__arrow{
  width:30px;height:30px;
  color:#fff;
  filter:drop-shadow(0 0 6px rgba(0,0,0,.5));
  animation:arrowBob 1.8s ease-in-out infinite;
}
@keyframes arrowBob{
  0%,100%{transform:translateY(0);opacity:.75}
  50%{transform:translateY(6px);opacity:1}
}

/* ============================================================
   9 · FLOW SECTION INTERNALS
   ============================================================ */
.section-content--center{
  text-align:center;
  justify-content:center;
  align-items:center;
  min-height:min(100svh, 40rem);
}

.scene--dark .sec-title,
.scene--finale .sec-title{color:#FBF5E8}
.scene--dark .kicker,
.scene--finale .kicker{color:var(--gold-lt);opacity:.9}
.scene--dark .sec-note,
.scene--finale .sec-note{color:rgba(245,235,218,.7)}

.sec-head{text-align:center;margin-bottom:clamp(2rem,5vw,4rem)}
.kicker{
  font-family:var(--f-body);
  font-size:clamp(11px,2.9vw,13px);letter-spacing:.26em;text-transform:uppercase;
  color:var(--sage);margin-bottom:10px;font-weight:500;
}
.sec-title{
  font-family:var(--f-display);font-weight:300;
  font-size:clamp(28px,6.5vw,52px);line-height:1.12;letter-spacing:.005em;
  color:var(--ink);
}
.sec-note{
  max-width:640px;margin:16px auto 0;font-size:clamp(12px,2.8vw,13.5px);line-height:1.7;
  color:var(--ink-soft);
}

/* ---------- scroll progress bar ---------- */
#scroll-progress{
  position:fixed;top:0;left:0;z-index:200;
  height:3px;width:0%;
  background:linear-gradient(90deg,var(--sage-dk),var(--gold),var(--gold-lt));
  box-shadow:0 0 10px rgba(184,148,42,.7);
  border-radius:0 2px 2px 0;
  opacity:0;
  transition:width .1s linear, opacity .4s ease;
  pointer-events:none;
}
#scroll-progress.is-visible{opacity:1}

/* ---------- scroll reveals ---------- */
.reveal{
  opacity:0;
  transform:translate3d(0,32px,0);
  transition:opacity .85s var(--ease),transform .85s var(--ease);
  will-change:opacity,transform;
}
.reveal.in{opacity:1;transform:none}

.sec-head.reveal{
  transform:translate3d(0,20px,0) scale(.97);
  transition:opacity .9s var(--ease),transform .9s var(--ease);
}
.sec-head.reveal.in{transform:none}

.card.reveal, .fact.reveal{
  transform:translate3d(0,36px,0) scale(.98);
  transition:opacity .8s var(--ease),transform .8s var(--ease),box-shadow .8s var(--ease);
}
.card.reveal.in, .fact.reveal.in{transform:none}

.tl-item.reveal{
  transform:translate3d(-28px,14px,0);
  transition:opacity .8s var(--ease),transform .8s var(--ease);
}
.tl-item.reveal.in{transform:none}

.person.reveal:nth-child(odd){
  transform:translate3d(-22px,18px,0);
  transition:opacity .85s var(--ease),transform .85s var(--ease);
}
.person.reveal:nth-child(even){
  transform:translate3d(22px,18px,0);
  transition:opacity .85s var(--ease),transform .85s var(--ease);
}
.person.reveal.in{transform:none}

.temple-card.reveal, .lux-card.reveal{
  transform:translate3d(0,24px,0) scale(.975);
  transition:opacity .95s var(--ease),transform .95s var(--ease);
}
.temple-card.reveal.in, .lux-card.reveal.in{transform:none}

.countdown.reveal{
  transform:translate3d(0,18px,0);
  transition:opacity .9s var(--ease),transform .9s cubic-bezier(.34,1.42,.64,1);
}
.countdown.reveal.in{transform:none}

.reveal[data-delay="1"]{transition-delay:.10s}
.reveal[data-delay="2"]{transition-delay:.20s}
.reveal[data-delay="3"]{transition-delay:.30s}
.reveal[data-delay="4"]{transition-delay:.40s}
.reveal[data-delay="5"]{transition-delay:.50s}

@media (prefers-reduced-motion: reduce){
  .reveal,.sec-head.reveal,.card.reveal,.fact.reveal,
  .tl-item.reveal,.person.reveal,.temple-card.reveal,
  .lux-card.reveal,.countdown.reveal{
    transform:none;transition:opacity .4s ease;
  }
}

/* ---------- lede ---------- */
.lede{
  max-width:720px;margin:0 auto clamp(40px,7vw,62px);text-align:center;
  font-family:var(--f-display);font-size:clamp(17px,4.3vw,22px);
  line-height:1.85;color:var(--ink-soft);font-weight:300;
}
.lede em{font-style:italic;color:var(--sage-dk);font-weight:400}

/* ---------- BIBLE VERSE ---------- */
.verse-card{
  max-width:640px;
  margin-inline:auto;
  text-align:center;
  padding:clamp(36px,6vw,56px) clamp(28px,6vw,52px);
  background:rgba(255,255,255,.62);
  border:1px solid rgba(184,148,42,.28);
  border-radius:4px;
  box-shadow:var(--shadow-m);
  position:relative;
}
.verse-card::before{
  content:"";position:absolute;inset:8px;
  border:1px solid rgba(184,148,42,.14);border-radius:3px;pointer-events:none;
}
.verse-cross{
  width:42px;height:42px;
  color:var(--gold);stroke-width:3.2;
  margin:0 auto clamp(20px,4vw,28px);opacity:.85;
}
.verse-text{
  font-family:var(--f-display);font-style:italic;
  font-size:clamp(18px,4.6vw,24px);
  line-height:1.9;
  color:var(--ink);
  font-weight:300;
  margin-bottom:1em;
}
.verse-ref{
  font-family:var(--f-title);
  font-size:clamp(13px,3.2vw,15px);
  letter-spacing:.18em;
  text-transform:uppercase;
  color:var(--gold-dk);
  font-style:normal;
}

/* ---------- facts ---------- */
.facts{display:grid;gap:14px;grid-template-columns:repeat(auto-fit,minmax(215px,1fr))}
.fact{
  position:relative;display:flex;flex-direction:column;align-items:center;text-align:center;
  gap:4px;padding:30px 20px 26px;border-radius:3px;
  background:rgba(255,255,255,.55);
  border:1px solid rgba(184,148,42,.24);
  box-shadow:var(--shadow-s);
  transition:transform .5s var(--ease),box-shadow .5s var(--ease),border-color .5s var(--ease);
}
.fact::before{
  content:"";position:absolute;inset:5px;border:1px solid rgba(184,148,42,.16);border-radius:2px;pointer-events:none;
}
.fact:hover{transform:translateY(-4px);box-shadow:var(--shadow-m);border-color:rgba(184,148,42,.5)}
.fact .ico{width:30px;height:30px;color:var(--sage);stroke-width:3.4;margin-bottom:8px}
.fact-k{font-size:clamp(11px,2.8vw,13px);letter-spacing:.28em;text-transform:uppercase;color:var(--sage);font-weight:700}
.fact-v{font-family:var(--f-title);font-size:clamp(16px,4.2vw,20px);color:var(--sage-dk);line-height:1.4;font-weight:700}
.fact-s{font-size:12px;color:var(--ink-soft)}
.fact-link{
  display:inline-flex;align-items:center;gap:5px;
  margin-top:8px;
  font-size:11px;letter-spacing:.16em;text-transform:uppercase;
  color:var(--gold-dk);font-weight:600;
  border-bottom:1px solid rgba(184,148,42,.35);
  padding-bottom:1px;
  transition:color .25s,border-color .25s;
}
.fact-link:hover{color:var(--gold);border-color:var(--gold);}

/* ---------- countdown ---------- */
.countdown{
  display:flex;align-items:center;justify-content:center;gap:clamp(8px,3vw,22px);
  margin-top:clamp(42px,7vw,60px);flex-wrap:wrap;
}
.cd-unit{
  display:flex;flex-direction:column;align-items:center;
  min-width:80px;
  background:linear-gradient(160deg,rgba(90,122,90,.12),rgba(90,122,90,.06));
  border:1px solid rgba(184,148,42,.38);
  border-radius:8px;
  padding:16px 14px 12px;
  box-shadow:0 4px 18px -8px rgba(90,122,90,.2);
  position:relative;
}
.cd-unit::before{
  content:"";position:absolute;inset:4px;border:1px solid rgba(184,148,42,.14);border-radius:5px;pointer-events:none;
}
.cd-n{
  font-family:var(--f-display);font-weight:400;
  font-size:clamp(36px,9vw,58px);line-height:1;color:var(--sage-dk);
  font-variant-numeric:tabular-nums;
}
.cd-l{margin-top:8px;font-size:9px;letter-spacing:.26em;text-transform:uppercase;color:var(--brass);font-weight:600;}
.cd-sep{
  display:flex;align-items:center;padding-bottom:22px;
  font-family:var(--f-display);font-size:clamp(28px,7vw,42px);
  color:var(--gold);opacity:.6;line-height:1;
}
.cd-sep::after{content:":"}

/* ---------- cards ---------- */
.card{
  position:relative;padding:clamp(26px,5vw,36px);border-radius:3px;
  background:rgba(255,255,255,.62);
  border:1px solid rgba(184,148,42,.26);
  box-shadow:var(--shadow-s);
  transition:transform .55s var(--ease),box-shadow .55s var(--ease);
}
.card::after{content:"";position:absolute;inset:6px;border:1px solid rgba(184,148,42,.14);pointer-events:none}
.card:hover{transform:translateY(-5px);box-shadow:var(--shadow-m)}
.card-ico{width:34px;height:34px;color:var(--sage);stroke-width:3.2;margin-bottom:16px;opacity:.85}
.card-title{font-family:var(--f-title);font-size:clamp(17px,4.2vw,20px);color:var(--ink);margin-bottom:10px;font-weight:400}
.card p{font-size:14.5px;line-height:1.85;color:var(--ink-soft)}

/* ---------- timeline ---------- */
.tl{position:relative;max-width:760px;margin-inline:auto;padding-left:8px}
.tl::before{
  content:"";position:absolute;left:23px;top:12px;bottom:12px;width:1px;
  background:linear-gradient(180deg,transparent,rgba(90,122,90,.55) 8%,rgba(90,122,90,.55) 92%,transparent);
}
.tl-item{position:relative;padding:0 0 clamp(34px,6vw,50px) 66px}
.tl-item:last-child{padding-bottom:0}
.tl-node{
  position:absolute;left:0;top:0;width:47px;height:47px;border-radius:50%;
  display:grid;place-items:center;background:var(--ivory);
  border:1px solid rgba(90,122,90,.55);color:var(--sage);
  box-shadow:0 0 0 6px var(--ivory),0 6px 18px -8px rgba(46,36,22,.4);
  transition:all .4s var(--ease);
}
.tl-node .ico{width:22px;height:22px;stroke-width:3.6}
.tl-node--hi{background:linear-gradient(145deg,var(--gold-lt),var(--gold));color:#2E1E0E;border-color:transparent}
.tl-node--hi::after{
  content:"";position:absolute;inset:-6px;border-radius:50%;
  border:1px solid rgba(184,148,42,.55);animation:ringOut 3.4s var(--ease-soft) infinite;
}
.tl-item.is-active-milestone .tl-node{
  box-shadow:0 0 0 6px var(--ivory),0 0 24px rgba(184,148,42,.6);
  border-color:var(--gold);
  transform:scale(1.12);
}

/* ---------- story navigation bar ---------- */
.story-nav{
  display:flex;justify-content:center;align-items:center;
  flex-wrap:wrap;gap:clamp(8px,2vw,14px);
  margin-bottom:clamp(28px,5vw,42px);
}
.story-nav__btn{
  border:1px solid rgba(184,148,42,.35);
  background:rgba(255,255,255,.65);
  backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px);
  color:var(--sage-dk);font-family:var(--f-body);
  font-size:13px;font-weight:500;letter-spacing:.1em;
  padding:7px 18px;border-radius:30px;
  cursor:pointer;transition:all .35s var(--ease);
  box-shadow:0 4px 12px -4px rgba(46,36,22,.08);
}
.story-nav__btn:hover{
  background:var(--gold-lt);color:#2E1E0E;border-color:var(--gold);
  transform:translateY(-2px);box-shadow:0 6px 16px -4px rgba(184,148,42,.3);
}
.story-nav__btn.is-active{
  background:linear-gradient(135deg,var(--gold-lt),var(--gold));
  color:#2E1E0E;border-color:transparent;
  box-shadow:0 4px 16px -2px rgba(184,148,42,.45);
  font-weight:600;
}

/* ---------- story interactive photo card ---------- */
.story-photo-wrapper{
  margin-bottom:20px;
  perspective:1000px;
  transform-style:preserve-3d;
}
.story-photo-card{
  position:relative;
  border-radius:12px;
  background:#FAF7F2;
  padding:10px 10px 14px 10px;
  border:1px solid rgba(184,148,42,.32);
  box-shadow:0 12px 32px -10px rgba(46,36,22,.18),0 0 0 1px rgba(255,255,255,.6) inset;
  cursor:pointer;
  transition:transform .45s var(--ease),box-shadow .45s var(--ease),border-color .45s var(--ease);
  transform-origin:center center;
  will-change:transform;
}
.tl-item:nth-child(odd) .story-photo-card{transform:rotate(-1.2deg)}
.tl-item:nth-child(even) .story-photo-card{transform:rotate(1.2deg)}
.story-photo-card:hover{
  transform:rotate(0deg) translateY(-4px) scale(1.015)!important;
  box-shadow:0 20px 48px -14px rgba(184,148,42,.35),0 0 0 1.5px var(--gold) inset;
  border-color:rgba(184,148,42,.7);
}

.story-photo-tape{
  position:absolute;top:-9px;left:50%;
  transform:translateX(-50%);
  width:64px;height:18px;
  background:rgba(212,184,106,.35);
  backdrop-filter:blur(4px);
  border:1px stroke rgba(255,255,255,.5);
  border-radius:2px;
  box-shadow:0 2px 6px rgba(0,0,0,.06);
  z-index:3;pointer-events:none;
}

.story-photo-frame{
  position:relative;width:100%;
  max-height:420px;aspect-ratio:4/3;
  border-radius:8px;overflow:hidden;
  background:#E8E2D6;
}
.story-photo-img{
  width:100%;height:100%;
  object-fit:cover;object-position:center 30%;
  display:block;transition:transform .65s var(--ease);
}
.story-photo-card:hover .story-photo-img{transform:scale(1.05)}

.story-photo-overlay{
  position:absolute;inset:0;
  background:linear-gradient(180deg,transparent 60%,rgba(20,16,10,.45) 100%);
  opacity:0;transition:opacity .4s var(--ease);
  pointer-events:none;
}
.story-photo-card:hover .story-photo-overlay{opacity:1}

.story-photo-badge{
  position:absolute;bottom:22px;right:18px;
  display:inline-flex;align-items:center;gap:6px;
  padding:6px 14px;border-radius:20px;
  background:rgba(14,12,8,.72);
  backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px);
  border:1px solid rgba(212,184,106,.4);
  color:#FBF5E8;font-size:11px;letter-spacing:.08em;
  text-transform:uppercase;z-index:2;
  transition:all .35s var(--ease);
  box-shadow:0 4px 14px rgba(0,0,0,.3);
}
.story-photo-badge svg{width:14px;height:14px;color:var(--gold-lt)}
.story-photo-card:hover .story-photo-badge{
  background:rgba(184,148,42,.92);color:#2E1E0E;
  border-color:transparent;transform:translateY(-2px);
}
.story-photo-card:hover .story-photo-badge svg{color:currentColor}

/* ---------- story text card ---------- */
.story-text-card{
  position:relative;
  background:rgba(255,255,255,.76);
  backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px);
  border:1px solid rgba(184,148,42,.22);
  border-radius:10px;padding:clamp(20px,4vw,28px);
  box-shadow:var(--shadow-s);
  transition:transform .45s var(--ease),box-shadow .45s var(--ease);
}
.story-text-card::after{
  content:"";position:absolute;inset:5px;
  border:1px solid rgba(184,148,42,.12);
  border-radius:7px;pointer-events:none;
}
.tl-item:hover .story-text-card{
  box-shadow:var(--shadow-m);border-color:rgba(184,148,42,.4);
}

.tl-date{font-size:10.5px;letter-spacing:.24em;text-transform:uppercase;color:var(--sage)}
.tl-title{font-family:var(--f-display);font-weight:400;font-size:clamp(22px,5.6vw,30px);color:var(--ink);margin:6px 0 8px;line-height:1.2}
.tl-meta{font-size:13.5px;color:var(--sage-dk);margin-bottom:8px}
.tl-text{font-size:14.5px;color:var(--ink-soft);line-height:1.8}
.tl-actions{margin-top:14px}
.btn--sm{padding:9px 18px;font-size:10px}

/* ---------- story lightbox modal ---------- */
.story-lightbox{
  position:fixed;inset:0;z-index:9999;
  display:grid;place-items:center;
  opacity:0;visibility:hidden;
  transition:opacity .4s var(--ease),visibility .4s var(--ease);
}
.story-lightbox.is-open{opacity:1;visibility:visible}
.story-lightbox__backdrop{
  position:absolute;inset:0;
  background:rgba(14,12,8,.93);
  backdrop-filter:blur(14px);-webkit-backdrop-filter:blur(14px);
}
.story-lightbox__container{
  position:relative;z-index:2;
  width:min(92vw,900px);max-height:90vh;
  display:flex;flex-direction:column;
  align-items:center;justify-content:center;
  padding:16px;
}
.story-lightbox__content{
  display:flex;flex-direction:column;
  align-items:center;width:100%;
  transform:scale(.92);transition:transform .4s var(--ease);
}
.story-lightbox.is-open .story-lightbox__content{transform:scale(1)}
.story-lightbox__frame{
  position:relative;max-width:100%;
  max-height:72vh;border-radius:12px;
  overflow:hidden;
  box-shadow:0 24px 60px rgba(0,0,0,.8),0 0 0 1px rgba(212,184,106,.35);
  border:4px solid rgba(255,255,255,.1);
  background:#0E0C08;
}
.story-lightbox__img{
  max-width:100%;max-height:72vh;
  object-fit:contain;display:block;
}
.story-lightbox__info{margin-top:16px;text-align:center;color:#FAF5EA}
.story-lightbox__caption{
  font-family:var(--f-display);
  font-size:clamp(18px,4vw,26px);
  color:var(--gold-lt);margin-bottom:4px;
}
.story-lightbox__counter{
  font-size:12px;letter-spacing:.18em;
  text-transform:uppercase;color:rgba(245,235,218,.6);
}

.story-lightbox__close{
  position:absolute;top:-46px;right:0px;
  width:42px;height:42px;border-radius:50%;
  border:1px solid rgba(212,184,106,.4);
  background:rgba(255,255,255,.1);
  color:#FBF5E8;display:grid;place-items:center;
  cursor:pointer;transition:all .3s var(--ease);
  z-index:10;
}
.story-lightbox__close:hover{
  background:var(--gold);color:#2E1E0E;
  border-color:transparent;transform:rotate(90deg);
}
.story-lightbox__close svg{width:22px;height:22px}

.story-lightbox__nav{
  position:absolute;top:50%;transform:translateY(-50%);
  width:48px;height:48px;border-radius:50%;
  border:1px solid rgba(212,184,106,.4);
  background:rgba(255,255,255,.08);
  color:#FBF5E8;display:grid;place-items:center;
  cursor:pointer;transition:all .3s var(--ease);
  z-index:10;
}
.story-lightbox__nav:hover{
  background:var(--gold);color:#2E1E0E;
  border-color:transparent;transform:translateY(-50%) scale(1.1);
}
.story-lightbox__nav svg{width:24px;height:24px}
.story-lightbox__nav--prev{left:-20px}
.story-lightbox__nav--next{right:-20px}

@media (max-width:640px){
  .story-lightbox__nav--prev{left:4px}
  .story-lightbox__nav--next{right:4px}
  .story-lightbox__close{top:-40px;right:4px}
  .story-photo-frame{aspect-ratio:4/3;max-height:300px}
}

/* ---------- couple ---------- */
.couple-photo-wrap{
  display:flex;justify-content:center;
  margin-bottom:clamp(36px,6vw,52px);
}
.couple-photo-frame{
  position:relative;
  width:clamp(260px,72vw,440px);
  aspect-ratio:3/4;
  border-radius:12px;
  overflow:hidden;
  border:1px solid rgba(212,184,106,.45);
  box-shadow:0 2px 0 rgba(255,255,255,.08) inset,
             0 24px 60px -24px rgba(0,0,0,.7),
             0 0 0 1px rgba(184,148,42,.22);
}
.couple-photo-img{
  width:100%;height:100%;
  object-fit:cover;object-position:center top;
  display:block;
}
.couple-photo-img.failed{
  display:none;
}
.couple-photo-frame.is-empty::after{
  content:"Couple Photo";
  position:absolute;inset:0;display:grid;place-items:center;
  font-size:11px;letter-spacing:.24em;text-transform:uppercase;
  color:rgba(212,184,106,.5);
  background:repeating-linear-gradient(135deg,rgba(90,122,90,.06) 0 10px,transparent 10px 20px),
             linear-gradient(160deg,#2A3820,#1A2410);
}
.couple-photo-ring{
  position:absolute;inset:8px;border-radius:8px;
  border:1px solid rgba(212,184,106,.3);pointer-events:none;
}

.couple-grid{
  display:grid;gap:clamp(20px,4vw,36px);align-items:start;
  grid-template-columns:1fr auto 1fr;justify-items:center;
}
.person{text-align:center;max-width:320px;}
.person-role{font-size:9.5px;letter-spacing:.32em;text-transform:uppercase;color:var(--gold-lt);opacity:.85;margin-bottom:8px;}
.person-name{font-family:var(--f-script);font-weight:400;font-size:clamp(26px,6.5vw,38px);color:#FBF5E8;margin:0 0 8px;line-height:1.2;}
.person-line{font-size:13.5px;color:rgba(245,235,218,.78);line-height:1.85;}
.person-place{font-size:12.5px;color:rgba(245,235,218,.5);margin-top:8px;line-height:1.6;}

@media (max-width:540px){
  .couple-grid{
    grid-template-columns:1fr;
    grid-template-rows:auto auto auto;
  }
  .couple-knot{
    grid-row:2;
    padding:6px 0;
  }
}

.couple-knot{display:flex;align-items:center;gap:14px;color:var(--gold-lt);opacity:.7;}
.couple-knot .ico{width:34px;height:34px;stroke-width:3;}
.couple-amp{font-family:var(--f-display);font-style:italic;font-size:30px;}
.couple-initial{
  font-family:var(--f-script);
  font-size:clamp(38px,8vw,54px);
  font-weight:400;
  color:var(--gold-lt);
  line-height:1;
  text-shadow:0 2px 18px rgba(212,184,106,.45);
  letter-spacing:.02em;
}

/* ---------- family ---------- */
.family-grid{display:grid;gap:18px;grid-template-columns:repeat(auto-fit,minmax(280px,1fr))}
.card--family{text-align:center;padding-block:clamp(32px,6vw,44px)}
.card--family .card-ico{margin-inline:auto;color:var(--brass)}
.family-tag{font-size:9.5px;letter-spacing:.3em;text-transform:uppercase;color:var(--sage);margin-bottom:18px}
.family-name{font-family:var(--f-display);font-weight:400;font-size:clamp(20px,5vw,26px);color:var(--ink);line-height:1.3}
.family-line{font-size:13px;color:var(--ink-soft);margin:4px 0 8px;font-style:italic}
.family-amp{font-family:var(--f-display);font-style:italic;font-size:20px;color:var(--gold);margin:4px 0}
.family-home{margin-top:16px;font-size:14px;color:var(--ink-soft);line-height:1.7}
.family-foot{
  display:flex;align-items:center;justify-content:center;gap:12px;flex-wrap:wrap;
  margin-top:clamp(30px,5vw,44px);font-family:var(--f-display);font-style:italic;
  font-size:clamp(16px,4vw,19px);color:var(--sage-dk);text-align:center;
}
.family-foot .ico{width:28px;height:28px;color:var(--sage-lt);stroke-width:3.4}

/* ---------- venue ---------- */
.venue-grid{display:grid;gap:20px;grid-template-columns:repeat(auto-fit,minmax(300px,1fr))}
.venue-card{
  overflow:hidden;border-radius:4px;background:#fff;
  border:1px solid rgba(184,148,42,.24);box-shadow:var(--shadow-s);
  transition:transform .55s var(--ease),box-shadow .55s var(--ease);
}
.venue-card:hover{transform:translateY(-5px);box-shadow:var(--shadow-m)}
.venue-map-embed{
  position:relative;overflow:hidden;
  border-bottom:1px solid rgba(184,148,42,.2);
}
.venue-map-embed iframe{
  display:block;width:100%;height:220px;border:0;
  filter:contrast(.9) saturate(.85);
}
.venue-body{padding:clamp(22px,4.5vw,30px)}
.venue-tag{font-size:9.5px;letter-spacing:.3em;text-transform:uppercase;color:var(--sage)}
.venue-name{font-family:var(--f-display);font-weight:400;font-size:clamp(21px,5.2vw,27px);color:var(--ink);margin:8px 0 12px;line-height:1.25}
.venue-addr{font-size:14px;color:var(--ink-soft);line-height:1.75}
.venue-when{display:flex;align-items:center;gap:8px;margin-top:14px;font-size:13px;color:var(--sage-dk)}
.venue-when .ico{width:15px;height:15px;color:var(--sage);stroke-width:4.4}
.venue-actions{display:flex;flex-wrap:wrap;gap:10px;margin-top:22px}

/* ---------- buttons ---------- */
.btn{
  display:inline-flex;align-items:center;justify-content:center;gap:9px;
  padding:13px 26px;border-radius:999px;
  font-size:11px;letter-spacing:.2em;text-transform:uppercase;
  transition:transform .35s var(--ease),box-shadow .35s var(--ease),background .35s var(--ease),color .35s var(--ease),border-color .35s var(--ease);
  -webkit-tap-highlight-color:transparent;
}
.btn .ico{width:15px;height:15px;stroke-width:4.4}
.btn--gold{background:linear-gradient(145deg,var(--gold-lt),var(--gold));color:#2E1E0A;box-shadow:0 10px 26px -12px rgba(184,148,42,.85)}
.btn--gold:hover{transform:translateY(-2px);box-shadow:0 16px 34px -12px rgba(184,148,42,.95)}
.btn--ghost{border:1px solid rgba(184,148,42,.55);color:var(--brass)}
.btn--ghost:hover{background:rgba(184,148,42,.1);transform:translateY(-2px)}
.btn:active{transform:translateY(0) scale(.98)}

/* ---------- gallery ---------- */
#gallery{overflow:hidden}
.gallery-rays{
  position:absolute;inset:0;pointer-events:none;z-index:1;opacity:.55;
  background:
    radial-gradient(42% 28% at 18% 22%,rgba(212,184,106,.22),transparent 70%),
    radial-gradient(36% 24% at 82% 38%,rgba(184,148,42,.14),transparent 72%),
    radial-gradient(50% 30% at 50% 88%,rgba(240,234,218,.35),transparent 70%);
}

.photo-wall-stage{position:relative;width:100%;max-width:min(1180px,100%);margin-inline:auto;}
.photo-wall__fx{position:absolute;inset:0;pointer-events:none;z-index:1;overflow:hidden;}
.photo-wall{
  position:relative;columns:3;
  column-gap:clamp(18px,2.8vw,34px);
  padding:clamp(8px,2vw,20px) 0 clamp(20px,4vw,48px);z-index:2;
}

.photo-card{
  --rot:0deg;--nudge-x:0px;--nudge-y:0px;--scale:1;
  --parallax-y:0px;--enter-x:0px;--enter-y:28px;--enter-s:.96;--drift-delay:0s;
  position:relative;display:inline-block;width:100%;
  margin:0 0 clamp(22px,3.2vw,42px);
  break-inside:avoid;page-break-inside:avoid;vertical-align:top;
  opacity:0;transform:translate3d(0,var(--parallax-y),0);
  will-change:transform,opacity;z-index:2;
}
.photo-card--sm{width:86%;margin-inline:auto}
.photo-card--md{width:96%;margin-inline:auto}
.photo-card--lg{width:100%}
.photo-card[data-enter="left"]{--enter-x:-56px;--enter-y:18px;--enter-s:1}
.photo-card[data-enter="right"]{--enter-x:56px;--enter-y:18px;--enter-s:1}
.photo-card[data-enter="up"]{--enter-x:0px;--enter-y:40px;--enter-s:.93}

.photo-card__inner{
  transform:translate3d(var(--enter-x),var(--enter-y),0) scale(var(--enter-s));
  transition:transform 1.15s var(--ease),opacity 1.15s var(--ease);
  transform-origin:center center;
}
.photo-card.is-in{opacity:1}
.photo-card.is-in .photo-card__inner{
  transform:translate3d(var(--nudge-x),var(--nudge-y),0) rotate(var(--rot)) scale(var(--scale));
  animation:photoDrift 8.5s ease-in-out infinite alternate;
  animation-delay:calc(1.2s + var(--drift-delay));
}
.photo-card__paper{
  position:relative;padding:clamp(8px,1.2vw,12px);border-radius:10px;
  background:linear-gradient(165deg,rgba(255,254,250,.98),rgba(248,243,234,.96) 55%,rgba(240,232,216,.94));
  border:1px solid rgba(212,184,106,.55);
  box-shadow:0 1px 0 rgba(255,255,255,.7) inset,0 10px 28px -16px rgba(46,36,22,.28),0 2px 8px rgba(46,36,22,.06);
  transition:transform .55s var(--ease),box-shadow .55s var(--ease),filter .55s var(--ease);
  transform:translateZ(0);cursor:default;
}
.photo-card__paper::before{
  content:"";position:absolute;inset:5px;border-radius:7px;
  border:1px solid rgba(184,148,42,.28);pointer-events:none;z-index:2;
}
.photo-card__paper::after{
  content:"";position:absolute;inset:0;border-radius:inherit;pointer-events:none;z-index:3;
  background:linear-gradient(135deg,rgba(255,255,255,.28),transparent 42%,rgba(90,122,90,.04));
  mix-blend-mode:soft-light;
}
.photo-card__paper img{
  position:relative;z-index:1;width:100%;height:auto;max-width:100%;display:block;
  object-fit:contain;object-position:center;border-radius:4px;background:rgba(228,218,198,.35);
}
.photo-card__paper img.failed{display:none}
.photo-card.is-empty .photo-card__paper{min-height:180px;}
.photo-card.is-empty .photo-card__paper::before{
  content:attr(data-label);
  inset:12px;display:grid;place-items:center;text-align:center;padding:16px;
  font-size:10px;letter-spacing:.22em;text-transform:uppercase;color:rgba(90,122,90,.72);
  border:1px dashed rgba(184,148,42,.55);border-radius:6px;background:transparent;
}

@media (hover:hover) and (pointer:fine){
  .photo-card:hover{z-index:5}
  .photo-card.is-in:hover .photo-card__paper{
    transform:translateY(-10px) scale(1.025) rotate(.6deg);
    box-shadow:0 1px 0 rgba(255,255,255,.75) inset,0 28px 54px -22px rgba(46,36,22,.42),0 10px 22px rgba(90,122,90,.12);
    filter:saturate(1.04);
  }
}

.photo-card.is-touched .photo-card__paper{
  animation:photoTouch .55s var(--ease);
  box-shadow:0 1px 0 rgba(255,255,255,.75) inset,0 18px 40px -18px rgba(46,36,22,.36),0 0 0 1px rgba(212,184,106,.45),0 0 28px rgba(212,184,106,.28);
}

@keyframes photoDrift{
  0%{transform:translate3d(var(--nudge-x),var(--nudge-y),0) rotate(var(--rot)) scale(var(--scale));}
  50%{transform:translate3d(calc(var(--nudge-x) + 2px),calc(var(--nudge-y) - 5px),0) rotate(calc(var(--rot) + .35deg)) scale(calc(var(--scale) * 1.008));}
  100%{transform:translate3d(calc(var(--nudge-x) - 1px),calc(var(--nudge-y) + 3px),0) rotate(calc(var(--rot) - .25deg)) scale(var(--scale));}
}
@keyframes photoTouch{
  0%{transform:translateY(0) scale(1)}
  40%{transform:translateY(-6px) scale(1.03)}
  100%{transform:translateY(0) scale(1)}
}

.photo-decor{position:absolute;pointer-events:none;z-index:1;opacity:.55;}
.photo-decor--spark{width:7px;height:7px;background:radial-gradient(circle,rgba(212,184,106,.95) 0%,rgba(184,148,42,.2) 55%,transparent 70%);border-radius:50%;animation:photoSpark 4.8s ease-in-out infinite;}
.photo-decor--spark::before,.photo-decor--spark::after{content:"";position:absolute;left:50%;top:50%;width:1px;height:12px;background:linear-gradient(180deg,transparent,rgba(212,184,106,.75),transparent);transform:translate(-50%,-50%);}
.photo-decor--spark::after{transform:translate(-50%,-50%) rotate(90deg)}
.photo-decor--petal{width:14px;height:10px;border-radius:60% 40% 60% 40%;background:linear-gradient(135deg,rgba(90,122,90,.55),rgba(90,122,90,.15));transform:rotate(25deg);animation:photoPetal 11s ease-in-out infinite alternate;}
.photo-decor--dot{width:3px;height:3px;border-radius:50%;background:rgba(184,148,42,.55);box-shadow:0 0 8px rgba(212,184,106,.45);animation:photoSpark 6s ease-in-out infinite;}
.photo-decor--ray{width:120px;height:120px;border-radius:50%;background:radial-gradient(circle,rgba(248,244,228,.45),transparent 68%);filter:blur(2px);animation:photoSpark 9s ease-in-out infinite;}
.photo-decor.a{top:8%;left:6%;animation-delay:0s}
.photo-decor.b{top:42%;right:4%;animation-delay:1.2s}
.photo-decor.c{bottom:18%;left:48%;animation-delay:2.4s}
.photo-decor.d{top:28%;left:38%;opacity:.35}
.photo-decor.e{bottom:32%;right:18%;opacity:.3;transform:rotate(-18deg) scale(.85)}
.photo-decor.f{top:16%;right:28%}
.photo-decor.g{bottom:12%;left:12%}
.photo-decor.h{top:55%;left:8%;opacity:.4}

@keyframes photoSpark{0%,100%{opacity:.25;transform:scale(.85)}50%{opacity:.7;transform:scale(1.15)}}
@keyframes photoPetal{0%{transform:translateY(0) rotate(18deg)}100%{transform:translateY(10px) rotate(42deg)}}

/* ============================================================
   10 · THANK YOU FINALE
   ============================================================ */
.finale-glow{
  position:absolute;left:50%;top:46%;width:min(96%,860px);aspect-ratio:2/1;
  transform:translate(-50%,-50%);pointer-events:none;opacity:0;
  background:radial-gradient(closest-side,rgba(212,184,106,.30),transparent 72%);
  transition:opacity 1.8s var(--ease);
}
body.finale-glow-on .finale-glow{opacity:1}

.finale-stage{
  position:relative;width:100%;
  height:clamp(150px,30vh,250px);
  display:grid;place-items:center;
}
.finale-fallback{
  font-family:var(--f-display);font-weight:300;
  font-size:clamp(34px,11vw,84px);letter-spacing:.16em;
  color:rgba(240,224,180,.92);
  text-shadow:0 0 40px rgba(212,184,106,.4);
  transition:opacity 1.2s var(--ease);
}
body.finale-particles .finale-fallback{opacity:0}

.finale-sub{
  margin-top:8px;font-family:var(--f-display);font-style:italic;
  font-size:clamp(17px,4.4vw,24px);color:rgba(245,235,218,.72);
}
.finale-blessing{
  margin-top:16px;font-family:var(--f-display);font-style:italic;
  font-size:clamp(14px,3.6vw,18px);color:rgba(212,184,106,.72);
  letter-spacing:.02em;
}

/* ============================================================
   10b · AUDIO DISC CONTROL
   ============================================================ */
.audio-disc{
  position:fixed;z-index:110;
  left:max(16px,env(safe-area-inset-left));
  bottom:max(18px,env(safe-area-inset-bottom));
  width:64px;height:64px;
  padding:0;border-radius:50%;isolation:isolate;
  -webkit-tap-highlight-color:transparent;
  opacity:0;visibility:hidden;pointer-events:none;
  transform:translate3d(0,12px,0) scale(.88);
  transition:opacity .55s var(--ease),visibility 0s linear .55s,transform .55s var(--ease);
}
.audio-disc.is-visible{
  opacity:1;visibility:visible;pointer-events:auto;transform:none;
  transition:opacity .55s var(--ease),visibility 0s,transform .55s var(--ease);
}
.audio-disc__glow{
  position:absolute;inset:-14px;z-index:0;border-radius:50%;
  background:radial-gradient(closest-side,rgba(90,122,90,.35),transparent 72%);
  opacity:.55;pointer-events:none;transition:opacity .4s var(--ease);
}
.audio-disc.is-playing .audio-disc__glow{opacity:1;animation:pulseGlow 3.2s var(--ease-soft) infinite;}
.audio-disc__ring{
  position:absolute;inset:-5px;z-index:1;border-radius:50%;
  border:1px solid rgba(212,184,106,.45);pointer-events:none;
}
.audio-disc.is-playing .audio-disc__ring{animation:ringOut 3.2s var(--ease-soft) infinite;}
.audio-disc__platter{
  position:absolute;inset:0;z-index:2;border-radius:50%;
  background:
    radial-gradient(circle at 50% 50%,#1A200E 0 18%,transparent 18.5%),
    repeating-radial-gradient(circle at 50% 50%,#101608 0 1.5px,#182010 1.5px 3px);
  border:2px solid rgba(212,184,106,.72);
  box-shadow:inset 0 0 0 1px rgba(240,220,160,.18),0 10px 28px -10px rgba(0,0,0,.75),0 0 0 1px rgba(184,148,42,.2);
  overflow:hidden;
}
.audio-disc__grooves{
  position:absolute;inset:8%;border-radius:50%;
  background:repeating-radial-gradient(circle at 50% 50%,transparent 0 2px,rgba(212,184,106,.06) 2px 3px);
  -webkit-mask-image:radial-gradient(circle,transparent 28%,#000 30%,#000 92%,transparent 94%);
  mask-image:radial-gradient(circle,transparent 28%,#000 30%,#000 92%,transparent 94%);
  pointer-events:none;
}
.audio-disc__hub{
  position:absolute;inset:28%;z-index:2;border-radius:50%;
  display:grid;place-items:center;
  background:radial-gradient(circle at 35% 30%,rgba(240,220,160,.35),transparent 55%),
    linear-gradient(145deg,var(--sage),var(--sage-dk) 55%,var(--forest));
  border:1px solid rgba(240,220,160,.45);
  box-shadow:inset 0 1px 0 rgba(240,220,160,.35),0 2px 8px rgba(0,0,0,.35);
}
.audio-disc__mono{
  font-family:var(--f-display);font-weight:500;font-style:italic;
  font-size:11px;letter-spacing:.04em;line-height:1;
  color:#F5F0E0;text-shadow:0 1px 2px rgba(0,0,0,.35);opacity:.92;
}
.audio-disc.is-playing .audio-disc__platter{animation:discSpin 4.8s linear infinite;}
@keyframes discSpin{to{transform:rotate(360deg)}}

.audio-disc__icon{
  position:absolute;inset:0;z-index:4;display:grid;place-items:center;border-radius:50%;
  background:radial-gradient(circle,rgba(8,10,4,.18) 0%,rgba(8,10,4,.42) 70%,rgba(8,10,4,.55) 100%);
  color:#F5F0E0;transition:background .35s var(--ease),opacity .35s var(--ease);
}
.audio-disc.is-playing .audio-disc__icon{
  background:radial-gradient(circle,rgba(8,10,4,.08) 0%,rgba(8,10,4,.28) 100%);opacity:.88;
}
.audio-disc__icon svg{width:18px;height:18px;filter:drop-shadow(0 1px 2px rgba(0,0,0,.4))}
.audio-disc__pause{display:none}
.audio-disc.is-playing .audio-disc__play{display:none}
.audio-disc.is-playing .audio-disc__pause{display:block}

.audio-disc:hover{transform:translateY(-2px)}
.audio-disc:hover .audio-disc__platter{
  border-color:rgba(212,184,106,.95);
  box-shadow:inset 0 0 0 1px rgba(240,220,160,.28),0 14px 34px -12px rgba(90,122,90,.35),0 0 0 1px rgba(184,148,42,.35);
}
.audio-disc:active{transform:scale(.96)}
.audio-disc:focus-visible{outline:2px solid var(--gold-lt);outline-offset:6px}

/* ============================================================
   11 · FOOTER / GRATITUDE CARD
   ============================================================ */
.footer{color:rgba(245,235,218,.8)}

.gratitude-card{
  max-width:560px;margin-inline:auto;text-align:center;
  padding:clamp(36px,7vw,60px) clamp(24px,6vw,50px);
  background:linear-gradient(160deg,rgba(240,228,200,.07),rgba(240,228,200,.02));
  border:1px solid rgba(212,184,106,.28);position:relative;
}
.gratitude-card::before,.gratitude-card::after{
  content:"";position:absolute;width:36px;height:36px;
  border:1px solid rgba(212,184,106,.6);pointer-events:none;
}
.gratitude-card::before{top:-1px;left:-1px;border-right:0;border-bottom:0}
.gratitude-card::after{bottom:-1px;right:-1px;border-left:0;border-top:0}

.gratitude-kicker{
  font-family:var(--f-title);
  font-size:clamp(11px,2.8vw,13px);letter-spacing:.32em;text-transform:uppercase;
  color:var(--gold-lt);opacity:.85;margin-bottom:18px;
}
.gratitude-msg{
  margin:22px auto 0;max-width:440px;
  font-family:var(--f-display);font-style:italic;
  font-size:clamp(16px,4.2vw,20px);line-height:1.9;
  color:rgba(245,235,218,.78);font-weight:300;
}
.gratitude-names{
  margin-top:28px;font-family:var(--f-script);font-weight:400;
  font-size:clamp(30px,8vw,46px);color:#FBF5E8;letter-spacing:0;
}
.gratitude-date{
  margin-top:8px;font-size:10.5px;letter-spacing:.28em;text-transform:uppercase;
  color:rgba(245,235,218,.42);
}
.gratitude-rsvp-names{
  margin-top:10px;
  font-family:var(--f-display);font-size:clamp(18px,4.4vw,22px);
  color:rgba(212,184,106,.9);font-style:italic;
}
.gratitude-phones{
  display:flex;align-items:center;justify-content:center;
  gap:clamp(10px,3vw,20px);flex-wrap:wrap;margin-top:16px;
}
.gratitude-phone{
  display:flex;align-items:center;gap:8px;
  font-size:clamp(13px,3.4vw,15px);color:var(--gold-lt);opacity:.85;
  transition:opacity .3s;
}
.gratitude-phone:hover{opacity:1}
.gratitude-phone .ico{width:15px;height:15px;stroke-width:4;flex:none}

/* ============================================================
   12 · RESPONSIVE
   ============================================================ */
@media (max-width:900px){
  .photo-wall{columns:2;column-gap:clamp(14px,3vw,22px)}
  .photo-card--sm{width:90%}
  .photo-card--md{width:98%}
}
@media (max-width:720px){
  .tl{padding-left:0}
  .tl::before{left:19px}
  .tl-item{padding-left:56px}
  .tl-node{width:39px;height:39px;box-shadow:0 0 0 5px var(--ivory)}
  .tl-node .ico{width:19px;height:19px}
  .audio-disc{width:58px;height:58px}
  .audio-disc__mono{font-size:10px}
  .audio-disc__icon svg{width:16px;height:16px}
  .photo-card{margin-bottom:clamp(18px,4vw,28px)}
  .photo-card[data-enter="left"],
  .photo-card[data-enter="right"]{--enter-x:0px;--enter-y:32px;--enter-s:.96}
}
@media (max-width:520px){
  .photo-wall{columns:1}
  .photo-wall-stage{max-width:420px}
  .photo-card--sm,.photo-card--md,.photo-card--lg{width:100%}
  .photo-card{--nudge-y:0px;--scale:1}
  .photo-decor{opacity:.35}
}
@media (max-width:420px){
  .countdown{gap:6px}
  .cd-unit{min-width:56px}
}
@media (min-width:900px){
  .couple-grid{grid-template-columns:1fr auto 1fr;align-items:center}
  .photo-wall{columns:3}
}
@media (min-width:1200px){
  .photo-wall{column-gap:38px}
}

/* ---------- 13 · MOTION / A11Y ---------- */
@media (prefers-reduced-motion:reduce){
  html{scroll-behavior:auto}
  *,*::before,*::after{
    animation-duration:.001ms!important;animation-iteration-count:1!important;
    transition-duration:.001ms!important;
  }
  .reveal{opacity:1;transform:none}
  .photo-card,.photo-card.is-in{opacity:1;transform:none}
  .photo-card__inner,.photo-card.is-in .photo-card__inner{
    transform:translate3d(var(--nudge-x,0),var(--nudge-y,0),0) rotate(var(--rot,0deg)) scale(var(--scale,1));
    animation:none!important;
  }
  .photo-card.is-touched .photo-card__paper,.photo-decor{animation:none!important}
  #particles{display:none}
  .cover-img{animation:none;transform:none}
  .audio-disc.is-playing .audio-disc__platter{animation:none}
  .audio-disc.is-playing .audio-disc__glow,.audio-disc.is-playing .audio-disc__ring{animation:none}
  .scene--hero,.scene--hero.loaded{opacity:1;visibility:visible}
  .scene--hero > .section-bg,
  .scene--hero > picture.section-bg,
  .scene--hero > picture.section-bg > img{opacity:1}
  .scene--hero > .section-content,
  .scene--hero.loaded.text-ready > .section-content,
  .scene--hero > .scroll-indicator,
  .scene--hero.loaded.text-ready > .scroll-indicator{opacity:1;transform:none;}
}
@media (prefers-contrast:more){
  .sec-note,.fact-s,.tl-text,.card p{color:#3E2E1A}
}

/* ============================================================
   RSVP SECTION + WISHES WALL
   ============================================================ */

/* ── Card shell ── */
.rsvp-card{
  max-width:760px;
  margin:0 auto;
  padding:clamp(28px,5vw,44px) clamp(22px,5vw,40px);
  background:rgba(255,255,255,.72);
  border:1px solid rgba(184,148,42,.3);
  border-radius:4px;
  box-shadow:0 12px 34px -14px rgba(46,36,22,.22);
  position:relative;
}
.rsvp-card::after{
  content:"";position:absolute;inset:6px;
  border:1px solid rgba(184,148,42,.12);border-radius:3px;pointer-events:none;
}

/* ── Success state ── */
.rsvp-success{
  display:flex;flex-direction:column;align-items:center;
  gap:14px;text-align:center;padding:clamp(32px,6vw,56px) 20px;
}
.rsvp-success__ico{
  width:64px;height:64px;color:var(--sage);stroke-width:2.5;
}
.rsvp-success__title{
  font-family:var(--f-display);font-weight:300;
  font-size:clamp(26px,6vw,36px);color:var(--sage-dk);
}
.rsvp-success__msg{
  font-size:clamp(14px,3.5vw,17px);color:var(--ink-soft);
  font-family:var(--f-display);font-style:italic;
}

/* ── Layout rows ── */
.rsvp-row{
  display:grid;grid-template-columns:1fr 1fr;gap:18px;
  margin-bottom:18px;
}
@media(max-width:580px){
  .rsvp-row{grid-template-columns:1fr;}
}

/* ── Field ── */
.rsvp-field{
  display:flex;flex-direction:column;gap:7px;
  margin-bottom:18px;
}
.rsvp-row .rsvp-field{margin-bottom:0;}

/* ── Label ── */
.rsvp-label{
  font-family:var(--f-body);
  font-size:11px;letter-spacing:.24em;text-transform:uppercase;
  font-weight:600;color:var(--sage-dk);
}
.rsvp-label span[aria-hidden]{color:var(--gold);}
.rsvp-optional{
  font-size:10px;text-transform:uppercase;
  color:var(--ink-soft);font-weight:400;opacity:.7;
}

/* ── Inputs ── */
.rsvp-input{
  width:100%;padding:11px 15px;
  font-size:15px;color:var(--ink);
  background:rgba(255,255,255,.9);
  border:1.5px solid rgba(90,122,90,.35);
  border-radius:4px;outline:none;
  transition:border-color .22s,box-shadow .22s;
  appearance:none;-webkit-appearance:none;
  font-family:var(--f-body);
  box-sizing:border-box;
}
.rsvp-input::placeholder{color:rgba(94,78,60,.35);}
.rsvp-input:focus{
  border-color:var(--sage);
  box-shadow:0 0 0 3px rgba(90,122,90,.14);
}
.rsvp-input.is-invalid{
  border-color:#c0392b;
  box-shadow:0 0 0 3px rgba(192,57,43,.10);
}

/* ── Textarea ── */
.rsvp-textarea{
  resize:vertical;min-height:88px;line-height:1.75;
}

/* ── Select ── */
.rsvp-select{
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%235A7A5A' stroke-width='2.5' stroke-linecap='round'%3E%3Cpath d='M6 9l6 6 6-6'/%3E%3C/svg%3E");
  background-repeat:no-repeat;
  background-position:right 13px center;
  background-size:15px;
  padding-right:38px;
  cursor:pointer;
}

/* ── Radio group ── */
.rsvp-radio-group{
  display:flex;flex-direction:column;gap:10px;padding-top:2px;
}
.rsvp-radio{
  display:flex;align-items:center;gap:10px;
  font-size:14.5px;color:var(--ink);cursor:pointer;
}
.rsvp-radio input[type="radio"]{
  position:absolute;opacity:0;width:0;height:0;
}
.rsvp-radio__mark{
  flex:none;width:20px;height:20px;border-radius:50%;
  border:2px solid rgba(90,122,90,.5);background:#fff;
  position:relative;
  transition:border-color .2s,background .2s;
}
.rsvp-radio__mark::after{
  content:"";position:absolute;inset:3px;border-radius:50%;
  background:var(--sage);transform:scale(0);transition:transform .2s;
}
.rsvp-radio input[type="radio"]:checked ~ .rsvp-radio__mark{
  border-color:var(--sage);
}
.rsvp-radio input[type="radio"]:checked ~ .rsvp-radio__mark::after{
  transform:scale(1);
}
.rsvp-radio input[type="radio"]:focus-visible ~ .rsvp-radio__mark{
  outline:2px solid var(--gold-lt);outline-offset:3px;
}

/* ── Error hints ── */
.rsvp-err{
  font-size:11px;color:#c0392b;letter-spacing:.02em;
}
.rsvp-err--submit{
  margin-top:10px;text-align:center;font-size:13px;
}

/* ── Submit button ── */
.rsvp-submit-row{
  display:flex;flex-direction:column;align-items:center;
  margin-top:8px;gap:0;
}
.rsvp-submit{
  display:inline-flex;align-items:center;justify-content:center;gap:9px;
  min-width:210px;padding:14px 34px;border-radius:999px;
  background:linear-gradient(145deg,var(--gold-lt),var(--gold));
  color:#2E1E0A;border:0;cursor:pointer;
  font-family:var(--f-body);
  font-size:11.5px;letter-spacing:.22em;text-transform:uppercase;font-weight:600;
  box-shadow:0 10px 26px -12px rgba(184,148,42,.8);
  transition:transform .3s var(--ease),box-shadow .3s var(--ease),opacity .3s;
}
.rsvp-submit:hover:not(:disabled){
  transform:translateY(-2px);
  box-shadow:0 16px 34px -12px rgba(184,148,42,.95);
}
.rsvp-submit:active{transform:scale(.98);}
.rsvp-submit:disabled{opacity:.65;cursor:not-allowed;}
.rsvp-submit:focus-visible{outline:2px solid var(--gold-lt);outline-offset:6px;}

/* spinner */
.rsvp-submit__loading{
  display:flex;align-items:center;gap:8px;
  font-size:11.5px;letter-spacing:.2em;text-transform:uppercase;
}
.rsvp-spinner{
  width:17px;height:17px;border-radius:50%;flex:none;
  border:2px solid rgba(46,30,10,.22);
  border-top-color:rgba(46,30,10,.85);
  animation:rsvpSpin .7s linear infinite;
}
@keyframes rsvpSpin{to{transform:rotate(360deg);}}

/* ── Wishes Wall ── */
.wishes-section{max-width:760px;margin:0 auto;}

.wishes-wall{
  display:grid;
  grid-template-columns:repeat(auto-fill,minmax(210px,1fr));
  gap:18px;
  margin-top:26px;
}
.wishes-empty{
  grid-column:1 / -1;text-align:center;
  font-family:var(--f-display);font-style:italic;
  color:var(--ink-soft);padding:clamp(28px,5vw,44px) 0;
  font-size:clamp(15px,3.8vw,18px);
}

.wish-card{
  padding:clamp(18px,3.5vw,26px) clamp(16px,3vw,22px);
  background:rgba(255,255,255,.68);
  border:1px solid rgba(184,148,42,.26);
  border-radius:4px;
  box-shadow:var(--shadow-s);
  display:flex;flex-direction:column;gap:10px;
  animation:wishIn .55s var(--ease) both;
  position:relative;
}
.wish-card::after{
  content:"";position:absolute;inset:5px;
  border:1px solid rgba(184,148,42,.10);border-radius:3px;pointer-events:none;
}
@keyframes wishIn{
  from{opacity:0;transform:translateY(18px) scale(.97);}
  to{opacity:1;transform:none;}
}
.wish-card__quote{
  font-family:var(--f-display);font-style:italic;
  font-size:clamp(14px,3.6vw,16px);color:var(--ink);line-height:1.85;
  position:relative;z-index:1;
}
.wish-card__quote::before{content:"\201C\00A0";color:var(--gold);font-size:1.25em;line-height:0;vertical-align:-.2em;}
.wish-card__quote::after {content:"\00A0\201D";color:var(--gold);font-size:1.25em;line-height:0;vertical-align:-.2em;}
.wish-card__meta{
  font-family:var(--f-body);
  font-size:10.5px;letter-spacing:.2em;text-transform:uppercase;
  color:var(--sage);font-weight:600;position:relative;z-index:1;
}
