/* ============================================================================
   IA² WEEK — estilos de la landing.

   Los colores, las tipografias, el reset y los anchos de caja estan en
   ia2week-tokens.css, que se encola ANTES que este archivo. Aqui no se escribe
   ni un hexadecimal: todo sale de las variables --iaw-*.

   COMO SE LEE ESTE ARCHIVO. La maqueta original (IA2 Week Landing) llevaba los
   estilos escritos a mano en el atributo style de cada etiqueta. Aqui esta lo
   mismo, en clases con prefijo iaw-, en el orden en que las secciones aparecen
   en la pagina:

     0 · Piezas comunes      cajas, rotulos, titulares, parrafos, botones
     1 · Barra superior      la unica cosa fija de la pagina
     2 · Hero                titular, datos del evento y formulario
     3 · Las tres preguntas  seccion oscura con tarjetas de vidrio
     4 · El concepto         seccion clara con las dos IA
     5 · Agenda              lo que se demuestra + para quien es
     6 · Preguntas frecuentes
     7 · Cierre
     8 · Pie
    8B · La pagina de gracias (/thank-you-page-aiweek/)
    8C · La pagina 404
     9 · Boton fijo de movil
    10 · Animaciones

   TODO cuelga de .ia2week-landing, la clase del <body> — que la llevan LAS DOS
   paginas del paquete, la landing y la de gracias: es la clase del paquete y de
   ella cuelgan el reset y la paleta. No es cosmetico: este CSS pinta el body
   entero, asi que si se colara en otra pagina se la comeria. La clase es lo que
   garantiza que no pueda pasar.

   La pagina de gracias lleva ademas .ia2week-gracias, y de ahi cuelga solo lo que
   en ella es distinto (seccion 8B).
   ============================================================================ */


/* ═══════════════════════════════════════════════════════════════════════════
   0 · PIEZAS COMUNES

   Las secciones alternan fondo claro y fondo oscuro. En vez de duplicar cada
   componente en dos versiones, los componentes se definen para fondo CLARO y
   las secciones oscuras llevan la clase .iaw-oscuro, que reasigna los colores.
   Un componente nuevo solo tiene que declarar su color claro y, si va a
   aparecer sobre morado, su linea correspondiente en el bloque de .iaw-oscuro.
   ═══════════════════════════════════════════════════════════════════════════ */

/* La caja de contenido de una seccion. 96px arriba y abajo es el ritmo de toda
   la pagina; en movil baja a 64 (ver el bloque responsive al final). */
.ia2week-landing .iaw-caja{
  max-width:var(--iaw-caja);
  margin:0 auto;
  padding:96px 24px;
  display:flex;
  flex-direction:column;
  gap:40px;
}

/* Encabezado de seccion: rotulo, titular y parrafos de entrada. Se limita el
   ancho a 760px porque un titular de 3rem a todo lo ancho de 1080 se lee de
   lado a lado y cansa. */
.ia2week-landing .iaw-intro{
  max-width:760px;
  display:flex;
  flex-direction:column;
  gap:18px;
}

.ia2week-landing .iaw-rotulo{
  font-size:13px;
  font-weight:600;
  letter-spacing:.18em;
  text-transform:uppercase;
  color:var(--iaw-vio);
}

.ia2week-landing .iaw-titulo{
  font-weight:700;
  font-size:clamp(2rem, 4vw, 3rem);
  line-height:1.15;
  letter-spacing:-.02em;
  color:var(--iaw-ink);
  text-wrap:pretty;   /* evita la palabra huerfana en la ultima linea */
}

.ia2week-landing .iaw-parrafo{
  font-size:18px;
  line-height:1.6;
  color:var(--iaw-tinta);
}

/* Fondo morado: los mismos componentes, otros colores. */
.ia2week-landing .iaw-oscuro .iaw-rotulo{ color:var(--iaw-vio-hi); }
.ia2week-landing .iaw-oscuro .iaw-titulo{ color:var(--iaw-blanco); }
.ia2week-landing .iaw-oscuro .iaw-parrafo{ color:var(--iaw-crema); }

/* Realces dentro de un titular o un parrafo. El "fuerte" ademas pone negrita:
   se usa para la sigla IA², que es marca y no enfasis. */
.ia2week-landing .iaw-realce{ color:var(--iaw-vio-hi); }
.ia2week-landing .iaw-realce-fuerte{ color:var(--iaw-vio-hi); font-weight:700; }

/* El 2 de IA². Va en <sup> real y no como texto "IA2" para que un lector de
   pantalla lo lea bien y para que se pueda copiar. El tamaño relativo es el de
   la maqueta: .65em dentro de texto y .7em en la barra. */
.ia2week-landing .iaw-exp{ font-size:.65em; }

/* Cita al pie de seccion, en lila. Es un remate, no un parrafo mas: por eso va
   en un tono mas bajo que el cuerpo. */
.ia2week-landing .iaw-nota{
  font-size:18px;
  line-height:1.6;
  color:var(--iaw-lila);
  max-width:720px;
}

/* ── Botones ────────────────────────────────────────────────────────────────
   Tres variantes y ninguna es un <button>: los cuatro llevan a un ancla o a
   otra pagina, asi que son enlaces. Un <button> aqui obligaria a JavaScript
   para navegar y rompe abrir en pestaña nueva. */
.ia2week-landing .iaw-boton{
  display:inline-block;
  background:var(--iaw-vio);
  color:var(--iaw-blanco);
  text-decoration:none;
  font-weight:600;
  font-size:15px;
  padding:11px 22px;
  border-radius:var(--iaw-r-sm);
  box-shadow:0 8px 24px rgba(133,32,214,.35);
  transition:background .2s, transform .2s;
  white-space:nowrap;
}
.ia2week-landing .iaw-boton:hover,
.ia2week-landing .iaw-boton:focus-visible{
  background:var(--iaw-vio-hi);
  color:var(--iaw-blanco);
  transform:translateY(-2px);
}

/* Secundario: contorno violeta sobre el morado del hero. Sin relleno y sin
   sombra, para que no compita con el boton de reservar. */
.ia2week-landing .iaw-boton--fantasma{
  background:transparent;
  border:1px solid var(--iaw-vio-hi);
  font-size:16px;
  padding:13px 26px;
  box-shadow:none;
  transition:background .2s;
}
.ia2week-landing .iaw-boton--fantasma:hover,
.ia2week-landing .iaw-boton--fantasma:focus-visible{
  background:rgba(195,78,252,.12);
  color:var(--iaw-blanco);
  transform:none;
}

/* Un punto mas grande que el de la barra. Lo usan los botones que son la accion
   principal de su pantalla y no compiten con nada: los de la pagina de gracias y
   los de la 404.

   El selector combinado de abajo hace falta por el orden: --fantasma ya declara
   su propio relleno, y con las dos clases sueltas ganaria la que este declarada
   despues. Con los dos nombres en el mismo selector la especificidad es mayor y
   no depende del orden. */
.ia2week-landing .iaw-boton--md{
  font-size:16px;
  padding:15px 32px;
  box-shadow:0 12px 32px rgba(133,32,214,.45);
}
.ia2week-landing .iaw-boton--fantasma.iaw-boton--md{
  padding:14px 28px;
  box-shadow:none;
}

/* El del cierre: es el ultimo de la pagina y el unico a la vista en ese
   momento, asi que se permite ser grande. */
