:root{
  --cream: #f3ebe8;
  --cream-2: #ece2d3;
  --gold: #b08b56;
  --gold-light: #c9a878;
  --ink: #221d1a;
  --ink-soft: #5c554c;
  --black-detail: #171412;
  --night-1: #1c1a22;
  --night-2: #2b2733;
  --night-3: #171520;
}

@font-face {
  font-family: 'Hearth Stone';
  src: url('HearthStone.woff2') format('woff2'),
      url('HearthStone.woff') format('woff');
  font-weight: normal;
  font-style: normal;
  font-display: swap;
}

/* Google Sans no es una fuente pública de Google Fonts: hay que agregar los
   archivos en assets/fonts/ (ver README.txt de esa carpeta). Mientras tanto,
   la pila de fuentes cae a Inter como reemplazo visual. */
@font-face {
  font-family: 'Google Sans';
  src: url('../assets/fonts/GoogleSans.woff2') format('woff2'),
      url('../assets/fonts/GoogleSans.woff') format('woff');
  font-weight: 300 700;
  font-style: normal;
  font-display: swap;
}

*{box-sizing:border-box;margin:0;padding:0;}

html{scroll-behavior:smooth;}

body{
  font-family:'Google Sans','Inter',sans-serif;
  background:var(--cream);
  color:var(--ink);
  overflow-x:hidden;
}

#scrollWrap{
  scroll-snap-type:y proximity;
}

.panel{
  position:relative;
  min-height:100vh;
  width:100%;
  display:flex;
  flex-direction:column;
  align-items:center;
  justify-content:center;
  text-align:center;
  scroll-snap-align:start;
  padding:8vh 6vw;
}

/* ---------- Cards: degradé "del atardecer a la noche" ---------- */
/* Cada pantalla (salvo portada y cierre) define su propio tono, cada vez
   más oscuro, para contar la historia del atardecer hacia la noche. */
