:root{--primary:#735a45;--secondary:#b89878;--paper:#f8f3eb;--ink:#2f2924;--muted:#746b63;--cream:#fffdf9;--heading:Georgia,serif;--body:Inter,system-ui,sans-serif;--shadow:0 22px 60px rgba(69,48,31,.12)}
*{box-sizing:border-box}
html{scroll-behavior:smooth}
body{margin:0;color:var(--ink);font-family:var(--body);background:var(--paper);line-height:1.7}
button,input,textarea,select{font:inherit}
button,a{-webkit-tap-highlight-color:transparent}
h1,h2,h3{font-family:var(--heading);font-weight:500;line-height:1.12;margin:0 0 .7em}
h2{font-size:clamp(2.2rem,7vw,4rem)}
h3{font-size:1.4rem}
p{margin:.4rem 0 1.25rem}
.eyebrow{text-transform:uppercase;letter-spacing:.22em;font-size:.72rem;font-weight:700;color:var(--primary)}
.eyebrow.light,.light{color:#fff}
.section{position:relative;padding:5.5rem 1.25rem;overflow:hidden}
.section-inner{width:min(1080px,100%);margin:auto;text-align:center}
.narrow{width:min(680px,100%)}
.ornament{font-size:1.6rem;color:var(--secondary);margin-bottom:1.3rem}
.invite-body{background:var(--paper)}
.cover{position:fixed;z-index:100;inset:0;display:grid;place-items:center;background:linear-gradient(160deg,#2b2119,#6f5743);color:#fff;text-align:center;padding:1.5rem;transition:opacity .8s ease,transform .8s ease}
.cover::before{content:"";position:absolute;inset:0;background-image:var(--cover);background-size:cover;background-position:center;opacity:.42}
.cover-wash{position:absolute;inset:0;background:linear-gradient(180deg,rgba(22,15,10,.2),rgba(30,20,14,.77))}
.cover-content{position:relative;width:min(580px,100%)}
.cover .eyebrow{color:#f4e7d4}
.cover h1{font-size:clamp(3.1rem,13vw,6.8rem);margin:.2em 0}
.cover-date{letter-spacing:.08em}
.guest-card{margin:2rem auto 1.4rem;padding:1.1rem 1.3rem;width:min(420px,100%);border:1px solid rgba(255,255,255,.35);border-radius:1rem;background:rgba(255,255,255,.1);backdrop-filter:blur(12px)}
.guest-card span,.guest-card strong{display:block}
.guest-card span{font-size:.75rem;opacity:.75}
.guest-card strong{font-family:var(--heading);font-size:1.35rem;margin-top:.2rem}
.invite-button,.invite-submit,.button-light,.button-outline{border:0;border-radius:999px;padding:.9rem 1.4rem;cursor:pointer;transition:transform .2s,background .2s,box-shadow .2s}
.invite-button,.button-light{background:#fff;color:var(--primary);font-weight:750;box-shadow:0 12px 35px rgba(0,0,0,.2)}
.invite-button:hover,.button-light:hover,.invite-submit:hover,.button-outline:hover{transform:translateY(-2px)}
.cover.opened{opacity:0;transform:translateY(-3%);pointer-events:none}
.invite-shell{opacity:.25;filter:blur(5px);transition:opacity .6s,filter .6s}
.invitation-open .invite-shell{opacity:1;filter:none}
.hero{min-height:100svh;display:grid;place-items:center;text-align:center;background:radial-gradient(circle at 50% 30%,#fff 0,var(--paper) 52%,#eadfce 100%)}
.hero-halo{position:absolute;width:min(75vw,620px);aspect-ratio:1;border:1px solid rgba(115,90,69,.25);border-radius:50%}
.hero-halo::before,.hero-halo::after{content:"";position:absolute;border:1px solid rgba(115,90,69,.18);border-radius:50%;inset:7%}
.hero-halo::after{inset:14%}
.hero>*:not(.hero-halo){position:relative;z-index:1}
.hero h1{font-size:clamp(3.5rem,15vw,8.5rem);max-width:900px}
.hero-date{font-weight:650;letter-spacing:.08em}
.scroll-cue{position:absolute;bottom:2rem;font-size:.72rem;text-transform:uppercase;letter-spacing:.14em;color:var(--muted)}
.scroll-cue span{display:block;font-size:1.3rem;animation:bob 1.8s infinite}
.intro-section{background:var(--cream)}
.quote{font-family:var(--heading);font-size:clamp(1.5rem,5vw,2.2rem);line-height:1.45}
.couple-grid{display:grid;gap:2rem;margin-top:2.5rem}
.person-card{background:rgba(255,255,255,.58);border:1px solid rgba(115,90,69,.13);padding:2rem 1.3rem;border-radius:2rem;box-shadow:var(--shadow)}
.person-photo{width:170px;aspect-ratio:1;margin:0 auto 1.5rem;border-radius:50%;border:8px solid #fff;box-shadow:var(--shadow);overflow:hidden;background:linear-gradient(135deg,var(--secondary),var(--primary));display:grid;place-items:center;color:#fff;font-family:var(--heading);font-size:4rem}
.person-photo img{width:100%;height:100%;object-fit:cover}
.parents{color:var(--muted)}
.text-link{color:var(--primary);font-weight:700}
.countdown-section,.zoom-section{color:#fff;background:linear-gradient(140deg,#4c392d,var(--primary))}
.countdown-section h2,.zoom-section h2{color:#fff}
.countdown{display:grid;grid-template-columns:repeat(4,1fr);gap:.6rem;margin-top:2rem}
.countdown div{padding:1rem .4rem;border-radius:1rem;background:rgba(255,255,255,.1);border:1px solid rgba(255,255,255,.18)}
.countdown strong,.countdown span{display:block}
.countdown strong{font-family:var(--heading);font-size:clamp(1.8rem,8vw,3.5rem)}
.countdown span{font-size:.68rem;text-transform:uppercase;letter-spacing:.12em}
.event-grid{display:grid;gap:1.2rem;margin-top:2.5rem}
.event-card{padding:2rem;background:var(--cream);border:1px solid rgba(115,90,69,.13);border-radius:1.5rem;box-shadow:var(--shadow)}
.event-type{display:inline-block;padding:.25rem .7rem;background:#efe4d5;color:var(--primary);border-radius:999px;font-size:.7rem;font-weight:750;text-transform:uppercase;letter-spacing:.1em;margin-bottom:1rem}
.event-card time,.event-card .venue{display:block}
.event-card time{color:var(--muted);margin-bottom:.8rem}
.button-outline{display:inline-block;border:1px solid currentColor;color:var(--primary);background:transparent;text-decoration:none;font-weight:700}
.zoom-credentials{display:grid;gap:.8rem;margin:1.5rem 0}
.zoom-credentials>div{padding:1rem;border:1px solid rgba(255,255,255,.2);border-radius:1rem}
.zoom-credentials span,.zoom-credentials strong{display:block}
.zoom-credentials strong{font-size:1.25rem}
.copy-mini{border:0;background:transparent;color:#fff;text-decoration:underline;cursor:pointer}
.gallery-grid{columns:2;column-gap:.7rem;margin-top:2rem}
.gallery-item{position:relative;display:block;width:100%;margin:0 0 .7rem;padding:0;border:0;background:none;border-radius:1rem;overflow:hidden;cursor:zoom-in}
.gallery-item img{display:block;width:100%;height:auto}
.gallery-item span{position:absolute;inset:auto 0 0;padding:2rem .7rem .6rem;background:linear-gradient(transparent,rgba(0,0,0,.62));color:#fff;text-align:left;font-size:.78rem}
.lightbox{border:0;border-radius:1rem;padding:0;max-width:min(94vw,1100px);max-height:92vh;background:#15110e}
.lightbox::backdrop{background:rgba(20,15,12,.87);backdrop-filter:blur(6px)}
.lightbox img{display:block;max-width:94vw;max-height:88vh;object-fit:contain}
.lightbox button{position:absolute;right:.7rem;top:.7rem;width:2.7rem;height:2.7rem;border-radius:50%;border:0;background:rgba(0,0,0,.6);color:#fff;font-size:1.8rem;cursor:pointer}
.story-section{background:#fffdf9}
.timeline{text-align:left;margin-top:2.5rem}
.timeline-item{position:relative;padding:0 0 2.8rem 2rem;border-left:1px solid var(--secondary)}
.timeline-dot{position:absolute;width:.8rem;height:.8rem;border-radius:50%;background:var(--primary);left:-.44rem;top:.35rem;box-shadow:0 0 0 6px var(--paper)}
.timeline-item time{color:var(--primary);font-size:.75rem;text-transform:uppercase;letter-spacing:.14em;font-weight:700}
.timeline-item h3{margin-top:.3rem}
.timeline-item img{width:100%;max-height:360px;object-fit:cover;border-radius:1rem;margin:.5rem 0 1rem}
.invite-form{text-align:left;display:grid;gap:1rem;margin-top:2rem;padding:1.4rem;background:rgba(255,255,255,.72);border:1px solid rgba(115,90,69,.13);border-radius:1.5rem;box-shadow:var(--shadow)}
.invite-form label,.invite-form legend{font-weight:700;font-size:.84rem}
.invite-form input,.invite-form textarea{display:block;width:100%;margin-top:.4rem;padding:.8rem 1rem;border:1px solid #d9ccbd;border-radius:.8rem;background:#fff;color:var(--ink)}
.invite-form fieldset{border:0;padding:0;margin:0;display:grid;gap:.5rem}
.choice{display:flex;align-items:center;gap:.7rem;padding:.85rem;border:1px solid #d9ccbd;border-radius:.8rem;background:#fff}
.choice input{width:1.15rem;margin:0}
.invite-submit{background:var(--primary);color:#fff;font-weight:750}
.qr-section{background:#fff}
.guest-qr{width:min(320px,80vw);background:#fff;padding:1rem;border-radius:1rem;box-shadow:var(--shadow)}
.checkin-code{width:min(420px,100%);margin:1.2rem auto 0;padding:1rem;border:1px solid rgba(115,90,69,.18);border-radius:1rem;background:var(--paper)}
.checkin-code span,.checkin-code code{display:block}.checkin-code span{font-size:.72rem;font-weight:750;text-transform:uppercase;letter-spacing:.12em;color:var(--muted)}
.checkin-code code{margin:.4rem 0 .8rem;font:700 clamp(.9rem,4vw,1.1rem)/1.5 ui-monospace,SFMono-Regular,Menlo,monospace;letter-spacing:.06em;overflow-wrap:anywhere;color:var(--primary)}
.wishes-list{display:grid;gap:.8rem;margin-top:2rem;text-align:left}
.wishes-list article{padding:1.1rem 1.2rem;background:rgba(255,255,255,.7);border-radius:1rem;border:1px solid rgba(115,90,69,.12)}
.wishes-list p{font-family:var(--heading);font-size:1.1rem}
.wishes-list strong,.wishes-list time{display:block;font-size:.75rem}
.wishes-list time{color:var(--muted)}
.gift-section{background:#fffdf9}
.bank-list{display:grid;gap:1rem;margin-top:2rem}
.bank-list article{padding:1.5rem;background:#fff;border-radius:1.2rem;box-shadow:var(--shadow)}
.bank-list span,.bank-list strong{display:block}
.bank-list strong{font-size:1.5rem;letter-spacing:.08em}
.bank-list img{width:min(220px,100%);display:block;margin:1rem auto;border-radius:.7rem}
.closing-section{min-height:78svh;display:grid;place-items:center;color:#fff;background:linear-gradient(rgba(38,28,21,.72),rgba(38,28,21,.88)),var(--closing),linear-gradient(140deg,#4c392d,#82644e);background-size:cover;background-position:center}
.closing-section h2{font-size:clamp(3rem,13vw,7rem)}
.music-control{position:fixed;z-index:50;right:1rem;bottom:1rem;width:3.2rem;height:3.2rem;border:0;border-radius:50%;background:var(--primary);color:#fff;box-shadow:var(--shadow);cursor:pointer}
.music-control.playing{animation:spin 5s linear infinite}
.toast{position:fixed;z-index:200;left:50%;bottom:1.2rem;transform:translate(-50%,150%);opacity:0;width:min(90vw,480px);padding:1rem 1.2rem;border-radius:1rem;background:#29221d;color:#fff;text-align:center;box-shadow:var(--shadow);transition:.3s}
.toast.show{transform:translate(-50%,0);opacity:1}
.empty-invite{padding:2rem;border:1px dashed #cab9a8;border-radius:1rem;color:var(--muted)}
.landing-body{min-height:100svh;display:grid;place-items:center;padding:1.3rem;background:radial-gradient(circle at 30% 20%,#fff,#f3e9dd 52%,#decbb8)}
.landing{text-align:center;width:min(640px,100%);padding:clamp(2rem,8vw,5rem);background:rgba(255,255,255,.72);border:1px solid #fff;border-radius:2rem;box-shadow:var(--shadow);backdrop-filter:blur(12px)}
.landing h1{font-size:clamp(3rem,12vw,6.5rem)}
.landing-date{font-weight:700}
.landing-note{font-size:.8rem;color:var(--muted)}
.token-chip{font-family:monospace;background:#efe4d5;padding:.7rem;border-radius:.6rem;overflow-wrap:anywhere}
@keyframes bob{50%{transform:translateY(7px)}}
@keyframes spin{to{transform:rotate(360deg)}}
@media(min-width:720px){
  .couple-grid,.event-grid{grid-template-columns:repeat(2,1fr)}
  .couple-grid .person-card:only-child,.event-grid .event-card:only-child{grid-column:1/-1;max-width:560px;margin:auto}
  .gallery-grid{columns:3}
  .bank-list{grid-template-columns:repeat(2,1fr)}
  .section{padding:8rem 2rem}
}
@media(prefers-reduced-motion:reduce){
  *,*::before,*::after{animation-duration:.001ms!important;animation-iteration-count:1!important;scroll-behavior:auto!important;transition-duration:.001ms!important}
}
.reduce-motion *{animation:none!important;transition:none!important}
