/* =========================================================
   ZWED LUXURY WEDDING INVITATIONS — SHARED STYLESHEET
   All layout, section styles, animations, components.
   Colors come from CSS vars set per-template.
   ========================================================= */

/* --- Lenis Smooth Scroll --- */
html.lenis,html.lenis body{height:auto}
.lenis.lenis-smooth{scroll-behavior:auto!important}
.lenis.lenis-stopped{overflow:hidden}

/* --- Reset & Base --- */
*,*::before,*::after{box-sizing:border-box;margin:0;padding:0}
html{font-size:16px;-webkit-text-size-adjust:100%}
body{
  font-family:var(--fs),serif;
  color:var(--text);
  background:var(--bg1);
  overflow-x:hidden;
  line-height:1.7;
  -webkit-font-smoothing:antialiased;
}
body.locked{overflow:hidden!important;touch-action:none!important}
.script{font-family:var(--fsc),cursive}

/* =========================================================
   GATEWAY — 1. DOUBLE PALACE DOORS
   ========================================================= */
#gw-doors{
  position:fixed;inset:0;z-index:99999;
  display:flex;perspective:1800px;perspective-origin:50% 50%;
  background:radial-gradient(ellipse at center,var(--bg2),var(--bg1) 90%);
  transition:opacity .9s ease 2.4s,visibility .9s ease 2.4s;
}
#gw-doors.open .door-l{transform:rotateY(-112deg)}
#gw-doors.open .door-r{transform:rotateY(112deg)}
#gw-doors.gone{opacity:0;visibility:hidden;pointer-events:none}
.door-l,.door-r{
  width:50%;height:100%;
  background:var(--bg2);
  position:relative;
  transform-style:preserve-3d;
  transition:transform 2.6s cubic-bezier(.22,1,.36,1);
}
.door-l{
  transform-origin:left center;
  border-right:2px solid var(--accent);
}
.door-r{
  transform-origin:right center;
  border-left:2px solid var(--accent);
}
/* gold lattice pattern on doors */
.door-l::before,.door-r::before{
  content:"";position:absolute;inset:0;
  background-image:
    linear-gradient(var(--accent) 1px,transparent 1px),
    linear-gradient(90deg,var(--accent) 1px,transparent 1px);
  background-size:60px 60px;
  opacity:.07;
}
/* arch on each door */
.door-arch{
  position:absolute;top:8%;left:10%;right:10%;height:30%;
  border:2px solid var(--accent);
  border-radius:50% 50% 0 0/100% 100% 0 0;
  opacity:.45;
}
/* center panel with seal */
.door-center-panel{
  position:absolute;top:0;bottom:0;
  left:50%;transform:translateX(-50%);
  width:2px;background:var(--accent);
  display:flex;flex-direction:column;align-items:center;justify-content:center;
  gap:1.2rem;z-index:2;
}
.door-seal{
  width:110px;height:110px;border-radius:50%;
  background:radial-gradient(circle at 35% 30%,var(--accent-l),var(--accent) 60%,#9c7a1e 100%);
  border:2px solid rgba(255,255,255,.5);
  box-shadow:0 8px 30px rgba(0,0,0,.7),inset 0 2px 4px rgba(255,255,255,.4);
  display:flex;align-items:center;justify-content:center;
  font-family:var(--fsc),cursive;font-size:2.4rem;
  color:var(--bg1);cursor:pointer;
  animation:pulse 2.2s infinite ease-in-out;
  transition:transform .35s ease;
}
.door-seal:hover{transform:scale(1.1)}
#gw-doors.open .door-center-panel{opacity:0;pointer-events:none;transition:opacity .5s}
.door-open-label{
  color:var(--accent-l);
  font-size:.78rem;letter-spacing:3px;text-transform:uppercase;
  white-space:nowrap;
  font-family:var(--fs),sans-serif;
  text-shadow:0 2px 8px rgba(0,0,0,.8);
}
@keyframes pulse{
  0%,100%{box-shadow:0 8px 30px rgba(0,0,0,.7),0 0 0 0 rgba(212,175,55,.5)}
  50%{box-shadow:0 8px 30px rgba(0,0,0,.7),0 0 0 16px rgba(212,175,55,0)}
}

/* =========================================================
   GATEWAY — 2. VELVET CURTAINS
   ========================================================= */
#gw-curtains{
  position:fixed;inset:0;z-index:99999;
  display:flex;overflow:hidden;
  transition:opacity .9s ease 2.3s,visibility .9s ease 2.3s;
}
#gw-curtains.gone{opacity:0;visibility:hidden;pointer-events:none}
.curtain-l,.curtain-r{
  width:50%;height:100%;
  background:linear-gradient(180deg,var(--bg2) 0%,var(--bg1) 100%);
  transition:transform 2.4s cubic-bezier(.65,0,.35,1);
  position:relative;overflow:hidden;
}
.curtain-l{transform-origin:left top}
.curtain-r{transform-origin:right top}
/* fabric folds */
.curtain-l::before,.curtain-r::before{
  content:"";position:absolute;inset:0;
  background:repeating-linear-gradient(90deg,transparent,transparent 32px,rgba(0,0,0,.22) 32px,rgba(0,0,0,.22) 36px);
}
#gw-curtains.open .curtain-l{transform:translateX(-100%) skewX(-3deg)}
#gw-curtains.open .curtain-r{transform:translateX(100%) skewX(3deg)}
/* tieback */
.curtain-tie{
  position:absolute;bottom:30%;
  width:28px;height:28px;border-radius:50%;
  background:var(--accent);
  box-shadow:0 0 15px rgba(212,175,55,.6);
}
.curtain-l .curtain-tie{right:10px}
.curtain-r .curtain-tie{left:10px}
/* center content on curtain */
.curtain-center{
  position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);
  text-align:center;color:var(--accent-l);pointer-events:none;z-index:10;
}
#gw-curtains.open .curtain-center{opacity:0;transition:opacity .4s}
.curtain-title{font-family:var(--fsc),cursive;font-size:clamp(2rem,6vw,3rem);margin-bottom:.8rem;text-shadow:0 4px 15px rgba(0,0,0,.8)}
.curtain-open-btn{
  margin-top:1.4rem;padding:.75rem 2.2rem;border-radius:999px;
  background:transparent;border:1.5px solid var(--accent);
  color:var(--accent-l);font-family:var(--fs),serif;
  font-size:.95rem;letter-spacing:2px;text-transform:uppercase;
  cursor:pointer;transition:.3s;
}
.curtain-open-btn:hover{background:var(--accent);color:var(--bg1)}

