:root{--ivory:#fbf6f2;--paper:#fffdfb;--blush:#f3e1dc;--blush-deep:#e9cdc6;--rose:#a8646f;--rose-deep:#8e4f5a;--plum:#5b3440;--ink:#4a3b3f;--gold:#b8976a;--line:#8e4f5a33;--script:"Great Vibes", "Snell Roundhand", cursive;--serif:"Cormorant Garamond", Garamond, Georgia, serif;--sans:Jost, "Avenir Next", "Helvetica Neue", sans-serif;--page:min(1120px, calc(100% - 40px));--header-h:68px;color:var(--ink);font-family:var(--serif);font-synthesis:none;scroll-behavior:smooth;scroll-padding-top:var(--header-h);font-size:18px}*{box-sizing:border-box}body{background:var(--ivory);color:var(--ink);-webkit-font-smoothing:antialiased;margin:0;line-height:1.6}img{max-width:100%;display:block}a{color:inherit}h1,h2,h3{color:var(--plum);margin:0;font-weight:500;line-height:1.15}h2{font-size:clamp(2.1rem,6vw,3.1rem)}h3{font-size:1.45rem}p{margin:0 0 1em}button,input,textarea{font:inherit}:focus-visible{outline:2px solid var(--rose);outline-offset:3px}.visually-hidden{clip-path:inset(50%);white-space:nowrap;width:1px;height:1px;position:absolute;overflow:hidden}.eyebrow{color:var(--rose-deep);font-family:var(--sans);letter-spacing:.28em;text-transform:uppercase;margin-bottom:12px;font-size:.68rem;font-weight:500}.flourish{fill:none;width:170px;height:18px;stroke:var(--gold);stroke-width:1.2px;margin:18px auto 22px;display:block}.flourish circle{fill:var(--gold);stroke:none}.button{border:1px solid var(--plum);background:var(--plum);min-height:48px;color:var(--ivory);font-family:var(--sans);letter-spacing:.2em;text-transform:uppercase;cursor:pointer;border-radius:999px;justify-content:center;align-items:center;padding:12px 34px;font-size:.74rem;font-weight:500;text-decoration:none;transition:background .2s,color .2s;display:inline-flex}.button:hover{color:var(--plum);background:0 0}.text-link{color:var(--rose-deep);font-family:var(--sans);letter-spacing:.16em;text-transform:uppercase;cursor:pointer;background:0 0;border:0;border-bottom:1px solid;padding:0 0 2px;font-size:.74rem;text-decoration:none}.section{padding:clamp(72px,12vw,128px) 0}.section>*{width:var(--page);margin-inline:auto}.section-heading{text-align:center;max-width:620px;margin-bottom:clamp(40px,7vw,64px)}.section-heading>p:last-child{margin:0;font-size:1.15rem}.site-header{z-index:20;height:var(--header-h);justify-content:space-between;align-items:center;gap:20px;padding:0 max(20px,50vw - 560px);transition:background .25s,box-shadow .25s;display:flex;position:fixed;inset:0 0 auto}.site-header.scrolled,.site-header.open{box-shadow:0 1px 0 var(--line);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);background:#fbf6f2f0}.monogram{color:var(--plum);font-family:var(--script);font-size:1.9rem;line-height:1;text-decoration:none}.site-header nav{gap:clamp(18px,3vw,34px);display:flex}.site-header nav a{color:var(--ink);font-family:var(--sans);letter-spacing:.2em;text-transform:uppercase;font-size:.7rem;text-decoration:none}.site-header nav a:hover{color:var(--rose-deep)}.header-tools{align-items:center;gap:14px;display:flex}.lang-switch{color:var(--rose);font-family:var(--sans);align-items:center;gap:4px;font-size:.72rem;display:flex}.lang-switch button{min-width:36px;min-height:36px;color:var(--ink);letter-spacing:.14em;cursor:pointer;opacity:.55;background:0 0;border:0;padding:0 4px}.lang-switch button[aria-pressed=true]{color:var(--plum);opacity:1;text-decoration:underline;-webkit-text-decoration-color:var(--rose);text-decoration-color:var(--rose);text-underline-offset:6px;font-weight:600}.menu-toggle{cursor:pointer;background:0 0;border:0;width:44px;height:44px;padding:0;display:none}.menu-icon,.menu-icon:before,.menu-icon:after{background:var(--plum);width:22px;height:1.5px;margin:auto;transition:transform .25s;display:block}.menu-icon{position:relative}.menu-icon:before,.menu-icon:after{content:"";position:absolute;left:0}.menu-icon:before{top:-7px}.menu-icon:after{top:7px}.open .menu-icon{background:0 0}.open .menu-icon:before{transform:translateY(7px)rotate(45deg)}.open .menu-icon:after{transform:translateY(-7px)rotate(-45deg)}.floating-rsvp{display:none}.hero{width:var(--page);min-height:100svh;padding:calc(var(--header-h) + 40px) 0 60px;grid-template-columns:1.05fr .95fr;align-items:center;gap:clamp(40px,6vw,90px);margin:0 auto;display:grid}.hero-copy{text-align:center;animation:1.1s both rise}.hero-copy .eyebrow{margin-bottom:28px}.hero h1{font-family:var(--script);flex-direction:column;align-items:center;font-size:clamp(4rem,11vw,7.2rem);font-weight:400;line-height:.95;display:flex}.hero h1 .amp{color:var(--rose);margin:-.08em 0 -.02em;font-size:.55em}.hero-invite{margin:22px 0 0;font-size:1.3rem;font-style:italic}.hero-date{color:var(--plum);margin-bottom:4px;font-size:1.5rem;font-weight:500}.hero-place{color:var(--rose-deep);font-family:var(--sans);letter-spacing:.24em;text-transform:uppercase;font-size:.74rem}.countdown{margin:34px 0 36px}.countdown-label{margin-bottom:12px;font-style:italic}.countdown ol{justify-content:center;gap:clamp(10px,3vw,22px);margin:0;padding:0;list-style:none;display:flex}.countdown li{border:1px solid var(--line);background:var(--paper);border-radius:999px 999px 12px 12px;gap:4px;width:72px;padding:12px 0 10px;display:grid}.countdown strong{color:var(--plum);font-variant-numeric:tabular-nums;font-size:1.7rem;font-weight:500;line-height:1}.countdown li span{font-family:var(--sans);letter-spacing:.16em;text-transform:uppercase;font-size:.58rem}.countdown-done{color:var(--plum);font-family:var(--script);font-size:2.4rem}.hero-photo{margin:0;padding:18px;animation:1.1s .2s both rise;position:relative}.hero-photo:before{border:1px solid var(--gold);content:"";border-radius:999px 999px 0 0;position:absolute;inset:0}.arch{aspect-ratio:5/6;background:var(--blush);border-radius:999px 999px 0 0;overflow:hidden}.arch img{object-fit:cover;object-position:38% center;width:100%;height:100%}.hero-photo figcaption{background:var(--ivory);color:var(--plum);font-family:var(--sans);letter-spacing:.24em;white-space:nowrap;border-radius:999px;padding:8px 20px;font-size:.7rem;position:absolute;bottom:38px;left:50%;transform:translate(-50%)}@keyframes rise{0%{opacity:0;transform:translateY(18px)}}.welcome{background:var(--paper);grid-template-columns:1fr .8fr;align-items:center;gap:clamp(40px,7vw,100px);display:grid}.welcome.section>*{width:auto}.welcome{padding-inline:max(20px,50vw - 560px)}.welcome-copy{text-align:center;justify-self:end;max-width:560px}.welcome-copy>p:not(.eyebrow,.signature){font-size:1.2rem}.signature{color:var(--plum);font-family:var(--script);margin:28px 0 0;font-size:2.2rem;line-height:1.2}.signature span{color:var(--ink);font-family:var(--serif);font-size:1.1rem;font-style:italic;display:block}.welcome-photo{border:1px solid var(--line);border-radius:200px 200px 8px 8px;max-width:400px;padding:12px}.welcome-photo img{aspect-ratio:3/4;object-fit:cover;border-radius:190px 190px 4px 4px;width:100%}.schedule{background:var(--blush)}.timeline{max-width:760px;margin:0 auto;padding:0;list-style:none;position:relative}.timeline:before{background:var(--rose);opacity:.45;content:"";width:1px;position:absolute;top:8px;bottom:8px;left:50%}.timeline li{grid-template-columns:1fr 40px 1fr;align-items:start;padding-bottom:42px;display:grid;position:relative}.timeline li:last-child{padding-bottom:0}.timeline time{color:var(--rose-deep);text-align:right;padding-right:28px;font-size:1.5rem;font-style:italic}.timeline-dot{border:3px solid var(--blush);background:var(--rose);width:13px;height:13px;box-shadow:0 0 0 1px var(--rose);border-radius:50%;justify-self:center;margin-top:12px}.timeline li>div{padding-left:28px}.timeline h3{margin-bottom:4px}.timeline p{margin:0}.timeline li:nth-child(2n) time{text-align:left;grid-area:1/3;padding:0 0 0 28px}.timeline li:nth-child(2n) .timeline-dot{grid-area:1/2}.timeline li:nth-child(2n)>div{text-align:right;grid-area:1/1;padding:0 28px 0 0}.travel-cards{grid-template-columns:repeat(3,1fr);gap:22px;display:grid}.travel-cards article{border:1px solid var(--line);background:var(--paper);text-align:center;border-radius:140px 140px 10px 10px;padding:34px 28px}.travel-cards h3{margin:18px 0 10px}.travel-cards p{margin:0}.travel-map{text-align:center;margin-top:40px}.faq{background:var(--paper)}.faq-list{max-width:720px}.faq details{border-bottom:1px solid var(--line)}.faq details:first-child{border-top:1px solid var(--line)}.faq summary{color:var(--plum);cursor:pointer;justify-content:space-between;align-items:center;gap:20px;padding:22px 4px;font-size:1.3rem;list-style:none;display:flex}.faq summary::-webkit-details-marker{display:none}.faq summary span{flex:0 0 14px;height:14px;position:relative}.faq summary span:before,.faq summary span:after{background:var(--rose);content:"";width:14px;height:1px;transition:transform .2s;position:absolute;top:50%;left:0}.faq summary span:after{transform:rotate(90deg)}.faq details[open] summary span:after{transform:rotate(0)}.faq details p{margin:0;padding:0 4px 22px;font-size:1.1rem}.rsvp{background:radial-gradient(circle at 15% 20%, #ffffff80, transparent 40%), var(--blush)}.rsvp-card{border:1px solid var(--blush-deep);background:var(--paper);border-radius:340px 340px 16px 16px;max-width:680px;padding:clamp(40px,7vw,72px) clamp(22px,6vw,64px);box-shadow:0 20px 60px #5b344014}.rsvp .section-heading{margin-bottom:36px;padding-top:20px}.rsvp-note{font-family:var(--sans);opacity:.8;margin-top:14px;font-size:.74rem;font-style:normal}.rsvp .section-heading>p.rsvp-note{font-size:.74rem}form{gap:26px;display:grid}.field{border:0;min-width:0;margin:0;padding:0}.field>label:not(.choice,.check-choice),legend{color:var(--plum);font-family:var(--sans);letter-spacing:.18em;text-transform:uppercase;margin-bottom:8px;padding:0;font-size:.68rem;font-weight:500;display:block}input[type=text],input[type=email],textarea{border:1px solid var(--blush-deep);background:var(--ivory);width:100%;color:var(--ink);resize:vertical;border-radius:8px;padding:12px 14px;font-size:1.1rem}input[type=text]:focus,input[type=email]:focus,textarea:focus{border-color:var(--rose);outline:none;box-shadow:0 0 0 3px #a8646f2e}input[aria-invalid=true]{border-color:#b3261e}.choice-row{grid-template-columns:1fr 1fr;gap:12px;display:grid}.choice{cursor:pointer;position:relative}.choice input{opacity:0;position:absolute}.choice span{border:1px solid var(--blush-deep);text-align:center;border-radius:999px;justify-content:center;align-items:center;min-height:54px;padding:10px;font-size:1.1rem;transition:background .16s,color .16s;display:flex}.choice input:checked+span{border-color:var(--plum);background:var(--plum);color:var(--ivory)}.choice input:focus-visible+span{outline:2px solid var(--rose);outline-offset:3px}.plus-one{border:1px dashed var(--blush-deep);border-radius:12px;padding:18px}.check-choice{cursor:pointer;align-items:center;gap:10px;display:flex}.plus-one .check-choice+label{margin-top:16px}.check-choice input{width:19px;height:19px;accent-color:var(--plum);flex:none}.field-error{color:#b3261e;font-family:var(--sans);margin:6px 0 0;font-size:.78rem}.form-footer{text-align:center;justify-items:center;gap:12px;display:grid}.form-footer p{font-family:var(--sans);margin:0;font-size:.8rem}.form-footer p:empty{display:none}.success{text-align:center}.success-heart{color:var(--rose);font-size:2.4rem;line-height:1;display:block}.success h3{font-family:var(--script);margin:12px 0;font-size:2.6rem;font-weight:400}.site-footer{background:var(--plum);color:var(--blush);text-align:center;padding:90px 20px 110px}.footer-signoff{font-size:1.2rem;font-style:italic}.footer-names{color:var(--ivory);font-family:var(--script);margin:0;font-size:clamp(3rem,10vw,5.2rem);line-height:1.1}.footer-names span{color:var(--blush-deep);font-size:.6em}.site-footer .flourish{stroke:var(--blush-deep);opacity:.6}.site-footer .flourish circle{fill:var(--blush-deep)}.footer-meta{font-family:var(--sans);letter-spacing:.24em;text-transform:uppercase;font-size:.7rem}.footer-top{border:1px solid #f3e1dc66;border-radius:50%;place-items:center;width:44px;height:44px;margin-top:10px;text-decoration:none;display:inline-grid}.envelope-seen .envelope-screen{display:none}.envelope-screen{z-index:50;background:radial-gradient(circle at 50% 42%, #ffffffbf, transparent 55%), var(--blush);perspective:1400px;flex-direction:column;justify-content:center;align-items:center;gap:clamp(28px,5vh,44px);padding:24px;display:flex;position:fixed;inset:0;overflow:hidden}.envelope-lang{position:absolute;top:14px;right:16px}.envelope-to{color:var(--plum);font-family:var(--script);text-align:center;margin:0;font-size:clamp(2.2rem,7vw,3rem);line-height:1.1;animation:1s both rise}.envelope{--w:min(440px, 86vw);width:var(--w);aspect-ratio:1.45;filter:drop-shadow(0 24px 40px #5b344033);animation:1s .15s both rise;position:relative}.env-back,.env-pocket,.env-flap{border-radius:6px;position:absolute;inset:0}.env-back{background:#ead3cc}.env-card{z-index:2;border:1px solid var(--blush-deep);background:var(--paper);height:88%;box-shadow:inset 0 0 0 6px var(--paper), inset 0 0 0 7px #b8976a80;text-align:center;border-radius:4px;flex-direction:column;justify-content:center;align-items:center;gap:4px;padding:18px;display:flex;position:absolute;bottom:6%;left:6%;right:6%}.env-card-kicker{color:var(--rose-deep);font-family:var(--sans);letter-spacing:.24em;text-transform:uppercase;font-size:.55rem}.env-card-names{color:var(--plum);font-family:var(--script);font-size:clamp(1.9rem,6.5vw,2.6rem);line-height:1.2}.env-card-names em{color:var(--rose);font-style:normal}.env-card-date{font-size:1rem;font-style:italic}.env-pocket{z-index:3;clip-path:polygon(0 0,50% 54%,100% 0,100% 100%,0 100%);background:linear-gradient(to top right,#f1ddd7 50%,#0000 50.2%) 0/50.1% 100% no-repeat,linear-gradient(to top left,#f1ddd7 50%,#0000 50.2%) 100%/50.1% 100% no-repeat,linear-gradient(0deg,#f6e6e1 0 46%,#0000 46.2%),#ecd6cf}.env-flap{z-index:4;clip-path:polygon(0 0,100% 0,50% 58%);transform-origin:top;background:linear-gradient(#e7cbc3,#efd9d3);transition:transform .7s cubic-bezier(.4,0,.2,1),z-index 0s linear .35s}.env-seal{z-index:5;aspect-ratio:1;cursor:pointer;background:0 0;border:0;border-radius:50%;width:clamp(74px,20vw,92px);padding:0;transition:transform .35s,opacity .35s;animation:2.4s ease-in-out 1.2s infinite seal-pulse;position:absolute;top:58%;left:50%;transform:translate(-50%,-50%)}.env-seal:hover{transform:translate(-50%,-50%)scale(1.06)}.env-seal svg{filter:drop-shadow(0 3px 4px #3c141e59);width:100%;height:100%;display:block}.seal-wax{fill:#8e3443}.seal-ring{fill:none;stroke:#ffdcdc73;stroke-width:1.5px}.env-seal text{fill:#f6dcd6;font-family:var(--script);font-size:27px}.envelope-hint{color:var(--rose-deep);font-family:var(--sans);letter-spacing:.22em;text-transform:uppercase;margin:0;font-size:.7rem;animation:1s .35s both rise}.envelope-skip{bottom:calc(18px + env(safe-area-inset-bottom));min-height:44px;color:var(--ink);font-family:var(--sans);letter-spacing:.2em;text-underline-offset:5px;text-transform:uppercase;cursor:pointer;opacity:.6;background:0 0;border:0;padding:0 16px;font-size:.68rem;text-decoration:underline;position:absolute}.opening .env-seal{opacity:0;animation:none;transform:translate(-50%,-50%)scale(1.4)}.opening .env-flap{z-index:1;transition-delay:.25s,.6s;transform:rotateX(180deg)}.opening .env-card{animation:1s cubic-bezier(.3,0,.2,1) .95s forwards card-rise}.opening .envelope-hint,.opening .envelope-skip,.opening .envelope-to{opacity:0;transition:opacity .4s}.opening{animation:.7s 2s forwards screen-out}@keyframes card-rise{to{transform:translateY(-58%)}}@keyframes screen-out{to{opacity:0;visibility:hidden}}@keyframes seal-pulse{0%,to{transform:translate(-50%,-50%)scale(1)}50%{transform:translate(-50%,-50%)scale(1.06)}}.add-calendar{display:inline-block;position:relative}.section-heading .add-calendar{margin-top:22px}.add-calendar summary{border:1px solid var(--rose);min-height:48px;color:var(--plum);font-family:var(--sans);letter-spacing:.16em;text-transform:uppercase;cursor:pointer;border-radius:999px;align-items:center;gap:8px;padding:0 22px;font-size:.72rem;list-style:none;transition:background .2s;display:inline-flex}.add-calendar summary::-webkit-details-marker{display:none}.add-calendar summary:hover,.add-calendar[open] summary{background:var(--paper)}.add-calendar svg{fill:none;stroke:currentColor;stroke-width:1.4px;stroke-linecap:round;width:18px;height:18px}.add-calendar-menu{z-index:10;border:1px solid var(--blush-deep);background:var(--paper);border-radius:14px;min-width:230px;padding:6px;display:grid;position:absolute;top:calc(100% + 8px);left:50%;transform:translate(-50%);box-shadow:0 14px 34px #5b344024}.add-calendar-menu a,.add-calendar-menu button{width:100%;color:var(--ink);font-family:var(--sans);text-align:left;cursor:pointer;background:0 0;border:0;border-radius:10px;padding:12px 16px;font-size:.85rem;text-decoration:none;display:block}.add-calendar-menu a:hover,.add-calendar-menu button:hover{background:var(--blush)}.hero-actions{flex-wrap:wrap;justify-content:center;align-items:flex-start;gap:12px;display:flex}.field-help{font-family:var(--sans);opacity:.75;margin:6px 0 0;font-size:.74rem}.song-note{color:var(--rose);margin-right:4px;font-size:.95rem}.honeypot{width:1px;height:1px;position:absolute;left:-9999px;overflow:hidden}.rsvp-returning{background:var(--blush);font-family:var(--sans);text-align:center;border-radius:10px;margin:0;padding:12px 16px;font-size:.8rem}.button:disabled{cursor:wait;opacity:.7}@media (width<=900px){.menu-toggle{display:block}.site-header nav{top:var(--header-h);height:calc(100svh - var(--header-h));background:var(--ivory);opacity:0;pointer-events:none;visibility:hidden;flex-direction:column;align-items:center;gap:0;padding-top:6vh;transition:opacity .25s,transform .25s;position:fixed;left:0;right:0;transform:translateY(-10px)}.site-header.open nav{opacity:1;pointer-events:auto;visibility:visible;transform:none}.site-header nav a{border-bottom:1px solid var(--line);width:min(320px,80%);color:var(--plum);font-family:var(--serif);letter-spacing:0;text-align:center;text-transform:none;padding:18px 0;font-size:1.6rem}.floating-rsvp{right:16px;bottom:calc(16px + env(safe-area-inset-bottom));z-index:15;background:var(--plum);min-height:48px;color:var(--ivory);font-family:var(--sans);letter-spacing:.2em;text-transform:uppercase;opacity:0;pointer-events:none;border-radius:999px;align-items:center;padding:0 26px;font-size:.72rem;text-decoration:none;transition:opacity .25s,transform .25s;display:inline-flex;position:fixed;transform:translateY(12px);box-shadow:0 8px 24px #5b34404d}.floating-rsvp.visible{opacity:1;pointer-events:auto;transform:none}.hero{min-height:auto;padding-top:calc(var(--header-h) + 28px);grid-template-columns:1fr;gap:44px}.hero-photo{width:min(400px,100%);margin:0 auto}.welcome{grid-template-columns:1fr}.welcome-copy{justify-self:center}.welcome-photo{justify-self:center;width:min(340px,100%)}.travel-cards{grid-template-columns:1fr;max-width:480px}.travel-cards article{border-radius:12px}.travel-cards h3{margin-top:0}}@media (width<=640px){:root{font-size:17px}.countdown ol{gap:8px}.countdown li{width:64px}.timeline:before{left:19px}.timeline li,.timeline li:nth-child(2n){grid-template-rows:auto auto;grid-template-columns:40px 1fr;padding-bottom:32px}.timeline li .timeline-dot,.timeline li:nth-child(2n) .timeline-dot{grid-area:1/1;margin-top:8px}.timeline li time,.timeline li:nth-child(2n) time{text-align:left;grid-area:1/2;padding:0 0 0 8px;font-size:1.25rem}.timeline li>div,.timeline li:nth-child(2n)>div{text-align:left;grid-area:2/2;padding:2px 0 0 8px}.rsvp-card{border-radius:180px 180px 14px 14px}.choice-row{grid-template-columns:1fr}}@media (prefers-reduced-motion:reduce){:root{scroll-behavior:auto}*,:before,:after{transition:none!important;animation:none!important}}
