/* ============================================================
   Boda Iñaki & Alberto — 12.09.26
   ============================================================ */

@font-face{font-family:'LeJour';src:url('../fuentes/LeJourSerif.otf') format('opentype');font-weight:400;font-display:swap}
@font-face{font-family:'Parisienne';src:url('../fuentes/parisienne.regular.ttf') format('truetype');font-weight:400;font-display:swap}
@font-face{font-family:'Quicksand';src:url('../fuentes/Quicksand_Light.otf') format('opentype');font-weight:300;font-display:swap}
@font-face{font-family:'Quicksand';src:url('../fuentes/Quicksand_Book.otf') format('opentype');font-weight:400;font-display:swap}
@font-face{font-family:'Quicksand';src:url('../fuentes/Quicksand_Bold.otf') format('opentype');font-weight:700;font-display:swap}

:root{
  --tinta:#111111;
  --gris:#8a8a8a;
  --gris-claro:#d8d8d8;
  --papel:#ffffff;
  --hueso:#faf9f7;
  --ancho:1100px;
}

*,*::before,*::after{box-sizing:border-box}
html{scroll-behavior:smooth}
body{
  margin:0;
  overflow-x:hidden;
  background:var(--papel);
  color:var(--tinta);
  font-family:'Quicksand',"Trebuchet MS",Arial,sans-serif;
  font-weight:300;
  -webkit-font-smoothing:antialiased;
}
img{max-width:100%;height:auto;display:block}
a{color:inherit}

.contenedor{max-width:var(--ancho);margin:0 auto;padding:0 24px}

/* ---------- Barra de navegación ---------- */
.nav{
  position:sticky;top:0;z-index:50;
  background:rgba(255,255,255,.94);
  backdrop-filter:blur(6px);
  border-bottom:1px solid var(--gris-claro);
}
.nav-inner{
  max-width:var(--ancho);margin:0 auto;padding:14px 24px;
  display:flex;align-items:center;justify-content:space-between;gap:20px;flex-wrap:wrap;
}
.nav-marca{
  font-family:'LeJour',Georgia,serif;
  font-size:15px;letter-spacing:.18em;white-space:nowrap;
}
.nav-links{display:flex;gap:26px;flex-wrap:wrap;list-style:none;margin:0;padding:0}
.nav-links a{
  text-decoration:none;font-size:11px;letter-spacing:.16em;text-transform:uppercase;
  color:var(--tinta);padding-bottom:3px;border-bottom:1px solid transparent;transition:border-color .25s;
}
.nav-links a:hover{border-bottom-color:var(--tinta)}

/* ---------- Portada ---------- */
.portada{padding:10px 0 0}
.portada img{margin:0 auto;width:100%;max-width:900px}

/* ---------- Fecha ---------- */
.fecha{text-align:center;padding:40px 0 10px}
.fecha span{
  display:block;font-family:'LeJour',Georgia,serif;
  font-size:clamp(38px,7vw,64px);line-height:.98;letter-spacing:.04em;
}

/* ---------- Nombres / intro ---------- */
.nombres{padding:30px 0 10px}
.nombres img{width:100%;max-width:520px;margin:0 auto}
.intro{
  text-align:center;padding:14px 0 60px;
  font-size:13px;letter-spacing:.22em;text-transform:uppercase;line-height:2.1;
  color:#3a3a3a;
}

/* ---------- Título de sección (mayúscula + script encima) ---------- */
.titulo{position:relative;text-align:center;margin:0 0 46px;padding:26px 0 34px}
.titulo .grande{
  position:relative;z-index:2;
  display:block;font-family:'LeJour',Georgia,serif;
  font-size:clamp(34px,7vw,62px);letter-spacing:.14em;text-transform:uppercase;
  color:var(--tinta);line-height:1;
}
/* La cursiva va DETRÁS y más abajo, al 10% de opacidad */
.titulo .script{
  position:absolute;z-index:1;left:0;right:0;top:50%;
  transform:translateY(-8%);
  font-family:'Parisienne',cursive;
  font-size:clamp(46px,9vw,86px);color:var(--tinta);opacity:.10;
  pointer-events:none;line-height:1;white-space:nowrap;
}
/* Mesa "de regalos" y Confirma "tu asistencia": la cursiva dice algo distinto
   a la mayuscula, no se encima con las mismas letras, y aguanta mas presencia */
