/* Lanzamiento AST · 25-oct-2026
 * Estructura y textos: los de siempre (hero, hoja clara con cuenta atrás, sorteo, prueba y pilares, banda de la
 * mentora, «¿es para ti?», FAQ y cierre). Lo visual sale de la referencia que Seth trajo el 17-oct-2026
 * (design-handoff/referencia.html + tokens.css; «es para que veas la paleta de colores y lo visual»): azul noche de
 * base con resplandores de frambuesa, retícula que se desvanece, texto plateado metálico, Newsreader para títulos y
 * cifras, Hanken Grotesk para el texto, botón frambuesa con degradado vertical y glow, tarjetas oscuras con el número
 * grande en plata. Paleta oficial «Opción B · Plateado»; los derivados son los de tokens.css, sin inventar otros.
 * El REPARTO es el de la referencia (azul noche dominante; frambuesa en brillos y botones), no el 36/23/20/12/6/3
 * medido en la versión publicada antes del rediseño.
 */

/* Fuentes servidas desde aquí (antes, Google Fonts). Newsreader va fijada a peso 400 (la referencia no usa otro) y
   conserva el eje de tamaño óptico: pesa la mitad que el archivo completo. Si un texto pide Newsreader en 600-700 el
   navegador la engorda a mano: por eso todos los títulos van en 400. */
@font-face { font-family: 'Newsreader'; font-style: normal; font-weight: 400; font-display: swap; src: url('../fonts/newsreader-400.woff2?v=1') format('woff2'); }
@font-face { font-family: 'Newsreader'; font-style: italic; font-weight: 400; font-display: swap; src: url('../fonts/newsreader-400-italic.woff2?v=1') format('woff2'); }
@font-face { font-family: 'Hanken Grotesk'; font-style: normal; font-weight: 100 900; font-display: swap; src: url('../fonts/hanken-grotesk.woff2?v=1') format('woff2'); }
/* Respaldo con las métricas de las de arriba (fuentes del sistema, 0 bytes): mientras llegan, el texto ocupa casi lo
   mismo y la página no salta al cambiar (CLS de /p/ de 0.13 a 0.002, revisión del 17-oct). Android no tiene Georgia
   ni Arial: allí no cambia nada. Safari aplica size-adjust pero no ascent/descent-override. */
@font-face { font-family: 'Newsreader respaldo'; font-style: normal; font-weight: 400; src: local('Georgia'); size-adjust: 94%; ascent-override: 78.2%; descent-override: 28.2%; line-gap-override: 0%; }
@font-face { font-family: 'Newsreader respaldo'; font-style: italic; font-weight: 400; src: local('Georgia Italic'), local('Georgia-Italic'); size-adjust: 86%; ascent-override: 85.5%; descent-override: 30.8%; line-gap-override: 0%; }
@font-face { font-family: 'Hanken respaldo'; font-weight: 100 549; src: local('Arial'), local('ArialMT'); size-adjust: 98%; ascent-override: 102%; descent-override: 30.9%; line-gap-override: 0%; }
@font-face { font-family: 'Hanken respaldo'; font-weight: 550 900; src: local('Arial Bold'), local('Arial-BoldMT'); size-adjust: 94%; ascent-override: 106.4%; descent-override: 32.2%; line-gap-override: 0%; }

