/* ==================================================================
   Mis 18 · Joaquín — "Noche de casino" (cumple-18-casino)
   Paleta única: verde tapete profundo (nunca negro), rojo carmesí, marfil y
   toques de dorado. Tipografías: Grand Hotel (el nombre, como letrero de
   casino), Abril Fatface (títulos y cifras, como los números de la ruleta)
   y Barlow / Barlow Condensed (texto y rótulos).
   Formas propias: la carta (naipe con su índice) y la ficha.
   Lenguaje: cartas que se voltean en 3D para revelar su contenido, fichas
   que se apilan, la ruleta y bombillas de marquesina que prenden en cadena.
   ================================================================== */

:root{
  --bosque:#06241A;
  --bosque-2:#082C20;
  --tapete-osc:#0A3324;
  --tapete:#0E4A33;
  --tapete-2:#126041;
  --tapete-luz:#1B7A55;
  --carmesi:#B8142F;
  --carmesi-vivo:#E0304B;
  --carmesi-osc:#7E0F23;
  --granate:#4E0A17;
  --marfil:#F6EEDC;
  --marfil-2:#EADFC6;
  --hueso:#FBF6E9;
  --oro:#D9B15A;
  --oro-claro:#F0D58C;
  --oro-osc:#9C7A30;
  --tinta:#0C2A1E;
  --tinta-suave:#3B584A;
  --texto:#F3ECD9;
  --texto-suave:#C9D6C9;
  --sombra:rgba(3,18,13,.6);
  --fat:'Abril Fatface',Georgia,'Times New Roman',serif;
  --firma:'Grand Hotel','Brush Script MT','Segoe Script',cursive;
  --cond:'Barlow Condensed','Arial Narrow','Segoe UI',system-ui,sans-serif;
  --sans:'Barlow','Segoe UI',system-ui,-apple-system,sans-serif;
  --grano:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='240' height='240'%3E%3Cfilter id='n' x='0' y='0' width='100%25' height='100%25'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='1.1' numOctaves='2' seed='18' stitchTiles='stitch'/%3E%3CfeColorMatrix values='0 0 0 0 1 0 0 0 0 1 0 0 0 0 .9 0 0 0 .3 -.12'/%3E%3C/filter%3E%3Crect width='240' height='240' filter='url(%23n)'/%3E%3C/svg%3E");
  --pad:22px;
  --arriba:env(safe-area-inset-top,0px);
  --abajo:env(safe-area-inset-bottom,0px);
  --izq:env(safe-area-inset-left,0px);
  --der:env(safe-area-inset-right,0px);
}

*{box-sizing:border-box}
html,body{margin:0;padding:0}
html{-webkit-text-size-adjust:100%;background:var(--bosque)}
body{
  background:var(--bosque);
  color:var(--texto);
  font-family:var(--sans);
  font-size:17px;
  line-height:1.62;
  overflow-x:hidden;
  -webkit-font-smoothing:antialiased;
}
body.cerrado{overflow:hidden;height:100%}
img{max-width:100%;height:auto;display:block}
b,strong{font-weight:700}
[hidden]{display:none!important}
.defs{position:absolute;width:0;height:0;overflow:hidden}
html.lenis,html.lenis body{height:auto}
.lenis.lenis-smooth{scroll-behavior:auto!important}
.lenis.lenis-stopped{overflow:hidden}
:focus-visible{outline:2px solid var(--oro-claro);outline-offset:3px}
a,button{-webkit-tap-highlight-color:transparent;touch-action:manipulation}

/* ------------------------------------------------------------------
   PORTADA · la mesa de casino bajo la lámpara (fotograma 0 del video)
   ------------------------------------------------------------------ */
.portada{position:fixed;inset:0;z-index:60;overflow:hidden;background:var(--bosque)}
body.abierto .portada{opacity:0;visibility:hidden;pointer-events:none;transition:opacity .6s ease,visibility 0s linear .6s}
.portada__pic{position:absolute;inset:0;display:block}
.portada__fondo{position:absolute;inset:0;width:100%;height:100%;max-width:none;object-fit:cover;object-position:50% var(--ancla-y,50%)}

/* la carta viva (el as de corazones, que al llegar es el rey con la foto): caja por left/top/width/height
   (así crece nítida hasta el tamaño del panel); adentro flota (GSAP), lleva su inclinación fija (la propiedad
   rotate va en un envoltorio que GSAP no toca: GSAP 3.15 absorbe rotate/translate/scale del elemento que
   anima) y gira en 3D con su dorso. Las tres cartas (as, dorso y rey) son imágenes del mismo lienzo. */
.as{position:absolute;left:0;top:0;width:0;height:0;z-index:6;visibility:hidden;pointer-events:none}
.portada.lista .as{visibility:visible}
.as__flota{position:absolute;inset:0}
.as__inclina{position:absolute;inset:0;perspective:900px}
.as__gira{position:absolute;inset:0;transform-style:preserve-3d}
.as__cara{
  position:absolute;
  inset:0;
  display:block;
  border-radius:4.800%/3.300%;
  -webkit-backface-visibility:hidden;
  backface-visibility:hidden;
  box-shadow:0 16px 28px -12px rgba(3,18,13,.75),0 0 34px rgba(240,213,140,.2);
}
.as__frente{transform:rotateY(0deg)}
.as__dorso{transform:rotateY(180deg)}
.as__cara > img,.as__rey > img{position:absolute;inset:0;display:block;width:100%;height:100%;max-width:none}
/* el rey espera detrás del as: lo releva cuando la carta muestra el dorso en su última vuelta */
.as__rey{position:absolute;inset:0;visibility:hidden}
.as--rey .as__rey{visibility:visible}
.as--rey .as__as{visibility:hidden}
.as--rey .as__cara{box-shadow:0 30px 60px -22px rgba(3,18,13,.9),0 0 64px rgba(240,213,140,.34)}
/* la foto es la figura del rey: va en la ventana carmesí de la carta (medida en la carta generada) */
.as__foto{
  position:absolute;
  left:var(--v-x,10.830%);
  top:var(--v-y,16.160%);
  width:var(--v-w,78.330%);
  height:var(--v-h,64.780%);
  overflow:hidden;
  border-radius:var(--v-r,2.500%/2.100%);
  background:#8E1226;
}
.as__foto img{display:block;width:100%;height:100%;max-width:none;object-fit:cover;object-position:50% 30%}
.as__foto::after{
  content:'';
  position:absolute;
  inset:0;
  border-radius:inherit;
  box-shadow:inset 0 0 0 1px rgba(217,177,90,.75),inset 0 0 22px rgba(3,18,13,.3);
}
/* el destello del instante en que el as pasa a ser el rey */
.as__luz{
  position:absolute;
  inset:0;
  border-radius:4.800%/3.300%;
  background:radial-gradient(circle at 50% 45%,rgba(255,253,242,.96) 0%,rgba(247,227,166,.72) 46%,rgba(247,227,166,0) 86%);
  opacity:0;
  pointer-events:none;
}
.as--luz .as__luz{animation:destello 1.400s ease-out 1}
@keyframes destello{0%{opacity:1}100%{opacity:0}}
.as-sombra{
  position:absolute;
  left:0;
  top:0;
  width:0;
  height:0;
  z-index:3;
  border-radius:50%;
  background:radial-gradient(ellipse at 50% 50%,rgba(2,12,9,.8) 0%,rgba(2,12,9,.42) 46%,rgba(2,12,9,0) 72%);
  visibility:hidden;
  pointer-events:none;
}
.portada.lista .as-sombra{visibility:visible}

/* bruma: un velo verde oscuro abajo (para la fecha y el botón) */
.portada__bruma{
  position:absolute;
  inset:0;
  z-index:4;
  pointer-events:none;
  background:linear-gradient(0deg,rgba(6,36,26,.88) 0%,rgba(6,36,26,.42) 17%,rgba(6,36,26,0) 32%);
}

/* cabecera: la marquesina con el nombre, con sus bombillas en cadena */
.portada__cabecera{
  position:absolute;
  left:0;
  right:0;
  top:var(--banda-top,15vh);
  height:var(--banda-alto,20vh);
  z-index:7;
  display:flex;
  align-items:center;
  justify-content:center;
  padding:0 20px;
  text-align:center;
  pointer-events:none;
  visibility:hidden;
}
.portada.lista .portada__cabecera{visibility:visible}
.marquesina{
  position:relative;
  display:flex;
  flex-direction:column;
  align-items:center;
  justify-content:center;
  max-width:100%;
  padding:12px 26px 8px;
  border-radius:24px;
  background:rgba(5,28,20,.93);
  box-shadow:inset 0 0 0 1.500px rgba(217,177,90,.75),inset 0 0 0 6px rgba(6,36,26,.3),inset 0 0 0 7px rgba(217,177,90,.3);
  animation:aparecer 1s ease .15s 1 both;
}
@keyframes aparecer{from{opacity:0;transform:translateY(10px)}to{opacity:1;transform:none}}
.portada__sobre{
  display:flex;
  align-items:center;
  justify-content:center;
  gap:12px;
  font-family:var(--cond);
  font-weight:700;
  font-size:clamp(13px,3.600vw,16px);
  line-height:1.3;
  letter-spacing:.46em;
  text-transform:uppercase;
  color:var(--oro-claro);
}
.portada__sobre span{margin-right:-.46em}
.portada__sobre .palo{width:13px;height:13px;color:var(--hueso)}
.portada__sobre .palo--rojo{color:var(--carmesi-vivo)}
.portada__nombre{
  display:block;
  padding:0 .1em .04em;
  font-family:var(--firma);
  font-size:max(60px,min(30vw,calc(var(--banda-alto,150px) * .63),176px));
  line-height:1.06;
  color:var(--hueso);
  text-shadow:0 2px 0 var(--carmesi),0 4px 0 var(--carmesi-osc),0 12px 24px rgba(3,18,13,.6);
  white-space:nowrap;
}

