:root{--color-background: #faf7f2;--color-surface: #ffffff;--color-text: #2f2b26;--color-text-muted: #6b6259;--color-accent: #b9a37d;--color-accent-soft: #e8ddc9;--color-sage: #8a9a82;--color-border: #e4ddd0;--color-danger: #a8433a;--font-display: "Book Antiqua", "Palatino Linotype", Palatino, "TeX Gyre Pagella", serif;--font-body: var(--font-display);--font-script: "Great Vibes", cursive;--font-size-hero: clamp(4.5rem, 22vw, 9rem);--font-size-h2: clamp(2.3rem, 6.5vw, 3.2rem);--font-size-lead: clamp(1.35rem, 5.5vw, 2rem);--font-size-body: 1rem;--font-size-small: .875rem;--space-xs: .5rem;--space-sm: 1rem;--space-md: 2rem;--space-lg: 4rem;--space-xl: 7rem;--ease-elegant: cubic-bezier(.22, .61, .36, 1);--transition-fade: opacity 1.4s var(--ease-elegant), transform 1.4s var(--ease-elegant);--transition-fade-slow: opacity 2.4s var(--ease-elegant), transform 2.4s var(--ease-elegant);--radius-md: 8px;--max-width: 1080px}@font-face{font-family:TeX Gyre Pagella;src:url(/fonts/texgyrepagella-regular.otf) format("opentype");font-weight:400;font-style:normal;font-display:swap}@font-face{font-family:TeX Gyre Pagella;src:url(/fonts/texgyrepagella-bold.otf) format("opentype");font-weight:700;font-style:normal;font-display:swap}@font-face{font-family:TeX Gyre Pagella;src:url(/fonts/texgyrepagella-italic.otf) format("opentype");font-weight:400;font-style:italic;font-display:swap}*{box-sizing:border-box}html{overflow-x:hidden}html,body{margin:0;padding:0;width:100%}body{background:var(--color-background);color:var(--color-text);font-family:var(--font-body);font-weight:400;font-size:var(--font-size-body);line-height:1.6;-webkit-text-size-adjust:100%}h1,h2,h3{font-family:var(--font-display);font-weight:600;margin:0 0 var(--space-sm);color:var(--color-text);overflow-wrap:break-word}h1,h2{font-family:var(--font-script);font-weight:400;line-height:1.3}p{overflow-wrap:break-word}img{max-width:100%;display:block}.section{padding:var(--space-lg) var(--space-md);max-width:var(--max-width);margin:0 auto}.countdown{display:grid;grid-template-columns:repeat(4,1fr);gap:var(--space-xs);max-width:420px;margin:0 auto;text-align:center}.countdown-item{min-width:0}.countdown-value{font-family:var(--font-display);color:var(--color-accent);font-size:clamp(1.5rem,7vw,2.5rem);line-height:1}.countdown-label{margin-top:.35rem;font-size:clamp(.65rem,2.3vw,.875rem);color:var(--color-text-muted);text-transform:uppercase;letter-spacing:.05em}@media (min-width: 480px){.countdown{gap:var(--space-sm);max-width:480px}}@media (min-width: 768px){.countdown{gap:var(--space-md);max-width:560px}}.photo-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:var(--space-xs)}@media (min-width: 600px){.photo-grid{grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:var(--space-sm)}}.photo-grid img{width:100%;aspect-ratio:1 / 1;object-fit:cover;border-radius:var(--radius-md)}.timeline{position:relative;max-width:760px;margin:var(--space-lg) calc(-1 * var(--space-xs)) 0}.timeline:before{content:"";position:absolute;top:0;bottom:0;left:50%;width:1px;background:var(--color-border);transform:translate(-50%)}.timeline-item{position:relative;display:grid;grid-template-columns:1fr 20px 1fr;grid-template-rows:auto auto;column-gap:var(--space-xs);row-gap:.4rem;padding-bottom:var(--space-lg)}.timeline-item:last-child{padding-bottom:0}.timeline-dot-col{grid-column:2;grid-row:1;align-self:center;display:flex;justify-content:center}.timeline-item:nth-child(odd) .timeline-polaroid{grid-column:1;grid-row:1;justify-self:end}.timeline-item:nth-child(odd) .timeline-caption{grid-column:1;grid-row:2;justify-self:end;text-align:right}.timeline-item:nth-child(2n) .timeline-polaroid{grid-column:3;grid-row:1;justify-self:start}.timeline-item:nth-child(2n) .timeline-caption{grid-column:3;grid-row:2;justify-self:start;text-align:left}.timeline-dot{position:relative;z-index:1;width:9px;height:9px;border-radius:50%;background:var(--color-accent);box-shadow:0 0 0 3px var(--color-background)}.timeline-polaroid{background:#fff;padding:5px 5px 16px;border-radius:2px;box-shadow:0 6px 14px #2f2b2624;width:100%;max-width:140px;--tilt: -1.2deg;transform:rotate(var(--tilt))}.timeline-item:nth-child(2n) .timeline-polaroid{--tilt: 1.2deg}.timeline-polaroid.reveal{--reveal-shift: 26px;transition:var(--transition-fade-slow)}.timeline-polaroid img{width:100%;aspect-ratio:4 / 5;object-fit:cover;border-radius:1px;background:var(--color-accent-soft);opacity:0;transition:opacity 1.6s var(--ease-elegant)}.timeline-polaroid img.is-loaded{opacity:1}@media (prefers-reduced-motion: reduce){.timeline-polaroid img{opacity:1;transition:none}}.timeline-year{display:block;text-align:center;margin-top:5px;font-family:var(--font-display);font-size:.7rem;color:var(--color-text-muted)}.timeline-caption{font-family:var(--font-display);font-size:.8rem;line-height:1.3;color:var(--color-text);margin:0}@media (min-width: 420px){.timeline{margin-inline:0}.timeline-item{grid-template-columns:1fr 24px 1fr;gap:var(--space-sm)}.timeline-polaroid{max-width:165px}.timeline-caption{font-size:.9rem}}@media (min-width: 768px){.timeline-item{grid-template-columns:1fr 32px 1fr;gap:var(--space-md);padding-bottom:var(--space-xl)}.timeline-dot{width:12px;height:12px}.timeline-polaroid{max-width:240px;padding:10px 10px 28px}.timeline-year{font-size:1rem;margin-top:10px}.timeline-caption{font-size:1.1rem;max-width:320px}}.hero{min-height:100vh;min-height:100dvh;--hero-villa-h: max(20vh, 16vw)}@media (min-width: 480px){.hero{--hero-villa-h: max(22vh, 16vw)}}@media (min-width: 768px){.hero{--hero-villa-h: max(24vh, 16vw)}}.hero-content{position:relative;margin-bottom:calc(var(--hero-villa-h) + var(--space-md))}.couple-names{display:flex;flex-direction:column;align-items:center;font-size:var(--font-size-hero);line-height:1;margin:.4em 0 .5em}.couple-and{font-size:.42em;line-height:1;margin:-.15em 0 -.05em}.hero-villa{position:absolute;bottom:0;left:0;width:100%;height:var(--hero-villa-h);object-fit:cover;object-position:center bottom;opacity:.92;pointer-events:none}@media (min-width: 768px){.section{padding:var(--space-xl) var(--space-md)}}.reveal{--reveal-shift: 16px;opacity:0;transform:translate3d(0,var(--reveal-shift),0) rotate(var(--tilt, 0deg));transition:var(--transition-fade)}.reveal.is-visible,.reveal-group.is-visible .reveal{--reveal-shift: 0px;opacity:1}@media (prefers-reduced-motion: reduce){.reveal{--reveal-shift: 0px;transition:none}}button{font-family:var(--font-body)}input,textarea,select,button{font-size:16px}button,.btn-primary{min-height:44px}label{display:block;font-size:.85rem;letter-spacing:.03em;color:var(--color-text-muted);margin-bottom:.5rem}fieldset legend{font-size:.78rem;letter-spacing:.1em;text-transform:uppercase;color:var(--color-text-muted);padding:0;margin-bottom:.7rem}input:not([type=radio]):not([type=checkbox]):not([type=file]),textarea,select{display:block;width:100%;min-height:44px;border:none;border-bottom:1px solid var(--color-border);border-radius:0;background:transparent;padding:.5rem .15rem;color:var(--color-text);font-family:var(--font-body);transition:border-color .3s ease,box-shadow .3s ease}input:not([type=radio]):not([type=checkbox]):not([type=file])::placeholder,textarea::placeholder{color:var(--color-text-muted);opacity:.7}input:not([type=radio]):not([type=checkbox]):not([type=file]):hover,textarea:hover,select:hover{border-bottom-color:var(--color-accent)}input:not([type=radio]):not([type=checkbox]):not([type=file]):focus,textarea:focus,select:focus{outline:none;border-bottom:1px solid var(--color-accent);box-shadow:0 1px 0 0 var(--color-accent)}textarea{min-height:88px;resize:vertical}.rsvp-dietary{background:var(--color-accent-soft);border-radius:var(--radius-md);padding:var(--space-sm)}.rsvp-dietary label{margin-bottom:0}.rsvp-dietary-label{display:flex;align-items:flex-start;gap:.5rem;font-family:var(--font-display);font-size:1.1rem;font-weight:600;letter-spacing:0;text-transform:none;color:var(--color-text);margin-bottom:.3rem}.rsvp-dietary-label:before{content:"";flex-shrink:0;width:20px;height:20px;margin-top:.2em;background:var(--color-accent);-webkit-mask:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='1.6'><path d='M12 3v6M12 21v-6M5 8l4 3M19 8l-4 3M5 16l4-3M19 16l-4-3'/><circle cx='12' cy='12' r='2.6'/></svg>") center / contain no-repeat;mask:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='1.6'><path d='M12 3v6M12 21v-6M5 8l4 3M19 8l-4 3M5 16l4-3M19 16l-4-3'/><circle cx='12' cy='12' r='2.6'/></svg>") center / contain no-repeat}.rsvp-dietary-hint{display:block;font-size:.82rem;line-height:1.45;color:var(--color-text-muted);margin-bottom:.8rem;letter-spacing:.01em}.radio-option{display:inline-flex;align-items:center;gap:.6rem;margin:0 var(--space-md) var(--space-xs) 0;cursor:pointer;font-size:1rem;letter-spacing:normal;color:var(--color-text)}.radio-option input[type=radio]{position:absolute;width:1px;height:1px;opacity:0}.radio-dot{position:relative;flex:0 0 auto;width:18px;height:18px;border-radius:50%;border:1.5px solid var(--color-border);transition:border-color .3s ease}.radio-dot:after{content:"";position:absolute;top:3px;right:3px;bottom:3px;left:3px;border-radius:50%;background:var(--color-accent);transform:scale(0);transition:transform .2s ease}.radio-option input[type=radio]:checked+.radio-dot{border-color:var(--color-accent)}.radio-option input[type=radio]:checked+.radio-dot:after{transform:scale(1)}.radio-option input[type=radio]:focus-visible+.radio-dot{outline:2px solid var(--color-accent);outline-offset:2px}.btn-text{background:none;border:none;min-height:auto;padding:.3rem 0;color:var(--color-accent);font-size:.85rem;letter-spacing:.04em;cursor:pointer;text-decoration:underline;text-underline-offset:3px;transition:color .3s ease}.btn-text:hover{color:var(--color-sage)}.location-note{color:var(--color-text-muted);font-size:.9rem;margin:-.5rem 0 var(--space-md)}.location-card{display:block;max-width:420px;text-decoration:none;color:inherit;padding:var(--space-md) 0 0;border-top:1px solid var(--color-border);transition:opacity .3s ease}.location-card:hover{opacity:.75}.location-pin{color:var(--color-accent);margin-bottom:.6rem}.location-card h3{margin-bottom:.2rem}.location-card p{margin:0 0 .2rem}.location-cta{display:inline-block;margin-top:.9rem;font-family:var(--font-body);font-size:.8rem;letter-spacing:.08em;text-transform:uppercase;color:var(--color-accent);text-decoration:underline;text-underline-offset:4px;transition:color .3s ease}.location-card:hover .location-cta{color:var(--color-sage)}.btn-primary{display:inline-flex;align-items:center;justify-content:center;background:var(--color-accent);color:var(--color-surface);border:none;padding:.75rem 2rem;border-radius:var(--radius-md);font-size:16px;cursor:pointer;transition:background .3s ease;text-decoration:none;text-align:center}.btn-primary:hover,.btn-primary:active{background:var(--color-sage)}
