:root{color-scheme:light;--color-wine-950: #300811;--color-wine-900: #45101a;--color-wine-800: #5b131f;--color-wine-700: #741c2b;--color-paper-50: #fffaf0;--color-paper-100: #f7eddb;--color-paper-200: #ead9be;--color-ink-900: #2d201b;--color-ink-700: #57453b;--color-ink-500: #78675c;--color-gold-600: #8c632f;--color-gold-400: #bc9359;--color-success-700: #31553e;--color-danger-700: #8c2530;--color-white: #ffffff;--color-shadow: rgba(48, 8, 17, .18);--color-overlay: rgba(30, 4, 9, .28);--color-overlay-strong: rgba(30, 4, 9, .72);--color-paper-translucent: rgba(255, 250, 240, .92);--color-header: rgba(69, 16, 26, .96);--space-1: .25rem;--space-2: .5rem;--space-3: .75rem;--space-4: 1rem;--space-6: 1.5rem;--space-8: 2rem;--space-12: 3rem;--space-16: 4rem;--space-24: 6rem;--space-32: 8rem;--font-display: "Cormorant Garamond", Georgia, serif;--font-body: "Manrope", "Segoe UI", sans-serif;--type-xs: .75rem;--type-sm: .875rem;--type-body: 1rem;--type-lead: clamp(1.0625rem, 2vw, 1.25rem);--type-h3: clamp(1.5rem, 4vw, 2rem);--type-h2: clamp(2.25rem, 7vw, 4rem);--type-hero: clamp(3.25rem, 13vw, 7rem);--line-body: 1.65;--line-heading: .98;--tracking-label: .16em;--radius-sm: .25rem;--radius-md: .5rem;--radius-round: 999rem;--border-hairline: .0625rem;--focus-width: .125rem;--target-min: 2.75rem;--container-wide: 72rem;--container-copy: 40rem;--container-mobile-art: 40rem;--duration-fast: .12s;--duration-base: .26s;--duration-slow: .52s;--duration-hero: .82s;--ease-standard: cubic-bezier(.4, 0, .2, 1);--ease-emphasized: cubic-bezier(.22, 1, .36, 1);--color-surface: var(--color-paper-50);--color-surface-raised: var(--color-paper-100);--color-surface-dark: var(--color-wine-900);--color-text: var(--color-ink-900);--color-text-muted: var(--color-ink-700);--color-text-on-dark: var(--color-paper-50);--color-border: var(--color-paper-200);--color-accent: var(--color-wine-800);--color-accent-hover: var(--color-wine-700);--color-focus: var(--color-gold-400);--color-error: var(--color-danger-700);--color-success: var(--color-success-700);--layout-gutter: var(--space-4);--layout-section: var(--space-24);--layout-section-large: var(--space-32);--stack-xs: var(--space-2);--stack-sm: var(--space-4);--stack-md: var(--space-6);--stack-lg: var(--space-8);--stack-xl: var(--space-12);--card-padding: var(--space-6);--control-padding-block: var(--space-3);--control-padding-inline: var(--space-6);--shadow-raised: 0 1.5rem 4rem var(--color-shadow);--button-bg: var(--color-accent);--button-bg-hover: var(--color-accent-hover);--button-text: var(--color-paper-50);--input-bg: var(--color-paper-translucent);--input-border: var(--color-gold-600);--nav-bg: var(--color-header);--gallery-pattern-size: 34rem;--gallery-ornament-width: 28rem;--gallery-dialog-width: 50rem;--gallery-dialog-reserve: 11rem;--gallery-mount-border: .1875rem;--gallery-stagger: 90ms;--collage-depth: 0rem}*{box-sizing:border-box}[hidden]{display:none!important}html{scroll-behavior:smooth;scrollbar-gutter:stable;background:var(--color-surface-dark)}body{margin:0;min-width:20rem;background:var(--color-surface);color:var(--color-text);font-family:var(--font-body);font-size:var(--type-body);line-height:var(--line-body);text-rendering:optimizeLegibility}body.gate-locked{overflow:hidden}.js body.gate-locked>main,.js body.gate-locked>.site-footer{display:none}.js body.gate-locked.gate-revealing>main{display:block}button,input,select,textarea{font:inherit}button,a{-webkit-tap-highlight-color:transparent}img,video{display:block;height:auto;max-width:100%}a{color:inherit}:focus-visible{outline:var(--focus-width) solid var(--color-focus);outline-offset:var(--space-1)}.visually-hidden{position:absolute;width:1px;height:1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap}.skip-link{position:fixed;inset-block-start:var(--stack-sm);inset-inline-start:var(--stack-sm);z-index:100;transform:translateY(-200%);background:var(--color-surface);color:var(--color-text);padding:var(--control-padding-block) var(--control-padding-inline);transition:transform var(--duration-fast) var(--ease-standard)}.skip-link:focus{transform:translateY(0)}.site-header{position:fixed;inset:0 0 auto;z-index:20;display:grid;grid-template-columns:auto 1fr auto;align-items:center;gap:var(--stack-sm);min-height:4rem;padding-inline:var(--layout-gutter);background:var(--nav-bg);color:var(--color-text-on-dark);transform:translateY(-110%);transition:transform var(--duration-slow) var(--ease-emphasized)}.no-js .site-header,.site-header.is-visible{transform:translateY(0)}.monogram{display:grid;place-items:center;width:var(--target-min);height:var(--target-min);border:var(--border-hairline) solid var(--color-gold-400);border-radius:var(--radius-round);font-family:var(--font-display);font-size:var(--type-lead);text-decoration:none}.site-nav{display:none;justify-content:center;gap:var(--stack-lg)}.site-nav a{padding-block:var(--stack-sm);font-family:var(--font-display);font-size:var(--type-lead);text-decoration:none}.music-toggle{position:relative;grid-column:3;justify-self:end;display:inline-flex;align-items:center;justify-content:center;width:var(--target-min);min-height:var(--target-min);border:0;background:transparent;color:inherit;cursor:pointer}.music-toggle__icon{width:var(--space-8);height:var(--space-8);transition:opacity var(--duration-fast) var(--ease-standard),transform var(--duration-fast) var(--ease-standard)}.music-toggle__icon--on{opacity:0;transform:scale(.88)}.music-toggle__icon--off{position:absolute;opacity:1}.music-toggle[aria-pressed=true] .music-toggle__icon--on{opacity:1;transform:scale(1)}.music-toggle[aria-pressed=true] .music-toggle__icon--off{opacity:0;transform:scale(.88)}.section{padding:var(--layout-section) var(--layout-gutter)}.section-heading{width:min(100%,var(--container-copy));margin-inline:auto}.section-heading--center{text-align:center}.eyebrow{margin:0 0 var(--stack-sm);color:var(--color-gold-600);font-size:var(--type-xs);font-weight:600;letter-spacing:var(--tracking-label);line-height:1.4;text-transform:uppercase}.section-title{margin:0;font-family:var(--font-display);font-size:var(--type-h2);font-weight:400;letter-spacing:-.02em;line-height:var(--line-heading)}.section-copy{max-width:var(--container-copy);margin:var(--stack-md) auto 0;color:var(--color-text-muted);font-size:var(--type-lead)}.button{display:inline-flex;align-items:center;justify-content:center;min-height:var(--target-min);border:var(--border-hairline) solid transparent;border-radius:var(--radius-sm);padding:var(--control-padding-block) var(--control-padding-inline);font-size:var(--type-sm);font-weight:600;letter-spacing:.04em;line-height:1.2;text-decoration:none;cursor:pointer;transition:background-color var(--duration-fast) var(--ease-standard),transform var(--duration-fast) var(--ease-standard)}.button:hover{transform:translateY(-.125rem)}.button:active{transform:translateY(0)}.button--wine{background:var(--button-bg);color:var(--button-text)}.button--wine:hover{background:var(--button-bg-hover)}.button--light{border-color:var(--color-paper-200);background:var(--color-paper-50);color:var(--color-wine-900)}.button--outline{border-color:var(--color-gold-600);background:transparent;color:var(--color-text)}.animated-character{display:inline-block;white-space:pre}.invitation-gate{position:fixed;inset:0;z-index:80;display:none;place-items:center;overflow:hidden;background:var(--color-overlay-strong) url(/assets/wedding/damask-tile.webp) center / 32rem repeat;color:var(--color-text-on-dark);transition:transform var(--duration-hero) var(--ease-emphasized);will-change:transform}.js .invitation-gate{display:grid}.invitation-gate.is-opening{transform:translateY(-101%);pointer-events:none}.invitation-gate__art{position:relative;height:100svh;max-width:100vw;aspect-ratio:941 / 1672;overflow:hidden;background:var(--color-wine-900);box-shadow:var(--shadow-raised)}.invitation-gate__image{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;transition:opacity var(--duration-base) var(--ease-standard)}.invitation-gate__video{position:absolute;inset:0;width:100%;height:100%;background:var(--color-wine-900);object-fit:cover;opacity:0;pointer-events:none;transition:opacity var(--duration-base) var(--ease-standard)}.invitation-gate.is-playing .invitation-gate__image{opacity:0}.invitation-gate.is-playing .invitation-gate__video{opacity:1}.invitation-gate__identity{position:absolute;inset:10% 8% auto;color:var(--color-paper-50);text-align:center;transition:opacity var(--duration-base) var(--ease-standard)}.invitation-gate.is-playing .invitation-gate__identity{opacity:0}.invitation-gate__kind{margin:0 0 var(--stack-sm);color:var(--color-paper-200);font-size:var(--type-xs);font-weight:600;letter-spacing:var(--tracking-label);text-transform:uppercase}.invitation-gate__title{margin:0;font-family:var(--font-display);font-size:clamp(2.5rem,10vw,4.75rem);font-style:italic;font-weight:400;letter-spacing:-.04em;line-height:var(--line-heading);text-wrap:balance}.invitation-gate__guest{display:grid;gap:var(--stack-xs);margin:var(--stack-lg) 0 0;color:var(--color-paper-200);text-align:center}.invitation-gate__guest-prefix{font-size:var(--type-xs);font-weight:600;letter-spacing:var(--tracking-label);text-transform:uppercase}.invitation-gate__guest strong{font-family:var(--font-display);font-size:clamp(1.5rem,6vw,2.25rem);font-weight:500;line-height:var(--line-heading);text-wrap:balance}.invitation-gate__guest-word{display:inline-block}.invitation-gate__seal-button{position:absolute;inset:0;width:100%;height:100%;min-width:var(--target-min);padding:0;border:0;background:transparent;color:var(--color-paper-50);cursor:pointer;transition:opacity var(--duration-base) var(--ease-standard)}.invitation-gate__seal-button:hover span{background:var(--color-wine-800)}.invitation-gate__seal-button:focus-visible{outline-offset:calc(var(--space-2) * -1)}.invitation-gate__seal-button:disabled{cursor:default}.invitation-gate.is-playing .invitation-gate__seal-button{opacity:0;pointer-events:none}.invitation-gate__seal-button span{position:absolute;inset:80.5% auto auto 50%;width:max-content;max-width:70vw;padding:var(--space-2) var(--space-3);border:var(--border-hairline) solid var(--color-gold-400);background:var(--color-wine-950);color:var(--color-paper-200);font-size:var(--type-xs);letter-spacing:.1em;text-transform:uppercase;transform:translate(-50%);transition:transform var(--duration-fast) var(--ease-standard)}.invitation-gate__seal-button:active span{transform:translate(-50%) scale(.98)}.letter-section{background:linear-gradient(var(--color-overlay-strong),var(--color-overlay-strong)),url(/assets/wedding/damask-tile.webp) center / 38rem repeat;color:var(--color-text-on-dark)}.letter-section .section-heading{text-align:center}.letter-section .eyebrow{color:var(--color-gold-400)}.letter-section .section-copy,.letter-section .family-card p{color:var(--color-paper-200)}.story-transition{width:min(100%,var(--container-mobile-art));height:var(--space-8);margin:var(--layout-section) auto 0;border-block:var(--border-hairline) solid var(--color-gold-600);background:var(--color-wine-950)}.collage-stage{position:relative;--collage-photo-x: var(--collage-depth);--collage-photo-y: var(--collage-depth);--collage-note-x: var(--collage-depth);--collage-note-y: var(--collage-depth);width:min(100%,var(--container-mobile-art));aspect-ratio:2 / 3;margin:0 auto;overflow:hidden;box-shadow:var(--shadow-raised)}.collage-stage__base{width:100%;height:100%;object-fit:cover}.collage-stage__photo-button{position:absolute;inset-block-start:14.5%;inset-inline-start:10.5%;width:39%;height:34%;padding:0;border:var(--border-hairline) solid transparent;border-radius:48% 48% 46% 46%;background:transparent;color:var(--color-paper-50);cursor:zoom-in;clip-path:ellipse(46% 49% at 50% 50%);transform:translate3d(var(--collage-photo-x),var(--collage-photo-y),0);transition:transform var(--duration-fast) var(--ease-standard),border-color var(--duration-fast) var(--ease-standard)}.collage-stage__photo-button:hover{transform:translate3d(var(--collage-photo-x),calc(var(--collage-photo-y) - var(--space-1)),0)}.collage-stage__photo-button:active{transform:translate3d(var(--collage-photo-x),var(--collage-photo-y),0) scale(.985)}.collage-stage__photo-button:focus-visible{border-color:var(--color-focus);outline-offset:var(--space-1)}.collage-stage__photo{width:100%;height:100%;object-fit:cover;object-position:center 38%}.collage-stage__zoom-cue{position:absolute;inset-block-end:12%;inset-inline-end:12%;display:grid;width:var(--target-min);height:var(--target-min);place-items:center;border:var(--border-hairline) solid var(--color-gold-400);border-radius:var(--radius-round);background:var(--color-overlay-strong);color:var(--color-paper-50);pointer-events:none}.collage-stage__note{position:absolute;inset-block-start:29%;inset-inline-end:7%;display:grid;width:39%;gap:var(--stack-xs);color:var(--color-text);font-family:var(--font-display);text-align:center;pointer-events:none;transform:translate3d(var(--collage-note-x),var(--collage-note-y),0);transition:transform var(--duration-fast) var(--ease-standard)}.collage-stage__note-label{color:var(--color-gold-600);font-family:var(--font-body);font-size:var(--type-xs);font-weight:600;letter-spacing:var(--tracking-label);text-transform:uppercase}.collage-stage__note strong{font-size:var(--type-h3);font-style:italic;font-weight:400;line-height:var(--line-heading)}.collage-stage__note time{font-size:var(--type-sm)}.family-grid{display:grid;width:min(100%,var(--container-wide));margin:var(--layout-section) auto 0;border-block:var(--border-hairline) solid var(--color-gold-600)}.family-card{padding:var(--card-padding);text-align:center}.family-card+.family-card{border-block-start:var(--border-hairline) solid var(--color-gold-600)}.family-card h3{margin:0;font-family:var(--font-display);font-size:var(--type-h3);font-weight:400}.family-card p{max-width:28rem;margin:var(--stack-sm) auto 0}.event-section{background:var(--color-surface-raised)}.event-paper{position:relative;isolation:isolate;width:min(100%,var(--container-mobile-art));margin-inline:auto;padding:var(--layout-section) var(--layout-gutter);box-shadow:var(--shadow-raised);text-align:center}.event-paper__background{position:absolute;inset:0;z-index:-1;width:100%;height:100%;object-fit:cover}.event-location{margin:var(--stack-lg) 0 0;font-family:var(--font-display);font-size:var(--type-h3);font-style:italic}.event-meta{margin-block-start:var(--stack-xl)}.event-meta time{display:grid;gap:var(--stack-xs)}.event-meta strong{color:var(--color-wine-800);font-family:var(--font-display);font-size:var(--type-h3);font-weight:500}.event-program{display:grid;gap:var(--space-6);margin:var(--space-12) auto 0;text-align:center}.event-program__item{padding:var(--space-8) var(--space-4);border:var(--border-hairline) solid var(--color-gold-600);background:var(--color-paper-translucent)}.event-program__item .eyebrow{margin:0 0 var(--space-3);color:var(--color-gold-600)}.event-program__item h3{margin:0 0 var(--space-3);color:var(--color-wine-800);font-family:var(--font-display);font-size:var(--type-h3);font-weight:500}.event-program__item time{display:block;font-weight:600}.event-program__item p:last-child{margin:var(--space-4) auto 0;max-width:30rem;color:var(--color-text-muted);font-size:var(--type-sm)}.calendar{margin:var(--stack-xl) auto 0;border-block:var(--border-hairline) solid var(--color-gold-600);padding-block:var(--stack-lg)}.calendar h3{margin:0 0 var(--stack-md);font-family:var(--font-display);font-size:var(--type-h3);font-weight:500;letter-spacing:.06em;text-transform:uppercase}.calendar table{width:100%;border-collapse:collapse;table-layout:fixed}.calendar th{color:var(--color-text-muted);font-size:var(--type-xs);font-weight:600;text-transform:uppercase}.calendar td{height:var(--target-min);font-family:var(--font-display);font-size:var(--type-lead)}.calendar__day--selected span{display:grid;width:var(--target-min);height:var(--target-min);margin-inline:auto;place-items:center;border:var(--border-hairline) solid var(--color-wine-800);border-radius:var(--radius-round);background:var(--color-wine-800);color:var(--color-text-on-dark)}.countdown-wrap{position:relative;isolation:isolate;overflow:hidden;width:min(100%,36rem);margin:var(--stack-xl) auto;padding:var(--space-8) var(--space-4);border:var(--border-hairline) solid var(--color-gold-400);outline:var(--border-hairline) solid var(--color-gold-600);outline-offset:calc(-1 * var(--space-2));background:linear-gradient(135deg,var(--color-wine-800),var(--color-wine-950));color:var(--color-text-on-dark);text-align:center}.countdown-wrap:before,.countdown-wrap:after{position:absolute;z-index:-1;width:10rem;aspect-ratio:1;background:url(/assets/wedding/floral-corner.webp) center / contain no-repeat;content:"";opacity:.4;pointer-events:none}.countdown-wrap:before{inset-block-start:-4rem;inset-inline-start:-3.5rem}.countdown-wrap:after{inset-block-end:-4.5rem;inset-inline-end:-4rem;transform:rotate(180deg)}.letter-section .countdown-wrap .eyebrow{color:var(--color-gold-400);font-size:var(--type-sm);font-weight:600}.countdown{display:grid;grid-template-columns:repeat(4,1fr);gap:var(--stack-xs);margin-block-start:var(--stack-md)}.countdown div{display:grid;gap:var(--stack-xs)}.countdown div+div{border-inline-start:var(--border-hairline) solid var(--color-gold-600)}.countdown strong{font-family:var(--font-display);font-size:clamp(1.75rem,6vw,2.5rem);font-weight:500;line-height:1}.countdown span{color:var(--color-paper-200);font-size:var(--type-xs);letter-spacing:.08em;text-transform:uppercase}.countdown-status{margin:var(--stack-md) 0 0;color:var(--color-paper-50);font-family:var(--font-display);font-size:var(--type-h3)}.countdown-status:empty{display:none}.gallery-section{position:relative;isolation:isolate;overflow:hidden;background-color:var(--color-wine-950);background-image:url(/assets/wedding/damask-tile.webp);background-size:var(--gallery-pattern-size);border-block:var(--border-hairline) solid var(--color-gold-400);color:var(--color-text-on-dark)}.gallery-section:before{position:absolute;inset:0;z-index:-1;background:var(--color-overlay-strong);content:""}.gallery-section__ornament{position:absolute;inset-block-start:calc(-1 * var(--space-12));inset-inline-end:calc(-1 * var(--space-16));z-index:-1;width:min(72vw,var(--gallery-ornament-width));opacity:.28;transform:rotate(10deg)}.gallery-section__lace{width:min(100%,var(--container-copy));max-height:var(--space-24);object-fit:contain;margin:calc(-1 * var(--space-8)) auto var(--space-8);opacity:.72}.gallery-section__heading{color:var(--color-paper-50)}.gallery-section__heading .eyebrow{color:var(--color-paper-200)}.gallery-crest{display:flex;align-items:center;justify-content:center;gap:var(--space-2);width:var(--space-24);height:var(--space-24);margin:0 auto var(--space-8);border:var(--border-hairline) solid var(--color-gold-400);border-radius:50%;outline:var(--border-hairline) solid var(--color-gold-400);outline-offset:var(--space-1);font-family:var(--font-display);font-size:var(--type-h3)}.gallery-crest span{font-size:var(--type-lead);font-style:italic}.gallery-hint{margin:var(--space-8) auto 0;max-width:var(--container-copy);color:var(--color-paper-200);font-size:var(--type-sm)}.gallery-signature{width:min(100%,var(--container-copy));margin:var(--space-16) auto 0;padding-block-start:var(--space-8);border-block-start:var(--border-hairline) solid var(--color-gold-400);text-align:center;color:var(--color-paper-200)}.gallery-signature span,.gallery-signature p{font-family:var(--font-display);font-size:var(--type-h3);font-style:italic}.gallery-signature p{margin:var(--space-4) 0}.gallery-signature time{font-size:var(--type-xs);letter-spacing:var(--tracking-label)}.gallery-section__heading .section-copy{color:var(--color-paper-200)}.gallery-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));width:min(100%,var(--container-wide));margin:var(--space-16) auto 0;padding:0;gap:var(--space-8) var(--space-4);list-style:none}.gallery-grid__item--one{grid-column:1 / -1}.gallery-grid__item--three,.gallery-grid__item--five{margin-block-start:var(--space-8)}.gallery-card{margin:0}.gallery-card__button{position:relative;width:100%;padding:0;border:0;background:transparent;color:inherit;cursor:zoom-in}.gallery-card__mat{position:relative;display:block;padding:var(--space-3);border:var(--border-hairline) solid var(--color-gold-400);background:var(--color-paper-100);box-shadow:var(--shadow-raised);transition:transform var(--duration-base) var(--ease-emphasized)}.gallery-card__mat:before{position:absolute;inset:var(--space-1);z-index:1;border:var(--border-hairline) solid var(--color-gold-600);pointer-events:none;content:""}.gallery-card__mat:after{position:absolute;inset:0;border:var(--gallery-mount-border) double var(--color-gold-400);content:"";pointer-events:none}.gallery-card__button:hover .gallery-card__mat{transform:translateY(calc(-1 * var(--space-1)))}.gallery-card__mat img{width:100%;aspect-ratio:2 / 3;object-fit:cover}.gallery-grid__item--one .gallery-card__mat img{aspect-ratio:2 / 3;object-position:center}.gallery-card__number{position:absolute;inset-block-end:calc(-1 * var(--space-3));inset-inline-end:var(--space-3);display:grid;width:var(--space-8);height:var(--space-8);place-items:center;border:var(--border-hairline) solid var(--color-gold-400);border-radius:var(--radius-round);background:var(--color-wine-900);color:var(--color-paper-100);font-size:var(--type-xs);letter-spacing:.08em}.gallery-card figcaption{margin-block-start:var(--space-4);color:var(--color-paper-200);font-family:var(--font-display);font-size:var(--type-lead);font-style:italic;line-height:var(--line-heading)}.gallery-lightbox{width:min(calc(100% - var(--space-8)),var(--gallery-dialog-width));max-height:calc(100svh - var(--space-8));padding:0;border:var(--border-hairline) solid var(--color-gold-400);background:var(--color-wine-950);color:var(--color-paper-50);box-shadow:var(--shadow-raised)}.gallery-lightbox::backdrop{background:var(--color-overlay-strong)}.gallery-lightbox__panel{position:relative;padding:var(--space-4)}.gallery-lightbox__close{position:absolute;inset-block-start:var(--space-3);inset-inline-end:var(--space-3);z-index:1;display:grid;width:var(--target-min);height:var(--target-min);padding:0;place-items:center;border:var(--border-hairline) solid var(--color-paper-200);border-radius:var(--radius-round);background:var(--color-wine-900);color:var(--color-paper-50);font-size:var(--type-h3);line-height:1;cursor:pointer}.gallery-lightbox figure{margin:0}.gallery-lightbox figure img{width:100%;height:calc(100svh - var(--gallery-dialog-reserve));max-height:calc(100svh - var(--gallery-dialog-reserve));object-fit:contain;touch-action:pan-y pinch-zoom}body.gallery-open{overflow:hidden}section[id]{scroll-margin-top:var(--space-24)}@media(prefers-reduced-motion:no-preference){.gallery-lightbox[open]{animation:gallery-open var(--duration-slow) var(--ease-emphasized) both}.gallery-lightbox[open]::backdrop{animation:gallery-backdrop var(--duration-base) var(--ease-standard) both}.gallery-lightbox.is-closing{animation:gallery-close var(--duration-base) var(--ease-standard) both}.gallery-grid__item:nth-child(2n).is-revealed{transition-delay:var(--gallery-stagger)}.gallery-card__mat img{transition:opacity var(--duration-base) var(--ease-standard)}}@keyframes gallery-open{0%{opacity:0;transform:translateY(16px) scale(.97)}to{opacity:1;transform:translateY(0) scale(1)}}@keyframes gallery-close{0%{opacity:1;transform:translateY(0)}to{opacity:0;transform:translateY(12px)}}@keyframes gallery-backdrop{0%{opacity:0}to{opacity:1}}.gallery-lightbox figcaption{margin-block-start:var(--space-3);color:var(--color-paper-200);font-family:var(--font-display);font-size:var(--type-lead);font-style:italic;text-align:center}.gallery-lightbox__controls{display:flex;justify-content:space-between;gap:var(--space-4);margin-block-start:var(--space-4)}.gallery-lightbox__controls button{min-height:var(--target-min);padding:var(--space-2) var(--space-3);border:var(--border-hairline) solid var(--color-gold-400);background:transparent;color:var(--color-paper-50);cursor:pointer}.portrait-lightbox{width:min(calc(100% - var(--space-8)),38rem);max-height:calc(100svh - var(--space-8));padding:0;border:var(--border-hairline) solid var(--color-gold-400);background:var(--color-wine-950);color:var(--color-paper-50);box-shadow:var(--shadow-raised)}.portrait-lightbox::backdrop{background:var(--color-overlay-strong)}.portrait-lightbox__panel{position:relative;padding:var(--space-4)}.portrait-lightbox__close{position:absolute;inset-block-start:var(--space-6);inset-inline-end:var(--space-6);z-index:1;display:grid;width:var(--target-min);height:var(--target-min);padding:0;place-items:center;border:var(--border-hairline) solid var(--color-paper-200);border-radius:var(--radius-round);background:var(--color-wine-900);color:var(--color-paper-50);font-size:var(--type-h3);line-height:1;cursor:pointer}.portrait-lightbox figure{margin:0}.portrait-lightbox figure img{width:100%;max-height:calc(100svh - var(--gallery-dialog-reserve));object-fit:contain}.portrait-lightbox figcaption{margin-block-start:var(--space-3);color:var(--color-paper-200);font-family:var(--font-display);font-size:var(--type-lead);font-style:italic;text-align:center}body.portrait-open{overflow:hidden}@media(prefers-reduced-motion:no-preference){.js .collage-stage__base,.js .collage-stage__photo-button,.js .collage-stage__note,.js .collage-stage__zoom-cue{opacity:0}.js .collage-stage__base{transform:scale(1.025)}.js .collage-stage__photo-button{transform:translate3d(var(--collage-photo-x),calc(var(--collage-photo-y) + var(--space-3)),0) scale(.96)}.js .collage-stage__note{transform:translate3d(var(--collage-note-x),calc(var(--collage-note-y) + var(--space-3)),0)}.js .collage-stage.is-revealed .collage-stage__base,.js .collage-stage.is-revealed .collage-stage__photo-button,.js .collage-stage.is-revealed .collage-stage__note,.js .collage-stage.is-revealed .collage-stage__zoom-cue{opacity:1}.js .collage-stage.is-revealed .collage-stage__base{transform:scale(1);transition:opacity var(--duration-hero) var(--ease-emphasized),transform var(--duration-hero) var(--ease-emphasized)}.js .collage-stage.is-revealed .collage-stage__photo-button{transform:translate3d(var(--collage-photo-x),var(--collage-photo-y),0) scale(1);transition:opacity var(--duration-slow) var(--ease-emphasized) .14s,transform var(--duration-slow) var(--ease-emphasized) .14s,border-color var(--duration-fast) var(--ease-standard)}.js .collage-stage.is-revealed .collage-stage__photo-button:hover{transform:translate3d(var(--collage-photo-x),calc(var(--collage-photo-y) - var(--space-1)),0) scale(1);transition-delay:0ms;transition-duration:var(--duration-fast)}.js .collage-stage.is-revealed .collage-stage__photo-button:active{transform:translate3d(var(--collage-photo-x),var(--collage-photo-y),0) scale(.985)}.js .collage-stage.is-revealed .collage-stage__note{transform:translate3d(var(--collage-note-x),var(--collage-note-y),0);transition:opacity var(--duration-slow) var(--ease-emphasized) .22s,transform var(--duration-slow) var(--ease-emphasized) .22s}.js .collage-stage.is-revealed .collage-stage__zoom-cue{transition:opacity var(--duration-base) var(--ease-standard) .36s}.portrait-lightbox[open]{animation:gallery-open var(--duration-slow) var(--ease-emphasized) both}.portrait-lightbox[open]::backdrop{animation:gallery-backdrop var(--duration-base) var(--ease-standard) both}.portrait-lightbox.is-closing{animation:gallery-close var(--duration-base) var(--ease-standard) both}}.rsvp-section{position:relative;isolation:isolate;overflow:hidden;background:url(/assets/wedding/damask-tile.webp) center / 38rem repeat}.rsvp-section__flower{position:absolute;inset:var(--space-8) auto auto -18%;z-index:-1;width:min(30rem,82vw);pointer-events:none}.rsvp-card{position:relative;isolation:isolate;width:min(100%,var(--container-mobile-art));min-height:52rem;margin-inline:auto;padding:12% 10% 16%}.rsvp-card__frame{position:absolute;inset:0;z-index:-1;width:100%;height:100%;object-fit:cover}.rsvp-card__content{width:min(100%,30rem);margin-inline:auto;padding:var(--space-6) var(--space-4);background:var(--color-paper-100);border:var(--border-hairline) solid var(--color-gold-400)}.rsvp-form{display:grid;gap:var(--stack-md);margin-block-start:var(--stack-lg)}.form-field{display:grid;gap:var(--stack-xs);margin:0;border:0;padding:0}.form-field label,.form-field legend{font-family:var(--font-display);font-size:var(--type-lead);font-weight:500}.form-field input,.form-field select,.form-field textarea{width:100%;min-height:var(--target-min);border:var(--border-hairline) solid var(--input-border);border-radius:var(--radius-sm);background:var(--input-bg);color:var(--color-text);padding:var(--control-padding-block) var(--stack-sm)}.form-field textarea{min-height:7rem;resize:vertical}.radio-option{display:flex;align-items:flex-start;gap:var(--stack-sm);min-height:var(--target-min);padding-block:var(--stack-xs);font-family:var(--font-body);font-size:var(--type-body);font-weight:400}.radio-option input{width:var(--space-4);min-height:var(--space-4);margin-block-start:var(--space-1)}.field-error{min-height:1.25rem;margin:0;color:var(--color-error);font-size:var(--type-sm)}.form-status,.copy-status{min-height:1.5rem;margin:0;color:var(--color-success);font-size:var(--type-sm)}.form-field input[readonly]{background:var(--color-paper-200);color:var(--color-ink-700)}.rsvp-form button:disabled,.wishes-form button:disabled{opacity:.5;cursor:wait}.wishes-section{position:relative;background:var(--color-paper-50)}.wishes-layout{display:grid;width:min(100%,var(--container-wide));gap:var(--layout-section);margin-inline:auto;align-items:start}.wishes-layout .section-heading{margin:0}.wishes-panel{padding:var(--space-6);border:var(--border-hairline) solid var(--color-gold-600);background:var(--color-paper-100)}.wishes-form{display:grid;gap:var(--stack-sm)}.wishes-form label{font-family:var(--font-display);font-size:var(--type-lead)}.wishes-form textarea{width:100%;min-height:8rem;padding:var(--space-3);border:var(--border-hairline) solid var(--input-border);border-radius:var(--radius-sm);background:var(--input-bg);color:var(--color-text);font:inherit;resize:vertical}.wishes-form__actions{display:flex;flex-wrap:wrap;justify-content:space-between;align-items:center;gap:var(--stack-sm)}.wishes-form__actions span{color:var(--color-text-muted);font-size:var(--type-sm)}.wishes-feed{display:grid;gap:var(--stack-sm);max-height:28rem;overflow-y:auto;margin-block-start:var(--stack-lg);padding:var(--space-4);border-block-start:var(--border-hairline) solid var(--color-gold-400);scrollbar-color:var(--color-gold-600) transparent}.wishes-feed__empty{margin:0;color:var(--color-text-muted)}.wish-bubble{width:min(100%,33rem);padding:var(--space-4);border:var(--border-hairline) solid var(--color-paper-200);border-radius:var(--radius-md) var(--radius-md) var(--radius-md) 0;background:var(--color-paper-50)}.wish-bubble__top{display:flex;flex-wrap:wrap;justify-content:space-between;gap:var(--space-2);align-items:baseline}.wish-bubble__top strong{color:var(--color-wine-800);font-family:var(--font-display);font-size:var(--type-lead)}.wish-bubble__top time{color:var(--color-text-muted);font-size:var(--type-xs)}.wish-bubble p{margin:var(--space-2) 0 0;overflow-wrap:anywhere}.gift-section{background:var(--color-surface-raised)}.gift-layout{display:grid;width:min(100%,var(--container-wide));gap:var(--layout-section);margin-inline:auto;align-items:center}.gift-layout .section-heading{margin:0}.gift-card{border:var(--border-hairline) solid var(--color-gold-600);padding:var(--space-4) var(--space-4) var(--stack-xl);background:var(--color-surface);text-align:center}.gift-card__art{width:100%;margin-bottom:var(--space-6);border:var(--border-hairline) solid var(--color-gold-400)}.gift-card__details{margin:var(--space-6) 0;padding:var(--space-6) var(--space-2);border-block:var(--border-hairline) solid var(--color-gold-400)}.gift-card__details>span{color:var(--color-text-muted);font-size:var(--type-xs);font-weight:600;letter-spacing:var(--tracking-label);text-transform:uppercase}.gift-card__bank{margin:0;color:var(--color-gold-600);font-size:var(--type-xs);font-weight:600;letter-spacing:var(--tracking-label);text-transform:uppercase}.gift-card__number{margin:var(--space-2) 0 var(--space-6);font-family:var(--font-display);font-size:var(--type-h3);font-weight:500;overflow-wrap:anywhere}.gift-card__name{margin:var(--space-2) 0 0;color:var(--color-text);font-family:var(--font-display);font-size:var(--type-h3)}.gift-delivery{display:grid;width:min(100%,var(--container-wide));margin:var(--space-16) auto 0;border:var(--border-hairline) solid var(--color-gold-600);background:var(--color-surface);box-shadow:var(--shadow-raised)}.gift-delivery__image{width:100%;height:100%;aspect-ratio:3 / 2;object-fit:cover}.gift-delivery__content{display:grid;align-content:center;justify-items:start;padding:var(--space-8)}.gift-delivery__content .eyebrow{color:var(--color-gold-600)}.gift-delivery__content h3{margin:var(--space-3) 0 var(--space-4);font-family:var(--font-display);font-size:var(--type-h3);font-weight:500;line-height:var(--line-heading)}.gift-delivery__content p:not(.eyebrow){margin:0 0 var(--space-4);color:var(--color-text-muted)}.gift-delivery__content address{margin-bottom:var(--space-8);padding-inline-start:var(--space-4);border-inline-start:var(--border-hairline) solid var(--color-gold-600);font-style:normal;font-weight:600}.closing-section{position:relative;isolation:isolate;display:grid;min-height:90svh;place-items:center;padding:var(--layout-section-large) var(--layout-gutter);overflow:hidden;background:linear-gradient(180deg,transparent,var(--color-overlay-strong));color:var(--color-text-on-dark)}.closing-section__background{position:absolute;inset:0;z-index:-2;width:100%;height:100%;object-fit:cover}.closing-section__content{width:min(100%,var(--container-copy));text-align:center}.closing-section .section-copy{color:var(--color-paper-100)}.closing-section__monogram{display:grid;width:6rem;height:6rem;margin:0 auto var(--stack-lg);place-items:center;border:var(--border-hairline) solid var(--color-paper-200);border-radius:var(--radius-round);background:var(--color-paper-translucent);color:var(--color-wine-900);font-family:var(--font-display);font-size:var(--type-h3)}.closing-section__names{margin:var(--stack-xl) 0 0;font-family:var(--font-display);font-size:var(--type-h3);font-style:italic}.site-footer{display:flex;flex-wrap:wrap;justify-content:space-between;gap:var(--stack-sm);padding:var(--stack-lg) var(--layout-gutter);background:var(--color-wine-950);color:var(--color-paper-200);font-size:var(--type-xs);letter-spacing:.06em}.site-footer p{margin:0}.site-footer__linkedin{display:inline-flex;align-items:center;justify-content:center;gap:var(--space-2);min-height:var(--target-min);color:var(--color-paper-50);text-decoration:none}.site-footer__linkedin:hover{color:var(--color-gold-400)}.reveal{opacity:0;transform:translateY(.75rem)}.reveal.is-revealed{opacity:1;transform:translateY(0);transition:opacity var(--duration-slow) var(--ease-emphasized),transform var(--duration-slow) var(--ease-emphasized)}.no-js .reveal{opacity:1;transform:none}.reveal-group .reveal:nth-child(2){transition-delay:80ms}.reveal-group .reveal:nth-child(3){transition-delay:.16s}@media(min-width:48rem){:root{--layout-gutter: var(--space-8);--layout-section: var(--space-32);--card-padding: var(--space-12)}.site-nav{display:flex}.family-grid{grid-template-columns:repeat(2,1fr)}.family-card+.family-card{border-block-start:0;border-inline-start:var(--border-hairline) solid var(--color-gold-600)}.event-paper{padding-inline:var(--space-12)}.gallery-grid{grid-template-columns:repeat(12,minmax(0,1fr));gap:var(--space-12) var(--space-6)}.gallery-grid__item--one{grid-column:1 / span 7}.gallery-grid__item--two{grid-column:8 / span 5;margin-block-start:var(--space-16)}.gallery-grid__item--three{grid-column:1 / span 4;margin-block-start:0}.gallery-grid__item--four{grid-column:5 / span 4;margin-block-start:var(--space-12)}.gallery-grid__item--five{grid-column:9 / span 4;margin-block-start:0}.gift-layout{grid-template-columns:1.1fr .9fr}.wishes-layout{grid-template-columns:.8fr 1.2fr}.gift-delivery{grid-template-columns:1fr 1fr}}@media(max-width:47.999rem){.site-header{padding-block-start:var(--space-2);row-gap:0}.site-nav{display:flex;grid-column:1 / -1;grid-row:2;justify-content:space-between;gap:var(--space-2);border-block-start:var(--border-hairline) solid var(--color-gold-600)}.site-nav a{display:grid;min-height:var(--target-min);align-items:center;padding-block:var(--space-2);font-size:var(--type-body)}.music-toggle{grid-row:1}section[id]{scroll-margin-top:var(--space-32)}.gallery-lightbox__controls{gap:var(--space-2)}.gallery-lightbox__controls button{font-size:var(--type-sm)}.rsvp-card{padding-inline:var(--space-4)}}@media(min-width:75rem){.collage-stage,.rsvp-card{width:44rem}}@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,*:before,*:after{animation-duration:.01ms;animation-iteration-count:1;transition-duration:.01ms}.reveal{opacity:1;transform:none}.gallery-card__button:hover .gallery-card__mat{transform:none}.invitation-gate,.invitation-gate__seal-button{transition:none}}
