*{box-sizing:border-box}html{scroll-behavior:smooth}body{margin:0;background:var(--bg);color:#fff;font-family:Montserrat,sans-serif;overflow-x:hidden}body:before,.ambient{content:"";position:fixed;inset:0;pointer-events:none;z-index:-3}.ambient{background:radial-gradient(circle at 15% 12%,color-mix(in srgb,var(--primary) 40%,transparent),transparent 29%),radial-gradient(circle at 82% 68%,color-mix(in srgb,var(--accent) 18%,transparent),transparent 27%);animation:ambient 14s ease-in-out infinite alternate}#petalCanvas,#sparkleCanvas{position:fixed;inset:0;width:100%;height:100%;pointer-events:none;z-index:5}#sparkleCanvas{z-index:4}.light-beams{position:fixed;inset:-25%;pointer-events:none;z-index:-1;overflow:hidden;background:linear-gradient(112deg,transparent 38%,color-mix(in srgb,var(--accent) 9%,transparent) 47%,transparent 56%);animation:beam 12s ease-in-out infinite}.opening{position:fixed;inset:0;z-index:50;display:grid;place-items:center;padding:20px;background:radial-gradient(circle,var(--primary),#10080d 75%);transition:opacity .9s,visibility .9s}.opening.is-open{opacity:0;visibility:hidden}.opening-card{width:min(430px,100%);padding:55px 35px;text-align:center;border:1px solid color-mix(in srgb,var(--accent) 65%,transparent);background:rgba(24,11,18,.54);box-shadow:0 28px 90px rgba(0,0,0,.34);backdrop-filter:blur(18px)}.opening-card>span,.icon{font-size:30px;color:var(--accent)}.opening-card p,.section-label{color:var(--accent);letter-spacing:.22em;font-size:10px;font-weight:700}.opening-card strong{display:block;font:58px/1 "Great Vibes",cursive;margin:18px 0 36px}.hero{min-height:100svh;background-size:cover;background-position:center;display:grid;place-items:center;text-align:center;position:relative;padding:28px;isolation:isolate;overflow:hidden}.hero:before{content:"";position:absolute;inset:16px;border:1px solid rgba(255,255,255,.18);z-index:-1}.hero:after{content:"";position:absolute;inset:-10%;background:inherit;background-size:cover;background-position:inherit;opacity:.25;z-index:-2;animation:kenburns 18s ease-in-out infinite alternate}.hero-bloom{position:absolute;width:45vw;aspect-ratio:1;border-radius:50%;background:radial-gradient(circle,color-mix(in srgb,var(--accent) 18%,transparent),transparent 68%);filter:blur(15px);z-index:-1}.hero-inner{max-width:900px;text-shadow:0 2px 20px rgba(0,0,0,.35)}.eyebrow{font-size:11px;letter-spacing:.45em;font-weight:700;color:var(--accent);margin:0 0 18px}.hero h1{font:600 clamp(15px,2.2vw,22px)/1.3 "Cormorant Garamond",serif;letter-spacing:.33em;margin:0 0 22px}.names{font:clamp(60px,12vw,135px)/.9 "Great Vibes",cursive;color:var(--accent);text-shadow:0 0 35px color-mix(in srgb,var(--accent) 30%,transparent)}.shimmer{background:linear-gradient(105deg,var(--accent) 28%,#fff8df 45%,var(--accent) 60%);background-size:220% 100%;-webkit-background-clip:text;background-clip:text;color:transparent;animation:shimmer 5s linear infinite}.date-line{letter-spacing:.2em;font-size:12px;margin:30px 0 38px}.date-line span,.btn span{color:var(--accent);margin-left:7px}.btn{display:inline-flex;align-items:center;justify-content:center;gap:5px;min-height:49px;padding:0 24px;border-radius:999px;text-decoration:none;border:0;font:700 12px Montserrat,sans-serif;letter-spacing:.08em;cursor:pointer;transition:transform .25s,box-shadow .25s}.btn:hover{transform:translateY(-3px);box-shadow:0 16px 35px color-mix(in srgb,var(--primary) 40%,transparent)}.btn.primary{background:linear-gradient(135deg,var(--primary),color-mix(in srgb,var(--primary) 70%,black));color:#fff;box-shadow:0 12px 30px color-mix(in srgb,var(--primary) 35%,transparent)}.btn.outline{color:var(--accent);border:1px solid color-mix(in srgb,var(--accent) 70%,transparent);background:rgba(255,255,255,.03)}.scroll-down{position:absolute;bottom:22px;color:#fff;text-decoration:none;font-size:30px;animation:bounce 1.8s infinite}.section{max-width:1120px;margin:auto;padding:100px 22px;text-align:center;position:relative}.section h2{font:400 clamp(45px,6vw,68px)/1 "Great Vibes",cursive;color:var(--accent);margin:0 0 22px}.section p{line-height:1.9;color:#eadfe4}.section .lead{max-width:710px;margin:auto;font-size:15px}.divider{display:flex;align-items:center;justify-content:center;gap:14px;color:var(--accent);margin:0 auto 25px}.divider:before,.divider:after{content:"";height:1px;width:65px;background:linear-gradient(90deg,transparent,var(--accent))}.divider:after{transform:scaleX(-1)}.divider span{font-size:20px;animation:pulse 2.4s ease-in-out infinite}.count-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:13px;max-width:740px;margin:42px auto 0}.count-grid div,.glass-card,.family-card{background:linear-gradient(145deg,rgba(255,255,255,.1),rgba(255,255,255,.035));border:1px solid rgba(255,255,255,.15);box-shadow:0 24px 70px rgba(0,0,0,.2);backdrop-filter:blur(18px)}.count-grid div{padding:25px 7px;border-radius:20px}.count-grid strong{font:600 44px "Cormorant Garamond",serif;display:block}.count-grid span{font-size:10px;letter-spacing:.15em;color:#d8c9cf}.glass-card{max-width:760px;margin:auto;padding:50px;border-radius:30px}.families-section{padding-bottom:50px}.family-grid{display:grid;grid-template-columns:1fr auto 1fr;gap:18px;align-items:center;max-width:980px;margin:40px auto 0}.family-card{min-height:235px;padding:30px 22px;border-radius:25px;display:grid;place-items:center;align-content:center;transition:transform .35s,border-color .35s}.family-card:hover{transform:translateY(-7px);border-color:color-mix(in srgb,var(--accent) 75%,transparent)}.family-card b{font:600 20px "Cormorant Garamond",serif}.family-card small{display:block;color:#e5d8de;line-height:1.7}.family-address{max-width:280px}.couple-name{margin:18px 0 8px;font:53px/1 "Great Vibes",cursive}.rel-line{font-style:italic}.ampersand{font:55px "Great Vibes",cursive;color:var(--accent);text-shadow:0 0 25px color-mix(in srgb,var(--accent) 35%,transparent)}.ceremony-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:20px;margin:40px auto 0}.ceremony-card{padding:38px 28px}.ceremony-card h3{color:var(--accent);font-size:13px;letter-spacing:.2em;margin:16px 0}.detail-list{display:grid;gap:18px;margin:26px auto}.detail-list p{margin:0;display:grid;gap:4px}.detail-list b{color:var(--accent);font-size:11px;letter-spacing:.2em;text-transform:uppercase}.detail-list span{font:500 22px "Cormorant Garamond",serif}.detail-list small{display:block;font:400 13px Montserrat,sans-serif;color:#decfd6;margin-top:5px}.gallery-showcase{max-width:1250px}.gallery{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));grid-auto-rows:155px;grid-auto-flow:dense;gap:14px;margin-top:38px}.gallery-item{position:relative;display:block;padding:0;border:0;background:#24131c;cursor:zoom-in;overflow:hidden;border-radius:20px;box-shadow:0 13px 32px rgba(0,0,0,.3);opacity:0;transform:translateY(22px) scale(.96);transition:opacity .7s,transform .7s,box-shadow .35s}.gallery-item.visible{opacity:1;transform:none}.gallery-item:nth-child(5n+1){grid-column:span 2;grid-row:span 2}.gallery-item:nth-child(7n+3){grid-row:span 2}.gallery-item:before{content:"✦";position:absolute;inset:0;z-index:1;display:grid;place-items:center;font-size:28px;color:#fff;opacity:0;background:radial-gradient(circle,rgba(255,255,255,.22),transparent 52%);transform:scale(.5);transition:.45s}.gallery-item:hover:before{opacity:1;transform:scale(1.3)}.gallery-item img{width:100%;height:100%;object-fit:cover;display:block;transition:transform .75s cubic-bezier(.2,.8,.2,1),filter .5s}.gallery-item:hover{box-shadow:0 20px 48px color-mix(in srgb,var(--accent) 22%,transparent)}.gallery-item:hover img{transform:scale(1.12) rotate(.8deg);filter:brightness(1.08) saturate(1.12)}.gallery-more{margin:28px auto 0}.gallery-more[hidden]{display:none}form{display:grid;gap:15px;text-align:left;margin:30px auto 0;max-width:590px}form label{display:grid;gap:8px}form label span{color:var(--accent);font-size:10px;letter-spacing:.16em;font-weight:700;text-transform:uppercase}form label span small{font-weight:400;text-transform:none;letter-spacing:0;margin-left:7px;color:#ded0d7}input,select,textarea{width:100%;border:1px solid rgba(255,255,255,.16);border-radius:13px;background:rgba(255,255,255,.065);color:#fff;padding:14px 15px;font:14px Montserrat,sans-serif;outline:none}input:focus,select:focus,textarea:focus{border-color:var(--accent);box-shadow:0 0 0 3px color-mix(in srgb,var(--accent) 17%,transparent)}select option{color:#1b1015}textarea{min-height:110px;resize:vertical}.form-row{display:grid;grid-template-columns:1.7fr 1fr;gap:14px}#formStatus{text-align:center;min-height:22px;margin:0;color:var(--accent)}.music-btn{position:fixed;right:18px;top:18px;z-index:20;width:55px;height:55px;border-radius:50%;border:1px solid rgba(255,255,255,.3);background:rgba(20,10,16,.55);color:var(--accent);display:grid;grid-template-columns:1fr 18px 1fr;place-items:center;backdrop-filter:blur(12px);cursor:pointer}.music-status{position:fixed;right:18px;top:82px;z-index:20;max-width:260px;margin:0;padding:0 8px;text-align:right;color:#fff;font-size:11px;line-height:1.5;text-shadow:0 1px 5px #000}.music-btn i{height:15px;width:2px;background:var(--accent);opacity:.45}.music-btn.playing i{animation:wave .7s infinite alternate}.music-btn.playing i:last-child{animation-delay:.3s}.music-btn span{font-size:20px}.reveal{opacity:0;transform:translateY(30px);transition:opacity .8s ease,transform .8s ease}.reveal.visible{opacity:1;transform:none}footer{text-align:center;padding:15px 20px 75px;color:#dfd2d8}footer .names.small{font-size:54px}footer p{font-size:13px}.lightbox{position:fixed;z-index:60;inset:0;display:grid;place-items:center;grid-template-columns:70px minmax(0,1fr) 70px;padding:22px;background:rgba(8,4,7,.92);backdrop-filter:blur(10px)}.lightbox[hidden]{display:none}.lightbox img{max-width:100%;max-height:88vh;justify-self:center;border-radius:10px;box-shadow:0 20px 80px #000}.lightbox button{border:0;color:#fff;background:rgba(255,255,255,.12);cursor:pointer}.lightbox-close{position:absolute;right:22px;top:18px;border-radius:50%;width:42px;height:42px;font-size:29px}.lightbox-nav{width:42px;height:52px;border-radius:10px;font-size:38px}.lightbox-nav.previous{justify-self:start}.lightbox-nav.next{justify-self:end}.lightbox-counter{position:absolute;top:29px;left:25px;color:#fff9;font-size:12px}@keyframes ambient{to{transform:scale(1.1) translate3d(2%,2%,0)}}@keyframes shimmer{to{background-position:-220% 0}}@keyframes bounce{50%{transform:translateY(8px)}}@keyframes wave{to{transform:scaleY(2)}}@keyframes pulse{50%{filter:drop-shadow(0 0 9px var(--accent));transform:scale(1.15)}}@keyframes beam{50%{transform:translate3d(18%,7%,0) rotate(5deg);opacity:.9}}@keyframes kenburns{to{transform:scale(1.12);filter:blur(2px)}}@media(max-width:760px){.family-grid{grid-template-columns:1fr;gap:12px}.ampersand{transform:rotate(90deg)}.ceremony-grid{grid-template-columns:1fr}.gallery{grid-template-columns:repeat(2,1fr);grid-auto-rows:135px;gap:10px}.gallery-item:nth-child(5n+1){grid-column:span 2;grid-row:span 2}}@media(max-width:640px){.hero:before{inset:9px}.section{padding:75px 17px}.count-grid{gap:8px}.count-grid div{padding:17px 4px}.count-grid strong{font-size:32px}.glass-card{padding:34px 19px}.form-row{grid-template-columns:1fr}.lightbox{grid-template-columns:45px minmax(0,1fr) 45px;padding:9px}.lightbox-nav{width:36px;height:45px}.opening-card{padding:45px 22px}}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation-duration:.01ms!important;scroll-behavior:auto!important;transition-duration:.01ms!important}#petalCanvas,#sparkleCanvas,.light-beams{display:none}.reveal,.gallery-item{opacity:1;transform:none}}
.skip-link{position:fixed;left:14px;top:-60px;z-index:100;padding:11px 15px;border-radius:10px;background:#fff;color:#170d13;font-weight:700;transition:top .2s}.skip-link:focus{top:14px}.opening-card small{display:block;color:#eadfe4;font-size:11px;line-height:1.5}.js .reveal{opacity:0;transform:translateY(30px)}.reveal,.js .reveal.visible{opacity:1;transform:none}.hero-inner,.names,.opening-card strong,.couple-name{max-inline-size:min(100%,900px);overflow-wrap:anywhere;text-wrap:balance}.hero-inner{padding-inline:10px}.names{font-size:clamp(44px,10vw,120px);line-height:1.02}.opening-card strong{font-size:clamp(42px,10vw,58px);line-height:1.05}.couple-name{font-size:clamp(40px,6vw,53px);line-height:1.05}.family-card{min-height:0}.form-note{margin:0!important;color:#d9cbd2!important;font-size:12px;line-height:1.5!important}.rsvp [hidden]{display:none}.btn:focus-visible,.gallery-item:focus-visible,.music-btn:focus-visible,.lightbox button:focus-visible{outline:3px solid #fff;outline-offset:3px}.btn:disabled{cursor:wait;opacity:.65;transform:none;box-shadow:none}.gallery-item{aspect-ratio:1;background:#24131c}.lightbox-nav{min-width:44px;min-height:44px}.section{padding-block:clamp(68px,9vw,100px)}@media(hover:hover){.btn:hover{transform:translateY(-3px);box-shadow:0 16px 35px color-mix(in srgb,var(--primary) 40%,transparent)}}@media(max-width:760px){.section{padding:68px 17px}.family-card{padding:26px 18px}.hero{padding:22px 16px}.music-status{right:12px;max-width:210px}.gallery-item:nth-child(5n+1){grid-row:span 1}.lightbox{padding:16px 8px;grid-template-columns:44px minmax(0,1fr) 44px}.lightbox-close{width:44px;height:44px;right:12px;top:12px}}@media(max-width:480px){.count-grid{grid-template-columns:repeat(2,minmax(0,1fr));max-width:370px}.count-grid div{padding:20px 8px}.count-grid strong{font-size:40px}.names{font-size:clamp(42px,15vw,64px)}.eyebrow,.date-line{letter-spacing:.14em}.section h2{font-size:clamp(40px,13vw,55px)}.gallery{grid-auto-rows:128px}.gallery-item:nth-child(5n+1){grid-column:span 2;grid-row:span 2}.lightbox-nav{font-size:32px}.lightbox-counter{left:14px;top:18px}.opening-card{padding:42px 20px}}@media(prefers-reduced-motion:reduce){.hero{background-position:center!important}.shimmer{animation:none}.js .reveal{opacity:1;transform:none}}
.blessing-stream{position:fixed;z-index:45;left:max(16px,env(safe-area-inset-left));bottom:max(18px,env(safe-area-inset-bottom));width:min(310px,calc(100vw - 32px));padding:11px 12px 12px;border:1px solid rgba(255,255,255,.28);border-radius:16px;background:linear-gradient(135deg,rgba(34,13,23,.55),rgba(81,34,50,.37));box-shadow:0 10px 30px rgba(20,4,12,.16);color:#fff8f4;pointer-events:none;opacity:.8;backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px);transition:opacity .25s ease}.blessing-stream[hidden]{display:none}.blessing-stream-heading{display:flex;gap:7px;align-items:center;margin:0 0 6px!important;color:rgba(255,249,244,.82)!important;font:600 10px/1.2 Montserrat,Arial,sans-serif!important;letter-spacing:.1em;text-transform:uppercase}.blessing-stream-heading span{color:#f5c1b7;font-size:13px}.blessing-card{min-height:50px;opacity:0;transform:translateY(8px);transition:opacity .65s ease,transform .65s ease}.blessing-card.is-visible{opacity:1;transform:translateY(0)}.blessing-card-name,.blessing-card-message{margin:0!important}.blessing-card-name{overflow:hidden;color:#fff!important;font:600 13px/1.25 Montserrat,Arial,sans-serif!important;text-overflow:ellipsis;white-space:nowrap}.blessing-card-message{display:-webkit-box;overflow:hidden;margin-top:3px!important;color:rgba(255,250,247,.88)!important;font:400 13px/1.4 Montserrat,Arial,sans-serif!important;-webkit-box-orient:vertical;-webkit-line-clamp:2}@media(max-width:760px){.blessing-stream{left:max(10px,env(safe-area-inset-left));bottom:max(11px,env(safe-area-inset-bottom));width:min(290px,calc(100vw - 20px));padding:9px 11px 10px;border-radius:14px;opacity:.74;backdrop-filter:none;-webkit-backdrop-filter:none}.blessing-stream-heading{margin-bottom:5px!important;font-size:9px!important}.blessing-card{min-height:44px}.blessing-card-name{font-size:12px!important}.blessing-card-message{font-size:12px!important;line-height:1.35!important}}
.invite-summary-toggle{position:fixed;z-index:46;right:max(16px,env(safe-area-inset-right));bottom:max(18px,env(safe-area-inset-bottom));display:flex;align-items:center;gap:9px;min-height:53px;max-width:210px;padding:8px 13px 8px 9px;border:1px solid rgba(255,255,255,.3);border-radius:28px;background:linear-gradient(135deg,rgba(255,249,243,.88),rgba(246,225,220,.76));box-shadow:0 10px 30px rgba(29,8,17,.17);color:#4c1d30;cursor:pointer;text-align:left;transition:transform .22s ease,box-shadow .22s ease}.invite-summary-toggle:hover{transform:translateY(-2px);box-shadow:0 14px 35px rgba(29,8,17,.24)}.invite-summary-toggle:focus-visible,.invite-summary-close:focus-visible{outline:3px solid var(--accent);outline-offset:3px}.invite-summary-toggle[hidden]{display:none}.invite-summary-icon{display:grid;flex:0 0 35px;width:35px;height:35px;place-items:center;border-radius:50%;background:var(--primary);color:#fff8f4;font:400 23px/1 Georgia,serif;box-shadow:inset 0 0 0 1px rgba(255,255,255,.25)}.invite-summary-copy{display:grid;gap:1px;min-width:0;font:500 11px/1.15 Montserrat,Arial,sans-serif}.invite-summary-copy b{font-size:14px}.invite-summary-copy small{color:rgba(76,29,48,.72);font-size:9px}.invite-summary-panel{position:fixed;z-index:52;right:max(16px,env(safe-area-inset-right));bottom:max(83px,calc(18px + env(safe-area-inset-bottom) + 55px));width:min(335px,calc(100vw - 32px));padding:25px 22px 20px;border:1px solid rgba(255,255,255,.45);border-radius:22px;background:linear-gradient(145deg,rgba(65,21,39,.93),rgba(106,48,65,.89));box-shadow:0 20px 48px rgba(23,5,13,.32);color:#fffaf6;backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px)}.invite-summary-panel[hidden]{display:none}.invite-summary-close{position:absolute;top:9px;right:10px;width:34px;height:34px;border:0;border-radius:50%;background:rgba(255,255,255,.12);color:#fff;cursor:pointer;font-size:24px;line-height:1}.invite-summary-kicker{margin:0 36px 5px 0!important;color:#f6c5bc!important;font:600 9px/1.3 Montserrat,Arial,sans-serif!important;letter-spacing:.15em}.invite-summary-panel h2{margin:0!important;color:#fff!important;font-size:clamp(29px,7vw,38px)!important;line-height:1.05!important}.invite-summary-stats{display:grid;grid-template-columns:repeat(3,1fr);gap:7px;margin-top:18px}.invite-summary-stats article{display:grid;gap:4px;min-width:0;padding:11px 6px;border:1px solid rgba(255,255,255,.12);border-radius:12px;background:rgba(255,255,255,.09);text-align:center}.invite-summary-stats b{font:600 22px/1 Cormorant Garamond,Georgia,serif}.invite-summary-stats span{font:500 9px/1.3 Montserrat,Arial,sans-serif}.invite-summary-note{margin:14px 0 0!important;color:rgba(255,248,244,.8)!important;font:400 11px/1.45 Montserrat,Arial,sans-serif!important;text-align:center}@media(max-width:760px){.invite-summary-toggle{right:max(10px,env(safe-area-inset-right));bottom:max(11px,env(safe-area-inset-bottom));min-height:47px;padding:6px 11px 6px 7px}.invite-summary-icon{flex-basis:33px;width:33px;height:33px;font-size:21px}.invite-summary-copy{font-size:10px}.invite-summary-copy b{font-size:13px}.invite-summary-panel{right:max(10px,env(safe-area-inset-right));bottom:max(68px,calc(11px + env(safe-area-inset-bottom) + 48px));width:min(325px,calc(100vw - 20px));padding:22px 17px 17px;border-radius:19px;backdrop-filter:none;-webkit-backdrop-filter:none}.invite-summary-stats{gap:5px}.invite-summary-stats article{padding:10px 4px}.invite-summary-stats b{font-size:20px}.invite-summary-stats span{font-size:8px}}
