@import url("../../shared/tokens.css?v=7");

@font-face{font-family:"Annabelle Cyr";src:url("assets/fonts/annabelle-cyr.ttf") format("truetype");font-display:swap;font-weight:400}
@font-face{font-family:"Santa Catarina";src:url("assets/fonts/santa-catarina.ttf") format("truetype");font-display:swap;font-weight:400}
@font-face{font-family:"TT Lovelies Script";src:url("assets/fonts/tt-lovelies-script.otf") format("opentype");font-display:swap;font-weight:400}

:root{
  --wedding-paper:#faf9f6;--wedding-beige:#ede8de;--wedding-ink:#2c3329;--wedding-body:#4a5445;
  --wedding-muted:#71796e;--wedding-sage:#7a8c75;--wedding-soft-sage:#d9e2d5;--wedding-border:#c2baa9;
  --wedding-dark:#1a1e19;--wedding-shadow:rgba(44,51,41,.15);--wedding-radius:var(--radius-sm,6px);
  --wedding-script:"Santa Catarina",Georgia,serif;--wedding-accent-script:"TT Lovelies Script",cursive;
}
*{box-sizing:border-box}
html{min-width:320px;background:var(--wedding-dark);scroll-behavior:smooth}
body{min-width:320px;min-height:100vh;margin:0;overflow-x:hidden;background:var(--wedding-dark);color:var(--wedding-body);font-family:var(--font-sans);font-size:1rem;line-height:1.5;text-rendering:optimizeLegibility}
body.opening-is-open{overflow:hidden}
button,a,select,input,textarea{font:inherit}button,a,select{touch-action:manipulation}button,select{cursor:pointer}
img{display:block;max-width:100%}audio[data-music]{display:none}[hidden]{display:none!important}
button:focus-visible,a:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible{outline:2px solid var(--wedding-sage);outline-offset:3px}
.visually-hidden{position:absolute!important;width:1px!important;height:1px!important;padding:0!important;overflow:hidden!important;clip:rect(0,0,0,0)!important;white-space:nowrap!important;border:0!important}
.skip-link{position:fixed;z-index:10001;top:.75rem;left:.75rem;padding:.65rem .9rem;transform:translateY(-160%);border-radius:999px;background:var(--wedding-ink);color:var(--wedding-paper);font-size:var(--text-caption);text-decoration:none;transition:transform var(--transition-fast)}.skip-link:focus{transform:translateY(0)}
.invitation{position:relative;isolation:isolate;width:100%;max-width:30rem;min-height:100vh;margin:0 auto;overflow:hidden;background:var(--wedding-paper);color:var(--wedding-body);box-shadow:0 0 2rem #0003}
.invitation__grain{position:absolute;z-index:8;inset:0;pointer-events:none;opacity:.11;background-image:url("data:image/svg+xml,%3Csvg viewBox='0 0 160 160' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.9' numOctaves='3' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)' opacity='.13'/%3E%3C/svg%3E");mix-blend-mode:multiply}
.invitation__sections{position:relative;z-index:1}.source-block,.source-divider{position:relative;width:100%}.source-divider{min-height:2.75rem;overflow:hidden;background:var(--wedding-beige)}.source-divider img{width:100%;height:2.75rem;object-fit:cover;object-position:center}
.script-heading{margin:0;color:var(--wedding-ink);font-family:var(--wedding-script);font-size:clamp(2.65rem,11vw,3.5rem);font-weight:400;line-height:.95;text-align:center}
.source-reveal,.scroll-reveal{opacity:0;transform:translateY:1rem;transition:opacity 700ms var(--ease-editorial),transform 700ms var(--ease-editorial);transition-delay:var(--reveal-delay,0ms)}.source-reveal.is-revealed,.scroll-reveal.is-revealed{opacity:1;transform:none}

/* The hero follows the supplied mobile-first editorial composition. */
.hero-block{display:flex;min-height:min(95svh,52rem);flex-direction:column;padding:1.35rem 1.5rem 2.2rem;overflow:hidden;background:var(--wedding-paper)}
.hero__controls{position:absolute;z-index:3;top:max(.9rem,env(safe-area-inset-top));right:max(1rem,env(safe-area-inset-right));left:max(1rem,env(safe-area-inset-left));display:flex;align-items:center;justify-content:flex-end;min-height:var(--touch-target)}
.media-toggle{position:absolute;left:0}
.media-toggle,.language-switcher button{min-height:var(--touch-target);border:1px solid #7a8c756b;border-radius:999px;background:#faf9f6cc;color:var(--wedding-body);font-size:var(--text-label);letter-spacing:.04em;transition:background-color var(--transition-fast),border-color var(--transition-fast),color var(--transition-fast),transform var(--transition-fast)}
.media-toggle{display:inline-flex;align-items:center;gap:.35rem;padding:.35rem .75rem}.media-toggle__icon{color:var(--wedding-sage);font-size:1.1rem;line-height:1}.language-switcher{display:flex;gap:.25rem}.language-switcher button{min-width:2.75rem;padding:.35rem .55rem}.media-toggle:hover,.language-switcher button:hover{border-color:var(--wedding-sage);background:var(--wedding-soft-sage);color:var(--wedding-ink)}.media-toggle:active,.language-switcher button:active{transform:scale(.97)}.language-switcher button[aria-pressed="true"]{border-color:var(--wedding-ink);background:var(--wedding-ink);color:var(--wedding-paper)}
.hero__top-line{position:absolute;top:4.7rem;right:1.5rem;width:3.2rem;border-top:1px solid var(--wedding-border)}.hero__top-text{width:min(65%,15rem);margin:2.8rem 0 0 auto;color:var(--wedding-body);font-family:var(--font-serif);font-size:.92rem;font-style:italic;line-height:1.35;text-align:right;white-space:pre-line}
.hero-gallery{display:flex;align-items:center;justify-content:space-between;width:calc(100% + 3rem);min-height:18rem;margin:1.15rem -1.5rem 1.5rem}.hero-photo{position:relative;flex:0 0 auto;margin:0;overflow:hidden;background:var(--wedding-paper)}.hero-photo img{width:100%;height:100%;object-fit:cover}.hero-photo--left{z-index:1;width:26%;aspect-ratio:2/3;box-shadow:0 .45rem 1.15rem var(--wedding-shadow)}.hero-photo--center{z-index:2;width:43%;aspect-ratio:2/3;padding:.55rem .55rem 2.55rem;box-shadow:0 .6rem 1.4rem #2c332933;transform:rotate(-1.5deg)}.hero-photo--center figcaption{position:absolute;right:.5rem;bottom:.65rem;left:.5rem;overflow:hidden;color:var(--wedding-body);font-family:var(--wedding-accent-script);font-size:1.25rem;line-height:1;text-align:center;text-overflow:ellipsis;white-space:nowrap}.hero-photo--right{z-index:1;width:25%;aspect-ratio:2/3;box-shadow:0 .45rem 1.15rem var(--wedding-shadow)}
.hero__copy{display:flex;flex:1 1 auto;width:100%;max-width:25rem;flex-direction:column;align-items:center;margin:0 auto;padding-top:.6rem;text-align:center}.hero__eyebrow{display:none}.hero__title{margin:0;color:var(--wedding-ink);font-family:var(--font-serif);font-size:clamp(1.8rem,8vw,2.35rem);font-weight:500;line-height:.98;text-wrap:balance}.hero__subtitle{max-width:20rem;margin:.8rem auto 0;color:var(--wedding-body);font-family:var(--font-serif);font-size:.95rem;line-height:1.35}.hero__date{display:block;width:fit-content;margin-top:auto;margin-right:auto;margin-bottom:2.5rem;margin-left:auto;padding-top:.8rem;border-top:1px solid var(--wedding-soft-sage);color:var(--wedding-ink);font-family:var(--wedding-script);font-size:2.3rem;font-variant-numeric:tabular-nums;line-height:.95}
.hero-animate{opacity:0;transform:translateY:1.2rem;transition:opacity 900ms var(--ease-editorial),transform 900ms var(--ease-editorial)}.hero-entered .hero-animate{opacity:1;transform:none}.hero-entered .hero__top-text{transition-delay:80ms}.hero-entered .hero-gallery{transition-delay:180ms}.hero-entered .hero__copy{transition-delay:300ms}

.welcome-section{padding:2.2rem 1.5rem 0;background:var(--wedding-beige);text-align:center}.welcome-section__ornament{margin-bottom:.8rem;color:var(--wedding-sage);font-size:1.2rem}.welcome-section__text{max-width:19rem;margin:1.35rem auto 0;color:var(--wedding-body);font-family:var(--font-serif);font-size:1.12rem;line-height:1.45}.calendar-section{padding:1.55rem 1.5rem 2.45rem;background:var(--wedding-beige)}
.calendar-card{width:100%;padding:1.25rem 1.15rem 1.1rem;border:1px solid #c2baa980;border-radius:var(--wedding-radius);background:var(--wedding-paper);box-shadow:0 .5rem 1.4rem #2c332914;text-align:center}.calendar-card__month{margin:0 0 1rem;color:var(--wedding-ink);font-family:var(--font-serif);font-size:1.25rem;font-weight:600;text-transform:capitalize}.calendar-card__weekdays,.calendar-card__grid{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:.25rem}.calendar-card__weekdays{margin-bottom:.45rem}.calendar-card__weekday{color:var(--wedding-muted);font-size:.66rem;font-weight:700;letter-spacing:.06em;text-transform:uppercase}.calendar-card__day{display:grid;place-items:center;min-height:2rem;border-radius:50%;color:var(--wedding-body);font-size:.84rem}.calendar-card__day--empty{visibility:hidden}.calendar-card__day--event{background:var(--wedding-sage);color:var(--wedding-paper);font-weight:700}.calendar-card__time{margin:1rem 0 0;color:var(--wedding-sage);font-family:var(--wedding-accent-script);font-size:1.25rem}

.gallery-section{padding:4.6rem 1.5rem 4.8rem;overflow:hidden;background:var(--wedding-paper)}.gallery-section__title{position:relative;z-index:1;margin-bottom:2.5rem;color:var(--wedding-sage);font-size:clamp(3.25rem,14vw,4.5rem);text-align:left;transform:rotate(-4deg)}.gallery-list{display:flex;flex-direction:column;align-items:center}.gallery-card{position:relative;width:78%;aspect-ratio:3/4;margin:0;overflow:hidden;border-radius:var(--wedding-radius);background:var(--wedding-paper);box-shadow:0 .6rem 1.25rem var(--wedding-shadow)}.gallery-card img{width:100%;height:100%;aspect-ratio:3/4;object-fit:cover;transition:transform 900ms var(--ease-editorial)}.gallery-card:hover img{transform:scale(1.035)}.gallery-card--1{z-index:4;transform:rotate(-3deg)}.gallery-card--2{z-index:3;margin-top:-1.7rem;transform:translateX(2rem) rotate(4deg)}.gallery-card--3{z-index:2;margin-top:-1.55rem;transform:translateX(-1.6rem) rotate(-2deg)}.gallery-card--4{z-index:1;margin-top:-1.7rem;transform:translateX(1.4rem) rotate(3deg)}

.schedule-section{padding:4.1rem 2rem 4.7rem;background:var(--wedding-paper)}.schedule-list{position:relative;max-width:20rem;margin:2.7rem auto 0;padding:0;list-style:none}.schedule-list:before{position:absolute;top:.9rem;bottom:.9rem;left:50%;width:1px;background:var(--wedding-soft-sage);content:"";transform:translateX(-50%)}.schedule-list__item{position:relative;display:grid;grid-template-columns:1fr 1fr;gap:1rem;align-items:center;min-height:5.5rem;text-align:center}.schedule-list__item:nth-child(odd) .schedule-list__time{grid-column:1;grid-row:1;text-align:right}.schedule-list__item:nth-child(odd) .schedule-list__title{grid-column:2;grid-row:1;text-align:left}.schedule-list__item:nth-child(even) .schedule-list__time{grid-column:2;grid-row:1;text-align:left}.schedule-list__item:nth-child(even) .schedule-list__title{grid-column:1;grid-row:1;text-align:right}.schedule-list__time{position:relative;z-index:1;color:var(--wedding-sage);font-family:var(--wedding-accent-script);font-size:2rem;line-height:1}.schedule-list__title{margin:0;color:var(--wedding-body);font-family:var(--font-serif);font-size:.95rem;font-weight:600;line-height:1.2}
.venue-section,.dress-code-section{padding:4rem 1.5rem;background:var(--wedding-paper);text-align:center}.venue-card{max-width:22rem;margin:2.3rem auto 0;padding:2rem 1.5rem 1.6rem;border-radius:var(--wedding-radius);background:var(--wedding-beige);box-shadow:0 .45rem 1.1rem #2c332914}.venue-card__name{margin:0;color:var(--wedding-ink);font-family:var(--font-serif);font-size:1.45rem;font-weight:600}.venue-card__address{max-width:17rem;margin:.55rem auto 1.3rem;color:var(--wedding-body);font-size:.92rem}.venue-card__map{display:inline-flex;min-height:var(--touch-target);align-items:center;justify-content:center;padding:.65rem 1.25rem;border:1px solid var(--wedding-sage);border-radius:999px;color:var(--wedding-body);font-size:var(--text-label);text-decoration:none;transition:background-color var(--transition-fast),color var(--transition-fast),transform var(--transition-fast)}.venue-card__map:hover{background:var(--wedding-sage);color:var(--wedding-paper)}.venue-card__map:active{transform:scale(.98)}
.dress-code-section{padding-top:2.8rem;padding-bottom:4.3rem}.dress-code-section__text{max-width:19rem;margin:1.25rem auto 0;color:var(--wedding-body);font-family:var(--font-serif);font-size:1.04rem}.dress-code-swatches{display:flex;justify-content:center;gap:.55rem;margin:1.8rem 0 0;padding:0;list-style:none}.dress-code-swatch{display:block;width:2.65rem;height:2.65rem;border:.3rem solid var(--wedding-paper);border-radius:50%;box-shadow:0 0 0 1px #2c33291f}

.countdown-section{padding:3.1rem 1.5rem 1.7rem;background:var(--wedding-paper);text-align:center}.countdown{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));max-width:24rem;margin:0 auto;padding:1rem .2rem;border-top:1px solid var(--wedding-soft-sage);border-bottom:1px solid var(--wedding-soft-sage)}.countdown__unit{min-width:0;padding:0 .2rem;border-right:1px solid var(--wedding-soft-sage)}.countdown__unit:last-child{border-right:0}.countdown__number{display:block;color:var(--wedding-ink);font-family:var(--wedding-accent-script);font-size:2rem;font-weight:400;font-variant-numeric:tabular-nums;line-height:1}.countdown__label{display:block;margin-top:.3rem;overflow:hidden;color:var(--wedding-muted);font-size:.62rem;text-overflow:ellipsis;white-space:nowrap}.countdown__status{min-height:1.45rem;margin:.75rem 0 0;color:var(--wedding-sage);font-family:var(--font-serif);font-size:.95rem}
.rsvp-section{padding:0 1.5rem 4.6rem;background:var(--wedding-paper)}.rsvp-card{max-width:25rem;margin:0 auto;padding:2.3rem 1.25rem 1.5rem;border-radius:var(--wedding-radius);background:var(--wedding-beige);box-shadow:0 .5rem 1.25rem #2c33291a}.rsvp-card__deadline{max-width:18rem;margin:1rem auto 0;color:var(--wedding-body);font-family:var(--font-serif);font-size:.9rem;line-height:1.35;text-align:center}.rsvp-form{display:grid;gap:.95rem;margin-top:1.5rem}.field{display:grid;gap:.35rem;color:var(--wedding-body);font-size:.78rem}.field>span,.party-fields legend{font-weight:600}.field input,.field select,.field textarea{width:100%;min-height:var(--touch-target);padding:.65rem .75rem;border:1px solid #c2baa9f2;border-radius:var(--wedding-radius);background:#faf9f6dc;color:var(--wedding-ink);font-size:.9rem;transition:border-color var(--transition-fast),box-shadow var(--transition-fast),background-color var(--transition-fast)}.field textarea{min-height:6.25rem;resize:vertical}.field input::placeholder,.field textarea::placeholder{color:var(--wedding-muted);opacity:.9}.field input:hover,.field select:hover,.field textarea:hover{border-color:var(--wedding-sage)}.field input:focus,.field select:focus,.field textarea:focus{border-color:var(--wedding-sage);background:var(--wedding-paper);box-shadow:0 0 0 3px #7a8c7529;outline:0}.field input[aria-invalid=true],.field select[aria-invalid=true]{border-color:#a8574c}.party-fields{display:grid;gap:.95rem;margin:0;padding:.95rem;border:1px solid #c2baa9bf;border-radius:var(--wedding-radius)}.party-fields legend{padding:0 .35rem;color:var(--wedding-ink)}.guest-counter{display:grid;grid-template-columns:var(--touch-target) 1fr var(--touch-target);align-items:center;gap:.35rem}.guest-counter__button{min-width:var(--touch-target);min-height:var(--touch-target);border:1px solid var(--wedding-sage);border-radius:50%;background:transparent;color:var(--wedding-body);font-size:1.25rem;line-height:1;transition:background-color var(--transition-fast),color var(--transition-fast),opacity var(--transition-fast)}.guest-counter__button:hover:not(:disabled){background:var(--wedding-sage);color:var(--wedding-paper)}.guest-counter__button:disabled{cursor:not-allowed;opacity:.42}.guest-counter__value{text-align:center}.field__hint{color:var(--wedding-muted);font-size:.7rem}.rsvp-form__submit{min-height:3rem;margin-top:.35rem;padding:.7rem 1.3rem;border:1px solid var(--wedding-sage);border-radius:999px;background:var(--wedding-paper);color:var(--wedding-ink);font-size:.78rem;font-weight:700;letter-spacing:.08em;text-transform:uppercase;transition:background-color var(--transition-fast),color var(--transition-fast),transform var(--transition-fast)}.rsvp-form__submit:hover{background:var(--wedding-sage);color:var(--wedding-paper)}.rsvp-form__submit:active{transform:scale(.985)}.form-status{min-height:1.35rem;margin:0;color:var(--wedding-sage);font-family:var(--font-serif);font-size:.9rem;line-height:1.35;text-align:center}

.footer-section{padding:2rem 1.5rem 3.1rem;background:var(--wedding-beige);text-align:center}.footer-letter{position:relative;max-width:24rem;margin:0 auto}.footer-letter__image{width:100%;height:auto}.footer-letter__copy{position:absolute;top:48%;right:12%;left:12%;color:var(--wedding-ink);text-align:center;transform:translateY(-50%)}.footer-letter__names{margin:0;font-family:var(--wedding-script);font-size:clamp(2.5rem,11vw,3.6rem);line-height:.95}.footer-letter__note{margin:1.25rem auto 0;font-family:var(--font-serif);font-size:1rem;line-height:1.3}.footer-letter__subtext{margin:.4rem auto 0;color:var(--wedding-muted);font-size:.75rem}.footer-section__brand{margin:1.25rem 0 0;color:var(--wedding-muted);font-size:.7rem;letter-spacing:.14em;text-transform:uppercase}.loading-state,.noscript-message{max-width:30rem;margin:0 auto;padding:3rem 1.5rem;background:var(--wedding-paper);color:var(--wedding-ink);font-family:var(--font-serif);text-align:center}
@media (min-width:31rem){.hero-block{padding-right:2rem;padding-left:2rem}.hero-gallery{width:calc(100% + 4rem);margin-right:-2rem;margin-left:-2rem}.gallery-section,.schedule-section,.venue-section,.dress-code-section,.rsvp-section,.footer-section{padding-right:2rem;padding-left:2rem}}
@media (max-width:30rem){.media-toggle{padding-right:.7rem;padding-left:.7rem}.media-toggle [data-music-label]{display:none}}
@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,*::before,*::after{animation-duration:1ms!important;animation-iteration-count:1!important;scroll-behavior:auto!important;transition-duration:1ms!important}.source-reveal,.scroll-reveal,.hero-animate{opacity:1;transform:none}}
