@font-face{font-family:Cormorant;src:url('/assets/cormorant-400.ttf') format('truetype');font-weight:400;font-display:swap}
@font-face{font-family:Cormorant;src:url('/assets/cormorant-500.ttf') format('truetype');font-weight:500;font-display:swap}
@font-face{font-family:Cormorant;src:url('/assets/cormorant-600.ttf') format('truetype');font-weight:600;font-display:swap}
@font-face{font-family:GreatVibes;src:url('/assets/great-vibes.ttf') format('truetype');font-weight:400;font-display:swap}
:root{--wine:#4b0b1c;--wine-deep:#260610;--wine-bright:#751e36;--ivory:#fff7e8;--paper:#f6ead4;--champagne:#d9b56f;--gold:#c99a48;--ink:#35151b;--muted:#7c5b57;--serif:Cormorant,Georgia,serif;--script:GreatVibes,'Brush Script MT',cursive}
*{box-sizing:border-box}
html{scroll-behavior:smooth;background:var(--wine-deep)}
body{margin:0;min-width:320px;background:#1d050d;color:var(--ivory);font-family:var(--serif);font-size:18px;font-weight:500;line-height:1.48;-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility}
button,a{font:inherit}
button{color:inherit}
button:focus-visible,a:focus-visible{outline:2px solid var(--champagne);outline-offset:4px}
.skip-link{position:fixed;z-index:1000;top:-60px;left:16px;background:var(--ivory);color:var(--wine);padding:10px 16px;border-radius:2px;transition:top .2s}
.skip-link:focus{top:14px}
.youtube-music{position:fixed;width:1px;height:1px;left:-10px;bottom:-10px;opacity:0;pointer-events:none;border:0}

.topbar{position:fixed;z-index:80;top:0;left:50%;width:min(100%,760px);transform:translateX(-50%);display:flex;align-items:center;justify-content:flex-end;padding:max(15px,env(safe-area-inset-top)) 18px 12px;pointer-events:none;transition:opacity .7s,transform .7s}
.private-mark,.top-actions,.topbar button{pointer-events:auto}
.private-mark{position:absolute;left:18px;display:flex;align-items:center;gap:8px;color:rgba(255,247,232,.9);font-size:11px;letter-spacing:.18em;text-transform:uppercase;text-shadow:0 1px 10px #21050d;transition:opacity .45s,transform .45s}
.private-mark i{width:5px;height:5px;border-radius:50%;background:#e4c181;box-shadow:0 0 12px #e4c181}
.top-actions{display:flex;align-items:center;gap:9px}
.sound-control{width:38px;height:38px;border:1px solid rgba(255,247,232,.42);border-radius:50%;background:rgba(36,5,14,.62);backdrop-filter:blur(12px);display:grid;place-items:center;padding:0}
.sound-bars{display:flex;align-items:center;gap:3px;height:16px}
.sound-bars i{display:block;width:2px;border-radius:2px;background:var(--ivory);height:7px;transition:height .25s}
.sound-bars i:nth-child(2){height:13px}.sound-bars i:nth-child(3){height:9px}
.sound-control[aria-pressed=true] .sound-bars i{animation:soundbar .7s ease-in-out infinite alternate}.sound-control[aria-pressed=true] .sound-bars i:nth-child(2){animation-delay:-.35s}.sound-control[aria-pressed=true] .sound-bars i:nth-child(3){animation-delay:-.18s}
@keyframes soundbar{to{height:16px}}
.language-switch{display:flex;align-items:center;border:1px solid rgba(255,247,232,.46);border-radius:24px;padding:3px;background:rgba(36,5,14,.62);backdrop-filter:blur(12px);box-shadow:0 8px 28px rgba(17,0,6,.2)}
.language-switch button{width:36px;height:31px;border:0;border-radius:18px;background:transparent;color:rgba(255,247,232,.8);font-size:13px;font-weight:600;letter-spacing:.05em;padding:0;transition:.25s}
.language-switch button[aria-pressed=true]{background:var(--ivory);color:var(--wine);box-shadow:0 3px 11px rgba(13,0,4,.24)}

.opening{position:fixed;z-index:60;inset:0;background:#1c050c;overflow:hidden;display:grid;place-items:center;isolation:isolate;transition:opacity .32s,visibility .32s}
.opening::before{content:'';position:absolute;z-index:8;left:50%;top:54.65%;width:14px;height:14px;border-radius:50%;transform:translate(-50%,-50%) scale(.2);opacity:0;pointer-events:none;background:radial-gradient(circle,#fff9df 0,#efd18a 16%,rgba(224,162,61,.55) 34%,rgba(109,27,45,.1) 62%,transparent 72%)}
.opening::after{content:'';position:absolute;z-index:7;inset:0;opacity:0;pointer-events:none;background:linear-gradient(108deg,transparent 30%,rgba(255,245,215,.52) 48%,rgba(255,255,255,.86) 50%,rgba(255,242,205,.38) 54%,transparent 70%);transform:translateX(-75%)}
.opening-photo{position:absolute;inset:0;margin:auto;width:min(100%,760px);height:100%;background:url('/assets/opening-couture-v1.webp') center/cover no-repeat;transition:transform 2.2s cubic-bezier(.22,.75,.2,1),filter 1.2s}
.opening-edge-light{position:absolute;z-index:2;inset:0;margin:auto;width:min(100%,760px);height:100%;pointer-events:none;background:url('/assets/opening-seam-light-v1.svg') center/cover no-repeat;mix-blend-mode:screen;opacity:.76;filter:saturate(.94) brightness(1.18) drop-shadow(0 0 10px rgba(255,225,157,.24));transform:scale(1);will-change:transform,opacity,filter;animation:edge-light-breathe 3.9s ease-in-out infinite alternate}
.opening-shade{position:absolute;inset:0;margin:auto;width:min(100%,760px);background:linear-gradient(180deg,rgba(28,4,12,.3),transparent 22%,transparent 68%,rgba(38,7,16,.18));pointer-events:none}
.opening-copy{position:absolute;z-index:4;top:22.2%;left:50%;width:min(54vw,360px);transform:translateX(-50%);text-align:center;color:var(--ivory);text-shadow:0 2px 16px rgba(20,0,7,.75)}
.opening-kicker{margin:0 0 12px;font-size:11px;font-weight:600;letter-spacing:.24em}
.opening-copy h1{margin:0;font-family:var(--script);font-size:clamp(43px,9.4vw,70px);font-weight:400;line-height:1;display:flex;flex-direction:column;align-items:center;gap:0}
.opening-copy h1 .bride-name,.opening-copy h1 .groom-name{display:block;font-size:1em;line-height:1.08}.opening-copy h1 i{display:block;font-family:var(--serif);font-size:.32em;line-height:1;font-style:normal;color:#e7c98d;margin:9px 0 8px}
.seal-hit{position:absolute;z-index:9;left:50%;top:54.65%;transform:translate(-50%,-50%);width:88px;height:88px;border:0;border-radius:50%;background:transparent;padding:0;cursor:pointer;-webkit-tap-highlight-color:transparent}
.seal-focus{position:absolute;inset:7px;border-radius:50%;border:1px solid rgba(243,213,153,.64);box-shadow:0 0 0 8px rgba(255,244,220,.06),0 0 26px rgba(255,221,154,.18);transition:.35s}
.seal-hit:active .seal-focus{transform:scale(.92)}
.seal-monogram{position:absolute;inset:0;display:grid;place-items:center;color:#efd59f;font-size:14px;font-weight:600;letter-spacing:.18em;text-indent:.18em;text-shadow:0 1px 4px #26030d}
.seal-hit::after{content:'';position:absolute;inset:-9px;border-radius:50%;border:1px solid rgba(255,232,188,.55);animation:seal-breathe 2.5s ease-out infinite}
@keyframes seal-breathe{0%{transform:scale(.82);opacity:0}38%{opacity:.7}100%{transform:scale(1.22);opacity:0}}
.ribbon-light{position:absolute;z-index:6;top:52.65%;left:50%;width:min(54vw,365px);height:5.2%;transform:translateX(-50%);overflow:hidden;opacity:0;pointer-events:none;mix-blend-mode:screen}
.ribbon-light::before{content:'';position:absolute;inset:-35% auto -35% -34%;width:36%;background:linear-gradient(90deg,transparent,rgba(255,250,229,.22),rgba(255,250,229,.95),rgba(255,250,229,.2),transparent);filter:blur(5px);transform:skewX(-15deg)}
.seal-glow{position:absolute;z-index:5;left:50%;top:54.65%;width:40px;height:40px;border-radius:50%;transform:translate(-50%,-50%);opacity:0;background:radial-gradient(circle,rgba(255,244,202,.95) 0,rgba(232,174,76,.45) 30%,rgba(103,20,38,.08) 62%,transparent 72%);pointer-events:none}
.open-hint{position:absolute;z-index:7;left:50%;top:65.8%;transform:translateX(-50%);margin:0;color:#fff1d6;text-align:center;font-size:18px;font-weight:600;letter-spacing:.025em;text-shadow:0 2px 12px rgba(24,0,8,.95),0 1px 1px rgba(24,0,8,.8);white-space:nowrap}
.open-hint i{display:block;width:42px;height:1px;margin:9px auto 0;background:linear-gradient(90deg,transparent,#e7c98d,transparent);box-shadow:0 1px 7px rgba(27,0,8,.7)}
body.is-opening .ribbon-light{opacity:1}body.is-opening .ribbon-light::before{animation:ribbon-pass .82s cubic-bezier(.35,0,.2,1) forwards}
body.is-opening .seal-glow{animation:seal-release 1.02s .08s cubic-bezier(.18,.78,.2,1) forwards}
body.is-opening .seal-hit{animation:seal-open .72s .08s ease-in forwards}
body.is-opening .opening-photo{animation:box-awaken 1.1s cubic-bezier(.2,.72,.18,1) forwards}
body.is-opening .opening-edge-light{animation:edge-light-release 1.1s cubic-bezier(.18,.76,.18,1) forwards}
body.is-opening .opening-copy,body.is-opening .open-hint{animation:soft-away .48s .26s forwards}
body.is-opening .opening::before{animation:cinema-bloom 1.04s .1s cubic-bezier(.18,.78,.2,1) forwards}
body.is-opening .opening::after{animation:cinema-sweep .72s .38s cubic-bezier(.25,.65,.15,1) forwards}
@keyframes ribbon-pass{0%{transform:translateX(0) skewX(-15deg)}48%{transform:translateX(245%) skewX(-15deg)}100%{transform:translateX(410%) skewX(-15deg)}}
@keyframes seal-release{0%{opacity:0;transform:translate(-50%,-50%) scale(.4)}25%{opacity:1}100%{opacity:0;transform:translate(-50%,-50%) scale(19)}}
@keyframes seal-open{0%{transform:translate(-50%,-50%) scale(1) rotate(0)}55%{opacity:1;transform:translate(-50%,-50%) scale(1.1) rotate(-3deg)}100%{opacity:0;transform:translate(-50%,-50%) scale(.72) rotate(9deg)}}
@keyframes box-awaken{0%{transform:scale(1);filter:saturate(1) brightness(1)}42%{transform:scale(1.035);filter:saturate(1.12) brightness(1.08)}100%{transform:scale(1.115);filter:saturate(1.05) brightness(1.2) blur(1.6px)}}
@keyframes edge-light-breathe{0%{opacity:.62;filter:saturate(.9) brightness(1.06) drop-shadow(0 0 8px rgba(255,226,157,.2))}100%{opacity:.9;filter:saturate(1) brightness(1.42) drop-shadow(0 0 16px rgba(255,226,157,.38))}}
@keyframes edge-light-release{0%{opacity:.45;transform:scale(1);filter:saturate(.86) brightness(1)}38%{opacity:.98;transform:scale(1.035);filter:saturate(.95) brightness(1.62) drop-shadow(0 0 18px rgba(255,235,188,.55))}100%{opacity:0;transform:scale(1.115);filter:saturate(.9) brightness(2.05) blur(1.8px)}}
@keyframes cinema-bloom{0%{opacity:0;transform:translate(-50%,-50%) scale(.2)}28%{opacity:.95}100%{opacity:0;transform:translate(-50%,-50%) scale(62)}}
@keyframes cinema-sweep{0%{opacity:0;transform:translateX(-75%)}22%{opacity:.9}100%{opacity:0;transform:translateX(75%)}}
@keyframes soft-away{to{opacity:0;transform:translate(-50%,-10px)}}
body.opened .opening{opacity:0;visibility:hidden;pointer-events:none}
body.opened .topbar{color:var(--ivory)}
body.opened .private-mark{opacity:0;transform:translateY(-8px);pointer-events:none}

main{position:relative;max-width:760px;margin:0 auto;overflow:hidden;background:#19040b;box-shadow:0 0 90px rgba(0,0,0,.55);display:flex;flex-direction:column;gap:22px}
.scene{position:relative;flex:none;width:100%;min-height:100svh;display:grid;place-items:center;isolation:isolate;overflow:hidden;padding:112px 28px 84px;box-shadow:0 -1px 0 rgba(230,191,116,.2),0 18px 34px rgba(9,0,3,.18)}
.reveal{opacity:0;transform:translateY(22px);transition:opacity 1s ease,transform 1s cubic-bezier(.2,.7,.2,1)}.reveal.visible{opacity:1;transform:none}
.eyebrow{margin:0 0 18px;font-size:11px;font-weight:600;letter-spacing:.28em;text-transform:uppercase}

.hero{color:var(--ivory);text-align:center;background:radial-gradient(ellipse 46% 58% at 50% 33%,#8a2948 0,#5c1029 38%,#350813 70%,#21040c 100%);background-size:144% 144%;background-position:50% 50%}
.hero::before{content:'';position:absolute;inset:-8%;z-index:-3;background:url('/assets/opening-couture-v1.webp') center/cover no-repeat;filter:blur(24px) saturate(.94) contrast(1.04);opacity:.23;transform:scale(1.15)}
.hero::after{content:'';position:absolute;inset:18px;border:1px solid rgba(221,180,104,.28);z-index:-1}
.hero-aura{position:absolute;width:68vw;height:92vw;max-width:520px;max-height:700px;border-radius:48%;background:radial-gradient(ellipse,rgba(255,222,154,.2),rgba(183,62,91,.08) 48%,transparent 74%);filter:blur(19px)}
.hero-cinematic{position:absolute;z-index:0;inset:0;overflow:hidden;pointer-events:none;opacity:.96;background:radial-gradient(ellipse 18% 52% at 50% 34%,rgba(255,244,210,.19),rgba(238,193,111,.075) 46%,transparent 76%),radial-gradient(ellipse 68% 25% at 50% 16%,rgba(255,227,167,.12),transparent 72%),linear-gradient(180deg,rgba(22,0,7,.14),transparent 23%,transparent 74%,rgba(18,0,5,.26));mask-image:linear-gradient(180deg,transparent 2%,#000 13%,#000 89%,transparent 99%)}
.hero-cinematic::before,.hero-cinematic::after{content:'';position:absolute;top:-24%;width:38%;height:146%;background:linear-gradient(90deg,transparent,rgba(255,238,196,.14) 40%,rgba(255,250,226,.32) 50%,rgba(255,238,196,.12) 60%,transparent);filter:blur(20px);mix-blend-mode:screen;opacity:.52}.hero-cinematic::before{left:-2%;transform:rotate(14deg)}.hero-cinematic::after{right:-2%;transform:rotate(-14deg)}
.hero-cinematic i{position:absolute;left:14%;width:72%;height:1px;background:linear-gradient(90deg,transparent,rgba(239,201,125,.1) 18%,rgba(255,236,190,.46) 50%,rgba(239,201,125,.1) 82%,transparent);box-shadow:0 0 15px rgba(246,209,138,.22);opacity:.34;transform:rotate(-4deg)}.hero-cinematic i:nth-child(1){top:30%}.hero-cinematic i:nth-child(2){top:57%;transform:rotate(3deg);opacity:.22}.hero-cinematic i:nth-child(3){top:79%;transform:rotate(-2deg);opacity:.14}
.hero-motion{position:absolute;z-index:1;inset:0;overflow:hidden;pointer-events:none}.hero-motion::before{content:'';position:absolute;top:-18%;left:-68%;width:42%;height:138%;background:linear-gradient(100deg,transparent,rgba(255,242,205,.03) 30%,rgba(255,245,216,.18) 50%,rgba(255,242,205,.03) 70%,transparent);filter:blur(6px);transform:skewX(-12deg)}.hero-motion span{position:absolute;width:4px;height:4px;border-radius:50%;background:#f5d99d;box-shadow:0 0 10px rgba(245,217,157,.9);opacity:0}.hero-motion span:nth-child(1){left:13%;top:18%;--delay:.2s}.hero-motion span:nth-child(2){left:84%;top:23%;--delay:1.4s}.hero-motion span:nth-child(3){left:20%;top:48%;--delay:2.6s}.hero-motion span:nth-child(4){left:76%;top:56%;--delay:3.3s}.hero-motion span:nth-child(5){left:34%;top:71%;--delay:.9s}.hero-motion span:nth-child(6){left:89%;top:76%;--delay:4.1s}.hero-motion span:nth-child(7){left:8%;top:82%;--delay:2s}.hero-motion span:nth-child(8){left:62%;top:12%;--delay:3.7s}
.hero-content{position:relative;z-index:2;width:100%;max-width:590px;display:flex;flex-direction:column;align-items:center}
.hero-content::before{content:'';position:absolute;z-index:-1;left:50%;top:31%;width:min(96vw,690px);height:72%;transform:translate(-50%,-50%);background:radial-gradient(ellipse at center,rgba(255,235,188,.13),rgba(168,45,76,.055) 48%,transparent 75%);filter:blur(18px);pointer-events:none}
.hero h2{margin:4px 0 0;font-family:var(--script);font-size:clamp(61px,15vw,108px);font-weight:400;line-height:1;display:flex;flex-direction:column;align-items:center;gap:0;color:#fff5e3;text-shadow:0 5px 32px rgba(20,0,7,.54)}
.hero h2 .bride-name,.hero h2 .groom-name{display:block;font-size:1em;line-height:1.08}.hero h2 i{display:block;font-family:var(--serif);font-size:.28em;line-height:1;font-style:normal;color:var(--champagne);margin:12px 0 10px}
.hero-lead{max-width:510px;margin:42px auto 38px;font-size:clamp(19px,4.45vw,27px);line-height:1.48;color:#f5dfc2}
.hero-dates{position:relative;z-index:3;display:flex;align-items:stretch;justify-content:center;gap:24px;margin:0 auto 44px;text-shadow:0 3px 14px rgba(28,0,8,.85)}.hero-dates>div{width:130px}.hero-dates>b{width:1px;background:linear-gradient(transparent,rgba(224,189,124,.7),transparent)}
.hero-dates small,.hero-dates span{display:block;font-size:10px;letter-spacing:.2em}.hero-dates strong{display:block;font-size:54px;font-weight:400;line-height:1;color:#f4d99f;margin:7px 0}
.scroll-cue{position:relative;z-index:3;display:inline-flex;flex-direction:column;align-items:center;gap:8px;padding:7px 15px 0;color:#fff0d2;background:linear-gradient(90deg,transparent,rgba(45,5,16,.82) 22%,rgba(45,5,16,.82) 78%,transparent);text-decoration:none;font-size:15px;letter-spacing:.08em;text-shadow:0 2px 8px #23030c}.scroll-cue i{width:1px;height:30px;background:linear-gradient(#e4c078,transparent)}
.hero-floral{position:absolute;z-index:1;left:50%;bottom:-18px;width:min(112%,850px);height:clamp(130px,25vw,190px);object-fit:cover;object-position:top;transform:translateX(-50%);pointer-events:none;filter:drop-shadow(0 -18px 25px rgba(18,0,6,.34));opacity:.96}
body.opened .hero .hero-content.visible>.eyebrow{animation:welcome-rise .48s .08s both}
body.opened .hero .hero-content.visible h2 .bride-name{animation:welcome-name .62s .2s both,name-glow 3.4s 1.2s ease-in-out infinite alternate}
body.opened .hero .hero-content.visible h2 i{animation:welcome-gold .44s .42s both,gold-pulse 2.8s 1.1s ease-in-out infinite}
body.opened .hero .hero-content.visible h2 .groom-name{animation:welcome-name .62s .52s both,name-glow 3.4s 1.7s ease-in-out infinite alternate}
body.opened .hero .hero-content.visible .hero-lead{animation:welcome-rise .58s .67s both}
body.opened .hero .hero-content.visible .hero-dates{animation:welcome-rise .58s .8s both}
body.opened .hero .hero-content.visible .scroll-cue{animation:welcome-rise .5s .95s both}
body.opened .hero .hero-floral{animation:welcome-floral .82s .44s both,floral-alive 5.8s 1.35s ease-in-out infinite alternate}
body.opened .hero{animation:hero-tone 7.5s ease-in-out infinite alternate}body.opened .hero::before{animation:hero-photo-float 11s ease-in-out infinite alternate}body.opened .hero-cinematic{animation:cinematic-breathe 7.2s ease-in-out infinite alternate}body.opened .hero-cinematic::before{animation:cinema-ray-left 9s ease-in-out infinite alternate}body.opened .hero-cinematic::after{animation:cinema-ray-right 10.5s -2s ease-in-out infinite alternate}body.opened .hero-cinematic i{animation:cinema-thread 5.8s ease-in-out infinite alternate}body.opened .hero-cinematic i:nth-child(2){animation-delay:-2s}body.opened .hero-cinematic i:nth-child(3){animation-delay:-3.7s}body.opened .hero-aura{animation:aura-breathe 4.2s ease-in-out infinite alternate}body.opened .hero-motion::before{animation:hero-light-pass 6.8s 1.1s ease-in-out infinite}body.opened .hero-motion span{animation:spark-drift 4.8s var(--delay) ease-in-out infinite}body.opened .scroll-cue i{animation:cue-flow 1.8s ease-in-out infinite}
@keyframes welcome-rise{from{opacity:0;transform:translateY(18px);filter:blur(4px)}to{opacity:1;transform:none;filter:none}}
@keyframes welcome-name{from{opacity:0;transform:translateY(24px) scale(.96);filter:blur(6px)}to{opacity:1;transform:none;filter:none}}
@keyframes welcome-gold{from{opacity:0;transform:scale(.5) rotate(-14deg)}to{opacity:1;transform:none}}
@keyframes welcome-floral{from{opacity:0;transform:translate(-50%,34px) scale(.96)}to{opacity:.98;transform:translateX(-50%) scale(1)}}
@keyframes cinematic-breathe{to{opacity:1;filter:saturate(1.08)}}
@keyframes cinema-ray-left{to{transform:translateX(8%) rotate(11deg);opacity:.54}}
@keyframes cinema-ray-right{to{transform:translateX(-7%) rotate(-11deg);opacity:.5}}
@keyframes cinema-thread{to{transform:translateY(9px) rotate(2deg);opacity:.55}}
@keyframes aura-breathe{to{transform:scale(1.08);opacity:.82}}
@keyframes hero-tone{0%{background-position:42% 44%;filter:saturate(1)}100%{background-position:58% 56%;filter:saturate(1.12)}}
@keyframes hero-photo-float{0%{transform:scale(1.15) translate3d(-1.2%,0,0)}100%{transform:scale(1.2) translate3d(1.2%,-.8%,0)}}
@keyframes rings-breathe{0%{opacity:.62;box-shadow:0 0 0 rgba(232,195,125,0)}100%{opacity:1;box-shadow:0 0 38px rgba(232,195,125,.12)}}
@keyframes ring-flicker{0%{border-color:rgba(226,192,127,.08)}100%{border-color:rgba(244,215,157,.27)}}
@keyframes name-glow{0%{text-shadow:0 5px 28px rgba(20,0,7,.48)}100%{text-shadow:0 0 10px rgba(255,239,202,.3),0 6px 38px rgba(236,185,95,.34)}}
@keyframes gold-pulse{0%,100%{text-shadow:0 0 3px rgba(232,190,109,.35)}50%{text-shadow:0 0 15px rgba(255,224,155,.9);transform:scale(1.12)}}
@keyframes floral-alive{0%{transform:translateX(-50%) translateY(0) scale(1);filter:drop-shadow(0 -18px 25px rgba(18,0,6,.34)) saturate(1)}100%{transform:translateX(-50%) translateY(-5px) scale(1.018);filter:drop-shadow(0 -22px 32px rgba(18,0,6,.42)) saturate(1.12)}}
@keyframes hero-light-pass{0%,12%{left:-68%;opacity:0}23%{opacity:.8}48%,100%{left:126%;opacity:0}}
@keyframes spark-drift{0%{opacity:0;transform:translateY(18px) scale(.35)}30%{opacity:.9}62%{opacity:.45}100%{opacity:0;transform:translateY(-42px) scale(1.25)}}
@keyframes cue-flow{0%,100%{opacity:.35;transform:scaleY(.55);transform-origin:top}50%{opacity:1;transform:scaleY(1)}}

.invitation{min-height:108svh;padding-top:188px;padding-bottom:178px;background:linear-gradient(145deg,#fffaf0 0,#f0ddbc 54%,#fff8eb 100%);color:var(--ink);text-align:center}
.pearl-grain{position:absolute;inset:0;z-index:-2;opacity:.25;background-image:radial-gradient(rgba(91,44,40,.22) .5px,transparent .7px);background-size:5px 5px;mix-blend-mode:multiply}
.invitation::after{content:'';position:absolute;inset:18px;border:1px solid rgba(140,82,50,.2);box-shadow:inset 0 0 0 6px rgba(255,255,255,.22);z-index:-1}
.invitation-content{position:relative;z-index:3;max-width:570px;padding:38px 26px 34px;background:rgba(255,249,238,.58);border:1px solid rgba(119,55,45,.18);box-shadow:0 24px 70px rgba(95,47,37,.09),inset 0 0 0 7px rgba(255,255,255,.22);backdrop-filter:blur(2px)}.invitation .eyebrow{color:#7a233b;margin-bottom:20px}.invitation h2{max-width:520px;margin:0 auto 26px;font-size:clamp(37px,8.5vw,60px);font-weight:500;line-height:1.08;color:#5b1228}.invitation-content>p:not(.eyebrow){margin:0 auto;max-width:510px;font-size:clamp(20px,4.6vw,26px);line-height:1.5;color:#4e3431}.invitation-seal{display:grid;place-items:center;width:62px;height:62px;margin:0 auto 26px;border-radius:50%;background:linear-gradient(145deg,#7e2942,#4b0c1d);border:1px solid #c79b54;box-shadow:inset 0 0 0 5px rgba(255,242,210,.08),0 10px 28px rgba(73,16,31,.2);color:#f2d79d;font-size:13px;letter-spacing:.16em;text-indent:.16em}.signature-rule{margin:34px auto 0;display:flex;align-items:center;justify-content:center}.signature-rule b{display:block;width:132px;height:1px;background:linear-gradient(90deg,transparent,#ba8b50,transparent)}
.invitation-floral{position:absolute;z-index:1;left:50%;width:min(116%,860px);height:auto;pointer-events:none;filter:drop-shadow(0 13px 22px rgba(52,15,27,.18))}.invitation-floral-top{top:-38px;transform:translateX(-50%) rotate(180deg)}.invitation-floral-bottom{bottom:-38px;transform:translateX(-50%)}

.families{background:linear-gradient(135deg,#240610 0,#5d1027 48%,#330815 100%);color:var(--ivory);text-align:center}
.families::before{content:'';position:absolute;inset:0;z-index:-3;background:repeating-linear-gradient(112deg,transparent 0 19px,rgba(255,255,255,.012) 20px 21px)}
.families::after{content:'';position:absolute;inset:18px;border:1px solid rgba(221,177,95,.25);z-index:-1}
.velvet-light{position:absolute;inset:-10%;z-index:-2;background:radial-gradient(ellipse at 50% 42%,rgba(193,66,98,.26),transparent 54%)}
.families-content{width:100%;max-width:610px}.families h2{margin:0 0 38px;font-family:var(--script);font-size:clamp(58px,13vw,92px);font-weight:400;color:#ffecc9}.families .eyebrow{color:#e2bd79}
.family-pair{display:grid;grid-template-columns:1fr auto 1fr;gap:20px;align-items:center}.family-pair article{padding:28px 8px;border-top:1px solid rgba(229,191,120,.36);border-bottom:1px solid rgba(229,191,120,.22)}.family-pair small{font-size:10px;letter-spacing:.2em;color:#dcb87c}.family-pair p{margin:19px 0 14px;display:flex;flex-direction:column;font-size:31px;line-height:1.06}.family-pair p i{font-style:normal;color:#d8ae64;font-size:.72em;margin:7px}.family-pair strong{font-size:13px;letter-spacing:.25em;color:#fff3d9}
.family-join{display:flex;flex-direction:column;gap:3px;color:#d8ae64}.family-join i{font-style:normal;font-size:13px}.family-join b{font-family:var(--script);font-size:30px;font-weight:400}.families-note{max-width:440px;margin:38px auto 0;color:#f0d8c0;font-size:20px}

.event-scene{min-height:112svh;padding-bottom:210px}
.event-content{width:100%;max-width:620px;display:grid;gap:42px;position:relative;z-index:3}.event-heading{text-align:center}.event-heading h2{margin:0 0 18px;font-family:var(--script);font-size:clamp(62px,15vw,100px);font-weight:400;line-height:.9}.event-heading>p:last-child{max-width:520px;margin:0 auto;font-size:clamp(19px,4.5vw,25px);line-height:1.52}
.event-details{display:grid;gap:26px;justify-items:center}.date-lockup{display:flex;align-items:center;justify-content:center;gap:14px}.date-lockup>strong{font-size:72px;font-weight:400;line-height:.8}.date-lockup>span{display:flex;flex-direction:column;text-align:left;line-height:1.1}.date-lockup b{font-size:23px;font-weight:500}.date-lockup small{font-size:13px;letter-spacing:.13em}.date-lockup>i{width:1px;height:48px;margin:0 8px}.date-lockup time{font-size:28px}
.countdown{width:min(100%,530px);display:grid;grid-template-columns:repeat(4,1fr);padding:18px 0;border-top:1px solid;border-bottom:1px solid}.countdown>div{position:relative;text-align:center}.countdown>div+div::before{content:'';position:absolute;left:0;top:16%;height:68%;width:1px}.countdown strong{display:block;font-size:32px;font-weight:400;line-height:1}.countdown small{font-size:10px;letter-spacing:.13em}.calendar-link{border:0;background:transparent;padding:8px 4px 6px;display:inline-flex;align-items:center;gap:12px;font-weight:600;font-size:17px;letter-spacing:.04em}.calendar-link i{width:28px;height:1px;background:currentColor;position:relative}.calendar-link i::after{content:'';position:absolute;right:0;top:-3px;width:6px;height:6px;border-top:1px solid;border-right:1px solid;transform:rotate(45deg)}
.botanical{position:absolute;z-index:2;left:50%;bottom:-1px;transform:translateX(-50%);width:min(116%,820px);height:auto;pointer-events:none;filter:drop-shadow(0 -18px 26px rgba(14,0,5,.24))}
.henna{background:linear-gradient(145deg,#26030e,#721c37 52%,#350713);color:#fff3dc}.henna::before{content:'';position:absolute;inset:18px;border:1px solid rgba(225,184,101,.3);z-index:-1}.henna-glow{position:absolute;z-index:-2;inset:0;background:radial-gradient(circle at 50% 32%,rgba(222,92,116,.3),transparent 48%),repeating-linear-gradient(112deg,transparent 0 20px,rgba(255,255,255,.012) 21px 22px)}.henna .eyebrow{color:#e5bd70}.henna .event-heading h2{color:#ffedc9}.henna .date-lockup>strong{color:#f0ca84}.henna .date-lockup>i,.henna .countdown{border-color:rgba(236,198,128,.4);background:transparent}.henna .countdown>div+div::before{background:rgba(236,198,128,.32)}.henna .calendar-link{color:#ffe4b4}
.wedding{background:linear-gradient(145deg,#fffaf1,#ebd6b6 52%,#fff9ef);color:#38151d}.wedding::before{content:'';position:absolute;inset:18px;border:1px solid rgba(132,76,42,.2);box-shadow:inset 0 0 0 6px rgba(255,255,255,.18);z-index:-1}.wedding-light{position:absolute;inset:0;z-index:-2;background:radial-gradient(ellipse at 50% 31%,rgba(255,255,255,.94),transparent 48%),linear-gradient(112deg,transparent 31%,rgba(255,255,255,.22) 48%,transparent 66%),repeating-linear-gradient(113deg,transparent 0 22px,rgba(89,35,32,.02) 23px 24px)}.wedding .eyebrow{color:#77223c}.wedding .event-heading h2{color:#60172d}.wedding .date-lockup>strong{color:#6b1b33}.wedding .date-lockup>i,.wedding .countdown{border-color:rgba(105,43,39,.3)}.wedding .countdown>div+div::before{background:rgba(105,43,39,.24)}.wedding .calendar-link{color:#5b1328}.botanical-wedding{width:min(136%,920px);bottom:-3px;filter:drop-shadow(0 -15px 24px rgba(84,43,32,.17)) saturate(1.03)}

.venue{min-height:104svh;background:radial-gradient(circle at 50% 30%,#6f1932 0,#3b0917 44%,#21050d 100%);color:var(--ivory);text-align:center}.venue::before{content:'';position:absolute;inset:0;z-index:-3;background:repeating-linear-gradient(112deg,transparent 0 22px,rgba(255,255,255,.012) 23px 24px)}.venue::after{content:'';position:absolute;inset:18px;border:1px solid rgba(225,185,107,.28);z-index:-1}.venue-content{width:100%;max-width:610px}.venue .eyebrow{color:#e5bf78;margin-bottom:22px}.venue-crest{width:78px;height:78px;margin:0 auto -25px;position:relative;z-index:3;border-radius:50%;display:flex;align-items:center;justify-content:center;gap:7px;color:#f2d798;background:linear-gradient(145deg,#711e37,#370914);border:1px solid rgba(236,201,133,.82);box-shadow:0 12px 34px rgba(12,0,4,.38),inset 0 0 0 6px rgba(255,236,199,.05);font-size:18px;letter-spacing:.08em}.venue-crest i{width:1px;height:26px;background:linear-gradient(transparent,#e7c47f,transparent)}
.venue-card{position:relative;padding:66px 38px 34px;background:linear-gradient(150deg,rgba(255,248,232,.1),rgba(255,255,255,.025));border:1px solid rgba(231,197,132,.42);box-shadow:inset 0 0 0 7px rgba(255,255,255,.018),0 24px 58px rgba(12,0,4,.25);overflow:hidden}.venue-card::before{content:'';position:absolute;inset:13px;border:1px solid rgba(225,184,106,.16);pointer-events:none}.venue-card-kicker{display:block;margin-bottom:13px;font-size:10px;font-weight:600;letter-spacing:.25em;color:#dbb269}.venue h2{margin:0 0 24px;font-size:clamp(42px,9.2vw,64px);font-weight:500;line-height:1.02;color:#fff0d4;text-shadow:0 8px 24px rgba(12,0,4,.35)}.venue-address{display:flex;flex-direction:column;gap:3px;margin:0 auto 25px;font-size:24px;line-height:1.28;color:#f1d9bf}.venue-date-ribbon{position:relative;display:grid;grid-template-columns:1fr auto 1fr;align-items:center;gap:20px;padding:16px 18px;margin:0 auto 25px;max-width:430px;border-top:1px solid rgba(230,192,119,.36);border-bottom:1px solid rgba(230,192,119,.36)}.venue-date-ribbon>span{display:flex;align-items:baseline;justify-content:center;gap:9px}.venue-date-ribbon b{font-size:34px;font-weight:400;color:#f2cf8c}.venue-date-ribbon small{font-size:9px;letter-spacing:.14em;color:#edd8b3}.venue-date-ribbon>i{width:1px;height:34px;background:linear-gradient(transparent,#ddb56d,transparent)}.venue-date-ribbon>strong{position:absolute;left:50%;bottom:-12px;transform:translateX(-50%);padding:1px 12px;background:#4a1020;color:#f2d08d;font-size:13px;font-weight:500;letter-spacing:.12em}.route-actions{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin:32px auto 0;max-width:480px}.route-actions button{min-height:58px;border:1px solid rgba(236,198,124,.6);background:linear-gradient(145deg,rgba(244,211,149,.16),rgba(255,255,255,.025));display:grid;grid-template-columns:auto 1fr auto;align-items:center;gap:11px;padding:0 18px;color:#fff1d8;box-shadow:0 10px 25px rgba(13,0,4,.12);transition:transform .2s,background .2s}.route-actions button:active{transform:scale(.975)}.route-actions button i{width:12px;height:12px;border-radius:50%;border:1px solid #e9c47c;box-shadow:0 0 0 4px rgba(228,187,112,.08)}.route-actions button b{font-size:20px;font-weight:400;color:#e7c47f}.venue-note{max-width:450px;margin:28px auto 0;color:#ead1b7;font-size:18px}
.venue-map-card{position:relative;overflow:hidden;background:#f7ead3;color:#3b1520;border:1px solid #d1a85e;box-shadow:0 28px 68px rgba(12,0,4,.35),inset 0 0 0 8px rgba(255,252,243,.58)}.venue-map-card::before{content:'';position:absolute;inset:0;pointer-events:none;opacity:.32;background:repeating-linear-gradient(28deg,transparent 0 52px,rgba(103,55,45,.12) 53px 54px),repeating-linear-gradient(119deg,transparent 0 74px,rgba(103,55,45,.1) 75px 76px)}.route-plot{position:relative;height:220px;border-bottom:1px solid rgba(121,70,45,.25);overflow:hidden;background:linear-gradient(180deg,rgba(255,255,255,.45),rgba(232,210,176,.17))}.route-plot svg{position:absolute;inset:0;width:100%;height:100%}.map-road{fill:none;stroke:#8b7661;stroke-width:1.25;stroke-dasharray:3 5;opacity:.52}.road-two{stroke-width:1;opacity:.34}.map-trail{fill:none;stroke:#7a1731;stroke-width:3;stroke-linecap:round;stroke-dasharray:1 9;filter:drop-shadow(0 2px 2px rgba(79,14,32,.16))}.map-stop{position:absolute;display:flex;flex-direction:column;align-items:center;gap:7px;color:#65162d}.map-stop i{display:grid;place-items:center;width:39px;height:39px;border-radius:50%;background:#64152d;border:1px solid #d5aa60;box-shadow:0 0 0 5px rgba(100,21,45,.09),0 8px 18px rgba(69,20,29,.23);color:#fff2d6;font-style:normal;font-size:16px}.map-stop b{padding:3px 8px;background:rgba(255,248,235,.84);border:1px solid rgba(112,51,45,.15);font-size:8px;letter-spacing:.14em;white-space:nowrap}.map-stop.stop-henna{left:12%;bottom:20px}.map-stop.stop-wedding{right:10%;top:24px}.map-stop.stop-venue{left:50%;top:61%;transform:translate(-50%,-50%)}.map-stop.stop-venue i{width:50px;height:50px;background:#f7ead3;border:2px solid #64152d;box-shadow:0 0 0 7px rgba(100,21,45,.09),0 10px 22px rgba(69,20,29,.24)}.map-stop.stop-venue i::after{content:'';width:13px;height:13px;border-radius:50%;background:#64152d;box-shadow:0 0 0 4px #d7b36e}.map-stop.stop-venue b{color:#551225;font-weight:600}.venue-map-copy{position:relative;padding:36px 30px 22px}.venue-map-card .venue-card-kicker{color:#81263e;margin-bottom:12px}.venue-map-card h2{margin:0 0 15px;color:#4e1023;text-shadow:none;font-size:clamp(39px,8.8vw,59px);line-height:.98}.venue-map-card .venue-address{margin:0 auto 17px;color:#49302d;font-size:22px}.venue-time{display:inline-flex;align-items:center;justify-content:center;gap:10px;color:#762139;font-size:11px;font-weight:600;letter-spacing:.15em}.venue-time i{width:1px;height:18px;background:#b88b4c}.venue-map-card .route-actions{position:relative;margin:3px 22px 24px;max-width:none}.venue-map-card .route-actions button{min-height:58px;border:1px solid rgba(91,20,40,.34);background:#5a1228;color:#fff3dc;box-shadow:0 12px 24px rgba(76,18,35,.16)}.venue-map-card .route-actions button i{border-color:#efcd88;box-shadow:0 0 0 4px rgba(239,205,136,.09)}.venue-map-card .route-actions button b{color:#f1ce88}.venue-note{max-width:450px;margin:28px auto 0;color:#ead1b7;font-size:18px}

.closing{min-height:100svh;background:#25060f;color:var(--ivory);text-align:center}.closing::before{content:'';position:absolute;inset:18px;border:1px solid rgba(215,169,87,.25);z-index:-1}.closing-halo{position:absolute;width:min(88vw,620px);height:min(88vw,620px);border-radius:50%;background:radial-gradient(circle,rgba(123,31,57,.56),transparent 68%);z-index:-2}.closing-content{max-width:570px}.closing .eyebrow{color:#dbae64}.closing-monogram{display:grid;place-items:center;width:84px;height:84px;margin:0 auto 28px;border-radius:50%;border:1px solid #c7994d;box-shadow:inset 0 0 0 6px rgba(211,168,93,.08),0 10px 35px rgba(0,0,0,.25);color:#e7c383;letter-spacing:.17em;text-indent:.17em}.closing h2{margin:0 0 24px;font-size:clamp(48px,11vw,76px);font-weight:500;line-height:1.02;color:#fff0d4}.closing-content>p:not(.eyebrow){max-width:500px;margin:0 auto;font-size:clamp(20px,4.5vw,26px);color:#eacfb8}.closing-signature{display:flex;align-items:center;justify-content:center;gap:14px;margin:34px 0 46px;font-family:var(--script);font-size:clamp(45px,10vw,70px);color:#e4bd75}.closing-signature i{font-family:var(--serif);font-style:normal;font-size:.45em}.reopen-link{border:0;border-bottom:1px solid rgba(222,184,112,.52);background:transparent;padding:9px 2px;color:#efd7b9;font-size:16px}

.message-dialog{width:min(calc(100% - 36px),430px);border:1px solid rgba(113,52,50,.25);background:#fff7e8;color:#38151d;padding:34px 28px 28px;box-shadow:0 25px 80px rgba(20,0,7,.45)}.message-dialog::backdrop{background:rgba(24,1,8,.72);backdrop-filter:blur(8px)}.message-dialog h2{font-size:34px;line-height:1.05;margin:0 0 12px}.message-dialog p{font-size:19px}.dialog-close{position:absolute;right:12px;top:8px;border:0;background:transparent;color:#5d1a2c;font-size:29px}.dialog-action{border:1px solid #6f2137;background:#6f2137;color:#fff3dc;padding:10px 22px;margin-top:8px}

@media (min-width:680px){.topbar{padding-left:26px;padding-right:26px}.event-content{grid-template-columns:1fr 1fr;align-items:center;gap:52px}.event-heading{text-align:left}.event-heading>p:last-child{margin-left:0}.event-scene{min-height:100svh;padding-bottom:205px}.botanical{width:94%}.opening-copy{top:21%}}
@media (max-width:420px){body{font-size:17px}.topbar{padding-left:14px;padding-right:14px}.private-mark{left:14px}.private-mark span{font-size:9px}.language-switch button{width:34px}.opening-copy{top:22.7%;width:58vw}.opening-copy h1{font-size:46px;gap:6px}.opening-kicker{font-size:9px}.seal-hit{width:78px;height:78px}.seal-monogram{font-size:12px}.open-hint{font-size:18px}main{gap:16px}.scene{padding-left:24px;padding-right:24px}.hero h2{font-size:66px;gap:10px}.hero-lead{margin-top:36px;margin-bottom:34px}.hero::after,.invitation::after,.families::after,.henna::before,.wedding::before,.closing::before,.venue::after{inset:12px}.family-pair{gap:9px}.family-pair article{padding-left:2px;padding-right:2px}.family-pair p{font-size:27px}.family-join{transform:scale(.84)}.event-scene{padding-bottom:180px}.date-lockup>strong{font-size:63px}.date-lockup b{font-size:21px}.date-lockup time{font-size:24px}.countdown strong{font-size:29px}.venue{padding:106px 18px 92px}.venue-card{padding:62px 20px 28px}.venue h2{font-size:41px}.venue-address{font-size:22px}.venue-date-ribbon{gap:8px;padding-left:7px;padding-right:7px}.venue-date-ribbon>span{gap:6px}.venue-date-ribbon b{font-size:31px}.venue-date-ribbon small{font-size:8px}.route-actions{grid-template-columns:1fr}.route-actions button{min-height:56px}.venue-note{font-size:17px}}
@media (max-width:420px){main{gap:10px}.opening-copy h1{gap:0;line-height:1}.opening-copy h1 .bride-name,.opening-copy h1 .groom-name{line-height:1.08}.opening-copy h1 i{margin:8px 0 7px}.hero{padding:105px 24px 160px}.hero h2{font-size:62px;gap:0;line-height:1}.hero h2 .bride-name,.hero h2 .groom-name{line-height:1.08}.hero h2 i{margin:12px 0 10px}.hero-lead{margin-top:30px;margin-bottom:28px}.hero-dates{margin-bottom:28px}.hero-floral{width:122%;bottom:-5px}.invitation{min-height:108svh;padding:155px 20px 150px}.invitation-content{padding:34px 20px 30px}.invitation h2{font-size:36px;line-height:1.08}.invitation-content>p:not(.eyebrow){font-size:20px;line-height:1.45}.invitation-floral{width:132%}.invitation-floral-top{top:-20px}.invitation-floral-bottom{bottom:-18px}.venue{padding:98px 18px 86px}.route-plot{height:190px}.map-stop.stop-henna{left:7%;bottom:16px}.map-stop.stop-wedding{right:7%;top:20px}.map-stop i{width:35px;height:35px;font-size:14px}.map-stop.stop-venue i{width:45px;height:45px}.venue-map-copy{padding:30px 18px 20px}.venue-map-card h2{font-size:39px}.venue-map-card .venue-address{font-size:21px}.venue-map-card .route-actions{grid-template-columns:1fr 1fr;gap:8px;margin:3px 12px 18px}.venue-map-card .route-actions button{min-height:55px;padding:0 10px;gap:7px;font-size:15px}.venue-map-card .route-actions button b{font-size:18px}.venue-time{font-size:9px;gap:7px}.venue-note{font-size:17px}}
@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}}

/* Final presentation pass: staged welcome, clean floral seams, animated route and story navigation. */
main{gap:12px}
.scene{padding-bottom:calc(84px + env(safe-area-inset-bottom))}
.topbar{transition:opacity .3s ease,transform .3s ease,padding .3s ease}
body.has-scrolled.opened .topbar{opacity:.9;transform:translate(-50%,-2px)}
body.has-scrolled.opened .top-actions{transform:scale(.92);transform-origin:right top}
.top-actions{transition:transform .3s ease}

.hero{min-height:100svh;padding-top:118px;padding-bottom:clamp(170px,25vh,230px)}
.hero-beams{position:absolute;inset:-15%;z-index:-1;overflow:hidden;pointer-events:none;mix-blend-mode:screen}
.hero-beams i{position:absolute;left:-32%;top:-28%;width:28%;height:160%;opacity:0;background:linear-gradient(90deg,transparent,rgba(255,237,190,.29),transparent);filter:blur(10px);transform:rotate(16deg)}
.hero-beams i:nth-child(2){left:-55%;width:18%;filter:blur(14px)}
.hero-beams i:nth-child(3){left:-72%;width:36%;opacity:.1;filter:blur(20px)}
.hero-stage-monogram{position:absolute;z-index:0;left:50%;top:46%;transform:translate(-50%,-50%);font-size:clamp(120px,34vw,270px);letter-spacing:.05em;color:transparent;-webkit-text-stroke:1px rgba(238,202,136,.075);opacity:0;white-space:nowrap}
.hero-petals{position:absolute;inset:0;z-index:2;pointer-events:none;overflow:hidden}
.hero-petals i{position:absolute;top:-12%;width:var(--petal-size,30px);height:var(--petal-size,30px);background-image:url('/assets/real-rose-petals-atlas-v1.webp');background-size:400% 200%;background-repeat:no-repeat;filter:drop-shadow(0 4px 5px rgba(24,0,7,.28));opacity:0;will-change:transform}
.hero-petals i:nth-child(1){left:7%;background-position:0 0;--petal-size:34px;--petal-scale:.9;--petal-x:48px;--petal-r:230deg;--petal-d:.5s}
.hero-petals i:nth-child(2){left:20%;background-position:33.333% 0;--petal-size:25px;--petal-scale:.78;--petal-x:-36px;--petal-r:340deg;--petal-d:2.2s}
.hero-petals i:nth-child(3){left:35%;background-position:66.667% 0;--petal-size:28px;--petal-scale:.68;--petal-x:58px;--petal-r:275deg;--petal-d:4.4s}
.hero-petals i:nth-child(4){left:49%;background-position:100% 0;--petal-size:22px;--petal-scale:.72;--petal-x:-45px;--petal-r:410deg;--petal-d:1.4s}
.hero-petals i:nth-child(5){left:63%;background-position:0 100%;--petal-size:31px;--petal-scale:.82;--petal-x:38px;--petal-r:295deg;--petal-d:3.3s}
.hero-petals i:nth-child(6){left:77%;background-position:33.333% 100%;--petal-size:24px;--petal-scale:.67;--petal-x:-62px;--petal-r:360deg;--petal-d:5.5s}
.hero-petals i:nth-child(7){left:88%;background-position:66.667% 100%;--petal-size:32px;--petal-scale:.86;--petal-x:46px;--petal-r:320deg;--petal-d:2.8s}
.hero-petals i:nth-child(8){left:95%;background-position:100% 100%;--petal-size:21px;--petal-scale:.64;--petal-x:-48px;--petal-r:430deg;--petal-d:6.2s}
body.opened .hero-beams i{animation:welcome-beam 7.5s cubic-bezier(.2,.62,.28,1) infinite}
body.opened .hero-beams i:nth-child(2){animation-delay:2.5s}
body.opened .hero-beams i:nth-child(3){animation-delay:4.9s}
body.opened .hero-stage-monogram{animation:monogram-arrive 1.3s .25s both,monogram-breathe 7s 1.55s ease-in-out infinite alternate}
body.opened .hero-petals i{animation:petal-fall 8.2s var(--petal-d) linear infinite}
body.opened .hero .hero-content.visible>.eyebrow{animation:welcome-rise .5s .06s both}
body.opened .hero .hero-content.visible h2 .bride-name{animation:welcome-name .68s .14s both,name-glow 3.4s 1.1s ease-in-out infinite alternate}
body.opened .hero .hero-content.visible h2 i{animation:welcome-gold .48s .38s both,gold-pulse 2.8s 1.05s ease-in-out infinite}
body.opened .hero .hero-content.visible h2 .groom-name{animation:welcome-name .68s .47s both,name-glow 3.4s 1.45s ease-in-out infinite alternate}
body.opened .hero .hero-content.visible .hero-lead{animation:welcome-rise .56s .67s both}
body.opened .hero .hero-content.visible .hero-dates{animation:welcome-rise .56s .8s both}
body.opened .hero .hero-content.visible .scroll-cue{animation:welcome-rise .5s .94s both,cue-float 2.2s 1.65s ease-in-out infinite}
.scroll-cue{gap:3px;padding:7px 16px 5px;border-radius:999px;border:1px solid rgba(239,205,139,.18);background:rgba(36,4,13,.42);box-shadow:0 9px 24px rgba(19,0,6,.18);backdrop-filter:blur(7px);font-size:13px;letter-spacing:.06em}
.scroll-cue .scroll-chevrons{position:relative;display:block;width:16px;height:14px;background:none}
.scroll-cue .scroll-chevrons b{position:absolute;left:5px;width:7px;height:7px;border-right:1px solid #e9c883;border-bottom:1px solid #e9c883;transform:rotate(45deg)}
.scroll-cue .scroll-chevrons b:first-child{top:-1px}.scroll-cue .scroll-chevrons b:last-child{top:4px;opacity:.55}
body.opened .scroll-cue .scroll-chevrons b{animation:chevron-flow 1.55s ease-in-out infinite}
body.opened .scroll-cue .scroll-chevrons b:last-child{animation-delay:.2s}
@keyframes welcome-beam{0%,8%{opacity:0;transform:translateX(0) rotate(16deg)}18%{opacity:.7}45%,100%{opacity:0;transform:translateX(590%) rotate(16deg)}}
@keyframes monogram-arrive{from{opacity:0;transform:translate(-50%,-50%) scale(.72) rotate(-8deg)}to{opacity:1;transform:translate(-50%,-50%) scale(1) rotate(0)}}
@keyframes monogram-breathe{to{opacity:.54;transform:translate(-50%,-50%) scale(1.04) rotate(2deg)}}
@keyframes petal-fall{0%{opacity:0;transform:translate3d(0,-8vh,0) rotate(0) scale(var(--petal-scale))}12%{opacity:.94}52%{opacity:.82}82%{opacity:.62}100%{opacity:0;transform:translate3d(var(--petal-x),112vh,0) rotate(var(--petal-r)) scale(var(--petal-scale))}}
@keyframes cue-float{0%,100%{transform:translateY(0)}50%{transform:translateY(6px)}}
@keyframes chevron-flow{0%,100%{opacity:.25;transform:translateY(-2px) rotate(45deg)}50%{opacity:1;transform:translateY(3px) rotate(45deg)}}

.invitation-floral{will-change:transform}
.invitation-floral-top{top:-72px;transform:translateX(-50%);clip-path:polygon(0 7%,100% 7%,100% 100%,0 100%);filter:drop-shadow(0 15px 24px rgba(52,15,27,.2)) saturate(1.06)}
.invitation-floral-bottom{bottom:-66px;transform:translateX(-50%);filter:drop-shadow(0 -14px 23px rgba(52,15,27,.18)) saturate(1.04)}
.invitation.is-active .invitation-floral-top{animation:floral-top-alive 6.2s ease-in-out infinite alternate}
.invitation.is-active .invitation-floral-bottom{animation:floral-bottom-alive 7s ease-in-out infinite alternate}
.families::before{background:radial-gradient(circle at 0 8%,rgba(226,181,107,.07),transparent 26%),radial-gradient(circle at 100% 92%,rgba(226,181,107,.06),transparent 28%),repeating-linear-gradient(112deg,transparent 0 19px,rgba(255,255,255,.012) 20px 21px)}
@keyframes floral-top-alive{to{transform:translate(-50%,5px) scale(1.012);filter:drop-shadow(0 18px 28px rgba(52,15,27,.23)) saturate(1.14)}}
@keyframes floral-bottom-alive{to{transform:translate(-50%,-5px) scale(1.014);filter:drop-shadow(0 -18px 28px rgba(52,15,27,.21)) saturate(1.12)}}

.event-heading,.event-details{min-width:0}
.event-scene{padding-bottom:calc(210px + env(safe-area-inset-bottom))}
.event-scene.is-active .botanical{animation:botanical-breathe 6.5s ease-in-out infinite alternate}
.botanical-henna{width:min(96%,720px);bottom:0;filter:drop-shadow(0 -13px 24px rgba(14,0,5,.2)) saturate(1.05)}
@keyframes botanical-breathe{to{transform:translate(-50%,-5px) scale(1.018);filter:drop-shadow(0 -22px 31px rgba(14,0,5,.3)) saturate(1.1)}}

.route-plot::before{content:'';position:absolute;z-index:1;left:-42%;top:-65%;width:32%;height:210%;background:linear-gradient(90deg,transparent,rgba(255,255,255,.55),transparent);filter:blur(11px);transform:rotate(18deg);opacity:0;pointer-events:none}
.route-trace{fill:none;stroke:#e0b765;stroke-width:4;stroke-linecap:round;stroke-dasharray:650;stroke-dashoffset:650;filter:drop-shadow(0 0 8px rgba(219,168,79,.75));opacity:.88}
.route-runner-dot{fill:#fff4cf;stroke:#741c35;stroke-width:3;filter:drop-shadow(0 0 6px rgba(108,25,50,.9));opacity:0}
.map-compass{position:absolute;z-index:2;left:50%;top:50%;width:94px;height:94px;transform:translate(-50%,-50%);border:1px solid rgba(101,22,45,.15);border-radius:50%;display:grid;place-items:center;color:rgba(91,20,40,.24);font-size:10px;letter-spacing:.16em}
.map-compass::before,.map-compass::after{content:'';position:absolute;background:rgba(101,22,45,.12)}
.map-compass::before{width:1px;height:120%;left:50%}.map-compass::after{height:1px;width:120%;top:50%;left:-10%}
.map-compass i{position:absolute;inset:17px;border:1px solid rgba(101,22,45,.13);transform:rotate(45deg)}
.map-compass b{font-weight:600}
.venue.is-active .route-plot::before{animation:map-sheen 4.6s ease-in-out infinite}
.venue.is-active .route-trace{animation:draw-route 2.8s .18s cubic-bezier(.2,.7,.2,1) both,route-glow 2.6s 3s ease-in-out infinite alternate}
.venue.is-active .route-runner-dot{animation:runner-live .45s .7s both}
.venue.is-active .map-stop{animation:map-stop-arrive .65s both}
.venue.is-active .stop-henna{animation-delay:.25s}.venue.is-active .stop-venue{animation-delay:.82s}.venue.is-active .stop-wedding{animation-delay:1.38s}
.venue.is-active .stop-venue{animation-name:map-stop-venue-arrive}
.venue.is-active .map-stop i{animation:pin-pulse 2.4s 2s ease-in-out infinite}
.venue.is-active .stop-venue i{animation-delay:2.35s}
.venue.is-active .stop-wedding i{animation-delay:2.7s}
.venue.is-active .map-compass{animation:compass-turn 14s linear infinite}
@keyframes draw-route{to{stroke-dashoffset:0}}
@keyframes route-glow{to{stroke-width:5.5;opacity:.45}}
@keyframes runner-live{to{opacity:1}}
@keyframes map-stop-arrive{from{opacity:0;transform:translateY(16px) scale(.85)}to{opacity:1;transform:translateY(0) scale(1)}}
@keyframes map-stop-venue-arrive{from{opacity:0;transform:translate(-50%,calc(-50% + 16px)) scale(.85)}to{opacity:1;transform:translate(-50%,-50%) scale(1)}}
@keyframes pin-pulse{0%,100%{box-shadow:0 0 0 5px rgba(100,21,45,.09),0 8px 18px rgba(69,20,29,.23)}50%{box-shadow:0 0 0 10px rgba(100,21,45,.03),0 10px 25px rgba(69,20,29,.3)}}
@keyframes compass-turn{to{transform:translate(-50%,-50%) rotate(360deg)}}
@keyframes map-sheen{0%,20%{left:-42%;opacity:0}42%{opacity:.75}70%,100%{left:125%;opacity:0}}

.story-nav{position:fixed;z-index:75;right:max(14px,calc((100vw - 760px)/2 + 14px));bottom:calc(20px + env(safe-area-inset-bottom));display:grid;grid-template-columns:34px auto 34px;align-items:center;gap:3px;padding:4px;border:1px solid rgba(237,203,138,.38);border-radius:999px;background:rgba(43,5,16,.84);box-shadow:0 10px 30px rgba(12,0,4,.32),inset 0 0 0 1px rgba(255,255,255,.045);backdrop-filter:blur(12px);color:#f6dfb3;opacity:0;transform:translateY(12px);pointer-events:none;transition:opacity .3s ease,transform .3s ease}
body.opened .story-nav{opacity:1;transform:none;pointer-events:auto}
body.sealed .story-nav{visibility:hidden}
.story-nav.at-start{opacity:0!important;visibility:hidden;pointer-events:none!important;transform:translateY(10px)!important}
.story-nav-button{display:grid;place-items:center;width:34px;height:34px;border:1px solid rgba(237,203,138,.24);border-radius:50%;background:rgba(255,255,255,.035);color:#f8e6c4;font-size:16px;line-height:1;transition:background .2s ease,transform .2s ease,opacity .2s ease}
.story-nav-button:not(:disabled):active{transform:scale(.91)}
.story-nav-button:disabled{opacity:.25}
.story-nav-down:not(:disabled){animation:nav-nudge 2s ease-in-out infinite}
.story-progress{display:grid;grid-template-columns:auto 8px auto;align-items:center;gap:3px;min-width:30px;font-size:9px;letter-spacing:.03em}
.story-progress b{font-weight:500}.story-progress i{height:1px;background:#d7aa5c;opacity:.58}
@keyframes nav-nudge{0%,100%{transform:translateY(0)}50%{transform:translateY(3px)}}

@media (min-width:680px){
  .event-content{grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:38px;max-width:680px}
  .event-heading h2{font-size:62px;line-height:.96;text-wrap:balance}
  .event-details{width:100%}.date-lockup{gap:9px}.date-lockup>strong{font-size:64px}.date-lockup time{font-size:24px}.countdown{width:100%}.countdown strong{font-size:29px}
  .botanical-wedding{width:min(124%,920px)}
}
@media (max-width:679px){
  .story-nav{right:10px;bottom:calc(88px + env(safe-area-inset-bottom));grid-template-columns:32px auto 32px;padding:3px}.story-nav-button{width:32px;height:32px;font-size:15px}
  .hero-stage-monogram{top:43%}
}
@media (max-width:420px){
  main{gap:8px}.hero{padding-top:104px;padding-bottom:175px}.hero h2{font-size:clamp(58px,17vw,69px)}
  .hero-lead{font-size:19px;line-height:1.42;margin-top:26px;margin-bottom:25px}.hero-dates{gap:17px}.hero-dates>div{width:118px}.hero-dates strong{font-size:49px}
  .invitation-floral-top{top:-48px}.invitation-floral-bottom{bottom:-42px}
  .event-scene{padding-bottom:calc(184px + env(safe-area-inset-bottom))}
  .botanical-henna{width:106%;max-width:480px}
  .map-compass{width:76px;height:76px}
}
@media (prefers-reduced-motion:reduce){
  .route-trace{stroke-dashoffset:0}.route-runner-dot{opacity:0}.story-nav-down{animation:none!important}
}