/* =========================================================
   GATEWAY — 3. 3D ENVELOPE WITH WAX SEAL
   ========================================================= */
#gw-envelope{
  position:fixed;inset:0;z-index:99999;
  display:flex;align-items:center;justify-content:center;
  background:radial-gradient(ellipse at center,var(--bg2),var(--bg1) 90%);
  transition:opacity .9s ease 1.8s,visibility .9s ease 1.8s;
}
#gw-envelope.gone{opacity:0;visibility:hidden;pointer-events:none}
.env-wrap{
  position:relative;width:min(380px,84vw);aspect-ratio:3/2.1;
  cursor:pointer;perspective:1500px;
}
.env-body{
  position:absolute;inset:0;top:16%;
  background:linear-gradient(160deg,var(--bg3),var(--bg2));
  border:1.5px solid var(--accent);border-radius:10px;
  box-shadow:0 18px 50px rgba(0,0,0,.65);
  display:flex;flex-direction:column;align-items:center;justify-content:flex-end;
  padding-bottom:1.5rem;text-align:center;overflow:hidden;
}
.env-names{font-family:var(--fsc),cursive;font-size:clamp(1.8rem,6vw,2.5rem);color:var(--accent-l);text-shadow:0 2px 8px rgba(0,0,0,.5)}
.env-hint{font-size:.75rem;letter-spacing:3px;text-transform:uppercase;color:var(--accent);opacity:.9;margin-top:.4rem}
.env-flap{
  position:absolute;left:0;right:0;top:0;height:58%;
  background:linear-gradient(200deg,var(--bg1),var(--bg2));
  border:1.5px solid var(--accent);
  clip-path:polygon(0 0,100% 0,50% 100%);
  transform-origin:top center;
  transition:transform 1.2s cubic-bezier(.6,-.2,.35,1.3);
  z-index:3;
}
.env-wrap.open .env-flap{transform:rotateX(180deg);z-index:0}
.env-seal{
  position:absolute;left:50%;top:36%;transform:translate(-50%,-50%);
  width:66px;height:66px;border-radius:50%;
  background:radial-gradient(circle at 35% 30%,var(--accent-l),var(--accent) 60%,#9c7a1e 100%);
  display:flex;align-items:center;justify-content:center;
  font-family:var(--fsc),cursive;font-size:1.5rem;color:var(--bg1);
  box-shadow:0 6px 20px rgba(0,0,0,.6);
  z-index:4;border:1px solid rgba(255,255,255,.4);
  transition:transform .6s cubic-bezier(.34,1.56,.64,1),opacity .5s;
  animation:pulse 2s infinite;
}
.env-wrap.open .env-seal{transform:translate(-50%,-50%) scale(0) rotate(45deg);opacity:0;animation:none}
.env-card{
  position:absolute;left:7%;right:7%;bottom:6%;top:36%;
  background:var(--bg1);border:1px solid var(--accent);border-radius:7px;
  z-index:2;display:flex;align-items:center;justify-content:center;text-align:center;padding:.6rem;
  transform:translateY(0);transition:transform 1.1s cubic-bezier(.2,.9,.3,1.2) .35s;
  font-size:.8rem;letter-spacing:2px;text-transform:uppercase;color:var(--accent-l);opacity:.95;
}
.env-wrap.open .env-card{transform:translateY(-50%)}
/* open button below envelope */
.env-open-btn{
  margin-top:1.8rem;padding:.8rem 2.6rem;border-radius:999px;
  background:transparent;border:1.5px solid var(--accent);
  color:var(--accent-l);font-family:var(--fs),serif;
  font-size:1rem;letter-spacing:3px;text-transform:uppercase;
  cursor:pointer;transition:.35s;display:block;margin-left:auto;margin-right:auto;
}
.env-open-btn:hover{background:var(--accent);color:var(--bg1);transform:translateY(-2px)}
.env-outer{text-align:center}

/* =========================================================
   PARTICLES CANVAS
   ========================================================= */
#particles{position:fixed;inset:0;pointer-events:none;z-index:3}

/* =========================================================
   FLOATING MUSIC BUTTON
   ========================================================= */
#music-btn{
  position:fixed;bottom:24px;right:24px;z-index:1000;
  width:50px;height:50px;border-radius:50%;
  border:1.5px solid var(--accent);background:var(--bg1);
  color:var(--accent-l);cursor:pointer;
  display:flex;align-items:center;justify-content:center;font-size:1.3rem;
  box-shadow:0 6px 20px rgba(0,0,0,.5);transition:transform .3s;
}
#music-btn:hover{transform:scale(1.12)}
#music-btn.playing{animation:pulse 2.5s infinite}

