:root{--ink:#241528;--plum:#3b143e;--wine:#7a244a;--rose:#d46d85;--gold:#d8b56c;--saffron:#e89b45;--emerald:#2b6759;--ivory:#fff8ef;--paper:#f8efe6;--muted:#a98d9c;--shadow:0 24px 80px rgba(36,21,40,.18)}*{box-sizing:border-box}html{scroll-behavior:smooth;background:var(--ink)}body{margin:0;background:var(--paper);color:var(--ink);font-family:Manrope,sans-serif;overflow-x:hidden}body.locked{overflow:hidden}.scene{position:relative;min-height:100vh;overflow:hidden}.ambient{position:fixed;inset:0;pointer-events:none;z-index:80;overflow:hidden}.ambient i{position:absolute;width:6px;height:6px;border-radius:50%;background:rgba(255,223,153,.6);box-shadow:0 0 18px rgba(255,211,124,.8);animation:floatParticle 12s linear infinite}.ambient i:nth-child(1){left:8%;top:110%;animation-delay:-2s}.ambient i:nth-child(2){left:22%;top:106%;animation-delay:-8s}.ambient i:nth-child(3){left:38%;top:115%;animation-delay:-5s}.ambient i:nth-child(4){left:56%;top:112%;animation-delay:-9s}.ambient i:nth-child(5){left:70%;top:108%;animation-delay:-1s}.ambient i:nth-child(6){left:82%;top:116%;animation-delay:-6s}.ambient i:nth-child(7){left:92%;top:110%;animation-delay:-3s}.ambient i:nth-child(8){left:48%;top:120%;animation-delay:-11s}@keyframes floatParticle{0%{transform:translate3d(0,0,0) scale(.4);opacity:0}10%{opacity:.7}50%{transform:translate3d(20px,-55vh,0) scale(1)}100%{transform:translate3d(-10px,-115vh,0) scale(.5);opacity:0}}.top-controls{position:fixed;top:18px;right:18px;z-index:120;display:flex;gap:10px}.control{border:1px solid rgba(255,255,255,.22);background:rgba(32,14,35,.48);color:#fff;border-radius:999px;padding:10px 13px;backdrop-filter:blur(18px);box-shadow:0 8px 26px rgba(0,0,0,.15);font:600 12px Manrope,sans-serif}.opening{position:fixed;inset:0;z-index:200;background:radial-gradient(circle at 50% 30%,#6f2953 0,#321334 38%,#17091c 100%);display:grid;place-items:center;color:#fff;transition:opacity .9s ease,transform 1.2s cubic-bezier(.2,.7,.2,1)}.opening.opened{opacity:0;transform:scale(1.08);pointer-events:none}.opening-panel{text-align:center;position:relative;z-index:3;padding:40px 20px}.opening-kicker,.eyebrow{font-size:11px;letter-spacing:.24em;text-transform:uppercase;font-weight:700}.opening-kicker{color:#efc88f}.monogram{display:flex;align-items:center;gap:18px;justify-content:center;font:600 clamp(46px,10vw,112px)/.9 'Cormorant Garamond',serif;margin:26px 0}.monogram b{font:400 .55em Parisienne,cursive;color:var(--gold)}.cinema-enter{border:1px solid rgba(255,255,255,.36);background:rgba(255,255,255,.08);color:#fff;border-radius:999px;padding:15px 20px 15px 24px;display:inline-flex;gap:30px;align-items:center;font-weight:700;letter-spacing:.04em;backdrop-filter:blur(14px);transition:.35s}.cinema-enter:hover{background:#fff;color:var(--plum);transform:translateY(-3px)}.opening-date{color:#d9c8d6;margin-top:24px}.opening-orbit{position:absolute;border:1px solid rgba(255,221,163,.19);border-radius:50%;animation:orbit 18s linear infinite}.orbit-a{width:70vw;height:70vw;max-width:720px;max-height:720px}.orbit-b{width:45vw;height:45vw;max-width:460px;max-height:460px;animation-direction:reverse;animation-duration:12s}@keyframes orbit{to{transform:rotate(360deg)}}.opening-bloom{position:absolute;color:rgba(240,198,121,.5);font-size:42px;animation:pulseBloom 4s ease-in-out infinite}.bloom-a{left:12%;top:20%}.bloom-b{right:14%;bottom:16%;animation-delay:-2s}@keyframes pulseBloom{50%{transform:scale(1.35) rotate(20deg);opacity:.9}}.hero-art,.closing-art,.invitation-photo{position:absolute;inset:0}.hero-art img,.closing-art img,.invitation-photo img{width:100%;height:100%;object-fit:cover}.hero-art img{animation:heroDrift 18s ease-in-out infinite alternate;transform:scale(1.08)}@keyframes heroDrift{to{transform:scale(1.16) translate3d(-1.5%,1%,0)}}.hero-vignette{position:absolute;inset:0;background:linear-gradient(90deg,rgba(22,7,27,.86),rgba(33,12,38,.22) 48%,rgba(20,7,25,.66)),linear-gradient(0deg,rgba(18,7,22,.72),transparent 55%)}.hero-glow{position:absolute;inset:auto auto 10% 8%;width:34vw;height:34vw;max-width:420px;max-height:420px;border-radius:50%;background:rgba(214,108,133,.2);filter:blur(70px)}.hero-content{position:relative;z-index:4;min-height:100vh;display:flex;flex-direction:column;justify-content:center;align-items:flex-start;width:min(1120px,88vw);margin:auto;color:#fff}.hero-content .eyebrow{color:#efc88f}.hero h1{margin:18px 0 16px;font:600 clamp(62px,11vw,148px)/.78 'Cormorant Garamond',serif;letter-spacing:-.04em}.hero h1 span{display:block}.hero h1 em{display:block;font:400 .62em Parisienne,cursive;color:var(--gold);margin-left:12vw}.hero-line{max-width:650px;font:500 clamp(16px,2vw,22px)/1.6 Manrope,sans-serif;color:#f5eaf1}.hero-date{margin-top:20px;letter-spacing:.17em;font-size:12px}.scroll-cue{display:inline-flex;align-items:center;gap:18px;color:#fff;text-decoration:none;margin-top:38px;font-weight:600}.scroll-cue i{width:44px;height:1px;background:#fff;position:relative}.scroll-cue i:after{content:'';position:absolute;right:0;top:-3px;width:7px;height:7px;border-right:1px solid;border-top:1px solid;transform:rotate(45deg)}.film-edge{position:absolute;top:0;bottom:0;width:20px;background:repeating-linear-gradient(180deg,rgba(255,255,255,.4) 0 8px,transparent 8px 22px);opacity:.16;z-index:4}.film-edge-left{left:12px}.film-edge-right{right:12px}.countdown-section{padding:110px 8vw;background:radial-gradient(circle at 20% 0,#8b3159 0,#45183f 32%,#231027 70%);color:#fff;text-align:center;position:relative;overflow:hidden}.section-copy h2,.section-title h2,.dress-copy h2{font:600 clamp(48px,7vw,90px)/.95 'Cormorant Garamond',serif;margin:12px auto 18px}.section-copy h2 em,.section-title h2 em{font-family:Parisienne,cursive;color:var(--gold);font-weight:400}.countdown-sub{max-width:650px;margin:0 auto;color:#dbc7d5}.countdown{display:grid;grid-template-columns:repeat(7,auto);justify-content:center;align-items:start;gap:clamp(10px,2.2vw,30px);margin:56px auto 0}.countdown div{min-width:100px}.countdown strong{display:block;font:600 clamp(42px,8vw,96px)/1 'Cormorant Garamond',serif;color:#fff}.countdown span{display:block;margin-top:8px;color:#efc88f;text-transform:uppercase;letter-spacing:.18em;font-size:10px}.countdown>i{font:400 clamp(35px,6vw,68px)/1 'Cormorant Garamond',serif;color:#b8758e}.countdown-finished{font:500 22px 'Cormorant Garamond',serif;color:#efc88f}.paper-section{background:linear-gradient(135deg,#fffaf4,#f4e7dd)}.story-section{display:grid;grid-template-columns:.8fr 1.2fr;gap:8vw;padding:120px 8vw}.story-sticky{align-self:start;position:sticky;top:110px}.story-sticky h2{font:600 clamp(48px,6vw,82px)/.95 'Cormorant Garamond',serif;margin:14px 0}.story-sticky h2 em{font-family:Parisienne,cursive;color:var(--wine);font-weight:400}.story-sticky p:last-child{color:#745f70;max-width:460px;line-height:1.8}.story-chapters{display:grid;gap:28px}.story-card{padding:40px;border:1px solid rgba(59,20,62,.12);border-radius:28px;background:rgba(255,255,255,.68);box-shadow:var(--shadow);transition:.4s}.story-card:hover{transform:translateY(-8px) rotate(-.4deg)}.story-card span{color:var(--rose);font-weight:700;letter-spacing:.15em}.story-card h3{font:600 38px 'Cormorant Garamond',serif;margin:12px 0}.story-card p{color:#735f70;line-height:1.75}.invitation-section{display:grid;place-items:center;padding:110px 7vw}.invitation-photo:after{content:'';position:absolute;inset:0;background:linear-gradient(90deg,rgba(28,10,31,.72),rgba(28,10,31,.35)),linear-gradient(0deg,rgba(28,10,31,.74),transparent 60%)}.invite-card{position:relative;z-index:3;width:min(920px,94vw);padding:70px clamp(26px,6vw,76px);border-radius:36px;background:rgba(255,249,241,.9);backdrop-filter:blur(20px);text-align:center;box-shadow:0 30px 100px rgba(0,0,0,.3);overflow:hidden}.card-glow{position:absolute;width:260px;height:260px;border-radius:50%;background:rgba(216,181,108,.22);filter:blur(50px);top:-90px;right:-60px}.card-corner{position:absolute;color:rgba(122,36,74,.24);font-size:60px}.corner-a{left:28px;top:18px}.corner-b{right:28px;bottom:18px}.invite-card h2{font:600 clamp(44px,6vw,72px) 'Cormorant Garamond',serif;margin:10px 0}.invite-intro,.invite-request{color:#745f70;line-height:1.7}.parents-grid{display:grid;grid-template-columns:1fr auto 1fr;gap:28px;align-items:center;margin:34px 0}.parents-grid div{display:grid;gap:6px}.parents-grid span{font-size:10px;letter-spacing:.18em;text-transform:uppercase;color:#a07983}.parents-grid strong{font:600 26px 'Cormorant Garamond',serif}.parents-grid small{color:#8a7180}.invite-names{font:600 clamp(48px,7vw,84px) 'Cormorant Garamond',serif;margin:24px 0 8px}.invite-names i{font-family:Parisienne,cursive;color:var(--wine);font-weight:400}.wedding-facts{display:grid;grid-template-columns:repeat(3,1fr);gap:14px;margin-top:34px}.wedding-facts>div{padding:20px;border-radius:20px;background:#fff;border:1px solid rgba(59,20,62,.08)}.wedding-facts span,.wedding-facts small{display:block;color:#8a7180;font-size:11px}.wedding-facts strong{display:block;margin:5px 0;font:600 21px 'Cormorant Garamond',serif}.dark-section{background:#1e0b24;color:#fff;padding:110px 8vw;position:relative;overflow:hidden}.dark-section:before{content:'';position:absolute;width:640px;height:640px;border-radius:50%;background:#6d244d;filter:blur(110px);opacity:.34;right:-220px;top:-260px}.section-title{position:relative;z-index:2;max-width:820px}.section-title>p:last-child{color:#cdb8ca;line-height:1.7}.event-timeline{position:relative;z-index:2;display:grid;gap:18px;margin-top:52px}.event-card{display:grid;grid-template-columns:auto auto 1fr auto;align-items:center;gap:24px;padding:24px 28px;border:1px solid rgba(255,255,255,.12);border-radius:24px;background:rgba(255,255,255,.06);backdrop-filter:blur(14px);transition:.35s}.event-card:hover{transform:translateX(10px);background:rgba(255,255,255,.1)}.timeline-dot{width:12px;height:12px;border-radius:50%;background:var(--gold);box-shadow:0 0 0 8px rgba(216,181,108,.12)}.event-number{font:600 28px 'Cormorant Garamond',serif;color:#b9869d}.event-copy span{font-size:11px;letter-spacing:.1em;color:#efc88f}.event-copy h3{font:600 34px 'Cormorant Garamond',serif;margin:5px 0}.event-copy p{margin:0;color:#cdb8ca}.event-badge{padding:8px 12px;border-radius:999px;background:var(--gold);color:#35142f;font-size:10px;font-weight:700;text-transform:uppercase;letter-spacing:.1em}.moments-section{padding:110px 6vw;background:#f4e7dd}.moments-grid{display:grid;grid-template-columns:1.2fr .8fr;grid-auto-rows:310px;gap:18px;margin-top:46px}.moment-card{position:relative;overflow:hidden;border-radius:28px;margin:0;box-shadow:var(--shadow)}.moment-card img{width:100%;height:100%;object-fit:cover;transition:transform 1s cubic-bezier(.2,.7,.2,1)}.moment-card:hover img{transform:scale(1.08)}.moment-card:after{content:'';position:absolute;inset:40% 0 0;background:linear-gradient(transparent,rgba(20,8,24,.78))}.moment-main{grid-row:span 2}.moment-wide{grid-column:1/-1}.moment-card figcaption{position:absolute;z-index:2;left:24px;right:24px;bottom:22px;color:#fff;font:600 28px 'Cormorant Garamond',serif}.moment-card figcaption span{font:700 10px Manrope,sans-serif;letter-spacing:.16em;margin-right:10px;color:#efc88f}.dress-section{padding:100px 8vw;display:grid;grid-template-columns:1fr 1fr;gap:70px;align-items:center}.dress-copy p:last-child{color:#745f70;line-height:1.8}.palette{display:flex;justify-content:center;gap:16px;flex-wrap:wrap}.palette i{width:78px;height:110px;border-radius:999px;box-shadow:0 18px 34px rgba(0,0,0,.12);transition:.35s}.palette i:hover{transform:translateY(-10px) rotate(3deg)}.palette i:nth-child(1){background:#6d1f3d}.palette i:nth-child(2){background:#24594e}.palette i:nth-child(3){background:#d88a32}.palette i:nth-child(4){background:#c8657d}.palette i:nth-child(5){background:#f5ead8}.venue{padding:110px 8vw}.venue-layout{display:grid;grid-template-columns:.9fr 1.1fr;gap:28px;margin-top:48px;background:#fff;border-radius:30px;padding:18px;box-shadow:var(--shadow)}.deity-panel{position:relative;min-height:460px;border-radius:22px;overflow:hidden}.deity-panel img{width:100%;height:100%;object-fit:cover;position:absolute}.deity-panel-caption{position:absolute;left:20px;bottom:18px;color:#fff;font:600 26px 'Cormorant Garamond',serif}.venue-card{padding:38px}.venue-card>span{font-size:10px;letter-spacing:.16em;text-transform:uppercase;color:#9a6b7f}.venue-card h3{font:600 clamp(38px,5vw,62px)/1 'Cormorant Garamond',serif;margin:12px 0}.venue-card p{color:#745f70}.venue-separator{color:var(--gold);margin:22px 0}.venue-actions{display:flex;gap:12px;flex-wrap:wrap;margin-top:28px}.button{display:inline-flex;align-items:center;justify-content:center;border:0;border-radius:999px;padding:13px 18px;background:var(--plum);color:#fff;text-decoration:none;font-weight:700}.button.secondary{background:#efe2e5;color:var(--plum)}.map-wrap{position:relative;height:390px;margin-top:26px;border-radius:28px;overflow:hidden;box-shadow:var(--shadow)}.map-wrap iframe{width:100%;height:100%;border:0}.map-overlay{pointer-events:none;position:absolute;left:18px;bottom:18px;background:rgba(36,21,40,.78);color:#fff;padding:10px 14px;border-radius:999px;font-size:11px;backdrop-filter:blur(10px)}.closing-ribbon{display:grid;place-items:center;color:#fff;text-align:center}.closing-shade{position:absolute;inset:0;background:linear-gradient(rgba(24,8,29,.35),rgba(24,8,29,.86))}.closing-content{position:relative;z-index:3;width:min(900px,90vw)}.closing-content h2{font:600 clamp(64px,10vw,130px)/.85 'Cormorant Garamond',serif;margin:12px 0}.closing-content h2 em{font-family:Parisienne,cursive;color:var(--gold);font-weight:400}.closing-content>p{font-size:18px;line-height:1.7;color:#eadde7}.closing-date{display:flex;gap:18px;justify-content:center;align-items:center;flex-wrap:wrap;margin:32px 0}.closing-date b{color:#efc88f;text-transform:uppercase;letter-spacing:.18em;font-size:11px}.invite-footer-brand{display:grid;justify-items:center;gap:8px;margin-top:40px}.footer-brand-logo{width:120px;background:rgba(32,14,35,.6);border-radius:12px;padding:7px}.invite-footer-brand a{color:#fff;text-decoration:none;font-size:12px}.invite-share-button{z-index:130}.reveal,.reveal-card,.event-reveal,.hero-reveal{opacity:0;transform:translateY(40px);transition:opacity .9s ease,transform .9s cubic-bezier(.2,.7,.2,1)}.visible,.invite-open .hero-reveal{opacity:1;transform:none}.event-reveal:nth-child(2){transition-delay:.08s}.event-reveal:nth-child(3){transition-delay:.16s}@media(max-width:800px){.top-controls{top:10px;right:10px}.story-section,.dress-section,.venue-layout{grid-template-columns:1fr}.story-sticky{position:relative;top:auto}.hero-content{align-items:center;text-align:center}.hero h1 em{margin-left:0}.countdown{grid-template-columns:repeat(7,minmax(0,auto));gap:7px}.countdown div{min-width:auto}.countdown>i{font-size:32px}.wedding-facts{grid-template-columns:1fr}.parents-grid{grid-template-columns:1fr}.parents-grid>i{display:none}.event-card{grid-template-columns:auto 1fr}.event-card .event-number{display:none}.event-badge{grid-column:2}.moments-grid{grid-template-columns:1fr;grid-auto-rows:280px}.moment-main,.moment-wide{grid-row:auto;grid-column:auto}.palette i{width:56px;height:84px}.deity-panel{min-height:320px}.film-edge{display:none}}@media(prefers-reduced-motion:reduce){*{animation:none!important;transition:none!important;scroll-behavior:auto!important}.reveal,.reveal-card,.event-reveal,.hero-reveal{opacity:1;transform:none}}