:root{--blush:#f6d8df;--blush-deep:#edb9c6;--ivory:#fffdf8;--gold:#b98f3e;--gold-text:#96702a;--gold-light:#d9bc7a;--rosewood:#5a3a40;--rosewood-soft:#84606650;--shadow:0 24px 60px -24px rgba(90,58,64,.35)}*{margin:0;padding:0;box-sizing:border-box}html{scroll-behavior:smooth}body{font-family:Cormorant Garamond,Georgia,serif;color:var(--rosewood);background:var(--ivory);overflow-x:hidden;font-size:19px;line-height:1.6}h1,h2,h3{font-weight:500}.script{font-family:Great Vibes,cursive;font-weight:400}#envelope-scene{position:fixed;inset:0;z-index:100;display:flex;align-items:center;justify-content:center;background:radial-gradient(ellipse at 20% 15%,#fbe9ed 0,transparent 55%),radial-gradient(ellipse at 80% 85%,#f3d3db 0,transparent 55%),linear-gradient(160deg,#fdf4f1,#f6dde3);transition:opacity .9s ease,visibility 0s linear .9s;perspective:1600px}#envelope-scene.opened{opacity:0;visibility:hidden}.envelope{position:relative;width:min(82vw,440px);aspect-ratio:460/310;margin-top:16vh;transform-style:preserve-3d;cursor:pointer;transition:transform .5s ease;filter:drop-shadow(0 30px 40px rgba(90,58,64,.25))}.envelope:hover{transform:translateY(-6px)}.env-back,.env-flap,.env-front{position:absolute;inset:0}.env-back{background:linear-gradient(180deg,#f4cbd5,#efbecb);border-radius:8px}.env-letter{position:absolute;left:5%;right:5%;top:6%;bottom:10%;background:var(--ivory);border:1px solid var(--gold-light);border-radius:4px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:.4em;transition:transform 1.05s cubic-bezier(.33,1,.68,1) .5s,box-shadow 1.05s ease .5s;padding:1em;text-align:center;z-index:1;will-change:transform}.env-letter .letter-text{opacity:0;transition:opacity .5s ease .95s}.env-letter .script{font-size:clamp(1.6rem,6vw,2.2rem);color:var(--gold-text)}.env-letter p{font-size:clamp(.8rem,2.8vw,1rem);letter-spacing:.14em}.env-front{background:linear-gradient(180deg,#f9dbe2,#f2c6d1);-webkit-clip-path:polygon(0 100%,100% 100%,100% 22%,50% 62%,0 22%);clip-path:polygon(0 100%,100% 100%,100% 22%,50% 62%,0 22%);border-radius:8px}.env-flap{background:linear-gradient(180deg,#f2c3cf,#efbcc9);-webkit-clip-path:polygon(0 0,100% 0,50% 52%);clip-path:polygon(0 0,100% 0,50% 52%);transform-origin:top center;transition:transform 1.1s cubic-bezier(.65,0,.35,1);border-radius:8px 8px 0 0;z-index:3;-webkit-backface-visibility:hidden;backface-visibility:hidden}.envelope.open .env-flap{transform:rotateX(178deg);z-index:0}.envelope.open .env-letter{transform:translateY(-78%) scale(1.04);z-index:5;box-shadow:0 22px 44px -18px rgba(90,58,64,.42)}.envelope.open .env-letter .letter-text{opacity:1}.seal{position:absolute;left:50%;top:46%;width:clamp(72px,20vw,96px);height:clamp(72px,20vw,96px);transform:translate(-50%,-50%);border-radius:50%;background:radial-gradient(circle at 32% 28%,#e3c98c,var(--gold) 55%,#8f6a25 100%);box-shadow:0 6px 16px rgba(90,58,64,.35),inset 0 2px 5px hsla(0,0%,100%,.5),inset 0 -4px 8px rgba(90,58,64,.3);display:flex;align-items:center;justify-content:center;z-index:4;transition:transform .55s cubic-bezier(.4,0,.2,1),opacity .45s ease-out}.seal span{font-family:Great Vibes,cursive;font-size:clamp(1.7rem,5.5vw,2.3rem);color:#fff8e7;text-shadow:0 1px 2px rgba(90,58,64,.5)}.envelope.open .seal{transform:translate(-50%,-50%) scale(.3) rotate(35deg);opacity:0}.tap-hint{position:absolute;bottom:-3.2em;left:50%;transform:translateX(-50%);width:100%;text-align:center;letter-spacing:.28em;font-size:.85rem;color:var(--rosewood);opacity:.75;animation:pulse 2.4s ease-in-out infinite;white-space:nowrap}@keyframes pulse{0%,to{opacity:.45}50%{opacity:.9}}.envelope.open .tap-hint{opacity:0;transition:opacity .3s ease}#skip-intro{position:absolute;bottom:1.4rem;right:1.6rem;background:none;border:none;color:var(--rosewood);opacity:.55;font-family:inherit;font-size:.95rem;letter-spacing:.12em;cursor:pointer;border-bottom:1px solid var(--rosewood-soft);padding-bottom:2px}#skip-intro:focus-visible,#skip-intro:hover{opacity:.9}#petals{position:fixed;inset:0;pointer-events:none;z-index:50}.petal{position:absolute;top:-6vh;width:14px;height:11px;background:radial-gradient(ellipse at 30% 30%,#fbe3e9,var(--blush-deep));border-radius:60% 40% 55% 45%/50% 60% 40% 50%;opacity:.85;animation:fall linear forwards}.petal.gold{background:radial-gradient(ellipse at 30% 30%,#f1dfaf,var(--gold-light));width:10px;height:9px}@keyframes fall{0%{transform:translateY(-6vh) translateX(0) rotate(0deg)}to{transform:translateY(108vh) translateX(var(--drift)) rotate(var(--spin));opacity:.15}}main{opacity:1}section{padding:clamp(4rem,10vw,7rem) clamp(1.25rem,6vw,3rem);max-width:1060px;margin:0 auto;text-align:center}#hero{min-height:100svh;display:flex;flex-direction:column;align-items:center;justify-content:center;position:relative;background:radial-gradient(ellipse at 15% 10%,#fbe9ed 0,transparent 50%),radial-gradient(ellipse at 85% 90%,#f6dce2 0,transparent 50%),var(--ivory);max-width:none}.hero-frame{border:1px solid var(--gold-light);outline:1px solid var(--gold-light);outline-offset:6px;padding:clamp(2.2rem,7vw,4.5rem) clamp(1.4rem,7vw,5rem);background:rgba(255,253,248,.92);-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px);max-width:820px}.eyebrow-invite{letter-spacing:.22em;line-height:1.9;font-size:clamp(.72rem,2.4vw,.95rem);margin-bottom:1.6em}.hero-names{font-size:clamp(3rem,11vw,6.2rem);line-height:1.15;color:var(--gold-text)}.hero-amp{display:block;font-size:.42em;color:var(--rosewood);opacity:.8;margin:.1em 0}.hero-date{margin-top:1.4em;font-size:clamp(1.05rem,3.4vw,1.5rem);letter-spacing:.22em}.hero-place{margin-top:.5em;font-size:clamp(.95rem,3vw,1.2rem);letter-spacing:.1em;font-style:italic}.hero-rule{width:110px;height:1px;background:var(--gold);margin:1.6em auto;position:relative}.hero-rule:after{content:"♥";top:50%;transform:translate(-50%,-52%);background:var(--ivory);padding:0 .55em;font-size:.75rem}.hero-rule:after,.scroll-cue{position:absolute;left:50%;color:var(--gold)}.scroll-cue{bottom:2rem;transform:translateX(-50%);font-size:1.5rem;animation:bob 2.2s ease-in-out infinite;text-decoration:none}@keyframes bob{0%,to{transform:translate(-50%)}50%{transform:translate(-50%,10px)}}#countdown{background:linear-gradient(180deg,var(--ivory),#fbeff1);max-width:none}.count-inner{max-width:760px;margin:0 auto}.count-grid{display:flex;justify-content:center;gap:clamp(.8rem,4vw,2.4rem);margin-top:2.2rem;flex-wrap:wrap}.count-cell{min-width:86px}.count-num{font-size:clamp(2.4rem,8vw,4rem);color:var(--gold-text);line-height:1;font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.count-label{letter-spacing:.24em;font-size:.8rem;margin-top:.5em}.section-title{font-size:clamp(2.1rem,7vw,3.2rem);color:var(--gold-text)}.section-sub{margin-top:.6em;font-style:italic;opacity:.85}#verse blockquote{font-size:clamp(1.35rem,4.5vw,2rem);font-style:italic;max-width:620px;margin:0 auto;line-height:1.5}#verse cite{display:block;margin-top:1.2em;font-style:normal;letter-spacing:.26em;font-size:.9rem;color:var(--gold-text)}#details{background:linear-gradient(180deg,#fbeff1,var(--ivory));max-width:none}.details-grid{max-width:960px;margin:2.8rem auto 0;display:grid;grid-template-columns:repeat(auto-fit,minmax(240px,1fr));grid-gap:1.2rem;gap:1.2rem}.detail-card{background:var(--ivory);border:1px solid var(--gold-light);padding:2.4rem 1.6rem;box-shadow:var(--shadow);transition:transform .35s cubic-bezier(.33,1,.68,1),box-shadow .35s ease,border-color .35s ease}.detail-card:focus-within,.detail-card:hover{transform:translateY(-10px) scale(1.03);box-shadow:0 30px 50px -18px rgba(90,58,64,.45);border-color:var(--gold)}.detail-card h3{font-size:1.5rem;color:var(--gold-text);margin-bottom:.6em}.detail-card p{font-size:1.05rem}.detail-card .fine{font-size:.92rem;font-style:italic;opacity:.8;margin-top:.5em}.map-link{display:inline-block;margin-top:1em;color:var(--rosewood);letter-spacing:.14em;font-size:.95rem;border-bottom:1px solid var(--gold);padding-bottom:2px;text-decoration:none}.map-link:hover{color:var(--gold)}.carousel{position:relative;max-width:520px;margin:2.8rem auto 0}.car-viewport{overflow:hidden;border:1px solid var(--gold-light);outline:1px solid var(--gold-light);outline-offset:5px;background:var(--blush);box-shadow:var(--shadow)}.car-track{display:flex;transition:transform .55s cubic-bezier(.5,.05,.3,1);touch-action:pan-y}.car-track figure{flex:0 0 100%;position:relative;aspect-ratio:4/5;overflow:hidden;margin:0}.car-track img{width:100%;height:100%;object-fit:cover;display:block;-webkit-user-select:none;-moz-user-select:none;user-select:none;-webkit-user-drag:none}.car-track figcaption{position:absolute;left:0;right:0;bottom:0;background:linear-gradient(transparent,rgba(90,58,64,.78));color:var(--ivory);font-style:italic;font-size:1.05rem;padding:2rem 1rem .8rem}.car-btn{position:absolute;top:50%;transform:translateY(-50%);width:44px;height:44px;border-radius:50%;background:rgba(255,253,248,.9);border:1px solid var(--gold-light);color:var(--gold-text);font-size:1.5rem;line-height:1;cursor:pointer;z-index:2;display:flex;align-items:center;justify-content:center;transition:background .2s ease,transform .2s ease;font-family:inherit}.car-btn:hover{background:var(--ivory);transform:translateY(-50%) scale(1.08)}.car-btn:focus-visible{outline:3px solid var(--gold);outline-offset:2px}.car-btn.prev{left:-14px}.car-btn.next{right:-14px}@media(max-width:600px){.car-btn.prev{left:6px}.car-btn.next{right:6px}}.car-dots{display:flex;justify-content:center;gap:.7rem;margin-top:1.4rem}.car-dot{width:10px;height:10px;border-radius:50%;border:1px solid var(--gold);background:transparent;cursor:pointer;padding:0;transition:background .25s ease,transform .25s ease}.car-dot[aria-current=true]{background:var(--gold);transform:scale(1.25)}.car-dot:focus-visible{outline:2px solid var(--rosewood);outline-offset:2px}#rsvp{background:linear-gradient(180deg,var(--ivory),#f8e4e9);max-width:none}.rsvp-card{max-width:560px;margin:2.6rem auto 0;opacity:.9;background:var(--ivory);border:1px solid var(--gold-light);padding:clamp(1.8rem,6vw,3rem);box-shadow:var(--shadow);text-align:left}.field{margin-bottom:1.3rem}.field label{display:block;letter-spacing:.18em;font-size:.85rem;margin-bottom:.45em}.field input,.field select,.field textarea{width:100%;padding:.75em .9em;font-family:inherit;font-size:1.05rem;color:var(--rosewood);background:#fffefb;border:1px solid var(--blush-deep);border-radius:2px}.field input:focus,.field select:focus,.field textarea:focus{outline:2px solid var(--gold);outline-offset:1px;border-color:var(--gold)}.field input.invalid,.field select.invalid,.field textarea.invalid{border-color:#b4444c}.field-error{display:none;margin-top:.4em;font-size:.88rem;font-style:italic;color:#b4444c}.field-error.show{display:block}.toggle-group{display:flex;gap:.7rem}.toggle-btn{flex:1 1;font-family:inherit;font-size:1rem;letter-spacing:.04em;color:var(--gold-text);background:#fffefb;border:1px solid var(--blush-deep);border-radius:2px;padding:.75em .9em;cursor:pointer;transition:background .2s ease,color .2s ease,border-color .2s ease,transform .15s ease}.toggle-btn:hover{border-color:var(--gold)}.toggle-btn:focus-visible{outline:2px solid var(--gold);outline-offset:1px}.toggle-btn.active{border-color:var(--gold);transform:translateY(-1px);box-shadow:0 8px 18px -10px rgba(185,143,62,.7)}.btn,.toggle-btn.active{background:linear-gradient(180deg,var(--gold-light),var(--gold));color:#fff8e7}.btn{display:inline-block;width:100%;border:none;border-radius:2px;font-family:inherit;font-size:1.15rem;letter-spacing:.2em;padding:.85em 1em;cursor:pointer;box-shadow:0 8px 20px -8px rgba(185,143,62,.6);transition:transform .2s ease,box-shadow .2s ease}.btn:hover{transform:translateY(-2px);box-shadow:0 12px 24px -8px rgba(185,143,62,.7)}.btn:focus-visible{outline:3px solid var(--rosewood);outline-offset:2px}#rsvp-success{display:none;text-align:center;padding:1rem 0}#rsvp-success .script{font-size:2.2rem;color:var(--gold-text)}footer{text-align:center;padding:3.5rem 1.5rem 4rem;background:linear-gradient(180deg,#f8e4e9,var(--blush))}footer .script{font-size:clamp(2rem,7vw,2.8rem);color:var(--gold-text)}footer p{margin-top:.6em;letter-spacing:.18em;font-size:.9rem}@media (prefers-reduced-motion:reduce){*,:after,:before{animation:none!important;transition-duration:.01ms!important}.scroll-cue{animation:none}}.thankyou-wrap{min-height:100svh;display:flex;align-items:center;justify-content:center;padding:1.5rem;background:radial-gradient(ellipse at 15% 10%,#fbe9ed 0,transparent 50%),radial-gradient(ellipse at 85% 90%,#f6dce2 0,transparent 50%),var(--ivory)}.thankyou-card{border:1px solid var(--gold-light);outline:1px solid var(--gold-light);outline-offset:6px;background:rgba(255,253,248,.92);padding:clamp(2.4rem,8vw,4.5rem) clamp(1.6rem,7vw,4rem);max-width:560px;text-align:center}.thankyou-heart{font-size:1.4rem;color:var(--gold);margin-bottom:1.2rem;display:block}.thankyou-title{font-size:clamp(2.4rem,9vw,3.4rem);color:var(--gold-text)}.thankyou-card p{margin-top:1.2em;font-size:clamp(1.05rem,3.4vw,1.25rem)}.thankyou-fine{margin-top:1.8em;font-style:italic;opacity:.8;font-size:1rem}.thankyou-rule{width:100px;height:1px;background:var(--gold);margin:1.6em auto;position:relative}.thankyou-rule:after{content:"♥";position:absolute;left:50%;top:50%;transform:translate(-50%,-52%);background:var(--ivory);padding:0 .55em;color:var(--gold);font-size:.7rem}.back-link{display:inline-block;margin-top:2rem;color:var(--rosewood);letter-spacing:.14em;font-size:.9rem;text-decoration:none;border-bottom:1px solid var(--gold);padding-bottom:2px}.back-link:hover{color:var(--gold-text)}.notfound-wrap{min-height:100svh;display:flex;align-items:center;justify-content:center;padding:1.5rem;position:relative;overflow:hidden;background:radial-gradient(ellipse at 15% 10%,#fbe9ed 0,transparent 50%),radial-gradient(ellipse at 85% 90%,#f6dce2 0,transparent 50%),var(--ivory)}.notfound-card{border:1px solid var(--gold-light);outline:1px solid var(--gold-light);outline-offset:6px;background:rgba(255,253,248,.92);padding:clamp(2.4rem,8vw,4.5rem) clamp(1.6rem,7vw,4rem);max-width:560px;text-align:center;position:relative;z-index:1}.notfound-icon{display:inline-block;font-size:2.6rem;animation:wander 3.8s ease-in-out infinite}@keyframes wander{0%,to{transform:translate(0) rotate(-6deg)}50%{transform:translate(6px,-4px) rotate(6deg)}}.notfound-code{font-size:clamp(3.2rem,13vw,5.5rem);color:var(--gold-text);letter-spacing:.04em;line-height:1;margin-top:.3em}.notfound-title{font-size:clamp(2rem,7vw,2.6rem);color:var(--gold-text);margin-top:.15em}.notfound-card p{margin-top:1.1em;font-size:clamp(1.02rem,3.2vw,1.2rem)}