/* el toque: botón a pantalla completa; abajo, la fecha y el llamado con la manito */
.portada__tap{
  position:absolute;
  inset:0;
  z-index:8;
  width:100%;
  border:0;
  margin:0;
  background:transparent;
  cursor:pointer;
  display:flex;
  flex-direction:column;
  align-items:center;
  justify-content:flex-end;
  padding:0 16px calc(var(--abajo) + clamp(18px,4.400vh,52px));
  font:inherit;
  color:inherit;
  -webkit-tap-highlight-color:transparent;
}
.portada__tap:focus-visible{outline:none}
.portada__llamado{display:flex;flex-direction:column;align-items:center;gap:12px;max-width:100%}
.portada__fecha{
  display:inline-flex;
  align-items:center;
  justify-content:center;
  flex-wrap:wrap;
  gap:3px 10px;
  max-width:100%;
  padding:8px 18px 9px;
  border-radius:999px;
  border:1px solid rgba(240,213,140,.6);
  background:rgba(6,36,26,.8);
  color:var(--hueso);
  font-size:clamp(13px,3.600vw,15.500px);
  font-weight:600;
  line-height:1.35;
}
.portada__fecha .solo-anio{display:none}
html.horizontal .portada__fecha .solo-anio{display:inline}
.portada__sep{display:inline-block;width:5px;height:5px;border-radius:50%;background:var(--oro)}
.portada__pista{
  position:relative;
  display:inline-flex;
  align-items:center;
  gap:10px;
  min-height:54px;
  padding:0 26px 0 20px;
  border-radius:999px;
  border:1px solid var(--oro-claro);
  background:rgba(6,36,26,.82);
  color:var(--oro-claro);
  font-family:var(--cond);
  font-weight:700;
  font-size:15px;
  letter-spacing:.2em;
  text-transform:uppercase;
  white-space:nowrap;
  transition:background-color .35s ease,color .35s ease,border-color .35s ease;
}
.portada__pista::before{
  content:'';
  position:absolute;
  inset:-6px;
  border-radius:999px;
  border:1px solid rgba(251,246,233,.95);
  animation:anillo 2.400s ease-out infinite;
  pointer-events:none;
}
@keyframes anillo{0%{transform:scale(1);opacity:.95}70%,100%{transform:scale(1.14,1.42);opacity:0}}
.pista__mano{width:22px;height:22px;flex:0 0 auto}
/* la manito hace el gesto solo donde se ve: en la portada cerrada y en su sección a la vista */
.portada .pista__mano,.a-la-vista .pista__mano{animation:toque 1.800s ease-in-out infinite}
body.abierto .portada .pista__mano,body.abierto .portada__pista::before{animation-play-state:paused}
@keyframes toque{0%,100%{transform:translateY(0) scale(1)}40%{transform:translateY(4px) scale(.88)}70%{transform:translateY(0) scale(1)}}
.portada__tap:hover .portada__pista,
.portada__tap:focus-visible .portada__pista{background:var(--carmesi);color:var(--hueso);border-color:var(--hueso)}
/* en táctil el hover no existe: nace en su estado llamativo */
@media (hover:none){
  .portada__pista{background:var(--carmesi);color:var(--hueso);border-color:var(--hueso)}
}
/* con mouse también nace llamativo; el hover lo invierte */
@media (hover:hover) and (pointer:fine){
  .portada__pista{background:var(--carmesi);color:var(--hueso);border-color:var(--hueso)}
  .portada__tap:hover .portada__pista,
  .portada__tap:focus-visible .portada__pista{background:var(--hueso);color:var(--carmesi-osc);border-color:var(--oro-claro)}
}

.velo{
  position:absolute;
  inset:0;
  z-index:10;
  pointer-events:none;
  opacity:0;
  visibility:hidden;
  background:radial-gradient(circle at 50% 40%,var(--tapete-luz) 0%,var(--tapete-osc) 54%,var(--bosque) 100%);
}

/* ------------------------------------------------------------------
   EL RECORRIDO · video (o llegada fija) y placas; la carta vuela encima
   ------------------------------------------------------------------ */
.viaje{position:absolute;inset:0;z-index:5;opacity:0;visibility:hidden;pointer-events:none}
.viaje__video,.viaje__fin{position:absolute;inset:0;width:100%;height:100%}
.viaje__video{max-width:none;object-fit:cover;object-position:50% var(--ancla-y,50%);background:var(--bosque);opacity:0}
.viaje__fin{opacity:0;overflow:hidden;background:var(--bosque)}
.viaje__fin-img{position:absolute;inset:0;width:100%;height:100%;max-width:none;object-fit:cover;object-position:50% var(--ancla-y,50%)}