.tone-1{ --t-bg:#f3ebe8; --t-bg2:#ece2d3; --t-ink:#221d1a; --t-ink-soft:#5c554c; --t-gold:#b08b56; }
.tone-2{ --t-bg:#ecdfd0; --t-bg2:#e3d2bd; --t-ink:#221d1a; --t-ink-soft:#5a4f3f; --t-gold:#ac8450; }
.tone-3{ --t-bg:#e0cdb1; --t-bg2:#d5bd9d; --t-ink:#241f19; --t-ink-soft:#544736; --t-gold:#a5793f; }
.tone-4{ --t-bg:#c8b598; --t-bg2:#b8a284; --t-ink:#241f19; --t-ink-soft:#4a3f31; --t-gold:#8f6a3a; }
.tone-5{ --t-bg:#a6907a; --t-bg2:#93806c; --t-ink:#f7f1e6; --t-ink-soft:#ece0cd; --t-gold:#e7c896; }
.tone-6{ --t-bg:#7c6a58; --t-bg2:#695849; --t-ink:#f7f1e6; --t-ink-soft:#e5d8c4; --t-gold:#e9cca0; }
.tone-7{ --t-bg:#54473b; --t-bg2:#443830; --t-ink:#f5eee1; --t-ink-soft:#ddcfba; --t-gold:#edcb9c; }
.tone-8{ --t-bg:#332a23; --t-bg2:#241d18; --t-ink:#f5eee1; --t-ink-soft:#d5c7b3; --t-gold:#e9c99b; }

.card{
  background:linear-gradient(160deg, var(--t-bg,var(--cream)) 0%, var(--t-bg2,var(--cream-2)) 100%);
  color:var(--t-ink,var(--ink));
}

.card-inner{display:flex;flex-direction:column;align-items:center;gap:.4rem;}
.block{display:flex;flex-direction:column;align-items:center;gap:.6rem;margin:1.4rem 0;}

/* ---------- Typography ---------- */
.xv-title{
  font-family:'Cormorant SC',serif;
  font-weight:600;
  font-size:clamp(4rem,14vw,6.5rem);
  color:var(--gold);
  letter-spacing:.05em;
  line-height:.9;
}
.xv-title.dark{ color:var(--t-gold,var(--gold));}

.de-label{
  font-family:'Google Sans','Inter',sans-serif;
  font-size:.75rem;
  letter-spacing:.5em;
  color:var(--t-ink-soft,var(--ink-soft));
  margin-top:.3rem;
}
.hero-bottom .de-label{color:#e9e2d3;}

.camila-script{
  font-family:'Hearth Stone',cursive;
  font-weight:300;
  font-size:clamp(3.2rem,11vw,5rem);
  line-height:1.8;
  padding:.12em .3em;
  display:inline-block;
  color:var(--t-gold,var(--gold-light));
  margin-top:-.4rem;
}
/* Efecto de metal dorado sólo en la Camila de la portada (pantalla inicial) */
.hero-bottom .camila-script{
  background: linear-gradient(
        180deg,
        #f7ddb0 0%,
        #f3d096 30%,
        #e2bc83 60%,
        #cca96f 100%
    );
  -webkit-background-clip: text;
  -webkit-text-fill-color: transparent;
  background-clip: text;
  color: transparent;
  text-shadow: 0 1px 2px rgba(80, 55, 20, 0.15);
}

.date-label{
  font-family:'Google Sans','Inter',sans-serif;
  font-size:.85rem;
  letter-spacing:.25em;
  color:var(--t-ink-soft,var(--ink-soft));
  margin-top:.8rem;
}
.hero-bottom .date-label{color:#e9e2d3;}

.script-title{
  font-family:'Hearth Stone',cursive;
  font-size:clamp(2.8rem,9vw,3.8rem);
  color:var(--t-ink,var(--ink));
  font-weight:400;
  line-height: 1.5em;
}
.script-title.gold{color:var(--gold-light);text-shadow:0 2px 10px rgba(0,0,0,.6),0 1px 3px rgba(0,0,0,.8);}

.label-text{
  font-family:'Google Sans','Inter',sans-serif;
  font-size:.85rem;
  letter-spacing:.2em;
  color:var(--t-ink-soft,var(--ink-soft));
  line-height:1.9;
}
.label-text.soft{color:var(--t-ink-soft,var(--ink-soft));}
.label-text.small-gap{margin-top:.2rem;font-size:.75rem;}

.info-text{
  font-family:'Google Sans','Inter',sans-serif;
  font-size:.85rem;
  letter-spacing:.15em;
  line-height:1.8;
  color:var(--t-ink,var(--ink));
}

.dresscode-text{
  font-family:'Google Sans','Inter',sans-serif;
  font-weight:400;
  font-size:.9rem;
  letter-spacing:.15em;
  color:var(--t-ink-soft,var(--ink-soft));
}

.message{
  font-family:'Google Sans','Inter',sans-serif;
  font-size:.9rem;
  letter-spacing:.18em;
  line-height:2.1;
  color:var(--t-ink,var(--ink));
  max-width:22rem;
}
.script-inline{
  display:block;
  font-family:'Hearth Stone',cursive;
  font-size:2.4rem;
  line-height:1.4;
  padding:.1em .2em;
  color:var(--t-gold,var(--gold));
  letter-spacing:0;
  margin-top:.3rem;
}

.hero-quote{
  font-family:'Google Sans','Inter',sans-serif;
  font-size:1.1em;
  letter-spacing:.2em;
  line-height:2.1;
  color:#f2ece0;
  max-width:20rem;
  text-shadow:0 2px 10px rgba(0,0,0,.65), 0 1px 3px rgba(0,0,0,.85);
}

.heart{color:var(--t-gold,var(--gold-light));font-size:1rem;}
.closing-content .heart{font-size:2.3rem;}
.closing-content .label-text{
  color:#efe6d8;
  text-shadow:0 2px 8px rgba(0,0,0,.7), 0 1px 3px rgba(0,0,0,.9);
}
.closing-chevron{filter:drop-shadow(0 1px 4px rgba(0,0,0,.7));}

/* ---------- Icons ---------- */
.icon-circle{
  width:4rem;height:4rem;border-radius:50%;
  background:transparent;
  border:1px solid var(--t-gold,var(--gold));
  display:flex;align-items:center;justify-content:center;
  color:var(--t-gold,var(--gold));
}
.icon-circle svg{width:1.7rem;height:1.7rem;}
.icon-circle.big{width:4.6rem;height:4.6rem;}
.icon-circle.whatsapp{
  background:var(--black-detail);
  border:none;
  color:#fff;
  margin-top:1.2rem;
  animation:pulseGlow 2.4s ease-in-out infinite;
}
.icon-circle.whatsapp svg{width:2rem;height:2rem;}

.info-row{display:flex;flex-direction:column;align-items:center;gap:.8rem;}

.confirm-btn,
.map-btn{
  display:inline-block;
  margin-top:1.1rem;
  padding:.85rem 1.8rem;
  border:1px solid var(--t-gold,var(--gold));
  background:transparent;
  color:var(--t-gold,var(--gold));
  text-decoration:none;
  font-size:.75rem;
  letter-spacing:.2em;
  border-radius:2rem;
  transition:background .25s ease, color .25s ease;
}
.confirm-btn:hover,
.map-btn:hover{background:var(--t-gold,var(--gold));color:var(--t-bg,#fff);}

/* ---------- Dress code (estilo sitio 2: sin colores) ---------- */
.star-divider{
  display:flex;
  align-items:center;
  justify-content:center;
  gap:.6rem;
  margin:1.2rem 0;
}
.star-divider .line{
  width:2.2rem;
  height:1px;
  background:var(--t-gold,var(--gold-light));
  opacity:.6;
}
.star-divider .star-sep{
  color:var(--t-gold,var(--gold-light));
  font-size:1rem;
}

/* ---------- Pricing (Cena / Brindis) ---------- */
.pricing{
  display:flex;
  flex-direction:column;
  gap:1.2rem;
  width:min(84vw,19rem);
  margin:.3rem 0;
}
.pricing-group{display:flex;flex-direction:column;gap:.5rem;}
.pricing-title{
  font-family:'Hearth Stone',cursive;
  font-weight:normal;
  font-size:1.5rem;
  color:var(--t-gold,var(--gold));
  text-align:center;
}
.price-row{
  display:flex;
  align-items:baseline;
  justify-content:space-between;
  gap:.6rem;
  padding-bottom:.35rem;
  border-bottom:1px dotted var(--t-gold,var(--gold));
  font-family:'Google Sans','Inter',sans-serif;
  font-size:.78rem;
  letter-spacing:.03em;
  color:var(--t-ink,var(--ink));
  text-align:left;
}
.price-row small{
  display:block;
  font-size:.68rem;
  letter-spacing:.02em;
  color:var(--t-ink-soft,var(--ink-soft));
}
.price-amount{
  flex-shrink:0;
  font-weight:600;
  color:var(--t-gold,var(--gold));
  white-space:nowrap;
}

/* ---------- Countdown ---------- */
.countdown{display:flex;gap:1.4rem;margin-top:.6rem;}
.cd-unit{display:flex;flex-direction:column;align-items:center;gap:.25rem;}
.cd-num{
  font-family:'Cormorant SC',serif;
  font-weight:600;
  font-size:clamp(1.6rem,5vw,2.1rem);
  color:var(--t-gold,var(--gold));
  min-width:1.6em;
}
.cd-label{
  font-family:'Google Sans','Inter',sans-serif;
  font-size:.6rem;
  letter-spacing:.18em;
  color:var(--t-ink-soft,var(--ink-soft));
}

/* ---------- Photo gallery ---------- */
.gallery{position:relative;width:min(88vw,26rem);margin:1rem auto 0;}
.gallery-track{
  display:flex;
  overflow-x:auto;
  scroll-snap-type:x mandatory;
  border-radius:.6rem;
  scrollbar-width:none;
}
.gallery-track::-webkit-scrollbar{display:none;}
.gallery-slide{
  flex:0 0 100%;
  scroll-snap-align:center;
  position:relative;
  aspect-ratio:3/4.4;
  background:linear-gradient(160deg,var(--t-bg2,var(--cream-2)) 0%,var(--t-bg,var(--cream)) 100%);
  border-radius:.6rem;
  overflow:hidden;
}
.gallery-photo{position:absolute;inset:0;background-size:cover;background-position:center;}
.gallery-photo img{width:100%;height:100%;object-fit:cover;}
.gallery-year{
  position:absolute;
  bottom:.9rem;left:50%;
  transform:translateX(-50%);
  background:rgba(23,20,18,.55);
  color:#f5eee1;
  font-family:'Google Sans','Inter',sans-serif;
  letter-spacing:.2em;
  font-size:.75rem;
  padding:.35rem .9rem;
  border-radius:2rem;
}
.gallery-nav{
  position:absolute;
  top:50%;transform:translateY(-50%);
  width:2.2rem;height:2.2rem;
  border-radius:50%;
  border:1px solid var(--t-gold,var(--gold));
  background:var(--t-bg,var(--cream));
  color:var(--t-gold,var(--gold));
  font-size:1.2rem;
  line-height:1;
  cursor:pointer;
  display:flex;align-items:center;justify-content:center;
}
.gallery-nav.prev{left:-.9rem;}
.gallery-nav.next{right:-.9rem;}
.gallery-dots{
  display:flex;justify-content:center;gap:.4rem;
  margin-top:.9rem;
}
.gallery-dots span{
  width:.4rem;height:.4rem;border-radius:50%;
  background:rgba(176,139,86,.35);
  transition:background .3s ease, transform .3s ease;
}
.gallery-dots span.active{background:var(--t-gold,var(--gold));transform:scale(1.3);}

/* ---------- Sparks / stars decor ---------- */
.spark{
  position:absolute;
  color:var(--t-gold,var(--gold-light));
  font-size:1.2rem;
  animation:twinkle 3.2s ease-in-out infinite;
  pointer-events:none;
}
.spark-top{top:8%;left:50%;transform:translateX(-50%);font-size:1.4rem;color:#f2e6c8;}
.spark-solo{position:relative;display:block;margin:.6rem auto;font-size:1.1rem;color:var(--t-gold,var(--gold-light));}
.spark-solo.small{font-size:.9rem;margin:.3rem auto;}
.hero-side-left{top:14%;left:12%;font-size:.9rem;color:#f2e6c8;}
.hero-side-right{top:20%;right:14%;font-size:1rem;color:#f2e6c8;}

/* Polvo de estrellas: dispersión orgánica concentrada en dos esquinas
   opuestas (arriba-derecha / abajo-izquierda), en vez de unos pocos
   glifos fijos siempre iguales. */
.stardust{position:absolute;inset:0;z-index:0;pointer-events:none;overflow:hidden;}
.stardust span{
  position:absolute;
  border-radius:50%;
  background:var(--t-gold,var(--gold-light));
  animation:twinkle 3.6s ease-in-out infinite;
}

/* ---------- Hero & Closing (photo panels) ---------- */
.hero, .closing{
  background:radial-gradient(ellipse at 50% 20%, var(--night-2) 0%, var(--night-1) 55%, var(--night-3) 100%);
  color:#fff;
  overflow:hidden;
}
.hero-photo, .closing-photo{
  position:absolute;inset:0;
  background-size:cover;
  background-position:center;
}
.hero-photo img, .closing-photo img{width:100%;height:100%;object-fit:cover;}
.closing-photo img{object-position:center 22%;}
.hero-overlay{
  position:absolute;inset:0;
  background:linear-gradient(180deg, rgba(15,13,18,.6) 0%, rgba(15,13,18,.4) 40%, rgba(15,13,18,.86) 100%);
}
.bokeh{
  position:absolute;inset:0;
  background:
    radial-gradient(circle at 20% 30%, rgba(203,168,118,.18) 0%, transparent 40%),
    radial-gradient(circle at 80% 70%, rgba(159,184,172,.15) 0%, transparent 45%);
  filter:blur(6px);
}

.hero-content, .closing-content{position:relative;z-index:2;display:flex;flex-direction:column;align-items:center;gap:1.2rem;}
.hero-bottom{display:flex;flex-direction:column;align-items:center;gap:.2rem;}
.hero-content{justify-content:space-between;height:78vh;padding:2rem 0;}

.closing-inner{
  position:relative;z-index:2;
  width:100%;
  height:82vh;
  display:flex;
  flex-direction:column;
  align-items:center;
  justify-content:space-between;
  padding:1.5rem 0;
}

/* Evita un bug de render (Chrome/WebKit): animar "transform" en un ancestro
   de un texto con background-clip:text puede recortar el glifo. Este bloque
   sólo anima opacidad. */
.hero-bottom[data-animate]{transform:none;}
.hero-bottom[data-animate].in-view{transform:none;}

.stars{position:absolute;inset:0;z-index:1;pointer-events:none;}
.stars .star{
  position:absolute;
  width:2px;height:2px;
  background:#fff;
  border-radius:50%;
  animation:twinkle 4s ease-in-out infinite;
  box-shadow:0 0 4px 1px rgba(255,255,255,.6);
}

.zodiac{
  position:absolute;
  top:5%;right:7%;
  z-index:2;
  font-size:2.8rem;
  color:var(--gold-light);
  opacity:.8;
}

.constellation{
  position:relative;
  width:min(46vw,168px);
  z-index:2;
  opacity:.95;
  align-self:flex-end;
  margin-right:2%;
}
.const-lines line{
  stroke:var(--gold-light);
  stroke-width:.7;
  opacity:.6;
  stroke-dasharray:var(--len,80);
  stroke-dashoffset:var(--len,80);
  transition:stroke-dashoffset 1.1s ease;
}
.const-stars circle{
  fill:#f6ecd6;
  opacity:0;
  transition:opacity 1.2s ease;
}
.const-stars circle.bright{fill:#f6ecd6;filter:drop-shadow(0 0 3px rgba(246,236,214,.8));}
.constellation.draw .const-lines line{transition-delay:calc(var(--i,0) * .12s);stroke-dashoffset:0;}
.constellation.draw .const-stars circle{
  opacity:1;
  transition-delay:calc(var(--i,0) * .18s);
  animation:constTwinkle 3.6s ease-in-out infinite;
  animation-delay:calc(var(--i,0) * .18s + 1s);
}

/* ---------- Fixed floating scroll cue (igual que sitio 2) ---------- */
.scroll-cue-fixed{
  position:fixed;
  left:50%;bottom:1.6rem;
  transform:translateX(-50%);
  display:flex;flex-direction:column;align-items:center;gap:.5rem;
  background:none;
  border:none;cursor:pointer;
  color:var(--gold-light);
  text-shadow:0 1px 5px rgba(0,0,0,.4);
  z-index:70;
  transition:opacity .6s ease;
}
.scroll-cue-fixed.hide{opacity:0;pointer-events:none;}
.chevron{
  width:.6rem;height:.6rem;
  border-left:1.5px solid currentColor;
  border-top:1.5px solid currentColor;
  transform:rotate(-135deg);
  animation:bounce 1.8s ease-in-out infinite;
}
.closing-chevron{
  position:relative;
  color:var(--gold-light);
  margin-top:.2rem;
}
.scroll-text{font-size:.65rem;letter-spacing:.3em;white-space:nowrap;}

/* ---------- Video de intro ---------- */
.intro-overlay{
  position:fixed;inset:0;
  z-index:100;
  background:#000;
  display:flex;align-items:center;justify-content:center;
  transition:opacity .8s ease;
}
.intro-overlay.hide{opacity:0;pointer-events:none;}
.intro-video{
  width:100%;height:100%;
  object-fit:contain;
}
.intro-skip{
  position:absolute;
  bottom:2rem;right:1.2rem;
  background:rgba(255,255,255,.12);
  border:1px solid rgba(255,255,255,.5);
  color:#fff;
  padding:.55rem 1.1rem;
  border-radius:2rem;
  font-family:'Google Sans','Inter',sans-serif;
  font-size:.65rem;
  letter-spacing:.2em;
  cursor:pointer;
  backdrop-filter:blur(4px);
}
body.intro-locked{overflow:hidden;height:100vh;}

/* ---------- Music toggle ---------- */
.music-toggle{
  position:fixed;
  left:1.1rem;bottom:1.1rem;
  z-index:60;
  width:2.6rem;height:2.6rem;
  border-radius:50%;
  border:none;
  background:var(--black-detail);
  color:#fff;
  font-size:1.1rem;
  display:flex;align-items:center;justify-content:center;
  cursor:pointer;
  box-shadow:0 6px 16px rgba(0,0,0,.2);
}
.music-toggle .note{display:inline-block;animation:none;}
.music-toggle[data-playing="true"] .note{animation:spinNote 3s linear infinite;}

@keyframes spinNote{
  0%,100%{transform:translateY(0) rotate(0deg);}
  50%{transform:translateY(-2px) rotate(180deg);}
}

/* ---------- Progress dots ---------- */
.progress-dots{
  position:fixed;
  right:1.1rem;top:50%;transform:translateY(-50%);
  display:flex;flex-direction:column;gap:.55rem;
  z-index:50;
}
.progress-dots span{
  width:.4rem;height:.4rem;border-radius:50%;
  background:rgba(177,135,79,.3);
  transition:all .35s ease;
}
.progress-dots span.active{background:var(--gold);transform:scale(1.5);}
@media (max-width:640px){.progress-dots{display:none;}}

/* ---------- Reveal animations ---------- */
[data-animate]{
  opacity:0;
  transform:translateY(24px);
  transition:opacity .9s ease, transform .9s ease;
}
[data-animate].in-view{opacity:1;transform:translateY(0);}

[data-animate-child]{
  opacity:0;
  transform:scale(.7);
  transition:opacity .6s ease, transform .6s cubic-bezier(.34,1.56,.64,1);
}
[data-animate-child].in-view{opacity:1;transform:scale(1);}

/* ---------- Keyframes ---------- */
@keyframes twinkle{
  0%,100%{opacity:.25;transform:scale(.85);}
  50%{opacity:1;transform:scale(1.15);}
}
/* Prendido/apagado puro, sin movimiento ni cambio de tamaño (para la
   constelación del cierre, una vez que las estrellas ya aparecieron). */
@keyframes constTwinkle{
  0%,100%{opacity:.35;}
  50%{opacity:1;}
}
@keyframes bounce{
  0%,100%{transform:rotate(-135deg) translate(0,0);}
  50%{transform:rotate(-135deg) translate(-3px,-3px);}
}
@keyframes pulseGlow{
  0%,100%{box-shadow:0 0 0 0 rgba(23,20,18,.35);}
  50%{box-shadow:0 0 0 14px rgba(23,20,18,0);}
}
@keyframes floatSlow{
  0%,100%{transform:translateY(0);}
  50%{transform:translateY(-10px);}
}

.spark{animation-name:twinkle,floatSlow;animation-duration:3.2s,6s;animation-iteration-count:infinite,infinite;animation-timing-function:ease-in-out,ease-in-out;}

/* ---------- Responsive ---------- */
@media (min-width:768px){
  .panel{padding:8vh 8vw;}
  .card, .hero, .closing{
    max-width:520px;
    margin:0 auto;
    box-shadow:0 0 60px rgba(0,0,0,.06);
  }
}
