
/* ── TOKENS ─────────────────────────────────────── */
:root {
  --parchment:#F9F1E3; --cream:#FDF8F0;
  --gold:#C9A84C; --gold-light:#E8C96A; --gold-dark:#8B6914;
  --rose:#C4728A; --rose-light:#F3C6D0;
  --espresso:#2C1810; --burgundy:#6B2737;
  --text:#2C1810; --muted:#7A5C38; --white:#FFF;
  --trans:.4s ease;
}
*,*::before,*::after{box-sizing:border-box;margin:0;padding:0;}
html{scroll-behavior:smooth;}
body{
  font-family:'Cormorant Garamond',serif;
  background:var(--parchment); color:var(--text);
  font-weight:400; font-size:17px; line-height:1.8; overflow-x:hidden;
}

/* ── TYPOGRAPHY ──────────────────────────────────── */
h1,h2{font-family:'Cinzel',serif;font-weight:600;letter-spacing:.06em;}
h3{font-family:'Cormorant Garamond',serif;font-weight:600;font-style:italic;}
h1{font-size:clamp(2.2rem,5.5vw,4.2rem);line-height:1.15;}
h2{font-size:clamp(1.6rem,3.6vw,2.8rem);line-height:1.2;}
h3{font-size:clamp(1.15rem,2vw,1.6rem);}
p{font-size:clamp(.95rem,1.5vw,1.1rem);color:var(--muted);line-height:1.9;}
.script{font-family:'Great Vibes',cursive;font-weight:400;}

/* ── SHIMMER TEXT EFFECT ─────────────────────────── */
.shimmer {
  background:linear-gradient(110deg,var(--espresso) 40%,var(--gold) 50%,var(--espresso) 60%);
  background-size:220% 100%;
  -webkit-background-clip:text; background-clip:text;
  -webkit-text-fill-color:transparent;
  animation:shimmerSweep 4.5s ease-in-out infinite;
}
@keyframes shimmerSweep{0%{background-position:120% 0;}60%,100%{background-position:-120% 0;}}

/* ── FLOATING PETALS ─────────────────────────────── */
.petal {
  position:fixed; top:-4vh;
  font-size:1rem; color:var(--rose-light);
  opacity:0; pointer-events:none; z-index:5;
  animation:petalFall linear infinite;
}
@keyframes petalFall{
  0%{opacity:0;transform:translateY(0) translateX(0) rotate(0deg);}
  8%{opacity:.7;}
  90%{opacity:.5;}
  100%{opacity:0;transform:translateY(105vh) translateX(8vw) rotate(340deg);}
}

/* ── ORNATE DIVIDER ──────────────────────────────── */
.divider{display:flex;align-items:center;gap:12px;margin:1.8rem auto;width:100%;max-width:460px;}
.divider::before,.divider::after{content:'';flex:1;height:1px;background:linear-gradient(90deg,transparent,var(--gold),transparent);}
.divider-sym{color:var(--gold);font-size:1rem;letter-spacing:8px;opacity:.85;animation:symGlow 3s ease-in-out infinite;}
@keyframes symGlow{0%,100%{text-shadow:0 0 4px rgba(201,168,76,.3);}50%{text-shadow:0 0 14px rgba(201,168,76,.8);}}

/* ── BUTTONS ─────────────────────────────────────── */
.btn{
  display:inline-block;font-family:'Montserrat',sans-serif;
  font-size:.72rem;font-weight:600;letter-spacing:.24em;text-transform:uppercase;
  text-decoration:none;padding:1.05rem 3rem;
  border:1px solid var(--gold);color:var(--espresso);
  background:transparent;cursor:pointer;
  transition:all var(--trans);position:relative;overflow:hidden;
}
.btn::after{content:'';position:absolute;inset:0;background:linear-gradient(135deg,var(--gold),var(--gold-dark));transform:scaleX(0);transform-origin:left;transition:transform var(--trans);z-index:-1;}
.btn:hover{color:var(--white);box-shadow:0 8px 30px rgba(201,168,76,.35);transform:translateY(-2px);}
.btn:hover::after{transform:scaleX(1);}
.btn-solid{background:linear-gradient(135deg,var(--gold),var(--gold-dark));color:var(--white);box-shadow:0 4px 20px rgba(201,168,76,.3);}
.btn-solid::after{background:var(--espresso);}