/* el fogonazo dorado al llegar a la carta */
.viaje__destello{
  position:absolute;
  inset:0;
  opacity:0;
  background:radial-gradient(circle at var(--foco-x,50%) var(--foco-y,46%),#FFFDF2 0%,#F7E3A6 18%,rgba(217,177,90,.85) 40%,rgba(184,20,47,.5) 66%,rgba(6,36,26,.2) 100%);
}

/* placas: verde tapete translúcido con filete dorado (legibles sobre el video) */
.viaje__texto{
  position:absolute;
  left:6%;
  right:6%;
  bottom:calc(var(--abajo) + 11%);
  z-index:3;
  margin:0;
  padding:13px 18px 15px;
  border-radius:20px;
  text-align:center;
  text-wrap:balance;
  background:rgba(6,36,26,.84);
  box-shadow:inset 0 0 0 1px rgba(240,213,140,.7);
  font-family:var(--fat);
  font-size:clamp(24px,6.600vw,36px);
  line-height:1.18;
  color:var(--hueso);
  opacity:0;
}
.viaje__final{
  position:absolute;
  left:6%;
  right:6%;
  bottom:calc(var(--abajo) + clamp(10px,2.400vh,28px));
  z-index:3;
  padding:6px 16px 16px;
  border-radius:22px;
  text-align:center;
  background:rgba(6,36,26,.86);
  box-shadow:inset 0 0 0 1px rgba(240,213,140,.7);
  opacity:0;
}
.viaje__placa{margin:0}
.viaje__nombre{display:block;font-family:var(--firma);font-size:clamp(44px,min(17vw,calc((var(--m-pie,200px) - 84px) * .9)),88px);line-height:1.08;color:var(--hueso);text-shadow:0 2px 0 var(--carmesi),0 4px 0 var(--carmesi-osc)}
.viaje__invita{display:block;font-family:var(--cond);font-size:clamp(13px,3.700vw,16px);font-weight:600;line-height:1.5;letter-spacing:.24em;text-transform:uppercase;color:var(--hueso)}
.viaje__invita b{color:var(--oro-claro)}

html.horizontal .viaje__texto{
  left:0;
  right:0;
  width:fit-content;
  max-width:88vw;
  margin:0 auto;
  bottom:calc(var(--abajo) + 7%);
  padding:12px 34px 15px;
  font-size:clamp(26px,3vw,44px);
}
html.horizontal .viaje__final{inset:0;padding:0;border-radius:0;background:none;box-shadow:none}
html.horizontal .viaje__placa{
  position:absolute;
  top:var(--m-mid,50vh);
  transform:translateY(-50%);
  width:min(27vw,440px,calc(var(--m-left,38vw) - 3vw - 12px));
  padding:14px 22px 20px;
  border-radius:22px;
  background:rgba(6,36,26,.9);
  box-shadow:inset 0 0 0 1px rgba(240,213,140,.7);
  text-align:center;
}
html.horizontal .viaje__placa--nombre{right:calc(100% - var(--m-left,38vw) + 3vw)}
html.horizontal .viaje__placa--invita{left:calc(var(--m-right,62vw) + 3vw)}
html.horizontal .viaje__nombre{font-size:clamp(50px,6vw,112px);white-space:nowrap}
html.horizontal .viaje__invita{font-size:clamp(13px,1.150vw,17px);line-height:1.8}
html.horizontal .viaje__invita b{display:block;font-family:var(--fat);font-weight:400;font-size:2.600em;letter-spacing:.02em;text-transform:none;line-height:1.15;margin-top:4px;color:var(--oro-claro)}

/* ------------------------------------------------------------------
   BOTONES FIJOS · volver y música
   ------------------------------------------------------------------ */
.volver-fijo{
  position:fixed;
  top:calc(var(--arriba) + 12px);
  left:calc(var(--izq) + 12px);
  z-index:70;
  display:inline-flex;
  align-items:center;
  gap:6px;
  min-height:44px;
  padding:0 18px 0 12px;
  border-radius:999px;
  border:1px solid rgba(240,213,140,.65);
  background:rgba(6,36,26,.88);
  color:var(--hueso);
  font-family:var(--cond);
  font-weight:700;
  font-size:13.500px;
  letter-spacing:.2em;
  text-transform:uppercase;
  cursor:pointer;
  transition:background-color .35s ease,color .35s ease,border-color .35s ease,opacity .4s ease,visibility 0s;
}
.volver-fijo svg{width:16px;height:16px}
.volver-fijo:hover,.volver-fijo:focus-visible{background:var(--hueso);border-color:var(--hueso);color:var(--tinta)}
body.cerrado .volver-fijo{opacity:0;visibility:hidden;pointer-events:none;transition:opacity .3s ease,visibility 0s linear .3s}

.musica-flotante{
  position:fixed;
  right:calc(var(--der) + 14px);
  bottom:calc(var(--abajo) + 14px);
  z-index:70;
  display:inline-flex;
  align-items:center;
  gap:10px;
  min-height:54px;
  padding:6px 17px 6px 7px;
  border-radius:999px;
  border:1px solid rgba(240,213,140,.75);
  background:rgba(6,36,26,.92);
  color:var(--oro-claro);
  cursor:pointer;
  opacity:0;
  visibility:hidden;
  transform:translateY(12px);
  transition:opacity .4s ease,visibility 0s linear .4s,transform .4s ease,background-color .35s ease,border-color .35s ease;
}
html.musica .musica-flotante{opacity:1;visibility:visible;transform:none;transition:opacity .4s ease,visibility 0s,transform .4s ease,background-color .35s ease,border-color .35s ease}
/* durante el recorrido las placas van abajo: el botón se aparta y vuelve al terminar */
html.musica.viajando .musica-flotante{opacity:0;visibility:hidden;pointer-events:none;transition:opacity .3s ease,visibility 0s linear .3s}
.musica-flotante:hover,.musica-flotante:focus-visible{background:var(--tapete);border-color:var(--hueso)}
.musica-flotante__ficha{
  position:relative;
  display:block;
  width:40px;
  height:40px;
  border-radius:50%;
  background:
    radial-gradient(circle,var(--hueso) 0 41%,rgba(251,246,233,0) 43%),
    repeating-conic-gradient(from -11.250deg,var(--hueso) 0 22.500deg,var(--carmesi) 22.500deg 45deg);
  box-shadow:0 0 0 1px rgba(240,213,140,.7);
  animation:girar 5s linear infinite paused;
}
.musica-flotante__ficha i{position:absolute;inset:31%;border-radius:50%;background:var(--carmesi)}
.musica-flotante--tocando .musica-flotante__ficha{animation-play-state:running}
@keyframes girar{to{transform:rotate(360deg)}}
.musica-flotante__ondas{display:inline-flex;align-items:flex-end;gap:3px;height:18px}
.musica-flotante__ondas i{display:block;width:3px;height:18px;border-radius:2px;background:currentColor;transform:scaleY(.34);transform-origin:50% 100%}
.musica-flotante--tocando .musica-flotante__ondas i{animation:onda-sonido .9s ease-in-out infinite}
.musica-flotante--tocando .musica-flotante__ondas i:nth-child(2){animation-delay:.15s}
.musica-flotante--tocando .musica-flotante__ondas i:nth-child(3){animation-delay:.3s}
.musica-flotante--tocando .musica-flotante__ondas i:nth-child(4){animation-delay:.45s}
@keyframes onda-sonido{0%,100%{transform:scaleY(.34)}50%{transform:scaleY(1)}}
.musica-flotante:not(.musica-flotante--tocando){color:rgba(240,213,140,.7)}
/* de vuelta en la portada el llamado a tocar va abajo: el botón sube a la esquina y se queda en la ficha */
body.cerrado .musica-flotante{top:calc(var(--arriba) + 10px);bottom:auto;right:calc(var(--der) + 10px);min-height:50px;padding:4px;gap:0}
body.cerrado .musica-flotante__ondas{display:none}

/* ------------------------------------------------------------------
   CUERPO · piezas comunes
   ------------------------------------------------------------------ */
.casino{position:relative;z-index:1;opacity:0;transition:opacity .7s ease}
body.abierto .casino{opacity:1}
/* con la portada cerrada, lo de detrás no recibe el foco del teclado ni lo leen los lectores de pantalla
   (el reproductor de la canción sigue "visible": ya suena mientras la portada vuelve a estar delante) */
body.cerrado .casino{visibility:hidden}
body.cerrado .casino .yt-oculto{visibility:visible}
section{position:relative;overflow:hidden;padding:86px var(--pad) 82px}

.cabeza{position:relative;z-index:1;text-align:center}
.palo{display:inline-block;width:1em;height:1em;color:currentColor;flex:0 0 auto}
.palo--cabeza{display:block;width:26px;height:26px;margin:0 auto 12px;color:var(--hueso)}
.palo--cabeza.palo--rojo{color:var(--carmesi-vivo)}
.palo--cabeza.palo--claro{color:var(--oro-claro)}
.rotulo{
  margin:0 0 10px;
  font-family:var(--cond);
  font-weight:600;
  font-size:14.500px;
  line-height:1.5;
  letter-spacing:.32em;
  text-transform:uppercase;
  color:var(--oro-claro);
  text-align:center;
}
.rotulo--chico{margin-top:50px}
.titulo{
  margin:0 auto;
  max-width:11.500em;
  font-family:var(--fat);
  font-weight:400;
  font-size:clamp(40px,11.400vw,58px);
  line-height:1.06;
  color:var(--hueso);
  text-align:center;
  text-wrap:balance;
}
.titulo em{font-style:normal;color:var(--oro-claro)}
.pal{display:inline-block}
.cifra{font-family:var(--fat);font-weight:400;font-variant-numeric:lining-nums}

/* bombillas de marquesina: un punto apagado y, encima, su luz. Se encienden en cadena (casino.js) y,
   en los letreros, corren de tres en tres mientras están a la vista (solo cambia la opacidad, a saltos) */
.bombillas{position:absolute;inset:-9px;pointer-events:none}
.bombilla{
  position:absolute;
  width:8px;
  height:8px;
  margin:-4px 0 0 -4px;
  border-radius:50%;
  background:#6E5A27;
  box-shadow:inset 0 0 0 1px rgba(240,213,140,.45);
}
.bombilla::after{
  content:'';
  position:absolute;
  inset:-7px;
  border-radius:50%;
  background:radial-gradient(circle,#FFFDF2 0 18%,#F7DC8A 31%,rgba(240,200,105,.5) 46%,rgba(240,200,105,0) 70%);
  opacity:0;
  transition:opacity .26s ease var(--r,0ms);
}
.bombilla.on::after{opacity:1}
.bombillas--corre.viva .bombilla.on::after{animation:correr 1.350s steps(1,end) infinite;animation-delay:calc(var(--f,0) * -.450s)}
@keyframes correr{0%{opacity:1}66.600%{opacity:.26}}
/* la ristra bajo los títulos: una guirnalda de bombillas colgada de su cable */
.ristra{position:relative;width:min(64vw,230px);height:26px;margin:14px auto 0}
.ristra__cable{position:absolute;inset:0;width:100%;height:100%;overflow:visible}
.ristra__cable path{fill:none;stroke:rgba(240,213,140,.55);stroke-width:1}
.ristra .bombilla{width:7px;height:7px;margin:-3.500px 0 0 -3.500px}

html.js .revela{opacity:0;transform:translateY(16px);transition:opacity .75s ease,transform .9s cubic-bezier(.2,.7,.2,1)}
html.js .revela.vista{opacity:1;transform:none}

.boton{
  display:inline-flex;
  align-items:center;
  justify-content:center;
  gap:10px;
  min-height:54px;
  padding:0 30px;
  border-radius:999px;
  border:1px solid var(--oro-claro);
  background:transparent;
  color:var(--oro-claro);
  font-family:var(--cond);
  font-weight:700;
  font-size:15px;
  letter-spacing:.2em;
  text-transform:uppercase;
  text-decoration:none;
  cursor:pointer;
  transition:background-color .35s ease,color .35s ease,border-color .35s ease;
}
.boton svg{width:20px;height:20px;flex:0 0 auto}
.boton:hover,.boton:focus-visible{background:var(--oro-claro);border-color:var(--oro-claro);color:var(--tinta)}
.boton--claro{border-color:var(--hueso);color:var(--hueso)}
.boton--claro:hover,.boton--claro:focus-visible{background:var(--hueso);border-color:var(--hueso);color:var(--tinta)}
.boton--oro{background:var(--oro-claro);border-color:var(--oro-claro);color:var(--tinta)}
.boton--oro:hover,.boton--oro:focus-visible{background:var(--hueso);border-color:var(--hueso);color:var(--tinta)}
.boton--wa{background:var(--carmesi);border-color:var(--carmesi);color:var(--hueso);box-shadow:none}
.boton--wa:hover,.boton--wa:focus-visible{background:var(--hueso);border-color:var(--hueso);color:var(--tinta);box-shadow:none}
.boton:disabled{opacity:.55;cursor:default;pointer-events:none}

/* EL NAIPE · una carta que se voltea en 3D. El giro va en .naipe__giro (preserve-3d: nunca lleva opacidad,
   filtros ni overflow); las dos caras ocultan su reverso y el dorso va girado con rotateY(180deg). */
.naipe{position:relative;display:block;perspective:1100px;--r:14px}
.naipe__giro{
  position:relative;
  display:block;
  width:100%;
  height:100%;
  transform-style:preserve-3d;
  transition:transform .85s cubic-bezier(.3,.75,.25,1);
}
.naipe--tapada .naipe__giro{transform:rotateY(180deg)}
.naipe__cara{
  position:absolute;
  inset:0;
  display:block;
  border-radius:var(--r);
  overflow:hidden;
  -webkit-backface-visibility:hidden;
  backface-visibility:hidden;
  box-shadow:0 18px 30px -18px rgba(3,18,13,.85);
}
.naipe__frente{background:var(--hueso);transform:rotateY(0deg);box-shadow:inset 0 0 0 1px #D5C59E,0 18px 30px -18px rgba(3,18,13,.85)}
.naipe__dorso{
  transform:rotateY(180deg);
  background:
    repeating-linear-gradient(45deg,rgba(246,238,220,.2) 0 1.500px,rgba(246,238,220,0) 1.500px 11px),
    repeating-linear-gradient(-45deg,rgba(246,238,220,.2) 0 1.500px,rgba(246,238,220,0) 1.500px 11px),
    var(--carmesi);
  box-shadow:inset 0 0 0 6px var(--hueso),inset 0 0 0 7.500px var(--oro),0 18px 30px -18px rgba(3,18,13,.85);
}
.naipe__dorso::after{
  content:'18';
  position:absolute;
  left:50%;
  top:50%;
  width:2.300em;
  height:2.300em;
  margin:-1.150em 0 0 -1.150em;
  display:flex;
  align-items:center;
  justify-content:center;
  border-radius:50%;
  background:var(--hueso);
  box-shadow:0 0 0 1.500px var(--oro);
  font-family:var(--fat);
  font-size:20px;
  line-height:1;
  color:var(--carmesi);
}
.naipe__ventana{position:absolute;inset:6.500%;border-radius:calc(var(--r) * .6);overflow:hidden;background:var(--marfil-2)}
.naipe__ventana img{width:100%;height:100%;max-width:none;object-fit:cover;transition:transform .7s cubic-bezier(.2,.7,.2,1)}
.naipe__indice{
  position:absolute;
  left:0;
  top:0;
  z-index:2;
  display:flex;
  flex-direction:column;
  align-items:center;
  gap:3px;
  min-width:2.050em;
  padding:6px 5px 8px;
  border-radius:var(--r) 0 12px 0;
  background:var(--hueso);
  font-family:var(--fat);
  font-size:22px;
  line-height:1;
  color:var(--carmesi);
}
.naipe__indice b{font-weight:400}
.naipe__indice .palo{width:.680em;height:.680em}
.naipe__indice--abajo{left:auto;top:auto;right:0;bottom:0;rotate:180deg}
.naipe--negro .naipe__indice{color:var(--tinta)}

/* LA FICHA · un disco con ocho insertos en el canto */
.ficha{
  --c:var(--carmesi);
  --i:var(--hueso);
  --d:64px;
  position:relative;
  display:flex;
  align-items:center;
  justify-content:center;
  flex:0 0 auto;
  width:var(--d);
  height:var(--d);
  border-radius:50%;
  background:
    radial-gradient(circle,var(--hueso) 0 46%,rgba(251,246,233,0) 47.500%),
    repeating-conic-gradient(from -11.250deg,var(--i) 0 22.500deg,var(--c) 22.500deg 45deg);
  box-shadow:0 0 0 1px rgba(3,18,13,.4),0 10px 16px -8px rgba(3,18,13,.8);
  color:var(--c);
}
.ficha::before{content:'';position:absolute;inset:21%;border-radius:50%;border:1.500px dashed currentColor;opacity:.55}
.ficha .palo{position:relative;width:34%;height:34%}
.ficha b{position:relative;font-family:var(--fat);font-weight:400;font-size:calc(var(--d) * .36);line-height:1}
.ficha--tinta{--c:var(--tinta);--i:var(--oro)}
.ficha--oro{--c:#C99A3A;--i:var(--hueso)}
.ficha--verde{--c:#0F5A3E;--i:var(--hueso)}
.ficha--negro{--c:#15201B;--i:var(--hueso)}
.ficha--blanco{--c:var(--hueso);--i:var(--oro);color:var(--oro-osc)}
.ficha--carmesi .palo,.ficha--oro .palo{color:var(--carmesi)}
.ficha--tinta .palo,.ficha--verde .palo{color:var(--tinta)}
.ficha--18{--d:78px}

/* ------------------------------------------------------------------
   JOAQUÍN
   ------------------------------------------------------------------ */
.joaquin{
  padding:calc(var(--arriba) + 86px) var(--pad) 78px;
  background:var(--grano),
    radial-gradient(ellipse 96% 42% at 50% 0%,rgba(240,213,140,.22) 0%,rgba(240,213,140,0) 70%),
    radial-gradient(ellipse 90% 40% at 50% 26%,rgba(27,122,85,.5) 0%,rgba(27,122,85,0) 72%),
    linear-gradient(180deg,var(--tapete-osc) 0%,var(--bosque) 100%);
}
.joaquin__dentro{position:relative;z-index:1;display:grid;gap:26px;justify-items:center;max-width:1080px;margin:0 auto}
.retrato{position:relative;width:min(70vw,290px);margin:0}
.naipe--grande{aspect-ratio:5/7;rotate:-3deg;--r:20px}
.naipe--grande .naipe__indice{font-size:34px;min-width:1.900em;padding:9px 7px 11px;border-radius:var(--r) 0 16px 0}
.naipe--grande .naipe__ventana img{object-position:50% 18%}
.naipe--grande .naipe__dorso::after{font-size:38px}
.retrato__ficha{position:absolute;right:-16px;bottom:-14px;z-index:2;--d:86px}
.joaquin__texto{position:relative;text-align:center;max-width:560px}
.joaquin__nombre{
  margin:0;
  font-family:var(--firma);
  font-weight:400;
  font-size:clamp(92px,28vw,140px);
  line-height:1.02;
  color:var(--hueso);
  text-shadow:0 2px 0 var(--carmesi),0 5px 0 var(--carmesi-osc),0 14px 26px rgba(3,18,13,.5);
}
.joaquin__edad{
  display:flex;
  align-items:center;
  justify-content:center;
  gap:13px;
  margin:2px 0 0;
  font-family:var(--cond);
  font-weight:600;
  font-size:15px;
  line-height:1;
  letter-spacing:.44em;
  text-transform:uppercase;
  color:var(--oro-claro);
}
.joaquin__edad span:first-child{margin-left:.44em}
.joaquin__edad b{font-size:66px;line-height:1;letter-spacing:0;color:var(--hueso)}
.joaquin__fecha{margin:22px 0 0;font-family:var(--fat);font-size:clamp(20px,5.600vw,25px);line-height:1.3;color:var(--hueso)}
.joaquin__fecha b{display:inline-block;margin-top:8px;font-family:var(--cond);font-weight:600;font-size:15px;letter-spacing:.26em;text-transform:uppercase;color:var(--oro-claro)}
.joaquin__mensaje{margin:22px auto 0;max-width:31em;color:var(--texto-suave);text-wrap:pretty}

/* ------------------------------------------------------------------
   LA FECHA · el cartel de la noche y la cuenta en cartas
   ------------------------------------------------------------------ */
.fecha-sec{
  min-height:100svh;
  display:flex;
  flex-direction:column;
  align-items:center;
  justify-content:center;
  padding:96px var(--pad) 90px;
  background:var(--grano),
    radial-gradient(ellipse 100% 46% at 50% 44%,rgba(27,122,85,.55) 0%,rgba(27,122,85,0) 72%),
    linear-gradient(180deg,var(--bosque) 0%,var(--tapete-osc) 52%,var(--bosque-2) 100%);
}
.fecha-sec__dentro{position:relative;z-index:2;width:100%;max-width:660px;text-align:center}
.cartel{
  position:relative;
  display:flex;
  flex-direction:column;
  align-items:center;
  justify-content:center;
  width:min(82vw,320px);
  margin:34px auto 30px;
  padding:26px 16px 36px;
  border-radius:30px;
  background:linear-gradient(180deg,#9A1730 0%,var(--carmesi-osc) 100%);
  box-shadow:inset 0 0 0 2px rgba(240,213,140,.9),inset 0 0 0 9px rgba(78,10,23,.6),inset 0 0 0 10px rgba(240,213,140,.4),0 34px 50px -34px rgba(3,18,13,.95);
}
.cartel .bombillas{inset:-12px}
.cartel__dia{font-family:var(--cond);font-weight:700;font-size:16px;line-height:1.4;letter-spacing:.44em;text-transform:uppercase;color:var(--oro-claro);margin-left:.44em}
.cartel__num{font-size:clamp(124px,37vw,152px);line-height:.92;color:var(--hueso);text-shadow:0 3px 0 #5C0D1C,0 7px 0 rgba(3,18,13,.3)}
.cartel__mes{font-family:var(--fat);font-size:clamp(19px,5.400vw,23px);line-height:1.2;color:var(--hueso)}
/* la hora: placa centrada con márgenes (sin translate: GSAP anima su entrada) sobre el borde de abajo del cartel */
.cartel__hora{position:absolute;left:0;right:0;bottom:-17px;width:fit-content;margin:0 auto;padding:8px 18px 9px;border-radius:999px;background:var(--hueso);color:var(--tinta);font-family:var(--cond);font-weight:700;font-size:15px;line-height:1.3;letter-spacing:.14em;text-transform:uppercase;white-space:nowrap;box-shadow:0 0 0 2px var(--oro)}
.cuenta{display:flex;justify-content:center;align-items:flex-start;gap:clamp(8px,2.600vw,16px)}
.cuenta__dato{display:flex;flex-direction:column;align-items:center;gap:8px}
.reloj{width:clamp(66px,19.500vw,96px);aspect-ratio:5/6.200;--r:12px}
.reloj .naipe__giro{transition-duration:.55s}
.reloj__cara{
  display:flex;
  align-items:center;
  justify-content:center;
  background:var(--hueso);
  color:var(--tinta);
  box-shadow:inset 0 0 0 1px #D5C59E,inset 0 0 0 4px var(--hueso),inset 0 0 0 5px rgba(217,177,90,.7),0 16px 24px -16px rgba(3,18,13,.9);
  transform:rotateY(0deg);
}
.reloj__cara--b{transform:rotateY(180deg)}
.reloj--rojo .reloj__cara{color:var(--carmesi)}
.reloj__cara .palo{position:absolute;left:9px;top:9px;width:11px;height:11px}
.cuenta__n{font-family:var(--fat);font-weight:400;font-size:clamp(30px,9.200vw,46px);line-height:1;font-variant-numeric:lining-nums}
.cuenta__n--largo{font-size:clamp(25px,7.600vw,39px)}
.cuenta__t{font-family:var(--cond);font-weight:600;font-size:13px;line-height:1.3;letter-spacing:.22em;text-transform:uppercase;color:var(--oro-claro)}
.cuenta__hoy{margin:12px 0 0;font-family:var(--fat);font-size:40px;line-height:1.1;color:var(--hueso)}

/* ------------------------------------------------------------------
   DE BEBÉ A LOS 18 · una mano de cartas
   ------------------------------------------------------------------ */
.galeria-sec{
  background:var(--grano),
    radial-gradient(ellipse 110% 50% at 50% 56%,rgba(27,122,85,.55) 0%,rgba(27,122,85,0) 72%),
    linear-gradient(180deg,var(--bosque-2) 0%,var(--tapete) 46%,var(--tapete-osc) 100%);
}
.galeria__guia{position:relative;z-index:1;display:flex;align-items:center;justify-content:center;gap:8px;margin:18px 0 0;font-size:14.500px;color:var(--texto-suave)}
.guia__mano{width:22px;height:22px;color:var(--oro-claro)}
.a-la-vista .guia__mano{animation:deslizar 2.200s ease-in-out infinite}
@keyframes deslizar{0%,100%{transform:translateX(6px)}50%{transform:translateX(-8px) rotate(-8deg)}}
.galeria{
  position:relative;
  z-index:1;
  display:flex;
  gap:18px;
  overflow-x:auto;
  overflow-y:hidden;
  scroll-snap-type:x mandatory;
  padding:16px 14vw 18px;
  margin:6px calc(-1 * var(--pad)) 0;
  scrollbar-width:none;
}
.galeria::-webkit-scrollbar{display:none}
.foto{position:relative;flex:0 0 72vw;max-width:310px;margin:0;scroll-snap-align:center}
.foto .naipe{aspect-ratio:5/7;--r:16px}
.foto .naipe__indice{font-size:26px}
.foto .naipe__dorso::after{font-size:30px}
.foto figcaption{margin-top:14px;text-align:center;font-weight:500;font-size:16px;line-height:1.4;color:var(--texto);transition:color .35s ease,opacity .45s ease}
.foto figcaption b{display:block;font-family:var(--cond);font-weight:600;font-size:14.500px;letter-spacing:.3em;color:var(--oro-claro)}
.puntos{position:relative;z-index:1;display:flex;justify-content:center;margin-top:4px}
.punto{position:relative;flex:0 1 44px;min-width:34px;height:44px;padding:0;border:0;background:transparent;cursor:pointer}
.punto::before{content:'';position:absolute;left:50%;top:50%;width:9px;height:9px;margin:-4.500px 0 0 -4.500px;rotate:45deg;border:1px solid var(--oro-claro);transition:background-color .35s ease}
.punto--activo::before{background:var(--oro-claro)}

/* ------------------------------------------------------------------
   MI MESA · las fichas de los suyos alrededor del tapete
   ------------------------------------------------------------------ */
.gente{background:var(--grano),linear-gradient(180deg,var(--tapete-osc) 0%,var(--bosque) 100%)}
.gente__intro{position:relative;z-index:1;margin:16px auto 0;max-width:25em;text-align:center;color:var(--texto-suave);text-wrap:balance}
.mesa{position:relative;width:min(100%,430px);aspect-ratio:360/400;margin:14px auto 0}
.mesa__svg{position:absolute;inset:0;width:100%;height:100%;overflow:visible}
.mesa__baranda{fill:#5C0D1C;stroke:rgba(240,213,140,.5);stroke-width:1}
.mesa__tapete{fill:var(--tapete-2);stroke:rgba(3,18,13,.45);stroke-width:2}
.mesa__linea{fill:none;stroke:var(--oro);stroke-opacity:.7;stroke-width:1.400;stroke-dasharray:1.500 7;stroke-linecap:round}
.hilo{fill:none;stroke:var(--oro-claro);stroke-width:1.600;stroke-linecap:round}
.mesa__centro{position:absolute;left:50%;top:50%;width:0;height:0}
.mesa__centro .ficha{position:absolute;left:-39px;top:-39px}
/* cada persona: su ficha sobre la baranda y el nombre hacia afuera de la mesa (arriba, encima de la ficha;
   abajo, debajo), así los hilos nunca cruzan el texto. El centro de la ficha cae al 29 % o al 71 % del alto. */
.persona{position:absolute;width:41.200%;display:flex;flex-direction:column;align-items:center;text-align:center}
.persona--a,.persona--b{bottom:calc(71% - 32px)}
.persona--c,.persona--d{top:calc(71% - 32px)}
.persona--a,.persona--c{left:0}
.persona--b,.persona--d{right:0}
.persona h3{margin:8px 0 0;font-family:var(--cond);font-weight:600;font-size:13px;line-height:1.4;letter-spacing:.22em;text-transform:uppercase;color:var(--oro-claro)}
.persona p{margin:0;font-family:var(--fat);font-size:clamp(21px,5.800vw,26px);line-height:1.12;color:var(--hueso)}
.persona--a .ficha,.persona--b .ficha{order:3}
.persona--a h3,.persona--b h3{order:1;margin:0}
.persona--a p,.persona--b p{order:2;margin:0 0 9px}

/* ------------------------------------------------------------------
   EL PROGRAMA · escalera real: cinco cartas, cinco momentos
   ------------------------------------------------------------------ */
.programa{background:var(--grano),linear-gradient(180deg,var(--bosque) 0%,var(--tapete-osc) 50%,var(--bosque-2) 100%)}
.programa__intro{position:relative;z-index:1;margin:16px auto 0;max-width:25em;text-align:center;color:var(--texto-suave);text-wrap:balance}
.mano{position:relative;z-index:1;list-style:none;max-width:560px;margin:38px auto 0;padding:0}
.mano::before{content:'';position:absolute;left:39px;top:20px;bottom:60px;width:0;border-left:1.500px dashed rgba(240,213,140,.4)}
.jugada{position:relative;display:grid;grid-template-columns:80px 1fr;column-gap:18px;align-content:center;padding:0 0 30px}
.jugada:last-child{padding-bottom:0}
.naipe--mini{grid-row:1 / span 3;width:80px;height:112px;--r:9px;align-self:start}
.naipe--mini .naipe__frente{display:flex;align-items:center;justify-content:center}
.naipe--mini .naipe__indice{font-size:17px;min-width:1.700em;padding:5px 3px 5px;gap:2px;background:transparent}
.naipe--mini .naipe__dorso{box-shadow:inset 0 0 0 4px var(--hueso),inset 0 0 0 5px var(--oro),0 14px 22px -14px rgba(3,18,13,.9)}
.naipe--mini .naipe__dorso::after{font-size:14px}
.jugada__ico{display:flex;align-items:center;justify-content:center;width:58px;height:58px;margin-top:20px}
.jugada__ico img{width:100%;height:100%;object-fit:contain}
.jugada__hora{align-self:end;font-family:var(--cond);font-weight:600;font-size:15px;line-height:1.4;letter-spacing:.16em;text-transform:uppercase;color:var(--oro-claro)}
.jugada__que{font-family:var(--fat);font-size:clamp(25px,7vw,31px);line-height:1.1;color:var(--hueso);text-wrap:balance}
.jugada__nota{font-size:15.500px;line-height:1.45;color:var(--texto-suave)}
html.js .jugada__hora,html.js .jugada__que,html.js .jugada__nota{opacity:.36;transition:opacity .7s ease .25s}
html.js .jugada--on .jugada__hora,html.js .jugada--on .jugada__que,html.js .jugada--on .jugada__nota{opacity:1}

/* ------------------------------------------------------------------
   DÓNDE · toda la tarjeta es el botón al mapa
   ------------------------------------------------------------------ */
.donde{
  background:var(--grano),
    radial-gradient(ellipse 96% 56% at 50% 62%,rgba(27,122,85,.55) 0%,rgba(27,122,85,0) 72%),
    linear-gradient(180deg,var(--bosque-2) 0%,var(--tapete) 100%);
}
.lugar{
  position:relative;
  z-index:1;
  display:flex;
  flex-direction:column;
  align-items:center;
  gap:2px;
  max-width:540px;
  margin:44px auto 14px;
  padding:34px 20px 30px;
  border-radius:28px;
  text-align:center;
  text-decoration:none;
  color:var(--texto);
  background:#07291D;
  box-shadow:inset 0 0 0 1.500px rgba(240,213,140,.85),inset 0 0 0 8px #06241A,inset 0 0 0 9px rgba(240,213,140,.36),0 30px 50px -30px rgba(3,18,13,.95);
  transition:background-color .4s ease;
}
.lugar .bombillas{inset:-12px}
.lugar > *:not(.bombillas){position:relative}
.lugar__pin{display:block;width:40px;height:40px;color:var(--oro-claro)}
.lugar__pin svg{display:block;width:100%;height:100%;fill:none;stroke:currentColor;stroke-width:1.700;stroke-linecap:round;stroke-linejoin:round}
.lugar__tipo{margin-top:6px;font-family:var(--cond);font-weight:600;font-size:13.500px;line-height:1.5;letter-spacing:.3em;text-transform:uppercase;color:var(--oro-claro)}
.lugar__nombre{display:block;font-family:var(--firma);font-size:clamp(64px,19vw,92px);line-height:1.04;color:var(--hueso);text-shadow:0 2px 0 var(--carmesi),0 4px 0 var(--carmesi-osc)}
.lugar__sub{margin-top:14px;font-family:var(--cond);font-weight:600;font-size:16px;line-height:1.3;letter-spacing:.3em;text-transform:uppercase;color:var(--hueso);margin-left:.3em}
.lugar__dir{margin-top:14px;font-size:16.500px;line-height:1.5;color:var(--texto)}
.lugar__hora{margin-top:8px;font-size:15.500px;line-height:1.5;color:var(--texto-suave)}
.lugar__hora b{color:var(--hueso)}
.lugar__ir{
  display:inline-flex;
  align-items:center;
  gap:9px;
  min-height:50px;
  margin-top:18px;
  padding:0 24px 0 18px;
  border-radius:999px;
  border:1px solid var(--oro-claro);
  color:var(--oro-claro);
  font-family:var(--cond);
  font-weight:700;
  font-size:14.500px;
  letter-spacing:.2em;
  text-transform:uppercase;
  transition:background-color .35s ease,color .35s ease,border-color .35s ease;
}
.lugar:hover,.lugar:focus-visible{background:#0C3D2B}
.lugar:hover .lugar__ir,.lugar:focus-visible .lugar__ir{background:var(--carmesi);border-color:var(--hueso);color:var(--hueso)}
@media (hover:none){
  .lugar__ir{background:var(--carmesi);border-color:var(--hueso);color:var(--hueso)}
}

/* ------------------------------------------------------------------
   CÓDIGO DE VESTIMENTA · sobre el marfil de la baraja
   ------------------------------------------------------------------ */
.vestir{
  padding:76px 16px 74px;
  color:var(--tinta);
  background:
    repeating-linear-gradient(45deg,rgba(14,74,51,.05) 0 1.500px,rgba(14,74,51,0) 1.500px 16px),
    repeating-linear-gradient(-45deg,rgba(14,74,51,.05) 0 1.500px,rgba(14,74,51,0) 1.500px 16px),
    var(--marfil);
}
.vestir__dentro{position:relative;z-index:1;max-width:620px;margin:0 auto;text-align:center}
.vestir .palo--cabeza.palo--rojo{color:var(--carmesi)}
.vestir .rotulo{color:var(--carmesi-osc)}
.vestir .titulo{font-size:clamp(58px,17.500vw,88px);color:var(--tinta)}
.vestir__texto{margin:16px auto 0;max-width:24em;color:var(--tinta);text-wrap:balance}
.vestir__texto b{color:var(--carmesi-osc)}
.atuendos{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:16px;max-width:400px;margin:28px auto 0}
.atuendo{margin:0;min-width:0;display:flex;flex-direction:column;align-items:center}
.naipe--atuendo{width:100%;aspect-ratio:3/4.300;--r:14px}
.naipe--atuendo .naipe__frente{display:flex;align-items:center;justify-content:center;background:#FFFDF6;color:var(--tinta);box-shadow:inset 0 0 0 1px #D5C59E,inset 0 0 0 5px #FFFDF6,inset 0 0 0 6px rgba(184,20,47,.4),0 18px 26px -18px rgba(12,42,30,.7)}
.naipe--atuendo .naipe__dorso{box-shadow:inset 0 0 0 6px var(--hueso),inset 0 0 0 7.500px var(--oro),0 18px 26px -18px rgba(12,42,30,.7)}
.naipe--atuendo .naipe__frente > img{height:84%;width:auto;max-width:82%;object-fit:contain}
.naipe--atuendo .naipe__indice{background:transparent;font-size:20px}
.atuendo figcaption{margin-top:12px;display:flex;flex-direction:column;align-items:center}
.atuendo figcaption b{font-family:var(--fat);font-weight:400;font-size:25px;line-height:1.1;color:var(--tinta)}
.atuendo figcaption span{font-size:15px;line-height:1.4;color:var(--tinta-suave);text-wrap:balance}
.tonos{display:flex;justify-content:center;gap:clamp(18px,7vw,40px);list-style:none;margin:30px auto 0;padding:0}
.tonos li{display:flex;flex-direction:column;align-items:center;gap:10px;min-width:0;font-family:var(--cond);font-weight:700;font-size:14px;line-height:1.3;letter-spacing:.2em;text-transform:uppercase;text-align:center;color:var(--tinta)}
/* las fichas de los colores: el centro va del color de la ficha (es la muestra) */
.tonos .ficha{
  --d:60px;
  background:
    radial-gradient(circle,var(--c) 0 46%,rgba(0,0,0,0) 47.500%),
    radial-gradient(circle,rgba(0,0,0,0) 0 49%,var(--hueso) 50% 53%,rgba(0,0,0,0) 54%),
    repeating-conic-gradient(from -11.250deg,var(--i) 0 22.500deg,var(--c) 22.500deg 45deg);
  box-shadow:0 0 0 1px rgba(12,42,30,.3),0 10px 14px -8px rgba(12,42,30,.7);
}
.tonos .ficha::before{display:none}
.vestir__reserva{display:flex;align-items:center;justify-content:center;gap:14px;margin:28px 0 0;font-family:var(--fat);font-size:20px;line-height:1.3;color:var(--carmesi-osc);text-align:left}
.vestir__reserva .ficha{--d:38px;box-shadow:0 0 0 1px rgba(12,42,30,.3)}
.vestir__reserva .ficha::before{display:none}

/* ------------------------------------------------------------------
   REGALOS · ideas en fichas y la lluvia de sobres
   ------------------------------------------------------------------ */
.regalos{background:var(--grano),linear-gradient(180deg,var(--tapete-osc) 0%,var(--bosque) 100%);text-align:center}
.regalos__intro{position:relative;z-index:1;margin:16px auto 0;max-width:30em;color:var(--texto-suave);text-wrap:pretty}
.regalos__lista{position:relative;z-index:1;display:grid;grid-template-columns:1fr 1fr;gap:28px 12px;max-width:520px;margin:34px auto 0;padding:0;list-style:none}
.regalo{display:flex;flex-direction:column;align-items:center;min-width:0}
.regalo__ficha{
  position:relative;
  display:flex;
  align-items:center;
  justify-content:center;
  width:112px;
  height:112px;
  border-radius:50%;
  color:var(--carmesi);
  background:
    radial-gradient(circle,var(--hueso) 0 58%,rgba(251,246,233,0) 59.500%),
    repeating-conic-gradient(from -11.250deg,var(--hueso) 0 22.500deg,var(--carmesi) 22.500deg 45deg);
  box-shadow:0 0 0 1px rgba(3,18,13,.4),0 0 0 5px var(--tapete-osc),0 0 0 6px rgba(240,213,140,.55),0 16px 22px -12px rgba(3,18,13,.9);
}
.regalo:nth-child(even) .regalo__ficha{color:var(--tinta);background:
    radial-gradient(circle,var(--hueso) 0 58%,rgba(251,246,233,0) 59.500%),
    repeating-conic-gradient(from -11.250deg,var(--oro) 0 22.500deg,var(--tinta) 22.500deg 45deg)}
.regalo__ficha img{width:58%;height:58%;object-fit:contain;transition:transform .5s cubic-bezier(.2,.7,.2,1)}
.regalo b{display:block;margin-top:14px;font-family:var(--fat);font-weight:400;font-size:21px;line-height:1.15;color:var(--hueso)}
.regalo small{display:block;margin-top:3px;font-size:14.500px;line-height:1.4;color:var(--texto-suave);text-wrap:balance}
.sobres{
  position:relative;
  z-index:1;
  max-width:540px;
  margin:48px auto 0;
  padding:34px 22px 30px;
  border-radius:30px;
  color:var(--tinta);
  background:linear-gradient(160deg,var(--hueso) 0%,var(--marfil) 60%,var(--marfil-2) 100%);
  box-shadow:inset 0 0 0 1px #FFFFFF,inset 0 0 0 8px var(--hueso),inset 0 0 0 9.500px rgba(184,20,47,.6),0 26px 50px -28px rgba(3,18,13,.95);
}
.sobres__ico{position:relative;display:flex;align-items:center;justify-content:center;width:84px;height:84px;margin:0 auto 6px;color:var(--carmesi)}
.sobres__ico img{width:100%;height:100%;object-fit:contain}
.sobres__titulo{position:relative;margin:0;font-family:var(--fat);font-weight:400;font-size:33px;line-height:1.1;color:var(--tinta)}
.sobres__texto{position:relative;margin:10px auto 0;max-width:25em;font-size:16px;color:var(--tinta-suave);text-wrap:balance}
.sobres__qr{position:relative;margin:22px auto 0;display:flex;flex-direction:column;align-items:center}
.naipe--qr{width:204px;height:204px;--r:18px}
.naipe--qr .naipe__frente{display:flex;align-items:center;justify-content:center;background:#FFFFFF;box-shadow:inset 0 0 0 1px #D5C59E,inset 0 0 0 5px #FFFFFF,inset 0 0 0 6px var(--carmesi),0 18px 26px -18px rgba(12,42,30,.75)}
.naipe--qr .naipe__frente img{width:84%;height:84%;object-fit:contain}
.naipe--qr .naipe__dorso{box-shadow:inset 0 0 0 6px var(--hueso),inset 0 0 0 7.500px var(--oro),0 18px 26px -18px rgba(12,42,30,.75)}
.naipe--qr .naipe__dorso::after{font-size:30px}
.sobres__qr figcaption{margin-top:16px;max-width:19em;font-size:14.500px;line-height:1.5;color:var(--tinta-suave);text-wrap:balance}

/* ------------------------------------------------------------------
   GIRA LA RULETA · sección única
   ------------------------------------------------------------------ */
.ruleta{
  background:var(--grano),
    radial-gradient(ellipse 100% 44% at 50% 34%,rgba(224,48,75,.34) 0%,rgba(224,48,75,0) 72%),
    linear-gradient(180deg,#6A1023 0%,var(--granate) 58%,#3A0811 100%);
}
.ruleta__intro{position:relative;z-index:1;margin:16px auto 0;max-width:30em;text-align:center;color:#F1DFD3;text-wrap:pretty}
.ruleta__cuerpo{position:relative;z-index:1;display:grid;gap:30px;max-width:1040px;margin:44px auto 0}
.ruleta__mesa{display:flex;flex-direction:column;align-items:center;gap:30px;min-width:0}
.rueda{position:relative;width:min(78vw,330px);aspect-ratio:1;border-radius:50%;cursor:pointer;-webkit-tap-highlight-color:transparent;touch-action:manipulation}
.rueda:focus-visible{outline:3px solid var(--hueso);outline-offset:18px}
.rueda__luces{inset:-15px}
.rueda__disco{position:absolute;inset:0;width:100%;height:100%;display:block;border-radius:50%;box-shadow:0 30px 44px -26px rgba(20,2,6,.95)}
.rueda__pista{position:absolute;inset:0;border-radius:50%;pointer-events:none}
.rueda__bolita{
  position:absolute;
  left:50%;
  top:var(--bt,4.600%);
  width:5.600%;
  height:5.600%;
  margin:-2.800% 0 0 -2.800%;
  border-radius:50%;
  background:radial-gradient(circle at 34% 30%,#FFFFFF 0%,var(--marfil) 42%,#B5A680 100%);
  box-shadow:0 2px 4px rgba(20,2,6,.6);
}
.rueda__flecha{
  position:absolute;
  left:50%;
  top:-13px;
  width:28px;
  height:32px;
  margin-left:-14px;
  background:linear-gradient(180deg,#F7E3A6 0%,var(--oro) 60%,var(--oro-osc) 100%);
  clip-path:polygon(0 0,100% 0,50% 100%);
  pointer-events:none;
}
.rueda-sector--rojo{fill:var(--carmesi)}
.rueda-sector--negro{fill:#0B2A1E}
.rueda-bolsa--rojo{fill:#8E1226}
.rueda-bolsa--negro{fill:#071E15}
.rueda-num{font-family:var(--fat);font-size:30px;fill:var(--hueso)}
.rueda-num--pleno{fill:var(--oro-claro)}
.ruleta__girar{min-width:230px}
.ruleta__lado{min-width:0}
.premio{width:100%;max-width:400px;height:158px;margin:0 auto;--r:20px}
.premio .naipe__giro{transition-duration:.7s}
.premio .naipe__frente{
  display:flex;
  flex-direction:column;
  align-items:center;
  justify-content:center;
  gap:4px;
  padding:14px 18px;
  text-align:center;
  color:var(--tinta);
  box-shadow:inset 0 0 0 1px #D5C59E,inset 0 0 0 6px var(--hueso),inset 0 0 0 7px rgba(184,20,47,.5),0 22px 30px -20px rgba(20,2,6,.9);
}
.premio .naipe__dorso{box-shadow:inset 0 0 0 6px var(--hueso),inset 0 0 0 7.500px var(--oro),0 22px 30px -20px rgba(20,2,6,.9)}
.premio .naipe__dorso::after{content:'?';font-size:34px}
.premio__rotulo{font-family:var(--cond);font-weight:600;font-size:13px;line-height:1.3;letter-spacing:.3em;text-transform:uppercase;color:var(--carmesi-osc)}
.premio__numero{display:flex;align-items:baseline;justify-content:center;gap:8px;font-family:var(--cond);font-weight:700;font-size:16px;line-height:1;letter-spacing:.2em;text-transform:uppercase;color:var(--carmesi)}
.premio__numero b{font-size:46px;letter-spacing:0}
.premio--negro .premio__numero{color:var(--tinta)}
.premio__texto{font-family:var(--fat);font-size:clamp(18px,5vw,21px);line-height:1.18;color:var(--tinta);text-wrap:balance}
.ruleta__estado{min-height:3em;margin:16px auto 14px;max-width:26em;font-size:15px;line-height:1.5;color:#F1DFD3;text-align:center;text-wrap:balance}
.pano{display:grid;grid-template-columns:1fr 1fr;gap:7px;list-style:none;margin:0 auto;padding:8px;max-width:520px;border-radius:20px;background:rgba(48,7,14,.5);box-shadow:inset 0 0 0 1px rgba(240,213,140,.4)}
.casilla{
  position:relative;
  display:grid;
  grid-template-columns:34px minmax(0,1fr);
  align-items:center;
  column-gap:9px;
  min-height:52px;
  padding:7px 9px 7px 7px;
  border-radius:13px;
  background:rgba(48,7,14,.78);
  box-shadow:inset 0 0 0 1px rgba(240,213,140,.26);
  transition:background-color .4s ease,color .4s ease;
}
.casilla b{display:flex;align-items:center;justify-content:center;width:34px;height:34px;border-radius:50%;font-family:var(--fat);font-weight:400;font-size:16px;line-height:1;color:var(--hueso);box-shadow:inset 0 0 0 1px rgba(240,213,140,.6)}
.casilla--rojo b{background:var(--carmesi)}
.casilla--negro b{background:#0B2A1E}
.casilla--pleno b{color:var(--oro-claro);box-shadow:inset 0 0 0 2px var(--oro-claro)}
.casilla span{font-size:14px;line-height:1.28;color:var(--texto);text-align:left;transition:color .4s ease}
.casilla--pleno,.casilla:last-child{grid-column:1 / -1}
.casilla--gana{background:var(--hueso);box-shadow:inset 0 0 0 2px var(--oro)}
.casilla--gana span{color:var(--tinta);font-weight:600}

/* ------------------------------------------------------------------
   CONFIRMAR · apostar: una ficha por persona
   ------------------------------------------------------------------ */
.confirmar{
  background:var(--grano),
    radial-gradient(ellipse 100% 52% at 50% 58%,rgba(36,144,102,.6) 0%,rgba(36,144,102,0) 72%),
    linear-gradient(180deg,#3A0811 0%,var(--tapete-osc) 9%,var(--tapete) 60%,var(--tapete-osc) 100%);
  text-align:center;
}
.confirmar__texto{position:relative;z-index:1;margin:18px auto 0;max-width:29em;color:var(--texto);text-wrap:pretty}
.confirmar__texto b{color:var(--hueso)}
.apuesta{position:relative;z-index:1;max-width:420px;margin:26px auto 0}
.pilas{
  position:relative;
  display:flex;
  align-items:flex-end;
  justify-content:center;
  gap:10px;
  height:106px;
  padding-bottom:20px;
}
.pilas::before{
  content:'';
  position:absolute;
  left:0;
  right:0;
  bottom:0;
  width:min(100%,300px);
  height:56px;
  margin:0 auto;
  border-radius:50%;
  border:1.500px dashed rgba(240,213,140,.65);
  background:rgba(6,36,26,.26);
}
.pila{position:relative;display:flex;flex-direction:column-reverse;align-items:center;width:58px}
.pila i{
  --c:var(--carmesi);
  --i:var(--hueso);
  position:relative;
  display:block;
  width:58px;
  height:14px;
  margin-top:-4px;
  border-radius:0 0 29px 29px/0 0 8px 8px;
  background:repeating-linear-gradient(90deg,var(--c) 0 10px,var(--i) 10px 16px);
  box-shadow:inset 0 -2px 0 rgba(3,18,13,.3),0 1.500px 0 rgba(3,18,13,.5);
}
.pila i:first-child{box-shadow:inset 0 -2px 0 rgba(3,18,13,.3),0 8px 10px -4px rgba(3,18,13,.8)}
.pila i:last-child::before{
  content:'';
  position:absolute;
  left:0;
  top:-9px;
  width:58px;
  height:18px;
  border-radius:50%;
  background:
    radial-gradient(ellipse at 50% 50%,var(--hueso) 0 44%,rgba(251,246,233,0) 46%),
    repeating-conic-gradient(from -11.250deg,var(--i) 0 22.500deg,var(--c) 22.500deg 45deg);
  box-shadow:0 0 0 1px rgba(3,18,13,.35);
}
.pila:nth-child(2) i{--c:var(--hueso);--i:var(--carmesi)}
.pila:nth-child(3) i{--c:#0C2A1E;--i:var(--oro)}
.pila:nth-child(4) i{--c:#C99A3A;--i:var(--hueso)}
.contador{display:flex;align-items:center;justify-content:center;gap:18px;margin:16px 0 0}
.contador__btn{
  display:flex;
  align-items:center;
  justify-content:center;
  width:52px;
  height:52px;
  padding:0;
  border:1px solid var(--oro-claro);
  border-radius:50%;
  background:rgba(6,36,26,.62);
  color:var(--oro-claro);
  cursor:pointer;
  -webkit-tap-highlight-color:transparent;
  transition:background-color .3s ease,color .3s ease,border-color .3s ease;
}
.contador__btn svg{width:20px;height:20px}
.contador__btn:focus-visible,.contador__btn:active{background:var(--oro-claro);border-color:var(--oro-claro);color:var(--tinta)}
@media (hover:hover){
  .contador__btn:hover{background:var(--oro-claro);border-color:var(--oro-claro);color:var(--tinta)}
}
.contador__btn:disabled{opacity:.35;cursor:default;pointer-events:none}
.contador__n{min-width:7.500em;font-size:16px;line-height:1.4;color:var(--texto)}
.contador__n b{display:block;font-size:60px;line-height:1;color:var(--hueso)}
.mi-reto{
  position:relative;
  z-index:1;
  display:flex;
  flex-direction:column;
  align-items:center;
  gap:2px;
  max-width:420px;
  margin:26px auto 26px;
  padding:14px 18px 6px;
  border-radius:20px;
  background:rgba(6,36,26,.62);
  box-shadow:inset 0 0 0 1px rgba(240,213,140,.5);
}
.mi-reto__rotulo{font-family:var(--cond);font-weight:600;font-size:13px;line-height:1.5;letter-spacing:.24em;text-transform:uppercase;color:var(--oro-claro)}
.mi-reto__texto{font-family:var(--fat);font-weight:400;font-size:20px;line-height:1.25;color:var(--hueso);overflow-wrap:anywhere;text-wrap:balance}
.mi-reto--vacio .mi-reto__texto{font-family:var(--sans);font-weight:500;font-size:16px;color:var(--texto-suave)}
.mi-reto__ir{
  display:inline-flex;
  align-items:center;
  min-height:44px;
  padding:0 4px;
  color:var(--oro-claro);
  font-family:var(--cond);
  font-weight:700;
  font-size:14px;
  letter-spacing:.2em;
  text-transform:uppercase;
  text-decoration:none;
  background:linear-gradient(currentColor,currentColor) no-repeat 0 calc(100% - 11px)/0 1px;
  transition:background-size .4s ease,color .3s ease;
}
.mi-reto__ir:hover,.mi-reto__ir:focus-visible{background-size:100% 1px;color:var(--hueso)}
.confirmar__accion{position:relative;z-index:1;margin:0}

/* ------------------------------------------------------------------
   MI CANCIÓN · la ficha es el botón
   ------------------------------------------------------------------ */
.cancion{background:var(--grano),linear-gradient(180deg,var(--tapete-osc) 0%,var(--bosque) 100%);text-align:center}
.cancion__artista{position:relative;z-index:1;margin:12px 0 0 .32em;font-family:var(--cond);font-weight:600;font-size:15px;line-height:1.5;letter-spacing:.32em;text-transform:uppercase;color:var(--oro-claro)}
.tocaficha{
  position:relative;
  z-index:1;
  display:block;
  width:min(66vw,250px);
  aspect-ratio:1;
  margin:34px auto 0;
  padding:0;
  border:0;
  border-radius:50%;
  background:transparent;
  cursor:pointer;
  -webkit-tap-highlight-color:transparent;
}
.tocaficha__luces{inset:-4%}
.tocaficha__ficha{
  position:absolute;
  inset:6%;
  border-radius:50%;
  background:
    radial-gradient(circle,var(--hueso) 0 52%,rgba(251,246,233,0) 53%),
    radial-gradient(circle,rgba(0,0,0,0) 0 57%,var(--hueso) 58% 59.500%,rgba(0,0,0,0) 60.500%),
    repeating-conic-gradient(from -11.250deg,var(--hueso) 0 22.500deg,var(--carmesi) 22.500deg 45deg);
  box-shadow:0 0 0 1px rgba(3,18,13,.5),0 26px 34px -20px rgba(3,18,13,.95);
  animation:girar 9s linear infinite paused;
}
.cancion.tocando.a-la-vista .tocaficha__ficha{animation-play-state:running}
.tocaficha__play{
  position:absolute;
  left:50%;
  top:50%;
  z-index:2;
  display:flex;
  align-items:center;
  justify-content:center;
  width:34%;
  height:34%;
  margin:-17% 0 0 -17%;
  border-radius:50%;
  background:var(--carmesi);
  color:var(--hueso);
  box-shadow:0 0 0 2px var(--oro);
  transition:background-color .35s ease,color .35s ease;
}
.tocaficha__play svg{width:44%;height:44%}
.tocaficha:hover .tocaficha__play,.tocaficha:focus-visible .tocaficha__play{background:var(--tinta);color:var(--oro-claro)}
.ico-pausa{display:none}
.cancion.tocando .ico-play{display:none}
.cancion.tocando .ico-pausa{display:block}
.cancion__pista{position:relative;z-index:1;margin:30px 0 0;font-size:15px;color:var(--texto-suave)}
.cancion__pista a{color:var(--oro-claro)}
.yt-oculto{position:absolute;width:1px;height:1px;overflow:hidden;opacity:0;pointer-events:none;left:-9999px}

/* ------------------------------------------------------------------
   CIERRE · nos vemos en la mesa
   ------------------------------------------------------------------ */
.cierre{
  min-height:100svh;
  display:flex;
  flex-direction:column;
  align-items:center;
  justify-content:center;
  padding:90px var(--pad) 96px;
  background:var(--grano),
    radial-gradient(ellipse 100% 48% at 50% 30%,rgba(27,122,85,.6) 0%,rgba(27,122,85,0) 72%),
    linear-gradient(180deg,var(--bosque) 0%,var(--tapete-osc) 50%,var(--bosque) 100%);
  text-align:center;
}
.cierre__dentro{position:relative;z-index:2;width:100%;max-width:660px}
.abanico{position:relative;width:200px;height:132px;margin:0 auto 26px}
.abanico__carta{
  position:absolute;
  left:50%;
  bottom:0;
  display:flex;
  flex-direction:column;
  align-items:flex-start;
  justify-content:flex-start;
  gap:3px;
  width:76px;
  height:106px;
  margin-left:-38px;
  padding:7px 0 0 8px;
  border-radius:9px;
  background:var(--hueso);
  box-shadow:inset 0 0 0 1px #D5C59E,-3px 10px 16px -10px rgba(3,18,13,.9);
  color:var(--tinta);
  font-family:var(--fat);
  font-size:21px;
  line-height:1;
  transform-origin:50% 130%;
  rotate:0deg;
  transition:rotate .9s cubic-bezier(.3,.8,.25,1);
}
.abanico__carta b{font-weight:400;min-width:.8em;text-align:center}
.abanico__carta .palo{width:13px;height:13px;margin-left:1px}
/* el palo grande del centro de la carta (solo se ve entero en la última del abanico) */
.abanico__carta .palo.abanico__centro{position:absolute;left:50%;top:50%;width:30px;height:30px;margin:-11px 0 0 -13px}
.abanico__carta--roja{color:var(--carmesi)}
.abanico--abierto .abanico__carta:nth-child(1){rotate:-27deg}
.abanico--abierto .abanico__carta:nth-child(2){rotate:-9deg}
.abanico--abierto .abanico__carta:nth-child(3){rotate:9deg}
.abanico--abierto .abanico__carta:nth-child(4){rotate:27deg}
.cierre__titulo{font-size:clamp(44px,12.800vw,82px)}
.cierre__texto{margin:22px auto 0;max-width:22em;font-size:19px;line-height:1.5;color:var(--texto);text-wrap:balance}
.cierre__con{margin:28px 0 0 .3em;font-family:var(--cond);font-weight:600;font-size:14.500px;line-height:1.5;letter-spacing:.3em;text-transform:uppercase;color:var(--oro-claro)}
.cierre__firma{margin:0;font-family:var(--firma);font-size:clamp(84px,25vw,132px);line-height:1.02;color:var(--hueso);text-shadow:0 2px 0 var(--carmesi),0 5px 0 var(--carmesi-osc)}
.cierre__accion{margin:26px 0 0}

/* ------------------------------------------------------------------
   CRÉDITOS · pie común
   ------------------------------------------------------------------ */
.creditos{
  position:relative;
  z-index:1;
  padding:56px 24px calc(var(--abajo) + 104px);
  text-align:center;
  background:#04180F;
  border-top:1px solid rgba(240,213,140,.3);
  color:var(--texto);
}
.creditos__pregunta{margin:0 0 18px;font-family:var(--fat);font-size:clamp(22px,6.200vw,28px);line-height:1.2;color:var(--hueso)}
.creditos__wa{
  display:inline-flex;
  align-items:center;
  gap:10px;
  min-height:52px;
  padding:0 26px;
  border-radius:999px;
  background:var(--oro-claro);
  color:var(--tinta);
  text-decoration:none;
  font-family:var(--cond);
  font-weight:700;
  font-size:15px;
  letter-spacing:.16em;
  text-transform:uppercase;
  box-shadow:none;
  transition:background-color .35s ease,color .35s ease;
}
.creditos__wa svg{width:20px;height:20px}
.creditos__wa:hover,.creditos__wa:focus-visible{background:var(--hueso);color:var(--tinta);box-shadow:none}
.creditos__correo{
  display:table;
  margin:20px auto 0;
  padding:12px 2px;
  color:var(--texto-suave);
  font-size:14.500px;
  text-decoration:none;
  background:linear-gradient(var(--oro-claro),var(--oro-claro)) no-repeat 0 calc(100% - 9px)/0 1px;
  transition:background-size .4s ease,color .35s ease;
}
.creditos__correo:hover,.creditos__correo:focus-visible{background-size:100% 1px;color:var(--hueso)}
.creditos__extras{display:none}
.creditos__marca{margin:28px auto 0;padding-top:20px;max-width:420px;border-top:1px solid rgba(240,213,140,.28);display:flex;flex-direction:column;gap:4px}
.creditos__logo{font-family:var(--fat);font-weight:400;font-size:21px;line-height:1.2;letter-spacing:.02em;color:var(--hueso)}
.creditos__lema{font-size:11px;font-weight:500;line-height:1.5;letter-spacing:.14em;text-transform:uppercase;color:var(--texto-suave)}

@media (max-width:340px){
  .portada__fecha{font-size:11.500px;padding:7px 12px 8px;gap:3px 7px}
  .portada__pista{letter-spacing:.08em;font-size:13.500px}
  .pano{grid-template-columns:minmax(0,1fr)}
}
/* celulares angostos: los botones no se parten en dos líneas */
@media (max-width:380px){
  .boton,.creditos__wa,.lugar__ir,.portada__pista{letter-spacing:.12em}
  .boton,.creditos__wa{padding:0 20px}
  .portada__pista{padding:0 20px 0 15px}
  .casilla span{font-size:13.500px}
  .pano{padding:6px;gap:6px}
}

/* ------------------------------------------------------------------
   HORIZONTAL (escritorio, celular echado): la portada en tres tercios
   (la marquesina con el nombre a la izquierda, el as y la mesa al centro
   y el llamado a la derecha)
   ------------------------------------------------------------------ */
html.horizontal .portada__cabecera{left:var(--izq);right:auto;top:0;width:calc(var(--lado,33vw) - var(--izq));height:var(--col-alto,100%);padding:0 0 0 2vw}
html.horizontal .portada__nombre{font-size:max(44px,min(calc(var(--lado,33vw) * .27),26vh,190px))}
html.horizontal .portada__sobre{font-size:clamp(13px,1.250vw,22px)}
html.horizontal .portada__sobre .palo{width:1em;height:1em}
html.horizontal .marquesina{padding:1.600vh 2.400vw 1.200vh}
html.horizontal .portada__tap{align-items:flex-end;justify-content:center;padding:0 var(--der) var(--pie,0px) 0}
html.horizontal .portada__llamado{width:calc(var(--lado,33vw) - var(--der));gap:18px;padding-right:2vw}
html.horizontal .portada__fecha{flex-direction:column;gap:0;border-radius:24px;padding:10px 26px 11px}
html.horizontal .portada__sep{display:none}
html.horizontal .portada__bruma{
  background:
    linear-gradient(90deg,rgba(6,36,26,.5) 0%,rgba(6,36,26,0) 34%),
    linear-gradient(270deg,rgba(6,36,26,.5) 0%,rgba(6,36,26,0) 34%);
}
/* ventanas horizontales angostas: la columna del llamado es estrecha */
@media (orientation:landscape) and (max-width:880px){
  .portada__pista{padding:0 18px 0 14px;font-size:13.500px;letter-spacing:.12em;gap:8px}
  html.horizontal .portada__fecha{padding:8px 16px 9px;font-size:14px}
}
/* tabletas en vertical: el llamado crece con la pantalla y va en una sola fila con la fecha (el escenario se
   recorta por abajo: así no pisa las fichas ni la baraja) */
@media (orientation:portrait) and (min-width:700px){
  .portada__llamado{flex-direction:row;gap:18px}
  .portada__pista{min-height:64px;padding:0 30px 0 24px;font-size:16.500px;gap:12px}
  .portada__pista .pista__mano{width:26px;height:26px}
  .portada__fecha{flex-direction:column;gap:0;min-height:64px;border-radius:32px;font-size:17px;padding:6px 26px 7px}
  .portada__sep{display:none}
  .portada__sobre{font-size:20px}
  .portada__sobre .palo{width:17px;height:17px}
  .marquesina{padding:18px 40px 12px;border-radius:30px}
}
@media (orientation:landscape) and (max-height:500px){
  .portada__pista{min-height:46px;padding:0 16px 0 12px;font-size:12.500px;letter-spacing:.1em;gap:7px}
  html.horizontal .portada__fecha{padding:6px 16px 7px;border-radius:18px;font-size:13px}
  html.horizontal .portada__llamado{gap:12px}
  html.horizontal .marquesina{padding:8px 16px 6px;border-radius:18px}
}

/* ------------------------------------------------------------------
   ESCRITORIO
   ------------------------------------------------------------------ */
@media (min-width:768px){
  :root{--pad:48px}
  body{font-size:18px}
  section{padding:108px var(--pad) 100px}
  .titulo{font-size:clamp(54px,5.600vw,84px)}
  .rotulo{font-size:15.500px}
  .palo--cabeza{width:30px;height:30px}
  .ristra{width:280px}

  .joaquin{padding:128px var(--pad) 104px}
  .joaquin__dentro{grid-template-columns:minmax(0,340px) minmax(0,1fr);gap:84px;align-items:center}
  .retrato{width:340px}
  .retrato__ficha{--d:100px;right:-26px;bottom:-20px}
  .joaquin__nombre{font-size:clamp(124px,13vw,196px)}
  .joaquin__edad b{font-size:84px}
  .joaquin__mensaje{font-size:18.500px}

  .fecha-sec{padding:120px var(--pad) 110px}
  .cartel{width:380px;padding:32px 24px 44px}
  .cartel__num{font-size:178px}
  .cartel__mes{font-size:26px}
  .cartel__hora{font-size:16.500px;bottom:-19px;padding:9px 22px 10px}
  .reloj{width:112px}
  .cuenta__n{font-size:54px}
  .cuenta__n--largo{font-size:46px}
  .reloj__cara .palo{left:11px;top:11px;width:13px;height:13px}
  .cuenta__t{font-size:14px}

  .galeria__guia,.puntos{display:none}
  .galeria{
    flex-wrap:wrap;
    justify-content:center;
    gap:44px 30px;
    overflow:visible;
    padding:10px 0 0;
    margin:44px auto 0;
    max-width:1100px;
  }
  .foto{flex:0 0 calc(25% - 23px);max-width:none}
  .foto:nth-child(odd) .naipe{rotate:-1.800deg}
  .foto:nth-child(even) .naipe{rotate:1.500deg}
  /* el cursor apaga a las otras cartas y agranda la FOTO de adentro (la caja nunca se mueve) */
  .galeria:has(.foto:hover) .foto:not(:hover) .naipe__cara,
  .galeria:has(.foto:hover) .foto:not(:hover) figcaption{opacity:.4}
  .foto .naipe__cara{transition:opacity .45s ease}
  .foto:hover .naipe__ventana img{transform:scale(1.07)}
  .foto:hover figcaption{color:var(--oro-claro)}

  .mesa{width:560px}
  .persona h3{font-size:14px}
  .persona p{font-size:31px}
  .persona--a,.persona--b{bottom:calc(71% - 37px)}
  .persona--c,.persona--d{top:calc(71% - 37px)}
  .persona .ficha{--d:74px}
  .mesa__centro .ficha{--d:92px;left:-46px;top:-46px}

  .mano{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:18px;max-width:1080px;margin-top:64px}
  .mano::before{display:none}
  .jugada{display:flex;flex-direction:column;align-items:center;padding:0;text-align:center}
  .naipe--mini{width:min(100%,128px);height:auto;aspect-ratio:5/7;margin-bottom:22px;--r:12px}
  .naipe--mini .naipe__indice{font-size:22px}
  .naipe--mini .naipe__dorso::after{font-size:20px}
  .jugada__ico{width:78px;height:78px;margin-top:26px}
  .jugada:nth-child(1) .naipe{rotate:-9deg;translate:0 18px}
  .jugada:nth-child(2) .naipe{rotate:-4.500deg;translate:0 5px}
  .jugada:nth-child(4) .naipe{rotate:4.500deg;translate:0 5px}
  .jugada:nth-child(5) .naipe{rotate:9deg;translate:0 18px}
  .jugada__hora{align-self:center;font-size:14.500px;letter-spacing:.12em}
  .jugada__que{font-size:clamp(23px,2.300vw,31px);margin-top:2px}
  .jugada__nota{font-size:15.500px;margin-top:4px;text-wrap:balance}

  .lugar{max-width:620px;padding:48px 40px 42px;margin-top:56px}
  .lugar__nombre{font-size:104px;white-space:nowrap}

  .vestir{padding:108px var(--pad) 104px}
  .vestir .titulo{font-size:112px}
  .atuendos{gap:30px;max-width:440px}
  .tonos .ficha{--d:70px}
  .tonos li{font-size:15px}
  .vestir__reserva{font-size:23px}

  .regalos__lista{grid-template-columns:repeat(4,1fr);max-width:900px;gap:20px}
  .regalo__ficha{width:132px;height:132px}
  .regalo:hover .regalo__ficha img{transform:scale(1.14)}
  .sobres{padding:44px 44px 40px}

  .ruleta__cuerpo{grid-template-columns:minmax(0,430px) minmax(0,1fr);gap:64px;align-items:center;margin-top:56px}
  .rueda{width:min(100%,400px)}
  .rueda__luces{inset:-18px}
  .premio{height:172px;max-width:none}
  .ruleta__estado{font-size:16px}
  .pano{max-width:none}
  .casilla span{font-size:15px}

  .apuesta{max-width:480px}
  .tocaficha{width:270px}
  .abanico{width:250px;height:160px}
  .abanico__carta{width:92px;height:128px;margin-left:-46px;padding:9px 0 0 10px;font-size:25px}
  .abanico__carta .palo{width:15px;height:15px}
  .abanico__carta .palo.abanico__centro{width:36px;height:36px;margin:-13px 0 0 -16px}
}
/* tabletas y ventanas medianas: la ruleta y su paño van uno debajo del otro */
@media (min-width:768px) and (max-width:999px){
  .ruleta__cuerpo{grid-template-columns:minmax(0,1fr);gap:40px}
  .premio{max-width:460px}
  .pano{max-width:640px}
  .joaquin__dentro{grid-template-columns:minmax(0,270px) minmax(0,1fr);gap:48px}
  .retrato{width:270px}
  .joaquin__nombre{font-size:clamp(104px,14vw,140px)}
  .mano{gap:10px}
  .jugada__hora{font-size:13px;letter-spacing:.06em}
  .jugada__nota{font-size:14.500px}
}
@media (min-width:1100px){
  .portada__pista{min-height:62px;padding:0 38px 0 30px;font-size:17.500px;gap:13px}
  .portada__pista .pista__mano{width:27px;height:27px}
  .portada__fecha{font-size:18px;padding:10px 26px 11px}
  .joaquin__dentro{grid-template-columns:minmax(0,380px) minmax(0,1fr);gap:108px}
  .retrato{width:380px}
  .naipe--grande .naipe__indice{font-size:42px}
}
@media (min-width:1600px){
  body{font-size:19px}
  .titulo{font-size:96px}
  .joaquin__dentro{grid-template-columns:minmax(0,430px) minmax(0,1fr);max-width:1260px}
  .retrato{width:430px}
  .joaquin__mensaje{font-size:20px}
  .portada__pista{min-height:70px;padding:0 44px 0 34px;font-size:19.500px}
  .portada__pista .pista__mano{width:30px;height:30px}
  .portada__fecha{font-size:20px;padding:11px 30px 12px}
  .bombilla{width:10px;height:10px;margin:-5px 0 0 -5px}
  .bombilla::after{inset:-9px}
}

/* ------------------------------------------------------------------
   MOVIMIENTO REDUCIDO
   ------------------------------------------------------------------ */
@media (prefers-reduced-motion:reduce){
  html.js .revela{opacity:1;transform:none;transition:none}
  .marquesina,.portada__pista::before,.pista__mano,.guia__mano,.musica-flotante__ondas i,.musica-flotante__ficha,.tocaficha__ficha,
  .bombillas--corre.viva .bombilla.on::after{animation:none!important}
  .naipe__giro,.abanico__carta,.bombilla::after{transition:none}
  html.js .jugada__hora,html.js .jugada__que,html.js .jugada__nota{opacity:1}
}
