*, *::before, *::after { box-sizing: border-box; margin: 0; padding: 0; }
:root { --gold:#b8986a; --gold-light:#d4b896; --cream:#faf6f0; --dark:#2c2416; --text:#4a3f2f; --white:#ffffff; }
html { scroll-behavior: smooth; }
body { width:100%; background:var(--dark); font-family:'Cormorant Garamond',serif; color:var(--text); overflow-x:hidden; }

#splash { position:fixed; inset:0; z-index:999; background:var(--dark); display:flex; flex-direction:column; align-items:center; justify-content:center; cursor:pointer; transition:opacity 0.8s ease; }
#splash.hidden { opacity:0; pointer-events:none; }
.splash-names { font-family:'Great Vibes',cursive; font-size:clamp(3rem,12vw,6rem); color:var(--gold-light); text-align:center; line-height:1.1; animation:fadeUp 1.2s ease forwards; opacity:0; }
.splash-amp { font-family:'Cormorant Garamond',serif; font-size:clamp(1.2rem,5vw,2rem); color:var(--gold); display:block; margin:0.3em 0; letter-spacing:0.3em; font-style:italic; }
.splash-subtitle { font-family:'Montserrat',sans-serif; font-size:0.7rem; letter-spacing:0.25em; color:rgba(255,255,255,0.4); text-transform:uppercase; margin-top:2rem; animation:fadeUp 1.5s 0.4s ease forwards; opacity:0; }
.tap-pulse { margin-top:3rem; width:56px; height:56px; border:1.5px solid var(--gold); border-radius:50%; display:flex; align-items:center; justify-content:center; animation:pulse 2s infinite,fadeUp 1.5s 0.8s ease forwards; opacity:0; }
.tap-pulse svg { width:20px; height:20px; fill:var(--gold); }
.tap-label { margin-top:0.8rem; font-family:'Montserrat',sans-serif; font-size:0.65rem; letter-spacing:0.2em; color:rgba(255,255,255,0.35); text-transform:uppercase; animation:fadeUp 1.5s 1s ease forwards; opacity:0; }

.music-btn { position:fixed; top:1.2rem; right:1.2rem; z-index:200; width:38px; height:38px; border-radius:50%; background:rgba(44,36,22,0.7); backdrop-filter:blur(8px); border:1px solid rgba(184,152,106,0.3); display:none; align-items:center; justify-content:center; cursor:pointer; }
.music-btn svg { width:16px; height:16px; fill:var(--gold); }

#main { display:none; }
#main.visible { display:block; }

.sec { padding:3.5rem 1.5rem; text-align:center; }
.sec-dark  { background:var(--dark); }
.sec-cream { background:var(--cream); }
.sec-white { background:var(--white); }
.inner { max-width:340px; margin:0 auto; }

.reveal { opacity:0; transform:translateY(22px); transition:opacity 0.7s ease,transform 0.7s ease; }
.reveal.on { opacity:1; transform:none; }
.d1{transition-delay:0.1s} .d2{transition-delay:0.2s} .d3{transition-delay:0.3s}

#hero { min-height:100svh; background:linear-gradient(to bottom,rgba(0,0,0,0.4) 0%,rgba(44,36,22,0.9) 100%); background-size:cover; background-position:center; display:flex; flex-direction:column; align-items:center; justify-content:center; padding:3rem 1.5rem 5rem; text-align:center; position:relative; }
.hero-date { font-family:'Montserrat',sans-serif; font-size:0.6rem; letter-spacing:0.35em; color:var(--gold-light); text-transform:uppercase; margin-bottom:1.5rem; }
.hero-names { font-family:'Great Vibes',cursive; font-size:clamp(3.5rem,13vw,6.5rem); color:var(--white); line-height:1.05; }
.hero-amp { display:block; font-family:'Cormorant Garamond',serif; font-size:clamp(1rem,4vw,1.5rem); color:var(--gold); letter-spacing:0.5em; font-style:italic; margin:0.3em 0; }
.hero-tagline { margin-top:1rem; font-family:'Montserrat',sans-serif; font-size:0.6rem; letter-spacing:0.25em; color:rgba(255,255,255,0.45); text-transform:uppercase; }
.divider { width:130px; margin:1.4rem auto; display:flex; align-items:center; gap:0.7rem; }
.divider span { flex:1; height:1px; background:var(--gold); opacity:0.4; }
.divider svg { width:12px; height:12px; fill:var(--gold); }
.scroll-hint { position:absolute; bottom:2rem; left:50%; transform:translateX(-50%); display:flex; flex-direction:column; align-items:center; gap:0.4rem; }
.scroll-hint p { font-family:'Montserrat',sans-serif; font-size:0.5rem; letter-spacing:0.25em; text-transform:uppercase; color:rgba(255,255,255,0.3); }
.scroll-line { width:1px; height:28px; background:var(--gold); opacity:0.3; animation:lineAnim 2s ease-in-out infinite; }

.sec-label { font-family:'Montserrat',sans-serif; font-size:0.56rem; letter-spacing:0.35em; text-transform:uppercase; color:var(--gold); margin-bottom:0.7rem; display:block; }
.sec-label.lt { color:var(--gold-light); }
.script { font-family:'Great Vibes',cursive; font-size:clamp(2.2rem,9vw,3rem); line-height:1.1; }

.verse-block { border-left:2px solid var(--gold); padding-left:1.1rem; text-align:left; margin:1rem auto; max-width:290px; }
.verse-text { font-style:italic; font-size:1.05rem; line-height:1.8; color:var(--text); }
.verse-ref { margin-top:0.4rem; font-family:'Montserrat',sans-serif; font-size:0.55rem; letter-spacing:0.18em; color:var(--gold); text-transform:uppercase; }

.invite-fam { font-family:'Montserrat',sans-serif; font-size:0.65rem; letter-spacing:0.15em; color:var(--gold); text-transform:uppercase; margin-bottom:0.4rem; }
.invite-body { font-size:1rem; line-height:1.8; color:var(--text); }
.invite-couple { font-family:'Great Vibes',cursive; font-size:clamp(2.4rem,9vw,3.2rem); color:var(--dark); line-height:1.1; margin:0.3rem 0; }
.invite-date { font-family:'Montserrat',sans-serif; font-size:0.65rem; letter-spacing:0.22em; text-transform:uppercase; color:var(--text); margin-top:0.2rem; }

#photo { background:var(--dark); position:relative; line-height:0; }
#photo img { width:100%; display:block; object-fit:cover; }
.photo-overlay { position:absolute; inset:0; background:linear-gradient(to top,rgba(44,36,22,0.65) 0%,transparent 50%); display:flex; align-items:flex-end; justify-content:center; padding-bottom:2rem; }
.photo-caption { font-family:'Great Vibes',cursive; font-size:1.8rem; color:var(--white); opacity:0.85; }

.ceremony-card { background:var(--white); border:1px solid rgba(184,152,106,0.25); border-radius:2px; padding:2rem 1.6rem; box-shadow:0 6px 30px rgba(0,0,0,0.07); position:relative; max-width:290px; margin:0.8rem auto 0; }
.ceremony-card::before { content:'\2726'; position:absolute; top:0.7rem; left:0.7rem; color:var(--gold); font-size:0.5rem; opacity:0.5; }
.ceremony-card::after  { content:'\2726'; position:absolute; bottom:0.7rem; right:0.7rem; color:var(--gold); font-size:0.5rem; opacity:0.5; }
.cer-detail { font-family:'Montserrat',sans-serif; font-size:0.62rem; letter-spacing:0.18em; text-transform:uppercase; color:var(--text); line-height:2.1; }
.cer-venue { font-family:'Cormorant Garamond',serif; font-size:1.25rem; font-weight:500; color:var(--dark); margin:0.25rem 0 0.1rem; }
.map-btn { display:inline-flex; align-items:center; gap:0.45rem; margin-top:1.2rem; padding:0.55rem 1.1rem; border:1px solid var(--gold); color:var(--gold); font-family:'Montserrat',sans-serif; font-size:0.56rem; letter-spacing:0.18em; text-transform:uppercase; text-decoration:none; transition:background 0.2s,color 0.2s; }
.map-btn:hover { background:var(--gold); color:var(--white); }
.map-btn svg { width:11px; height:11px; fill:currentColor; }

.cd-grid { display:flex; justify-content:center; gap:1rem; margin-top:1.2rem; }
.cd-item { text-align:center; }
.cd-num { font-family:'Cormorant Garamond',serif; font-size:clamp(2.2rem,9vw,3rem); font-weight:300; color:var(--white); line-height:1; display:block; }
.cd-lbl { font-family:'Montserrat',sans-serif; font-size:0.48rem; letter-spacing:0.18em; text-transform:uppercase; color:var(--gold); margin-top:0.25rem; display:block; }
.cd-sep { font-size:1.8rem; color:var(--gold); opacity:0.3; align-self:flex-start; margin-top:0.35rem; line-height:1; }

.rsvp-sub { font-family:'Montserrat',sans-serif; font-size:0.56rem; letter-spacing:0.16em; text-transform:uppercase; color:rgba(255,255,255,0.3); margin-bottom:0.5rem; }
.rsvp-note { font-family:'Montserrat',sans-serif; font-size:0.58rem; letter-spacing:0.18em; text-transform:uppercase; color:var(--gold-light); margin-bottom:1rem; }
.guest-row { background:rgba(255,255,255,0.04); border:1px solid rgba(184,152,106,0.15); border-radius:2px; padding:0.75rem 1rem; display:flex; align-items:center; justify-content:space-between; gap:0.8rem; margin-bottom:0.6rem; }
.guest-name { font-family:'Cormorant Garamond',serif; font-size:1rem; color:rgba(255,255,255,0.85); text-align:left; flex:1; }
.rsvp-btns { display:flex; gap:0.35rem; }
.rsvp-btn { padding:0.3rem 0.7rem; font-family:'Montserrat',sans-serif; font-size:0.52rem; letter-spacing:0.08em; text-transform:uppercase; border:none; cursor:pointer; transition:all 0.2s; border-radius:1px; }
.rsvp-btn.accept { background:transparent; border:1px solid var(--gold); color:var(--gold); }
.rsvp-btn.accept:hover,.rsvp-btn.accept.active { background:var(--gold); color:var(--dark); }
.rsvp-btn.decline { background:transparent; border:1px solid rgba(255,255,255,0.2); color:rgba(255,255,255,0.4); }
.rsvp-btn.decline:hover,.rsvp-btn.decline.active { background:rgba(255,255,255,0.1); color:rgba(255,255,255,0.7); }
.rsvp-submit { display:block; width:100%; margin-top:1rem; padding:0.8rem; background:var(--gold); color:var(--dark); font-family:'Montserrat',sans-serif; font-size:0.58rem; letter-spacing:0.28em; text-transform:uppercase; border:none; cursor:pointer; transition:background 0.2s; }
.rsvp-submit:hover { background:var(--gold-light); }
.rsvp-submit:disabled { opacity:0.5; cursor:not-allowed; }
.rsvp-confirm { display:none; margin-top:0.8rem; padding:0.75rem; border:1px solid rgba(184,152,106,0.3); color:var(--gold-light); font-family:'Montserrat',sans-serif; font-size:0.55rem; letter-spacing:0.12em; text-transform:uppercase; text-align:center; }

.gifts-intro { font-style:italic; font-size:0.92rem; color:var(--text); line-height:1.75; margin-bottom:1.1rem; opacity:0.85; }
.gift-card { background:var(--white); border:1px solid rgba(184,152,106,0.2); border-radius:2px; padding:1.1rem; box-shadow:0 3px 18px rgba(0,0,0,0.05); text-align:left; margin-bottom:0.8rem; }
.gift-head { display:flex; align-items:center; gap:0.65rem; margin-bottom:0.8rem; }
.gift-icon { width:32px; height:32px; border-radius:50%; background:var(--gold); display:flex; align-items:center; justify-content:center; flex-shrink:0; }
.gift-icon svg { width:16px; height:16px; fill:var(--white); }
.gift-icon[style] svg { fill:var(--gold); }
.gift-method { font-family:'Montserrat',sans-serif; font-size:0.52rem; letter-spacing:0.16em; text-transform:uppercase; color:var(--gold); display:block; }
.gift-bank { font-family:'Cormorant Garamond',serif; font-size:0.9rem; font-weight:500; color:var(--dark); }
.gift-field { margin-top:0.5rem; }
.gift-lbl { font-family:'Montserrat',sans-serif; font-size:0.48rem; letter-spacing:0.14em; text-transform:uppercase; color:rgba(74,63,47,0.4); margin-bottom:0.2rem; display:block; }
.gift-row { display:flex; align-items:center; gap:0.45rem; background:var(--cream); border:1px solid rgba(184,152,106,0.15); border-radius:2px; padding:0.4rem 0.65rem; }
.gift-val { font-family:'Montserrat',sans-serif; font-size:0.62rem; color:var(--dark); flex:1; word-break:break-all; }
.copy-btn { background:none; border:none; cursor:pointer; padding:0.15rem; display:flex; align-items:center; color:var(--gold); transition:color 0.2s; flex-shrink:0; }
.copy-btn:hover { color:var(--dark); }
.copy-btn svg { width:13px; height:13px; fill:currentColor; }

.copy-toast { position:fixed; bottom:2rem; left:50%; transform:translateX(-50%) translateY(12px); background:var(--dark); color:var(--gold-light); font-family:'Montserrat',sans-serif; font-size:0.56rem; letter-spacing:0.16em; text-transform:uppercase; padding:0.55rem 1.2rem; border-radius:2px; opacity:0; pointer-events:none; transition:opacity 0.3s,transform 0.3s; z-index:999; white-space:nowrap; border:1px solid rgba(184,152,106,0.2); }
.copy-toast.show { opacity:1; transform:translateX(-50%) translateY(0); }

@keyframes fadeUp   { from{opacity:0;transform:translateY(22px)} to{opacity:1;transform:translateY(0)} }
@keyframes pulse    { 0%,100%{box-shadow:0 0 0 0 rgba(184,152,106,0.4)} 50%{box-shadow:0 0 0 12px rgba(184,152,106,0)} }
@keyframes lineAnim { 0%,100%{opacity:0.15} 50%{opacity:0.4} }