.titulo .script.fuerte{opacity:.50}

/* ---------- Secciones ---------- */
section{padding:70px 0;scroll-margin-top:80px}
section.hueso{background:var(--hueso)}

/* ---------- San Miguel ---------- */
.sanmiguel{padding:0 0 20px}
.sanmiguel img{width:100%;max-width:1000px;margin:0 auto}

/* ---------- Itinerario ---------- */
.recepcion{text-align:center}
.recepcion .dia{
  font-family:'LeJour',Georgia,serif;font-size:clamp(22px,3.6vw,32px);
  letter-spacing:.16em;text-transform:uppercase;margin-bottom:34px;
}
.recepcion .hora{
  font-family:'LeJour',Georgia,serif;font-size:clamp(46px,9vw,84px);line-height:1;letter-spacing:.03em;
}
.recepcion .que{
  font-size:12px;letter-spacing:.28em;text-transform:uppercase;margin-top:14px;
}
.recepcion .lugar{
  font-size:13px;letter-spacing:.2em;text-transform:uppercase;margin-top:8px;font-weight:700;
}

/* ---------- Botones ---------- */
.boton{
  display:inline-block;margin-top:26px;padding:13px 34px;
  border:1px solid var(--tinta);text-decoration:none;
  font-size:11px;letter-spacing:.22em;text-transform:uppercase;
  transition:background .25s,color .25s;
}
.boton:hover{background:var(--tinta);color:#fff}
.centrado{text-align:center}

/* ---------- Programa ---------- */
.programa img{width:100%;max-width:760px;margin:0 auto}

/* ---------- Dress code ---------- */
.dresscode img{width:100%;max-width:1000px;margin:0 auto}

/* ---------- Hospedaje ---------- */
.nota{
  text-align:center;font-size:12px;letter-spacing:.2em;text-transform:uppercase;
  color:#4a4a4a;margin-bottom:44px;line-height:2;
}
.hoteles{
  display:grid;grid-template-columns:repeat(3,1fr);gap:34px 28px;
}
.hotel{text-align:center}
.hotel-marco{
  display:block;position:relative;overflow:hidden;
  aspect-ratio:1/1;background:var(--gris-claro);
}
.hotel-marco img{
  position:absolute;inset:0;
  width:100%;height:100%;object-fit:cover;
  transition:opacity .5s ease,transform .6s ease;
}
/* La segunda foto vive encima, invisible, y aparece al pasar el mouse */
.hotel-marco .foto-b{opacity:0}
.hotel-marco:hover .foto-b,
.hotel-marco:focus-visible .foto-b{opacity:1}
.hotel-marco:hover .foto-a,
.hotel-marco:focus-visible .foto-a{opacity:0}

/* Mientras un hotel no tenga segunda foto, el mouse solo hace un acercamiento */
.hotel-marco:not(:has(.foto-b)):hover .foto-a{transform:scale(1.05)}

/* En celular no hay mouse: se queda la primera foto, fija */
@media (hover: none){
  .hotel-marco .foto-b{display:none}
  .hotel-marco:hover .foto-a{opacity:1;transform:none}
}
.hotel h3{
  font-family:'LeJour',Georgia,serif;font-weight:400;
  font-size:17px;letter-spacing:.2em;text-transform:uppercase;margin:16px 0 0;
}
.codigo{
  margin-top:50px;text-align:center;font-size:12px;letter-spacing:.18em;
  text-transform:uppercase;line-height:2.2;
}
.codigo strong{font-weight:700}

/* ---------- Mesa de regalos ---------- */
.regalos p{
  text-align:center;font-size:13px;letter-spacing:.24em;text-transform:uppercase;
  line-height:2.2;margin:0 auto 10px;max-width:640px;
}

/* ---------- Confirmación ---------- */
.aviso{
  text-align:center;max-width:640px;margin:0 auto 46px;
  font-size:13px;letter-spacing:.16em;text-transform:uppercase;line-height:2.2;color:#3a3a3a;
}
/* El formulario Save The Web trae su propio diseño (Tailwind).
   No aplicamos estilos globales a form/label/input/button para no alterarlo. */

/* ---------- Pie ---------- */
footer{
  text-align:center;padding:60px 24px 70px;border-top:1px solid var(--gris-claro);
}
footer .nombres-pie{
  font-family:'LeJour',Georgia,serif;font-size:20px;letter-spacing:.2em;text-transform:uppercase;
}
footer .fecha-pie{
  margin-top:12px;font-size:11px;letter-spacing:.3em;color:var(--gris);
}

/* ---------- Responsivo ---------- */
@media (max-width:900px){
  .hoteles{grid-template-columns:repeat(2,1fr);gap:26px 20px}
}
@media (max-width:640px){
  .nav-inner{justify-content:center;padding:12px 16px;gap:10px}
  .nav-marca{width:100%;text-align:center;font-size:13px}
  .nav-links{gap:16px;justify-content:center}
  .nav-links a{font-size:10px;letter-spacing:.12em}
  section{padding:52px 0}
  .hoteles{grid-template-columns:1fr;gap:30px}
  /* Misma posicion que en computadora: la cursiva va abajo, no encima.
     (Aqui vivia un valor del primer diseno que empalmaba los titulos) */
  .titulo .script{transform:translateY(-8%);font-size:clamp(38px,11vw,60px)}
  .titulo .grande{font-size:clamp(30px,8.5vw,48px)}
  .titulo{padding:20px 0 30px;margin-bottom:36px}
  .intro{letter-spacing:.16em;font-size:12px}
  .cuenta-grid{gap:14px}
  .cuenta-eti{font-size:8px;letter-spacing:.14em}
  .paso.izq,.paso.der{align-self:center;padding:0}
  .conector{margin:0}
}


/* ---------- Cuenta regresiva ---------- */
.cuenta{text-align:center;padding:46px 24px 10px}
.cuenta-titulo{
  margin:0 0 22px;font-size:11px;letter-spacing:.34em;text-transform:uppercase;color:var(--gris);
}
.cuenta-grid{
  display:flex;justify-content:center;align-items:flex-start;
  gap:clamp(18px,6vw,60px);flex-wrap:nowrap;
}
.cuenta-celda{display:flex;flex-direction:column;align-items:center;min-width:0}
.cuenta-num{
  font-family:'LeJour',Georgia,serif;
  font-size:clamp(34px,7.5vw,66px);line-height:1;letter-spacing:.02em;
  font-variant-numeric:tabular-nums;
}
.cuenta-eti{
  margin-top:10px;font-size:9px;letter-spacing:.24em;text-transform:uppercase;color:var(--gris);
}
.cuenta-pie{
  margin:26px 0 0;font-size:11px;letter-spacing:.24em;text-transform:uppercase;color:#4a4a4a;
}

/* ---------- Programa: línea del tiempo animada ---------- */
.linea{display:flex;flex-direction:column;max-width:760px;margin:0 auto}
.paso{width:auto;max-width:100%}
.paso.izq{align-self:flex-start;padding-left:2%}
.paso.der{align-self:flex-end;padding-right:2%}
.paso img{width:100%;height:auto;max-width:var(--w)}

.conector{display:flex;justify-content:center;margin:-6px 0}
.conector.espejo{transform:scaleX(-1)}
.flecha{width:clamp(120px,26vw,200px);height:auto;overflow:visible}

/* Estado inicial: escondido. Al entrar en pantalla se agrega .visible */
.paso{opacity:0;transform:translateY(26px);transition:opacity .8s ease,transform .8s ease}
.paso.visible{opacity:1;transform:none}

.flecha .revelar{stroke-dasharray:100;stroke-dashoffset:100}
.conector.visible .flecha .revelar{
  stroke-dashoffset:0;
  transition:stroke-dashoffset 1.5s cubic-bezier(.4,0,.2,1) .15s;
}

/* Si alguien prefiere sin animaciones, se ve todo de inmediato */
@media (prefers-reduced-motion: reduce){
  .paso{opacity:1;transform:none;transition:none}
  .flecha .revelar{stroke-dashoffset:0}
}

/* ---------- El formulario Save The Web se muestra sobre fondo claro ---------- */
#rsvp-app-root{max-width:560px;margin:0 auto}

/* ---------- Programa en celular ----------
   Va al final del archivo a proposito: estas reglas tienen la misma fuerza
   que las de arriba, asi que gana la ultima que se lee. */
@media (max-width:640px){
  .paso img{max-width:calc(var(--w) * .6)}
  .flecha{width:clamp(78px,23vw,120px)}
  .conector{margin:-4px 0}
}