:root {
  --blush: #efe6e1;
  --imperial: #001d51;
  --frambuesa: #8c1d4f;
  --hielo: #bccbdd;
  --plata: #d9dde3;
  --verde: #486c61;

  /* Derivados de la referencia (tokens.css) */
  --noche: #000f2e;
  --profundo: #00143a;
  --card-top: #072559;
  --card-bottom: #001640;
  --frambuesa-claro: #a8336a;
  --rosa: #e7a9c4;
  --verde-luz: #7fc3a6;
  --gris-azul: #8e9bb3;
  --texto-sec-claro: #4a5878;
  --texto-ter-claro: #5b6680;
  --linea-beige: #c9bfb9;

  /* Derivados que ya usaba el formulario (contrastes verificados el 17-oct): se quedan */
  --imperial-hondo: #00163f;
  --imperial-2: #0a2a63;
  --imperial-line: #23407a;
  --frambuesa-osc: #6b1440;
  --frambuesa-luz: #a8396a;
  --frambuesa-clara: #d0679a;
  --verde-claro: #8fb5a7;
  --card: #f8f3f0;

  --ink: var(--imperial);
  --ink-soft: #24365e;
  --muted: var(--texto-sec-claro);
  --line: rgba(0, 29, 81, .14);

  /* Degradados firma de la referencia */
  --plata-metal: linear-gradient(100deg, #a7aeba 0%, #ffffff 35%, #d9dde3 55%, #9fa6b2 100%);
  --btn-frambuesa: linear-gradient(180deg, #a8336a 0%, #8c1d4f 100%);
  --hero-bg:
    radial-gradient(ellipse 60% 55% at 72% 38%, rgba(140, 29, 79, .55) 0%, rgba(140, 29, 79, 0) 70%),
    radial-gradient(ellipse 50% 40% at 18% 0%, rgba(188, 203, 221, .16) 0%, rgba(188, 203, 221, 0) 70%),
    linear-gradient(180deg, #001d51 0%, #00143a 70%, #000f2e 100%);
  --card-bg:
    radial-gradient(ellipse 90% 60% at 100% 0%, rgba(140, 29, 79, .28) 0%, rgba(140, 29, 79, 0) 70%),
    linear-gradient(180deg, var(--card-top) 0%, var(--card-bottom) 100%);
  --panel-bg:
    radial-gradient(ellipse 60% 80% at 85% 20%, rgba(140, 29, 79, .55) 0%, rgba(140, 29, 79, 0) 70%),
    linear-gradient(160deg, #001d51 0%, #000f2e 100%);
  --reticula:
    linear-gradient(rgba(217, 221, 227, .06) 1px, transparent 1px),
    linear-gradient(90deg, rgba(217, 221, 227, .06) 1px, transparent 1px);
  /* Los de antes, que siguen usando el WhatsApp de la gracias y los estilos propios de las bases */
  --plata-brillo: linear-gradient(125deg, #b9bfc8 0%, #d9dde3 30%, #f7f8fa 50%, #d9dde3 70%, #b3b9c3 100%);
  --verde-brillo: linear-gradient(115deg, #33574c 0%, #486c61 30%, #56796d 45%, #486c61 60%, #33574c 100%);

  --serif: 'Newsreader', 'Newsreader respaldo', Georgia, 'Times New Roman', serif;
  --ui: 'Hanken Grotesk', 'Hanken respaldo', system-ui, -apple-system, 'Segoe UI', Roboto, sans-serif;

  --radius: 14px;
  --radius-lg: 22px;
  --r-panel: 32px;
  --r-section: 40px;
  --gutter: 24px;
  --max: 1248px; /* 1200 de contenido, como la referencia */

  --sh-cta: inset 0 1px 0 rgba(255, 255, 255, .25), 0 0 0 1px rgba(255, 255, 255, .08), 0 12px 40px rgba(140, 29, 79, .6);
  --hair-dark: 1px solid rgba(217, 221, 227, .14);
  --hair-dark-strong: 1px solid rgba(217, 221, 227, .22);
}

*,
*::before,
*::after { box-sizing: border-box; }

html { -webkit-text-size-adjust: 100%; scroll-behavior: smooth; }

body {
  margin: 0;
  background: var(--noche);
  color: var(--ink);
  font-family: var(--ui);
  font-size: 17px;
  line-height: 1.6;
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
}

img { max-width: 100%; display: block; }

a { color: inherit; }

/* Titulares sin una palabra sola en el último renglón; en los párrafos el navegador evita dejarla (donde no lo
   soporte, quedan como antes). */
h1, h2, h3, .bonus__t { text-wrap: balance; }
p, li, summary, .proof__t, .mentor__t { text-wrap: pretty; }

.skip {
  position: absolute; left: -9999px; top: 0;
  background: var(--frambuesa); color: #fff; padding: 10px 14px; z-index: 50;
}
.skip:focus { left: 12px; top: 12px; }

.wrap { width: 100%; max-width: var(--max); margin: 0 auto; padding: 0 var(--gutter); }
.wrap--narrow { max-width: 760px; }

/* Foco visible sobre cualquier fondo: anillo blanco y, por fuera, azul imperial. */
.cta:focus-visible,
.btn-ghost:focus-visible,
.faq summary:focus-visible,
.reg__close:focus-visible { outline: 3px solid var(--imperial); outline-offset: 3px; box-shadow: 0 0 0 3px #fff; }

/* ---------- Botón principal: frambuesa con degradado vertical, borde interno claro y glow ---------- */
.cta {
  display: inline-flex; align-items: center; justify-content: center; gap: 12px;
  min-height: 58px; padding: 14px 30px;
  border: 0; border-radius: 999px;
  background: var(--btn-frambuesa);
  color: #fff;
  font: 600 16px/1.2 var(--ui); letter-spacing: .01em;
  text-align: center; /* si el texto parte en dos líneas (WhatsApp en la gracias), que no se vaya a la izquierda */
  text-decoration: none; cursor: pointer;
  box-shadow: var(--sh-cta);
  transition: transform .2s ease, box-shadow .2s ease;
}
.cta:hover { transform: translateY(-1px); box-shadow: inset 0 1px 0 rgba(255, 255, 255, .25), 0 0 0 1px rgba(255, 255, 255, .12), 0 16px 48px rgba(140, 29, 79, .75); }
.cta:active { transform: none; }
.cta svg { width: 16px; height: 16px; flex: 0 0 auto; }
.cta--block { width: 100%; }
.cta--wa { background: var(--verde-brillo); box-shadow: inset 0 1px 0 rgba(255, 255, 255, .18), 0 0 0 1px rgba(255, 255, 255, .06), 0 12px 36px rgba(72, 108, 97, .55); }
.cta--wa:hover { box-shadow: inset 0 1px 0 rgba(255, 255, 255, .18), 0 0 0 1px rgba(255, 255, 255, .1), 0 16px 44px rgba(72, 108, 97, .7); }
/* El :hover pisaba el anillo de foco (va después y pesa lo mismo): al cerrar el modal con Esc, sin anillo. */
.cta:hover:focus-visible { box-shadow: 0 0 0 3px #fff; }
/* .75 y no menos: con el degradado, «Reservando tu lugar…» y «Enviando…» bajaban de 4.5:1 (tools/contraste-referencia.mjs). */
.cta[aria-disabled="true"] { opacity: .75; pointer-events: none; }
/* Botones «vivos» (Seth, 17-oct noche: «que cambie de tamaño y de intensidad poco a poco»): crecen un 4,5 % y se
   encienden con un halo frambuesa. Solo transform y opacity (el halo es la sombra de ::after, que no tiñe el botón).
   Se quedan quietos bajo el ratón o el foco, y con «reducir movimiento». */
.cta--vivo { position: relative; animation: cta-latido 3.2s ease-in-out infinite; }
/* La forma del mockup 7.19.18 (Seth, 17-oct noche): rectángulo de esquinas redondeadas, más ancho (318 px) y con un borde
   frambuesa claro. Es el mismo componente en los 8: mezclar píldoras y rectángulos se vería roto. El halo (::after)
   hereda el radio. */
.cta--vivo { min-width: min(318px, 100%); border: 1px solid rgba(232, 140, 182, .45); border-radius: 12px; }
.cta--vivo::after {
  content: ''; position: absolute; inset: 0; border-radius: inherit; pointer-events: none;
  box-shadow: 0 0 30px 8px rgba(208, 103, 154, .7); opacity: .12;
  animation: cta-brillo 3.2s ease-in-out infinite;
}
.cta--vivo:hover, .cta--vivo:focus-visible, .cta--vivo:hover::after, .cta--vivo:focus-visible::after { animation-play-state: paused; }
@keyframes cta-latido { 0%, 100% { transform: scale(1); } 50% { transform: scale(1.045); } }
@keyframes cta-brillo { 0%, 100% { opacity: .12; } 50% { opacity: .85; } }

.micro { margin: 12px 0 0; font: 400 13px/1.45 var(--ui); color: var(--gris-azul); }

/* ---------- Barra superior ---------- */
.topbar { background: var(--imperial); border-bottom: var(--hair-dark); }
.topbar .wrap { display: flex; justify-content: flex-start; align-items: center; padding-top: 18px; padding-bottom: 18px; }
/* Logo OFICIAL de AST (Seth, 17-oct: «registra como canon esos logos»; juego completo en AST-BAR-MASTER/marca/logo/).
   Va en blanco sobre fondo oscuro, sin recolorear; ya lleva las letras, así que la marca no repite «AST» en texto. */
.brand { display: inline-flex; align-items: center; color: #fff; text-decoration: none; }
.brand svg { width: 53.6px; height: 40px; }
/* En la landing (/ y /p/) la barra va encima del hero, sin fondo propio, como el nav de la referencia. */
[data-variante] .topbar { position: absolute; top: 0; left: 0; right: 0; z-index: 3; background: transparent; border-bottom: 0; }
[data-variante] .topbar .wrap { padding-top: 24px; padding-bottom: 24px; }

/* ---------- Retícula que se desvanece hacia los bordes (hero, cierre, gracias) ---------- */
.hero::before,
.final::before,
.ty-hero::before {
  content: ''; position: absolute; inset: 0; pointer-events: none;
  background-image: var(--reticula); background-size: 72px 72px;
  -webkit-mask-image: radial-gradient(ellipse 70% 60% at 50% 35%, #000 0%, transparent 75%);
          mask-image: radial-gradient(ellipse 70% 60% at 50% 35%, #000 0%, transparent 75%);
}
.hero > .wrap,
.final > .wrap,
.ty-hero > .wrap { position: relative; }

/* ---------- Hero ---------- */
.hero {
  position: relative; overflow: hidden;
  background: var(--hero-bg);
  color: var(--blush);
  padding: 104px 0 120px;
}

/* Retrato en arco, con halo y anillo detrás (la foto de la referencia). */
.hero__photo,
.mentor__photo { position: relative; margin: 0 auto; }
.hero__photo { width: min(230px, 64vw); margin-bottom: 34px; }
.hero__photo::before,
.hero__photo::after,
.mentor__photo::before,
.mentor__photo::after {
  content: ''; position: absolute; left: 50%; top: 46%; aspect-ratio: 1; border-radius: 50%;
  transform: translate(-50%, -50%); pointer-events: none;
}
.hero__photo::before,
.mentor__photo::before { width: 121%; background: radial-gradient(circle, rgba(188, 203, 221, .30) 0%, rgba(140, 29, 79, .25) 40%, rgba(0, 29, 81, 0) 70%); }
.hero__photo::after,
.mentor__photo::after { width: 110.5%; border: 1px solid rgba(217, 221, 227, .18); }
/* El arco de la referencia (380 × 520, radios 220/28) en proporciones, para que escale. */
.hero__photo picture,
.mentor__photo picture {
  position: relative; z-index: 1; display: block; aspect-ratio: 380 / 520; overflow: hidden;
  border-radius: 50% 50% 6.37% 6.37% / 36.54% 36.54% 4.65% 4.65%;
  background: linear-gradient(180deg, rgba(188, 203, 221, .22) 0%, rgba(0, 29, 81, 0) 100%);
  border: var(--hair-dark-strong);
}
/* height: 100% gana al height="560" del <img> (si no, la foto salía con su alto propio). */
.hero__photo img,
.mentor__photo img { width: 100%; height: 100%; object-fit: cover; object-position: center top; }

.pill {
  display: inline-flex; align-items: center; gap: 10px;
  padding: 8px 16px 8px 12px; border-radius: 999px;
  border: var(--hair-dark-strong); background: rgba(0, 29, 81, .55);
  color: var(--plata); font: 500 13px/1.25 var(--ui);
}
.pill__dot { width: 8px; height: 8px; flex: 0 0 auto; border-radius: 50%; background: var(--verde-luz); box-shadow: 0 0 12px 2px rgba(127, 195, 166, .7); }

.hero h1 {
  margin: 30px 0 0; max-width: 19ch;
  font: 400 clamp(46px, 6.4vw, 92px)/1 var(--serif); letter-spacing: -.025em;
}
/* Cifra del titular en itálica plata metálica (si el navegador no recorta el fondo al texto, queda plata lisa).
   El padding deja sitio a la cola de la última letra en cursiva, que si no se queda sin pintar. */
.hero h1 em, .final h2 em, .ty-hero h1 em, .sorteo h1 em { font-style: italic; color: var(--plata); padding-right: .06em; }
@supports ((-webkit-background-clip: text) or (background-clip: text)) {
  .hero h1 em, .final h2 em, .ty-hero h1 em, .sorteo h1 em { background: var(--plata-metal); -webkit-background-clip: text; background-clip: text; color: transparent; }
}
.hero__sub { margin: 28px 0 0; max-width: 520px; font: 400 clamp(17px, 1.4vw, 20px)/1.55 var(--ui); color: var(--hielo); }
/* line-height: 1 para que la itálica, más grande, no separe sus renglones de los demás. */
.hero__sub strong { font-family: var(--serif); font-style: italic; font-weight: 400; font-size: 1.12em; line-height: 1; color: var(--blush); }
.hero .cta { margin-top: 38px; }

/* ---------- Hero con video (Seth, 17-oct noche: el mockup «así lo quiero») ----------
   Todo centrado: píldora · fecha · titular con «20 min al día» subrayado a pincel · subtítulo · video · botón · fecha. */
.hero--video { text-align: center; padding: 112px 0 104px; }
.hero--video > .wrap { display: flex; flex-direction: column; align-items: center; }
.pill--clase { padding: 8px 16px 8px 13px; font: 600 12px/1.25 var(--ui); letter-spacing: .16em; text-transform: uppercase; }
.hero__when { margin: 16px 0 0; font: 700 clamp(16px, 1.45vw, 19px)/1.4 var(--ui); color: var(--blush); }
.hero--video h1 { margin: 16px auto 0; max-width: 17ch; font: 400 clamp(40px, 6vw, 84px)/1.02 var(--serif); letter-spacing: -.025em; }
/* /p/: «Cómo operar cuentas de fondeo» en un renglón desde 1024 px, como el titular de / (con 17ch salía en 3; medido 17-oct). */
[data-variante="pauta"] .hero--video h1 { max-width: 24ch; }
/* «20 min al día» en su propio renglón y del ancho del texto, para que el subrayado mida lo mismo que la frase. */
.hero--video h1 em { display: block; width: -webkit-fit-content; width: fit-content; margin: .04em auto 0; }
/* El subrayado de pincel del mockup 7.03.46 PM: dos trazos frambuesa (el SVG lleva su propio color: el plateado de la
   itálica es un fondo recortado al texto y no le afecta). */
.trazo { position: relative; }
.trazo__raya { position: absolute; left: 38%; bottom: -.27em; width: 80%; height: .4em; overflow: visible; pointer-events: none; }
.trazo__b { fill: var(--frambuesa-clara); opacity: .6; }
.hero--video .hero__sub { margin: 34px auto 0; max-width: 620px; font: 400 clamp(17px, 1.5vw, 21px)/1.5 var(--ui); }
.hero--video .hero__sub strong { font: inherit; font-weight: 700; font-style: normal; color: #fff; }
.hero--video .cta { margin-top: 30px; }
.hero--video .micro { margin-top: 12px; }
.pill--fecha { margin-top: 16px; gap: 8px; padding: 8px 15px; font: 700 11.5px/1.25 var(--ui); letter-spacing: .12em; text-transform: uppercase; color: var(--plata); }
.pill--fecha svg { width: 15px; height: 15px; flex: 0 0 auto; }

/* El rectángulo del video: la portada con ▶ hasta que se toca; entonces lleva el reproductor de Tella (lanzamiento.js). */
.video { position: relative; width: 100%; max-width: 920px; margin: 30px auto 0; }
.video__btn {
  position: relative; z-index: 1; display: block; width: 100%; aspect-ratio: 16 / 9;
  margin: 0; padding: 0; overflow: hidden; cursor: pointer;
  border: 1px solid rgba(217, 221, 227, .22); border-radius: 22px; background: #0b1a3d; color: #fff;
  box-shadow: 0 30px 70px -28px rgba(0, 0, 0, .75);
}
.video__btn picture, .video__btn img { display: block; width: 100%; height: 100%; }
.video__btn img { object-fit: cover; transition: transform .6s ease; }
.video__btn:hover img { transform: scale(1.02); }
.video__btn:focus-visible { outline: 3px solid #fff; outline-offset: 4px; }
/* Tras el toque, la portada se queda ENCIMA del reproductor de Tella hasta que el video arranca de verdad (si no, Tella
   enseña un momento su propia portada: en /p/ sería la de «$0 → $5,000»). No captura toques: el segundo llega a Tella. */
.video__btn--tapa { position: absolute; inset: 0; z-index: 2; pointer-events: none; cursor: default; }
/* El ▶ va a tres cuartos de alto: centrado tapaba la cara de Ameyalli en la portada. */
.video__play {
  position: absolute; left: 50%; top: 74%; width: 72px; height: 72px; margin: -36px 0 0 -36px;
  display: grid; place-items: center; border-radius: 50%;
  background: var(--btn-frambuesa); box-shadow: 0 0 0 8px rgba(255, 255, 255, .16), 0 14px 34px rgba(0, 0, 0, .45);
  transition: transform .2s ease;
}
.video__play svg { width: 30px; height: 30px; margin-left: 5px; }
.video__btn:hover .video__play { transform: scale(1.07); }
.video iframe {
  position: relative; z-index: 1; display: block; width: 100%; aspect-ratio: 16 / 9;
  border: 1px solid rgba(217, 221, 227, .22); border-radius: 22px; background: #000;
}
/* La luz frambuesa detrás del video (Seth: «que no esté estática sino que cambie lentamente de forma y de opacidad»):
   dos manchas difuminadas que se estiran, giran y respiran a ritmos distintos (14 s y 17 s, ida y vuelta). */
/* En el teléfono: el ▶ más chico, y el hero más apretado para que el botón entre en la primera pantalla (390×664). */
@media (max-width: 599px) {
  .video__play { width: 54px; height: 54px; margin: -27px 0 0 -27px; box-shadow: 0 0 0 6px rgba(255, 255, 255, .16), 0 10px 26px rgba(0, 0, 0, .45); }
  .video__play svg { width: 24px; height: 24px; margin-left: 4px; }
  .hero--video { padding-top: 88px; }
  .hero__when { margin-top: 12px; }
  .hero--video h1 { margin-top: 12px; font-size: 36px; }
  .hero--video .hero__sub { margin-top: 18px; font-size: 16.5px; line-height: 1.45; }
  .video { margin-top: 18px; }
  .hero--video .cta { margin-top: 20px; }
}
/* iPhone de 375 px con las barras de Safari (~629-647 px visibles): menos aire arriba para que el botón entre. */
@media (max-width: 389px) {
  [data-variante] .topbar .wrap { padding-top: 14px; padding-bottom: 14px; }
  .hero--video { padding-top: 68px; }
  .hero--video .cta { margin-top: 16px; }
}
.video__luz { position: absolute; left: 50%; top: 50%; width: 116%; height: 150%; transform: translate(-50%, -50%); pointer-events: none; }
.video__luz::before,
.video__luz::after { content: ''; position: absolute; inset: 0; border-radius: 50%; filter: blur(46px); }
.video__luz::before {
  background: radial-gradient(closest-side, rgba(168, 57, 106, .9), rgba(140, 29, 79, .5) 55%, rgba(140, 29, 79, 0) 100%);
  animation: luz-a 14s ease-in-out infinite alternate;
}
.video__luz::after {
  background: radial-gradient(closest-side, rgba(208, 103, 154, .6), rgba(208, 103, 154, 0) 100%);
  animation: luz-b 17s ease-in-out infinite alternate;
}
@keyframes luz-a {
  0% { transform: translate(-6%, 3%) rotate(-8deg) scale(.86, .74); opacity: .5; }
  50% { transform: translate(4%, -4%) rotate(10deg) scale(1.04, .9); opacity: .95; }
  100% { transform: translate(-2%, 5%) rotate(-3deg) scale(.94, 1.02); opacity: .65; }
}
@keyframes luz-b {
  0% { transform: translate(8%, -3%) rotate(12deg) scale(.7, .9); opacity: .3; }
  50% { transform: translate(-7%, 4%) rotate(-14deg) scale(.95, .7); opacity: .75; }
  100% { transform: translate(3%, -5%) rotate(6deg) scale(.8, 1); opacity: .45; }
}

.chips { display: flex; flex-wrap: wrap; gap: 10px; margin-top: 26px; }
.chip {
  display: inline-flex; align-items: center; gap: 8px;
  padding: 8px 15px; border-radius: 999px;
  border: var(--hair-dark-strong); background: rgba(0, 29, 81, .55);
  font: 500 14px/1.25 var(--ui); color: var(--blush);
}
.localtime { margin: 14px 0 0; font: 400 13.5px/1.45 var(--ui); color: var(--gris-azul); min-height: 1.45em; }

/* ---------- Hoja clara ---------- */
.sheet {
  position: relative; z-index: 1;
  margin-top: -40px;
  background: var(--blush);
  border-radius: var(--r-section);
  padding: 32px 0 clamp(80px, 10vw, 128px);
}
.sheet--flat { margin-top: 0; padding-top: clamp(80px, 10vw, 128px); }

/* Cuenta atrás: panel oscuro con las cajas de la referencia. */
.countdown {
  display: grid; gap: 20px;
  background: var(--panel-bg); color: var(--blush);
  border-radius: var(--r-panel); padding: 26px 20px;
  box-shadow: 0 24px 50px -30px rgba(0, 15, 46, .8);
}
.countdown__label { margin: 0; font: 500 12px/1.3 var(--ui); letter-spacing: .12em; text-transform: uppercase; color: var(--gris-azul); }
.countdown__when { margin: 8px 0 0; font: 400 clamp(20px, 2.2vw, 26px)/1.25 var(--serif); color: var(--blush); }
.countdown__grid { display: grid; grid-template-columns: repeat(4, 1fr); gap: 8px; text-align: center; }
.countdown__grid > div {
  display: flex; flex-direction: column; align-items: center; gap: 6px; min-width: 0;
  padding: 14px 0 12px; border-radius: 14px;
  border: 1px solid rgba(217, 221, 227, .16);
  background: linear-gradient(180deg, rgba(188, 203, 221, .10) 0%, rgba(188, 203, 221, .02) 100%);
}
.countdown__n { display: block; font: 400 32px/1 var(--serif); font-variant-numeric: tabular-nums; color: var(--blush); }
.countdown__u { display: block; font: 500 11px/1 var(--ui); letter-spacing: .12em; text-transform: uppercase; color: var(--gris-azul); }
/* «MINUTOS» y «SEGUNDOS» en mayúsculas no caben en cuatro cajas por debajo de ~400 px. */
@media (max-width: 399px) {
  .countdown__u { letter-spacing: .02em; text-transform: none; font-size: 11.5px; }
}
/* Como el mockup 7.19.18 (Seth, 17-oct noche): sin cajas, cifras grandes y finas en la letra de la interfaz, unidades
   en minúscula debajo, y «Domingo 25 de octubre · 6 p.m. CDMX» también en la letra de la interfaz. */
.countdown__when { font: 500 clamp(17px, 1.7vw, 21px)/1.35 var(--ui); }
.countdown__grid > div { gap: 8px; padding: 0; border: 0; border-radius: 0; background: none; }
.countdown__n { font: 300 clamp(40px, 4.6vw, 56px)/1 var(--ui); letter-spacing: -.02em; }
.countdown__u { font: 400 13px/1 var(--ui); letter-spacing: .01em; text-transform: none; }

/* Rótulo: la píldora de la referencia. */
.eyebrow {
  display: table; margin: 0; padding: 6px 14px; border-radius: 999px;
  border: 1px solid var(--linea-beige); color: var(--frambuesa);
  font: 600 12px/1.3 var(--ui); letter-spacing: .12em; text-transform: uppercase;
}
.eyebrow.center { margin-left: auto; margin-right: auto; }
/* «Certificados públicos de retiros · Año 2026» en un renglón: si no, «2026» quedaba sola dentro de la píldora. */
@media (max-width: 400px) {
  .eyebrow { font-size: 11px; letter-spacing: .06em; }
}
.h2 { margin: 24px 0 0; font: 400 clamp(38px, 4.8vw, 64px)/1.05 var(--serif); letter-spacing: -.02em; color: var(--ink); }
.lede { margin: 18px 0 0; max-width: 60ch; color: var(--texto-sec-claro); font-size: 18px; line-height: 1.55; }

.section { padding-top: clamp(80px, 10vw, 128px); }
.section--rule { border-top: 0; margin-top: 0; }

/* Prueba: el panel de la referencia, con los USD retirados como cifra grande en plata metálica. Va en el orden del
   texto (61 → 310 → 399,002): la referencia la sube arriba, pero eso cambiaría el orden del copy. */
.proof {
  position: relative; overflow: hidden;
  display: grid; grid-template-columns: 1fr 1fr; gap: 28px 24px; align-items: start;
  margin-top: 44px; padding: clamp(32px, 5vw, 64px);
  border-radius: var(--r-panel); background: var(--panel-bg); color: var(--blush);
}
.proof__stat { min-width: 0; }
.proof__stat:last-child { grid-column: 1 / -1; padding-top: 28px; border-top: 1px solid rgba(217, 221, 227, .18); }
.proof__n { display: block; font: 400 clamp(44px, 5vw, 56px)/1 var(--serif); color: var(--blush); font-variant-numeric: tabular-nums; }
/* inline-block: el fondo plateado se recorta al texto SOLO dentro de la caja; con la caja del ancho de la cifra no
   se queda ningún dígito sin pintar. El tamaño se limita al ancho útil: «399,002» mide ~3.3 em. Por arriba, con el
   tamaño óptico de Newsreader las cifras suben más que la caja de line-height .92 y salían con el techo plano: el
   padding agranda la zona pintada y el margen negativo lo compensa, así que no se mueve nada. */
.proof__stat:last-child .proof__n {
  display: inline-block; white-space: nowrap;
  font-size: min(clamp(76px, 14vw, 200px), calc((100vw - 120px) / 3.6)); line-height: .92; letter-spacing: -.045em;
  padding-top: .1em; margin-top: -.1em;
  color: var(--plata);
}
@supports ((-webkit-background-clip: text) or (background-clip: text)) {
  .proof__stat:last-child .proof__n { background: var(--plata-metal); -webkit-background-clip: text; background-clip: text; color: transparent; }
}
.proof__t { display: block; margin-top: 10px; font: 400 15px/1.4 var(--ui); color: var(--hielo); }
.proof__note { margin: 18px 0 0; font: 400 14px/1.5 var(--ui); color: var(--texto-sec-claro); }
.proof__note a { color: var(--frambuesa); font-weight: 600; text-decoration: none; }
.proof__note a:hover { text-decoration: underline; }

/* Banner de cifras (Seth, 17-oct noche: «todo con el mismo tamaño de letra para que quede en un renglón, déjale una luz
   que contraste… que esté viva»). En escritorio, un renglón; en el teléfono, una cifra por renglón. La luz: un halo
   frambuesa que respira y un barrido blanco que cruza cada 6,5 s (los dos por debajo del texto). */
.cifras {
  position: relative; overflow: hidden; isolation: isolate;
  display: flex; flex-direction: column; align-items: center; gap: 6px;
  margin: 28px 0 0; padding: 20px 22px;
  border-radius: var(--r-panel); background: var(--panel-bg); color: #fff;
  font: 400 15.5px/1.45 var(--ui); text-align: center;
  box-shadow: 0 0 0 1px rgba(208, 103, 154, .35), 0 20px 44px -22px rgba(140, 29, 79, .9);
}
.cifras b { color: #fff; font-weight: 700; }
.cifras__sep { display: none; color: var(--frambuesa-clara); font-weight: 700; }
.cifras::before {
  content: ''; position: absolute; z-index: -1; left: 8%; right: 8%; top: -70%; bottom: -70%;
  background: radial-gradient(closest-side, rgba(208, 103, 154, .55), rgba(168, 57, 106, 0));
  opacity: .3; animation: cifras-respira 5s ease-in-out infinite;
}
.cifras::after {
  content: ''; position: absolute; z-index: -1; top: 0; bottom: 0; left: 0; width: 32%;
  background: linear-gradient(90deg, rgba(255, 255, 255, 0), rgba(255, 255, 255, .14), rgba(255, 255, 255, 0));
  transform: translateX(-160%) skewX(-18deg); animation: cifras-barrido 6.5s ease-in-out infinite;
}
@keyframes cifras-respira { 0%, 100% { opacity: .3; transform: scale(.9); } 50% { opacity: 1; transform: scale(1.08); } }
@keyframes cifras-barrido { 0%, 12% { transform: translateX(-160%) skewX(-18deg); } 60%, 100% { transform: translateX(420%) skewX(-18deg); } }
@media (min-width: 920px) {
  .cifras { flex-direction: row; flex-wrap: wrap; justify-content: center; gap: 4px 14px; padding: 20px 28px; font-size: clamp(15px, 1.3vw, 17px); }
  .cifras > span { white-space: nowrap; }
  .cifras__sep { display: inline; }
}

/* Muro de certificados en movimiento (Seth: «como fedeesses.com/registro-streaming… que van moviéndose y cuando pasas
   el mouse se detienen, que sean clicables con un pop-up»): tres filas que alternan sentido. Las mueve lanzamiento.js
   (Web Animations, en px); el alto queda reservado antes de que lleguen los datos para que la página no salte. */
.muro { position: relative; display: grid; gap: 14px; margin-top: 28px; min-height: calc(3 * 175px + 2 * 14px); }
.muro::before,
.muro::after { content: ''; position: absolute; top: 0; bottom: 0; z-index: 2; width: 40px; pointer-events: none; }
.muro::before { left: 0; background: linear-gradient(90deg, var(--blush), rgba(239, 230, 225, 0)); }
.muro::after { right: 0; background: linear-gradient(270deg, var(--blush), rgba(239, 230, 225, 0)); }
.muro__fila { height: 175px; overflow: hidden; }
.muro[hidden] { display: none; }
/* En el teléfono, las filas de borde a borde (como un carrusel nativo) y el desvanecido casi nada: sobre el beige, uno
   ancho ensuciaba de gris los certificados oscuros. */
@media (max-width: 599px) {
  .muro { margin-left: calc(var(--gutter) * -1); margin-right: calc(var(--gutter) * -1); }
  .muro::before,
  .muro::after { width: 14px; }
}
.muro__pista { display: flex; gap: 14px; width: -webkit-max-content; width: max-content; height: 100%; }
.muro__card {
  flex: 0 0 auto; height: 100%; margin: 0; padding: 0; overflow: hidden; cursor: zoom-in;
  border: 1px solid rgba(0, 29, 81, .12); border-radius: 12px; background: #fff;
  box-shadow: 0 10px 24px -14px rgba(0, 15, 46, .6);
}
.muro__card img { display: block; width: 100%; height: 100%; object-fit: cover; }
@media (min-width: 600px) {
  .muro { gap: 16px; min-height: calc(3 * 225px + 2 * 16px); }
  .muro__fila { height: 225px; }
  .muro__pista { gap: 16px; }
  .muro::before,
  .muro::after { width: 72px; }
}
.proof__highlight {
  margin-top: 16px; padding: 16px 18px; border-radius: var(--radius);
  background: rgba(140, 29, 79, .07); border: 1px solid rgba(140, 29, 79, .25);
  font: 600 16px/1.45 var(--ui); color: var(--ink);
}
.proof__highlight strong { color: var(--frambuesa); }

/* Pilares: las tarjetas de capítulo de la referencia (número grande en itálica plata que se desvanece). */
.pillars { display: grid; gap: 18px; margin-top: 48px; }
.pillar {
  position: relative; overflow: hidden; min-height: 300px; padding: 28px; border-radius: var(--radius-lg);
  border: var(--hair-dark); background: var(--card-bg); color: var(--blush);
  display: flex; flex-direction: column; justify-content: flex-end;
  isolation: isolate;
}
/* El número grande va DETRÁS de «Pilar» y del título donde se cruzan (entre 1000 y 1100 px se cruzan). */
.pillar__k, .pillar h3, .pillar p { position: relative; z-index: 1; }
.pillar__head { display: block; }
.pillar__n {
  position: absolute; right: 16px; top: -14px;
  font: italic 400 150px/1 var(--serif); padding-right: .06em;
  background: linear-gradient(180deg, rgba(217, 221, 227, .35) 0%, rgba(217, 221, 227, .02) 85%);
  -webkit-background-clip: text; background-clip: text; color: transparent;
}
.pillar__k { display: block; font: 500 12px/1 var(--ui); letter-spacing: .14em; text-transform: uppercase; color: var(--gris-azul); }
.pillar h3 { margin: 10px 0 0; font: 400 30px/1.1 var(--serif); color: var(--blush); }
.pillar p { margin: 12px 0 0; font: 400 15px/1.55 var(--ui); color: var(--hielo); }

.center { text-align: center; }
.cta-row { margin-top: 52px; text-align: center; }
.cta-row .micro { color: var(--ink-soft); }
/* Sobre la hoja beige, el glow más suave de la referencia; con foco de teclado manda el anillo blanco. */
.sheet .cta:not(:focus-visible) { box-shadow: inset 0 1px 0 rgba(255, 255, 255, .25), 0 12px 36px rgba(140, 29, 79, .4); }

/* ---------- Banda de la mentora: oscura, con el retrato en arco ---------- */
.band {
  position: relative; overflow: hidden;
  background: radial-gradient(ellipse 55% 65% at 85% 45%, rgba(140, 29, 79, .38) 0%, rgba(140, 29, 79, 0) 70%), var(--noche);
  color: var(--blush); padding: clamp(96px, 11vw, 150px) 0;
}
.band .eyebrow { border: var(--hair-dark-strong); color: var(--plata); }
.band .h2 { color: var(--blush); }
.band .h2 em { font-style: italic; color: var(--rosa); }
.mentor { display: grid; gap: 64px; align-items: center; }
.mentor__lede { margin: 20px 0 0; color: var(--hielo); font-size: 18px; line-height: 1.55; }
.mentor__lede strong { color: var(--blush); font-weight: 600; }
.mentor__stats { display: grid; grid-template-columns: 1fr 1fr; gap: 26px 24px; margin-top: 32px; padding-top: 28px; border-top: 1px solid rgba(217, 221, 227, .18); }
.mentor__stats > div { min-width: 0; }
.mentor__n { display: block; font: 400 clamp(32px, 4vw, 48px)/1 var(--serif); color: var(--blush); font-variant-numeric: tabular-nums; }
.mentor__t { display: block; margin-top: 8px; font: 400 14px/1.45 var(--ui); color: var(--hielo); }
.mentor__bio { margin: 28px 0 0; font: 400 16px/1.6 var(--ui); color: var(--hielo); }
.mentor__bio em { font-family: var(--serif); font-size: 1.12em; color: var(--blush); }
.mentor__photo { width: min(380px, 80%); }

/* ---------- ¿Es para ti? ---------- */
.fit { display: grid; gap: 18px; margin-top: 44px; }
.fit--single { max-width: 640px; margin-left: auto; margin-right: auto; }
.fit__col { padding: 30px 26px; border-radius: var(--radius-lg); }
.fit__col--yes { background: var(--card-bg); color: var(--blush); border: var(--hair-dark); }
.fit__col--no { background: transparent; color: var(--ink); border: 1px solid var(--linea-beige); }
.fit__col h3 { margin: 0 0 18px; font: 400 28px/1.15 var(--serif); }
.fit__col ul { list-style: none; margin: 0; padding: 0; display: grid; gap: 14px; }
.fit__col li { position: relative; padding-left: 28px; font: 400 15.5px/1.5 var(--ui); }
.fit__col li::before { position: absolute; left: 0; top: 0; font-weight: 700; }
.fit__col--yes li { color: var(--hielo); }
.fit__col--yes li strong { color: var(--blush); font-weight: 600; }
.fit__col--yes li::before { content: '✓'; color: var(--rosa); }
.fit__col--no li { color: var(--texto-sec-claro); }
.fit__col--no li strong { color: var(--ink); font-weight: 600; }
.fit__col--no li::before { content: '✕'; color: var(--texto-ter-claro); }

/* ---------- FAQ: las preguntas, en el panel oscuro ---------- */
.faq { display: grid; gap: 32px; }
.faq__list { background: var(--panel-bg); border-radius: var(--r-panel); padding: 6px 26px; box-shadow: 0 24px 50px -34px rgba(0, 15, 46, .8); }
.faq details { border-bottom: 1px solid rgba(217, 221, 227, .14); }
.faq details:last-child { border-bottom: 0; }
.faq summary {
  list-style: none; cursor: pointer;
  display: flex; justify-content: space-between; align-items: center; gap: 14px;
  padding: 20px 2px; font: 500 17px/1.4 var(--ui); color: var(--blush);
}
.faq summary::-webkit-details-marker { display: none; }
.faq summary::after { content: '+'; font: 300 26px/1 var(--ui); color: var(--rosa); transition: transform .2s ease; }
.faq details[open] summary::after { transform: rotate(45deg); }
.faq details p { margin: 0 0 20px; font: 400 15.5px/1.6 var(--ui); color: var(--hielo); }
.faq details a { color: var(--blush); font-weight: 600; }
.tz { width: 100%; border-collapse: collapse; margin: 2px 0 20px; font: 400 15px/1.4 var(--ui); color: var(--hielo); }
.tz td { padding: 8px 0; border-bottom: 1px dashed rgba(217, 221, 227, .18); }
.tz td:last-child { text-align: right; font-weight: 600; color: var(--blush); }

/* ---------- Cierre: el hero otra vez, con el resplandor abajo ---------- */
.final {
  position: relative; overflow: hidden;
  background:
    radial-gradient(ellipse 70% 60% at 50% 100%, rgba(140, 29, 79, .55) 0%, rgba(140, 29, 79, 0) 70%),
    radial-gradient(ellipse 50% 40% at 18% 0%, rgba(188, 203, 221, .12) 0%, rgba(188, 203, 221, 0) 70%),
    linear-gradient(180deg, #000f2e 0%, #00143a 45%, #001d51 100%);
  color: var(--blush); text-align: center; padding: clamp(96px, 11vw, 150px) 0;
}
.final .chips { justify-content: center; margin-top: 0; }
.final h2 { margin: 30px auto 0; max-width: 16ch; font: 400 clamp(42px, 5.6vw, 76px)/1.02 var(--serif); letter-spacing: -.025em; }
/* La itálica plateada no se parte en dos renglones («reglas / claras» en /p/). */
.final h2 em { white-space: nowrap; }
.final h2 .trazo { display: block; width: -webkit-fit-content; width: fit-content; margin: .04em auto 0; }
.final h2 + .sub { margin-top: 34px; }
.final p.sub { margin: 20px auto 0; max-width: 46ch; color: var(--hielo); font: 400 17px/1.55 var(--ui); }
.final p.sub strong { color: var(--blush); font-weight: 600; }
.final .cta { margin-top: 38px; }

/* ---------- Visor de certificados (al tocar uno del muro): pantalla completa, con anterior y siguiente ---------- */
.cert { width: 100%; height: 100%; max-width: none; max-height: none; margin: 0; padding: 0; border: 0; background: transparent; color: var(--blush); overflow: hidden; }
.cert[open] { display: grid; place-items: center; }
.cert::backdrop { background: rgba(0, 8, 24, .9); -webkit-backdrop-filter: blur(6px); backdrop-filter: blur(6px); }
.cert__fig { display: grid; justify-items: center; gap: 14px; max-width: min(1000px, 100%); margin: 0; padding: 64px 16px 24px; }
.cert__img {
  width: auto; height: auto; max-width: 100%; max-height: calc(100vh - 170px); max-height: calc(100dvh - 170px);
  border-radius: 12px; background: #fff; box-shadow: 0 30px 80px rgba(0, 0, 0, .6);
}
.cert__pie { margin: 0; font: 600 14.5px/1.45 var(--ui); color: var(--blush); text-align: center; }
.cert__fig:focus { outline: none; }
/* Sin <dialog> (iOS 15.0-15.3): cerrados no se pintan, y el visor abierto va a pantalla completa por encima de todo. */
.cert:not([open]), .reg:not([open]) { display: none; }
.cert--respaldo { position: fixed; inset: 0; z-index: 60; background: rgba(0, 8, 24, .92); }
.cert__x,
.cert__nav { position: fixed; display: grid; place-items: center; padding: 0; border: 1px solid rgba(255, 255, 255, .28); color: #fff; cursor: pointer; }
.cert__x { top: 14px; right: 14px; width: 44px; height: 44px; border-radius: 12px; background: rgba(255, 255, 255, .1); font: 400 26px/1 var(--ui); }
.cert__nav { top: 50%; width: 46px; height: 46px; margin-top: -23px; border-radius: 50%; background: rgba(0, 29, 81, .7); font: 400 30px/1 var(--ui); }
.cert__nav--ant { left: 12px; }
.cert__nav--sig { right: 12px; }
.cert__x:focus-visible,
.cert__nav:focus-visible { outline: 3px solid #fff; outline-offset: 2px; }
/* En el teléfono las flechas van abajo, para no tapar los bordes del certificado. */
@media (max-width: 599px) {
  .cert__fig { padding-bottom: 84px; }
  .cert__img { max-height: calc(100vh - 190px); max-height: calc(100dvh - 190px); }
  .cert__nav { top: auto; bottom: 18px; margin-top: 0; }
  .cert__nav--ant { left: calc(50% - 58px); }
  .cert__nav--sig { right: calc(50% - 58px); }
}

/* ---------- Pie ---------- */
.foot { background: var(--noche); border-top: var(--hair-dark); color: var(--gris-azul); text-align: center; padding: 30px 0 38px; font: 400 13px/1.6 var(--ui); }
.foot nav { display: flex; flex-wrap: wrap; gap: 8px 18px; justify-content: center; }
.foot a { color: var(--blush); text-decoration: none; font-weight: 500; }
.foot a:hover { text-decoration: underline; }
.foot p { margin: 12px auto 0; max-width: 60ch; }

/* ---------- Modal de registro ---------- */
/* color-scheme: la barra de desplazamiento interna sale oscura también con el tema claro del sistema.
   overscroll-behavior: al llegar al final del formulario, el deslizamiento ya no arrastra la página de detrás. */
.reg { border: 0; padding: 0; width: min(560px, calc(100% - 24px)); max-height: calc(100% - 24px); border-radius: 20px; background: var(--imperial); color: var(--blush); box-shadow: 0 40px 80px -20px rgba(0, 0, 0, .7); color-scheme: dark; overscroll-behavior: contain; }
.reg::backdrop { background: rgba(0, 13, 38, .74); -webkit-backdrop-filter: blur(3px); backdrop-filter: blur(3px); }
.reg__inner { display: flex; flex-direction: column; max-height: calc(100vh - 24px); }
.reg__head { display: flex; align-items: center; gap: 12px; padding: 16px 18px; border-bottom: 1px solid var(--imperial-line); }
.reg__head svg { width: 40.2px; height: 30px; flex: 0 0 auto; color: #fff; }
.reg__title { margin: 0; font: 700 15px/1.3 var(--ui); }
.reg__when { margin: 2px 0 0; font: 600 12.5px/1.3 var(--ui); color: var(--plata); }
/* flex 0 0 36px: dentro de la cabecera encogía y salía ovalado a 390. */
.reg__close { margin-left: auto; flex: 0 0 36px; width: 36px; height: 36px; border-radius: 50%; border: 1px solid var(--imperial-line); background: transparent; color: var(--blush); font: 400 22px/1 var(--ui); cursor: pointer; }
/* scroll-padding-top: al enfocar un campo con error (el email), Safari lo dejaba medio tapado por arriba. */
.reg__body { padding: 18px 18px 6px; overflow: auto; overscroll-behavior: contain; scroll-padding-top: 64px; }
.reg__body h2 { margin: 0 0 16px; font: 400 27px/1.15 var(--serif); letter-spacing: -.01em; }
.field { margin-bottom: 14px; }
/* Sin los :not(), «.field label» y «.field legend» ganaban a .opt y .q: las opciones salían en bloque, a 13 px y
   con el círculo descolocado, y la pregunta salía a 13 px. */
.field label:not(.opt), .field legend:not(.q) { display: block; margin-bottom: 6px; font: 600 13px/1.3 var(--ui); color: var(--hielo); }
.input, .select {
  width: 100%; min-height: 48px; padding: 12px 14px;
  border-radius: 12px; border: 1px solid rgba(188, 203, 221, .35); background: var(--imperial-hondo); color: #fff;
  font: 400 16px/1.2 var(--ui);
}
.input::placeholder { color: #8796ad; }
.input:focus, .select:focus { outline: 2px solid var(--hielo); outline-offset: 1px; border-color: transparent; }
.input[aria-invalid="true"] { border-color: #f87171; }
/* Flecha propia (la nativa cambia por sistema y en iPhone no se puede probar aquí). */
.select {
  -webkit-appearance: none; appearance: none; padding-left: 12px; padding-right: 32px; cursor: pointer;
  background: var(--imperial-hondo) url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 8'%3E%3Cpath d='M1 1.5l5 5 5-5' fill='none' stroke='%23bccbdd' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E") right 12px center / 12px 8px no-repeat;
}
.phone { display: grid; grid-template-columns: minmax(118px, 42%) 1fr; gap: 8px; }
/* En teléfono, país y número uno debajo del otro: lado a lado se cortaban el país y el «Número de WhatsApp» (y entre
   500 y 599 px, «+1 Estados Unidos» y «Rep. Dominicana»). */
@media (max-width: 599px) {
  .phone { grid-template-columns: 1fr; }
}
fieldset.field { border: 0; padding: 0; margin: 4px 0 14px; }
.q { margin: 0 0 10px; padding: 0; font: 400 15.5px/1.45 var(--ui); color: var(--hielo); }
.q strong { color: #fff; }
.opt { display: flex; align-items: center; gap: 10px; min-height: 46px; padding: 10px 14px; margin-bottom: 8px; border-radius: 12px; border: 1px solid rgba(188, 203, 221, .3); background: var(--imperial-hondo); cursor: pointer; font: 500 15px/1.3 var(--ui); }
/* Círculo y casilla dibujados aquí: con <meta name="color-scheme" content="dark light">, los nativos salen grises en
   los teléfonos en modo oscuro. Con colores forzados (alto contraste de Windows) vuelven los nativos. */
.opt input {
  -webkit-appearance: none; appearance: none;
  width: 20px; height: 20px; margin: 0; flex: 0 0 auto;
  border: 2px solid var(--hielo); border-radius: 50%; background: transparent; cursor: pointer;
}
.opt input[type="checkbox"] { border-radius: 6px; }
.opt input:checked { border-color: var(--frambuesa-clara); }
.opt input[type="radio"]:checked { background: radial-gradient(circle, var(--frambuesa-clara) 0 4.5px, transparent 5px); }
.opt input[type="checkbox"]:checked { background: var(--frambuesa-clara) url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3E%3Cpath d='M3.5 8.5l3 3 6-7' fill='none' stroke='%23fff' stroke-width='2.4' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E") center / 14px 14px no-repeat; }
.opt input:focus-visible { outline: 2px solid var(--hielo); outline-offset: 2px; }
@media (forced-colors: active) {
  .opt input, .select { -webkit-appearance: auto; appearance: auto; }
  .select { background-image: none; }
}
.opt:has(input:checked) { border-color: var(--frambuesa-clara); background: rgba(140, 29, 79, .35); }
.err { margin: 6px 0 0; font: 500 13px/1.35 var(--ui); color: #fca5a5; min-height: 0; }
/* Si falta elegir el nivel (o la casilla), «Elige una opción.» queda por debajo de lo que se ve del modal y al
   enviar no pasaba nada en pantalla: las opciones sin marcar se ponen en rojo hasta que se elige. El scroll-margin
   lleva a la vista algo más que el primer círculo o el campo que el JS enfoca. */
fieldset.field:has(.err:not(:empty)):not(:has(input:checked)) .opt,
div.field:has(> .err:not(:empty)) > .opt:not(:has(input:checked)) { border-color: #f87171; }
fieldset.field .opt:first-of-type input { scroll-margin-bottom: 200px; }
.field .input, .field .select { scroll-margin-bottom: 32px; }
.hp { position: absolute; left: -9999px; width: 1px; height: 1px; overflow: hidden; }
.reg__foot { padding: 14px 18px 18px; border-top: 1px solid var(--imperial-line); background: var(--imperial); }
.reg__legal { margin: 10px 0 0; text-align: center; font: 400 12px/1.45 var(--ui); color: var(--hielo); }
.reg__legal a { color: var(--blush); }
.reg__status { margin: 10px 0 0; text-align: center; font: 600 13.5px/1.4 var(--ui); color: #fca5a5; }
.reg__status:empty { display: none; }
.reg__fallback[hidden] { display: none; }
.reg__fallback { margin: 8px 0 0; text-align: center; font: 400 13px/1.45 var(--ui); color: var(--hielo); }
.reg__fallback a { color: var(--blush); font-weight: 700; }
.field__hint { font-weight: 400; color: var(--hielo); }

/* ---------- Página de gracias: hero de la referencia, cuerpo blush ---------- */
.ty { background: var(--blush); color: var(--ink); }
.ty-alert { margin: 0; padding: 11px 16px; text-align: center; background: var(--btn-frambuesa); color: #fff; font: 600 14px/1.35 var(--ui); }
.ty-hero { position: relative; overflow: hidden; text-align: center; padding: 38px 0 44px; color: var(--blush); background: var(--hero-bg); }
.progress { max-width: 380px; margin: 0 auto; }
.progress__bar { height: 10px; border-radius: 999px; background: rgba(188, 203, 221, .18); overflow: hidden; }
.progress__fill { height: 100%; width: 80%; border-radius: inherit; background: linear-gradient(90deg, var(--frambuesa), var(--frambuesa-claro)); box-shadow: 0 0 16px rgba(168, 51, 106, .7); }
.progress__t { display: flex; justify-content: space-between; margin-top: 10px; font: 600 12.5px/1 var(--ui); color: var(--plata); letter-spacing: .04em; }
.ty-hero h1 { margin: 26px auto 0; max-width: 20ch; font: 400 clamp(36px, 6.4vw, 58px)/1.04 var(--serif); letter-spacing: -.02em; }
/* inline-block: «Te falta un paso.» no se parte (con el nombre delante tampoco) y se pinta la cola de la «p» también
   en Safari, que ignora box-decoration-break. */
.ty-hero h1 em { display: inline-block; padding: 0 .1em; margin: 0 -.1em; }
.ty-hero p { margin: 16px auto 0; max-width: 40ch; color: var(--hielo); font: 400 16.5px/1.55 var(--ui); }
.ty-hero p strong { color: var(--blush); }
.video-slot {
  max-width: 360px; margin: 24px auto 0; aspect-ratio: 9 / 16; border-radius: 18px; overflow: hidden;
  background: var(--imperial-hondo) url('../img/ameyalli-retrato.webp') center / cover no-repeat;
  border: 1px solid var(--imperial-line); position: relative;
}
.video-slot__note {
  position: absolute; inset: auto 0 0 0; padding: 14px; background: linear-gradient(0deg, rgba(0, 22, 63, .92), rgba(0, 22, 63, 0));
  font: 600 13px/1.4 var(--ui); color: var(--blush);
}
/* Sin video todavía, el hueco SOLO se ve en local (lanzamiento.js pone <html class="es-local">): en producción no se
   publica un «[VIDEO PENDIENTE]». Oculto por defecto, así que tampoco aparece si el JS falla. Con el video listo:
   el <video> va dentro de .video-slot y se quita data-pendiente. */
.video-slot[data-pendiente] { display: none; }
.es-local .video-slot[data-pendiente] { display: block; }
.steps { display: grid; gap: 14px; padding: 28px 0 28px; }
.step { background: var(--card); border: 1px solid var(--linea-beige); border-radius: var(--radius-lg); padding: 24px 22px; }
.step--main { background: var(--card-bg); border: var(--hair-dark); color: var(--blush); }
.step__k { font: 600 12px/1 var(--ui); letter-spacing: .12em; text-transform: uppercase; color: var(--frambuesa); }
.step--main .step__k { color: var(--rosa); }
.step h2 { margin: 10px 0 8px; font: 400 27px/1.15 var(--serif); color: var(--ink); }
.step--main h2 { color: var(--blush); }
.step p { margin: 0 0 14px; font: 400 15px/1.55 var(--ui); color: var(--ink-soft); }
.step--main p { color: var(--hielo); }
.step p:last-child { margin-bottom: 0; }
.step .cta { margin-top: 2px; }
/* Uno debajo del otro también en escritorio: en la tarjeta de media columna, lado a lado partían en dos líneas. */
.cal-links { display: grid; gap: 10px; }
.btn-ghost { display: inline-flex; align-items: center; justify-content: center; gap: 8px; min-height: 48px; padding: 12px 22px; border-radius: 999px; border: 1px solid var(--linea-beige); color: var(--ink); text-align: center; text-decoration: none; font: 600 15px/1.2 var(--ui); background: transparent; cursor: pointer; }
.btn-ghost:hover { border-color: var(--frambuesa); color: var(--frambuesa); }
.ty .countdown { margin: 4px 0 28px; }
.ty-bye { text-align: center; padding: 8px 0 52px; }
.ty-bye h2 { margin: 0; font: 400 clamp(30px, 4.4vw, 44px)/1.1 var(--serif); letter-spacing: -.02em; color: var(--ink); }
.ty-bye p { margin: 12px auto 0; max-width: 42ch; color: var(--ink-soft); font: 400 15.5px/1.55 var(--ui); }
.ty-bye .localtime { color: var(--muted); }
.ty-bye strong { color: var(--frambuesa); }

.ty-ya[hidden] { display: none; }
.ty-ya { margin: 12px auto 0; max-width: 40ch; padding: 10px 14px; border-radius: 12px; background: rgba(72, 108, 97, .3); border: 1px solid rgba(143, 181, 167, .55); color: #e3f0eb; font: 600 14.5px/1.45 var(--ui); }

/* ---------- Bono en vivo: sorteo, en frambuesa ---------- */
.bonus {
  position: relative; overflow: hidden;
  margin-top: 24px; padding: 28px 24px; border-radius: var(--radius-lg);
  /* Sin brillo claro encima: con él, el texto pequeño en blush bajaba a 3.9:1 en la esquina (tools/contraste-referencia.mjs). */
  background: linear-gradient(160deg, var(--frambuesa-claro) 0%, var(--frambuesa) 55%, var(--frambuesa-osc) 100%);
  color: #fff; border: 1px solid rgba(255, 255, 255, .14);
  box-shadow: 0 24px 50px -26px rgba(107, 20, 64, .75);
}
.bonus__k { display: table; margin: 0; padding: 6px 14px; border-radius: 999px; border: 1px solid rgba(255, 255, 255, .35); font: 600 12px/1.3 var(--ui); letter-spacing: .12em; text-transform: uppercase; color: #fff; }
.bonus__t { margin: 16px 0 0; font: 400 clamp(28px, 3.6vw, 40px)/1.1 var(--serif); letter-spacing: -.015em; color: var(--blush); }
.bonus__t strong { font-style: italic; font-weight: 400; color: #fff; }
.bonus__p { margin: 10px 0 0; font: 500 15.5px/1.5 var(--ui); color: var(--blush); }
.bonus__fine { margin: 14px 0 0; font: 400 13px/1.45 var(--ui); color: var(--blush); }
.bonus__fine a { color: #fff; font-weight: 700; }

/* ---------- Tableta y escritorio ---------- */
@media (min-width: 600px) {
  .pillars { grid-template-columns: repeat(2, 1fr); }
  .countdown { padding: 30px 32px; }
  .bonus { padding: 34px 36px; }
}
@media (min-width: 760px) {
  body { font-size: 18px; }
  .countdown { grid-template-columns: 1fr auto; align-items: center; padding: 32px 40px; }
  /* 84 y no 76 (la referencia): aquí los rótulos van completos y «SEGUNDOS» tocaba el borde. */
  .countdown__grid { grid-template-columns: repeat(4, 88px); gap: 14px; }
  /* En la gracias, el texto arriba y las cajas debajo: lado a lado, la fecha salía en 3 renglones. */
  .ty .countdown { grid-template-columns: 1fr; }
  .mentor { grid-template-columns: 1.1fr .9fr; gap: 64px; }
  .fit { grid-template-columns: 1fr 1fr; }
  .fit--single { grid-template-columns: 1fr; }
  .fit__col { padding: 36px 34px; }
  .faq { grid-template-columns: .8fr 1.2fr; gap: 48px; align-items: start; }
  .steps { grid-template-columns: 1fr 1fr; }
  .step--main { grid-column: 1 / -1; }
}
@media (min-width: 1000px) {
  .pillars { grid-template-columns: repeat(4, 1fr); }
  .hero--video { padding: 128px 0 120px; }
}

@media (prefers-reduced-motion: reduce) {
  html { scroll-behavior: auto; }
  .cta { transition: none; }
  .cta:hover { transform: none; }
  .cta--vivo, .cta--vivo::after,
  .video__luz::before, .video__luz::after,
  .cifras::before, .cifras::after { animation: none; }
  .video__btn img, .video__play { transition: none; }
  .video__btn:hover img, .video__btn:hover .video__play { transform: none; }
  .muro__fila { overflow-x: auto; overscroll-behavior-x: contain; }
}
/* Con un diálogo abierto (registro o visor), las animaciones infinitas de detrás se paran: nadie las ve. */
html:has(dialog[open]) .cta--vivo, html:has(dialog[open]) .cta--vivo::after,
html:has(dialog[open]) .video__luz::before, html:has(dialog[open]) .video__luz::after,
html:has(dialog[open]) .cifras::before, html:has(dialog[open]) .cifras::after { animation-play-state: paused; }