/* =========================================================
   SECTION LAYOUT
   ========================================================= */
section{
  padding:5rem 1.5rem;
  max-width:960px;margin:0 auto;
  text-align:center;position:relative;z-index:10;
}
.section-eyebrow{
  display:block;font-size:.78rem;letter-spacing:4px;text-transform:uppercase;
  color:var(--accent);margin-bottom:.8rem;
  font-family:var(--fs),sans-serif;font-weight:600;
}
.section-title{
  font-family:var(--fsc),cursive;
  font-size:clamp(2.4rem,6vw,3.6rem);
  color:var(--accent-l);margin-bottom:.6rem;line-height:1.1;
}
.section-sub{
  font-size:1.05rem;color:var(--text);opacity:.85;
  max-width:580px;margin:.6rem auto 0;font-style:italic;
}

/* Gold ornament divider */
.divider{
  display:flex;align-items:center;justify-content:center;gap:1rem;
  max-width:260px;margin:1.4rem auto;opacity:.9;
}
.divider::before,.divider::after{
  content:"";flex:1;height:1px;
  background:linear-gradient(90deg,transparent,var(--accent),transparent);
}
.divider-icon{color:var(--accent);font-size:1rem}

/* Ornate corner borders */
.corners{position:relative}
.corners::before,.corners::after,.corners .c-tr,.corners .c-bl{
  content:"";position:absolute;width:44px;height:44px;
  border-top:2px solid var(--accent);border-left:2px solid var(--accent);
  opacity:.8;pointer-events:none;
}
.corners::before{top:14px;left:14px}
.corners::after{bottom:14px;right:14px;transform:rotate(180deg)}
.corners .c-tr{top:14px;right:14px;transform:rotate(90deg)}
.corners .c-bl{bottom:14px;left:14px;transform:rotate(-90deg)}

/* =========================================================
   HERO
   ========================================================= */
