:root {
  --olive:#52451b; --blush:#f6d8cc; --blue:#acb3c6; --wine:#490013; --terra:#79301f;
  --paper:#fcf6ed; --ink:#49382f; --script:'Parisienne',cursive; --serif:'Lora',Georgia,serif; --sans:'DM Sans',sans-serif;
  --safe-top:env(safe-area-inset-top,0px); --safe-right:env(safe-area-inset-right,0px);
  --safe-bottom:env(safe-area-inset-bottom,0px); --safe-left:env(safe-area-inset-left,0px);
}
* { box-sizing:border-box; }
html { scroll-behavior:smooth; scroll-padding-block:24px; -webkit-text-size-adjust:100%; text-size-adjust:100%; }
body { margin:0; background:var(--paper); color:var(--ink); font:16px/1.6 var(--sans); }
::selection { background:var(--wine); color:var(--blush); }
a { color:inherit; text-decoration:none; }
button,input,textarea,select { font:inherit; }
button,a,input,summary { -webkit-tap-highlight-color:transparent; }
button,summary { cursor:pointer; }
button { border:0; }
:focus-visible { outline:2px solid var(--terra); outline-offset:5px; }
.countdown :focus-visible,.rsvp :focus-visible { outline-color:var(--blue); }
h1,h2,h3,p { margin:0; }
h2 { font:400 italic clamp(2.1rem,4.1vw,3.7rem)/1.2 var(--serif); letter-spacing:-.055em; }
h3 { font:400 1.5rem/1.4 var(--serif); }
img { display:block; width:100%; height:100%; object-fit:cover; }
[hidden] { display:none!important; }
.eyebrow { font-size:12px; font-weight:500; letter-spacing:.2em; text-transform:uppercase; }
.skip { position:absolute; top:-100px; left:calc(16px + var(--safe-left)); z-index:10; padding:12px; background:var(--wine); color:var(--paper); }
.skip:focus { top:calc(10px + var(--safe-top)); }
.header { position:absolute; top:0; left:0; right:0; z-index:2; display:flex; align-items:center; gap:30px; min-height:calc(94px + var(--safe-top)); padding:var(--safe-top) max(6%,calc(var(--safe-right) + 16px)) 0 max(6%,calc(var(--safe-left) + 16px)); color:var(--wine); }
.monogram { font:30px var(--serif); letter-spacing:-.13em; margin-right:auto; }
.monogram span { font-style:italic; padding:0 4px; }
.header nav { display:flex; gap:28px; font-size:14px; }
.header a { min-height:44px; display:inline-flex; align-items:center; }
.languages { display:flex; gap:2px; padding:3px; border:1px solid #49001330; border-radius:999px; }
.languages button { min-width:44px; min-height:44px; border-radius:50%; background:transparent; color:var(--wine); font-size:12px; }
.languages button[aria-pressed=true] { background:var(--wine); color:var(--blush); }
.cover { background:var(--blush); color:var(--wine); min-height:100vh; min-height:100svh; display:grid; grid-template-rows:1fr auto; padding:calc(105px + var(--safe-top)) max(7%,calc(var(--safe-right) + 20px)) calc(20px + var(--safe-bottom)) max(7%,calc(var(--safe-left) + 20px)); text-align:center; }
.cover-center { align-self:center; padding:15px 0 30px; }
.cover .eyebrow { margin-bottom:23px; }
h1 { font:400 clamp(90px,10.5vw,155px)/1.03 var(--script); letter-spacing:-.055em; }
.second-name { display:block; }
h1 i { font:italic .47em var(--serif); vertical-align:middle; margin-right:.13em; }
.cover-date { font:400 20px var(--serif); margin-top:26px; letter-spacing:.18em; }
.cover-date span { padding:0 5px; }
.cover-location { font-size:13px; margin-top:10px; }
.button { display:inline-flex; align-items:center; justify-content:center; gap:22px; min-height:48px; padding:14px 25px; border-radius:999px; background:var(--wine); color:var(--paper); border:1px solid transparent; font-size:14px; max-width:100%; transition:background .25s,transform .25s; }
.button>span:last-child { flex-shrink:0; }
.button:hover { background:var(--terra); transform:translateY(-2px); }
.cover .button { margin-top:27px; }
.discover { display:flex; align-items:center; justify-content:center; gap:15px; min-height:44px; font-size:12px; }
.discover>.icon { animation:nudge 2.5s ease-in-out infinite; }
.section { --gutter:9%; padding:85px max(var(--gutter),calc(var(--safe-right) + 20px)) 85px max(var(--gutter),calc(var(--safe-left) + 20px)); }
.section>* { min-width:0; }
.day { display:grid; grid-template-columns:minmax(0,1fr) minmax(0,1fr); align-items:center; gap:11%; }
.photo-placeholder { position:relative; display:flex; flex-direction:column; align-items:center; justify-content:center; overflow:hidden; background:var(--blush); color:var(--terra); font-size:13px; text-align:center; }
.photo-placeholder::after { content:''; position:absolute; inset:16px; border:1px solid currentColor; opacity:.25; border-radius:inherit; pointer-events:none; }
.arch { aspect-ratio:4/4.8; border-radius:50% 50% 20px 20px; max-width:420px; width:100%; justify-self:center; }
.placeholder-amp { font:110px/1.2 var(--script); opacity:.35; margin-bottom:14px; }
.day-info .eyebrow { color:var(--terra); margin-bottom:20px; }
.event-date { margin:26px 0; font-size:16px; }
.day-info>p:not(.eyebrow):not(.event-date) { font-size:14px; }
.schedule-note { color:#85756b; margin-top:8px; }
.button-outline { background:transparent; color:var(--wine); border-color:#49001360; margin-top:25px; }
.button-outline:hover { color:var(--paper); }
.calendar { margin-top:16px; max-width:360px; }
.calendar summary { font-size:14px; min-height:44px; padding:10px 2px; text-underline-offset:5px; }
.calendar-options { display:flex; flex-direction:column; gap:5px; padding:12px 16px; border:1px solid #49001325; border-radius:18px; margin-top:6px; }
.calendar-options a { min-height:44px; display:flex; align-items:center; border-bottom:1px solid #49001315; font-size:14px; }
.calendar-options p { font-size:12px; color:#85756b; margin-top:6px; }
.countdown { background:var(--wine); color:var(--blush); text-align:center; }
.countdown .eyebrow { opacity:.85; }
.countdown h2 { margin:20px 0 38px; }
.counter { display:grid; grid-template-columns:repeat(4,minmax(0,1fr)); gap:20px; max-width:750px; margin:auto; }
.counter-unit { min-width:0; }
.counter-number { position:relative; background:#f6d8cc0c; border:1px solid #f6d8cc40; border-radius:18px; padding:22px 8px; perspective:500px; overflow:hidden; box-shadow:0 5px 0 #23000950; }
.counter-number::after { content:''; position:absolute; left:0; right:0; top:50%; border-top:1px solid #49001380; pointer-events:none; }
.counter-number>span { display:block; font:400 clamp(42px,7vw,90px)/1.12 var(--serif); font-variant-numeric:tabular-nums; letter-spacing:-.06em; transform-origin:center; }
.counter-unit>span { display:block; margin-top:17px; font-size:12px; letter-spacing:.12em; }
.memories { text-align:center; }
.memories h2 { font-size:clamp(30px,3.5vw,47px); }
.photo-pair { display:grid; grid-template-columns:1fr 1fr; align-items:center; gap:7%; max-width:900px; margin:45px auto 0; padding:0 12px; }
.memory-one { aspect-ratio:1.12; background:var(--blue); color:#354059; border-radius:25px; transform:rotate(-3deg); }
.memory-two { aspect-ratio:1.12; background:var(--olive); color:var(--paper); border-radius:25px; transform:rotate(3deg); }
.rsvp { background:var(--olive); color:var(--paper); display:grid; grid-template-columns:.8fr 1.2fr; gap:10%; align-items:start; }
.rsvp-copy { padding-top:35px; }
.rsvp-copy h2 { font-family:var(--script); font-style:normal; font-size:clamp(70px,8vw,110px); line-height:1.3; margin:12px 0; color:var(--blush); }
.rsvp-copy>p:last-child { font-size:16px; }
.rsvp-form { padding:32px; border-radius:26px; background:var(--paper); color:var(--wine); position:relative; }
.demo-notice { font-size:12px; background:#acb3c633; border-radius:12px; padding:12px 14px; margin-bottom:23px; color:#424b60; }
.field { margin-bottom:20px; }
.field label,legend,.guest-count label { display:block; font-size:14px; margin-bottom:8px; }
input:not([type=radio]):not([type=checkbox]) { width:100%; min-width:0; max-width:100%; min-height:48px; background:transparent; border:1px solid #49001335; border-radius:12px; padding:12px 13px; color:var(--wine); font-size:max(16px,1rem); scroll-margin-block:24px; }
input::placeholder { font-size:14px; color:#89766e; }
fieldset { border:0; padding:0; margin:0 0 23px; min-inline-size:0; }
legend { padding:0; }
.attendance { display:flex; flex-wrap:wrap; gap:9px; }
.radio-option { display:flex; align-items:center; gap:9px; border:1px solid #49001335; border-radius:14px; flex:1 1 140px; padding:13px 12px; min-height:48px; font-size:14px; cursor:pointer; }
.radio-option:has(input:checked) { background:var(--blush); border-color:var(--wine); }
input[type=radio],input[type=checkbox] { accent-color:var(--wine); width:18px; height:18px; margin:0; flex-shrink:0; }
.guest-count { display:flex; align-items:center; justify-content:space-between; gap:12px; padding:15px 0 23px; }
.guest-count label { margin-bottom:2px; }
.guest-count p { font-size:12px; color:#89766e; }
.stepper { display:flex; align-items:center; border:1px solid #49001335; border-radius:999px; padding:3px; flex-shrink:0; }
.stepper button { background:var(--blush); color:var(--wine); border-radius:50%; width:44px; height:44px; font-size:23px; line-height:1; }
.stepper button:disabled { opacity:.35; cursor:default; }
.stepper #guests { border:0; border-radius:0; width:44px; text-align:center; padding:8px 0; appearance:textfield; }
#guests::-webkit-inner-spin-button,#guests::-webkit-outer-spin-button { -webkit-appearance:none; margin:0; }
.consent { display:flex; gap:10px; align-items:center; min-height:44px; font-size:12px; margin:20px 0; }
.submit { width:100%; }
.submit:disabled { cursor:wait; opacity:.65; transform:none; }
.form-status { font-size:14px; overflow-wrap:anywhere; }
.form-status:not(:empty) { margin-top:18px; padding:14px; background:#f6d8cc65; border-radius:12px; }
.form-status[data-state=success] { color:var(--olive); background:#52451b15; }
.reset-response { background:none; color:var(--wine); margin-top:10px; padding:10px 0; min-height:44px; text-decoration:underline; text-underline-offset:5px; font-size:14px; }
.honeypot { position:absolute; left:-10000px; width:1px; height:1px; overflow:hidden; }
.contact { text-align:center; }
.contact>p { margin:17px 0 28px; font-size:15px; }
.contact-links { display:flex; flex-wrap:wrap; justify-content:center; gap:18px; }
.contact-links a { display:flex; align-items:center; justify-content:space-between; text-align:left; gap:28px; border:1px solid #49001330; border-radius:24px; padding:18px 24px; min-width:270px; color:var(--wine); }
.contact-links a>span:first-child { font-family:var(--serif); font-size:21px; }
.contact-links small { display:block; font:12px var(--sans); margin-top:5px; color:var(--terra); }
.contact-links a>span:last-child { font-size:12px; }
.contact-links a:hover { background:var(--blush); }
.footer { position:relative; text-align:center; background:var(--blush); color:var(--wine); padding:45px calc(20px + var(--safe-right)) calc(75px + var(--safe-bottom)) calc(20px + var(--safe-left)); }
.footer>p { font:clamp(32px,5vw,60px) var(--script); margin-bottom:10px; }
.footer>p span { font-family:var(--serif); font-style:italic; font-size:.65em; }
.footer>span { font-size:12px; }
.back-top { position:absolute; width:44px; height:44px; display:grid; place-items:center; border:1px solid #49001340; border-radius:50%; bottom:calc(14px + var(--safe-bottom)); left:calc(50% - 22px); }
.entrance { animation:enter 1s both cubic-bezier(.22,1,.36,1); }
.cover-center>:nth-child(2) { animation-delay:.1s; }.cover-center>:nth-child(3) { animation-delay:.2s; }.cover-center>:nth-child(4) { animation-delay:.3s; }.cover-center>:nth-child(5) { animation-delay:.4s; }
.motion .reveal { opacity:0; translate:0 20px; transition:opacity .8s,translate .8s; }.motion .reveal.visible { opacity:1; translate:0 0; }
@keyframes enter { from {opacity:0;translate:0 20px} to {opacity:1;translate:0 0} }
@keyframes nudge { 50% {transform:translateY(5px)} }
@media(min-width:1600px) { .section { --gutter:max(9%,calc((100vw - 1250px)/2)); } }
@media(max-width:1000px) { .section { --gutter:7%; padding-block:70px; }.day{gap:7%}.rsvp{gap:6%;grid-template-columns:.7fr 1.3fr}.rsvp-form{padding:25px}.attendance{flex-direction:column}.rsvp-copy h2{font-size:80px}.guest-count{flex-wrap:wrap} }
@media(max-width:650px) {
  .header { min-height:calc(78px + var(--safe-top)); gap:14px; }.header nav{display:none}.monogram{font-size:27px}.languages button{min-height:44px;min-width:44px}
  .cover { padding-top:calc(88px + var(--safe-top)); }.cover-center{padding:15px 0 25px}.cover .eyebrow{font-size:12px;margin-bottom:20px}h1{font-size:clamp(78px,23vw,120px)}
  .cover-date{font-size:18px;margin-top:25px}.cover-location{font-size:13px}.cover .button{margin-top:25px}.discover{font-size:12px}
  .section { padding-block:58px; }.day{grid-template-columns:1fr;gap:38px}.arch{max-width:300px;aspect-ratio:4/4.1}.day-info{text-align:center}.day-info .eyebrow{margin-bottom:15px}.event-date{margin:23px 0}.calendar{margin:15px auto 0;text-align:left}.calendar summary{text-align:center}.calendar-options{text-align:left}
  .countdown h2{margin:17px 0 30px}.counter{gap:9px}.counter-number{padding:19px 2px;border-radius:12px}.counter-number>span{font-size:clamp(28px,8.4vw,48px)}.counter-unit>span{font-size:10px;letter-spacing:.04em;margin-top:13px}
  .memories h2{font-size:30px}.photo-pair{gap:8%;margin-top:30px;padding-inline:6px}.placeholder-amp{font-size:65px;margin-bottom:6px}.photo-placeholder{font-size:11px}.arch .placeholder-amp{font-size:100px}.arch{font-size:13px}.memory-one,.memory-two{border-radius:17px;aspect-ratio:.8}.photo-placeholder::after{inset:10px}
  .rsvp{grid-template-columns:1fr;gap:27px}.rsvp-copy{text-align:center;padding:0}.rsvp-copy h2{font-size:80px;margin:3px 0}.rsvp-form{padding:24px 20px}.guest-count{flex-wrap:nowrap}.guest-count label{font-size:13px}.stepper{padding:2px}.stepper #guests{width:37px}.stepper button{width:44px;height:44px}.radio-option{flex:auto}.consent{font-size:13px}
  .contact-links{flex-direction:column;align-items:center}.contact-links a{width:100%;max-width:360px;min-width:0;padding:18px 22px}.contact>p{font-size:14px}
}
@media(max-width:360px) { .rsvp-form{padding-inline:16px}.guest-count{flex-direction:column;align-items:flex-start;gap:12px}.counter{gap:6px}.counter-number>span{font-size:28px}.cover-date{letter-spacing:.12em} }
@media(max-height:500px) and (orientation:landscape) { .cover-center{padding-top:5px}h1{font-size:65px}.second-name{display:inline;margin-left:20px}.cover .eyebrow{margin-bottom:10px}.cover-date{margin-top:15px}.cover-location{margin-top:5px}.cover .button{margin-top:15px}.cover{padding-top:calc(85px + var(--safe-top))}.rsvp{grid-template-columns:1fr}.rsvp-copy{text-align:center}.rsvp-form{max-width:600px;width:100%;justify-self:center} }
@media(prefers-reduced-motion:reduce) { html{scroll-behavior:auto}*,*::before,*::after{animation:none!important;transition:none!important}.motion .reveal{opacity:1;translate:none} }

/* Lucide icons, bundled locally. No icon font or platform-dependent glyphs. */
.icon { width:18px; height:18px; fill:none; stroke:currentColor; stroke-width:1.6; stroke-linecap:round; stroke-linejoin:round; flex-shrink:0; vertical-align:middle; }
.contact-links a>span:last-child { display:inline-flex; align-items:center; gap:7px; }
.stepper button { display:grid; place-items:center; }
textarea { display:block; width:100%; min-width:0; min-height:120px; resize:vertical; border:1px solid #49001335; border-radius:12px; background:transparent; color:var(--wine); padding:12px 13px; font-size:max(16px,1rem); line-height:1.6; scroll-margin-block:24px; }
textarea::placeholder { font-size:14px; color:#89766e; }
/* 100svh is intentionally stable when Safari/Chrome toolbars expand or retract.
   Avoid dynamic viewport heights and forced smooth scrolling on touch devices. */
@media (hover:none) and (pointer:coarse) { html { scroll-behavior:auto; } }

/* A mechanical split-flap: the OLD upper half folds down, then the NEW lower
   half unfolds, while the other two halves remain stationary. */
.counter-number { --card-height:clamp(100px,12vw,150px); height:var(--card-height); padding:0; overflow:visible; background:#581323; isolation:isolate; }
.counter-number::after { z-index:5; border-top:2px solid #290009b3; }
.counter-number>.counter-value { position:absolute; width:1px; height:1px; padding:0; margin:-1px; overflow:hidden; clip-path:inset(50%); white-space:nowrap; }
.flip-panel { position:absolute; left:0; right:0; height:50%; overflow:hidden; background:#581323; backface-visibility:hidden; -webkit-backface-visibility:hidden; }
.flip-panel>span { position:absolute; left:0; right:0; height:var(--card-height); display:flex; align-items:center; justify-content:center; font:400 clamp(42px,7vw,90px)/1 var(--serif); font-variant-numeric:tabular-nums; letter-spacing:-.06em; }
.flip-top { top:0; border-radius:17px 17px 0 0; transform-origin:center bottom; }
.flip-bottom { bottom:0; border-radius:0 0 17px 17px; transform-origin:center top; background:#611829; }
.flip-top>span { top:0; }
.flip-bottom>span { bottom:0; }
.flip-out { z-index:3; }
.flip-in { z-index:4; transform:rotateX(90deg); }
.counter-number.is-flipping .flip-out { animation:flip-out 300ms ease-in forwards; }
.counter-number.is-flipping .flip-in { animation:flip-in 300ms 300ms ease-out forwards; }
@keyframes flip-out { from {transform:rotateX(0);filter:brightness(1)} to {transform:rotateX(-90deg);filter:brightness(.55)} }
@keyframes flip-in { from {transform:rotateX(90deg);filter:brightness(.55)} to {transform:rotateX(0);filter:brightness(1)} }
@media(max-width:650px) {
  .counter-number { --card-height:clamp(78px,22vw,108px); padding:0; }
  .flip-panel>span { font-size:clamp(28px,8.4vw,48px); }
  .flip-top { border-radius:11px 11px 0 0; }.flip-bottom { border-radius:0 0 11px 11px; }
}
@media(max-width:360px) { .flip-panel>span { font-size:28px; } }
@media(prefers-reduced-motion:reduce) { .flip-out,.flip-in { display:none; } }