.section-label{
  font-family:'Montserrat',sans-serif;
  font-size:.66rem;font-weight:600;letter-spacing:.32em;text-transform:uppercase;
  color:var(--rose);margin-bottom:.9rem;display:block;
}

/* ── WELCOME PAGE ────────────────────────────────── */
.welcome-page{
  min-height:100vh;min-height:100svh;
  display:flex;flex-direction:column;
  align-items:center;
  justify-content:center;
  justify-content:safe center; /* browsers with 'safe' never clip; others fall back */
  text-align:center;
  padding:2rem;position:relative;
  overflow-y:auto;overflow-x:hidden; /* if content is taller than screen, scroll — never clip */
  background:
    radial-gradient(ellipse at 12% 30%,rgba(201,168,76,.13) 0%,transparent 55%),
    radial-gradient(ellipse at 88% 70%,rgba(196,114,138,.1) 0%,transparent 55%),
    linear-gradient(160deg,#FBF4E6 0%,#F5EAD5 50%,#F9F1E3 100%);
  background-size:200% 200%;
  animation:bgDrift 16s ease-in-out infinite;
}
@keyframes bgDrift{0%,100%{background-position:0% 0%;}50%{background-position:100% 100%;}}

.welcome-corner{position:absolute;font-size:9rem;color:var(--gold);opacity:.08;line-height:1;pointer-events:none;animation:cornerBreathe 6s ease-in-out infinite;}
.welcome-corner.tl{top:-1.5rem;left:-1rem;}
.welcome-corner.tr{top:-1.5rem;right:-1rem;transform:scaleX(-1);}
.welcome-corner.bl{bottom:-1.5rem;left:-1rem;transform:scaleY(-1);}
.welcome-corner.br{bottom:-1.5rem;right:-1rem;transform:scale(-1);}
@keyframes cornerBreathe{0%,100%{opacity:.06;}50%{opacity:.12;}}

.welcome-eyebrow{
  font-family:'Montserrat',sans-serif;font-size:.66rem;font-weight:600;
  letter-spacing:.4em;text-transform:uppercase;color:var(--rose);
  margin-bottom:.4rem;animation:riseIn 1s ease .1s both;
}
.welcome-eyebrow-it{
  font-family:'Cormorant Garamond',serif;font-size:.85rem;font-style:italic;
  color:var(--rose);animation:riseIn 1s ease .25s both;margin-bottom:1rem;
}
.welcome-names{
  font-family:'Great Vibes',cursive;
  font-size:clamp(4rem,12vw,8.5rem);
  font-weight:400;line-height:1.05;color:var(--espresso);
  animation:riseIn 1.3s ease .4s both;
}
.welcome-names .amp{
  font-family:'Cinzel',serif;font-size:.32em;
  color:var(--gold);display:block;margin:.05em 0;
  letter-spacing:.5em;text-indent:.5em;
  animation:symGlow 3s ease-in-out infinite;
}
.welcome-ornament{display:flex;align-items:center;gap:1.2rem;margin:1.2rem auto;width:min(480px,88vw);animation:riseIn 1s ease .8s both;}
.welcome-ornament::before,.welcome-ornament::after{content:'';flex:1;height:1px;background:linear-gradient(90deg,transparent,var(--gold),transparent);}
.orn-sym{color:var(--gold);font-size:.8rem;letter-spacing:7px;opacity:.85;}
.welcome-date{
  font-family:'Cinzel',serif;font-size:clamp(.85rem,1.8vw,1.05rem);font-weight:500;
  letter-spacing:.28em;color:var(--espresso);margin-top:1rem;
  animation:riseIn 1s ease 1s both;
}
.welcome-date-it{
  font-family:'Cormorant Garamond',serif;font-size:.85rem;font-style:italic;
  color:var(--muted);animation:riseIn 1s ease 1.1s both;
}
.welcome-place{
  font-family:'Cormorant Garamond',serif;font-size:1rem;font-style:italic;
  color:var(--muted);margin:.8rem 0 2.4rem;
  animation:riseIn 1s ease 1.2s both;
}
.welcome-cta{display:flex;flex-direction:column;align-items:center;gap:1rem;animation:riseIn 1s ease 1.5s both;}
.btn-bilingual{display:flex;flex-direction:column;align-items:center;gap:.12rem;}
.btn-bilingual .l-en{font-family:'Montserrat',sans-serif;font-size:.72rem;font-weight:600;letter-spacing:.24em;text-transform:uppercase;}
.btn-bilingual .l-it{font-family:'Cormorant Garamond',serif;font-size:.72rem;font-style:italic;letter-spacing:.08em;opacity:.8;text-transform:none;}
.welcome-hint{font-family:'Montserrat',sans-serif;font-size:.6rem;letter-spacing:.2em;text-transform:uppercase;color:var(--muted);opacity:.7;}
@keyframes riseIn{from{opacity:0;transform:translateY(24px);}to{opacity:1;transform:translateY(0);}}


/* ── VIDEO OVERLAY ───────────────────────────────── */
#videoOverlay{position:fixed;inset:0;background:#000;z-index:200;opacity:0;pointer-events:none;transition:opacity .9s ease;}
#videoOverlay.active{opacity:1;pointer-events:all;}
#videoOverlay video{width:100%;height:100%;object-fit:cover;display:block;}

/* ── HALF SCREEN LANGUAGE BUTTONS w/ CENTER GAP ──── */
/* left 40% = English · middle 20% = dead zone · right 40% = Italian */
.lang-half{
  position:absolute;top:0;bottom:0;width:40%;
  cursor:pointer;border:none;background:transparent;
  z-index:210;opacity:0;pointer-events:none;
  transition:opacity .6s ease,background .3s ease;
  display:flex;flex-direction:column;align-items:center;justify-content:flex-end;
  padding-bottom:9%;
}
.lang-half.visible{opacity:1;pointer-events:auto;}
.lang-half.left{left:0;}
.lang-half.right{right:0;}
.lang-half:hover{background:linear-gradient(180deg,transparent 40%,rgba(201,168,76,.14));}
.lang-half.chosen{background:linear-gradient(180deg,transparent 30%,rgba(201,168,76,.22));}
.lang-half-label{display:flex;flex-direction:column;align-items:center;gap:.35rem;pointer-events:none;}
.lang-half-name{
  font-family:'Cinzel',serif;
  font-size:clamp(1.2rem,3vw,2rem);font-weight:600;
  letter-spacing:.14em;color:#fff;
  text-shadow:0 0 24px rgba(201,168,76,.95),0 0 55px rgba(201,168,76,.5),0 2px 8px rgba(0,0,0,.6);
  animation:glowPulse 2.2s ease-in-out infinite;
}
.lang-half-sub{
  font-family:'Cormorant Garamond',serif;
  font-size:clamp(.75rem,1.4vw,.95rem);font-style:italic;
  color:rgba(255,235,180,.85);
  text-shadow:0 1px 8px rgba(0,0,0,.5);
}

/* ── CHOOSE YOUR LANGUAGE HEADING ────────────────── */
#langHeading{
  position:absolute;top:5%;left:50%;transform:translateX(-50%);
  z-index:220;text-align:center;pointer-events:none;
  opacity:0;transition:opacity .8s ease;white-space:nowrap;
}
#langHeading.visible{opacity:1;}
#langHeading .hl-en{
  display:block;font-family:'Cinzel',serif;
  font-size:clamp(1.3rem,3.4vw,2.5rem);font-weight:700;
  letter-spacing:.12em;color:#fff;
  text-shadow:0 0 22px rgba(201,168,76,1),0 0 55px rgba(201,168,76,.75),0 0 100px rgba(201,168,76,.45),0 2px 10px rgba(0,0,0,.6);
  animation:glowPulse 2.2s ease-in-out infinite;
}
#langHeading .hl-it{
  display:block;margin-top:.15rem;
  font-family:'Cinzel',serif;
  font-size:clamp(1.3rem,3.4vw,2.5rem);font-weight:700;
  letter-spacing:.12em;color:rgba(255,242,200,.95);
  text-shadow:0 0 20px rgba(201,168,76,.95),0 0 45px rgba(201,168,76,.6),0 2px 8px rgba(0,0,0,.55);
  animation:glowPulse 2.2s ease-in-out infinite .35s;
}
.hl-sep{display:block;margin:.35rem auto;width:80px;height:1px;background:linear-gradient(90deg,transparent,rgba(201,168,76,.9),transparent);}
@keyframes glowPulse{
  0%,100%{text-shadow:0 0 22px rgba(201,168,76,1),0 0 55px rgba(201,168,76,.7),0 0 100px rgba(201,168,76,.4),0 2px 10px rgba(0,0,0,.6);}
  50%{text-shadow:0 0 36px rgba(201,168,76,1),0 0 80px rgba(201,168,76,.95),0 0 140px rgba(201,168,76,.6),0 2px 12px rgba(0,0,0,.6);}
}