.hero{
  min-height:100vh;
  display:flex;flex-direction:column;align-items:center;justify-content:center;
  background:radial-gradient(ellipse at center,var(--bg2) 0%,var(--bg1) 80%);
  padding:5rem 1.5rem;text-align:center;position:relative;z-index:5;
  max-width:100%;
}
.hero-badge{
  width:82px;height:82px;border-radius:50%;
  border:1.5px solid var(--accent);
  background:radial-gradient(circle at 35% 30%,var(--accent-l),var(--accent) 60%,#9c7a1e 100%);
  display:flex;align-items:center;justify-content:center;
  font-family:var(--fsc),cursive;font-size:1.8rem;color:var(--bg1);
  margin:0 auto 1.6rem;box-shadow:0 6px 20px rgba(212,175,55,.4);
}
.hero-label{
  font-size:.8rem;letter-spacing:4px;text-transform:uppercase;
  color:var(--accent);margin-bottom:.8rem;
  font-family:var(--fs),sans-serif;font-weight:600;
}
.hero-names{
  font-family:var(--fsc),cursive;
  font-size:clamp(3.5rem,10vw,6.5rem);
  color:var(--accent-l);
  line-height:1.05;margin:0;
  text-shadow:0 4px 20px rgba(0,0,0,.5);
}
.hero-amp{
  font-family:var(--fs),serif;font-style:italic;
  font-size:.6em;color:var(--accent);display:block;margin:-.1em 0;
}
.hero-tagline{
  max-width:580px;margin:1.4rem auto 0;
  font-size:1.15rem;opacity:.92;font-style:italic;line-height:1.65;
}
.hero-divider{width:80px;height:2px;background:var(--accent);margin:1.8rem auto}

/* =========================================================
   SCRATCH TO REVEAL
   ========================================================= */
.scratch-wrap{max-width:440px;margin:2.6rem auto 0;width:100%}
.scratch-box{
  position:relative;width:100%;height:188px;
  border-radius:16px;overflow:hidden;
  border:1.5px solid var(--accent);
  box-shadow:0 8px 28px rgba(0,0,0,.45);
}
.scratch-inner{
  position:absolute;inset:0;
  display:flex;flex-direction:column;align-items:center;justify-content:center;
  background:linear-gradient(135deg,var(--bg3),var(--bg1));
  text-align:center;padding:1rem;
}
.scratch-date{
  font-family:var(--fsc),cursive;
  font-size:2.4rem;color:var(--accent-l);
  line-height:1.1;margin-bottom:.3rem;
}
.scratch-time{
  font-size:.88rem;letter-spacing:2px;text-transform:uppercase;
  color:var(--accent);font-weight:500;
}
canvas#scratch{
  position:absolute;inset:0;cursor:grab;touch-action:none;
  transition:opacity .6s ease;
}
canvas#scratch:active{cursor:grabbing}
.scratch-hint{
  margin-top:.9rem;font-size:.83rem;
  letter-spacing:1px;color:var(--accent);opacity:.9;
}

/* =========================================================
   COUNTDOWN
   ========================================================= */
.countdown{
  display:flex;gap:1rem;justify-content:center;
  flex-wrap:wrap;margin-top:2.2rem;
}
.cd-item{
  background:rgba(212,175,55,.08);
  border:1px solid var(--accent);border-radius:14px;
  padding:1.1rem 1.4rem;min-width:84px;
  backdrop-filter:blur(8px);
  transition:transform .3s,border-color .3s;
}
.cd-item:hover{transform:translateY(-4px);border-color:var(--accent)}
.cd-num{display:block;font-size:2.2rem;font-weight:700;color:var(--accent-l);line-height:1}
.cd-lbl{display:block;font-size:.72rem;letter-spacing:2.5px;text-transform:uppercase;opacity:.85;margin-top:.45rem;font-family:var(--fs),sans-serif}

/* =========================================================
   EVENT DETAILS GRID
   ========================================================= */
.detail-grid{
  display:grid;grid-template-columns:repeat(auto-fit,minmax(230px,1fr));
  gap:1.6rem;margin-top:2.4rem;text-align:left;
}
.detail-card{
  background:rgba(212,175,55,.06);
  border:1px solid rgba(212,175,55,.32);
  border-radius:16px;padding:1.8rem;
  backdrop-filter:blur(10px);
  transition:transform .35s,border-color .35s;
}
.detail-card:hover{transform:translateY(-5px);border-color:var(--accent)}
.detail-card h3{color:var(--accent-l);margin:0 0 .55rem;font-size:1.15rem;letter-spacing:.5px}
.detail-card p{margin:0;line-height:1.6;opacity:.9}
.map-wrap{
  margin-top:2.4rem;border-radius:18px;overflow:hidden;
  border:1.5px solid var(--accent);
  box-shadow:0 10px 30px rgba(0,0,0,.4);
}
.map-wrap iframe{width:100%;height:350px;border:0;display:block}

