:root{--ivory:#fbf8f0;--paper:#fffdf8;--ink:#25372f;--muted:#68756d;--sage:#71836e;--sage-dark:#405846;--gold:#b6975e;--line:rgba(64,88,70,.17);--shadow:0 24px 70px rgba(48,65,53,.12)}*{box-sizing:border-box}html{scroll-behavior:smooth}body{margin:0;background:var(--ivory);color:var(--ink);font-family:Manrope,sans-serif;overflow-x:hidden;font-size:105%}body.locked{overflow:hidden}.top-controls{position:fixed;z-index:12000;top:18px;left:18px;right:18px;display:flex;justify-content:space-between;pointer-events:none}.control{pointer-events:auto;border:1px solid rgba(255,255,255,.58);background:rgba(255,253,248,.88);color:var(--sage-dark);backdrop-filter:blur(12px);border-radius:999px;min-height:42px;padding:0 14px;box-shadow:0 8px 30px rgba(32,49,39,.11);font:600 12.6px Manrope;display:flex;align-items:center;gap:8px}.music-control.playing{background:var(--sage-dark);color:#fff}.opening{position:fixed;inset:0;z-index:15000;background:radial-gradient(circle at 50% 20%,#fff 0,#f7f1e5 46%,#dfe7da 100%);display:grid;place-items:center;text-align:center;padding:24px;transition:opacity .7s ease,visibility .7s ease}.opening.opened{opacity:0;visibility:hidden}.opening-inner{width:min(560px,100%)}.opening-mark{font-family:'Cormorant Garamond',serif;font-size:65.1px;color:var(--gold);line-height:1}.opening-kicker,.kicker{letter-spacing:.19em;text-transform:uppercase;font-size:10.5px;font-weight:600;color:var(--sage);margin:12px 0}.envelope{width:min(360px,90vw);height:235px;border:0;background:transparent;position:relative;cursor:pointer;margin:18px auto;display:block}.envelope-back,.envelope-front{position:absolute;inset:24px 0 0;background:#efe8db;border:1px solid rgba(78,95,77,.14);border-radius:8px}.letter-card{position:absolute;z-index:3;left:25px;right:25px;top:0;height:180px;background:var(--paper);border:1px solid rgba(182,151,94,.32);box-shadow:0 20px 45px rgba(55,70,57,.13);display:grid;place-items:center;align-content:center;gap:7px;font-family:'Cormorant Garamond',serif;transition:transform 1s ease}.letter-card small{font:600 10.5px Manrope;letter-spacing:.12em;text-transform:uppercase;color:var(--sage)}.letter-card b{font-size:36.75px;font-weight:500}.letter-card i{color:var(--gold);font-weight:400}.letter-card em{font:500 12.6px Manrope;color:var(--muted);font-style:normal}.envelope-front{z-index:4;clip-path:polygon(0 28%,50% 68%,100% 28%,100% 100%,0 100%);background:#e8dfcf}.wax-seal{position:absolute;z-index:6;left:50%;bottom:35px;transform:translateX(-50%);width:54px;height:54px;border-radius:50%;display:grid;place-items:center;background:var(--sage-dark);color:#fff;border:3px double #d8c49c;font:500 16.8px 'Cormorant Garamond',serif}.is-opening .letter-card{transform:translateY(-92px)}.tap-hint{font-size:12.6px;color:var(--muted)}main{display:block}.scene{position:relative}.hero{min-height:100svh;display:grid;grid-template-columns:1.05fr .95fr;background:linear-gradient(135deg,#f6f2e8,#fffdf8);overflow:hidden}.hero-art{min-height:100svh;position:relative}.hero-art img{width:100%;height:100%;object-fit:cover;display:block;filter:saturate(.85) contrast(.97)}.hero-art:after{content:"";position:absolute;inset:0;background:linear-gradient(90deg,transparent 55%,rgba(251,248,240,.82) 100%)}.hero-content{padding:clamp(100px,12vw,170px) clamp(40px,7vw,110px);display:flex;flex-direction:column;justify-content:center;position:relative;z-index:2}.hero-cross{font-size:44.1px;color:var(--gold);font-family:'Cormorant Garamond',serif;margin-bottom:10px}.hero h1{font:500 clamp(65.1px,8.4vw,123.9px)/.82 'Cormorant Garamond',serif;margin:10px 0 18px;letter-spacing:-.045em}.hero h1 span{display:block}.hero h1 .ampersand{display:inline;color:var(--gold);font-style:italic}.invite-line{font:500 clamp(18.9px,2.1vw,29.4px)/1.5 'Cormorant Garamond',serif;max-width:560px;color:#526158}.hero-date{margin-top:26px;padding-top:20px;border-top:1px solid var(--line);letter-spacing:.16em;text-transform:uppercase;font-size:11.55px}.scroll-cue{margin-top:40px;color:var(--sage-dark);font-size:12.6px;text-decoration:none;display:flex;align-items:center;gap:12px}.scroll-cue i{width:45px;height:1px;background:var(--gold)}.paper-section{padding:clamp(70px,9vw,120px) clamp(22px,6vw,80px);background:var(--paper)}.section-title{text-align:center;max-width:720px;margin:0 auto 44px}.section-title h2{font:500 clamp(44.1px,6.3vw,75.6px)/.95 'Cormorant Garamond',serif;margin:6px 0}.invite-card{width:min(980px,100%);margin:auto;border:1px solid rgba(182,151,94,.34);background:linear-gradient(180deg,#fffefb,#faf6ed);border-radius:30px;padding:clamp(30px,6vw,70px);box-shadow:var(--shadow);text-align:center;position:relative;overflow:hidden}.invite-card:before,.invite-card:after{content:"";position:absolute;width:220px;height:220px;border:1px solid rgba(113,131,110,.22);border-radius:50%;top:-120px}.invite-card:before{left:-100px}.invite-card:after{right:-100px}.invite-mark{font-size:35.7px;color:var(--gold)}.invite-intro,.invite-request{color:var(--muted);line-height:1.8;font-size:1.05em}.parents-grid{display:grid;grid-template-columns:1fr auto 1fr;gap:26px;align-items:center;margin:32px 0}.parents-grid span{display:block;font-size:10.5px;text-transform:uppercase;letter-spacing:.14em;color:var(--sage)}.parents-grid strong{display:block;font:500 26.25px 'Cormorant Garamond',serif;margin:8px 0}.parents-grid small{color:var(--muted);font-size:1.05em}.mini-divider{color:var(--gold)}.invite-names{font:500 clamp(48.3px,7.35vw,81.9px) 'Cormorant Garamond',serif;margin:22px 0}.invite-names i{font-weight:400;color:var(--gold)}.wedding-facts{display:grid;grid-template-columns:repeat(3,1fr);gap:14px;margin-top:34px}.wedding-facts>div{border-top:1px solid var(--line);padding:20px 10px}.wedding-facts span{display:block;font-size:10.5px;letter-spacing:.14em;text-transform:uppercase;color:var(--sage)}.wedding-facts strong{display:block;font:500 23.1px 'Cormorant Garamond',serif;margin:7px 0}.wedding-facts small{color:var(--muted);font-size:1.05em}.dark-section{padding:clamp(70px,9vw,120px) clamp(22px,6vw,80px);background:#30483b;color:#fff}.light-title .kicker{color:#d9c79f}.light-title h2{color:#fff}.event-timeline{width:min(1040px,100%);margin:auto;display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:18px}.event-card{background:rgba(255,255,255,.075);border:1px solid rgba(255,255,255,.15);border-radius:24px;padding:28px;min-height:220px;position:relative}.event-number{font:italic 44.1px 'Cormorant Garamond',serif;color:#d9c79f}.event-copy span{font-size:10.5px;text-transform:uppercase;letter-spacing:.12em;color:#d6dfd6}.event-copy h3{font:500 33.6px 'Cormorant Garamond',serif;margin:12px 0 8px}.event-copy p{color:#d8e0da;margin:0;line-height:1.5;font-size:1.05em}.event-badge{position:absolute;right:16px;top:16px;border-radius:999px;background:#d0b676;color:#26392e;padding:7px 10px;font-size:9.45px;text-transform:uppercase;letter-spacing:.08em;font-weight:700}.venue-layout{width:min(1060px,100%);margin:auto;display:grid;grid-template-columns:1.08fr .92fr;border-radius:30px;overflow:hidden;box-shadow:var(--shadow);border:1px solid var(--line)}.deity-panel{min-height:430px;position:relative;background:#e9ecdf}.deity-portrait{width:100%;height:100%;object-fit:cover;position:absolute;inset:0}.deity-panel-caption{position:absolute;left:24px;bottom:24px;background:rgba(255,253,248,.9);padding:10px 14px;border-radius:999px;font-size:10.5px;letter-spacing:.12em;text-transform:uppercase}.venue-card{padding:clamp(32px,5vw,64px);display:flex;flex-direction:column;justify-content:center;background:#fff}.venue-card>span{font-size:10.5px;text-transform:uppercase;letter-spacing:.16em;color:var(--sage)}.venue-card h3{font:500 clamp(35.7px,4.2vw,54.6px)/1 'Cormorant Garamond',serif;margin:10px 0}.venue-card p{color:var(--muted);line-height:1.6;font-size:1.05em}.venue-separator{color:var(--gold);margin:10px 0}.button{display:inline-flex;justify-content:center;align-items:center;width:max-content;max-width:100%;padding:13px 18px;border-radius:999px;border:0;background:var(--sage-dark);color:#fff;text-decoration:none;font:600 12.6px Manrope;cursor:pointer;margin-top:10px}.button.secondary{background:transparent;color:var(--sage-dark);border:1px solid var(--sage)}.map-wrap{width:min(1060px,100%);height:310px;margin:24px auto 0;border-radius:26px;overflow:hidden;position:relative;border:1px solid var(--line)}.map-wrap iframe{width:100%;height:100%;border:0}.map-overlay{position:absolute;left:16px;bottom:16px;background:rgba(255,253,248,.92);padding:9px 12px;border-radius:999px;font-size:10.5px;color:var(--sage-dark)}.gallery-section{padding:clamp(70px,9vw,115px) 0;background:#edf0e8}.gallery-shell{width:min(1120px,calc(100% - 36px));margin:auto}.gallery-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:14px}.gallery-card{aspect-ratio:4/3;border-radius:22px;overflow:hidden;background:#dfe5db;border:1px solid rgba(64,88,70,.12)}.gallery-card img{width:100%;height:100%;object-fit:cover}.closing-ribbon{min-height:78vh;display:grid;place-items:center;position:relative;overflow:hidden}.closing-art{position:absolute;inset:0}.closing-art img{width:100%;height:100%;object-fit:cover;filter:saturate(.78)}.closing-shade{position:absolute;inset:0;background:linear-gradient(rgba(30,48,38,.32),rgba(26,46,35,.76))}.closing-content{position:relative;z-index:2;color:#fff;text-align:center;padding:60px 24px;max-width:850px}.closing-content .kicker{color:#ead9b4}.closing-content h2{font:500 clamp(60.9px,9.45vw,113.4px)/.9 'Cormorant Garamond',serif;margin:12px 0}.closing-content h2 i{color:#ead19c;font-weight:400}.closing-content>p{font:500 23.1px/1.6 'Cormorant Garamond',serif}.ribbon{display:flex;flex-wrap:wrap;justify-content:center;gap:18px;margin:30px 0;padding:14px 20px;border:1px solid rgba(255,255,255,.35);border-radius:999px}.ribbon span,.ribbon b{font-size:10.5px;letter-spacing:.12em;text-transform:uppercase}.invite-footer-brand{display:grid;justify-items:center;gap:8px;margin-top:40px}.footer-brand-logo{width:170px;background:rgba(31,47,38,.7);padding:9px 12px;border-radius:14px}.footer-brand-email{color:#fff;text-decoration:none;font-size:11.55px}.invite-share-button{position:fixed;z-index:8000;right:18px;bottom:18px;border:0;border-radius:999px;background:var(--sage-dark);color:#fff;padding:12px 17px;display:flex;align-items:center;gap:8px;box-shadow:0 12px 30px rgba(32,49,39,.24);font:600 11.55px Manrope}.invite-share-button svg{width:18px;height:18px;stroke:currentColor;fill:none;stroke-width:1.8}.reveal,.reveal-card,.event-reveal{opacity:0;transform:translateY(22px);transition:opacity .7s ease,transform .7s ease}.visible{opacity:1;transform:none}.petal{position:fixed;top:-8vh;width:14px;height:18px;pointer-events:none;z-index:3;opacity:.42;animation:ivoryPetalFall linear forwards;filter:drop-shadow(0 4px 10px rgba(120,104,89,.12))}.petal:before{content:"";display:block;width:100%;height:100%;border-radius:68% 32% 58% 42% / 52% 44% 56% 48%;background:radial-gradient(circle at 30% 28%,#fffefb 0 28%,#f7f3ea 46%,#ece2d4 100%);transform:rotate(18deg)}@keyframes ivoryPetalFall{0%{transform:translate3d(0,-12vh,0) rotate(0deg) scale(.9)}25%{transform:translate3d(calc(var(--drift,0px)*.35),25vh,0) rotate(90deg) scale(1)}55%{transform:translate3d(calc(var(--drift,0px)*.7),58vh,0) rotate(210deg) scale(1.04)}100%{transform:translate3d(var(--drift,0px),112vh,0) rotate(360deg) scale(1.08)}}@media(max-width:820px){.hero{grid-template-columns:1fr;min-height:auto}.hero-art{min-height:58svh}.hero-art:after{background:linear-gradient(180deg,transparent 55%,#fbf8f0 100%)}.hero-content{padding:34px 24px 80px;margin-top:-30px}.hero h1{font-size:68.25px}.parents-grid{grid-template-columns:1fr}.mini-divider{display:none}.wedding-facts{grid-template-columns:1fr}.event-timeline{grid-template-columns:1fr}.venue-layout{grid-template-columns:1fr}.deity-panel{min-height:320px}.gallery-grid{grid-template-columns:1fr}.ribbon{border-radius:24px;flex-direction:column}.paper-section,.dark-section{padding-left:18px;padding-right:18px}.petal{width:11px;height:15px;opacity:.34}}@media(prefers-reduced-motion:reduce){.petal{display:none!important}}