.ia2week-landing .iaw-boton--grande{
  font-size:19px;
  padding:18px 44px;
  box-shadow:0 14px 40px rgba(133,32,214,.5);
}


/* ═══════════════════════════════════════════════════════════════════════════
   1 · BARRA SUPERIOR

   Lo unico fijo de la pagina. Lleva el logotipo, los datos del evento y el
   boton de reservar; ni menu ni anclas de navegacion, porque en una landing de
   inscripcion cada enlace es una salida.

   El fondo es morado translucido con desenfoque: el hero pasa por debajo y se
   ve, pero el texto sigue legible. Donde no haya backdrop-filter (Firefox con
   la opcion desactivada) queda el color al 88 %, que tambien contrasta.
   ═══════════════════════════════════════════════════════════════════════════ */
.ia2week-landing .iaw-barra{
  position:sticky;
  top:0;
  z-index:50;
  background:rgba(30,14,41,.88);
  -webkit-backdrop-filter:blur(12px);
  backdrop-filter:blur(12px);
  border-bottom:1px solid rgba(195,78,252,.18);
}

.ia2week-landing .iaw-barra-caja{
  max-width:var(--iaw-caja-barra);
  margin:0 auto;
  padding:12px 24px;
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:24px;
}

.ia2week-landing .iaw-barra-logo{ display:flex; align-items:center; }
.ia2week-landing .iaw-barra-logo img{ height:40px; width:auto; display:block; }

.ia2week-landing .iaw-barra-datos{
  display:flex;
  align-items:center;
  gap:12px;
  font-size:14px;
  font-weight:500;
  color:var(--iaw-crema);
}
.ia2week-landing .iaw-barra-marca{ font-weight:700; }
.ia2week-landing .iaw-barra-marca .iaw-exp{ color:var(--iaw-vio-hi); font-size:.7em; }
.ia2week-landing .iaw-barra-sep{ color:var(--iaw-lila); }
/* Los datos del evento no se parten en dos lineas: son tres piezas cortas y
   partidas se leen como texto suelto. */
.ia2week-landing .iaw-barra-datos > span{ white-space:nowrap; }

/* "Evento finalizado" en la barra, donde antes iban la fecha y el lugar. Va como
   pastilla y no como texto suelto porque es un ESTADO, no un dato mas: en la
   barra conviven con el nombre del evento y hay que poder distinguirlos de un
   golpe de vista. Sin fondo violeta lleno, que ahi lo confundiria con el boton
   que acaba de desaparecer del otro extremo de la barra. */
.ia2week-landing .iaw-barra-cerrado{
  padding:4px 12px;
  border:1px solid var(--iaw-canto-hi);
  border-radius:999px;
  background:var(--iaw-vidrio-hi);
  font-weight:600;
  color:var(--iaw-vio-hi);
}

/* ── La barra de las paginas secundarias ────────────────────────────────────
   La de gracias y la 404 comparten parts/ia2week/header-simple.php: la misma
   barra, con el logotipo suelto (sin el <a> que lo envuelve en la landing) y sin
   los datos del evento.

   Las dos reglas van por esta clase y no por la clase de cada pagina: asi la
   barra se estiliza sola donde se use, y añadir una tercera pagina que la
   reutilice no obliga a tocar el CSS. */
.ia2week-landing .iaw-barra--simple .iaw-barra-caja > img{
  height:40px;
  width:auto;
  display:block;
}

/* Mas pequeño que el resto: es una salida secundaria, no la accion de la
   pantalla — que en las dos paginas esta en el cuerpo y en grande. */
.ia2week-landing .iaw-barra--simple .iaw-boton{
  font-size:14px;
  padding:10px 20px;
}


/* ═══════════════════════════════════════════════════════════════════════════
   2 · HERO

   Dos columnas: a la izquierda el argumento, a la derecha el formulario. El
   formulario esta EN LA PRIMERA PANTALLA a proposito — quien ya venia decidido
   se inscribe sin bajar, y quien no, tiene el argumento al lado.

   Las seis capas del fondo, de atras hacia delante:

     1 · el degradado morado, en el background de la propia <section>
     2 · .iaw-hero-foto     la fotografia, en multiply al 55 %
     3 · .iaw-hero-puntos   dos tramas de puntos en las esquinas
     4 · .iaw-hero-malla    la cuadricula de lineas
     5 · .iaw-hero-nodos    la malla de nodos animada (un <canvas>)
     6 · .iaw-hero-halo     los dos focos de luz, que van encima (z-index:1)

   El orden importa y es el de la maqueta: el halo tiene z-index 1 y por tanto
   ilumina la fotografia, las tramas y los nodos, en vez de quedar debajo. El
   contenido lleva z-index 2 para estar por encima de todo.

   Ninguna capa recibe el raton (pointer-events:none) ni existe para un lector
   de pantalla (aria-hidden en el HTML): son decoracion.
   ═══════════════════════════════════════════════════════════════════════════ */
.ia2week-landing .iaw-hero{
  position:relative;
  overflow:hidden;
  background:linear-gradient(180deg, var(--iaw-grape) 0%, var(--iaw-field) 52%, var(--iaw-grape) 100%);
}

.ia2week-landing .iaw-hero-capa{
  position:absolute;
  pointer-events:none;
}

/* La fotografia. mix-blend-mode:multiply la funde con el morado en vez de
   pegarla encima: los blancos de la imagen desaparecen y los oscuros suman.
   Por eso el archivo es un JPEG aplanado sobre BLANCO y no un PNG con
   transparencia — multiplicar por blanco no cambia nada, asi que el resultado
   en pantalla es identico y el archivo pesa 173 KB en vez de 1,5 MB. */
.ia2week-landing .iaw-hero-foto{
  inset:0;
  background-image:url('../img/iaw-hero-fondo.jpg');
  background-size:cover;
  background-position:center bottom;
  mix-blend-mode:multiply;
  opacity:.55;
}

/* Las tramas de puntos. El degradado radial repetido dibuja el punto y el mask
   lo desvanece hacia el centro de la pagina, para que la trama no termine en un
   corte recto. */