/* =========================================================
   PHOTO SLIDESHOW
   ========================================================= */
.slideshow{
  position:relative;max-width:720px;margin:2.4rem auto 0;
  border-radius:18px;overflow:hidden;
  border:1.5px solid var(--accent);aspect-ratio:16/10;
  background:var(--bg2);box-shadow:0 12px 38px rgba(0,0,0,.55);
}
.slide{position:absolute;inset:0;opacity:0;transition:opacity 1.2s ease}
.slide.active{opacity:1}
.slide img{width:100%;height:100%;object-fit:cover;display:block}
.slide-cap{
  position:absolute;bottom:0;left:0;right:0;
  padding:2rem 1.4rem 1.2rem;
  background:linear-gradient(to top,rgba(0,0,0,.85),transparent);
  color:var(--accent-l);font-family:var(--fs),serif;
  font-size:1.1rem;font-style:italic;
}
.slide-nav{
  position:absolute;top:50%;transform:translateY(-50%);
  width:44px;height:44px;border-radius:50%;
  background:rgba(0,0,0,.6);border:1px solid var(--accent);
  color:var(--accent-l);display:flex;align-items:center;justify-content:center;
  cursor:pointer;z-index:5;transition:.3s;font-size:1.1rem;
}
.slide-prev{left:14px}
.slide-next{right:14px}
.slide-nav:hover{background:var(--accent);color:var(--bg1)}
.slide-dots{
  position:absolute;bottom:12px;left:50%;transform:translateX(-50%);
  display:flex;gap:7px;z-index:5;
}
.dot{
  width:8px;height:8px;border-radius:50%;
  background:rgba(255,255,255,.45);
  cursor:pointer;transition:background .3s,transform .3s;
}
.dot.active{background:var(--accent);transform:scale(1.3)}

/* =========================================================
   RSVP / GUESTBOOK
   ========================================================= */
.rsvp-form{
  max-width:520px;margin:2.4rem auto 0;
  text-align:left;display:flex;flex-direction:column;gap:1.2rem;
}
.form-label{
  display:block;font-size:.8rem;letter-spacing:2px;text-transform:uppercase;
  color:var(--accent);margin-bottom:.45rem;font-weight:600;
  font-family:var(--fs),sans-serif;
}
.form-input,.form-select,.form-textarea{
  width:100%;padding:.88rem 1.1rem;border-radius:10px;
  border:1px solid rgba(212,175,55,.4);
  background:rgba(255,255,255,.05);color:var(--text);
  font-family:inherit;font-size:1rem;outline:none;transition:.3s;
}
.form-input:focus,.form-select:focus,.form-textarea:focus{
  border-color:var(--accent);background:rgba(255,255,255,.09);
  box-shadow:0 0 10px rgba(212,175,55,.3);
}
.form-select option{background:var(--bg1);color:var(--text)}
.form-btn{
  padding:1rem;border-radius:999px;
  border:1.5px solid var(--accent);background:var(--accent);
  color:var(--bg1);font-weight:700;letter-spacing:2px;
  text-transform:uppercase;cursor:pointer;transition:.35s;font-size:.95rem;
}
.form-btn:hover{background:var(--accent-l);transform:translateY(-2px)}
.rsvp-thanks{
  background:rgba(212,175,55,.14);border:1px solid var(--accent);
  padding:1.4rem;border-radius:14px;margin-top:1.8rem;
  font-size:1.1rem;color:var(--accent-l);text-align:center;display:none;
}

/* =========================================================
   FOOTER
   ========================================================= */
footer{
  text-align:center;padding:3.5rem 1.5rem;
  font-size:.92rem;opacity:.65;
  border-top:1px solid rgba(212,175,55,.2);
  position:relative;z-index:10;
}
.footer-names{
  font-family:var(--fsc),cursive;font-size:2rem;
  color:var(--accent-l);display:block;margin-bottom:.5rem;opacity:1;
}

/* =========================================================
   REVEAL ON SCROLL
   ========================================================= */
.reveal{opacity:0;transform:translateY(30px);transition:opacity .9s cubic-bezier(.16,1,.3,1),transform .9s cubic-bezier(.16,1,.3,1)}
.reveal.visible{opacity:1;transform:none}

/* =========================================================
   RESPONSIVE
   ========================================================= */
@media(max-width:600px){
  section{padding:3.5rem 1.2rem}
  .detail-grid{grid-template-columns:1fr}
  .hero-names{font-size:clamp(2.8rem,14vw,4.5rem)}
}
