.intro{position:fixed;top:0;right:0;bottom:0;left:0;z-index:50;background:radial-gradient(ellipse at center,color-mix(in srgb,var(--color-accent) 18%,var(--color-bg-card)),color-mix(in srgb,var(--color-accent) 18%,var(--color-bg-card)));display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;padding:25px}.intro>.eyebrow:first-child{margin-bottom:60px}.intro>p:not(.eyebrow){margin:45px 0 5px;font-style:italic}.envelope{position:relative;width:min(340px,86vw);height:225px;border:1px solid color-mix(in srgb,var(--color-accent) 18%,var(--color-bg-card));border-radius:5px;background:color-mix(in srgb,var(--color-accent) 18%,var(--color-bg-card));padding:0;perspective:1000px;box-shadow:0 30px 60px color-mix(in srgb,var(--color-secondary) 17%,transparent)}.envelope-letter{position:absolute;top:12px;right:12px;bottom:12px;left:12px;background:var(--paper);border:1px solid var(--line);display:flex;align-items:center;justify-content:center;flex-direction:column;transition:transform .4s .15s}.envelope-letter .botanical{width:32px;height:60px}.envelope-front{position:absolute;top:0;right:0;bottom:0;left:0;background:linear-gradient(145deg,color-mix(in srgb,var(--color-accent) 18%,var(--color-bg-card)),color-mix(in srgb,var(--color-accent) 18%,var(--color-bg-card)));clip-path:polygon(0 0,50% 58%,100% 0,100% 100%,0 100%);z-index:2}.envelope-flap{position:absolute;top:0;right:0;bottom:0;left:0;background:linear-gradient(170deg,color-mix(in srgb,var(--color-accent) 18%,var(--color-bg-card)),color-mix(in srgb,var(--color-accent) 18%,var(--color-bg-card)));clip-path:polygon(0 0,100% 0,50% 60%);transform-origin:top;transition:transform .6s cubic-bezier(.22,1,.36,1),opacity .6s;z-index:3}.wax-seal{display:grid;place-items:center;width:85px;height:85px;border:5px double #8f2435;border-radius:46% 54% 49% 51%/53% 45% 55% 47%;background:radial-gradient(circle at 35% 25%,#f2c9cf,#8f2435 62%,#54101d);color:#f4dfaa;text-shadow:0 1px 1px #54101d99;box-shadow:0 5px 10px color-mix(in srgb,var(--color-secondary) 13%,transparent),inset 0 0 0 3px #d98a98;font:31px var(--script)}.envelope-seal{position:absolute;left:calc(50% - 42px);top:86px;z-index:4;transition:opacity .18s,transform .18s}.envelope-light{position:absolute;top:-50%;right:-50%;bottom:-50%;left:-50%;pointer-events:none;z-index:5;background:radial-gradient(circle,var(--color-bg-card) 0,color-mix(in srgb,var(--color-secondary) 56%,transparent) 25%,transparent 65%);opacity:0;transform:scale(0)}.is-opening .envelope-flap{transform:rotateX(180deg);opacity:.35}.is-opening .envelope-seal{transform:scale(1.2);opacity:0}.is-opening .envelope-letter{transform:translateY(-65px)}.is-opening .envelope-light{animation:light-burst .4s .3s forwards}@keyframes light-burst{0%{opacity:0;transform:scale(.3)}55%{opacity:1}to{opacity:0;transform:scale(3)}}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:100;display:flex;align-items:flex-end;justify-content:center;background:color-mix(in srgb,var(--color-secondary) 44%,transparent);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);padding-top:20px}.rsvp-modal{position:relative;width:min(100%,480px);max-height:90dvh;overflow-y:auto;overscroll-behavior:contain;background:linear-gradient(135deg,#fffaf2,#f8efe4 62%,#fffdf8);padding:24px 28px max(30px,env(safe-area-inset-bottom));border-radius:28px 28px 0 0;box-shadow:0 -10px 70px color-mix(in srgb,var(--color-secondary) 19%,transparent)}.sheet-handle{width:34px;height:3px;border-radius:2px;background:var(--line);margin:-10px auto 26px}.modal-close{position:absolute;right:12px;top:10px;width:44px;height:44px;background:#fffaf2;border:0;border-radius:50%;font-size:28px;z-index:1}.rsvp-modal h2{margin-bottom:22px}.rsvp-modal label,.rsvp-modal legend{font:12px var(--sans)}.rsvp-modal input:not([type=radio]){display:block;width:100%;min-height:48px;border:1px solid var(--line);border-radius:8px;background:#fffaf2;padding:10px 12px;margin:9px 0 21px;font-size:16px;color:var(--ink)}.rsvp-modal fieldset{border:0;padding:0;margin:0 0 16px}.radio-label{display:flex;align-items:center;gap:10px;min-height:44px}.radio-label input{width:18px;height:18px;accent-color:var(--ink)}.rsvp-modal .primary-button{width:100%}.calendar-actions{display:grid;gap:10px;margin:22px 0 12px}.calendar-helper{margin:0;font:700 14px/1.5 var(--sans);color:var(--ink)}.form-error{font-size:13px;color:var(--color-primary)}.success{text-align:center;padding-top:25px}.success>span{display:block;font-size:35px;margin-bottom:20px}.photo-dialog{width:min(94vw,680px);max-height:94dvh;padding:0;border:0;border-radius:12px;background:var(--paper);color:var(--ink)}.photo-dialog::backdrop{background:color-mix(in srgb,var(--color-secondary) 85%,transparent);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px)}.lightbox-content{position:relative;padding:16px;text-align:center}.lightbox-content>img{width:100%;max-height:70dvh;object-fit:contain}.lightbox-content>p{margin:12px 0 0}.lightbox-nav{display:flex;align-items:center;justify-content:space-between}.lightbox-nav button{width:48px;height:48px;border:0;border-radius:50%;background:var(--blue)}.wedding-theme{--paper: var(--color-bg-card);--blue: color-mix(in srgb, var(--color-accent) 10%, var(--color-bg));--ink: var(--color-primary);--muted: var(--color-secondary);--line: color-mix(in srgb, var(--color-secondary) 32%, transparent);--gold: var(--color-accent);color:var(--color-text)}.wedding-theme .invitation{background:var(--color-bg)}.wedding-theme:after{content:"";position:fixed;top:0;right:0;bottom:0;left:0;z-index:150;pointer-events:none;opacity:.04;background-image:url("data:image/svg+xml,%3Csvg viewBox='0 0 180 180' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='grain'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.85' numOctaves='3' stitchTiles='stitch'/%3E%3C/filter%3E%3Cpath fill='%2392745e' filter='url(%23grain)' d='M0 0h180v180H0z'/%3E%3C/svg%3E")}.wedding-theme h1,.wedding-theme h2,.wedding-theme h3{color:var(--color-primary)}.wedding-theme h2{font-family:var(--serif);font-size:clamp(36px,10vw,47px);font-weight:500;line-height:1.1}.wedding-theme p{font-size:17px}.wedding-theme .eyebrow{font-family:var(--serif);font-variant-caps:small-caps;font-size:11px;letter-spacing:1.7px;color:var(--color-secondary)}.wedding-theme .section>.eyebrow:first-child:before,.wedding-theme .section>.eyebrow:first-child:after{content:"✦";color:var(--color-accent);margin:0 8px;font-size:9px}.wedding-theme .section+.section:before{content:"";position:absolute;top:0;left:calc(50% - 30px);width:60px;height:1px;background:var(--color-accent)}.wedding-theme .hero{background:radial-gradient(ellipse at top,var(--color-bg-card),var(--color-bg));padding-top:35px}.wedding-theme .hero-frame,.wedding-theme .hero-frame:before{border-color:var(--line)}.wedding-theme .hero-swans{width:105px;height:85px;object-fit:contain;margin:0 auto 20px}.wedding-theme .hero-photo{box-shadow:0 10px 28px color-mix(in srgb,var(--color-secondary) 20%,transparent)}.wedding-theme h1{font-size:clamp(58px,17vw,78px);line-height:1.1}.wedding-theme .hero-heading{font-family:var(--script);font-size:29px;color:var(--color-primary)}.wedding-theme .hero-place{font-family:var(--serif);font-size:12px}.hero-background,.hero-video-shade{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%;object-fit:cover;pointer-events:none}.hero-video-shade{background:linear-gradient(to top,#0006,#00000026)}.wedding-theme .hero-with-video>:not(.hero-background,.hero-video-shade){position:relative}.wedding-theme .hero-with-video .hero-frame{background:color-mix(in srgb,var(--color-bg) 90%,transparent)}.wedding-theme .hero-with-video>.eyebrow,.wedding-theme .hero-with-video .scroll-hint,.wedding-theme .hero-with-video .scroll-hint .eyebrow{color:var(--color-bg-card);text-shadow:0 1px 4px var(--color-text)}.wedding-theme .scroll-hint>span:last-child{animation:chevron-float 2s ease-in-out infinite}@keyframes chevron-float{50%{transform:translateY(5px)}}.letter-card{padding:35px 23px 23px;border:1px solid var(--line);border-radius:14px;background:var(--color-bg-card);box-shadow:0 12px 35px color-mix(in srgb,var(--color-secondary) 11%,transparent)}.wedding-theme .letter-card h2{font-family:var(--script);font-size:34px}.wedding-theme .letter-card p{line-height:1.75}.wedding-theme .letter-card .signature{font-size:33px;color:var(--color-primary);margin:27px 0 10px}.letter-flourish{font-size:29px;color:var(--color-accent)}.wedding-theme .date-card{border-radius:14px;background:var(--color-bg-card);min-height:130px}.scratch-canvas{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%;touch-action:none;transition:opacity .7s ease}.revealed .scratch-canvas{opacity:0;pointer-events:none}.scratch-fallback{min-height:44px;padding:10px 15px;border:0;background:transparent;color:var(--color-primary);text-decoration:underline;text-underline-offset:4px;margin-top:8px}.wedding-theme .date-caption{font-size:14px}.wedding-theme .date-values strong{color:var(--color-primary);font-family:var(--serif);font-size:27px}.wedding-theme .countdown strong{color:var(--color-primary);font-family:var(--serif);font-size:34px}.wedding-theme .countdown .eyebrow{font-size:10px;letter-spacing:.5px}.wedding-theme .countdown-section{padding-top:40px}.wedding-theme .countdown-section .divider{display:none}.wedding-theme .event{border-left-color:var(--color-accent)}.wedding-theme .event-dot{background:var(--color-accent)}.wedding-theme .event-stamp{color:var(--color-accent);border-color:var(--line)}.wedding-theme .event-time{font-size:13px;color:var(--color-primary)}.wedding-theme .event h3{font-family:var(--serif);font-size:22px}.wedding-theme .event-description{font-size:15px;font-style:italic}.wedding-theme .palette>div{font-size:13px}.wedding-theme .venue-map,.wedding-theme .video-card{border-radius:14px}.moodboard{display:flex;gap:14px;overflow-x:auto;scroll-snap-type:x mandatory;padding:10px 0 20px}.moodboard img{width:145px;height:200px;object-fit:cover;border-radius:14px;flex-shrink:0;scroll-snap-align:start}.wedding-theme .primary-button{font-family:var(--sans);font-size:16px;letter-spacing:.4px}.wedding-theme .primary-button:hover{background:var(--color-secondary);border-color:var(--color-secondary)}.wedding-theme .wax-seal{background:radial-gradient(circle at 35% 25%,color-mix(in srgb,var(--color-primary) 65%,var(--color-accent)),var(--color-primary) 75%);border-color:var(--color-secondary);color:var(--color-accent);text-shadow:0 1px 1px color-mix(in srgb,var(--color-primary) 70%,transparent);box-shadow:0 5px 14px color-mix(in srgb,var(--color-secondary) 25%,transparent),inset 0 0 0 3px var(--color-accent)}.wedding-theme .intro{background:radial-gradient(ellipse,var(--color-bg-card),var(--blue))}.wedding-theme .envelope{border-color:var(--color-secondary);background:var(--color-accent)}.wedding-theme .envelope-front{background:linear-gradient(145deg,var(--color-bg-card),var(--color-accent))}.wedding-theme .envelope-flap{background:linear-gradient(170deg,var(--color-bg-card),color-mix(in srgb,var(--color-accent) 70%,var(--color-bg-card)))}.wedding-theme .rsvp-modal label,.wedding-theme .rsvp-modal legend{font-family:var(--sans);font-size:16px}.rsvp-modal textarea{display:block;width:100%;font:16px var(--sans);min-height:85px;border:1px solid var(--line);border-radius:8px;padding:10px 12px;margin:9px 0 21px;color:var(--color-text);background:#fffaf2;resize:vertical}.wedding-theme .music-toggle{color:var(--color-primary);cursor:pointer}.wedding-theme .music-toggle.playing{color:var(--color-bg-card)}.music-toggle[aria-disabled=true]{opacity:.65}.wedding-theme footer p{font-size:15px}.wedding-theme footer .signature{font-size:37px}.wedding-theme footer .eyebrow{font-size:10px}:root{--color-bg: #faf3ea;--color-bg-card: #fffaf3;--color-text: #2c1810;--paper: var(--color-bg-card);--blue: color-mix(in srgb, var(--color-accent) 12%, var(--color-bg));--ink: var(--color-primary);--muted: var(--color-secondary);--line: color-mix(in srgb, var(--color-secondary) 35%, transparent);--gold: var(--color-accent);--script: "Parisienne", "Brush Script MT", cursive;--serif: "Cormorant Garamond", Georgia, serif;--sans: "EB Garamond", Georgia, serif;color:var(--color-text);background:var(--color-bg);font-family:var(--sans);font-synthesis:none;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased}*{box-sizing:border-box}html{scroll-behavior:smooth}body{margin:0}button,input{font:inherit}button,a{-webkit-tap-highlight-color:transparent}button{cursor:pointer;color:inherit}button:disabled{cursor:wait;opacity:.65}button,a{touch-action:manipulation}button:focus-visible,a:focus-visible,input:focus-visible{outline:2px solid var(--ink);outline-offset:5px}a{color:inherit}img,video{display:block;max-width:100%}h1,h2,h3,p{margin-top:0}p{line-height:1.85;font-size:15px}h2{font-family:var(--script);font-weight:400;font-size:clamp(45px,12vw,59px);line-height:1.12;margin-bottom:27px}h3{font-size:21px;font-weight:400;line-height:1.4}.invitation{max-width:480px;margin:auto;overflow:clip;background:var(--paper);box-shadow:0 0 90px color-mix(in srgb,var(--color-secondary) 9%,transparent)}.eyebrow{font-family:var(--sans);font-size:9px;font-weight:500;line-height:1.7;letter-spacing:2.3px;text-transform:uppercase}.signature{font-family:var(--script);font-size:52px;font-weight:400}.section{padding:65px 30px;text-align:center;position:relative}.section>.eyebrow{margin-bottom:12px}.botanical{width:80px;color:var(--ink)}.hero{position:relative;padding:40px 26px 20px;text-align:center;background:radial-gradient(ellipse at 50% 20%,var(--color-bg-card) 0,color-mix(in srgb,var(--color-accent) 18%,var(--color-bg-card)) 42%,color-mix(in srgb,var(--color-accent) 18%,var(--color-bg-card)) 100%)}.hero>.eyebrow{margin-bottom:28px}.hero-frame{position:relative;border:1px solid color-mix(in srgb,var(--color-secondary) 60%,transparent);border-radius:180px 180px 8px 8px;padding:37px 16px 32px;isolation:isolate}.hero-frame:before{content:"";position:absolute;top:7px;right:7px;bottom:7px;left:7px;border:1px solid color-mix(in srgb,var(--color-secondary) 40%,transparent);border-radius:inherit;pointer-events:none}.monogram-medallion{display:grid;place-items:center;width:75px;height:88px;border:1px solid var(--line);border-radius:50%;margin:0 auto 18px;font:37px var(--script)}.hero-photo{width:120px;height:145px;object-fit:cover;border-radius:65px 65px 8px 8px;padding:5px;border:1px solid var(--line);margin:0 auto 18px}h1{font-family:var(--script);font-weight:400;font-size:clamp(64px,19vw,88px);line-height:.98;margin:0 0 24px}h1 span{display:block}h1 .ampersand{font-size:39px;margin:4px 0 8px;color:var(--gold)}.hero-heading{font-size:16px;font-style:italic;margin:0}.hero-rule{width:36px;height:1px;background:var(--gold);margin:22px auto}.hero time{font-size:15px}.hero-place{margin:9px 0 0;font:9px var(--sans);text-transform:uppercase;letter-spacing:2px}.hero-sprig{position:absolute;width:94px;height:200px;top:28%;z-index:-1;opacity:.55}.hero-sprig.left{left:-21px;transform:rotate(-16deg)}.hero-sprig.right{right:-21px;transform:scaleX(-1) rotate(-16deg)}.scroll-hint{display:flex;flex-direction:column;align-items:center;justify-content:center;min-height:75px;gap:7px;text-decoration:none;margin-top:10px}.scroll-hint>span:last-child{font-size:23px}.date-section{padding-bottom:30px}.date-card{position:relative;min-height:120px;border:1px solid var(--line);padding:8px;border-radius:70px 70px 8px 8px/15px 15px 8px 8px;overflow:hidden}.date-values{display:grid;grid-template-columns:1fr 1.45fr 1fr;padding:25px 4px 15px;gap:5px}.date-values strong{display:block;font-weight:400;font-size:23px;margin-bottom:12px}.date-values .eyebrow{font-size:8px;letter-spacing:1px}.date-cover{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;border:0;background:linear-gradient(135deg,color-mix(in srgb,var(--color-accent) 18%,var(--color-bg-card)),color-mix(in srgb,var(--color-accent) 18%,var(--color-bg-card)),color-mix(in srgb,var(--color-accent) 18%,var(--color-bg-card)));display:flex;align-items:center;justify-content:space-evenly;font-style:italic;font-size:19px}.date-cover span{color:var(--gold);font-size:30px}.date-caption{color:var(--muted);font-size:12px;font-style:italic;margin:14px 0 0}.divider{display:flex;align-items:center;justify-content:center;gap:16px;margin:25px 0;color:var(--gold)}.divider span{width:60px;height:1px;background:var(--line)}.countdown-section{padding-top:10px}.invitation-copy{margin:30px auto 38px;max-width:310px;font-size:17px}.countdown{display:grid;grid-template-columns:repeat(4,1fr);margin:30px -5px}.countdown>div+div{border-left:1px solid var(--line)}.countdown strong{font-size:28px;font-weight:400;display:block;font-variant-numeric:tabular-nums}.countdown .eyebrow{font-size:8px;letter-spacing:1px}.schedule-section{background:var(--blue);border-radius:180px 180px 0 0/36px 36px 0 0;padding-top:75px}.timeline{list-style:none;margin:45px 0 0;padding:0 0 0 16px;text-align:left}.event{position:relative;display:grid;grid-template-columns:63px 1fr;gap:20px;padding:0 0 36px 22px;border-left:1px dashed color-mix(in srgb,var(--color-accent) 18%,var(--color-bg-card))}.event:last-child{padding-bottom:0;border-color:transparent}.event-dot{position:absolute;left:-4px;top:0;height:7px;width:7px;border-radius:50%;background:color-mix(in srgb,var(--color-accent) 18%,var(--color-bg-card))}.event-stamp{height:77px;padding:16px 10px;background:var(--paper);border:3px dotted var(--line);box-shadow:2px 5px 10px color-mix(in srgb,var(--color-secondary) 6%,transparent);transform-origin:50% 0;position:relative}.event-stamp:before{content:"";position:absolute;top:-14px;left:50%;height:13px;border-left:1px solid var(--gold)}.event-stamp svg{width:100%;height:100%}.event-time{font:10px var(--sans);letter-spacing:1px;margin:0 0 9px}.event h3{font-size:17px;margin-bottom:6px}.event-description{font-size:12px;color:var(--muted);margin:0;line-height:1.65}.venue-photo-frame{border:1px solid var(--line);border-radius:170px 170px 6px 6px;padding:7px;margin:32px 0 26px}.venue-photo-frame img{width:100%;height:300px;object-fit:cover;border-radius:inherit}address{font-size:14px;line-height:1.8;font-style:normal}.location-section>p:not(.eyebrow){font-size:12px;margin-top:16px}.venue-map{width:100%;height:180px;border:1px solid var(--line);border-radius:8px;margin:14px 0 22px}.primary-button{display:inline-flex;min-height:48px;justify-content:center;align-items:center;gap:25px;border:1px solid var(--ink);padding:13px 26px;border-radius:30px;background:var(--ink);color:var(--paper);font:11px var(--sans);letter-spacing:1px;text-decoration:none}.dress-section{background:color-mix(in srgb,var(--color-accent) 18%,var(--color-bg-card))}.palette{display:flex;justify-content:center;gap:22px;margin:30px 0}.palette>div{display:flex;align-items:center;flex-direction:column;gap:12px;font:9px var(--sans)}.palette>div>span:first-child{width:53px;height:53px;border-radius:50%;box-shadow:inset 0 0 0 4px color-mix(in srgb,var(--color-secondary) 40%,transparent)}.dress-illustration{margin:20px auto 30px;max-height:220px}.gallery-section{background:var(--paper)}.gallery-empty{margin:35px 0 0}.empty-photo{position:relative;display:grid;place-items:center;width:180px;height:210px;margin:0 auto 30px;background:var(--blue);border:10px solid white;border-bottom-width:30px;box-shadow:0 8px 25px color-mix(in srgb,var(--color-secondary) 11%,transparent);transform:rotate(-6deg)}.empty-photo .botanical{position:absolute;height:140px;opacity:.25}.empty-photo .signature{z-index:1}.gallery-empty>p{font-size:13px;color:var(--muted);font-style:italic}.photo-grid{display:grid;grid-template-columns:1fr 1fr;gap:22px 16px;margin-top:35px}.polaroid{border:0;padding:7px 7px 13px;background:var(--color-bg-card);box-shadow:0 4px 18px color-mix(in srgb,var(--color-secondary) 13%,transparent);transform:rotate(-3deg);min-width:0}.polaroid:nth-child(2n){transform:rotate(3deg) translateY(12px)}.polaroid img{width:100%;aspect-ratio:3 / 4;object-fit:cover}.polaroid span{display:block;font-size:12px;margin-top:11px;line-height:1.5}.video-section{padding-top:35px}.video-caption{font-style:italic}.video-card{position:relative;border-radius:130px 130px 8px 8px/30px 30px 8px 8px;overflow:hidden;background:var(--blue)}.video-card video,.video-card>img{width:100%;aspect-ratio:4 / 3;object-fit:cover}.video-placeholder{position:absolute;top:0;right:0;bottom:0;left:0;display:flex;align-items:center;justify-content:center;flex-direction:column;background:color-mix(in srgb,var(--color-secondary) 79%,transparent)}.video-placeholder span{font-size:40px}.video-placeholder p{font-size:13px}.rsvp-section{background:var(--blue);padding-top:70px}.rsvp-botanical{position:absolute;left:-20px;bottom:20px;width:90px;opacity:.25;pointer-events:none}.rsvp-seal{margin:20px auto}.rsvp-deadline{font-size:11px;font-style:italic}footer{padding:40px 30px 80px;text-align:center;background:var(--blue)}footer .botanical{width:45px;height:75px;margin-bottom:24px}footer p{font-size:13px}footer .signature{margin:12px 0 25px}footer .eyebrow{font-size:8px}.music-control{position:fixed;z-index:60;right:max(16px,calc((100vw - 480px)/2 + 16px));bottom:max(18px,env(safe-area-inset-bottom))}.music-toggle{height:48px;width:48px;border:1px solid var(--line);border-radius:50%;background:color-mix(in srgb,var(--color-secondary) 93%,transparent);color:var(--ink);box-shadow:0 4px 20px color-mix(in srgb,var(--color-secondary) 13%,transparent);font-size:21px}.music-toggle.playing{background:var(--ink);color:var(--paper)}.music-control>p{position:absolute;bottom:55px;right:0;width:220px;padding:12px;background:var(--paper);border-radius:8px;font-size:12px}.status-screen{min-height:100svh;display:flex;flex-direction:column;justify-content:center;align-items:center;padding:30px;text-align:center}@media(max-width:350px){.section{padding-right:22px;padding-left:22px}.event{gap:12px;padding-left:16px}.eyebrow{letter-spacing:1.7px}}@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,*:before,*:after{animation:none!important;transition:none!important}}.floral-art{pointer-events:none;overflow:visible;stroke-linecap:round;stroke-linejoin:round}.floral-rose{stroke:var(--color-primary);stroke-width:1}.rose-wash{fill:var(--color-accent);fill-opacity:.24;stroke:none}.floral-greenery{fill:#87927a;fill-opacity:.18;stroke:#87927a;stroke-width:.9}.floral-stem{fill:none;stroke:#87927a;stroke-width:.9}.floral-buds{fill:var(--color-accent);fill-opacity:.35;stroke:var(--color-secondary);stroke-width:.8}.floral-corners{position:absolute;top:0;right:0;bottom:0;left:0;z-index:-1;pointer-events:none}.floral-corners .rose-cluster{position:absolute;width:clamp(85px,28vw,135px);height:auto;opacity:.62}.corner-top{top:9px;left:1px;transform:rotate(90deg)}.corner-bottom{bottom:5px;right:1px;transform:rotate(-90deg)}.section{isolation:isolate}.section>.floral-divider{position:absolute;top:-17px;left:25%;width:50%;height:40px;z-index:0}.wedding-theme .section+.section:before{display:none}.divider .floral-divider{width:180px;height:40px}.wedding-theme .invitation{overflow:visible}.hero-roses{position:absolute;width:155px;z-index:-1;opacity:.65}.hero-roses-left{left:0;top:0;transform:rotate(90deg)}.hero-roses-right{right:0;bottom:8px;width:112px;opacity:.45;transform:rotate(-90deg)}.hero-frame .floral-petals{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%;z-index:-1}.petal{fill:var(--color-accent);opacity:.28}.petal-1,.petal-3{fill:#87927a}.date-card{isolation:isolate}.date-card .floral-corners{z-index:0}.date-card .rose-cluster{width:75px;opacity:.4}.date-values{position:relative;z-index:1}.scratch-canvas,.date-cover{z-index:2}.timeline-frame{position:relative;isolation:isolate}.timeline-frame>.floral-vine{position:absolute;left:2px;top:0;width:24px;height:100%;opacity:.65;z-index:-1}.palette,.moodboard{position:relative;isolation:isolate}.dress-section>.floral-corners .corner-top{top:130px}.dress-section>.floral-corners .corner-bottom{bottom:25px}.rsvp-modal{isolation:isolate}.rsvp-modal>.floral-corners{position:absolute;min-height:100%}.rsvp-modal>.floral-corners .rose-cluster{width:95px;opacity:.45}.rsvp-modal>.floral-corners .corner-top{top:0;width:75px}.rsvp-modal>.floral-corners .corner-bottom{bottom:12px}.envelope-engraving{position:absolute;width:155px;height:155px;opacity:.62}.envelope-engraving-left{top:-15px;left:10px;transform:rotate(65deg)}.envelope-engraving-right{top:-15px;right:10px;transform:rotate(-65deg) scaleX(-1)}.envelope-front .envelope-engraving{top:auto;bottom:-7px;width:125px}.envelope-engraving .rose-wash,.envelope-engraving .floral-greenery{fill:none}.envelope-engraving path,.envelope-engraving ellipse{stroke:var(--color-secondary);stroke-width:1}@media(prefers-reduced-motion:no-preference){.hero-frame .floral-petals{animation:petal-drift 12s ease-in-out infinite alternate}@keyframes petal-drift{0%{transform:translateY(-4px);opacity:.6}to{transform:translateY(7px);opacity:1}}}@media(max-width:350px){.hero-roses{width:120px;opacity:.5}.floral-corners .rose-cluster{width:83px}}body{background:#f6efe5}.wedding-theme.dolce{--script: "Imperial Script", "Snell Roundhand", "Apple Chancery", "Segoe Script", "Brush Script MT", cursive;--blue: #eaf1f5;--paper: var(--color-bg-card);--ink: var(--color-primary);--gold: var(--color-accent);--muted: var(--color-secondary);--line: color-mix(in srgb, var(--color-primary) 22%, transparent);--marble-paper: linear-gradient(124deg, transparent 0 18%, rgba(179, 107, 62, .08) 19%, rgba(221, 177, 126, .05) 21%, transparent 25% 100%), linear-gradient(128deg, transparent 0 58%, rgba(122, 31, 43, .045) 60%, rgba(206, 151, 118, .08) 62%, transparent 66% 100%), linear-gradient(118deg, transparent 0 72%, rgba(199, 143, 84, .16) 73%, rgba(255, 238, 202, .2) 74%, transparent 76% 100%), radial-gradient(ellipse at 8% 0%, rgba(210, 149, 92, .11), transparent 34%), radial-gradient(ellipse at 100% 88%, rgba(122, 31, 43, .05), transparent 30%), linear-gradient(135deg, #fffaf2 0%, #f8efe4 45%, #fffdf8 68%, #f1d8ca 100%);background:#f6efe5;position:relative;isolation:isolate}.ambient-mist{position:fixed;top:0;right:0;bottom:0;left:0;z-index:2;overflow:hidden;pointer-events:none}.mist-blob{position:absolute;display:block;width:min(92vw,520px);aspect-ratio:1;border-radius:50%;filter:blur(82px);opacity:.08;transform:translateZ(0)}.mist-blob-one{top:4%;left:-28%;background:radial-gradient(circle,var(--color-bg-card),transparent 68%)}.mist-blob-two{top:28%;right:-32%;background:radial-gradient(circle,var(--color-accent),transparent 70%);opacity:.065}.mist-blob-three{top:57%;left:-24%;background:radial-gradient(circle,var(--color-secondary),transparent 72%);opacity:.055}.dolce .invitation{position:relative;z-index:1;background:var(--marble-paper);background-size:100% 100%}.wedding-theme.dolce .music-control{z-index:120}.wedding-theme.dolce .music-toggle{background:#fff;color:var(--color-primary);border:1px solid var(--color-primary);box-shadow:0 4px 20px color-mix(in srgb,var(--color-primary) 30%,transparent)}.wedding-theme.dolce .music-toggle:focus-visible{outline:2px solid var(--color-primary);outline-offset:4px}.dolce:after{opacity:.023}.wedding-theme.dolce h2{font-size:clamp(35px,10vw,45px);font-weight:400}.wedding-theme.dolce .eyebrow{font-size:10px;letter-spacing:1.4px}.wedding-theme.dolce .section{padding-top:75px;padding-bottom:85px;background:transparent}.wedding-theme.dolce .section>.floral-divider{display:none}.wedding-theme.dolce .section>.floral-corners{opacity:.7}.dolce .rose-wash{fill:#8f2435;fill-opacity:.38}.dolce .floral-rose{stroke:#7a1f2b;fill:color-mix(in srgb,#7a1f2b 30%,#fff1f3);fill-opacity:.62}.dolce .floral-buds{fill:#8f2435;fill-opacity:.48;stroke:#7a1f2b}.dolce .floral-greenery,.dolce .vine-leaf{fill:#7f9a8a;fill-opacity:.2;stroke:#6f8779}.dolce .floral-stem{stroke:#6f8779}.wedding-theme.dolce .hero{min-height:820px;height:100svh;max-height:1040px;padding:0;overflow:hidden;isolation:isolate;background:#f6efe5}.hero-scenery{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%;object-fit:cover;object-position:50% 50%;z-index:-2}.dolce .hero-background,.dolce .hero-video-shade{z-index:-1}.wedding-theme.dolce .hero>.eyebrow{position:absolute;top:21%;left:15%;width:70%;color:#7a1f2b;font-size:11px;text-shadow:0 1px 8px white}.wedding-theme.dolce .hero-frame{position:relative;top:31%;margin:0 22px;padding:0;border:0;border-radius:0;background:transparent}.wedding-theme.dolce .hero-frame:before{display:none}.wedding-theme.dolce .hero-frame>.hero-roses{display:none}.wedding-theme.dolce .hero-swans{width:50px;height:38px;margin-bottom:8px;opacity:.7}.wedding-theme.dolce .hero-photo{width:100px;height:125px;margin-top:-75px;background:#fffaf1}.wedding-theme.dolce h1{display:flex;flex-wrap:wrap;align-items:baseline;justify-content:center;column-gap:7px;font-size:clamp(45px,13vw,64px);line-height:1.15;margin:0 0 7px;text-shadow:0 1px 14px white;color:#7a1f2b}.wedding-theme.dolce h1 .ampersand{display:inline;font-size:37px;margin:0;color:inherit}.wedding-theme.dolce .hero-heading{font-family:var(--serif);font-size:24px;color:#7a1f2b;text-shadow:0 1px 12px white}.wedding-theme.dolce .hero-rule{margin:23px auto 14px;opacity:.7}.dolce .hero time{color:#7a1f2b;font-size:13px;text-shadow:0 1px 8px white}.wedding-theme.dolce .hero-place{font-size:11px;color:#7a1f2b;text-shadow:0 1px 8px white}.wedding-theme.dolce .scroll-hint{position:absolute;bottom:7px;width:100%;margin:0;z-index:3;color:var(--color-primary)}.wedding-theme.dolce .scroll-hint .eyebrow{color:var(--color-primary)}.cloud-bank{position:absolute;pointer-events:none;overflow:hidden;left:0;right:0;height:135px;z-index:2}.cloud-layer{position:absolute;top:0;right:-20%;bottom:0;left:-20%;background:radial-gradient(ellipse at 10% 80%,#fff 0 16%,transparent 38%),radial-gradient(ellipse at 28% 70%,#fff 0 20%,transparent 44%),radial-gradient(ellipse at 47% 90%,#fff 0 20%,transparent 44%),radial-gradient(ellipse at 67% 72%,#fff 0 22%,transparent 46%),radial-gradient(ellipse at 88% 84%,#fff 0 18%,transparent 42%),linear-gradient(transparent 15%,#fff 95%);filter:blur(6px)}.cloud-back{opacity:.65;transform:scaleX(-1) translateY(-12px)}.cloud-front{opacity:.92}.hero-clouds,.section-clouds{display:none}.wedding-theme.dolce .date-section{background:transparent;padding:40px 30px 6px}.wedding-theme.dolce .date-card{border:0;border-radius:15px;box-shadow:0 10px 25px #7a9aaa1a}.dolce .date-values{background:#edf4f7;min-height:126px;align-items:center}.wedding-theme.dolce .date-caption{font-size:25px;margin:10px 0 0}.wedding-theme.dolce .letter-section{background:transparent;padding:0 25px 36px;margin-top:-14px;overflow:hidden}.date-section.date-revealed+.letter-section{margin-top:-70px}.letter-envelope-scene{position:relative;display:flex;flex-direction:column;align-items:center;min-height:430px;padding-top:0;isolation:isolate;overflow:hidden;perspective:1200px;perspective-origin:50% 80%}.letter-hearts{position:relative;z-index:6;margin:0 0 8px;color:var(--color-primary);font-family:var(--script);font-size:48px;line-height:1;letter-spacing:4px;rotate:-9deg;text-shadow:0 6px 18px color-mix(in srgb,var(--color-secondary) 18%,transparent);will-change:opacity,transform}.letter-signature{position:relative;z-index:5;display:flex;flex-direction:column;align-items:center;gap:4px;margin:16px 0 0;padding-bottom:12px;will-change:opacity,transform}.letter-signature .signature{margin:0;color:var(--color-primary);font-size:33px}.letter-signature .letter-flourish{font-size:29px;color:var(--color-accent);line-height:1}.letter-envelope-shell,.letter-envelope-cover{position:absolute;left:50%;bottom:0;width:min(100%,360px);height:314px;translate:-50% 0;filter:drop-shadow(0 22px 36px #7a9aaa24)}.letter-envelope-shell{z-index:1}.letter-envelope-cover{z-index:4;pointer-events:none}.letter-envelope-shell>span,.letter-envelope-cover>span{position:absolute;top:0;right:0;bottom:0;left:0}.letter-envelope-shell>.letter-envelope-back{top:8px;height:248px;clip-path:polygon(50% 0,100% 37%,100% 100%,0 100%,0 37%);border-radius:34px 34px 8px 8px;background:linear-gradient(150deg,#f3ecdf,#e6dcc8 58%,#f5eee1),radial-gradient(circle at 30% 18%,#fff8 0 14%,transparent 38%);box-shadow:inset 0 0 0 1px color-mix(in srgb,var(--color-accent) 44%,transparent)}.letter-envelope-back:after,.letter-envelope-cover>.letter-envelope-front:after,.letter-envelope-shell>.letter-envelope-flap:after{content:"";position:absolute;top:0;right:0;bottom:0;left:0;opacity:.15;background-image:radial-gradient(ellipse at 35% 35%,transparent 0 20px,color-mix(in srgb,var(--color-accent) 36%,transparent) 21px 22px,transparent 23px),radial-gradient(ellipse at 66% 44%,transparent 0 18px,color-mix(in srgb,var(--color-accent) 32%,transparent) 19px 20px,transparent 21px),linear-gradient(110deg,transparent 44%,#fff8 45%,transparent 48%)}.letter-envelope-shell>.letter-envelope-flap{top:0;height:205px;clip-path:polygon(50% 0,100% 72%,76% 84%,50% 56%,24% 84%,0 72%);background:linear-gradient(145deg,#fbf5ea,#e9dfc7 58%,#fdf9f0);box-shadow:inset 0 0 0 1px color-mix(in srgb,var(--color-accent) 44%,transparent)}.letter-envelope-shell>.letter-envelope-left{top:118px;height:230px;clip-path:polygon(0 0,50% 49%,0 100%);background:linear-gradient(120deg,#ece2cf,#f6efe3 72%);box-shadow:inset 1px 0 #ffffff80}.letter-envelope-shell>.letter-envelope-right{top:118px;height:230px;clip-path:polygon(100% 0,50% 49%,100% 100%);background:linear-gradient(240deg,#ece2cf,#f6efe3 72%);box-shadow:inset -1px 0 #ffffff80}.letter-envelope-cover>.letter-envelope-front{top:132px;height:182px;clip-path:polygon(0 0,50% 36%,100% 0,100% 100%,0 100%);border-radius:0 0 16px 16px;background:linear-gradient(160deg,#e4d8c0,#f5eedf 52%,#dacbaa);box-shadow:inset 0 0 0 1px color-mix(in srgb,var(--color-accent) 46%,transparent)}.dolce .letter-card{z-index:3;width:min(74vw,292px);min-height:276px;position:relative;padding:34px 24px 23px;border:0;border-radius:2px;box-shadow:0 10px 34px #7a9aaa21;background:#fffefa;will-change:transform}.dolce .letter-card:before{display:none}.wedding-theme.dolce .letter-card h2{font-family:var(--script);font-size:34px;margin-bottom:17px}.wedding-theme.dolce .letter-card p{font-size:17px;line-height:1.3;margin:0 0 18px}.wedding-theme.dolce .countdown-section{padding-top:40px}.wedding-theme.dolce .invitation-copy{font-size:15px;max-width:275px;line-height:1.85;margin:0 auto 30px}.wedding-theme.dolce .schedule-section{position:relative;overflow:hidden;padding:54px 24px 58px;background:transparent;border-radius:0}.schedule-cloud-trigger{position:relative;z-index:1;isolation:isolate}.schedule-cloud-gate{position:absolute;top:60px;right:-24px;bottom:-36px;left:-24px;z-index:8;pointer-events:none;overflow:hidden}.schedule-cloud{position:absolute;top:-55%;bottom:-25%;width:130%;transform:translateY(-6%);background-repeat:no-repeat;background-position:center;background-size:contain;opacity:1;filter:saturate(1.12) brightness(1.03) contrast(1.06) drop-shadow(0 20px 34px #7d91a526);will-change:transform,opacity}.schedule-cloud:after{content:"";position:absolute;top:0;right:0;bottom:0;left:0;background:radial-gradient(ellipse at 34% 28%,rgba(255,195,92,.92),transparent 40%),radial-gradient(ellipse at 68% 54%,rgba(255,120,148,.72),transparent 48%),radial-gradient(ellipse at 50% 74%,rgba(99,178,255,.68),transparent 56%),radial-gradient(ellipse at 78% 24%,rgba(164,121,255,.5),transparent 44%);mask-image:var(--schedule-cloud-mask);mask-position:center;mask-repeat:no-repeat;mask-size:contain;-webkit-mask-image:var(--schedule-cloud-mask);-webkit-mask-position:center;-webkit-mask-repeat:no-repeat;-webkit-mask-size:contain;opacity:.58;pointer-events:none}.schedule-cloud-left{left:-5%;--schedule-cloud-mask: url(/assets/cloud-left-1.png);background-image:url(/assets/cloud-left-1.png)}.schedule-cloud-right{right:-20%;--schedule-cloud-mask: url(/assets/cloud-right-1.png);background-image:url(/assets/cloud-right-1.png)}.schedule-cloud-mist{position:absolute;top:0;right:0;bottom:0;left:0;background:linear-gradient(to bottom,rgba(255,255,255,.76) 0 7%,transparent 22% 78%,rgba(255,255,255,.64) 94% 100%),radial-gradient(ellipse at 50% 6%,rgba(255,255,255,.48) 0 18%,transparent 44%);filter:blur(8px);will-change:opacity}.schedule-cloud-trigger>.eyebrow,.schedule-cloud-trigger>h2,.schedule-section .timeline-frame{position:relative;z-index:1}.wedding-theme.dolce .timeline{position:relative;z-index:2;margin-top:24px;padding-left:10px}.wedding-theme.dolce .timeline-track{position:absolute;top:30px;bottom:6px;left:18px;z-index:1;width:1px;background-image:linear-gradient(to bottom,color-mix(in srgb,var(--color-accent) 22%,transparent) 0 4px,transparent 4px 9px)}.wedding-theme.dolce .timeline-progress{position:absolute;top:0;right:0;bottom:0;left:0;display:block;background:linear-gradient(to bottom,color-mix(in srgb,var(--color-accent) 80%,white),color-mix(in srgb,var(--color-primary) 38%,var(--color-accent)));box-shadow:0 0 14px color-mix(in srgb,var(--color-accent) 24%,transparent);transform-origin:top}.wedding-theme.dolce .event{grid-template-columns:52px 1fr;gap:13px;padding:0 0 18px 18px;border-left-color:transparent;will-change:opacity,transform}.wedding-theme.dolce .event>div:last-child{position:relative;z-index:1;margin:-6px 0 -4px;padding:10px 12px 11px;border:1px solid color-mix(in srgb,var(--color-bg-card) 92%,transparent);border-radius:14px;background:color-mix(in srgb,var(--color-bg-card) 98%,transparent);box-shadow:0 10px 24px color-mix(in srgb,var(--color-secondary) 12%,transparent);backdrop-filter:blur(16px);-webkit-backdrop-filter:blur(16px)}.wedding-theme.dolce .event-dot{box-shadow:0 0 0 5px color-mix(in srgb,var(--color-bg-card) 82%,transparent);transform-origin:center}.wedding-theme.dolce .event-description{font-size:13px;line-height:1.35}.wedding-theme.dolce .event h3{font-size:20px;margin-bottom:4px}.wedding-theme.dolce .event-time{margin-bottom:5px}.wedding-theme.dolce .event-stamp{height:60px;padding:12px 9px}.wedding-theme.dolce .dress-section{background:transparent}.wedding-theme.dolce .dress-section>p:not(.eyebrow),.wedding-theme.dolce .gallery-section>p:not(.eyebrow),.wedding-theme.dolce .rsvp-section>p:not(.eyebrow){font-size:15px}.wedding-theme.dolce .video-section{background:transparent}.wedding-theme.dolce .video-card{border:8px solid #fff;box-shadow:0 10px 30px #7a9aaa20}.wedding-theme.dolce .gallery-section{padding-left:0;padding-right:0;background:transparent}.gallery-section>h2,.gallery-section>p{margin-left:30px;margin-right:30px}.memory-rail{display:flex;gap:18px;width:100%;overflow-x:auto;padding:22px 35px 28px;scroll-padding-inline:35px;scroll-snap-type:x mandatory;scrollbar-width:thin;scrollbar-color:#b8d0da transparent;overscroll-behavior-x:contain}.memory-card{flex:0 0 76%;min-width:0;scroll-snap-align:center;background:#fff;padding:10px 10px 19px;border:0;box-shadow:0 8px 22px #7a9aaa20;color:var(--color-primary);border-radius:2px}.memory-card:nth-child(2n){rotate:1.5deg}.memory-card img,.memory-placeholder>div{width:100%;aspect-ratio:3 / 4;object-fit:cover}.memory-card>span{display:block;font-size:15px;margin-top:14px}.memory-placeholder>div{background:linear-gradient(145deg,#e6eff3,#f9faf5);display:grid;place-items:center;position:relative}.memory-placeholder .rose-cluster{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%;opacity:.32}.memory-placeholder .signature{font-size:55px;z-index:1}.memory-controls{display:flex;align-items:center;justify-content:space-between;gap:12px;margin:17px 25px 0}.memory-controls button{flex-shrink:0;width:44px;height:44px;border:1px solid #bed0d8;border-radius:50%;color:var(--color-primary);background:#fff}.memory-controls button:disabled{cursor:default;opacity:.3}.wedding-theme.dolce .memory-controls p{font-size:13px;font-style:italic;margin:0}.wedding-theme.dolce .rsvp-section{background:transparent}.wedding-theme.dolce .rsvp-section>.eyebrow:first-child{display:inline-block;max-width:100%;padding:10px 16px;border-block:1px solid color-mix(in srgb,var(--color-accent) 45%,transparent);border-radius:12px;background:color-mix(in srgb,var(--color-bg-card) 85%,transparent);color:color-mix(in srgb,var(--color-primary) 75%,var(--color-text));font-size:14px;font-weight:600;line-height:1.8;letter-spacing:1.6px;box-shadow:0 6px 24px color-mix(in srgb,var(--color-accent) 12%,transparent)}.wedding-theme.dolce footer{background:transparent;padding-top:56px;padding-bottom:0}.wedding-theme.dolce footer .closing-message{font-family:var(--script);font-size:clamp(38px,9vw,44px);line-height:1.35;margin:0 0 12px;color:color-mix(in srgb,var(--color-primary) 75%,var(--color-text));text-shadow:0 1px 0 var(--color-bg-card),0 3px 18px color-mix(in srgb,var(--color-accent) 25%,transparent)}.wedding-theme.dolce footer .signature{font-size:clamp(42px,11vw,50px);line-height:1.2;color:var(--color-primary);margin:0 0 20px}.wedding-theme.dolce footer .eyebrow{max-width:290px;margin:0 auto;font-size:12px;font-weight:600;line-height:1.9;letter-spacing:1.2px;color:color-mix(in srgb,var(--color-primary) 65%,var(--color-text))}.closing-heart{display:block;font-size:36px;color:var(--color-secondary);margin:20px 0 0}.closing-photo{display:block;width:100%;height:auto;border-radius:0 0 28px 28px;margin:0 auto;-webkit-mask-image:linear-gradient(to bottom,transparent,black 18%);mask-image:linear-gradient(to bottom,transparent,black 18%)}.dolce .invitation-intro{position:fixed;top:-2px;right:0;bottom:-420px;left:0;z-index:100;width:100vw;min-height:calc(100vh + 420px);min-height:calc(100svh + 420px);min-height:calc(100dvh + 420px);min-height:calc(100lvh + 420px);overflow:hidden;background:linear-gradient(130deg,#fffaf2,#f6efe5 62%,#fffdf8);perspective:1400px}.dolce .invitation-intro:before{content:"";position:fixed;top:-8px;right:-8px;bottom:-420px;left:-8px;z-index:0;pointer-events:none;background:linear-gradient(130deg,#fffaf2,#f6efe5 62%,#fffdf8)}.opening-envelope{position:absolute;top:0;right:0;bottom:auto;left:0;z-index:1;display:block;width:100%;height:100vh;height:100svh;height:100dvh;border:0;padding:0;overflow:hidden;background:transparent;cursor:pointer;touch-action:manipulation;perspective:1400px}.opening-envelope:focus-visible{outline:2px solid var(--color-accent);outline-offset:-8px}.envelope-floral-bed{position:absolute;top:0;right:0;bottom:0;left:0;z-index:1;overflow:hidden;pointer-events:none;background:linear-gradient(130deg,#fffaf2,#f6efe5 62%,#fffdf8);transition:opacity .35s ease}.envelope-floral-bed .bed-rose{position:absolute;width:min(390px,86vw);max-width:none;opacity:.18;transform:translateZ(0)}.envelope-floral-bed .bed-rose-top{top:4%;left:50%;translate:-50% 0;rotate:8deg}.envelope-floral-bed .bed-rose-middle{top:43%;left:50%;translate:-50% -50%;rotate:-18deg}.envelope-floral-bed .bed-rose-bottom{left:50%;bottom:3%;translate:-50% 0;rotate:188deg}.opening-envelope:after{content:"";position:absolute;top:0;right:0;bottom:0;left:0;z-index:4;pointer-events:none;background:linear-gradient(to top right,transparent 49.85%,#d6b98166 50%,transparent 50.15%),linear-gradient(to bottom right,transparent 49.85%,#d6b98166 50%,transparent 50.15%);transition:opacity .3s}.is-opening .opening-envelope:after{opacity:0}.paper-flap{position:absolute;top:-1px;right:-1px;bottom:-1px;left:-1px;overflow:hidden;background:linear-gradient(130deg,#fffaf2,#f6efe5 62%,#fffdf8);filter:drop-shadow(0 0 2px #c8aa7870);transition:transform 2s cubic-bezier(.45,0,.2,1)}.paper-flap:after{content:"";position:absolute;top:0;right:0;bottom:0;left:0;opacity:.1;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='160' height='160'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.7' numOctaves='3' stitchTiles='stitch' result='noise'/%3E%3CfeFlood flood-color='%23800000' result='color'/%3E%3CfeComposite operator='in' in='color' in2='noise'/%3E%3C/filter%3E%3Cpath d='M0 0h160v160H0z' filter='url(%23n)' opacity='.6'/%3E%3C/svg%3E")}.flap-top{clip-path:polygon(0 0,100% 0,50% 52%);transform-origin:top;z-index:4}.flap-bottom{clip-path:polygon(0 100%,50% 48%,100% 100%);transform-origin:bottom;z-index:3}.flap-left{clip-path:polygon(0 0,52% 50%,0 100%);transform-origin:left;z-index:2}.flap-right{clip-path:polygon(100% 0,48% 50%,100% 100%);transform-origin:right;z-index:2}.paper-flap .rose-cluster{position:absolute;width:min(290px,60vw);opacity:.17;pointer-events:none}.flap-top .rose-cluster{left:10%;top:5%;rotate:90deg}.flap-bottom .rose-cluster{right:10%;bottom:3%;rotate:-90deg}.flap-left .rose-cluster{left:-10%;top:40%}.flap-right .rose-cluster{right:-10%;top:40%}.opening-copy{position:absolute;top:calc(50vh - 65px);top:calc(50svh - 65px);top:calc(50dvh - 65px);left:10%;width:80%;z-index:5;display:flex;flex-direction:column;align-items:center;transition:opacity .3s,transform .4s}.dolce .opening-copy .wax-seal{width:104px;height:104px;background:radial-gradient(circle at 35% 25%,#f2c9cf,#8f2435 60%,#54101d);border-color:#9b3243;color:#f4dfaa;text-shadow:0 1px 1px #54101d99;box-shadow:inset 0 0 0 3px #d98a98,0 6px 12px #54101d33;font-size:39px}.opening-hint{font-family:var(--serif);font-size:24px;margin-top:20px;color:var(--color-primary)}.opening-prompt{font-family:var(--sans);font-size:13px;font-style:italic;margin-top:9px;color:var(--color-secondary)}.opening-glow{position:absolute;top:-30%;right:-30%;bottom:-30%;left:-30%;z-index:6;background:radial-gradient(ellipse,#fffdf0,transparent 60%);opacity:0;pointer-events:none}.opening-clouds{top:40%;height:45%;opacity:0;z-index:7}.is-opening .flap-top{transform:rotateX(105deg) translateY(-12%)}.is-opening .flap-bottom{transform:rotateX(-100deg) translateY(12%)}.is-opening .flap-left{transform:rotateY(-105deg) translate(-12%)}.is-opening .flap-right{transform:rotateY(105deg) translate(12%)}.is-opening .opening-copy{opacity:0;transform:scale(1.14)}.is-opening .opening-glow{animation:opening-light 1.2s .25s both}.is-opening .opening-clouds{animation:clouds-part 1.2s .35s both}@keyframes opening-light{0%,to{opacity:0}30%{opacity:.8}}@keyframes clouds-part{0%{opacity:0;transform:scale(.7)}35%{opacity:.9}to{opacity:0;transform:scale(2.2) translateY(60%)}}@media(prefers-reduced-motion:no-preference){.mist-blob-one{animation:mist-drift-one 42s ease-in-out infinite alternate}.mist-blob-two{animation:mist-drift-two 56s ease-in-out infinite alternate-reverse}.mist-blob-three{animation:mist-drift-three 48s ease-in-out infinite alternate}.dolce .hero-scenery{animation:scenic-breathe 24s ease-in-out infinite alternate}.dolce .cloud-front{animation:cloud-flow 16s ease-in-out infinite alternate}.dolce .cloud-back{animation:cloud-flow 22s ease-in-out infinite alternate-reverse}.dolce .section>.floral-corners{animation:botanical-sway 12s ease-in-out infinite alternate}@keyframes scenic-breathe{0%{transform:scale(1)}to{transform:scale(1.035)}}@keyframes mist-drift-one{0%{transform:translate3d(-3%,-1%,0) scale(1)}to{transform:translate3d(9%,7%,0) scale(1.08)}}@keyframes mist-drift-two{0%{transform:translate3d(4%,2%,0) scale(1.02)}to{transform:translate3d(-8%,9%,0) scale(.96)}}@keyframes mist-drift-three{0%{transform:translate3d(-2%,4%,0) scale(.98)}to{transform:translate3d(8%,-5%,0) scale(1.06)}}@keyframes schedule-cloud-float-left{0%{translate:0 0;rotate:-1deg}to{translate:18px 12px;rotate:1deg}}@keyframes schedule-cloud-float-right{0%{translate:0 4px;rotate:1deg}to{translate:-16px -10px;rotate:-1deg}}@keyframes cloud-flow{0%{translate:-3% 0}to{translate:4% 6px}}@keyframes botanical-sway{0%{translate:0 -3px}to{translate:2px 4px}}}@media(min-width:600px){.dolce .opening-envelope{max-width:480px;margin:0 auto}}@media(max-width:350px){.wedding-theme.dolce h1{font-size:43px;column-gap:4px}.wedding-theme.dolce .hero{min-height:740px}}.story-video-card{cursor:pointer;isolation:isolate}.story-video-card video{display:block;background:color-mix(in srgb,var(--color-secondary) 14%,var(--color-bg-card))}.story-video-card:after{content:"";position:absolute;top:0;right:0;bottom:0;left:0;z-index:1;background:radial-gradient(circle at 50% 50%,transparent 0 24%,rgba(44,24,16,.16) 100%);opacity:.78;pointer-events:none;transition:opacity .22s ease}.story-video-card.is-playing:after{opacity:0}.story-play-button{position:absolute;left:50%;top:50%;z-index:2;display:grid;place-items:center;width:74px;height:74px;border:1px solid color-mix(in srgb,var(--color-bg-card) 82%,transparent);border-radius:999px;background:color-mix(in srgb,var(--color-bg-card) 86%,transparent);color:var(--color-primary);box-shadow:0 14px 34px color-mix(in srgb,var(--color-secondary) 22%,transparent);transform:translate(-50%,-50%) scale(1);transition:opacity .22s ease,transform .22s ease,background .22s ease;backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px)}.story-play-button span{display:inline-block;margin-left:4px;font-size:28px;line-height:1}.story-video-card.is-playing .story-play-button{opacity:0;pointer-events:none;transform:translate(-50%,-50%) scale(.9)}.story-video-card:hover .story-play-button,.story-video-card:focus-within .story-play-button{transform:translate(-50%,-50%) scale(1.06);background:color-mix(in srgb,var(--color-bg-card) 94%,transparent)}.story-fullscreen-button{position:absolute;right:14px;bottom:14px;z-index:3;display:grid;place-items:center;width:44px;height:44px;border:1px solid color-mix(in srgb,var(--color-bg-card) 72%,transparent);border-radius:999px;background:color-mix(in srgb,var(--color-bg-card) 80%,transparent);color:var(--color-primary);box-shadow:0 10px 22px color-mix(in srgb,var(--color-secondary) 18%,transparent);backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px);transition:transform .18s ease,background .18s ease}.story-fullscreen-button span{font-size:22px;line-height:1}.story-fullscreen-button:hover,.story-fullscreen-button:focus-visible{transform:scale(1.06);background:color-mix(in srgb,var(--color-bg-card) 94%,transparent)}.story-video-card.is-playing .story-fullscreen-button{opacity:0;pointer-events:none;transform:scale(.9)}.staged-intro .paper-flap{transition:transform 1.2s cubic-bezier(.45,0,.2,1)}.wedding-theme.dolce .staged-intro{background:none}.wedding-theme.dolce .staged-intro:before{content:"";position:absolute;top:0;right:0;bottom:0;left:0;z-index:-1;background:color-mix(in srgb,var(--color-accent) 18%,var(--color-bg-card));transition:opacity .8s ease}.wedding-theme.dolce .staged-intro.is-opening:before{opacity:0}@keyframes staged-bloom{0%{opacity:0;transform:scale(.1)}35%{opacity:.4}to{opacity:0;transform:scale(1.8)}}.wedding-theme.dolce .staged-intro.is-opening .envelope-floral-bed{opacity:0;transition:opacity .3s ease}.wedding-theme.dolce .staged-intro .paper-flap{transition:transform 1.1s cubic-bezier(.45,0,.2,1)}.wedding-theme.dolce .staged-intro.is-opening .paper-flap{opacity:0;transition:transform 1.1s cubic-bezier(.45,0,.2,1),opacity .4s ease .55s}.wedding-theme.dolce[data-hero-visible=false]{background:#f6efe5}.dolce .invitation{transition:opacity .5s ease}.dolce[data-hero-visible=false] .invitation,.dolce[data-hero-visible=false] .ambient-mist{opacity:0}.wedding-theme.dolce .hero{isolation:isolate}.wedding-theme.dolce .hero-scenery{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%;object-fit:cover;z-index:0;animation:none;transform:none}.wedding-theme.dolce .hero-background,.wedding-theme.dolce .hero-video-shade{z-index:1}.wedding-theme.dolce .hero-frame,.wedding-theme.dolce .hero>.eyebrow{z-index:2}.wedding-theme.dolce .hero-frame,.wedding-theme.dolce .hero>.eyebrow,.wedding-theme.dolce .hero .scroll-hint{transition:opacity .4s ease}.dolce[data-hero-visible=false] .hero-frame,.dolce[data-hero-visible=false] .hero>.eyebrow,.dolce[data-hero-visible=false] .hero .scroll-hint{opacity:0}.dolce[data-hero-visible=true] .hero-frame,.dolce[data-hero-visible=true] .hero>.eyebrow,.dolce[data-hero-visible=true] .hero .scroll-hint{opacity:1}.staged-intro .paper-flap{transition:transform 2s cubic-bezier(.45,0,.2,1);backface-visibility:hidden}.staged-intro .opening-copy{transition:opacity .2s .3s,transform .2s .3s}.staged-intro.is-opening .opening-copy{opacity:0;transform:scale(.88)}.staged-intro .opening-glow{top:-50%;right:-50%;bottom:-50%;left:-50%;background:radial-gradient(ellipse,#fffdf4d9 0%,#fffdf47a 15%,transparent 60%);filter:blur(35px);transform:scale(0)}.staged-intro.is-opening .opening-glow{animation:staged-bloom .5s .35s both}@keyframes staged-bloom{0%{opacity:0;transform:scale(.1)}35%{opacity:.8}to{opacity:0;transform:scale(1.8)}}.transition-petal{position:fixed;width:15px;height:22px;pointer-events:none;z-index:110;fill:var(--color-accent)}.transition-petal.petal-kind-1{fill:var(--color-secondary)}.petal-vein{stroke:var(--color-bg-card);stroke-width:.8;fill:none}.scratch-surface{position:absolute;top:0;right:0;bottom:0;left:0;z-index:2;touch-action:none;transition:opacity .45s ease,transform .45s ease;transform-origin:center;cursor:crosshair}.scratch-surface:focus-visible{outline:2px solid var(--color-primary);outline-offset:-4px}.scratch-surface .scratch-canvas{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%;pointer-events:none;transition:none}.revealed .scratch-surface{opacity:0;transform:scale(1.035);pointer-events:none}.revealed .scratch-surface .scratch-canvas{opacity:1}.scratch-no-canvas{position:absolute;top:0;right:0;bottom:0;left:0;display:grid;place-items:center;background:linear-gradient(130deg,var(--color-accent),var(--color-bg-card),var(--color-secondary));color:var(--color-primary);font-size:15px}.scratch-reduced{transition:opacity .15s}.revealed .scratch-reduced{transform:none}.date-caption:empty{display:none}.map-frame{position:relative;width:100%;min-height:260px;margin:24px 0;background:var(--color-bg-card);border:1px solid var(--line);border-radius:14px;overflow:hidden}.wedding-theme.dolce .map-frame .venue-map{display:block;width:100%;height:260px;min-height:260px;margin:0;border:0}.map-status{position:absolute;top:0;right:0;bottom:0;left:0;display:flex;align-items:center;justify-content:center;flex-direction:column;padding:24px;text-align:center}.map-status a{display:inline-flex;min-height:44px;align-items:center}.map-loading iframe,.map-error iframe{opacity:0}.map-error iframe{pointer-events:none}.wedding-theme.dolce .rsvp-seal{width:116px;height:116px;margin:25px auto;font-family:var(--serif);font-size:29px;font-weight:600;letter-spacing:2px;background:var(--color-primary);color:#f4dfaa;border-color:var(--color-accent);box-shadow:0 8px 22px color-mix(in srgb,var(--color-primary) 35%,transparent),inset 0 0 0 3px var(--color-accent)}.modal-backdrop{will-change:opacity,backdrop-filter}@media(prefers-reduced-motion:no-preference){.wedding-theme.dolce .rsvp-seal{animation:rsvp-invitation-pulse 3s ease-in-out infinite}@keyframes rsvp-invitation-pulse{50%{box-shadow:0 9px 30px color-mix(in srgb,var(--color-primary) 48%,transparent),inset 0 0 0 3px var(--color-accent)}}}