/* ── STICKY TABS ─────────────────────────────────── */
.tabs-nav{
  position:sticky;top:0;z-index:100;display:flex;align-items:stretch;
  background:rgba(249,241,227,.96);backdrop-filter:blur(14px);
  border-bottom:1px solid rgba(201,168,76,.3);
  box-shadow:0 4px 24px rgba(44,24,16,.09);overflow-x:auto;
}
.tab-btn{
  flex:1;min-width:118px;padding:1.15rem 1rem;
  font-family:'Montserrat',sans-serif;font-size:.63rem;font-weight:600;
  letter-spacing:.2em;text-transform:uppercase;color:var(--muted);
  background:transparent;border:none;cursor:pointer;
  border-bottom:2px solid transparent;transition:all var(--trans);white-space:nowrap;
  position:relative;
}
.tab-btn::after{
  content:'';position:absolute;bottom:-2px;left:50%;transform:translateX(-50%) scaleX(0);
  width:70%;height:2px;background:var(--gold);transition:transform .35s ease;
}
.tab-btn:hover{color:var(--gold);}
.tab-btn:hover::after{transform:translateX(-50%) scaleX(.6);}
.tab-btn.active{color:var(--gold-dark);}
.tab-btn.active::after{transform:translateX(-50%) scaleX(1);}
.tabs-monogram{
  font-family:'Great Vibes',cursive;font-size:1.5rem;
  color:var(--gold-dark);padding:0 1.6rem;
  display:flex;align-items:center;flex-shrink:0;
}