.ia2week-landing .iaw-hero-puntos--der{
  right:0; top:0;
  width:340px; height:340px;
  opacity:.08;
  background-image:radial-gradient(var(--iaw-vio-hi) 2px, transparent 2.5px);
  background-size:24px 24px;
  -webkit-mask-image:radial-gradient(closest-side at 100% 0%, #000, transparent);
  mask-image:radial-gradient(closest-side at 100% 0%, #000, transparent);
}
.ia2week-landing .iaw-hero-puntos--izq{
  left:0; bottom:0;
  width:300px; height:300px;
  opacity:.06;
  background-image:radial-gradient(var(--iaw-cian) 1.5px, transparent 2px);
  background-size:20px 20px;
  -webkit-mask-image:radial-gradient(closest-side at 0% 100%, #000, transparent);
  mask-image:radial-gradient(closest-side at 0% 100%, #000, transparent);
}

.ia2week-landing .iaw-hero-malla{
  inset:0;
  opacity:.05;
  background-image:
    linear-gradient(rgba(195,78,252,.6) 1px, transparent 1px),
    linear-gradient(90deg, rgba(195,78,252,.6) 1px, transparent 1px);
  background-size:72px 72px;
  -webkit-mask-image:radial-gradient(70% 60% at 30% 40%, #000, transparent);
  mask-image:radial-gradient(70% 60% at 30% 40%, #000, transparent);
}

/* La misma cuadricula, pero centrada. La usa la pagina de gracias, donde el
   contenido esta centrado y no a la izquierda: con la mascara del hero, la
   cuadricula se veria descuadrada respecto al texto. */
.ia2week-landing .iaw-hero-malla--centrada{
  -webkit-mask-image:radial-gradient(70% 60% at 50% 30%, #000, transparent);
  mask-image:radial-gradient(70% 60% at 50% 30%, #000, transparent);
}

/* ── La malla de nodos ──────────────────────────────────────────────────────
   Un <canvas> que lo pinta assets/js/ia2week.js: nodos que derivan despacio y se
   unen con una linea cuando se acercan. Es el signo de marca en movimiento y
   esta portado de gerpro-landing-child, donde ya estaba resuelto.

   Va DENTRO del hero y no en toda la pagina: el lienzo mide el hero, asi que
   pintar 5.000px de malla para que se vea el primer tercio seria gastar bateria
   en lo que nadie mira. El JS ademas apaga el bucle cuando el hero sale de
   pantalla.

   La mascara es lo que hace que la malla no estorbe. En el tema hermano la
   apagaba del todo sobre la columna de texto; aqui la deja al 42 % ahi y a plena
   intensidad de la mitad hacia la derecha, que es donde esta el formulario. Los
   nodos se ven en todo el hero —es lo que se pidio— pero detras del titular y de
   los dos parrafos pasan a ser una insinuacion en vez de suciedad.

   Detras de la tarjeta del formulario los nodos quedan ademas difuminados por su
   backdrop-filter, que es justo el efecto que se buscaba: se ven a traves del
   vidrio. */
.ia2week-landing .iaw-hero-nodos{
  inset:0;
  z-index:0;
  width:100%;
  height:100%;
  -webkit-mask-image:linear-gradient(100deg, rgba(0,0,0,.42) 6%, rgba(0,0,0,.62) 32%, #000 62%);
  mask-image:linear-gradient(100deg, rgba(0,0,0,.42) 6%, rgba(0,0,0,.62) 32%, #000 62%);
}

/* Version centrada, para la 404: ahi el contenido esta en el medio, asi que la
   mascara baja la intensidad en el centro y la sube hacia los bordes. Al
   contrario que en la landing, donde lo que hay que despejar es la columna
   izquierda. */
.ia2week-landing .iaw-hero-nodos--centrada{
  -webkit-mask-image:radial-gradient(58% 58% at 50% 46%, rgba(0,0,0,.16), #000 92%);
  mask-image:radial-gradient(58% 58% at 50% 46%, rgba(0,0,0,.16), #000 92%);
}

/* En una pantalla estrecha las dos columnas se apilan: el texto ocupa todo el
   ancho y una mascara lateral ya no distingue nada. Se cambia por una vertical,
   que baja la intensidad arriba —donde estan el lockup y el titular— y la sube
   hacia el formulario. */
@media (max-width:900px){
  .ia2week-landing .iaw-hero-nodos{
    -webkit-mask-image:linear-gradient(180deg, rgba(0,0,0,.22) 0%, rgba(0,0,0,.45) 38%, #000 78%);
    mask-image:linear-gradient(180deg, rgba(0,0,0,.22) 0%, rgba(0,0,0,.45) 38%, #000 78%);
  }
}

/* Los focos de luz. inset:-10% para que el borde del degradado quede FUERA del
   recuadro: si empezara en 0 se veria la linea donde acaba. La deriva
   (heroDrift) es lentisima —22 s— para que se note como que la luz respira y no
   como una animacion. */
.ia2week-landing .iaw-hero-halo{
  inset:-10%;
  z-index:1;
  background:
    radial-gradient(60% 55% at 70% 25%, rgba(133,32,214,.45), transparent 65%),
    radial-gradient(40% 38% at 10% 90%, rgba(89,242,237,.10), transparent 60%);
  animation:iawDeriva 22s ease-in-out infinite alternate;
}

.ia2week-landing .iaw-hero-caja{
  position:relative;
  z-index:2;
  max-width:var(--iaw-caja-ancha);
  margin:0 auto;
  padding:clamp(48px, 7vh, 88px) 24px;
  display:grid;
  /* auto-fit con minimo 340px: en pantalla ancha son dos columnas y en tableta
     o movil pasa a una sola sin necesidad de media query. */
  grid-template-columns:repeat(auto-fit, minmax(340px, 1fr));
  gap:56px;
  align-items:center;
}

.ia2week-landing .iaw-hero-texto{
  display:flex;
  flex-direction:column;
  gap:22px;
}

/* El lockup de IA² Week. Ancho fluido: 300px minimo, 480 maximo. Lleva width y
   height en el HTML para que el navegador reserve el sitio y la pagina no salte
   cuando la imagen carga. */
.ia2week-landing .iaw-hero-lockup{
  width:clamp(300px, 34vw, 480px);
  height:auto;
  display:block;
}

.ia2week-landing .iaw-hero-cuando{
  display:flex;
  flex-direction:column;
  gap:6px;
}

/* La fecha es lo mas grande del hero despues del lockup: es el dato que decide
   si alguien puede asistir. */
.ia2week-landing .iaw-hero-fecha{
  font-weight:800;
  font-size:clamp(1.7rem, 3vw, 2.5rem);
  letter-spacing:-.01em;
  color:var(--iaw-vio-hi);
}

/* La misma fecha del hero cuando el evento ya paso. Baja un punto de tamaño
   —"Evento finalizado" es mas largo que "19 de agosto de 2026" y a 2.5rem se
   parte en dos lineas en tableta— y pierde el violeta claro: ese tono es el de
   la llamada a la accion, y aqui no hay accion que llamar. */
.ia2week-landing .iaw-hero-fecha--cerrado{
  font-size:clamp(1.5rem, 2.6vw, 2.1rem);
  color:var(--iaw-blanco);
}

.ia2week-landing .iaw-hero-detalle{
  font-size:17px;
  font-weight:600;
  color:var(--iaw-crema);
}

/* El titular NO es lo mas grande de la pagina, y es deliberado: compite con la
   fecha y con el lockup, que son los que responden "que es esto y cuando es". */
.ia2week-landing .iaw-hero-titulo{
  font-weight:700;
  font-size:clamp(1.45rem, 2.3vw, 2rem);
  line-height:1.3;
  letter-spacing:-.01em;
  color:var(--iaw-blanco);
  text-wrap:pretty;
}

.ia2week-landing .iaw-hero-bajada{
  font-size:18px;
  line-height:1.6;
  color:var(--iaw-crema);
  max-width:540px;
}

.ia2week-landing .iaw-hero-parrafo{
  font-size:17px;
  line-height:1.6;
  color:var(--iaw-crema);
  max-width:520px;
}

.ia2week-landing .iaw-hero-botones{
  display:flex;
  flex-wrap:wrap;
  gap:14px;
  align-items:center;
}

.ia2week-landing .iaw-hero-firma{
  font-size:14px;
  color:var(--iaw-lila);
}

/* ── La tarjeta del formulario ──────────────────────────────────────────────
   El formulario en si es un iframe de Zoho Forms: los datos van directos al
   CRM y WordPress no guarda nada. Es la diferencia con gerpro-landing-child,
   que trae formulario propio con tipo de contenido y correo de aviso.

   Consecuencia practica: el estilo de DENTRO del iframe se configura en Zoho,
   no aqui. Lo unico que se puede estilizar de este lado es la tarjeta que lo
   envuelve. */
.ia2week-landing .iaw-reserva{
  display:flex;
  flex-direction:column;
  gap:12px;
  width:100%;
  max-width:560px;
  justify-self:center;
  padding:32px 0;
}

.ia2week-landing .iaw-form{
  background:var(--iaw-vidrio-hi);
  border:1px solid var(--iaw-canto-hi);
  border-radius:var(--iaw-r);
  padding:20px 16px 16px;
  -webkit-backdrop-filter:blur(10px);
  backdrop-filter:blur(10px);
  box-shadow:0 24px 60px rgba(30,14,41,.45);
  display:flex;
  flex-direction:column;
  gap:10px;
}

.ia2week-landing .iaw-form-encabezado{
  display:flex;
  flex-direction:column;
  gap:4px;
  padding:0 8px;
}
.ia2week-landing .iaw-form-titulo{
  font-weight:700;
  font-size:22px;
  color:var(--iaw-blanco);
}
.ia2week-landing .iaw-form-sub{
  font-size:14px;
  color:var(--iaw-crema);
}

/* El alto va fijo y no en porcentaje: un iframe de otro dominio no le puede
   decir a la pagina cuanto mide, asi que no hay forma de ajustarlo solo. 780px
   es lo que ocupa el formulario de Zoho con los campos actuales — si se añade
   o se quita un campo, este numero hay que corregirlo a mano o el formulario
   sale con barra de desplazamiento propia.

   El ancho es 99% y no 100% por la misma razon que en la maqueta: a 100% el
   borde derecho del iframe se come el redondeo de la tarjeta. */
.ia2week-landing .iaw-form-marco{
  height:var(--iaw-form-alto, 780px);
  width:99%;
  border:none;
  background:transparent;
}

.ia2week-landing .iaw-reserva-nota{
  font-size:13px;
  color:var(--iaw-lila);
  text-align:center;
}

/* ── La tarjeta de "evento finalizado" ──────────────────────────────────────
   Ocupa el sitio exacto de la tarjeta del formulario —misma clase .iaw-form, o
   sea mismo vidrio, mismo borde y misma sombra— y solo cambia lo que tiene que
   cambiar: mas aire dentro y el texto centrado, porque son tres renglones y no
   un formulario de siete campos.

   El alto NO se fija: la variable --iaw-form-alto es del iframe de Zoho, que no
   puede medirse solo. Esto es texto y mide lo que mide. */
.ia2week-landing .iaw-form--cerrado{
  gap:14px;
  padding:40px 28px;
  text-align:center;
  align-items:center;
}

.ia2week-landing .iaw-cerrado-rotulo{
  font-size:13px;
  font-weight:600;
  letter-spacing:.18em;
  text-transform:uppercase;
  color:var(--iaw-vio-hi);
}

.ia2week-landing .iaw-cerrado-titulo{
  font-weight:700;
  font-size:clamp(1.5rem, 2.4vw, 1.9rem);
  line-height:1.2;
  letter-spacing:-.01em;
  color:var(--iaw-blanco);
  text-wrap:pretty;
}

.ia2week-landing .iaw-cerrado-texto{
  font-size:16px;
  line-height:1.6;
  color:var(--iaw-crema);
  max-width:38ch;
}


/* ═══════════════════════════════════════════════════════════════════════════
   3 · LAS TRES PREGUNTAS

   Seccion oscura. No dice "usted lo hizo mal": dice que lo que hizo esta bien y
   que lo que sigue son otras tres preguntas. Las tarjetas son de vidrio sobre
   el morado — blanco a muy baja opacidad con borde violeta.
   ═══════════════════════════════════════════════════════════════════════════ */
.ia2week-landing .iaw-preguntas{
  position:relative;
  overflow:hidden;
  background:var(--iaw-grape);
}

/* Trama de puntos de esquina, la misma idea que en el hero. Se declara aparte
   de las del hero porque estas van en secciones distintas y con tamaños
   distintos; la posicion la pone el modificador. */
.ia2week-landing .iaw-puntos{
  position:absolute;
  pointer-events:none;
  background-size:24px 24px;
}
.ia2week-landing .iaw-puntos--vio{
  background-image:radial-gradient(var(--iaw-vio-hi) 2px, transparent 2.5px);
}
.ia2week-landing .iaw-puntos--vio-oscuro{
  background-image:radial-gradient(var(--iaw-vio) 2px, transparent 2.5px);
}
.ia2week-landing .iaw-puntos--ii{         /* esquina inferior izquierda */
  left:0; bottom:0; width:280px; height:280px; opacity:.06;
  -webkit-mask-image:radial-gradient(closest-side at 0% 100%, #000, transparent);
  mask-image:radial-gradient(closest-side at 0% 100%, #000, transparent);
}
.ia2week-landing .iaw-puntos--sd{         /* esquina superior derecha */
  right:0; top:0; width:260px; height:260px; opacity:.08;
  -webkit-mask-image:radial-gradient(closest-side at 100% 0%, #000, transparent);
  mask-image:radial-gradient(closest-side at 100% 0%, #000, transparent);
}
.ia2week-landing .iaw-puntos--id{         /* esquina inferior derecha */
  right:0; bottom:0; width:340px; height:340px; opacity:.07;
  -webkit-mask-image:radial-gradient(closest-side at 100% 100%, #000, transparent);
  mask-image:radial-gradient(closest-side at 100% 100%, #000, transparent);
}
.ia2week-landing .iaw-puntos--si{         /* esquina superior izquierda */
  left:0; top:0; width:260px; height:260px; opacity:.06;
  -webkit-mask-image:radial-gradient(closest-side at 0% 0%, #000, transparent);
  mask-image:radial-gradient(closest-side at 0% 0%, #000, transparent);
}

/* La caja de contenido de una seccion con decoracion de fondo necesita
   position:relative para quedar por encima de las tramas. */
.ia2week-landing .iaw-caja--sobre-fondo{ position:relative; }

/* Rejilla de tarjetas. minmax(260px,1fr) da tres columnas en escritorio, dos en
   tableta y una en movil, sin media queries. */
.ia2week-landing .iaw-rejilla{
  display:grid;
  grid-template-columns:repeat(auto-fit, minmax(260px, 1fr));
  gap:20px;
}

.ia2week-landing .iaw-vidrio{
  background:var(--iaw-vidrio);
  border:1px solid var(--iaw-canto);
  border-radius:var(--iaw-r);
  padding:28px;
  -webkit-backdrop-filter:blur(8px);
  backdrop-filter:blur(8px);
  display:flex;
  flex-direction:column;
  gap:14px;
}

/* El numero de la tarjeta. Va en el HTML como texto y no como contador CSS
   (counter-increment) para que se lea igual si el CSS no carga. */
.ia2week-landing .iaw-num{
  font-weight:800;
  font-size:28px;
  color:var(--iaw-vio-hi);
}

.ia2week-landing .iaw-vidrio p{
  font-size:18px;
  line-height:1.55;
  font-weight:500;
  color:var(--iaw-blanco);
}


/* ═══════════════════════════════════════════════════════════════════════════
   4 · EL CONCEPTO — las dos IA

   Seccion clara. Es la que explica el nombre: la IA como tecnologia (que ya
   tiene todo el mundo) y la IA aplicada (que es el exponente). Dos tarjetas
   blancas y el sello de marca debajo.
   ═══════════════════════════════════════════════════════════════════════════ */
.ia2week-landing .iaw-concepto{
  position:relative;
  overflow:hidden;
  /* Dos halos muy suaves sobre el papel: violeta arriba a la derecha y cian
     abajo a la izquierda, al 6 %. Es lo que evita que la seccion se vea como un
     rectangulo blanco plano entre dos secciones moradas. */
  background:
    radial-gradient(700px 460px at 92% 0%, rgba(133,32,214,.06), transparent 65%),
    radial-gradient(560px 400px at 0% 100%, rgba(89,242,237,.06), transparent 60%),
    var(--iaw-papel);
}

.ia2week-landing .iaw-caja--concepto{ gap:48px; }

.ia2week-landing .iaw-rejilla--anchas{
  display:grid;
  grid-template-columns:repeat(auto-fit, minmax(300px, 1fr));
  gap:24px;
}

.ia2week-landing .iaw-tarjeta{
  background:var(--iaw-blanco);
  border:1px solid var(--iaw-borde);
  border-radius:var(--iaw-r);
  padding:36px;
  box-shadow:0 2px 10px rgba(30,14,41,.04);
  display:flex;
  flex-direction:column;
  gap:12px;
}
.ia2week-landing .iaw-tarjeta h3{
  font-weight:700;
  font-size:21px;
  color:var(--iaw-ink);
}
.ia2week-landing .iaw-tarjeta p{
  font-size:17px;
  line-height:1.6;
  color:var(--iaw-tinta);
}
/* El "2" de "esa segunda capa es el 2": va en violeta y en negrita porque ahi
   el exponente es el argumento, no un detalle tipografico. */
.ia2week-landing .iaw-tarjeta sup{ color:var(--iaw-vio); font-weight:700; }

/* El sello, centrado, con un halo detras que lo despega del papel. El halo es
   un div aparte y no un box-shadow porque un shadow de 260px de radio se ve
   como una mancha gris; un degradado radial violeta se ve como luz. */
.ia2week-landing .iaw-sello{
  display:flex;
  justify-content:center;
  align-items:center;
  position:relative;
}
.ia2week-landing .iaw-sello-halo{
  position:absolute;
  width:260px;
  height:260px;
  pointer-events:none;
  background:radial-gradient(closest-side, rgba(133,32,214,.18), transparent 70%);
}
.ia2week-landing .iaw-sello img{
  position:relative;
  width:150px;
  height:150px;
  display:block;
  filter:drop-shadow(0 14px 30px rgba(133,32,214,.25));
}


/* ═══════════════════════════════════════════════════════════════════════════
   5 · AGENDA — que se demuestra y para quien es

   Seccion clara. Cuatro puntos numerados en dos columnas y, debajo, el panel
   morado de "Para quien es". El panel va oscuro dentro de una seccion clara a
   proposito: es el bloque que cierra la seccion y tiene que pesar.
   ═══════════════════════════════════════════════════════════════════════════ */
.ia2week-landing .iaw-agenda{
  background:var(--iaw-papel);
  border-top:1px solid var(--iaw-borde);
}

.ia2week-landing .iaw-intro--ancha{ max-width:800px; }

/* minmax(400px,1fr): con 1080 de caja son dos columnas, y por debajo de 840 de
   ventana pasa a una. Es mas alto que las tarjetas de arriba porque estos
   puntos son frases largas y en columna estrecha se parten en cuatro lineas. */
.ia2week-landing .iaw-pasos{
  display:grid;
  grid-template-columns:repeat(auto-fit, minmax(400px, 1fr));
  gap:20px;
}

.ia2week-landing .iaw-paso{
  display:flex;
  gap:20px;
  align-items:flex-start;
}
.ia2week-landing .iaw-paso-num{
  font-weight:800;
  font-size:34px;
  line-height:1;
  color:var(--iaw-vio);
  flex-shrink:0;
}
/* El padding-top de 4px alinea la primera linea del texto con la parte alta del
   numero. Sin el, el numero (34px, line-height 1) queda "flotando" mas arriba. */
.ia2week-landing .iaw-paso p{
  font-size:17px;
  line-height:1.6;
  color:var(--iaw-tinta);
  padding-top:4px;
}

.ia2week-landing .iaw-panel{
  background:linear-gradient(160deg, var(--iaw-grape) 0%, var(--iaw-field) 100%);
  border-radius:var(--iaw-r);
  padding:clamp(28px, 4vw, 48px);
  display:flex;
  flex-direction:column;
  gap:22px;
  box-shadow:0 12px 36px rgba(30,14,41,.2);
}
.ia2week-landing .iaw-panel h3{
  font-weight:700;
  font-size:clamp(1.4rem, 2.4vw, 1.9rem);
  color:var(--iaw-blanco);
}
.ia2week-landing .iaw-panel ul{
  display:flex;
  flex-direction:column;
  gap:16px;
}
.ia2week-landing .iaw-panel li{
  display:flex;
  align-items:flex-start;
  gap:14px;
  font-size:18px;
  line-height:1.6;
  color:var(--iaw-crema);
}
/* La viñeta: un cuadrado violeta girado 45°, que es el rombo del signo de
   marca. Se dibuja con ::before y no con list-style porque list-style no se
   puede colorear ni girar. El margin-top de 8px lo centra con la primera linea. */
.ia2week-landing .iaw-panel li::before{
  content:'';
  flex-shrink:0;
  width:10px;
  height:10px;
  margin-top:8px;
  border-radius:2px;
  background:var(--iaw-vio-hi);
  transform:rotate(45deg);
}


/* ═══════════════════════════════════════════════════════════════════════════
   6 · PREGUNTAS FRECUENTES

   Con <details>/<summary> del navegador: abre y cierra sin una linea de
   JavaScript, funciona con teclado, y el buscador del navegador (Ctrl+F)
   encuentra el texto de dentro aunque este cerrado. Un acordeon hecho a mano no
   hace ninguna de las tres cosas gratis.
   ═══════════════════════════════════════════════════════════════════════════ */
.ia2week-landing .iaw-faq{
  background:var(--iaw-papel);
  border-top:1px solid var(--iaw-borde);
}

.ia2week-landing .iaw-caja--estrecha{
  max-width:var(--iaw-caja-estrecha);
  gap:32px;
}

.ia2week-landing .iaw-faq-titulo{
  font-weight:700;
  font-size:clamp(1.8rem, 3.4vw, 2.5rem);
  line-height:1.15;
  letter-spacing:-.02em;
  color:var(--iaw-ink);
}

.ia2week-landing .iaw-faq-lista{
  display:flex;
  flex-direction:column;
  gap:12px;
}

.ia2week-landing .iaw-faq-item{
  background:var(--iaw-blanco);
  border:1px solid var(--iaw-borde);
  border-radius:var(--iaw-r-md);
  padding:20px 24px;
}

.ia2week-landing .iaw-faq-item summary{
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:16px;
  font-weight:600;
  font-size:17px;
  color:var(--iaw-ink);
  cursor:pointer;
  /* Fuera el triangulito del navegador: la señal de abrir/cerrar es el + de la
     derecha. Hacen falta las dos declaraciones — la de WebKit y list-style. */
  list-style:none;
}
.ia2week-landing .iaw-faq-item summary::-webkit-details-marker{ display:none; }

.ia2week-landing .iaw-faq-mas{
  flex-shrink:0;
  font-size:22px;
  font-weight:400;
  color:var(--iaw-vio);
  transition:transform .2s;
}
/* Al abrir, el + gira 45° y se convierte en una ×. */
.ia2week-landing .iaw-faq-item[open] .iaw-faq-mas{ transform:rotate(45deg); }

.ia2week-landing .iaw-faq-item p{
  margin-top:14px;
  font-size:16px;
  line-height:1.6;
  color:var(--iaw-tinta);
}


/* ═══════════════════════════════════════════════════════════════════════════
   7 · CIERRE

   Una sola frase, el sello y el boton. Es la pagina entera resumida en un
   renglon: "Con Gerpro, usted es IA²". Aqui el titular SI es lo mas grande de
   todo (hasta 4,6rem) porque no compite con nada.
   ═══════════════════════════════════════════════════════════════════════════ */
.ia2week-landing .iaw-cierre{
  position:relative;
  overflow:hidden;
  background:var(--iaw-ink);
}

/* El foco central. Da profundidad al morado plano del fondo y concentra la
   mirada en el titular. */
.ia2week-landing .iaw-cierre-luz{
  position:absolute;
  inset:0;
  pointer-events:none;
  background:radial-gradient(50% 55% at 50% 45%, rgba(75,27,123,.55), transparent 75%);
}

.ia2week-landing .iaw-caja--cierre{
  position:relative;
  max-width:900px;
  padding:clamp(100px, 16vh, 170px) 24px;
  align-items:center;
  gap:36px;
  text-align:center;
}

.ia2week-landing .iaw-cierre-sello{
  width:130px;
  height:130px;
  display:block;
  filter:drop-shadow(0 12px 36px rgba(195,78,252,.35));
}

.ia2week-landing .iaw-cierre-titulo{
  font-weight:800;
  font-size:clamp(2.4rem, 6vw, 4.6rem);
  line-height:1.1;
  letter-spacing:-.02em;
  color:var(--iaw-blanco);
  text-wrap:pretty;
}
.ia2week-landing .iaw-cierre-titulo .iaw-exp{
  color:var(--iaw-vio-hi);
  font-size:.6em;
}

/* Lo que queda en el sitio del ultimo boton cuando el evento ya paso. Se le da
   el peso de un boton (padding, borde redondeado) para que el cierre no se
   quede en un titular colgando, pero sin fondo ni cursor: no es pulsable y no
   debe parecerlo. */
.ia2week-landing .iaw-cierre-cerrado{
  padding:14px 28px;
  border:1px solid var(--iaw-canto-hi);
  border-radius:999px;
  background:var(--iaw-vidrio-hi);
  font-size:16px;
  font-weight:600;
  color:var(--iaw-vio-hi);
  text-wrap:balance;
}

.ia2week-landing .iaw-cierre-firma{
  font-size:14px;
  letter-spacing:.08em;
  color:var(--iaw-lila);
}


/* ═══════════════════════════════════════════════════════════════════════════
   8 · PIE

   Logotipo, la linea de posicionamiento y el aviso de derechos. Nada mas: ni
   mapa del sitio, ni redes, ni enlaces a otras paginas. En una landing el pie
   es el cierre, no una salida.

   El relleno inferior es grande (96px) para dejar sitio al boton fijo de movil,
   que si no taparia el aviso de derechos.
   ═══════════════════════════════════════════════════════════════════════════ */
.ia2week-landing .iaw-pie{
  background:var(--iaw-ink);
  border-top:1px solid rgba(195,78,252,.15);
}

.ia2week-landing .iaw-pie-caja{
  max-width:var(--iaw-caja);
  margin:0 auto;
  padding:48px 24px 96px;
  display:flex;
  flex-direction:column;
  gap:24px;
}

.ia2week-landing .iaw-pie-logo{
  height:44px;
  width:auto;
  align-self:flex-start;
}

.ia2week-landing .iaw-pie-linea{ font-size:14px; color:var(--iaw-lila); }
.ia2week-landing .iaw-pie-legal{ font-size:13px; color:var(--iaw-lila); }
.ia2week-landing .iaw-pie-legal a{ color:var(--iaw-lila); text-decoration:underline; }
.ia2week-landing .iaw-pie-legal a:hover{ color:var(--iaw-vio-hi); }

/* El pie de la pagina de gracias: centrado y mas corto. */
.ia2week-landing .iaw-pie-caja--centrada{
  padding:48px 24px 72px;
  gap:18px;
  align-items:center;
  text-align:center;
}
.ia2week-landing .iaw-pie-caja--centrada .iaw-pie-logo{ align-self:center; }


/* ═══════════════════════════════════════════════════════════════════════════
   8B · LA PAGINA DE GRACIAS — /thank-you-page-aiweek/

   La segunda pagina del paquete: la que ve alguien despues de reservar su cupo.
   Comparte con la landing el reset, la paleta, la barra, las tarjetas blancas,
   los botones y el pie; lo de aqui abajo es SOLO lo que cambia.

   Todo cuelga de .ia2week-gracias, la segunda clase del <body> de esa plantilla,
   para que ninguna de estas medidas pueda afectar a la landing.

   Las diferencias de medidas respecto a la landing (botones un poco mas grandes,
   cajas de 88px en vez de 96, tarjetas de 30 y 34 en vez de 36) son las de la
   maqueta. No se han unificado: la maqueta es la que aprobo el diseño.
   ═══════════════════════════════════════════════════════════════════════════ */

/* ── 1 · Confirmacion ───────────────────────────────────────────────────────
   El mismo degradado morado del hero de la landing, con el punto medio un poco
   mas abajo (60 % en vez de 52 %) porque este bloque es mas bajo. */
.ia2week-landing .iaw-confirma{
  position:relative;
  overflow:hidden;
  background:linear-gradient(180deg, var(--iaw-grape) 0%, var(--iaw-field) 60%, var(--iaw-grape) 100%);
}

.ia2week-landing .iaw-confirma-caja{
  position:relative;
  z-index:2;
  max-width:860px;
  margin:0 auto;
  padding:clamp(64px, 10vh, 110px) 24px;
  display:flex;
  flex-direction:column;
  align-items:center;
  gap:26px;
  text-align:center;
}

.ia2week-landing .iaw-confirma-lockup{
  width:clamp(260px, 30vw, 400px);
  height:auto;
  display:block;
}

.ia2week-landing .iaw-confirma-titulo{
  font-weight:800;
  font-size:clamp(2.2rem, 5vw, 3.6rem);
  line-height:1.1;
  letter-spacing:-.02em;
  color:var(--iaw-blanco);
  text-wrap:pretty;
}

.ia2week-landing .iaw-confirma-texto{
  font-size:18px;
  line-height:1.6;
  color:var(--iaw-crema);
  max-width:620px;
}

.ia2week-landing .iaw-confirma-botones{
  display:flex;
  flex-wrap:wrap;
  gap:14px;
  align-items:center;
  justify-content:center;
}

/* ── 2 y 3 · Datos y pasos ──────────────────────────────────────────────────
   Las dos secciones claras. La segunda lleva la linea de separacion arriba, como
   en la landing entre agenda y preguntas frecuentes. */
.ia2week-landing .iaw-datos{ background:var(--iaw-papel); }
.ia2week-landing .iaw-siguiente{
  background:var(--iaw-papel);
  border-top:1px solid var(--iaw-borde);
}

.ia2week-landing .iaw-caja--gracias{ padding:88px 24px; gap:36px; }

/* El encabezado de seccion aqui no limita el ancho: los dos titulares son cortos
   y no llegan a los 760px de la landing, asi que el limite no haria nada. */
.ia2week-landing .iaw-intro--compacta{ max-width:none; gap:14px; }

/* Titular de seccion, un punto por debajo del de la landing: esta pagina no
   argumenta, informa. */
.ia2week-landing .iaw-titulo--md{ font-size:clamp(1.9rem, 3.6vw, 2.7rem); }

/* minmax(240px,1fr): tres columnas en escritorio, y en movil una. Es una rejilla
   distinta a las de la landing porque son tarjetas de un dato, mucho mas
   estrechas que las de argumento. */
.ia2week-landing .iaw-rejilla--datos{
  margin:0;             /* <dl> trae margen del navegador; el reset no lo cubre */
  display:grid;
  grid-template-columns:repeat(auto-fit, minmax(240px, 1fr));
  gap:20px;
}
.ia2week-landing .iaw-rejilla--pasos{
  display:grid;
  grid-template-columns:repeat(auto-fit, minmax(280px, 1fr));
  gap:24px;
}

.ia2week-landing .iaw-tarjeta--dato{ padding:30px; gap:8px; }
.ia2week-landing .iaw-tarjeta--paso{ padding:34px; gap:14px; }

/* El rotulo del dato: mas pequeño y en lila, para que el valor sea lo que se lee
   primero. En un <dl>, dt y dd traen margenes propios del navegador — el reset de
   tokens.css cubre p, ul y ol, pero no estos dos. */
.ia2week-landing .iaw-dato-rotulo,
.ia2week-landing .iaw-dato-valor,
.ia2week-landing .iaw-dato-nota{ margin:0; }

.ia2week-landing .iaw-dato-rotulo{
  font-size:12px;
  font-weight:600;
  letter-spacing:.14em;
  text-transform:uppercase;
  color:var(--iaw-lila);
}
.ia2week-landing .iaw-dato-valor{
  font-weight:700;
  font-size:20px;
  color:var(--iaw-ink);
}
.ia2week-landing .iaw-dato-nota{
  font-size:14px;
  color:var(--iaw-tinta);
}

/* Los numeros de los pasos van a 30px aqui (28 en la landing) y con dos cifras:
   "01" y no "1". Es la maqueta, y a dos cifras el numero pesa mas en la
   composicion, que es lo que se busca en tarjetas mas grandes. */
.ia2week-gracias .iaw-num{ font-size:30px; }

.ia2week-landing .iaw-tarjeta--paso h3{
  font-weight:700;
  font-size:20px;
  color:var(--iaw-ink);
}
.ia2week-landing .iaw-tarjeta--paso p{
  font-size:16px;
  line-height:1.6;
  color:var(--iaw-tinta);
}
/* La pregunta del tercer paso va en cursiva y en el color de los titulares: es
   una cita para llevarse, no un parrafo mas. */
.ia2week-landing .iaw-tarjeta--paso em{ color:var(--iaw-ink); }

/* Movil: el mismo recorte de aire vertical que las secciones de la landing. */
@media (max-width:640px){
  .ia2week-landing .iaw-caja--gracias{ padding:64px 20px; gap:28px; }
  .ia2week-landing .iaw-confirma-caja{ padding:56px 20px; gap:22px; }
  .ia2week-landing .iaw-tarjeta--paso{ padding:28px; }
  .ia2week-landing .iaw-pie-caja--centrada{ padding:40px 20px 56px; }
}


/* ═══════════════════════════════════════════════════════════════════════════
   8C · LA PAGINA 404

   La que sale al pedir una URL que no existe, en cualquier ruta del sitio. Una
   sola pantalla, centrada, con el fondo del hero de la landing y la malla de
   nodos: la idea es que se lea como un desvio de la misma pieza y no como el
   error de un sitio roto.

   Reutiliza casi todo — las capas de fondo, los botones, la barra y el pie. Lo
   propio es el rotulo tecnico, la cifra y la composicion.
   ═══════════════════════════════════════════════════════════════════════════ */
.ia2week-landing .iaw-404{
  position:relative;
  overflow:hidden;
  display:flex;
  align-items:center;
  /* Que ocupe la pantalla menos la barra (64px: 40 de logotipo y 12 de relleno
     arriba y abajo). Sin esto, en un monitor alto la pagina deja una franja de
     fondo claro debajo y se ve como si faltara contenido.

     El tope de 860px es para lo contrario: en una ventana muy alta —un monitor
     vertical, o un 4K sin escalar— una seccion de 1.300px con seis lineas de
     texto en el medio se lee como una pagina a medio cargar. Con el tope, el
     contenido se centra en una banda razonable y asoma el pie, que ademas es la
     pista de que hay algo mas abajo. */
  min-height:min(calc(100vh - 64px), 860px);
  background:linear-gradient(180deg, var(--iaw-grape) 0%, var(--iaw-field) 55%, var(--iaw-ink) 100%);
}

.ia2week-landing .iaw-404-caja{
  position:relative;
  z-index:2;
  width:100%;
  max-width:820px;
  margin:0 auto;
  padding:clamp(56px, 9vh, 96px) 24px;
  display:flex;
  flex-direction:column;
  align-items:center;
  gap:22px;
  text-align:center;
}

/* ── El rotulo tecnico ──────────────────────────────────────────────────────
   La pastilla monoespaciada de arriba. Hace un trabajo concreto: decirle al
   visitante, antes de cualquier otra cosa, que lo que ve es un estado del
   sistema y no algo que el hizo mal. En monoespaciada porque es exactamente la
   convencion que todo el mundo asocia a eso. */
.ia2week-landing .iaw-hud{
  display:inline-flex;
  align-items:center;
  font-family:var(--iaw-mono);
  font-size:12px;
  font-weight:500;
  letter-spacing:.16em;
  text-transform:uppercase;
  color:var(--iaw-vio-hi);
  padding:9px 18px;
  border-radius:99px;
  background:rgba(133,32,214,.28);
  border:1px solid var(--iaw-canto-hi);
}

/* ── La cifra ───────────────────────────────────────────────────────────────
   El 404, a pantalla completa. Tres cosas la hacen:

     1 · El relleno de degradado, con background-clip:text. Va del blanco al
         violeta de marca, de arriba abajo. Si un navegador no soporta
         -webkit-text-fill-color, se queda el color plano de la linea de arriba
         —violeta claro— y sigue viendose bien: no hay texto invisible.
     2 · El halo, con drop-shadow. No es un box-shadow: tiene que seguir la forma
         de las cifras, no la del recuadro.
     3 · Las dos copias fantasma de ::before y ::after, en violeta y cian, un
         poco desplazadas y en mix-blend-mode:screen. Es lo que da el desenfoque
         de señal — la señal de "futurista" que se pidio — sin recurrir a un
         glitch de discoteca: se mueven tres pixeles cada seis segundos.

   El contenido de las copias sale de data-cifra en el HTML: asi el "404" no esta
   escrito tres veces y cambiarlo es cambiar un atributo. */
.ia2week-landing .iaw-404-cifra{
  position:relative;
  font-weight:800;
  font-size:clamp(6rem, 21vw, 15rem);
  line-height:.85;
  letter-spacing:-.045em;
  color:var(--iaw-vio-hi);
  background-image:linear-gradient(180deg, var(--iaw-blanco) 0%, var(--iaw-vio-hi) 52%, var(--iaw-vio) 100%);
  -webkit-background-clip:text;
  background-clip:text;
  -webkit-text-fill-color:transparent;
  filter:drop-shadow(0 0 44px rgba(133,32,214,.55));
}

.ia2week-landing .iaw-404-cifra::before,
.ia2week-landing .iaw-404-cifra::after{
  content:attr(data-cifra);
  position:absolute;
  left:0;
  top:0;
  width:100%;
  /* Las copias van en color plano: sin esto heredarian el relleno transparente
     de la cifra y no se veria ninguna. */
  -webkit-text-fill-color:currentColor;
  background:none;
  mix-blend-mode:screen;
  pointer-events:none;
}
.ia2week-landing .iaw-404-cifra::before{
  color:var(--iaw-vio-hi);
  opacity:.34;
  transform:translate3d(-4px, 2px, 0);
  animation:iaw404Senal 6s ease-in-out infinite alternate;
}
.ia2week-landing .iaw-404-cifra::after{
  color:var(--iaw-cian);
  opacity:.20;
  transform:translate3d(4px, -2px, 0);
  animation:iaw404Senal 6s ease-in-out infinite alternate-reverse;
}

.ia2week-landing .iaw-404-titulo{
  font-weight:800;
  font-size:clamp(1.7rem, 3.6vw, 2.8rem);
  line-height:1.15;
  letter-spacing:-.02em;
  color:var(--iaw-blanco);
  text-wrap:pretty;
}

.ia2week-landing .iaw-404-texto{
  font-size:18px;
  line-height:1.6;
  color:var(--iaw-crema);
  max-width:560px;
}

.ia2week-landing .iaw-404-botones{
  display:flex;
  flex-wrap:wrap;
  gap:14px;
  align-items:center;
  justify-content:center;
  margin-top:6px;
}

/* La linea del evento. Cierra la pagina con el dato por el que existe el sitio:
   quien llego a una URL rota se va sabiendo que hay un evento y cuando es. */
.ia2week-landing .iaw-404-evento{
  font-size:14px;
  letter-spacing:.02em;
  color:var(--iaw-lila);
}

@media (max-width:640px){
  .ia2week-landing .iaw-404-caja{ padding:48px 20px; gap:18px; }
  /* El rotulo tecnico es una linea larga en monoespaciada y no se puede partir
     sin que parezca roto. Se aprieta un punto para que quepa de sobra hasta en
     una pantalla de 360px. */
  .ia2week-landing .iaw-hud{ font-size:11px; letter-spacing:.11em; padding:8px 14px; }
  /* La cifra se queda algo mas contenida en movil: a 21vw en una pantalla de
     390px sigue cabiendo, pero deja el titular sin aire. */
  .ia2week-landing .iaw-404-cifra{ font-size:clamp(5rem, 32vw, 8rem); }
}


/* ═══════════════════════════════════════════════════════════════════════════
   9 · BOTON FIJO DE MOVIL

   Solo por debajo de 720px. En escritorio la barra superior ya lleva el boton
   siempre a la vista; en movil esa barra esconde los datos y el boton queda
   pequeño, asi que se pone uno a lo ancho abajo.

   Va oculto por defecto y NO al contrario: si algun dia el CSS de las media
   queries no llega, es mejor que no haya boton flotante que uno pegado en
   medio de una pantalla de escritorio.
   ═══════════════════════════════════════════════════════════════════════════ */
.ia2week-landing .iaw-cta-movil{
  display:none;
  position:fixed;
  left:16px;
  right:16px;
  bottom:16px;
  z-index:60;
  align-items:center;
  justify-content:center;
  background:var(--iaw-vio);
  color:var(--iaw-blanco);
  text-decoration:none;
  font-weight:600;
  font-size:17px;
  padding:16px;
  border-radius:14px;
  box-shadow:0 12px 32px rgba(30,14,41,.5);
}
.ia2week-landing .iaw-cta-movil:hover,
.ia2week-landing .iaw-cta-movil:focus-visible{
  background:var(--iaw-vio-hi);
  color:var(--iaw-blanco);
}


/* ═══════════════════════════════════════════════════════════════════════════
   10 · ANIMACIONES

   Dos, y las dos se desactivan con prefers-reduced-motion (en tokens.css).

   iawDeriva  · la luz del hero, que respira en 22 s.
   iawPulso   · el aro violeta que sale del formulario cuando alguien pulsa un
               boton de "Reservar mi cupo". Es la respuesta a un clic que, si no,
               parece no hacer nada: el ancla lleva al formulario, pero en
               escritorio el formulario ya estaba a la vista. Lo dispara
               ia2week.js.
   ═══════════════════════════════════════════════════════════════════════════ */
@keyframes iawDeriva{
  from{ transform:translate3d(0,0,0) scale(1); }
  to  { transform:translate3d(-36px,22px,0) scale(1.06); }
}

/* El desplazamiento de las copias fantasma de la cifra 404. Recorre tres
   pixeles en seis segundos: a esa velocidad se percibe como una señal que no
   acaba de estabilizarse, no como una animacion. */
@keyframes iaw404Senal{
  from{ transform:translate3d(-4px, 2px, 0); }
  to  { transform:translate3d(-1px, -3px, 0); }
}

@keyframes iawPulso{
  0%{
    box-shadow:0 0 0 0 rgba(195,78,252,.75), 0 24px 60px rgba(30,14,41,.45);
    border-color:var(--iaw-vio-hi);
  }
  100%{
    box-shadow:0 0 0 28px rgba(195,78,252,0), 0 24px 60px rgba(30,14,41,.45);
    border-color:var(--iaw-canto-hi);
  }
}


/* ═══════════════════════════════════════════════════════════════════════════
   RESPONSIVE

   Casi todo se adapta solo, con las rejillas auto-fit y los clamp() de arriba.
   Estas son las tres decisiones que si necesitan un punto de corte, y son las
   mismas de la maqueta.
   ═══════════════════════════════════════════════════════════════════════════ */

/* Por debajo de 900px la barra ya no tiene sitio para los datos del evento sin
   que el boton se estruje. Se van los datos: siguen en el hero, dos dedos mas
   abajo, y ahi con mas tamaño. */
@media (max-width:900px){
  .ia2week-landing .iaw-barra-datos{ display:none; }
}

/* Movil: aparece el boton fijo de abajo. */
@media (max-width:720px){
  .ia2week-landing .iaw-cta-movil{ display:flex; }
}

/* Movil: se recorta el aire vertical de las secciones. 96px arriba y abajo en
   una pantalla de 640px de alto significa que un tercio de la pantalla esta
   vacio. Y se ajusta el ancho minimo de la rejilla de pasos, que a 400px se
   sale del ancho de un telefono estrecho. */
@media (max-width:640px){
  .ia2week-landing .iaw-caja{ padding:64px 20px; gap:32px; }
  .ia2week-landing .iaw-caja--concepto{ gap:36px; }
  .ia2week-landing .iaw-caja--cierre{ padding:88px 20px; }
  .ia2week-landing .iaw-pie-caja{ padding:40px 20px 96px; }
  .ia2week-landing .iaw-pasos{ grid-template-columns:1fr; }
  .ia2week-landing .iaw-tarjeta{ padding:28px; }
  .ia2week-landing .iaw-hero-caja{ gap:36px; }
}
