@import url('https://fonts.googleapis.com/css2?family=Cormorant+Garamond:ital,wght@0,400;0,500;0,600;1,400;1,500&family=DM+Sans:wght@400;500;600&display=swap');
:root{--paper:#f8f3e9;--cream:#fcf9f2;--ink:#443e34;--wine:#643d38;--sage:#68705b;--gold:#a1804d;--line:#cbb999;--rose:#f0e5dd;--serif:'Cormorant Garamond',Georgia,serif;--body:'DM Sans',Arial,sans-serif;color-scheme:light;font-family:var(--body);color:var(--ink);background:var(--paper);font-synthesis:none}
*{box-sizing:border-box}html{scroll-behavior:smooth;scroll-padding-top:88px}body{margin:0;font-size:16px;line-height:1.7}a{color:inherit;text-decoration-thickness:1px;text-underline-offset:5px}a,button,summary{-webkit-tap-highlight-color:#d6c3a5}a:focus-visible,summary:focus-visible{outline:3px solid var(--wine);outline-offset:5px}h1,h2,h3,p{margin-top:0}h1,h2,h3{font-family:var(--serif);font-weight:500;line-height:1.1;color:var(--wine);overflow-wrap:anywhere}h2{font-size:clamp(2.6rem,6vw,4rem);margin-bottom:24px}h3{font-size:2.1rem;margin-bottom:16px}p{margin-bottom:16px}main{overflow:clip}.sr-only{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap}.skip-link{position:fixed;left:16px;top:-90px;z-index:20;background:var(--wine);color:white;padding:12px 20px}.skip-link:focus{top:12px}.site-header{min-height:76px;padding:12px clamp(20px,5vw,72px);display:flex;align-items:center;justify-content:space-between;gap:16px;border-bottom:1px solid #cbb99970;background:var(--paper);position:relative;z-index:5}.wordmark{font-family:var(--serif);font-size:1.6rem;text-decoration:none;letter-spacing:.02em;min-height:44px;display:flex;align-items:center;flex-shrink:0}.site-header nav{display:flex;align-items:center;gap:clamp(12px,3vw,38px)}nav a{font-size:.875rem;text-decoration:none;min-height:44px;display:flex;align-items:center;white-space:nowrap}nav a:hover,nav a[aria-current]{text-decoration:underline}.nav-rsvp{border:1px solid var(--line);padding:7px 18px}.cover{min-height:800px;min-height:calc(100svh - 76px);max-width:1200px;margin:0 auto;padding:72px 90px 50px;position:relative;display:grid;place-items:center;text-align:center}.cover-border{position:absolute;inset:30px 48px 0;border:1px solid var(--line);border-radius:48% 48% 0 0 / 28% 28% 0 0;pointer-events:none}.cover-border:after{content:'';position:absolute;inset:8px;border:1px solid #cbb99970;border-radius:inherit}.cover-content{position:relative;max-width:750px;width:100%}.eyebrow{font-size:.75rem;letter-spacing:.18em;text-transform:uppercase;font-weight:500;line-height:1.6;color:#6a5c45}.cover-intro{margin:0 0 20px}.seal{width:70px;height:70px;border:1px solid var(--line);border-radius:50%;margin:0 auto 25px;display:grid;place-items:center;color:var(--wine);font-family:var(--serif);font-size:1.5rem;outline:1px solid #cbb99970;outline-offset:5px}.family-line{font-family:var(--serif);font-size:1.3rem;margin-bottom:12px}.cover h1{font-size:clamp(4.5rem,9vw,7rem);line-height:.97;margin:0 auto 24px;letter-spacing:-.035em}.cover h1 span{display:block}.cover h1 em{font-size:.48em;color:var(--gold);font-weight:400;display:block;line-height:1.12;padding:6px 0;letter-spacing:0}.cover-message{font-family:var(--serif);font-size:1.25rem;line-height:1.4;max-width:340px;margin:0 auto 8px}.divider{display:flex;align-items:center;justify-content:center;gap:14px;margin:25px auto;color:var(--gold);width:200px;max-width:80%}.divider:before,.divider:after{content:'';height:1px;background:var(--line);flex:1}.divider span{font-size:24px;line-height:1}.cover-date{font-size:1rem;font-weight:500;margin-bottom:3px}.cover-location{font-size:.875rem;margin-bottom:22px;color:#615c50}.explore{display:inline-flex;flex-direction:column;align-items:center;text-decoration:none;font-size:.875rem;min-height:48px;padding:8px 16px;gap:10px}.explore:hover{text-decoration:underline}.scroll-mark{display:block;width:1px;height:25px;background:var(--gold)}.sprig{position:absolute;top:110px;width:150px;height:400px;pointer-events:none;color:#737a5b;opacity:.8}.botanical{width:100%;height:100%}.sprig-left{left:7px;transform:rotate(-8deg)}.sprig-right{right:7px;transform:scaleX(-1) rotate(-8deg)}.section{padding:88px 30px;max-width:980px;margin:0 auto}.welcome{text-align:center;max-width:750px;padding-top:100px;padding-bottom:32px}.welcome h2{font-style:italic;font-size:clamp(2.5rem,6vw,3.7rem);max-width:550px;margin:0 auto 28px}.welcome>p:not(.eyebrow){max-width:560px;margin:0 auto;font-size:1rem}.welcome .divider{margin-top:42px}.section-heading{text-align:center;margin-bottom:46px}.section-heading>p{margin-bottom:12px}.section-heading h2{margin-bottom:18px}.time-zone{font-size:.875rem}.schedule{border-top:1px solid var(--line)}.event-card{position:relative;display:grid;grid-template-columns:72px 1fr;padding:40px 16px;border-bottom:1px solid var(--line);gap:24px}.event-number{font-family:var(--serif);font-size:2.8rem;line-height:1.1;color:#957343;padding-top:29px}.event-card .eyebrow{font-size:.75rem;letter-spacing:.09em;margin-bottom:9px}.event-card h3{text-transform:none;margin-bottom:12px;font-size:2.75rem}.event-time{font-size:1.125rem;font-weight:500;color:var(--wine);margin:0 0 26px}.venue-name{font-family:var(--serif);font-size:1.6rem;font-weight:600;line-height:1.25;margin-bottom:8px;overflow-wrap:anywhere}address{font-style:normal;font-size:1rem;line-height:1.6;overflow-wrap:anywhere}.event-actions{display:flex;flex-wrap:wrap;gap:12px 28px;margin-top:18px}.text-link{display:inline-flex;align-items:center;min-height:44px;font-size:.875rem;line-height:1.5}.travel-note{font-size:.875rem;font-style:italic;color:#665b4a;margin:22px 0 0;padding-top:16px;border-top:1px solid #cbb99965}.dress-code{margin:18px 0 0}.travel{max-width:none;background:#eeeee4;text-align:center;border-block:1px solid #d4d2bf;padding:66px 24px}.travel-intro{max-width:480px;margin:0 auto 26px}.guest-details{max-width:760px;margin:auto;display:flex;justify-content:center;gap:32px;flex-wrap:wrap}.guest-details article{flex:1 1 240px;max-width:400px}.guest-details h3{font-size:1.75rem;margin-bottom:12px}.guest-details p{margin-bottom:0}.rsvp{padding:80px 30px;max-width:880px}.rsvp-frame{padding:66px 24px 40px;background:var(--rose);border:1px solid #c6aba0;outline:1px solid #c6aba0;outline-offset:-10px;text-align:center}.rsvp-frame h2{font-size:clamp(2.8rem,6vw,4.2rem)}.rsvp-pending{max-width:300px;margin:0 auto 20px}.button{display:inline-flex;align-items:center;justify-content:center;background:var(--wine);color:#fffaf1;min-height:52px;padding:12px 28px;text-decoration:none;border:1px solid var(--wine);margin:12px 0 20px}.button:hover{background:#4f2d28}.rsvp-flourish{display:block;color:#8b6847;font-size:32px;margin-top:12px}.faq{padding-top:0;max-width:780px}.faq h2{font-size:2.6rem}details{border-bottom:1px solid var(--line)}summary{cursor:pointer;min-height:48px;padding:16px 0;font-size:1rem}details>p{margin-top:12px}.closing{text-align:center;padding:4px 24px 70px;max-width:800px;margin:auto}.closing>p:first-of-type{font-family:var(--serif);font-size:1.4rem;margin-top:32px}.closing-names{font-family:var(--serif);font-size:3.3rem;color:var(--wine);line-height:1.2;margin:25px auto 12px;overflow-wrap:anywhere}.closing-names em{color:var(--gold)}.closing .eyebrow{font-size:.75rem;letter-spacing:.1em}.closing .text-link{margin-top:16px}.owner-setup{max-width:800px;margin:0 auto 40px;padding:0 24px;color:#61594e;font-size:.875rem}.owner-setup summary{font-size:.875rem}.owner-setup ul{padding-left:20px;overflow-wrap:anywhere}.owner-setup li{padding-bottom:8px}.owner-setup code{font-size:.875rem}.cover-content{animation:arrive .8s ease-out}@keyframes arrive{from{opacity:.3;transform:translateY(10px)}to{opacity:1;transform:none}}
@media(min-width:900px){.event-card{grid-template-columns:72px 1fr}.event-main{display:grid;grid-template-columns:1fr 1fr;column-gap:40px}.event-main>.eyebrow,.event-main>h3,.event-main>.event-time{grid-column:1}.event-main>.venue{grid-column:2;grid-row:1/4;align-self:center}.event-main>.event-actions,.event-main>.travel-note,.event-main>.dress-code{grid-column:1/-1}.event-main>.event-time{margin-bottom:0}.cover-content{padding-top:14px}.cover{min-height:850px}}
@media(max-width:600px){.site-header{min-height:66px;padding:10px 18px;gap:12px}.wordmark{font-size:1.3rem}.site-header nav{gap:15px}nav a{font-size:.8125rem}.nav-rsvp{padding:6px 12px}.cover{padding:58px 38px 28px;min-height:740px;min-height:calc(100svh - 66px)}.cover-border{inset:20px 16px 0;border-radius:48% 48% 0 0 / 18% 18% 0 0}.cover-border:after{inset:6px}.cover-intro{font-size:.6875rem;margin-bottom:22px;letter-spacing:.15em}.seal{width:58px;height:58px;font-size:1.25rem;margin-bottom:26px}.family-line{font-size:1.125rem;margin-bottom:14px}.cover h1{font-size:clamp(3.5rem,15vw,5rem);line-height:1.02;letter-spacing:-.03em}.cover-message{font-size:1.125rem;max-width:245px}.cover-date{font-size:.9rem;max-width:230px;margin-inline:auto}.cover-location{font-size:.8125rem;margin-bottom:18px}.cover .divider{margin:22px auto;width:142px}.sprig{width:67px;height:220px;top:170px;opacity:.65}.sprig-left{left:0}.sprig-right{right:0}.section{padding:62px 24px}.welcome{padding-bottom:16px}.welcome h2{max-width:340px;font-size:2.75rem}.welcome .divider{margin-top:32px}.welcome>p:not(.eyebrow){font-size:1rem}.desktop-break{display:none}.section-heading{margin-bottom:30px}.section-heading h2{font-size:2.9rem}.event-card{grid-template-columns:30px 1fr;gap:14px;padding:28px 0}.event-number{font-size:1.6rem;padding-top:28px}.event-card h3{font-size:2.1rem}.event-card .eyebrow{font-size:.75rem;letter-spacing:.03em}.event-time{margin-bottom:22px}.venue-name{font-size:1.5rem}.event-actions{gap:5px}.event-actions .text-link{width:100%}.travel{padding:48px 24px}.travel h2{font-size:2.8rem}.rsvp{padding:55px 24px}.rsvp-frame{padding:49px 22px 28px}.rsvp-frame h2{font-size:2.8rem}.closing{padding-bottom:48px}.closing-names{font-size:2.8rem}.closing .eyebrow{max-width:250px;margin-inline:auto}.owner-setup{margin-bottom:24px}}
@media(max-width:360px){.site-header{padding-inline:12px}.site-header nav{gap:10px}.wordmark{font-size:1.15rem}.nav-rsvp{padding-inline:8px}.cover{padding-inline:35px}.family-line{font-size:1rem}.event-card{gap:10px;grid-template-columns:25px 1fr}}
@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,*:before,*:after{animation:none!important;transition:none!important}}
.calendar-button{display:inline-flex;align-items:center;justify-content:center;gap:10px;min-height:48px;padding:11px 18px;border:1px solid var(--gold);text-decoration:none;font-size:.875rem;line-height:1.5;color:var(--wine);background:var(--cream);max-width:100%}.calendar-button:hover{background:var(--rose);border-color:var(--wine)}.calendar-icon{width:18px;height:18px;flex-shrink:0}.section-heading>.calendar-button{margin-top:12px}.event-actions .calendar-button{width:auto}.falling-flowers{position:fixed;inset:76px 0 0;z-index:6;pointer-events:none;overflow:hidden;contain:strict}.falling-flower{position:absolute;width:var(--petal-size);height:var(--petal-size);opacity:0;animation:petal-fall var(--petal-duration) linear forwards;will-change:transform,opacity}.falling-flower svg{display:block;width:100%;height:100%}@keyframes petal-fall{0%{opacity:0;transform:translate3d(0,-25px,0) rotate(0)}15%{opacity:.6}75%{opacity:.5}100%{opacity:0;transform:translate3d(var(--petal-drift),min(55vh,420px),0) rotate(var(--petal-turn))}}@media(prefers-reduced-motion:reduce){.falling-flowers{display:none}}@media print{.falling-flowers,.calendar-button,.site-header,.explore,.owner-setup,.closing .text-link{display:none}.cover{min-height:0;padding-block:50px}.section{padding-block:25px}.event-card{break-inside:avoid}.rsvp{break-inside:avoid}body{background:white}}
/* RSVP: native controls, visible labels, generous touch targets. */
[hidden]{display:none!important}.rsvp-introduction{max-width:470px;margin:0 auto 30px}.form-hint{display:block;font-size:.875rem;line-height:1.55;color:#62564e}.rsvp-introduction p{margin-bottom:10px}#rsvp-form{text-align:left;max-width:640px;margin:28px auto 0}.form-grid{display:grid;grid-template-columns:1fr 1fr;gap:20px}.form-field{margin-bottom:22px}.form-field>label,fieldset legend{display:block;margin-bottom:8px;font-weight:500;font-size:1rem;line-height:1.5}.form-field label span,legend span{font-weight:400;font-size:.875rem}.form-field input,.form-field textarea{display:block;width:100%;background:#fcf9f4;border:1px solid #a78e80;border-radius:3px;padding:12px;color:var(--ink);font:inherit;line-height:1.5;min-height:48px}.form-field textarea{resize:vertical}.form-field input:focus-visible,.form-field textarea:focus-visible,input[type=radio]:focus-visible,input[type=checkbox]:focus-visible,button:focus-visible{outline:3px solid var(--wine);outline-offset:3px}.form-field>.form-hint{margin-top:8px}fieldset{border:0;padding:0;margin:0 0 28px;min-width:0}.attendance-choices{display:grid;grid-template-columns:1fr 1fr;gap:12px}.attendance-choices label,.event-choices label{display:flex;align-items:center;gap:12px;cursor:pointer;min-height:52px;padding:14px;border:1px solid #b89d8d;background:#fcf9f4;border-radius:3px}.attendance-choices label:has(:checked),.event-choices label:has(:checked){border-color:var(--wine);background:#f5ebe2;box-shadow:inset 0 0 0 1px var(--wine)}input[type=checkbox],input[type=radio]{accent-color:var(--wine);width:20px;height:20px;flex-shrink:0;margin:0}.event-choices label{margin-bottom:10px;align-items:flex-start}.event-choices input{margin-top:3px}.event-choices small{display:block;font-size:.875rem;line-height:1.5;margin-top:3px;color:#67594c}.field-error{display:block;font-size:.875rem;line-height:1.5;color:#922f2f;margin-top:5px}.field-error:empty{display:none}[aria-invalid=true]{border-color:#922f2f!important}.privacy-note{border-top:1px solid #c6aba0;padding-top:18px;margin-top:8px}#rsvp-form .button{font:inherit;cursor:pointer;min-width:160px}button:disabled{opacity:.65;cursor:wait}.rsvp-result{background:#edf0e5;border:1px solid #77805d;padding:16px;margin:18px 0;color:#374630;border-radius:3px}.rsvp-result.is-error{background:#fbefea;border-color:#a74c3f;color:#782f28}.responses-page{max-width:1000px;margin:auto;padding:55px 24px}.responses-page h1{font-size:3.4rem}.responses-page #responses-status{margin-top:24px}.response-summary{display:grid;grid-template-columns:repeat(3,1fr);gap:14px;margin:28px 0}.response-summary>div{border:1px solid var(--line);padding:20px;background:var(--cream)}.response-summary strong{display:block;color:var(--wine);font:500 2.8rem var(--serif)}.response-summary span{font-size:.875rem}.response-card{border-top:1px solid var(--line);padding:28px 0;overflow-wrap:anywhere}.response-card h2{font-size:2rem;margin-bottom:10px}.response-card p{white-space:pre-wrap}.response-attendance{font-weight:500;color:var(--wine)}@media(max-width:600px){.form-grid,.attendance-choices{grid-template-columns:1fr}.form-grid{gap:0}.rsvp-frame{padding-inline:22px}#rsvp-form .button{width:100%}.attendance-choices{gap:10px}.response-summary{grid-template-columns:1fr 1fr}.responses-page h1{font-size:2.7rem}}
.invite-event{display:flex;gap:.6rem;align-items:center;min-height:44px}.invite-event input{width:auto}#invite-form fieldset{margin:1.5rem 0}#new-invite input{width:100%;font-size:16px;padding:.8rem;margin:.5rem 0;box-sizing:border-box}#invites-list h3{overflow-wrap:anywhere}.responses-page input{max-width:100%;box-sizing:border-box}
.attendee-section{margin:1.5rem 0}.attendee-card{border:1px solid #b9a47f;padding:1rem;margin:1rem 0;text-align:left;min-width:0}.attendee-card legend{padding:0 .5rem;font-weight:600}.attendee-card>label{display:block;margin-bottom:.4rem}.attendee-card>input{width:100%;box-sizing:border-box}.meal-choices{display:flex;flex-wrap:wrap;gap:.75rem;margin-top:1rem}.meal-choices label{position:relative;flex:1;min-width:110px;cursor:pointer}.meal-choices input{position:absolute;opacity:0;width:1px;height:1px}.meal-choices span{display:block;text-align:center;border:1px solid #8d795a;border-radius:6px;padding:.8rem 1rem;font-weight:600;color:#493b30;background:#fffaf1}.meal-choices input:checked+span{background:#564532;color:#fff;border-color:#564532}.meal-choices input:focus-visible+span{outline:3px solid #87633e;outline-offset:3px}.attendee-meal-list{padding-left:1.2rem;line-height:1.8}
.invitation-entry{background:var(--paper)}.entry-stage{min-height:100svh;display:grid;place-items:center;padding:clamp(20px,5vw,60px)}.entry-card{position:relative;width:100%;max-width:580px;text-align:center;padding:clamp(38px,7vw,72px) clamp(24px,6vw,56px);border:1px solid var(--line);background:var(--cream)}.entry-card::before{content:'';position:absolute;inset:9px;border:1px solid #cbb99980;pointer-events:none}.entry-seal{display:grid;place-items:center;width:82px;height:82px;margin:0 auto 28px;border:1px solid var(--gold);border-radius:50%;font:500 1.5rem var(--serif);color:var(--wine)}.entry-card .eyebrow{color:var(--sage);margin-bottom:22px}.entry-card h1{font-size:clamp(3.2rem,11vw,5rem);font-weight:400;line-height:1.05;margin:0}.entry-card h1 em{display:block;font-size:.55em;font-weight:400;color:var(--gold);line-height:1.4}.entry-divider{display:flex;align-items:center;justify-content:center;gap:18px;margin:30px auto;color:var(--gold)}.entry-divider::before,.entry-divider::after{content:'';height:1px;width:64px;background:var(--line)}.entry-message{font-family:var(--serif);font-size:clamp(1.75rem,5.5vw,2.2rem);font-weight:500;line-height:1.25;color:var(--wine);max-width:360px;margin:0 auto;overflow-wrap:anywhere}.entry-card .form-hint{margin-top:24px}
.person-events{display:grid;gap:.5rem}.person-events label{display:flex;align-items:center;gap:.75rem;min-height:48px;padding:.75rem;border:1px solid var(--line);cursor:pointer}.person-events input[type=checkbox]{width:20px;height:20px;flex:0 0 20px}.person-events label:has(:checked){background:#edf0e5;border-color:var(--sage)}.person-meal{margin-top:1rem}.rsvp-result ul{padding-left:1.2rem;line-height:1.7}.dashboard textarea{width:100%;font:inherit;padding:.7rem;margin:.7rem 0;box-sizing:border-box}