/* ── SECTIONS ────────────────────────────────────── */
.tab-section{min-height:100vh;padding:6rem 2rem 5rem;position:relative;overflow:hidden;}
.section-inner{max-width:1100px;margin:0 auto;text-align:center;position:relative;z-index:2;}
.tab-section:nth-child(odd){background:var(--cream);}
.tab-section:nth-child(even){
  background:
    radial-gradient(ellipse at 15% 40%,rgba(201,168,76,.08) 0%,transparent 55%),
    radial-gradient(ellipse at 85% 60%,rgba(196,114,138,.06) 0%,transparent 55%),
    var(--parchment);
}
/* Watermark ornaments in section corners */
.tab-section::before{
  content:'❋';position:absolute;top:3rem;left:2rem;
  font-size:6rem;color:var(--gold);opacity:.05;line-height:1;
  animation:cornerBreathe 7s ease-in-out infinite;
}
.tab-section::after{
  content:'❋';position:absolute;bottom:3rem;right:2rem;
  font-size:6rem;color:var(--rose);opacity:.05;line-height:1;transform:rotate(30deg);
  animation:cornerBreathe 8s ease-in-out infinite 1s;
}

/* ── STORY ───────────────────────────────────────── */
.story-hero-text{
  font-family:'Cormorant Garamond',serif;
  font-size:clamp(1.05rem,2.4vw,1.35rem);font-style:italic;
  color:var(--muted);max-width:640px;margin:1.5rem auto 3rem;line-height:2;
}
.character-cards{display:grid;grid-template-columns:1fr 1fr;gap:3px;max-width:840px;margin:3rem auto;}
.char-card{
  position:relative;overflow:hidden;background:var(--espresso);
  aspect-ratio:3/4;display:flex;flex-direction:column;justify-content:flex-end;
  transition:transform .5s ease,box-shadow .5s ease;
}
.char-card:hover{transform:translateY(-6px);box-shadow:0 24px 50px rgba(44,24,16,.25);}
.char-card-img{position:absolute;inset:0;background:linear-gradient(135deg,#3d2314 0%,#1a0e08 100%);display:flex;align-items:center;justify-content:center;}
.char-card-img .placeholder-icon{font-size:5rem;opacity:.15;transition:transform .6s ease;}
.char-card:hover .placeholder-icon{transform:scale(1.15) rotate(-4deg);}
.char-card-overlay{position:relative;z-index:2;padding:2.2rem 1.6rem;background:linear-gradient(transparent,rgba(44,24,16,.94));color:var(--white);}
.char-card-overlay h3{font-family:'Great Vibes',cursive;font-size:2.4rem;font-style:normal;margin-bottom:.4rem;color:var(--gold-light);}
.char-card-overlay p{font-size:.88rem;color:rgba(255,255,255,.78);line-height:1.75;}
.char-card-flag{font-size:1.6rem;margin-bottom:.6rem;display:block;}

.timeline{max-width:680px;margin:4rem auto 0;position:relative;}
.timeline::before{content:'';position:absolute;left:50%;top:0;bottom:0;width:1px;background:linear-gradient(180deg,transparent,var(--gold),var(--gold),transparent);transform:translateX(-50%);}
.tl-item{display:grid;grid-template-columns:1fr 48px 1fr;margin-bottom:3.5rem;align-items:start;}
.tl-item:nth-child(odd) .tl-body{grid-column:1;text-align:right;padding-right:2rem;}
.tl-item:nth-child(odd) .tl-empty{grid-column:3;}
.tl-item:nth-child(even) .tl-body{grid-column:3;text-align:left;padding-left:2rem;}
.tl-item:nth-child(even) .tl-empty{grid-column:1;}
.tl-dot{grid-column:2;display:flex;align-items:flex-start;justify-content:center;padding-top:.4rem;}
.tl-dot-inner{width:14px;height:14px;border-radius:50%;background:var(--gold);border:3px solid var(--cream);box-shadow:0 0 0 3px var(--gold);animation:dotPulse 2.5s ease-in-out infinite;}
@keyframes dotPulse{0%,100%{box-shadow:0 0 0 3px var(--gold);}50%{box-shadow:0 0 0 3px var(--gold),0 0 18px rgba(201,168,76,.7);}}
.tl-year{font-family:'Montserrat',sans-serif;font-size:.62rem;font-weight:600;letter-spacing:.24em;text-transform:uppercase;color:var(--rose);margin-bottom:.4rem;display:block;}
.tl-body h3{margin-bottom:.4rem;}

/* ── DAY ─────────────────────────────────────────── */
.countdown-row{display:flex;gap:1.4rem;justify-content:center;flex-wrap:wrap;margin:3rem 0;}
.cd-unit{text-align:center;}
.cd-num{
  font-family:'Cinzel',serif;font-size:clamp(2.4rem,6vw,4rem);font-weight:700;
  color:var(--espresso);line-height:1;display:block;
  text-shadow:0 2px 0 rgba(201,168,76,.25);
}
.cd-lbl{font-family:'Montserrat',sans-serif;font-size:.58rem;font-weight:600;letter-spacing:.22em;text-transform:uppercase;color:var(--gold-dark);margin-top:.35rem;display:block;}
.cd-sep{font-family:'Cormorant Garamond',serif;font-size:2.5rem;color:var(--gold);opacity:.4;align-self:flex-start;padding-top:.5rem;}
.day-cards{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:2px;margin:3rem 0;background:rgba(201,168,76,.18);}
.day-card{padding:2.6rem 2rem;text-align:center;background:var(--cream);transition:all var(--trans);border-top:3px solid var(--gold);position:relative;overflow:hidden;}
.day-card::before{content:'';position:absolute;top:0;left:-100%;width:100%;height:3px;background:linear-gradient(90deg,transparent,var(--rose),transparent);transition:left .6s ease;}
.day-card:hover::before{left:100%;}
.day-card:hover{background:var(--parchment);transform:translateY(-4px);box-shadow:0 16px 40px rgba(44,24,16,.12);}
.day-card-icon{font-size:2.4rem;margin-bottom:1.1rem;display:block;}
.day-card strong{display:block;font-family:'Cinzel',serif;font-size:.95rem;font-weight:600;letter-spacing:.1em;color:var(--espresso);margin-bottom:.6rem;text-transform:uppercase;}

/* ── PROGRAM ─────────────────────────────────────── */
.program-list{max-width:680px;margin:3rem auto 0;text-align:left;}
.program-item{
  display:grid;grid-template-columns:88px 1fr;gap:1.6rem;
  padding:1.9rem 1.2rem;align-items:start;
  border-bottom:1px solid rgba(201,168,76,.16);
  transition:all var(--trans);position:relative;
}
.program-item::before{content:'';position:absolute;left:0;top:0;bottom:0;width:2px;background:var(--gold);transform:scaleY(0);transition:transform .4s ease;}
.program-item:hover{background:rgba(201,168,76,.05);padding-left:1.8rem;}
.program-item:hover::before{transform:scaleY(1);}
.program-time{font-family:'Cinzel',serif;font-size:1rem;color:var(--gold-dark);font-weight:600;padding-top:.2rem;letter-spacing:.06em;}
.program-item h3{margin-bottom:.3rem;}

/* ── RSVP ────────────────────────────────────────── */
.rsvp-wrap{max-width:720px;margin:0 auto;}
.rsvp-steps{display:flex;justify-content:center;margin:2rem 0 3rem;border:1px solid rgba(201,168,76,.3);overflow:hidden;}
.rsvp-step-btn{
  flex:1;padding:.75rem .6rem;font-family:'Montserrat',sans-serif;
  font-size:.58rem;font-weight:600;letter-spacing:.14em;text-transform:uppercase;
  color:var(--muted);background:var(--cream);border:none;cursor:default;
  border-right:1px solid rgba(201,168,76,.2);transition:all var(--trans);
}
.rsvp-step-btn:last-child{border-right:none;}
.rsvp-step-btn.active{background:linear-gradient(135deg,var(--gold),var(--gold-dark));color:var(--white);}
.rsvp-step-btn.done{background:rgba(201,168,76,.18);color:var(--gold-dark);}
.form-section{display:none;animation:sectionIn .5s ease;}
.form-section.active{display:block;}
@keyframes sectionIn{from{opacity:0;transform:translateY(14px);}to{opacity:1;transform:translateY(0);}}
.form-grid{display:grid;grid-template-columns:1fr 1fr;gap:1.2rem;text-align:left;}
.form-full{grid-column:1/-1;}
.form-group{display:flex;flex-direction:column;gap:.4rem;}
.form-group label{font-family:'Montserrat',sans-serif;font-size:.62rem;font-weight:600;letter-spacing:.16em;text-transform:uppercase;color:var(--gold-dark);}
.form-group input,.form-group select,.form-group textarea{
  font-family:'Cormorant Garamond',serif;font-size:1rem;font-weight:400;
  padding:.85rem 1rem;border:1px solid rgba(201,168,76,.3);
  background:var(--white);color:var(--text);outline:none;
  transition:all var(--trans);border-radius:0;
}
.form-group input:focus,.form-group select:focus,.form-group textarea:focus{border-color:var(--gold);box-shadow:0 0 0 3px rgba(201,168,76,.12);}
.form-group textarea{resize:vertical;min-height:90px;}
.att-toggle{display:grid;grid-template-columns:1fr 1fr;border:1px solid rgba(201,168,76,.3);}
.att-toggle input[type=radio]{display:none;}
.att-toggle label{padding:.95rem;text-align:center;cursor:pointer;font-family:'Cormorant Garamond',serif;font-size:.95rem;color:var(--muted);background:var(--white);transition:all var(--trans);border-right:1px solid rgba(201,168,76,.2);}
.att-toggle label:last-of-type{border-right:none;}
.att-toggle input:checked+label{background:linear-gradient(135deg,var(--gold),var(--gold-dark));color:var(--white);}
.guest-tabs{display:flex;flex-wrap:wrap;gap:.5rem;margin:1.5rem 0 1rem;justify-content:center;}
.guest-tab-btn{
  padding:.55rem 1.3rem;font-family:'Montserrat',sans-serif;
  font-size:.64rem;font-weight:600;letter-spacing:.14em;text-transform:uppercase;
  border:1px solid rgba(201,168,76,.4);background:transparent;color:var(--muted);
  cursor:pointer;transition:all var(--trans);
}
.guest-tab-btn.active{background:linear-gradient(135deg,var(--gold),var(--gold-dark));color:var(--white);border-color:var(--gold);}
.guest-panel{display:none;}
.guest-panel.active{display:block;animation:sectionIn .4s ease;}
.upload-area{
  border:2px dashed rgba(201,168,76,.45);padding:2.4rem;text-align:center;
  background:rgba(201,168,76,.04);cursor:pointer;transition:all var(--trans);
}
.upload-area:hover{border-color:var(--gold);background:rgba(201,168,76,.09);transform:scale(1.005);}
.upload-area input{display:none;}
.upload-icon{font-size:2.4rem;margin-bottom:.8rem;display:block;opacity:.55;}
.photo-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(110px,1fr));gap:.5rem;margin-top:1.2rem;}
.photo-thumb{aspect-ratio:1;overflow:hidden;border:1px solid rgba(201,168,76,.25);position:relative;animation:sectionIn .4s ease;}
.photo-thumb img{width:100%;height:100%;object-fit:cover;}
.photo-remove{position:absolute;top:4px;right:4px;width:22px;height:22px;border-radius:50%;background:rgba(44,24,16,.75);color:#fff;border:none;cursor:pointer;font-size:.7rem;display:flex;align-items:center;justify-content:center;}
.song-list{list-style:none;text-align:left;margin:1rem 0;}
.song-item{display:flex;gap:1rem;align-items:center;padding:.85rem 1.1rem;margin-bottom:.5rem;background:rgba(201,168,76,.06);border:1px solid rgba(201,168,76,.18);animation:sectionIn .4s ease;}
.song-num{font-family:'Great Vibes',cursive;font-size:1.6rem;color:var(--gold-dark);flex-shrink:0;line-height:1;}
.thankyou-wrap{max-width:560px;margin:3rem auto;text-align:center;}
.thankyou-wrap h2{color:var(--gold-dark);margin-bottom:1rem;}
.confetti-icon{font-size:3.2rem;margin-bottom:1.4rem;display:block;animation:confettiBounce 1.6s ease-in-out infinite;}
@keyframes confettiBounce{0%,100%{transform:translateY(0) rotate(-4deg);}50%{transform:translateY(-10px) rotate(4deg);}}

/* ── GALLERY ─────────────────────────────────────── */
.gallery-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(240px,1fr));gap:1rem;margin-top:2.5rem;}
.gallery-item{
  aspect-ratio:4/3;overflow:hidden;border:1px solid rgba(201,168,76,.22);
  position:relative;cursor:pointer;background:var(--cream);
  display:flex;align-items:center;justify-content:center;
  transition:all var(--trans);
}
.gallery-item:hover{transform:translateY(-4px);box-shadow:0 16px 40px rgba(44,24,16,.15);}
.gallery-item img{width:100%;height:100%;object-fit:cover;transition:transform .6s ease;}
.gallery-item:hover img{transform:scale(1.07);}
.gallery-placeholder{font-family:'Cormorant Garamond',serif;font-size:.9rem;font-style:italic;color:var(--muted);}

