.sparkles{position:fixed;top:0;right:0;bottom:0;left:0;pointer-events:none;z-index:0;overflow:hidden}.sparkles--navy .sparkle{background:radial-gradient(circle,#f5f0e6 0%,#d4af37 45%,transparent 70%);box-shadow:0 0 6px #d4af3773}.sparkles--light .sparkle{background:radial-gradient(circle,rgba(212,175,55,.55) 0%,transparent 70%);box-shadow:0 0 4px #d4af3733}.sparkle{position:absolute;border-radius:50%;opacity:0;animation:twinkle ease-in-out infinite}@keyframes twinkle{0%,to{opacity:0;transform:scale(.5)}50%{opacity:var(--sparkle-opacity, .4);transform:scale(1.1)}}.envelope-screen{position:relative;z-index:1;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:1.75rem;min-height:100dvh;padding:2rem 1.5rem;background-color:#f4f1ec;background-image:url(/images/back.jfif);background-size:cover;background-position:center;background-repeat:no-repeat;overflow:hidden;transition:opacity .7s ease}.envelope-screen:before{content:"";position:absolute;top:0;right:0;bottom:0;left:0;background:#f4f1ec47;pointer-events:none}.envelope-screen.is-opening{opacity:0;pointer-events:none}.envelope-top-label{position:relative;z-index:1;font-family:var(--font-serif);font-size:clamp(.9rem,3.2vw,1.15rem);font-weight:600;letter-spacing:.18em;text-transform:uppercase;color:#4a5568;text-align:center}.envelope-top-label:before,.envelope-top-label:after{content:"❧";display:block;font-family:var(--font-script);font-size:.95rem;color:var(--gold);letter-spacing:0;text-transform:none;margin:.35rem auto;opacity:.85}.envelope{position:relative;z-index:1;-webkit-appearance:none;-moz-appearance:none;appearance:none;border:none;background:transparent;cursor:pointer;padding:0;width:min(300px,82vw);aspect-ratio:1.45 / 1;perspective:900px;filter:drop-shadow(0 4px 6px rgba(11,18,51,.08)) drop-shadow(0 14px 28px rgba(11,18,51,.16)) drop-shadow(0 28px 48px rgba(11,18,51,.1));transition:transform .4s ease,filter .4s ease}.envelope:hover,.envelope:focus-visible{outline:none;transform:translateY(-4px);filter:drop-shadow(0 6px 10px rgba(11,18,51,.1)) drop-shadow(0 18px 36px rgba(11,18,51,.18)) drop-shadow(0 36px 56px rgba(11,18,51,.12))}.envelope-pocket{position:absolute;top:0;right:0;bottom:0;left:0;background:linear-gradient(165deg,#fffcf8,#f7f3ec 55%,#efe9df);border:1px solid rgba(201,168,118,.28);box-shadow:inset 0 0 0 1px #ffffff80,0 1px 2px #0b12330f,0 10px 24px #0b12331f,0 22px 40px #0b123314;background-image:linear-gradient(115deg,transparent 58%,rgba(0,0,0,.03) 58%,rgba(0,0,0,.03) 100%),linear-gradient(-115deg,transparent 58%,rgba(0,0,0,.03) 58%,rgba(0,0,0,.03) 100%),linear-gradient(165deg,#fffcf8,#f7f3ec 55%,#efe9df)}.envelope-flap{position:absolute;top:0;left:0;right:0;height:58%;z-index:2;transform-origin:top center;transition:transform 1s cubic-bezier(.22,1,.36,1);filter:drop-shadow(0 6px 12px rgba(11,18,51,.12))}.envelope-flap.is-open{transform:rotateX(168deg)}.envelope-flap-face{position:relative;display:block;width:100%;height:100%;background:linear-gradient(180deg,#fffdf9,#f3eee6);clip-path:polygon(0 0,100% 0,50% 100%);border-top:1px solid rgba(201,168,118,.25)}.envelope-flap-face:after{content:"";position:absolute;left:50%;bottom:0;width:70%;height:10px;transform:translate(-50%);background:radial-gradient(circle at 10% 50%,rgba(201,168,118,.45) 1.5px,transparent 2px),radial-gradient(circle at 30% 50%,rgba(201,168,118,.45) 1.5px,transparent 2px),radial-gradient(circle at 50% 50%,rgba(201,168,118,.45) 1.5px,transparent 2px),radial-gradient(circle at 70% 50%,rgba(201,168,118,.45) 1.5px,transparent 2px),radial-gradient(circle at 90% 50%,rgba(201,168,118,.45) 1.5px,transparent 2px);background-size:20% 100%;opacity:.7;pointer-events:none}.wax-seal{position:absolute;left:50%;top:52%;z-index:3;transform:translate(-50%,-50%);width:78px;height:78px;display:grid;place-items:center;transition:transform .35s ease,opacity .4s ease;filter:drop-shadow(0 5px 12px rgba(11,18,51,.4))}.envelope:hover .wax-seal,.envelope:focus-visible .wax-seal{transform:translate(-50%,-50%) scale(1.06)}.wax-seal-blob{position:relative;width:100%;height:100%;border-radius:48% 52% 49% 51%/51% 48% 52% 49%;background:radial-gradient(circle at 32% 28%,#2a3558,#101b3d 40%,#0b1233 72%,#070c22);box-shadow:inset 0 3px 6px #b4bedc2e,inset 0 -6px 12px #00000080,inset 2px 2px 4px #ffffff0f,0 2px 4px #00000040}.wax-seal-blob:before{content:"";position:absolute;top:-4px;right:-4px;bottom:-4px;left:-4px;border-radius:46% 54% 48% 52%/54% 46%;background:radial-gradient(circle at 70% 80%,#0e1638 0%,transparent 42%),radial-gradient(circle at 20% 75%,#0e1638 0%,transparent 38%),radial-gradient(circle at 85% 35%,#1a2456 0%,transparent 35%);opacity:.9;z-index:-1}.wax-seal-imprint{position:absolute;top:11px;right:11px;bottom:11px;left:11px;border-radius:50%;display:grid;place-items:center;background:radial-gradient(circle at 40% 35%,#ffffff0a,#00000047);box-shadow:inset 0 2px 4px #0006,inset 0 -1px 2px #b4bedc1a,0 0 0 1.5px #d4af3766}.wax-seal-shine{position:absolute;top:10px;left:14px;width:22px;height:14px;border-radius:50%;background:radial-gradient(ellipse,rgba(200,210,240,.28) 0%,transparent 70%);pointer-events:none;z-index:2}.wax-seal-mono{position:relative;z-index:1;font-family:var(--font-script);font-size:1.2rem;color:var(--gold);line-height:1;text-shadow:0 1px 0 rgba(255,230,180,.35),0 -1px 1px rgba(0,0,0,.55)}.envelope-cta{position:relative;z-index:1;font-family:var(--font-serif);font-size:.85rem;font-style:italic;color:var(--ink-soft);letter-spacing:.04em}.is-opening .envelope{transform:scale(1.04);transition:transform 1s ease}.is-opening .wax-seal{opacity:0;transform:translate(-50%,-50%) scale(.85)}@media(min-width:768px){.envelope{width:min(360px,42vw)}.wax-seal{width:88px;height:88px}.wax-seal-mono{font-size:1.35rem}.wax-seal-imprint{top:13px;right:13px;bottom:13px;left:13px}}.countdown{display:flex;justify-content:center;align-items:flex-start;gap:.15rem;flex-wrap:wrap}.countdown-group{display:flex;align-items:flex-start}.countdown-unit{display:flex;flex-direction:column;align-items:center;min-width:52px;padding:.35rem .4rem}.countdown-value{font-family:var(--font-serif);font-size:clamp(1.5rem,5vw,1.85rem);font-weight:500;color:var(--navy);line-height:1.2;font-variant-numeric:tabular-nums}.countdown-label{margin-top:.2rem;font-family:var(--font-serif);font-size:.58rem;letter-spacing:.12em;text-transform:uppercase;color:var(--ink-faint)}.countdown-sep{font-family:var(--font-serif);font-size:1.4rem;color:var(--gold);opacity:.55;padding-top:.2rem}.countdown-done{padding:.75rem 1.25rem;font-family:var(--font-script);font-size:1.5rem;color:var(--navy)}.rsvp-form{display:flex;flex-direction:column;gap:1.35rem;width:100%;max-width:360px;margin:0 auto}.rsvp-fieldset{border:none}.rsvp-legend{width:100%;margin-bottom:.9rem;font-family:var(--font-sans);font-size:.62rem;font-weight:500;letter-spacing:.22em;text-transform:uppercase;color:var(--ink-faint);text-align:center}.rsvp-toggle{display:grid;grid-template-columns:1fr 1fr;gap:.65rem}.rsvp-option{position:relative;display:flex;align-items:center;justify-content:center;padding:.8rem .5rem;border:1px solid rgba(16,27,61,.16);background:transparent;color:var(--ink-soft);cursor:pointer;font-family:var(--font-serif);font-size:.82rem;letter-spacing:.02em;text-align:center;line-height:1.35;transition:border-color .35s ease,background .35s ease,color .35s ease}.rsvp-option input{position:absolute;opacity:0;pointer-events:none}.rsvp-option.is-active{border-color:var(--navy);color:var(--navy);background:#101b3d0a}.rsvp-option:hover{border-color:var(--navy)}.rsvp-field{display:flex;flex-direction:column;gap:.45rem;text-align:left}.rsvp-label{font-family:var(--font-sans);font-size:.58rem;font-weight:500;letter-spacing:.2em;text-transform:uppercase;color:var(--ink-faint)}.rsvp-input{width:100%;padding:.75rem 0;border:none;border-bottom:1px solid rgba(16,27,61,.2);background:transparent;color:var(--ink);font-family:var(--font-serif);font-size:1rem;outline:none;border-radius:0;transition:border-color .3s ease}.rsvp-input::placeholder{color:var(--ink-faint);font-style:italic}.rsvp-input:focus{border-bottom-color:var(--gold)}.rsvp-error{font-family:var(--font-serif);font-size:.8rem;color:#a04545;text-align:center}.rsvp-submit{-webkit-appearance:none;-moz-appearance:none;appearance:none;align-self:center;margin-top:.35rem;border:1px solid var(--navy);background:var(--navy);color:var(--ivory);font-family:var(--font-sans);font-size:.62rem;font-weight:500;letter-spacing:.22em;text-transform:uppercase;padding:.85rem 2rem;cursor:pointer;border-radius:0;transition:background .35s ease,color .35s ease,box-shadow .35s ease}.rsvp-submit:hover,.rsvp-submit:focus-visible{background:var(--navy-deep);color:var(--ivory);box-shadow:0 6px 18px #0b123333;outline:none}.rsvp-submit:disabled{opacity:.55;cursor:wait;transform:none;box-shadow:none}.rsvp-success{text-align:center;padding:1.25rem 1rem}.rsvp-success-title{font-family:var(--font-script);font-size:1.75rem;color:var(--navy);margin-bottom:.4rem}.rsvp-success-sub{font-family:var(--font-serif);font-size:.9rem;font-style:italic;color:var(--ink-soft)}.calendar-section{text-align:center;padding:2.75rem 1.5rem 3.25rem;background:transparent}.calendar-month{font-family:var(--font-script);font-size:clamp(2.6rem,10vw,3.6rem);font-weight:400;color:var(--navy);line-height:1.15;margin-bottom:1.5rem}.calendar-grid{width:min(300px,88vw);margin:0 auto}.calendar-weekdays,.calendar-days{display:grid;grid-template-columns:repeat(7,1fr);gap:.15rem 0}.calendar-weekday{font-family:var(--font-sans);font-size:.68rem;font-weight:500;letter-spacing:.06em;color:var(--ink-faint);padding-bottom:.65rem}.calendar-day{position:relative;display:flex;align-items:center;justify-content:center;aspect-ratio:1;font-family:var(--font-sans);font-size:.82rem;font-weight:400;color:var(--navy)}.calendar-day.is-empty{visibility:hidden}.calendar-day-num{position:relative;z-index:1}.calendar-day.is-wedding .calendar-day-num{color:#fff;font-weight:500}.calendar-heart{position:absolute;top:50%;right:50%;bottom:50%;left:50%;transform:translate(-50%,-50%);width:30px;height:30px;color:#9e2a2b;z-index:0;display:flex;align-items:center;justify-content:center;filter:drop-shadow(0 1px 2px rgba(0,0,0,.12))}.calendar-heart svg{width:100%;height:100%}.calendar-city{margin-top:1.5rem;font-family:var(--font-sans);font-size:.68rem;font-weight:500;letter-spacing:.28em;text-transform:uppercase;color:var(--ink-soft)}@media(min-width:768px){.calendar-section{padding:3.5rem 2rem 4rem}.calendar-grid{width:320px}.calendar-heart{width:32px;height:32px}}.landing{position:relative;z-index:1;min-height:100dvh;background:#f3ebe0;color:var(--ink)}.site-nav{position:absolute;top:0;left:0;right:0;z-index:10;display:grid;grid-template-columns:1fr auto 1fr;align-items:center;gap:.5rem;padding:1rem 1.1rem;color:var(--ivory)}.nav-side{display:flex;gap:.85rem;align-items:center}.nav-side--left{justify-content:flex-start}.nav-side--right{justify-content:flex-end}.nav-side a{font-family:var(--font-sans);font-size:.58rem;font-weight:500;letter-spacing:.18em;text-transform:uppercase;color:#f5f0e6e6;transition:color .3s ease}.nav-side a:hover{color:var(--gold)}.nav-monogram{font-family:var(--font-script);font-size:1.65rem;color:var(--ivory);line-height:1;text-shadow:0 1px 8px rgba(0,0,0,.25)}.hero{position:relative;min-height:min(92dvh,820px);display:flex;align-items:flex-end;justify-content:center;overflow:hidden}.hero-media{position:absolute;top:0;right:0;bottom:0;left:0}.hero-image{width:100%;height:100%;object-fit:cover;object-position:center 18%}.hero-overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:linear-gradient(180deg,#0b123359,#0b123326,#0b123373 70%,#0b1233b8)}.hero-content{position:relative;z-index:1;text-align:center;padding:0 1.25rem 3.5rem;color:var(--ivory)}.hero-eyebrow{font-family:var(--font-sans);font-size:.62rem;font-weight:500;letter-spacing:.28em;text-transform:uppercase;margin-bottom:.85rem;color:#f5f0e6e0}.hero-names{font-family:var(--font-script);font-size:clamp(3rem,12vw,4.5rem);font-weight:400;line-height:1.15;margin-bottom:1.1rem;text-shadow:0 2px 20px rgba(0,0,0,.25)}.hero-rule{display:block;width:64px;height:1px;margin:0 auto;background:#d4af37d9}.date-block{text-align:center;padding:3.5rem 1.5rem 2.75rem;background:transparent}.date-heading{font-family:var(--font-serif);font-size:clamp(1.65rem,5.5vw,2.35rem);font-weight:500;letter-spacing:.08em;color:var(--navy);margin-bottom:.65rem}.date-city{font-family:var(--font-sans);font-size:.68rem;font-weight:500;letter-spacing:.28em;text-transform:uppercase;color:var(--ink-soft)}.welcome{max-width:420px;margin:0 auto;padding:2.75rem 1.75rem 1.5rem;text-align:center}.welcome-text{font-family:var(--font-serif);font-size:clamp(1.05rem,3.2vw,1.2rem);font-style:italic;line-height:1.85;color:var(--ink-soft)}.feature{padding:2.5rem 1.35rem 3rem;max-width:560px;margin:0 auto}.feature-copy{text-align:center;max-width:480px;margin:0 auto}.feature-title{font-family:var(--font-serif);font-size:.95rem;font-weight:600;letter-spacing:.16em;color:var(--gold);margin-bottom:.35rem}.feature-subtitle{font-family:var(--font-serif);font-size:clamp(1.35rem,4.2vw,1.75rem);font-style:normal;font-weight:600;color:var(--navy);margin-bottom:1.15rem;line-height:1.35}.feature-body{font-family:var(--font-body);font-size:.88rem;line-height:1.85;color:var(--ink-soft);margin-bottom:.95rem;text-align:center}.feature-body strong{color:var(--navy);font-weight:600}.feature-meta{font-family:var(--font-serif);font-size:.88rem;color:var(--ink-soft);line-height:1.6;margin-bottom:.35rem}.feature-meta--caps{font-family:var(--font-sans);font-size:.65rem;letter-spacing:.16em;text-transform:uppercase;margin-bottom:1.35rem;color:var(--ink-faint)}.directions-btn{display:inline-block;padding:.7rem 1.5rem;border:1px solid var(--navy);color:var(--navy);font-family:var(--font-sans);font-size:.62rem;font-weight:500;letter-spacing:.2em;text-transform:uppercase;transition:background .35s ease,color .35s ease,box-shadow .35s ease}.directions-btn:hover,.directions-btn:focus-visible{background:var(--navy);color:var(--ivory);box-shadow:0 6px 18px #0b12332e;outline:none}.landing-section{max-width:440px;margin:0 auto;padding:2rem 1.5rem 2.5rem;text-align:center}.section-eyebrow{font-family:var(--font-sans);font-size:.62rem;font-weight:500;letter-spacing:.28em;text-transform:uppercase;color:var(--gold);margin-bottom:.85rem}.section-script{font-family:var(--font-script);font-size:clamp(1.85rem,6vw,2.35rem);color:var(--navy);margin-bottom:1.35rem;line-height:1.25}.landing-rsvp{padding-bottom:1.5rem}.landing-footer{text-align:center;padding:2rem 1.5rem 3.5rem;border-top:1px solid rgba(16,27,61,.08)}.footer-monogram{font-family:var(--font-script);font-size:1.75rem;color:var(--navy);margin-bottom:.5rem}.landing-footer p:last-child{font-family:var(--font-sans);font-size:.62rem;font-weight:500;letter-spacing:.2em;text-transform:uppercase;color:var(--ink-faint)}@media(min-width:768px){.site-nav{padding:1.35rem 2.5rem}.nav-side{gap:1.5rem}.nav-side a{font-size:.65rem}.nav-monogram{font-size:2rem}.hero{min-height:min(88dvh,900px)}.hero-content{padding-bottom:4.5rem}.date-block{padding:4.5rem 2rem 3.5rem}.feature{padding:3.5rem 2.5rem 4rem}}@media(max-width:420px){.nav-side a:nth-child(2){display:none}}.app{position:relative;min-height:100dvh;isolation:isolate}.landing-reveal{animation:revealIn .85s cubic-bezier(.22,1,.36,1) both}@keyframes revealIn{0%{opacity:0;transform:translateY(12px) scale(.985)}to{opacity:1;transform:translateY(0) scale(1)}}:root{--navy-deep: #0b1233;--navy: #101b3d;--navy-mid: #1a2456;--purple-glow: #3d2b56;--gold: #d4af37;--gold-soft: #c9a876;--gold-dim: rgba(212, 175, 55, .4);--ivory: #f5f0e6;--cream: #faf8f4;--cream-warm: #f7f3eb;--ink: #101b3d;--ink-soft: rgba(16, 27, 61, .68);--ink-faint: rgba(16, 27, 61, .42);--font-script: "Great Vibes", cursive;--font-serif: "Cormorant Garamond", "Libre Baskerville", Georgia, serif;--font-body: "Libre Baskerville", "Cormorant Garamond", Georgia, serif;--font-sans: "Montserrat", system-ui, sans-serif;--transition: .5s cubic-bezier(.22, 1, .36, 1)}*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}html{scroll-behavior:smooth}body{min-height:100dvh;font-family:var(--font-serif);background:var(--cream);color:var(--ink);direction:ltr;text-align:left;-webkit-font-smoothing:antialiased;overflow-x:hidden}#root{min-height:100dvh}button,input{font-family:inherit}a{color:inherit;text-decoration:none}img{max-width:100%;display:block}.ornament{display:flex;align-items:center;justify-content:center;gap:.85rem;margin:1.5rem auto;width:min(180px,50%);color:var(--gold-soft)}.ornament:before,.ornament:after{content:"";flex:1;height:1px;background:linear-gradient(90deg,transparent,var(--gold-soft),transparent)}.ornament-flourish{font-family:var(--font-script);font-size:1.1rem;line-height:1;color:var(--gold)}@keyframes fadeUp{0%{opacity:0;transform:translateY(16px)}to{opacity:1;transform:translateY(0)}}.fade-up{opacity:0;animation:fadeUp .95s var(--transition) forwards}.delay-1{animation-delay:.12s}.delay-2{animation-delay:.28s}.delay-3{animation-delay:.44s}.delay-4{animation-delay:.6s}.delay-5{animation-delay:.76s}.delay-6{animation-delay:.92s}.delay-7{animation-delay:1.08s}
