:root{--olive:var(--color-olive);--sand:var(--color-sand);--amber:var(--color-amber);--burgundy:var(--color-burgundy);--cream:var(--color-cream);--charcoal:var(--color-charcoal);--ivory:var(--color-ivory);--forest:var(--color-forest);--gold:var(--color-gold);--font-headline:var(--font-heading);--font-accent:var(--font-label)}*,:before,:after{box-sizing:border-box;margin:0;padding:0}html{-webkit-text-size-adjust:100%;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;overflow-x:hidden}body{background-color:var(--cream);color:var(--charcoal);font-family:var(--font-body);letter-spacing:.01em;min-height:100dvh;font-weight:300;line-height:1.65;overflow:hidden}body.scrollable{overflow:hidden auto}::selection{color:var(--charcoal);background:#e7c69d80}.sr-only{clip:rect(0, 0, 0, 0);white-space:nowrap;border-width:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}img{max-width:100%;display:block}button{cursor:pointer;font:inherit;background:0 0;border:none}input{font:inherit}:focus{outline:none}:focus-visible{outline:1px solid var(--olive);outline-offset:4px}.texture-overlay{pointer-events:none;z-index:100;opacity:.035;background-image:url("data:image/svg+xml,%3Csvg viewBox='0 0 256 256' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.85' numOctaves='3' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E");position:fixed;inset:0}.linen-bg{background-color:var(--cream);background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 200 200'%3E%3Cfilter id='l'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.01 0.4' numOctaves='2' result='a'/%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.4 0.01' numOctaves='2' result='b'/%3E%3CfeBlend mode='multiply' in='a' in2='b' result='c'/%3E%3CfeColorMatrix type='matrix' values='1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 0.05 0'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23l)'/%3E%3C/svg%3E")}#envelope-screen{z-index:50;flex-direction:column;justify-content:center;align-items:center;display:flex;position:fixed;inset:0;overflow:hidden}.envelope-noise{opacity:.08;mix-blend-mode:multiply;pointer-events:none;background-image:url("data:image/svg+xml,%3Csvg viewBox='0 0 256 256' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.85' numOctaves='3' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E");position:absolute;inset:0}.envelope-content{z-index:10;flex-direction:column;align-items:center;width:100%;max-width:420px;padding:0 24px;display:flex;position:relative}.header-text{text-align:center;margin-bottom:48px}.header-label{font-family:var(--font-accent);color:var(--olive);text-transform:uppercase;letter-spacing:.25em;margin-bottom:24px;font-size:12px;font-weight:300;line-height:1.4}.header-names{font-family:var(--font-headline);color:var(--charcoal);letter-spacing:-.02em;font-size:56px;font-weight:300;line-height:1}.header-names em{color:var(--amber);font-style:italic}.envelope-wrapper{aspect-ratio:3/2;perspective:800px;width:100%;max-width:320px;margin-bottom:64px;position:relative}.env-botanical-left{width:128px;height:128px;color:var(--sand);opacity:.8;pointer-events:none;position:absolute;top:-40px;left:-48px;transform:rotate(-12deg)}.env-botanical-right{width:96px;height:96px;color:var(--sand);opacity:.8;pointer-events:none;position:absolute;bottom:-32px;right:-40px;transform:rotate(120deg)}.envelope-back{background:var(--cream);background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 200 200'%3E%3Cfilter id='l'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.01 0.4' numOctaves='2' result='a'/%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.4 0.01' numOctaves='2' result='b'/%3E%3CfeBlend mode='multiply' in='a' in2='b' result='c'/%3E%3CfeColorMatrix type='matrix' values='1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 0.06 0'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23l)'/%3E%3C/svg%3E");border-radius:2px;position:absolute;inset:0}.envelope-stamp{z-index:15;opacity:.82;pointer-events:none;mix-blend-mode:multiply;width:60px;height:60px;position:absolute;top:8px;right:12px;transform:rotate(15deg)}.envelope-interior{background:var(--ivory);opacity:0;border-radius:2px;position:absolute;inset:0}.envelope-flaps{border-radius:2px;width:100%;height:100%;position:absolute;inset:0;overflow:hidden}.envelope-top-flap{transform-origin:top;width:100%;height:56.3%;transform-style:preserve-3d;will-change:transform;position:absolute;top:0;left:0}.flap-front,.flap-back{backface-visibility:hidden;width:100%;height:100%;position:absolute;inset:0}.flap-back{transform:rotateX(180deg)}.wax-seal{z-index:20;cursor:pointer;-webkit-tap-highlight-color:transparent;width:112px;height:112px;transform-style:preserve-3d;will-change:transform, opacity, filter;background:0 0;border:none;padding:0;position:absolute;top:calc(56.3% - 2px);left:50%;transform:translate(-50%,-50%)}.wax-seal:before{content:"";pointer-events:none;background:radial-gradient(circle,#0000 38%,#7949000a 58%,#0000 73%);border-radius:50%;position:absolute;inset:-12%}.seal-svg{z-index:1;object-fit:contain;filter:drop-shadow(0 2px 4px #0003)drop-shadow(0 4px 8px #00000026)drop-shadow(0 8px 16px #0000001a);border-radius:50%;width:100%;height:100%;position:relative}.seal-shimmer{pointer-events:none;z-index:2;background:radial-gradient(circle at 30% 30%,#ffd70014,#0000 60%) 0 0/200% 200%;border-radius:50%;animation:5s ease-in-out infinite sealShimmer;position:absolute;inset:0}.wax-residue{opacity:0;pointer-events:none;background:radial-gradient(circle,#7a2a2c1f 30%,#0000 70%);border-radius:50%;position:absolute;inset:5%}@keyframes sealShimmer{0%,to{background-position:15% 15%}50%{background-position:85% 85%}}.seal-glow-ring{pointer-events:none;z-index:0;opacity:.3;will-change:transform, opacity;background:radial-gradient(circle,#c5a25380 0%,#c5a2531a 60%,#0000 100%);border-radius:50%;position:absolute;inset:-10px;transform:scale(.9)}.particles-container{z-index:30;pointer-events:none;width:0;height:0;position:absolute;top:calc(56.3% - 2px);left:50%;transform:translate(-50%,-50%)}.cta-text{font-family:var(--font-accent);color:var(--olive);text-transform:uppercase;letter-spacing:.25em;opacity:.75;will-change:transform, opacity;font-size:12px;font-weight:300}.sound-toggle{z-index:60;-webkit-backdrop-filter:blur(8px);color:#5c710c99;background:#fffcf7cc;border:1px solid #5c710c33;border-radius:50%;justify-content:center;align-items:center;width:44px;height:44px;transition:color .3s;display:flex;position:fixed;top:24px;right:24px}.sound-toggle:hover{color:var(--olive)}.sound-toggle svg{width:16px;height:16px}#reveal-screen{will-change:background-color;flex-direction:column;align-items:center;min-height:auto;padding:80px 24px 40px;display:flex;position:relative;overflow:hidden}.card-stack{justify-content:center;width:100%;max-width:340px;height:480px;margin-top:20px;margin-bottom:40px;display:flex;position:relative}.envelope-base{background:var(--cream);border-radius:2px;width:300px;height:200px;position:absolute;bottom:20px;box-shadow:inset 0 2px 8px #7949000a,0 4px 16px #7949000d}.envelope-base-flap{width:100%;height:150px;position:absolute;bottom:100%;left:0}.botanical-left,.botanical-right{will-change:transform, opacity;pointer-events:none;position:absolute}.botanical-left{color:#2d4a1e99;opacity:0;width:128px;height:128px;bottom:70px;left:-40px;transform:translateY(50px)rotate(-25deg)}.botanical-right{color:#2d4a1e99;opacity:0;width:96px;height:96px;bottom:90px;right:-30px;transform:translateY(50px)rotate(30deg)}.photo-card{background:var(--cream);z-index:10;opacity:0;will-change:transform, opacity;border:1px solid #79490014;flex-direction:column;width:160px;padding:12px 12px 16px;display:flex;position:absolute;top:100px;left:50%;transform:translate(-50%)translateY(40px);box-shadow:0 2px 6px #7949000f,0 6px 20px #7949000d}.photo-placeholder{aspect-ratio:1;background:linear-gradient(155deg,#f5ede0 0%,#ede4d4 50%,#f0e8da 100%);justify-content:center;align-items:center;width:100%;margin-bottom:12px;display:flex;position:relative;overflow:hidden}.photo-placeholder svg{opacity:.08;width:60%;height:60%}.photo-placeholder:after{content:"";background-image:repeating-linear-gradient(-45deg,#0000,#0000 4px,#79490004 4px 5px);position:absolute;inset:0}.photo-caption{font-family:var(--font-headline);text-align:center;color:#3a3028cc;margin-top:2px;font-size:18px;font-style:italic;font-weight:300}.date-card{background:var(--cream);z-index:20;opacity:0;will-change:transform, opacity;border:1px solid #fffcf7cc;border-radius:2px;justify-content:center;align-items:center;width:256px;height:128px;display:flex;position:absolute;top:120px;left:50%;overflow:hidden;transform:translate(-50%)translateY(30px)scale(.95);box-shadow:0 4px 12px #7949000d,0 12px 32px #79490012}.date-card:before,.date-card:after{content:"";background:var(--cream);border-radius:50%;width:20px;height:20px;position:absolute;top:50%;transform:translateY(-50%);box-shadow:inset 0 1px 3px #00000014}.date-card:before{left:-10px}.date-card:after{right:-10px}.date-card-inner{width:88%;height:80%;color:var(--olive);border:1px solid #5c710c4d;border-radius:2px;flex-direction:column;justify-content:center;align-items:center;display:flex}.date-card-label{font-family:var(--font-accent);letter-spacing:.25em;text-transform:uppercase;font-size:10px;font-weight:300;line-height:1.4}.date-card-date{font-family:var(--font-detail);letter-spacing:.25em;margin-top:12px;font-size:24px;font-weight:400;line-height:1.6}.date-card-sub{font-family:var(--font-body);opacity:.9;margin-top:8px;font-size:14px;font-weight:300}.envelope-overlay{z-index:30;pointer-events:none;width:300px;height:200px;position:absolute;bottom:20px}.reveal-text{text-align:center;z-index:30;opacity:0;flex-direction:column;align-items:center;max-width:480px;margin:0 auto;display:flex;transform:translateY(15px)}.reveal-names{font-family:var(--font-headline);color:var(--charcoal);letter-spacing:-.02em;margin-bottom:32px;font-size:56px;font-weight:300;line-height:1}.reveal-names em{color:var(--amber);font-style:italic}.reveal-date{font-family:var(--font-detail);text-transform:uppercase;color:var(--charcoal);letter-spacing:.35em;margin-bottom:40px;font-size:14px;font-weight:400;line-height:1.6}.reveal-location{font-family:var(--font-headline);color:#3a3028b3;letter-spacing:.05em;margin-bottom:24px;font-size:20px;font-style:italic;font-weight:300}.reveal-twi{font-family:var(--font-accent);text-transform:uppercase;letter-spacing:.25em;color:#3a302873;margin-bottom:32px;font-size:13px;font-weight:300}.reveal-tagline{font-family:var(--font-body);color:#5c710ccc;letter-spacing:.03em;font-size:18px;font-style:italic;font-weight:300}#rsvp-section{background:var(--olive);border-top:1px solid #fffcf71a;padding:96px 24px;position:relative}.rsvp-content{max-width:560px;margin:0 auto}.rsvp-divider{align-items:center;gap:16px;margin-bottom:48px;display:flex}.rsvp-divider span{background:#fffcf733;flex:1;height:1px}.rsvp-divider h2{font-family:var(--font-accent);color:var(--cream);letter-spacing:.25em;text-transform:uppercase;font-size:20px;font-weight:300}.rsvp-heading{text-align:center;margin-bottom:64px}.rsvp-heading h3{font-family:var(--font-headline);color:var(--cream);letter-spacing:-.01em;margin-bottom:16px;font-size:32px;font-style:italic;font-weight:300;line-height:1.2}.rsvp-heading p{font-family:var(--font-body);color:#fffcf7e6;max-width:400px;margin:0 auto;font-size:18px;font-weight:300;line-height:1.65}.attendance-row{border-top:1px solid #fffcf71a;border-bottom:1px solid #fffcf71a;flex-wrap:wrap;justify-content:center;gap:16px;margin-bottom:56px;padding:28px 0;display:flex}.attendance-btn{color:#fffcf7b3;min-height:44px;font-family:var(--font-accent);letter-spacing:.2em;text-transform:uppercase;border:1px solid #fffcf74d;border-radius:2px;padding:14px 20px;font-size:11px;font-weight:400;line-height:1;transition:all .3s}.attendance-btn:hover{background:#fffcf714;border-color:#fffcf799}.attendance-btn.active-accept{border-color:var(--cream);background:var(--cream);color:var(--olive)}.attendance-btn.active-unsure{border-color:var(--sand);background:var(--sand);color:var(--charcoal)}.attendance-btn.active-decline{border-color:var(--amber);background:var(--amber);color:var(--cream)}.form-fields{flex-direction:column;gap:48px;display:flex}.field-group label{font-family:var(--font-accent);letter-spacing:.25em;text-transform:uppercase;color:#fffcf7d9;margin-bottom:12px;font-size:10px;font-weight:300;display:block}.field-group input{width:100%;color:var(--cream);font-size:20px;font-family:var(--font-headline);-webkit-appearance:none;background:0 0;border:none;border-bottom:1px solid #fffcf759;border-radius:0;outline:none;padding:8px 0;font-weight:300;transition:border-color .3s}.field-group input::placeholder{color:#fffcf766;font-family:var(--font-body);font-size:16px}.field-group input:focus{border-bottom-color:var(--cream);background:#fffcf70d}.field-group input[type=email],.field-group input[type=tel]{font-family:var(--font-body);font-size:18px}.submit-btn{border:1px solid var(--cream);width:100%;max-width:320px;color:var(--cream);font-family:var(--font-accent);letter-spacing:.25em;text-transform:uppercase;background:0 0;border-radius:2px;margin:48px auto 0;padding:16px;font-size:12px;font-weight:400;line-height:1;transition:all .3s;display:block}.submit-btn:hover{background:var(--cream);color:var(--olive)}.field-error{font-family:var(--font-body);color:var(--sand);opacity:0;max-height:0;margin-top:6px;font-size:12px;transition:opacity .25s,max-height .25s;overflow:hidden}.field-error.visible{opacity:1;max-height:40px}#attendance-error{text-align:center;margin-top:8px}#submit-error{text-align:center;margin-top:16px}.field-group input.has-error{border-bottom-color:var(--sand)}.submit-btn .spinner{border:1.5px solid #fffcf74d;border-top-color:var(--cream);vertical-align:middle;border-radius:50%;width:14px;height:14px;margin-right:8px;animation:.6s linear infinite spin;display:inline-block}.submit-btn:hover .spinner{border-top-color:var(--olive);border-color:#5c710c4d}@keyframes spin{to{transform:rotate(360deg)}}.twi-translation{font-family:var(--font-accent);letter-spacing:.2em;text-transform:uppercase;color:#fffcf780;margin-top:4px;margin-bottom:20px;font-size:11px;font-weight:300}.sincerely{text-align:center;margin-top:72px}.sincerely-label{font-family:var(--font-accent);letter-spacing:.25em;text-transform:uppercase;color:#fffcf7b3;margin-bottom:24px;font-size:10px;font-weight:300}.sincerely-names{font-family:var(--font-headline);color:var(--cream);letter-spacing:-.02em;margin-bottom:24px;font-size:48px;font-weight:300;line-height:1}.sincerely-names em{color:var(--amber);font-style:italic}.sincerely-date{font-family:var(--font-detail);letter-spacing:.35em;color:#fffcf7b3;font-size:14px;font-weight:400}.thank-you{text-align:center;padding:128px 0;display:none}.thank-you.visible{display:block}.thank-you h3{font-family:var(--font-headline);color:var(--sand);letter-spacing:.02em;margin-bottom:24px;font-size:56px;font-style:italic;font-weight:300}.thank-you p{font-family:var(--font-body);color:#fffcf7cc;margin-bottom:64px;font-size:20px;font-weight:300}.thank-you-footer{flex-direction:column;align-items:center;gap:24px;display:flex}.thank-you-footer .divider-line{background:#79490066;width:48px;height:1px}.thank-you-footer .footer-label{font-family:var(--font-accent);letter-spacing:.25em;text-transform:uppercase;color:#fffcf7b3;font-size:10px;font-weight:300}.ohene-footer{flex-direction:column;align-items:center;gap:24px;margin-top:72px;display:flex}.ohene-footer .footer-label,.thank-you-footer .footer-label{font-family:var(--font-accent);letter-spacing:.25em;text-transform:uppercase;color:#fffcf7b3;font-size:10px;font-weight:300}.ohene-footer .footer-label strong,.thank-you-footer .footer-label strong{font-weight:400}.ohene-footer .divider-line{background:#79490066;width:48px;height:1px}.footer-hashtag{font-family:var(--font-accent);letter-spacing:.15em;color:var(--gold);margin-top:-4px;font-size:13px;font-weight:400}.submit-btn:disabled{opacity:.6;cursor:not-allowed}.rsvp-form-wrapper{display:block}.rsvp-form-wrapper.hidden{display:none}.scroll-indicator{opacity:0;z-index:30;flex-direction:column;align-items:center;gap:4px;margin-top:32px;display:flex}.scroll-indicator-text{font-family:var(--font-accent);color:var(--olive);text-transform:uppercase;letter-spacing:.25em;opacity:.7;font-size:10px;font-weight:300}.scroll-indicator-chevron{width:20px;height:20px;color:var(--olive);opacity:.6}.mobile-scroll-indicator{z-index:40;-webkit-backdrop-filter:blur(8px);opacity:0;background:#fffcf799;border:1px solid #7949001f;border-radius:24px;flex-direction:column;align-items:center;gap:4px;padding:12px 20px;display:flex;position:fixed;bottom:32px;left:50%;transform:translate(-50%)}.mobile-scroll-label{font-family:var(--font-accent);color:var(--olive);text-transform:uppercase;letter-spacing:.25em;opacity:.7;font-size:9px;font-weight:300}.mobile-scroll-chevron{width:18px;height:18px;color:var(--olive);opacity:.6}@media (min-width:768px){.header-names,.reveal-names{font-size:72px}.reveal-date{font-size:16px}.reveal-location{font-size:22px}.date-card{width:320px;height:148px}.date-card-date{letter-spacing:.35em;font-size:32px}.rsvp-heading h3{font-size:40px}.header-label,.date-card-label,.field-group label,.cta-text{font-size:13px}.mobile-scroll-indicator{display:none}}@media (max-width:480px){#rsvp-section{padding:56px 20px}.attendance-row{flex-direction:column;align-items:center;gap:12px;padding:24px 0}.attendance-btn{text-align:center;width:100%;max-width:240px}.form-fields{gap:32px}.sincerely{margin-top:56px}.env-botanical-left{width:96px;height:96px;left:-24px}.env-botanical-right{width:72px;height:72px;right:-20px}}@media (prefers-reduced-motion:reduce){#envelope-screen{display:none!important}.seal-shimmer,.seal-glow-ring{animation:none!important}.botanical-left,.botanical-right,.photo-card,.date-card,.reveal-text,.reveal-twi{opacity:1!important;transform:none!important}body{overflow:hidden auto!important}.scroll-indicator{opacity:1!important}.scroll-indicator-chevron{animation:none!important}.mobile-scroll-indicator{opacity:1!important}.mobile-scroll-chevron{animation:none!important}}