/* ── LIGHTBOX ────────────────────────────────────── */
.lightbox{position:fixed;inset:0;background:rgba(44,24,16,.95);z-index:400;display:flex;align-items:center;justify-content:center;opacity:0;pointer-events:none;transition:opacity .4s ease;}
.lightbox.open{opacity:1;pointer-events:all;}
.lightbox img{max-width:90vw;max-height:88vh;object-fit:contain;}
.lb-close{position:absolute;top:1.5rem;right:2rem;color:#fff;font-size:2rem;background:none;border:none;cursor:pointer;opacity:.7;line-height:1;}
.lb-close:hover{opacity:1;}

/* ── FOOTER ──────────────────────────────────────── */
footer{padding:3.5rem 2rem;text-align:center;background:var(--espresso);position:relative;overflow:hidden;}
footer::before{content:'❋ ❋ ❋';position:absolute;top:1rem;left:50%;transform:translateX(-50%);color:var(--gold);opacity:.2;letter-spacing:12px;font-size:.8rem;}
footer p{color:rgba(255,255,255,.45);font-family:'Montserrat',sans-serif;font-size:.68rem;letter-spacing:.18em;text-transform:uppercase;}
footer .footer-names{font-family:'Great Vibes',cursive;font-size:2.2rem;color:var(--gold);margin-bottom:.4rem;display:block;}

/* ── FADE IN ─────────────────────────────────────── */
/* fade-in is opt-in: only hides when JS is confirmed running */
html.jsanim .fade-in{opacity:0;transform:translateY(26px);transition:opacity .8s ease,transform .8s ease;}
html.jsanim .fade-in.visible{opacity:1;transform:translateY(0);}

/* ── RESPONSIVE ──────────────────────────────────── */
/* Sticky nav must never cover section titles after a tab jump */
.tab-section{scroll-margin-top:64px;}

/* Hide the nav scrollbar but keep it swipeable */
.tabs-nav{scrollbar-width:none;-ms-overflow-style:none;}
.tabs-nav::-webkit-scrollbar{display:none;}

@media(max-width:768px){
  .tabs-nav{
    overflow-x:auto;
    -webkit-overflow-scrolling:touch;
    justify-content:flex-start;
  }
  .tabs-monogram{display:none;} /* reclaim space on small screens */
  .tab-btn{
    flex:0 0 auto;          /* fixed-size items that scroll, never squeeze */
    min-width:unset;
    padding:1rem .95rem;
    font-size:.58rem;
    letter-spacing:.14em;
    white-space:nowrap;
  }
  .rsvp-steps{flex-wrap:wrap;}
  .rsvp-step-btn{flex:1 1 33%;border-bottom:1px solid rgba(201,168,76,.2);}
  .character-cards{grid-template-columns:1fr;}
  .form-grid{grid-template-columns:1fr;}
  .form-full{grid-column:1;}
  .tl-item{grid-template-columns:1fr 32px 1fr;}
  .lang-half{width:42%;padding-bottom:16%;}
  .countdown-row{gap:.9rem;}
  .cd-sep{display:none;}     /* separators crowd small screens */
}
@media(prefers-reduced-motion:reduce){
  *,*::before,*::after{transition:none!important;animation:none!important;}
  /* Elements that normally appear via animation must not stay invisible
     when animations are disabled (e.g. iOS "Reduce Motion") */
  .welcome-eyebrow,.welcome-eyebrow-it,.welcome-names,.welcome-ornament,
  .welcome-date,.welcome-date-it,.welcome-place,.welcome-cta,
  .fade-in{opacity:1!important;transform:none!important;}
}

/* Compact welcome sizing on small screens so everything fits without scroll */
@media(max-width:480px){
  .welcome-page{padding:1.2rem;}
  .welcome-names{font-size:clamp(2.6rem,15vw,4rem);}
  .welcome-names .amp{margin:0;}
  .welcome-eyebrow{margin-bottom:.2rem;}
  .welcome-eyebrow-it{margin-bottom:.5rem;}
  .welcome-ornament{margin:.7rem auto;}
  .welcome-date{margin-top:.5rem;}
  .welcome-place{margin:.4rem 0 1.4rem;}
  .welcome-corner{font-size:5rem;}
  .btn{padding:.9rem 2.2rem;}
}
