:root{--cream: #f2f1ec;--ivory: #f7f6f1;--olive: #464e37;--charcoal: #1f1f1f;--muted: #5c5c5c;--line: #c8c4b8;--white: #f8f5ef;--font-script: "Kapakana", cursive;--font-serif: "Playfair Display", Georgia, serif;--font-sans: "Zen Kaku Gothic Antique", system-ui, sans-serif;--font-mono: var(--font-sans)}*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}html{scroll-behavior:auto}@media(prefers-reduced-motion:no-preference){html:focus-within{scroll-behavior:smooth}}body{font-family:var(--font-sans);font-size:12px;line-height:1.2;background:var(--cream);color:var(--charcoal);min-height:100vh;-webkit-font-smoothing:antialiased}img{max-width:100%;display:block}a{color:inherit;text-decoration:none}.app{min-height:100vh}.hero{position:relative;min-height:120vh;display:flex;flex-direction:column;justify-content:space-between;padding:65px 20px 2.75rem;color:var(--white);background:linear-gradient(to bottom,#2820142e,#28201414 35%,#28201447),url(/hero-tuscany.jpg) 50% 82% / cover no-repeat}.hero-top{text-align:center}.hero-names{font-family:var(--font-script);font-size:clamp(3.4rem,7vw,5.6rem);font-weight:400;line-height:1.1;text-transform:lowercase;text-shadow:0 2px 18px rgba(0,0,0,.25)}.hero-kicker{margin-top:.35rem;font-size:.78rem;letter-spacing:.42em;text-transform:uppercase;font-weight:400}.hero-portrait{width:184.8px;height:246.4px;margin:1.5rem auto;object-fit:cover;box-shadow:0 18px 40px #00000047}.hero-bottom{display:flex;justify-content:space-between;align-items:flex-end;gap:1.5rem}.hero-place{font-size:.72rem;letter-spacing:.22em;text-transform:uppercase;line-height:1.7}.hero-place span{display:block}.hero-rsvp{display:inline-flex;align-items:center;justify-content:center;min-width:120px;padding:.7rem 1.4rem;border:1px solid var(--white);letter-spacing:.28em;font-size:.75rem;text-transform:uppercase;background:transparent}.hero-rsvp:hover{background:#ffffff1f}.invite{display:grid;grid-template-columns:1fr 1fr;gap:4rem;align-items:start;max-width:1080px;margin:0 auto;padding:230px 20px 140px}.invite h2{font-family:var(--font-serif);font-size:clamp(1.6rem,3vw,2.15rem);font-weight:400;letter-spacing:.06em;line-height:1.25;text-transform:uppercase;color:#1f1f1f}.invite-copy{display:flex;flex-direction:column;gap:1.25rem}.invite-copy p{font-family:var(--font-sans);font-size:12px;font-weight:400;line-height:1.65;color:#5c5c5c}.dates-info{display:grid;grid-template-columns:1fr 1fr;gap:4rem;max-width:1080px;margin:0 auto;padding:90px 20px;align-items:stretch}.dates-col{display:flex;flex-direction:column}.dates-info h2{font-family:var(--font-serif);font-size:28px;font-weight:400;letter-spacing:.08em;text-transform:uppercase;margin-bottom:2rem}.dates-list{list-style:none}.dates-list li{display:flex;justify-content:space-between;gap:1.5rem;padding:1rem 0;border-bottom:.5px solid var(--line);font-family:var(--font-mono);font-size:12px}.dates-list li span:last-child{text-align:right;max-width:70%}.ghost-btn{display:flex;align-items:center;justify-content:center;margin-top:auto;padding:11px 24px;border:.5px solid var(--charcoal);background:transparent;font-family:var(--font-mono);font-size:12px;letter-spacing:.18em;text-transform:uppercase}.ghost-btn:hover{background:transparent;color:#5c5c5c;border-color:#5c5c5c}.info-col article+article{margin-top:1.75rem}.info-col h3{font-family:var(--font-serif);font-size:1.05rem;font-weight:400;letter-spacing:.08em;text-transform:uppercase;margin-bottom:.55rem}.info-col p{font-family:var(--font-mono);font-size:12px;line-height:1.65;color:var(--muted)}.more-info{max-width:920px;margin:0 auto;padding:50px 20px 110px}.more-info h2{font-family:var(--font-serif);font-size:28px;font-weight:400;letter-spacing:.16em;text-transform:uppercase;text-align:center;margin-bottom:2.5rem}.more-info dl>div{display:grid;grid-template-columns:220px 1fr;gap:2rem;padding:1.5rem 0;border-top:.5px solid var(--line)}.more-info dt{font-family:var(--font-serif);letter-spacing:.12em;text-transform:uppercase;font-size:.95rem;color:#1f1f1f}.more-info dd{font-family:var(--font-sans);font-weight:400;font-size:12px;line-height:1.7;color:#5c5c5c}.coming-soon{font-family:var(--font-serif);font-size:.95rem;font-weight:400;letter-spacing:.12em;text-transform:uppercase;text-align:center;color:#cdc1ab}.rsvp-section{max-width:640px;margin:0 auto;padding:30px 1.5rem 60px}.rsvp-section h2{font-family:var(--font-serif);font-size:28px;font-weight:400;letter-spacing:.16em;text-transform:uppercase;text-align:center;margin-bottom:.75rem}.rsvp-intro{text-align:center;font-family:var(--font-mono);font-size:12px;color:var(--muted);margin-bottom:2.4rem;line-height:1.7}.rsvp-form{display:flex;flex-direction:column;gap:1.25rem}.rsvp-form fieldset{border:none;margin:0;padding:0;min-inline-size:0}.form-group label,.form-group legend{display:block;font-family:var(--font-sans);font-size:.72rem;font-weight:500;letter-spacing:.12em;text-transform:uppercase;margin-bottom:.5rem}.form-group legend{margin-bottom:12px}.form-field-intro{font-family:var(--font-sans);font-size:12px;font-weight:400;letter-spacing:0;text-transform:none;line-height:1.65;color:var(--muted);margin:0 0 12px}.form-group input[type=text],.form-group input[type=email],.form-group select,.form-group textarea{width:100%;padding:.8rem 1rem;font-family:var(--font-mono);font-size:12px;color:var(--charcoal);background:var(--cream);border:1px solid var(--line)}.form-group input:focus,.form-group select:focus,.form-group textarea:focus{outline:none;border-color:var(--olive)}.radio-group{display:flex;flex-direction:column;gap:.7rem}.form-group .radio-label{display:flex;flex-direction:row;align-items:center;gap:.5rem;margin-bottom:0;cursor:pointer;font-family:var(--font-mono);font-size:12px;text-transform:none;letter-spacing:0;font-weight:400}.form-group .radio-label input[type=radio]{-moz-appearance:none;appearance:none;-webkit-appearance:none;width:13px;height:13px;margin:0;flex-shrink:0;border:1px solid var(--line);border-radius:50%;background:var(--cream)}.form-group .radio-label input[type=radio]:checked{border-color:var(--olive);background:radial-gradient(circle,var(--olive) 35%,var(--cream) 38%)}.form-note{font-family:var(--font-mono);font-size:12px;text-align:center;font-style:italic;color:var(--muted)}.decline-note{font-style:normal;line-height:1.6;padding:.9rem 1rem;border:.5px solid var(--line);background:var(--cream)}.form-error{font-size:.85rem;color:#8a3030;text-align:center;padding:.75rem 1rem;background:#f7ecec;border:1px solid #e0c4c4}.btn-primary,.btn-secondary{font-family:var(--font-mono);font-size:.85rem;letter-spacing:.16em;text-transform:uppercase;padding:1rem 2rem;cursor:pointer;border:1px solid var(--olive)}.btn-primary{background:var(--olive);color:var(--cream)}.rsvp-form .btn-primary{background:#2d2b25;color:#cdc1ab;border-color:#2d2b25}.rsvp-form .btn-primary:hover:not(:disabled){background:#3a3832}.btn-primary:hover:not(:disabled){background:#3a4130}.btn-primary:disabled{opacity:.6;cursor:not-allowed}.btn-secondary{background:transparent;color:var(--olive);margin-top:1rem}.rsvp-success{text-align:center;padding:2rem 0}.success-icon{width:64px;height:64px;margin:0 auto 1.5rem;background:var(--olive);color:var(--cream);font-size:2rem;line-height:64px;border-radius:50%}.rsvp-success h2{font-family:var(--font-serif);letter-spacing:.08em}.disclaimer{max-width:520px;margin:2.5rem auto 0;text-align:center;font-family:var(--font-mono);font-size:12px;font-style:italic;line-height:1.65;color:var(--muted)}.site-footer{display:grid;grid-template-columns:1fr auto 1fr;align-items:center;gap:1rem;padding:120px 20px;background:#2d2b25;color:var(--cream)}.site-footer .coming-soon{grid-column:2}.admin-link{grid-column:3;justify-self:end;font-family:var(--font-mono);font-size:.72rem;letter-spacing:.08em;color:#f7f6f173}.admin-link:hover{color:var(--olive)}.admin-login,.admin-dash{min-height:100vh;max-width:1180px;margin:0 auto;padding:4rem 1.5rem 3rem}.admin-login{max-width:420px;display:flex;flex-direction:column;justify-content:center}.admin-kicker{font-family:var(--font-script);font-size:2rem;color:var(--olive)}.admin-login h1,.admin-dash h1{font-family:var(--font-serif);font-weight:400;letter-spacing:.06em;text-transform:uppercase;font-size:2rem;margin:.35rem 0 .75rem}.admin-lead{font-family:var(--font-mono);color:var(--muted);margin-bottom:1.5rem}.admin-form{display:flex;flex-direction:column;gap:.7rem}.admin-form label{font-size:.72rem;letter-spacing:.12em;text-transform:uppercase}.admin-form input{padding:.8rem 1rem;font-family:var(--font-mono);border:1px solid var(--line);background:var(--cream)}.admin-form input:focus{outline:none;border-color:var(--olive)}.admin-back{margin-top:1.5rem;font-family:var(--font-mono);font-size:.85rem;color:var(--muted)}.admin-dash-head{display:flex;justify-content:space-between;gap:1.5rem;align-items:flex-end;margin-bottom:2rem}.admin-actions{display:flex;gap:.75rem}.admin-actions .btn-secondary{margin-top:0}.stat-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(140px,1fr));gap:1rem;margin-bottom:2rem}.stat-grid article{background:var(--cream);border:1px solid var(--line);padding:1.1rem 1rem}.stat-grid p{font-family:var(--font-serif);font-size:2rem}.stat-grid h2{font-family:var(--font-mono);font-size:.75rem;font-weight:400;letter-spacing:.08em;text-transform:uppercase;color:var(--muted);margin-top:.2rem}.chart-row{display:grid;grid-template-columns:repeat(3,1fr);gap:1.25rem;margin-bottom:2rem}.chart-card{background:var(--cream);border:1px solid var(--line);padding:1.25rem 1.1rem 1.1rem}.chart-card h2{font-family:var(--font-serif);font-size:1rem;font-weight:400;letter-spacing:.1em;text-transform:uppercase;text-align:center;margin-bottom:.75rem}.donut{display:block;width:150px;height:150px;margin:0 auto 1rem}.donut circle{fill:none;stroke-width:14;transform:rotate(-90deg);transform-origin:70px 70px}.donut-track{stroke:#e6e2d8}.donut text{font-family:var(--font-serif);fill:var(--charcoal)}.donut-sub{font-family:var(--font-mono);letter-spacing:.08em;text-transform:uppercase;fill:var(--muted)}.chart-legend{list-style:none;display:flex;flex-direction:column;gap:.4rem;font-family:var(--font-mono);font-size:.8rem}.chart-legend li{display:flex;align-items:center;gap:.55rem}.chart-legend span{width:10px;height:10px;flex-shrink:0}.chart-legend strong{margin-left:auto;font-weight:400}.diet-list{list-style:none;margin-top:.9rem;padding-top:.8rem;border-top:.5px solid var(--line);font-family:var(--font-mono);font-size:.78rem;color:var(--muted);line-height:1.5}.diet-list li+li{margin-top:.35rem}.table-wrap{overflow-x:auto;border:1px solid var(--line)}.rsvp-table{width:100%;border-collapse:collapse;font-family:var(--font-mono);font-size:.82rem}.rsvp-table th,.rsvp-table td{text-align:left;padding:.75rem .85rem;border-bottom:.5px solid var(--line);vertical-align:top}.rsvp-table th{background:var(--olive);color:var(--cream);font-weight:400;letter-spacing:.06em;text-transform:uppercase;font-size:.72rem}.rsvp-table tr:last-child td{border-bottom:none}@media(max-width:800px){.hero-portrait{width:168px;height:224px}.hero{padding:50px 20px 1.5rem}.hero-bottom{flex-direction:column;align-items:flex-start}.dates-info,.more-info,.invite,.rsvp-section{padding-left:20px;padding-right:20px}.dates-info,.more-info dl>div,.invite{grid-template-columns:1fr;gap:1.25rem}.dates-info{gap:140px;padding-top:3.5rem}.dates-col .ghost-btn{margin-top:2.4rem}.more-info h2,.rsvp-section h2{text-align:left;font-size:28px;letter-spacing:.08em}.rsvp-intro{text-align:left}.chart-row,.admin-dash-head{grid-template-columns:1fr;flex-direction:column;align-items:flex-start}}
