:root{--ink: #2c241c;--ink-soft: #5c5348;--gold: #9a7b4f;--gold-light: #c4a574;--ivory: #faf6ef;--paper: #f4eee4;--paper-deep: #ebe3d4;--line: rgba(44, 36, 28, .12);--serif: "Cormorant Garamond", Georgia, serif;--script: "Great Vibes", cursive;--sans: "Outfit", system-ui, sans-serif;--nav-height: 3.9rem}*{box-sizing:border-box}html{scroll-behavior:smooth;scroll-padding-top:var(--nav-height)}body{margin:0;color:var(--ink);background:var(--ivory);font-family:var(--sans);font-weight:300;line-height:1.65}#root{min-height:100vh}a{color:inherit}button,input,select,textarea{font:inherit}.page{overflow-x:clip;padding-top:var(--nav-height)}.kicker{margin:0 0 .75rem;font-size:.72rem;letter-spacing:.28em;text-transform:uppercase;color:var(--gold)}.ornament{display:flex;align-items:center;justify-content:center;gap:.85rem;margin:.85rem 0 1.35rem;color:var(--gold-light)}.ornament span{display:block;width:4.5rem;height:1px;background:var(--gold-light);opacity:.7}.ornament em{font-style:normal;font-size:.55rem}.section-head{max-width:640px;margin:0 auto 2.5rem;text-align:center}.section-head h2,.story h2,.colours h2,.gifts h2{margin:0;font-family:var(--serif);font-size:clamp(2.2rem,6vw,3.6rem);font-weight:500;line-height:1.1}.lede{margin:0 auto;max-width:560px;color:var(--ink-soft);font-size:1.05rem}.btn{display:inline-block;margin-top:1.75rem;padding:.9rem 1.6rem;border:1px solid var(--ink);background:var(--ink);color:var(--ivory);text-decoration:none;font-size:.74rem;letter-spacing:.16em;text-transform:uppercase;cursor:pointer;font-family:inherit;transition:background .25s ease,color .25s ease,border-color .25s ease,transform .25s ease,box-shadow .25s ease}.btn:hover{background:var(--gold);border-color:var(--gold);transform:translateY(-2px)}.btn-ghost{margin-top:1.25rem;background:transparent;color:var(--ink)}.btn-ghost:hover{background:var(--ink);color:var(--ivory);border-color:var(--ink)}.nav{position:fixed;top:0;left:0;right:0;z-index:20;display:grid;grid-template-columns:auto 1fr auto;align-items:center;gap:1rem;padding:.9rem 1.5rem;background:#faf6eff5;-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);border-bottom:1px solid var(--line)}.nav-mark{font-family:var(--serif);font-size:1.05rem;letter-spacing:.18em;text-decoration:none;color:var(--gold);white-space:nowrap}.nav nav{display:flex;justify-content:center;gap:1.6rem}.nav a{text-decoration:none;font-size:.72rem;letter-spacing:.16em;text-transform:uppercase}.nav nav a{transition:color .2s ease}.nav nav a:hover,.nav nav a.is-active{color:var(--gold)}.nav-rsvp{justify-self:end;padding:.5rem .95rem;border:1px solid var(--gold);background:var(--gold);color:var(--ivory);font-size:.68rem;transition:background .2s ease,border-color .2s ease,color .2s ease}.nav-rsvp:hover{background:var(--ink);border-color:var(--ink);color:var(--ivory)}.nav-toggle{display:none;width:2.25rem;height:2.25rem;padding:0;border:0;background:transparent;cursor:pointer}.nav-toggle span{display:block;width:1.15rem;height:1px;margin:.28rem auto;background:var(--ink)}.hero{position:relative;min-height:calc(100vh - var(--nav-height));display:flex;flex-direction:column;justify-content:flex-end;align-items:center;text-align:center;padding:4.5rem 1.5rem 4.25rem;color:var(--ivory);overflow:hidden}.hero-photo{position:absolute;inset:0;width:100%;height:120%;object-fit:cover;object-position:center 18%;will-change:transform,translate;animation:kenburns 22s ease-out forwards}.hero:after{content:"";position:absolute;inset:0;background:linear-gradient(180deg,#14100c2e,#14100c47 42%,#14100cc7)}.hero-copy{position:relative;z-index:1;max-width:820px}.hero .kicker,.hero .hero-place,.hero .ornament{color:var(--gold-light)}.hero .btn{border-color:var(--ivory);background:transparent;color:var(--ivory)}.hero .btn:hover{background:var(--ivory);color:var(--ink);border-color:var(--ivory)}.hero h1{margin:0;display:flex;flex-direction:column;gap:.05rem;font-family:var(--serif);font-size:clamp(3.2rem,11vw,6.4rem);font-weight:500;line-height:.92}.hero h1 em{font-family:var(--script);font-style:normal;font-size:.42em;font-weight:400;color:var(--gold)}.hero-full,.hero-date,.hero-place{margin:0}.hero-full{margin:.35rem 0 .4rem;color:var(--ink-soft);font-size:.82rem;letter-spacing:.08em}.hero-date{font-family:var(--serif);font-size:1.45rem}.hero-place{margin-top:.3rem;letter-spacing:.22em;text-transform:uppercase;font-size:.74rem;color:var(--ink-soft)}.countdown{padding:3rem 1.5rem 3.25rem;text-align:center;background:var(--ink);color:var(--ivory)}.countdown .kicker{color:var(--gold-light)}.countdown-grid{max-width:720px;margin:.5rem auto 0;display:grid;grid-template-columns:repeat(4,1fr);gap:1rem}.countdown-grid strong{display:block;font-family:var(--serif);font-size:clamp(1.8rem,6vw,3rem);font-weight:500}.countdown-grid span{font-size:.68rem;letter-spacing:.16em;text-transform:uppercase;opacity:.65}.countdown-done{text-align:center;font-family:var(--serif);font-size:1.8rem;margin:0}.story,.gifts{max-width:680px;margin:0 auto;padding:5.5rem 1.5rem;text-align:center}.story{max-width:1080px;display:grid;grid-template-columns:minmax(0,.9fr) minmax(0,1.1fr);gap:3.25rem;align-items:center;text-align:left}.story-photo{margin:0}.story-photo img{display:block;width:100%;height:auto}.story-copy{text-align:center}.gallery{padding:5.5rem 1.5rem 6rem;background:var(--paper)}.gallery-grid{max-width:1080px;margin:0 auto;display:grid;grid-template-columns:1fr 1fr;gap:.85rem;align-items:start}.gallery-grid figure{margin:0;transition:transform .45s ease,box-shadow .45s ease}.gallery-grid figure.is-in:hover{transform:translateY(-8px);box-shadow:0 18px 40px #2c241c24}.gallery-grid img{display:block;width:100%;height:auto}.story-body{margin:0;font-size:1.18rem;color:var(--ink-soft)}.schedule,.faq{padding:5.5rem 1.5rem}.schedule{background:var(--paper)}.event-grid{max-width:1100px;margin:0 auto;display:grid;grid-template-columns:repeat(3,1fr);gap:1.5rem}.event-card{padding:2.5rem 2rem 2.25rem;text-align:center;background:var(--ivory);border:1px solid var(--line);transition:transform .4s ease,box-shadow .4s ease,border-color .4s ease}.event-card.is-in:hover{transform:translateY(-8px);border-color:#9a7b4f59;box-shadow:0 16px 36px #2c241c1a}.event-time{margin:0 0 .15rem;font-family:var(--serif);font-size:1.2rem}.event-card:not(:has(.event-hour)) .event-time{margin-bottom:.5rem;font-size:1.45rem}.event-hour{margin:0 0 .45rem;font-family:var(--serif);font-size:1.55rem}.event-card h3{margin:0 0 .4rem;font-family:var(--serif);font-size:1.85rem;font-weight:500}.event-place{margin:0 0 .15rem;font-weight:400}.event-card p{margin:0}.event-note,.event-dress{margin-top:.9rem;color:var(--ink-soft);font-size:.95rem}.event-dress{letter-spacing:.12em;text-transform:uppercase;font-size:.7rem;color:var(--gold)}.schedule-aside{max-width:640px;margin:2rem auto 0;text-align:center;color:var(--ink-soft)}.colours{padding:5.5rem 1.5rem 5.75rem;text-align:center;background:var(--ivory)}.colours .lede{margin-top:.35rem}.palette{max-width:920px;margin:0 auto;display:flex;flex-wrap:wrap;justify-content:center;gap:1.35rem 1.1rem}.palette-swatch{margin:0;width:7.4rem}.palette-chip{display:block;width:6.4rem;height:6.4rem;margin:0 auto .85rem;border-radius:50%;box-shadow:0 10px 24px #2c241c24;border:1px solid rgba(44,36,28,.08)}.palette-chip.is-light{border:1px solid rgba(44,36,28,.22);box-shadow:0 10px 24px #2c241c14}.palette-swatch figcaption{display:grid;gap:.15rem}.palette-swatch strong{font-size:.78rem;letter-spacing:.08em;text-transform:uppercase;font-weight:500}.palette-swatch em{font-style:normal;font-size:.72rem;letter-spacing:.04em;color:var(--ink-soft)}.palette-bar{max-width:720px;margin:2.25rem auto 0;display:grid;grid-template-columns:repeat(5,1fr);height:3.4rem;overflow:hidden;border:1px solid rgba(44,36,28,.16)}.palette-bar span:last-child{box-shadow:inset 0 0 0 1px #2c241c2e}.gifts{background:var(--paper-deep);max-width:none}.gifts .lede{margin-top:.25rem}.gift-account{max-width:420px;margin:2rem auto 0;padding:2rem 1.75rem 1.75rem;background:var(--ivory);border:1px solid var(--line);transition:border-color .4s ease,box-shadow .4s ease,transform .8s ease,opacity .8s ease}.gift-account.is-in{box-shadow:0 16px 40px #9a7b4f24}.gift-account.is-copied{border-color:var(--gold);box-shadow:0 0 0 1px var(--gold),0 16px 40px #9a7b4f2e}.gift-account dl{margin:.35rem 0 0}.gift-account dl>div{padding:.85rem 0;border-top:1px solid var(--line)}.gift-account dl>div:last-child{border-bottom:1px solid var(--line)}.gift-account dt{margin:0 0 .2rem;font-size:.68rem;letter-spacing:.16em;text-transform:uppercase;color:var(--gold)}.gift-account dd{margin:0;font-family:var(--serif);font-size:1.45rem;font-weight:500}.gift-account .btn{margin-top:1.35rem}.registry-links{display:flex;flex-wrap:wrap;justify-content:center;gap:.75rem;margin-top:.5rem}.faq-list{max-width:720px;margin:0 auto}.faq-item{border-top:1px solid var(--line)}.faq-item:last-child{border-bottom:1px solid var(--line)}.faq-item button{width:100%;display:flex;justify-content:space-between;align-items:center;gap:1rem;padding:1.15rem .15rem;border:0;background:transparent;text-align:left;cursor:pointer;font-family:var(--serif);font-size:1.35rem;color:var(--ink)}.faq-item button span{color:var(--gold);font-family:var(--sans);font-size:1.1rem}.faq-item p{margin:0 0 1.2rem;color:var(--ink-soft);animation:fadeRise .4s ease}.footer{padding:3rem 1.5rem 3.4rem;text-align:center;background:var(--ink);color:var(--ivory)}.footer p{margin:.2rem 0}.footer-mark{margin-bottom:.7rem;font-family:var(--serif);letter-spacing:.22em;color:var(--gold-light)}.footer p:last-child{margin-top:.85rem;opacity:.65;letter-spacing:.1em}.scroll-progress{position:fixed;top:0;left:0;z-index:40;width:100%;height:3px;background:linear-gradient(90deg,var(--gold-light),var(--gold));transform:scaleX(0);transform-origin:left center;pointer-events:none}.hero-fade{animation:fadeRise 1.05s ease both}.hero .btn-gift{animation:fadeRise 1.05s ease both,giftPulse 2.8s ease-in-out 1.6s infinite}.photo-open{display:block;width:100%;padding:0;border:0;background:transparent;cursor:zoom-in}.photo-open img{display:block;width:100%;height:auto}.reveal{opacity:0;transition:opacity .85s ease,transform .85s ease;transition-delay:var(--reveal-delay, 0ms)}.reveal-up{transform:translateY(32px)}.reveal-left{transform:translate(-36px)}.reveal-right{transform:translate(36px)}.reveal-scale{transform:translateY(22px) scale(.97)}.reveal.is-in{opacity:1;transform:none}.gift-dock{position:fixed;right:1.2rem;bottom:1.2rem;z-index:30;margin:0;padding:.9rem 1.25rem;border:0;background:var(--gold);color:var(--ivory);text-decoration:none;font-size:.72rem;letter-spacing:.16em;text-transform:uppercase;box-shadow:0 12px 30px #2c241c3d;opacity:0;pointer-events:none;transform:translateY(16px);transition:opacity .35s ease,transform .35s ease,background .2s ease}.gift-dock.is-visible{opacity:1;pointer-events:auto;transform:none}.gift-dock:hover{background:var(--ink)}.lightbox{position:fixed;inset:0;z-index:50;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:1rem;padding:1.5rem;background:#14100ce6;animation:fadeIn .28s ease}.lightbox img{max-width:min(92vw,920px);max-height:82vh;object-fit:contain;box-shadow:0 20px 60px #00000059}.lightbox-close{padding:.55rem 1rem;border:1px solid var(--ivory);background:transparent;color:var(--ivory);letter-spacing:.16em;text-transform:uppercase;font-size:.68rem;cursor:pointer}@keyframes fadeRise{0%{opacity:0;transform:translateY(18px)}to{opacity:1;transform:none}}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}@keyframes kenburns{0%{transform:scale(1.14)}to{transform:scale(1.04)}}@keyframes giftPulse{0%,to{box-shadow:0 0 #faf6ef00}50%{box-shadow:0 0 0 12px #faf6ef24}}@media(max-width:820px){.nav{grid-template-columns:auto 1fr auto auto}.nav nav{position:absolute;top:100%;left:0;right:0;display:none;flex-direction:column;gap:0;padding:.5rem 1.5rem 1rem;background:var(--ivory);border-bottom:1px solid var(--line)}.nav nav.is-open{display:flex}.nav nav a{padding:.7rem 0;border-top:1px solid var(--line)}.nav-toggle{display:block}.event-grid{grid-template-columns:1fr}.story{grid-template-columns:1fr;gap:2rem;text-align:center}.story-photo img{margin:0 auto}.gallery-grid{grid-template-columns:1fr 1fr}}@media(max-width:560px){.gallery-grid{grid-template-columns:1fr}.palette-swatch{width:6.4rem}.palette-chip{width:5.4rem;height:5.4rem}.palette-bar{height:2.6rem}}@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}.reveal,.hero-fade,.hero-photo,.hero .btn-gift,.gift-dock,.lightbox,.faq-item p{animation:none!important;transition:none!important;opacity:1!important;transform:none!important;translate:none!important}.gift-dock:not(.is-visible){opacity:0!important}}
