/* GENERADO por scripts/build-landing.mjs — edita public/landing/** y vuelve a correr npm run build:landing */

/* base.css */
/* ==========================================================================
   Landing pública de EximApp — base "x.ai/bot" (2026-09-03)
   Contrato: design-library/grokbot-reference/DESIGN-SYSTEM.md
   Tokens HSL estilo shadcn: hsl(var(--x)). `dark` = clase en <html>.
   ========================================================================== */
:root {
  --color-jet: 0 0% 4%; --color-charcoal: 0 0% 10%; --color-umbra: 221 12% 14%; --color-ink: 213 11% 16%;
  --color-ash: 216 5% 19%; --color-steel: 216 4% 22%; --color-fog: 216 4% 51%; --color-pewter: 213 12% 70%;
  --color-dove: 222 19% 86%; --color-nimbus: 228 21.74% 95.49%; --color-ivory: 40 18% 97%; --color-white: 0 0% 100%;
  --color-sunset: 22 100% 51.6%; --color-dawn: 37 100% 76%; --color-breeze: 214 48.9% 73.9%;
  --color-turquoise: 167 60% 47%; --color-turquoise-light: 167 53% 57%;

  --background: var(--color-white); --background-hover: var(--color-dove);
  --foreground: var(--color-jet); --foreground-hover: var(--color-umbra);
  --primary: var(--color-jet); --primary-hover: var(--color-umbra); --primary-foreground: var(--color-white);
  /* Texto secundario del tema CLARO. x.ai usa `fog` (216 4% 51%), pero sobre
     blanco da 3.9:1 y sobre `ivory` 3.7:1 — por debajo de AA (4.5:1) para los
     14–16 px de leads, listas y captions. Se oscurece a 216 6% 40% (5.9:1 sobre
     blanco, 5.5:1 sobre ivory) manteniendo el mismo gris azulado. En OSCURO se
     conserva `fog` tal cual (ahí ya cumple). */
  --secondary: 216 6% 40%; --secondary-hover: var(--color-steel);
  --accent: var(--color-turquoise); --accent-hover: var(--color-turquoise-light);
  --card: var(--color-ivory); --border: var(--color-dove); --input: var(--color-white);
  --success: 142 71% 45%; --warning: 45 93% 47%; --error: 0 84% 60%; --info: var(--color-breeze);
  --surface-2: #ebebeb; --surface-3: #e1e1e1;
  --traffic-red: #ff5f57; --traffic-yellow: #ffbd2e; --traffic-green: #28c840;

  --font-sans: "Geist", -apple-system, "Segoe UI", Inter, Helvetica, Arial, sans-serif;
  --font-mono: "Geist Mono", ui-monospace, SFMono-Regular, Menlo, monospace;
  --radius: 0.5rem; --radius-card: 1.5rem;
  --duration: 0.14s; --ease-spring: cubic-bezier(0.25, 1, 0.5, 1);
  /* Curva de las entradas de la landing: arranca rápido y frena muy largo. */
  --ease-reveal: cubic-bezier(0.16, 1, 0.3, 1);
  --site-header-h: 4rem; --site-content-width: 64rem; --container: 80rem;
  color-scheme: light;
}
html.dark {
  --background: var(--color-jet); --background-hover: var(--color-umbra);
  --foreground: var(--color-dove); --foreground-hover: var(--color-white);
  --primary: var(--color-white); --primary-hover: var(--color-ivory); --primary-foreground: var(--color-jet);
  /* Mismo caso que el tema claro, pero por MUCHO menos margen: `fog` sobre `jet`
     da 5.06:1, pero sobre `charcoal` (el fondo de TODAS las tarjetas: leads,
     cuerpos de features, "/ mes", "Facturación mensual"…) se queda en 4.44:1,
     justo por debajo de AA. Sube 1 punto de luminosidad —imperceptible al ojo,
     sigue siendo el gris de x.ai— y pasa a 4.6:1 sobre tarjeta y 5.2:1 sobre el
     fondo de página (y 4,6:1 en la opción inactiva del segmentado EN/ES, que va
     sobre --surface-2). */
  --secondary: 216 4% 53%; --secondary-hover: var(--color-pewter);
  --card: var(--color-charcoal); --border: var(--color-umbra); --input: var(--color-fog);
  --success: 142 69% 58%; --warning: 45 93% 58%; --error: 0 72% 65%;
  --surface-2: #1d1d1d; --surface-3: #2b2b2b;
  color-scheme: dark;
}

/* Reset mínimo */
*, *::before, *::after { box-sizing: border-box; }
html { -webkit-text-size-adjust: 100%; line-height: 1.5; font-family: var(--font-sans); overflow-x: hidden; -webkit-tap-highlight-color: transparent; scroll-behavior: smooth; }
body { margin: 0; background: hsl(var(--background)); color: hsl(var(--foreground)); font-size: 16px; -webkit-font-smoothing: antialiased; overscroll-behavior-y: none; }
h1, h2, h3, h4, p, ul, ol, figure { margin: 0; }
ul, ol { padding: 0; list-style: none; }
a { color: inherit; text-decoration: none; }
button { font: inherit; color: inherit; background: none; border: 0; padding: 0; cursor: pointer; }
input { font: inherit; color: inherit; }
img, svg, video { display: block; max-width: 100%; }
:focus-visible { outline: 2px solid hsl(var(--primary) / 0.5); outline-offset: 2px; }

/* Tipografía */
.font-display { letter-spacing: -0.02em; }
.h1 { font-size: 2.25rem; line-height: 1.05; letter-spacing: -0.02em; font-weight: 500; text-wrap: balance; }
.h2 { font-size: 1.875rem; line-height: 2.25rem; letter-spacing: -0.02em; font-weight: 400; text-wrap: balance; }
.h3 { font-size: 1rem; line-height: 1.625; font-weight: 500; text-wrap: pretty; color: hsl(var(--primary)); }
.lead { font-size: 1rem; line-height: 1.625; color: hsl(var(--secondary)); text-wrap: pretty; }
.text-secondary { color: hsl(var(--secondary)); }
.text-primary { color: hsl(var(--primary)); }
.text-sm { font-size: 0.875rem; line-height: 1.25rem; }
.text-xs { font-size: 0.75rem; line-height: 1rem; }
.mono { font-family: var(--font-mono); }
@media (min-width: 640px) {
  .h1 { font-size: 3rem; }
  .h2 { font-size: 2.25rem; line-height: 2.5rem; }
  .lead { font-size: 1.125rem; }
}
@media (min-width: 1024px) { .h1 { font-size: 3.75rem; } }

/* Layout */
.container { width: 100%; max-width: var(--container); margin-inline: auto; padding-inline: 1rem; }
@media (min-width: 1024px) { .container { padding-inline: 1.5rem; } }
.section { padding-block: 5rem; }
@media (min-width: 640px) { .section { padding-block: 7rem; } }
.section-head { max-width: 42rem; margin-inline: auto; text-align: center; display: flex; flex-direction: column; gap: 1rem; }
.grid-2 { display: grid; gap: 1.25rem; }
@media (min-width: 640px) { .grid-2 { grid-template-columns: repeat(2, minmax(0, 1fr)); } }

/* Botones */
.btn { display: inline-flex; align-items: center; justify-content: center; gap: 0.375rem; height: 2.75rem; padding: 0 1.5rem; border-radius: 9999px; font-size: 1rem; font-weight: 400; white-space: nowrap; transition: background-color var(--duration) ease, color var(--duration) ease, filter var(--duration) ease, box-shadow var(--duration) ease; }
.btn-primary { background: hsl(var(--primary)); color: hsl(var(--primary-foreground)); }
.btn-primary:hover { filter: brightness(0.9); }
html.dark .btn-primary:hover { filter: none; background: hsl(var(--primary-hover)); }
.btn-secondary { background: var(--surface-2); color: hsl(var(--foreground)); }
.btn-secondary:hover { background: hsl(var(--primary) / 0.1); }
.btn-outline { background: transparent; color: hsl(var(--primary)); box-shadow: inset 0 0 0 1px hsl(var(--primary) / 0.15); }
.btn-outline:hover { background: hsl(var(--primary) / 0.05); }
.btn-sm { height: 2.25rem; padding: 0.5rem 1rem; font-size: 0.875rem; font-weight: 500; }
.btn-icon { width: 1.75rem; height: 1.75rem; padding: 0; border-radius: 9999px; color: hsl(var(--primary) / 0.3); }
.btn-icon:hover { color: hsl(var(--primary) / 0.6); }
.btn svg { width: 1rem; height: 1rem; flex-shrink: 0; }

/* Pills */
.pill { display: inline-flex; align-items: center; white-space: nowrap; border-radius: 9999px; border: 1px solid hsl(var(--accent) / 0.45); color: hsl(var(--accent)); padding: 2px 8px; font-size: 10px; font-weight: 600; text-transform: uppercase; letter-spacing: 0.05em; line-height: 1; }
.pill-launch { display: inline-flex; align-items: center; gap: 0.25rem; max-width: 100%; border-radius: 9999px; border: 1px solid hsl(var(--primary) / 0.08); padding: 6px 4px 6px 8px; font-size: 13px; letter-spacing: -0.01em; transition: border-color var(--duration) ease, background-color var(--duration) ease; }
.pill-launch:hover { border-color: hsl(var(--primary) / 0.15); }
html.dark .pill-launch { background: hsl(var(--card) / 0.6); }
.chip { display: inline-flex; align-items: center; gap: 0.2rem; border-radius: 9999px; padding: 0.2rem 0.55rem; font-size: 0.75rem; color: hsl(var(--secondary)); box-shadow: inset 0 0 0 1px hsl(var(--border)); transition: color var(--duration) ease, background-color var(--duration) ease; cursor: pointer; }
.chip:hover { color: hsl(var(--foreground)); }
.chip[data-active], .chip.is-active { background: hsl(var(--card)); color: hsl(var(--foreground)); }

/* Superficies */
.card { background: hsl(var(--card)); border-radius: var(--radius-card); padding: 1.5rem; }
@media (min-width: 640px) { .card { padding: 2rem; } }
.mock { background: hsl(var(--background)); border-radius: 0.875rem; box-shadow: 0 0 0 1px hsl(var(--primary) / 0.1); overflow: hidden; }
.mock-bar { display: flex; align-items: center; gap: 6px; padding: 10px 12px; }
.mock-bar i { width: 10px; height: 10px; border-radius: 9999px; display: block; }
.mock-bar i:nth-child(1) { background: var(--traffic-red); } .mock-bar i:nth-child(2) { background: var(--traffic-yellow); } .mock-bar i:nth-child(3) { background: var(--traffic-green); }
.hairline { box-shadow: 0 0 0 1px hsl(var(--primary) / 0.1); }
.divider { height: 1px; background: hsl(var(--border)); }

/* Segmentado */
.seg { display: inline-flex; background: var(--surface-2); border-radius: 9999px; padding: 2px; }
.seg > * { border-radius: 9999px; padding: 4px 10px; font-size: 12px; font-weight: 500; color: hsl(var(--secondary)); transition: color var(--duration) ease, background-color var(--duration) ease; }
.seg > *:hover { color: hsl(var(--primary)); }
.seg > [aria-pressed="true"], .seg > .is-active { background: hsl(var(--background)); color: hsl(var(--primary)); box-shadow: 0 1px 2px 0 #0000000d; }

/* Inputs */
.input { height: 2.75rem; border-radius: 9999px; padding: 0 1rem; background: hsl(var(--background)); border: 0; box-shadow: inset 0 0 0 1px hsl(var(--border)); color: hsl(var(--foreground)); width: 100%; transition: box-shadow var(--duration) ease; }
.input::placeholder { color: hsl(var(--secondary)); }
.input:focus { outline: none; box-shadow: inset 0 0 0 1px hsl(var(--primary) / 0.3); }
.waitlist-form { display: flex; gap: 0.5rem; width: 100%; max-width: 28rem; margin-inline: auto; }
.waitlist-form .input { flex: 1; min-width: 0; }
/* En columna el `flex: 1` (basis 0) aplastaba el input a su alto intrínseco: se fija a auto */
@media (max-width: 480px) { .waitlist-form { flex-direction: column; } .waitlist-form .input { flex: 0 0 auto; } .waitlist-form .btn { width: 100%; } }

/* Reveal al scroll (home.js pone .is-in) ─────────────────────────────────
   Entrada LENTA a propósito, al estilo de la landing de x.ai/bot: cada bloque
   sube 32px, se enfoca desde un desenfoque corto y tarda 1.1 s con una curva
   muy tendida (casi todo el movimiento ocurre al principio y frena largo).
   El escalonado NO va escrito bloque a bloque: home.js numera cada `.reveal`
   dentro de su grupo de hermanos en `--reveal-i` y el retraso sale de ahí.
   `--reveal-step` se puede bajar en un contenedor concreto si son muchos. */
.reveal {
  opacity: 0;
  transform: translateY(var(--reveal-y, 8px));
  will-change: opacity, transform;
}
/* La transición vive en el estado FINAL, no en el de reposo. Si está en
   `.reveal`, al quitar la red de seguridad `js-ready` el bloque se pone a
   desvanecer de 1 a 0 durante 1.1 s y el `is-in` del fotograma siguiente
   cancela esa transición a medias: la entrada NUNCA se ve. Declarada aquí,
   ocultar es instantáneo (nadie lo ve, pasa antes del primer pintado) y solo
   la aparición se anima. */
.reveal.is-in {
  opacity: 1;
  transform: none;
  filter: none;
  transition:
    opacity 0.42s var(--ease-reveal) var(--reveal-delay, 0s),
    transform 0.42s var(--ease-reveal) var(--reveal-delay, 0s);
}
/* El retraso lo calcula home.js: índice dentro del grupo × paso. */
.reveal { --reveal-delay: calc(var(--reveal-i, 0) * var(--reveal-step, 0.12s)); }
/* Títulos y entradillas: el mismo gesto pero un pelo más corto, para que el
   texto no se quede flotando mientras el bloque grande ya llegó. */
.reveal-quick { --reveal-y: 8px; }
/* Red de seguridad: home.js marca `js-ready` SOLO cuando el IntersectionObserver
   existe de verdad. Si el script no carga o revienta antes, la clase nunca llega
   y el contenido se ve igual (nunca una página en blanco). */
:root:not(.js-ready) .reveal { opacity: 1; transform: none; filter: none; }
@media (prefers-reduced-motion: reduce) {
  .reveal, .reveal.is-in { opacity: 1; transform: none; filter: none; transition: none; }
  html { scroll-behavior: auto; }
}

/* Paso del escalonado por zona (el índice lo pone home.js). Las rejillas de
   tarjetas van en cascada larga; las listas largas, cortita, o la última
   tarjeta entraría cuando ya nadie la mira. */
.statement-grid, .agency-grid { --reveal-step: 0.14s; }
.header-hero-copy { --reveal-step: 0.11s; }
/* La demo entra DESPUÉS del copy: es hija de otro contenedor, así que su
   índice de hermanos vale 0 y sin esto se adelantaría al título. */
.header-hero-mock-wrap { --reveal-delay: 0.55s; }
.faqs-list, .faqs-footer-nav { --reveal-step: 0.06s; }

/* Utilidades */
.sr-only { position: absolute; width: 1px; height: 1px; padding: 0; margin: -1px; overflow: hidden; clip: rect(0, 0, 0, 0); white-space: nowrap; border: 0; }
.hidden { display: none !important; }
.flex { display: flex; } .items-center { align-items: center; } .justify-center { justify-content: center; } .justify-between { justify-content: space-between; }
.flex-col { flex-direction: column; } .gap-2 { gap: 0.5rem; } .gap-3 { gap: 0.75rem; } .gap-4 { gap: 1rem; } .gap-6 { gap: 1.5rem; }
.text-center { text-align: center; } .mx-auto { margin-inline: auto; } .w-full { width: 100%; }
.mt-2 { margin-top: 0.5rem; } .mt-4 { margin-top: 1rem; } .mt-6 { margin-top: 1.5rem; } .mt-8 { margin-top: 2rem; } .mt-10 { margin-top: 2.5rem; }

/* Shell de la página (home.template.html + home.js) */
.skip-link { position: absolute; left: 1rem; top: -100%; z-index: 100; padding: 0.5rem 1rem; border-radius: 9999px; background: hsl(var(--primary)); color: hsl(var(--primary-foreground)); font-size: 0.875rem; font-weight: 500; }
.skip-link:focus { top: 0.75rem; outline: 2px solid hsl(var(--accent)); }
/* Anclas bajo el header fijo (4rem): al saltar a #pricing, #waitlist… queda aire arriba */
[id] { scroll-margin-top: 5rem; }
/* Menú móvil abierto: la página no scrollea detrás (home.js pone la clase) */
body.is-menu-open { overflow: hidden; }
/* Ojos del avatar de Exi: home.js pone .is-blink ~120 ms cada 3–5 s en cada [data-exi-blink]
   (o en un ancestro) y mueve [data-exi-eyes] con transform: translate(x, y) en unidades del viewBox */
[data-exi-blink] { transform-box: fill-box; transform-origin: center; transform: scaleY(var(--eye-sy, 1)); transition: transform 0.12s ease; }
/* El parpadeo pone la variable EN el propio ojo, así que gana sobre cualquier
   valor heredado (p. ej. el estirón de emoción al apuntar a un CTA). */
.is-blink [data-exi-blink], [data-exi-blink].is-blink { --eye-sy: 0.1; }
@media (prefers-reduced-motion: reduce) { [data-exi-blink] { transition: none; } }

/* 01-header-hero.css */
/* ==========================================================================
   Sección 01 — Header + Hero (landing pública "x.ai/bot", 2026-09-03)
   Solo selectores de esta sección: .site-header y .header-*. Tokens de
   public/landing/base.css (hsl(var(--x))). Mobile-first, cortes 640 / 1024.
   Sin degradados, blur (salvo el header), glows ni sombras (el único
   "shadow" es el anillo hairline de 1px que permite el contrato).
   ========================================================================== */

/* ---------- Header fijo 64px ---------- */
.site-header {
  position: fixed;
  inset-inline: 0;
  top: 0;
  z-index: 50;
  height: var(--site-header-h);
  background: hsl(var(--background) / 0.85);
  -webkit-backdrop-filter: blur(12px);
  backdrop-filter: blur(12px);
  border-bottom: 1px solid transparent;
  transition: border-color var(--duration) ease, background-color var(--duration) ease;
}
/* home.js pone .is-scrolled (o data-scrolled="true") cuando scrollY > 0 */
.site-header.is-scrolled,
.site-header[data-scrolled="true"] { border-bottom-color: hsl(var(--border) / 0.5); }

.header-bar {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 1rem;
  height: 100%;
}

/* Wordmark EXIM: rombo + texto 14px medium */
.header-brand {
  display: inline-flex;
  align-items: center;
  gap: 0.5rem;
  height: 2.25rem;
  color: hsl(var(--primary));
  flex-shrink: 0;
}
.header-brand-mark { width: 1.125rem; height: 1.125rem; }
.header-brand-word {
  font-size: 1.125rem;
  font-weight: 500;
  line-height: 1;
  letter-spacing: 0.12em;
}

/* Nav: oculta hasta 1024px */
.header-nav { display: none; flex: 1; min-width: 0; margin-left: 1.5rem; }
.header-nav-list { display: flex; align-items: center; gap: 0.25rem; }
.header-nav-link {
  display: inline-flex;
  align-items: center;
  gap: 0.25rem;
  padding: 0.5rem 0.75rem;
  border-radius: 9999px;
  font-size: 0.875rem;
  font-weight: 500;
  color: hsl(var(--primary) / 0.5);
  transition: color var(--duration) ease;
}
.header-nav-link:hover { color: hsl(var(--primary)); }

/* Acciones a la derecha */
.header-actions { display: flex; align-items: center; gap: 0.5rem; flex-shrink: 0; }
.header-lang { flex-shrink: 0; }
.header-cta { display: none; }

.header-menu-toggle {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 2.25rem;
  height: 2.25rem;
  border-radius: 9999px;
  color: hsl(var(--primary));
  transition: background-color var(--duration) ease;
}
.header-menu-toggle:hover { background: hsl(var(--primary) / 0.05); }
.header-menu-toggle svg { width: 1.25rem; height: 1.25rem; }
.header-icon-close { display: none; }
.header-menu-toggle[aria-expanded="true"] .header-icon-menu { display: none; }
.header-menu-toggle[aria-expanded="true"] .header-icon-close { display: block; }

/* Menú móvil (home.js quita/pone el atributo hidden). Va en `absolute` colgado del
   header: el backdrop-filter del header lo vuelve bloque contenedor de cualquier
   descendiente `fixed`, así que un `fixed` aquí se recortaría a los 64px. */
.header-mobile {
  position: absolute;
  /* `top: 100%` medía contra la caja de PADDING del header (63 px), no contra su
     caja de borde (64 px: alto + el `border-bottom` de 1px), así que el panel
     empezaba 1px arriba y terminaba 1px antes del borde inferior de la pantalla:
     por esa rendija se veía la ventana oscura del hero. Anclarlo al alto real
     del header cuadra las dos puntas. */
  top: var(--site-header-h);
  inset-inline: 0;
  height: calc(100vh - var(--site-header-h));
  height: calc(100dvh - var(--site-header-h));
  display: flex;
  flex-direction: column;
  gap: 1.5rem;
  padding: 0.5rem 1rem 2rem;
  overflow-y: auto;
  background: hsl(var(--background));
  border-top: 1px solid hsl(var(--border) / 0.5);
}
.header-mobile[hidden] { display: none; }
.header-mobile-link {
  display: flex;
  align-items: center;
  gap: 0.5rem;
  padding: 0.875rem 0.25rem;
  font-size: 1rem;
  font-weight: 500;
  color: hsl(var(--primary));
  border-bottom: 1px solid hsl(var(--border));
}
.header-mobile-ctas { display: flex; flex-direction: column; gap: 0.5rem; }
.header-mobile-ctas .btn { width: 100%; }

@media (min-width: 640px) {
  .header-cta { display: inline-flex; }
}
@media (min-width: 1024px) {
  .header-nav { display: flex; }
  .header-menu-toggle { display: none; }
  .header-mobile { display: none; }
}

/* ---------- Modal de interés antes de registrarse ---------- */
.waitlist-modal { position: fixed; inset: 0; z-index: 100; display: grid; place-items: center; padding: 1rem; }
.waitlist-modal[hidden] { display: none; }
.waitlist-modal__backdrop { position: absolute; inset: 0; background: hsl(var(--background) / 0.76); }
.waitlist-modal__panel {
  position: relative;
  width: min(100%, 32rem);
  max-height: min(42rem, calc(100dvh - 2rem));
  overflow: auto;
  border: 1px solid hsl(var(--border));
  border-radius: 1.5rem;
  background: hsl(var(--card));
  color: hsl(var(--foreground));
}
.waitlist-modal__body { padding: 2rem; }
.waitlist-modal__close {
  position: absolute;
  top: 1rem;
  right: 1rem;
  display: inline-grid;
  place-items: center;
  width: 2rem;
  height: 2rem;
  border-radius: 9999px;
  color: hsl(var(--secondary));
  font-size: 0;
}
.waitlist-modal__close::before { content: "×"; font-size: 1.5rem; line-height: 1; }
.waitlist-modal__close:hover { background: hsl(var(--primary) / 0.08); color: hsl(var(--primary)); }
.waitlist-modal__body .eyebrow { margin-bottom: 0.75rem; }
.waitlist-modal__lead { margin-top: 0.75rem; color: hsl(var(--secondary)); }
.waitlist-modal__email { display: grid; gap: 0.5rem; margin-top: 1.25rem; font-size: 0.875rem; font-weight: 500; color: hsl(var(--primary)); }
.waitlist-modal__email .input { width: 100%; }
.waitlist-modal.is-email-known .waitlist-modal__email { display: none; }
.waitlist-modal__choices { display: grid; gap: 0.625rem; margin: 1.5rem 0 0; padding: 0; border: 0; }
.waitlist-modal__choices label {
  display: flex;
  align-items: center;
  gap: 0.75rem;
  min-height: 3.25rem;
  padding: 0.75rem 1rem;
  border: 1px solid hsl(var(--border));
  border-radius: 1rem;
  color: hsl(var(--primary));
  cursor: pointer;
  transition: border-color var(--duration) ease, background-color var(--duration) ease;
}
.waitlist-modal__choices label:hover { border-color: hsl(var(--primary) / 0.45); }
.waitlist-modal__choices input { width: 1rem; height: 1rem; accent-color: hsl(var(--accent)); }
.waitlist-modal__choices label:has(input:checked) { border-color: hsl(var(--accent)); background: hsl(var(--accent) / 0.08); }
.waitlist-modal__other { display: block; margin-top: 0.625rem; }
.waitlist-modal__other[hidden] { display: none; }
.waitlist-modal__other .input { width: 100%; }
.waitlist-modal__status { margin-top: 0.75rem; color: hsl(var(--error)); font-size: 0.875rem; }
.waitlist-modal__status.is-success { color: hsl(var(--success)); }
.waitlist-modal__status[hidden] { display: none; }
.waitlist-modal__submit { width: 100%; margin-top: 1.25rem; }
body:has(.waitlist-modal:not([hidden])) { overflow: hidden; }

/* ---------- Hero ---------- */
.header-hero { padding-top: 8rem; padding-bottom: 5rem; }
.header-hero-inner {
  width: 100%;
  max-width: var(--site-content-width);
  margin-inline: auto;
  padding-inline: 1rem;
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 3rem;
  text-align: center;
}
.header-hero-copy { display: flex; flex-direction: column; align-items: center; width: 100%; }

/* Pill de lanzamiento */
.header-hero-launch { margin-bottom: 1rem; color: hsl(var(--primary)); }
.header-hero-launch-text { white-space: normal; min-width: 0; }
.header-hero-launch-title { font-weight: 600; color: hsl(var(--primary)); }
.header-hero-launch-more { display: none; }
.header-hero-launch-sep { color: hsl(var(--primary) / 0.3); }
/* 0.62 y no 0.55: a 13 px el 0.55 daba 4.4:1 sobre blanco, justo por debajo de AA
   (4.5). El contrato no fija este color (§4 solo describe la píldora), así que se
   sube lo mínimo para que pase sin cambiar la sensación de "texto secundario". */
.header-hero-launch-link { color: hsl(var(--primary) / 0.62); transition: color var(--duration) ease; }
.header-hero-launch:hover .header-hero-launch-link { color: hsl(var(--primary) / 0.8); }
.header-hero-launch-icon {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 1.5rem;
  height: 1.5rem;
  border-radius: 9999px;
  background: hsl(var(--primary) / 0.06);
  color: hsl(var(--primary) / 0.6);
  flex-shrink: 0;
  transition: background-color var(--duration) ease, color var(--duration) ease;
}
.header-hero-launch-icon svg { width: 0.75rem; height: 0.75rem; }
.header-hero-launch:hover .header-hero-launch-icon { background: hsl(var(--primary) / 0.1); color: hsl(var(--primary)); }

/* Título con el bot inline (1em) */
.header-hero-title { color: hsl(var(--primary)); max-width: 16ch; line-height: 1.15; text-wrap: balance; }
/* El bot va EN la línea del h1. Se le da más caja que el cuerpo de letra
   (1.28em) y se compensa con márgenes negativos para que no separe las
   palabras ni suba el interlineado. */
.header-hero-bot {
  display: inline-block;
  width: 1.28em;
  height: 1.28em;
  margin-left: -0.1em;
  margin-right: -0.2em;
  vertical-align: -0.26em;
  line-height: 0;
}
.header-exi {
  display: block;
  width: 100%;
  height: 100%;
  overflow: visible;
  animation: header-exi-float 3s ease-in-out infinite;
}
/* Ojos: color de fondo de la página (blancos en claro, negros en oscuro), igual que x.ai.
   home.js mueve [data-exi-eyes] con transform: translate(x,y) (máx 6 unidades del viewBox)
   y parpadea poniendo .is-blink en cada [data-exi-blink] (o en el svg) durante ~120ms. */
.header-exi-eyes { will-change: transform; } /* home.js interpola el translate en rAF (sin transition: no encimar dos suavizados) */
.header-exi-eye {
  fill: hsl(var(--background));
  transform-box: fill-box;
  transform-origin: 50% 50%;
  /* OJO: la variable NO se declara aquí. Si se pone en el propio ojo, gana
     sobre el valor que hereda del bloque de copy y el estirón de emoción no
     se ve nunca. Solo el parpadeo la redefine en el elemento (más abajo). */
  transform: scaleY(var(--eye-sy, 1));
  transition: transform 0.22s cubic-bezier(0.34, 1.56, 0.64, 1);
}
.header-exi-eye.is-blink,
.header-exi.is-blink .header-exi-eye { --eye-sy: 0.1; transition-duration: 0.12s; }
/* Emoción: al apuntar al botón de la lista de espera, a Exi se le estiran los
   ojos hacia arriba y abajo. La variable se pone en el bloque de copy (que
   contiene el bot Y el formulario) y BAJA POR HERENCIA hasta el ojo; el
   parpadeo la redefine EN el propio ojo, así que sigue ganando y el bot puede
   parpadear con los ojos estirados. */
.header-hero-copy:has(.header-hero-form .btn-primary:hover),
.header-hero-copy:has(.header-hero-form .btn-primary:focus-visible) { --eye-sy: 1.45; }
/* --- Sombreros (solo el bot del hero) ------------------------------------
   Se pulsa el bot y va cambiando de sombrero (home.js). Piezas planas: el
   cuerpo en `--foreground` y los recortes en `--background`, como los ojos.
   Aparecen con un salto corto anclado en el ala, para que no parezca que
   flotan sueltos. */
/* Se pulsa para cambiarle el sombrero, pero SIN marco: ni el recuadro de foco
   ni el resalte azul del táctil ni la selección de texto alrededor. El aviso
   de que se puede pulsar es el cursor y el propio sombrero. */
.header-exi {
  cursor: pointer;
  outline: none;
  -webkit-tap-highlight-color: transparent;
  user-select: none;
  -webkit-user-select: none;
}
.header-exi:focus,
.header-exi:focus-visible { outline: none; }
.header-exi-hat { display: none; fill: var(--hat); }
/* Los detalles se recortan al color de la página, como los ojos. */
.header-exi-hat__cut { fill: hsl(var(--background)); }
/* Un color por temática. Son tonos de luminosidad media a propósito: se leen
   igual sobre el fondo claro y sobre el oscuro, así que no hace falta una
   segunda paleta por tema. */
.header-exi-hat[data-exi-hat="copa"]   { --hat: #6d55d6; } /* copa · morado de gala */
.header-exi-hat[data-exi-hat="fiesta"] { --hat: #f2555a; } /* fiesta · coral */
.header-exi-hat[data-exi-hat="gorra"]  { --hat: #2f7ff0; } /* gorra · azul */
.header-exi-hat[data-exi-hat="corona"] { --hat: #e0a415; } /* corona · dorado */
.header-exi-hat[data-exi-hat="gorro"]  { --hat: #d4372f; } /* invierno · rojo */
.header-exi-hat.is-on { display: block; transform-box: fill-box; transform-origin: 50% 100%; animation: header-exi-hat-drop 0.42s cubic-bezier(0.34, 1.56, 0.64, 1); }
@keyframes header-exi-hat-drop {
  0% { transform: translateY(-18%) scale(0.72); }
  100% { transform: none; }
}
@media (prefers-reduced-motion: reduce) {
  .header-exi-hat.is-on { animation: none; }
}

@keyframes header-exi-float {
  0%, 100% { transform: translateY(0); }
  50% { transform: translateY(-4%); }
}

/* Lead + acciones */
.header-hero-lead { margin-top: 1rem; max-width: 36rem; }
.header-hero-actions {
  margin-top: 1.5rem;
  width: 100%;
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 0.75rem;
}
/* En columna (≤480px, base.css) el `flex: 1` del input lo aplasta a su alto intrínseco:
   aquí se fija a su alto natural de 44px. */
.header-hero-form .input { flex: 1 1 auto; }
@media (max-width: 480px) {
  .header-hero-form .input { flex: 0 0 auto; height: 2.75rem; }
}
.header-hero-status { font-size: 0.875rem; line-height: 1.25rem; color: hsl(var(--secondary)); }
.header-hero-status[hidden] { display: none; }
.header-hero-status.is-error { color: hsl(var(--error)); }
.header-hero-status.is-success { color: hsl(var(--success)); }

@media (min-width: 640px) {
  .header-hero { padding-top: 9.25rem; padding-bottom: 7rem; }
  .header-hero-inner { padding-inline: 1.5rem; gap: 4rem; }
  .header-hero-launch { margin-bottom: 1.25rem; gap: 0.625rem; padding-inline: 0.625rem 0.375rem; }
  .header-hero-launch-more { display: inline; }
  .header-hero-lead { margin-top: 1.25rem; max-width: 42rem; }
  .header-hero-actions { margin-top: 1.75rem; }
}

/* ---------- Captura del espacio de trabajo ---------- */
.header-hero-mock-wrap { width: 100%; margin: 0; }
.header-hero-frame {
  position: relative;
  width: 100%;
  max-width: 61rem;
  aspect-ratio: 1327 / 994;
  margin-inline: auto;
  border-radius: 1rem;
  overflow: hidden;
  background: var(--color-charcoal);
  box-shadow: 0 0 0 1px hsl(var(--primary) / 0.1);
}
.header-hero-frame-image {
  position: absolute;
  inset: 0;
  display: block;
  width: 100%;
  height: 100%;
  object-fit: cover;
}

/* ---------- Movimiento reducido ---------- */
@media (prefers-reduced-motion: reduce) {
  .header-exi { animation: none; }
  .header-exi-eyes,
  .header-exi-eye,
  .header-hero-launch-link,
  .header-hero-launch-icon,
  .header-nav-link,
  .site-header { transition: none; }
}

.header-mock-caption { margin-top: 1rem; color: hsl(var(--secondary)); font-size: .8125rem; line-height: 1.5; text-align: center; }

/* 02-statement-features.css */
/* ==========================================================================
   Landing pública de EximApp — sección 02: STATEMENT + FEATURES
   Contrato: design-library/grokbot-reference/DESIGN-SYSTEM.md
   · Solo selectores con prefijo .statement-* (más los ids #statement / #features).
   · Tokens hsl(var(--x)) de base.css. Mobile-first: 640 / 768 / 1024px.
   · Sin degradados ni glow. Blur SOLO en las fotos de paisaje de los 4 bloques
     (filter sobre la <img>, pedido a propósito). ÚNICA sombra: drop-shadow bajo el avatar
     grande de la tarjeta statement (excepción explícita del contrato).
   ========================================================================== */

/* Tokens locales: solo lo que base.css no trae (violeta "dusk" de x.ai para chips) */
.statement,
.statement-features {
  --statement-dusk: 263 70% 50.4%;
}

/* Definiciones SVG ocultas (símbolo del mini-avatar) */
.statement-defs { position: absolute; width: 0; height: 0; overflow: hidden; }

/* ==========================================================================
   STATEMENT — tarjeta grande con el bot asomando abajo-derecha
   ========================================================================== */
.statement { position: relative; z-index: 1; overflow-x: clip; }
/* ==========================================================================
   TOOLS (#statement) — "Todas tus herramientas en un lugar"
   Rejilla de logos: 2 columnas en móvil, 4 en escritorio. Las celdas alternan
   fondo como un tablero y las cruces marcan las intersecciones. Las dos reglas
   `--top`/`--bottom` se salen del contenedor (100vw) para cerrar la banda de
   lado a lado, igual que la referencia.
   ========================================================================== */
.tools-wrap { position: relative; display: flex; flex-direction: column; gap: 2.5rem; }
@media (min-width: 1024px) { .tools-wrap { gap: 3.5rem; } }
.tools-head { text-align: center; }

.tools-grid {
  position: relative;
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  border-inline: 1px solid hsl(var(--border));
}
@media (min-width: 768px) { .tools-grid { grid-template-columns: repeat(4, minmax(0, 1fr)); } }

/* Las dos líneas de ancho de pantalla. `left: 50%` + `translateX(-50%)` sobre
   100vw: se salen del contenedor sin sacar scroll horizontal (el `html` de la
   landing lleva `overflow-x: hidden`). */
.tools-rule {
  position: absolute;
  left: 50%;
  width: 100vw;
  border-top: 1px solid hsl(var(--border));
  transform: translateX(-50%);
  pointer-events: none;
}
.tools-rule--top { top: -1px; }
.tools-rule--bottom { bottom: -1px; }

.tools-cell {
  display: flex;
  align-items: center;
  justify-content: center;
  padding: 2.25rem 1rem;
  border-right: 1px solid hsl(var(--border));
  border-bottom: 1px solid hsl(var(--border));
  background: hsl(var(--background));
}
@media (min-width: 768px) { .tools-cell { padding: 2.5rem; } }
/* OJO: los selectores van por `nth-of-type` y NO por `nth-child`. Las reglas de
   ancho de pantalla y las cruces son hijas de la rejilla (necesitan su
   posicionamiento), así que `nth-child` las cuenta y descuadra el tablero.
   Como son <span>/<svg> y las celdas <div>, `nth-of-type` solo ve las celdas.
   Tablero real: se sombrea cuando fila+columna son de la misma paridad —
   en 2 columnas toca 1,4,5,8; en 4 columnas, 1,3,6,8. */
.tools-cell:nth-of-type(4n + 1),
.tools-cell:nth-of-type(4n + 4) { background: var(--surface-2); }
@media (min-width: 768px) {
  .tools-cell:nth-of-type(4n + 4) { background: hsl(var(--background)); }
  .tools-cell:nth-of-type(8n + 1),
  .tools-cell:nth-of-type(8n + 3),
  .tools-cell:nth-of-type(8n + 6),
  .tools-cell:nth-of-type(8n + 8) { background: var(--surface-2); }
}
/* Última columna y última fila: ese lado ya lo dibuja el borde del bloque o la
   regla de ancho de pantalla. */
.tools-cell:nth-of-type(2n) { border-right: 0; }
.tools-cell:nth-last-of-type(-n + 2) { border-bottom: 0; }
@media (min-width: 768px) {
  .tools-cell { border-right: 1px solid hsl(var(--border)); border-bottom: 1px solid hsl(var(--border)); }
  .tools-cell:nth-of-type(4n) { border-right: 0; }
  .tools-cell:nth-last-of-type(-n + 4) { border-bottom: 0; }
}

/* Color de MARCA de cada logo (hex oficiales de Simple Icons). Los glifos son
   de un solo color, así que basta con teñir el `currentColor` de la celda.
   En oscuro se les mezcla un 22% de blanco: hay marcas (Odoo, Wix) que sobre
   fondo negro caían por debajo del contraste legible. */
.tools-cell--mercadopago { --tools-tint: #00B1EA; }
.tools-cell--googlecalendar { --tools-tint: #4285F4; }
.tools-cell--wix { --tools-tint: #0C6EFC; }
.tools-cell--claude { --tools-tint: #D97757; }
.tools-cell--n8n { --tools-tint: #EA4B71; }
.tools-cell--odoo { --tools-tint: #714B67; }
.tools-cell--zoho { --tools-tint: #E42527; }
html.dark .tools-cell { --tools-tint: color-mix(in srgb, var(--tools-tint-base, currentColor) 78%, #fff); }
html.dark .tools-cell--mercadopago { --tools-tint: color-mix(in srgb, #00B1EA 78%, #fff); }
html.dark .tools-cell--googlecalendar { --tools-tint: color-mix(in srgb, #4285F4 78%, #fff); }
html.dark .tools-cell--wix { --tools-tint: color-mix(in srgb, #0C6EFC 70%, #fff); }
html.dark .tools-cell--claude { --tools-tint: color-mix(in srgb, #D97757 85%, #fff); }
html.dark .tools-cell--n8n { --tools-tint: color-mix(in srgb, #EA4B71 85%, #fff); }
/* n8n conserva el fondo base en oscuro: su icono ya aporta el único acento de la celda. */
html.dark .tools-cell--n8n { background: hsl(var(--background)); }
html.dark .tools-cell--odoo { --tools-tint: color-mix(in srgb, #714B67 55%, #fff); }
html.dark .tools-cell--zoho { --tools-tint: color-mix(in srgb, #E42527 80%, #fff); }

.tools-logo {
  width: auto;
  height: 1.75rem;
  color: var(--tools-tint, hsl(var(--foreground)));
  fill: currentColor;
  pointer-events: none;
  user-select: none;
}
@media (min-width: 768px) { .tools-logo { height: 2rem; } }
/* Los que son PALABRA dentro del cuadro de 24×24 (Mercado Pago, Zoho, Odoo,
   n8n) salen diminutos a la misma altura que los que son símbolo: se les da
   más caja para que todos pesen parecido en la rejilla. */
.tools-logo--wide { height: 2.5rem; }
@media (min-width: 768px) { .tools-logo--wide { height: 3rem; } }
/* Lovable trae su propio degradado dentro del SVG (es su logo oficial), así
   que no se le aplica tinte ni `fill: currentColor`. */
.tools-logo--lovable { fill: none; height: 2rem; }
@media (min-width: 768px) { .tools-logo--lovable { height: 2.25rem; } }

/* Cruces en las intersecciones interiores (solo en 4 columnas: en 2 caerían
   sobre el borde del bloque). */
.tools-plus {
  position: absolute;
  z-index: 1;
  display: none;
  width: 1.5rem;
  height: 1.5rem;
  color: hsl(var(--foreground) / 0.35);
  stroke-linecap: round;
  pointer-events: none;
}
@media (min-width: 768px) {
  .tools-plus { display: block; top: calc(50% - 0.75rem); }
  .tools-plus--a { left: calc(25% - 0.75rem); }
  .tools-plus--b { left: calc(50% - 0.75rem); }
  .tools-plus--c { left: calc(75% - 0.75rem); }
}

/* Cada logo entra por su cuenta: el índice de hermano lo pone home.js, así que
   la rejilla se llena de izquierda a derecha. */
.tools-grid { --reveal-step: 0.07s; }

/* Exi ESCONDIDO detrás de la primera tarjeta de #features. Vive dentro de la
   rejilla y sube por encima del borde superior de la tarjeta; la tarjeta es
   opaca y va por delante (z-index), así que solo asoma la coronilla con los
   ojos. */
.statement-grid { position: relative; }
.statement-grid > .statement-feature { position: relative; z-index: 1; }
.features-peek {
  position: absolute;
  top: 0;
  left: 1.5rem;
  width: 8.5rem;
  z-index: 0;
  pointer-events: none;
  /* Lleva `reveal` solo para que home.js le ponga `is-in` al llegar: el gesto
     de entrada es el asomo del bot, no el del marco. */
  --reveal-y: 0px;
  --reveal-blur: 0px;
}
@media (min-width: 768px) { .features-peek { left: 3rem; width: 10rem; } }
@media (min-width: 1024px) { .features-peek { width: 13rem; } }
.features-peek__frame { position: relative; }
.features-peek__bot {
  display: block;
  width: 100%;
  height: auto;
  /* Escondido del todo: baja hasta quedar íntegro detrás de la tarjeta. */
  transform: translateY(0%);
  /* Invisible del todo los primeros 5 s tras llegar a la sección (así no se
     ve ni un pedazo al entrar scrolleando); a los 5 s aparece de golpe aún
     escondido y al segundo 6 empieza a asomar. */
  opacity: 0;
  transition: opacity 0s linear 5s, transform 1.15s var(--ease-reveal) 6s;
}
/* Asomado: saca la coronilla y los ojos por encima del borde de la tarjeta. */
.features-peek.is-in .features-peek__bot { opacity: 1; transform: translateY(-62%); }
/* El trozo que asoma se puede clickear (el marco sigue inerte): un clic lo
   esconde dejando solo un pedacito de la cabeza y otro clic lo vuelve a asomar.
   Tras el primer clic ya no hay espera: la demora de 6 s era solo la entrada. */
.features-peek__bot { pointer-events: auto; cursor: pointer; }
.features-peek.is-toggled .features-peek__bot { transition-delay: 0s; }
.features-peek.is-in.is-hiding .features-peek__bot { transform: translateY(-27%); }
@media (prefers-reduced-motion: reduce) {
  .features-peek__bot { opacity: 1; transform: translateY(-62%); transition: none; }
  .features-peek.is-in.is-hiding .features-peek__bot { transform: translateY(-27%); }
}

/* ==========================================================================
   FEATURES — cabecera + 4 tarjetas con escenario estático
   ========================================================================== */
.statement-features__wrap { display: flex; flex-direction: column; gap: 2.5rem; }
@media (min-width: 1024px) { .statement-features__wrap { gap: 3.5rem; } }

.statement-feature { display: flex; flex-direction: column; overflow: hidden; }
.statement-feature__body {
  font-size: 1rem;
  line-height: 1.625;
  color: hsl(var(--secondary));
  text-wrap: pretty;
}
.statement-figure { margin-top: auto; padding-top: 2rem; }

/* ---------- Escena de cada bloque ----------
   Fondo: FOTO de paisaje desenfocada (filter: blur sobre la <img>, no
   backdrop-filter) + velo plano del color de la tarjeta para que los
   elementos encima se lean. Encima van elementos de REFERENCIA dibujados en
   CSS (esqueletos, píldoras, chips), nunca capturas de la app.
   Las fotos viven en public/landing-shots/paisaje-N.jpg (≈1200×800). */
.statement-scene {
  position: relative;
  width: 100%;
  max-width: 540px;
  height: 190px;
  margin: 0 auto;
  overflow: hidden;
  border-radius: 0.875rem;
  box-shadow: 0 0 0 1px hsl(var(--primary) / 0.1);
  font-size: 11px;
  line-height: 1;
  color: hsl(var(--foreground));
}
@media (min-width: 640px) { .statement-scene { height: 230px; } }
.statement-scene__bg {
  position: absolute;
  inset: -6%;
  width: 112%;
  height: 112%;
  object-fit: cover;
  /* El paisaje establece el contexto visual sin competir con el panel. El
     desenfoque vive en la imagen —nunca en una capa de backdrop— para que la
     interfaz permanezca limpia y legible. */
  visibility: visible;
  filter: blur(12px) saturate(.82) brightness(.56);
  transform: scale(1.1);
}
.statement-scene__veil {
  position: absolute;
  inset: 0;
  background: color-mix(in srgb, var(--surface-2) 72%, transparent);
}
html.dark .statement-scene__veil { background: color-mix(in srgb, var(--surface-2) 76%, transparent); }

/* Panel blanco/negro plano sobre la foto (misma piel que .mock) */
.statement-page,
.statement-versions,
.statement-inbox,
.statement-cal,
.statement-results,
.statement-rank,
.statement-card-pay,
.statement-flow {
  position: absolute;
  z-index: 2;
  background: hsl(var(--background));
  border-radius: 10px;
  box-shadow: 0 0 0 1px hsl(var(--foreground) / 0.1);
}
/* Línea esqueleto: ancho por --w */
.statement-page__hero b,
.statement-page__nav span,
.statement-page__cols span,
.statement-results span:not(.statement-results__url) {
  display: block;
  height: 4px;
  border-radius: 9999px;
  background: hsl(var(--foreground) / 0.12);
}

/* Píldora de estado (turquesa por defecto) */
.statement-tag {
  display: inline-flex;
  align-items: center;
  gap: 5px;
  padding: 3px 8px 3px 6px;
  border-radius: 9999px;
  background: color-mix(in srgb, hsl(var(--accent)) 16%, hsl(var(--background)));
  color: color-mix(in srgb, hsl(var(--accent)) 55%, hsl(var(--foreground)));
  font-size: 10px;
  font-weight: 500;
  white-space: nowrap;
}
.statement-tag__dot { display: block; width: 6px; height: 6px; border-radius: 9999px; background: hsl(var(--accent)); }
.statement-tag--ok {
  background: color-mix(in srgb, hsl(var(--success)) 16%, hsl(var(--background)));
  color: color-mix(in srgb, hsl(var(--success)) 45%, hsl(var(--foreground)));
}
.statement-tag--ok .statement-tag__dot { background: hsl(var(--success)); }

/* Burbuja de Exi: qué pidió el usuario / qué avisa Exi */
.statement-ask {
  position: absolute;
  z-index: 3;
  display: inline-flex;
  align-items: center;
  gap: 6px;
  max-width: 78%;
  padding: 7px 11px 7px 9px;
  border-radius: 9999px;
  background: hsl(var(--primary));
  color: hsl(var(--primary-foreground));
  font-size: 11px;
  font-weight: 500;
  line-height: 1.2;
}
.statement-ask .statement-mark { color: hsl(var(--accent)); }

/* Cursor "You" (flecha lucide + etiqueta) */
.statement-cursor {
  position: absolute;
  z-index: 4;
  display: flex;
  flex-direction: column;
  align-items: flex-start;
  color: hsl(var(--foreground));
}
.statement-cursor svg { display: block; }
.statement-cursor__tag {
  margin: -3px 0 0 9px;
  padding: 1px 5px;
  border-radius: 9999px;
  background: hsl(var(--primary));
  color: hsl(var(--primary-foreground));
  font-size: 9px;
  line-height: 12px;
  white-space: nowrap;
}

/* Mini-avatar de Exi (símbolo local; ojos huecos = se ve el fondo) */
.statement-mark { display: block; flex: none; }

/* ---------- 1 · Página con sección seleccionada + versiones ---------- */
.statement-page { top: 22px; left: 6%; width: 58%; padding: 8px; }
.statement-page__nav { display: flex; align-items: center; gap: 6px; margin-bottom: 8px; }
.statement-page__nav i { display: block; width: 10px; height: 10px; border-radius: 3px; background: hsl(var(--accent)); }
.statement-page__nav b { font-size: 8px; font-weight: 600; }
.statement-page__nav span { width: 16px; height: 3px; }
.statement-page__nav span:first-of-type { margin-left: auto; }
.statement-page__nav em { display: block; width: 26px; height: 9px; border-radius: 9999px; background: hsl(var(--primary)); }
.statement-page__hero { position: relative; display: flex; flex-direction: column; gap: 6px; padding: 12px 10px 12px; border-radius: 6px; }
.statement-page__hero b { width: var(--w); height: 6px; background: hsl(var(--foreground) / 0.22); }
.statement-page__row { display: flex; align-items: center; gap: 8px; margin-top: 4px; }
.statement-page__hero em { display: block; width: 44%; height: 28px; border-radius: 4px; background: hsl(var(--accent) / 0.35); }
.statement-page__btn { display: block; width: 34px; height: 10px; border-radius: 9999px; background: hsl(var(--primary)); }
.statement-page__sel { box-shadow: 0 0 0 1.5px hsl(var(--accent)); }
.statement-page__sel .statement-tag { position: absolute; top: -10px; right: 8px; }
.statement-page__cols { display: grid; grid-template-columns: repeat(3, 1fr); gap: 6px; margin-top: 8px; }
.statement-page__cols span { height: 22px; border-radius: 4px; }
.statement-page__foot { display: flex; gap: 6px; margin-top: 8px; padding-top: 6px; border-top: 1px solid hsl(var(--foreground) / 0.08); }
.statement-page__foot span { display: block; width: var(--w); height: 3px; border-radius: 9999px; background: hsl(var(--foreground) / 0.12); }
.statement-versions { top: 22px; right: 6%; width: 28%; display: flex; flex-direction: column; gap: 4px; padding: 9px 10px; font-size: 9.5px; }
.statement-versions strong { font-size: 10px; font-weight: 600; margin-bottom: 2px; }
.statement-versions span { display: flex; align-items: center; gap: 6px; padding: 3px 6px; border-radius: 6px; color: hsl(var(--foreground) / 0.75); white-space: nowrap; }
.statement-versions span i { display: block; width: 6px; height: 6px; border-radius: 9999px; background: hsl(var(--foreground) / 0.2); }
.statement-versions span.is-on { background: hsl(var(--accent) / 0.14); color: hsl(var(--foreground)); }
.statement-versions span.is-on i { background: hsl(var(--accent)); }
.statement-versions em { font-style: normal; color: hsl(var(--foreground) / 0.5); }
.statement-ask--ui {
  left: 6%;
  bottom: 14px;
  max-width: 66%;
  padding: 8px 11px;
  border-radius: 13px 13px 13px 4px;
  background: var(--surface-3);
  box-shadow: 0 0 0 1px hsl(var(--foreground) / .1);
  color: hsl(var(--foreground));
}
.statement-cursor--ui { top: 34%; left: 44%; }

/* ---------- 2 · Bandeja + agenda ---------- */
.statement-inbox { top: 22px; left: 5%; width: 50%; padding: 8px 8px 6px; }
.statement-inbox__head { display: flex; align-items: center; justify-content: space-between; margin-bottom: 6px; }
.statement-inbox__head strong { font-size: 10.5px; font-weight: 600; }
.statement-inbox ul { display: flex; flex-direction: column; gap: 3px; margin: 0; padding: 0; list-style: none; }
.statement-inbox li { display: grid; grid-template-columns: 18px 1fr auto; gap: 6px; align-items: center; padding: 4px 5px; border-radius: 6px; }
.statement-inbox li.is-new { background: hsl(var(--accent) / 0.12); }
.statement-inbox li i { display: flex; align-items: center; justify-content: center; width: 18px; height: 18px; border-radius: 9999px; background: var(--surface-3); font-style: normal; font-size: 8px; font-weight: 600; }
.statement-inbox li > span { display: flex; flex-direction: column; min-width: 0; }
.statement-inbox li b { font-size: 9.5px; font-weight: 600; }
.statement-inbox li small { font-size: 8.5px; color: hsl(var(--foreground) / 0.6); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.statement-inbox li time { font-size: 8px; color: hsl(var(--foreground) / 0.5); }
.statement-cal { top: 22px; right: 5%; width: 38%; padding: 9px 10px; }
.statement-cal__head { display: flex; align-items: center; justify-content: space-between; margin-bottom: 7px; font-size: 10px; font-weight: 600; }
.statement-cal__head i { display: block; width: 22px; height: 4px; border-radius: 9999px; background: hsl(var(--foreground) / 0.12); }
.statement-cal__grid { display: grid; grid-template-columns: repeat(7, 1fr); gap: 4px; }
.statement-cal__grid i { position: relative; display: block; aspect-ratio: 1; border-radius: 9999px; background: hsl(var(--foreground) / 0.08); }
.statement-cal__grid i.is-dot::after { content: ""; position: absolute; left: 50%; bottom: -3px; width: 3px; height: 3px; border-radius: 9999px; background: hsl(var(--accent)); transform: translateX(-50%); }
.statement-cal__grid i.is-day { background: hsl(var(--accent)); box-shadow: 0 0 0 2px hsl(var(--background)), 0 0 0 3px hsl(var(--accent)); }
.statement-cal__slot { display: inline-flex; align-items: center; gap: 5px; margin-top: 9px; font-size: 8.5px; color: hsl(var(--foreground) / 0.75); white-space: nowrap; }
.statement-ask--forms { left: 50%; bottom: 14px; transform: translateX(-50%); }

/* ---------- 3 · Búsqueda + resultados + visitas ---------- */
.statement-search { position: absolute; z-index: 2; top: 22px; left: 5%; display: inline-flex; align-items: center; gap: 6px; width: 54%; height: 24px; padding: 0 10px; border-radius: 9999px; background: hsl(var(--background)); box-shadow: 0 0 0 1px hsl(var(--foreground) / 0.12); color: hsl(var(--foreground) / 0.8); font-size: 10px; white-space: nowrap; }
.statement-results { top: 54px; left: 5%; width: 54%; margin: 0; padding: 5px 7px; list-style: none; }
.statement-results li { position: relative; display: grid; grid-template-columns: 14px 1fr; column-gap: 6px; row-gap: 3px; align-items: center; padding: 4px 4px; border-radius: 6px; }
.statement-results li b { grid-row: span 3; align-self: start; font-size: 9px; font-weight: 500; color: hsl(var(--foreground) / 0.45); }
.statement-results__url { display: block; width: auto; height: auto; background: none; font-size: 8px; color: hsl(var(--foreground) / 0.5); }
.statement-results li span:not(.statement-results__url) { width: var(--w); }
.statement-results li span:nth-of-type(2) { height: 5px; background: hsl(var(--foreground) / 0.25); }
.statement-results li.is-you { background: color-mix(in srgb, hsl(var(--accent)) 12%, hsl(var(--background))); }
.statement-results li.is-you b, .statement-results li.is-you .statement-results__url { color: hsl(var(--accent)); }
.statement-results li em { position: absolute; top: 4px; right: 6px; font-style: normal; font-size: 8.5px; font-weight: 500; color: color-mix(in srgb, hsl(var(--accent)) 55%, hsl(var(--foreground))); }
.statement-rank { top: 22px; right: 5%; display: flex; flex-direction: column; gap: 6px; width: 34%; padding: 8px 9px; }
.statement-rank__head { display: flex; justify-content: space-between; font-size: 9px; color: hsl(var(--foreground) / 0.6); }
.statement-rank__head b { color: hsl(var(--success)); font-weight: 600; }
.statement-rank__bars { display: flex; align-items: flex-end; gap: 3px; height: 40px; }
.statement-rank__bars i { display: block; flex: 1; height: var(--h); border-radius: 2px 2px 0 0; background: hsl(var(--foreground) / 0.14); }
.statement-rank__bars i:last-child { background: hsl(var(--accent)); }
.statement-rank__kw { display: flex; flex-direction: column; gap: 2px; margin: 0; padding: 4px 0 0; border-top: 1px solid hsl(var(--foreground) / 0.08); list-style: none; font-size: 8.5px; }
.statement-rank__kw li { display: flex; justify-content: space-between; color: hsl(var(--foreground) / 0.75); white-space: nowrap; }
.statement-rank__kw b { font-weight: 600; }
.statement-ask--seo { right: 5%; bottom: 14px; }

/* ---------- 4 · Tarjeta de pago + flujo + avisos ---------- */
.statement-card-pay { top: 22px; left: 5%; display: flex; flex-direction: column; gap: 7px; width: 38%; padding: 11px 12px; background: hsl(var(--primary)); color: hsl(var(--primary-foreground)); }
.statement-card-pay__top { display: flex; align-items: center; justify-content: space-between; }
.statement-card-pay__top em { font-style: normal; font-size: 9px; font-weight: 600; opacity: 0.8; }
.statement-card-pay__chip { display: block; width: 22px; height: 16px; border-radius: 4px; background: hsl(var(--warning)); }
.statement-card-pay__num { font-size: 11px; letter-spacing: 1px; }
.statement-card-pay__row { display: flex; justify-content: space-between; font-size: 9px; opacity: 0.85; }
.statement-card-pay__row b { font-weight: 600; opacity: 1; }
.statement-card-pay .statement-tag { align-self: flex-start; }
.statement-flow { top: 22px; right: 5%; display: flex; flex-direction: column; width: 50%; margin: 0; padding: 6px 10px; list-style: none; }
.statement-flow li { position: relative; display: flex; align-items: center; gap: 8px; padding: 5px 0; font-size: 9.5px; white-space: nowrap; }
.statement-flow li i { position: relative; z-index: 1; display: inline-flex; flex: none; align-items: center; justify-content: center; width: 12px; height: 12px; border-radius: 9999px; background: hsl(var(--foreground) / 0.18); color: transparent; box-shadow: 0 0 0 2px hsl(var(--background)); }
.statement-flow li.is-done i { background: hsl(var(--success)); color: #fff; }
.statement-flow li + li::before { content: ""; position: absolute; top: -7px; left: 5.5px; width: 1px; height: 14px; background: hsl(var(--foreground) / 0.2); }
.statement-flow li span { flex: 1; overflow: hidden; text-overflow: ellipsis; }
.statement-flow li time { font-size: 8px; color: hsl(var(--foreground) / 0.5); }
.statement-toasts { position: absolute; z-index: 3; right: 5%; bottom: 14px; display: flex; flex-direction: column; gap: 5px; align-items: flex-end; }
.statement-toast { display: inline-flex; align-items: center; gap: 6px; padding: 5px 9px; border-radius: 9999px; background: hsl(var(--background)); box-shadow: 0 0 0 1px hsl(var(--foreground) / 0.1); font-size: 9px; white-space: nowrap; }
.statement-toast i { display: block; width: 6px; height: 6px; border-radius: 9999px; background: hsl(var(--success)); }
.statement-ask--pay { left: 5%; bottom: 14px; }

@media (max-width: 400px) {
  .statement-scene { font-size: 10px; }
  .statement-ask { max-width: 88%; font-size: 10px; }
}

/* La actividad empieza al llegar a la sección: son señales del trabajo de Exi,
   no movimiento continuo de decoración. */
/* Coreografía de cada bloque al entrar (`.is-in`): la foto respira muy
   despacio, los paneles suben en cascada, luego la píldora de Exi. Después
   cada escena repite UN gesto corto en bucle. Al pasar el ratón la foto se
   aclara un poco y los paneles se levantan 2px: profundidad sin glow. */
.statement-scene__bg { transition: filter 600ms ease; }
.statement-page, .statement-versions, .statement-inbox, .statement-cal, .statement-search, .statement-results, .statement-rank, .statement-card-pay, .statement-flow, .statement-ask, .statement-toasts { transition: transform 500ms var(--ease-spring); }
@media (hover: hover) {
  .statement-feature:hover .statement-scene__bg { filter: blur(9px) saturate(1); }
  .statement-feature:hover :is(.statement-page, .statement-versions, .statement-inbox, .statement-cal, .statement-search, .statement-results, .statement-rank, .statement-card-pay, .statement-flow) { transform: translateY(-2px); }
  .statement-feature:hover .statement-ask--forms { transform: translate(-50%, -2px); }
}
@media (prefers-reduced-motion: no-preference) {
  .statement-feature.is-in .statement-scene__bg { animation: statement-drift 22s ease-in-out infinite alternate; }
  /* Entrada en cascada: paneles → listas → Exi. */
  .statement-feature.is-in :is(.statement-page, .statement-inbox, .statement-search, .statement-card-pay) { animation: statement-rise 700ms var(--ease-spring) both; }
  .statement-feature.is-in :is(.statement-versions, .statement-cal, .statement-results, .statement-flow) { animation: statement-rise 700ms var(--ease-spring) 140ms both; }
  .statement-feature.is-in .statement-rank { animation: statement-rise 700ms var(--ease-spring) 220ms both; }
  .statement-feature.is-in .statement-ask { animation: statement-rise 600ms var(--ease-spring) 520ms both; }
  .statement-feature.is-in .statement-ask--forms { animation-name: statement-rise-centered; }
  .statement-feature.is-in :is(.statement-inbox li, .statement-results li, .statement-flow li, .statement-versions span) { animation: statement-rise 500ms var(--ease-spring) both; }
  .statement-feature.is-in :is(.statement-inbox li, .statement-results li, .statement-flow li, .statement-versions span):nth-child(2) { animation-delay: 240ms; }
  .statement-feature.is-in :is(.statement-inbox li, .statement-results li, .statement-flow li, .statement-versions span):nth-child(3) { animation-delay: 340ms; }
  .statement-feature.is-in :is(.statement-inbox li, .statement-results li, .statement-flow li, .statement-versions span):nth-child(4) { animation-delay: 440ms; }
  /* 1 · el cursor va a la portada, el título crece, la foto cambia, sube la versión */
  .statement-feature.is-in .statement-cursor--ui { animation: statement-cursor-ui 5s var(--ease-spring) 800ms infinite; }
  .statement-feature.is-in .statement-page__sel { animation: statement-select 5s var(--ease-spring) 800ms infinite; }
  .statement-feature.is-in .statement-page__hero b:first-child { animation: statement-title 5s ease-in-out 800ms infinite; }
  .statement-feature.is-in .statement-page__hero em { animation: statement-swap 5s ease-in-out 800ms infinite; }
  .statement-feature.is-in .statement-versions span.is-on i { animation: statement-pulse 2.5s ease-in-out infinite; }
  /* 2 · llega un mensaje nuevo, el día late */
  .statement-feature.is-in .statement-inbox li.is-new { animation: statement-rise 500ms var(--ease-spring) both, statement-hl 4s ease-in-out 1s infinite; }
  .statement-feature.is-in .statement-cal__grid i.is-day { animation: statement-pulse 3s ease-in-out infinite; }
  /* 3 · barras crecen, el #1 pulsa, +38% late */
  .statement-feature.is-in .statement-rank__bars i { transform-origin: bottom; animation: statement-bar 900ms var(--ease-spring) 400ms both; }
  .statement-feature.is-in .statement-rank__bars i:nth-child(2) { animation-delay: 460ms; }
  .statement-feature.is-in .statement-rank__bars i:nth-child(3) { animation-delay: 520ms; }
  .statement-feature.is-in .statement-rank__bars i:nth-child(4) { animation-delay: 580ms; }
  .statement-feature.is-in .statement-rank__bars i:nth-child(5) { animation-delay: 640ms; }
  .statement-feature.is-in .statement-rank__bars i:nth-child(6) { animation-delay: 700ms; }
  .statement-feature.is-in .statement-rank__bars i:nth-child(7) { animation-delay: 760ms; }
  .statement-feature.is-in .statement-results li.is-you { animation: statement-rise 500ms var(--ease-spring) both, statement-hl 4s ease-in-out 900ms infinite; }
  /* 4 · los pasos se completan en secuencia, los avisos entran uno tras otro */
  .statement-feature.is-in .statement-flow li i { animation: statement-step 6s ease-in-out infinite; }
  .statement-feature.is-in .statement-flow li:nth-child(2) i { animation-delay: 600ms; }
  .statement-feature.is-in .statement-flow li:nth-child(3) i { animation-delay: 1200ms; }
  .statement-feature.is-in .statement-flow li:nth-child(4) i { animation: none; }
  .statement-feature.is-in .statement-toast { animation: statement-toast 6s var(--ease-spring) infinite; }
  .statement-feature.is-in .statement-toast:nth-child(2) { animation-delay: 900ms; }
  .statement-feature.is-in .statement-tag--ok .statement-tag__dot { animation: statement-pulse 2.2s ease-in-out 1500ms infinite; }
}

@keyframes statement-cursor-ui {
  0%, 18%, 100% { transform: translate(0, 0); }
  36%, 68% { transform: translate(-30px, -20px); }
}
@keyframes statement-select {
  0%, 30% { box-shadow: 0 0 0 1.5px hsl(var(--accent) / 0.25); }
  50%, 100% { box-shadow: 0 0 0 1.5px hsl(var(--accent)); }
}
@keyframes statement-pulse { 50% { transform: scale(1.25); } }
@keyframes statement-drift { from { transform: scale(1.02) translate(0, 0); } to { transform: scale(1.1) translate(-2%, 1.5%); } }
@keyframes statement-rise { from { opacity: 0; transform: translateY(14px); } to { opacity: 1; transform: translateY(0); } }
@keyframes statement-rise-centered { from { opacity: 0; transform: translate(-50%, 14px); } to { opacity: 1; transform: translate(-50%, 0); } }
@keyframes statement-swap { 0%, 40%, 100% { background: hsl(var(--accent) / 0.35); } 60%, 85% { background: hsl(var(--warning) / 0.45); } }
@keyframes statement-title { 0%, 40%, 100% { width: 58%; height: 6px; } 60%, 85% { width: 78%; height: 9px; } }
@keyframes statement-toast { 0%, 8% { opacity: 0; transform: translateY(10px); } 18%, 60% { opacity: 1; transform: none; } 72%, 100% { opacity: 0; transform: translateY(-6px); } }
@keyframes statement-hl { 0%, 100% { background: color-mix(in srgb, hsl(var(--accent)) 12%, hsl(var(--background))); } 50% { background: color-mix(in srgb, hsl(var(--accent)) 26%, hsl(var(--background))); } }
@keyframes statement-step { 0%, 10% { background: hsl(var(--foreground) / 0.18); } 25%, 100% { background: hsl(var(--success)); } }
@keyframes statement-bar { from { transform: scaleY(0.08); } }
@keyframes statement-message {
  from { opacity: 0; transform: translateY(8px); }
  to { opacity: 1; transform: translateY(0); }
}

/* 03-use-cases-video.css */
/* ==========================================================================
   Landing pública — sección 03: USE CASES (#use-cases) + VIDEO (#video)
   Contrato: design-library/grokbot-reference/DESIGN-SYSTEM.md. Depende de
   public/landing/base.css (.section .h2 .chip .btn .mock .reveal + tokens).
   Solo selectores con prefijo `use-`. Mobile-first: 640px / 1024px.
   ========================================================================== */

/* --- Recorrido por scroll, con tres momentos como guía ------------------ */
.use-scroller { position: relative; }
.use-selector { display: flex; flex-wrap: wrap; gap: 0.5rem; }
.use-selector [aria-pressed="true"] { background: hsl(var(--primary)); color: hsl(var(--background)); }
.use-steps { display: none; }

/* --- Layout interno: texto del paso y ejemplo --------------------------- */
.use-wrap {
  display: grid;
  gap: 3rem;
  grid-template-areas: "intro" "chat";
  width: 100%;
  max-width: var(--site-content-width);
  margin-inline: auto;
  padding-inline: 1rem;
}
.use-intro { grid-area: intro; }
.use-chat-col { grid-area: chat; }
.use-section [hidden] { display: none !important; }

@media (min-width: 640px) {
  .use-wrap { padding-inline: 1.5rem; }
}
@media (min-width: 1024px) {
  .use-wrap {
    grid-template-columns: repeat(2, minmax(0, 1fr));
    grid-template-areas: "intro chat";
    align-items: center;
    column-gap: 4rem;
  }
}

/* --- Intro: título + el texto del paso ---------------------------------- */
.use-intro {
  display: flex;
  flex-direction: column;
  gap: 2rem;
  align-items: center;
  text-align: center;
}
@media (min-width: 1024px) {
  .use-intro { align-items: flex-start; text-align: left; }
}

.use-panes { width: 100%; max-width: 30rem; display: grid; gap: 1.5rem; }
.use-pane {
  font-size: 1rem;
  line-height: 1.625;
  color: hsl(var(--secondary));
  text-wrap: pretty;
  margin: 0;
}
.use-pane strong { font-weight: 500; color: hsl(var(--primary)); }

/* El <strong> de cada paso ES el título de la sección (el h2 fijo se quedó en
   sr-only), así que lleva el tamaño de .h2 del sistema. */
.use-pane strong { display: block; margin-bottom: 0.75rem; font-size: 1.875rem; line-height: 2.25rem; letter-spacing: -0.02em; text-wrap: balance; }
@media (min-width: 640px) { .use-pane strong { font-size: 2.25rem; line-height: 2.5rem; } }

.use-rail { display: none; }
.use-chat-col {
  display: flex;
  justify-content: center;
  align-items: center;
  min-width: 0;
}
/* Escenario plano con los tokens de la PÁGINA: una superficie más de la
   landing, sigue el tema claro/oscuro como el resto. */
.use-stage {
  position: relative;
  display: flex;
  flex-direction: column;
  width: 100%;
  max-width: 32rem;
  min-height: 24rem;
  margin: 0;
  padding: 1rem;
  border: 1px solid hsl(var(--border));
  border-radius: 1.5rem;
  background: hsl(var(--card));
  color: hsl(var(--foreground));
  font-size: 13px;
  line-height: 1.4;
  text-align: left;
}
.use-chat-col.is-changing .use-stage { animation: use-chat-change 520ms var(--ease-spring); }
.use-stage__head {
  display: flex;
  align-items: center;
  gap: 8px;
  flex-shrink: 0;
  height: 28px;
  margin-bottom: 14px;
  font-size: 12px;
  font-weight: 600;
}
.use-stage__name { min-width: 0; flex: 1; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.use-stage__dots { display: flex; gap: 4px; }
.use-stage__dots i { display: block; width: 6px; height: 6px; border-radius: 9999px; background: hsl(var(--foreground) / 0.14); }
.use-mark { display: block; flex: none; }

/* Una escena por paso: solo se pinta la que coincide con `data-use-scenario`.
   Es puro CSS sobre el atributo que home.js ya movía, sin JS nuevo. */
.use-scene { display: none; flex: 1; flex-direction: column; gap: 14px; }
.use-chat-col[data-use-scenario="brief"] .use-scene[data-use-scene="brief"],
.use-chat-col[data-use-scenario="proposal"] .use-scene[data-use-scene="proposal"],
.use-chat-col[data-use-scenario="exi"] .use-scene[data-use-scene="exi"],
.use-chat-col[data-use-scenario="editor"] .use-scene[data-use-scene="editor"],
.use-chat-col[data-use-scenario="connect"] .use-scene[data-use-scene="connect"],
.use-chat-col[data-use-scenario="legal"] .use-scene[data-use-scene="legal"],
.use-chat-col[data-use-scenario="automations"] .use-scene[data-use-scene="automations"],
.use-chat-col[data-use-scenario="seo"] .use-scene[data-use-scene="seo"],
.use-chat-col[data-use-scenario="publish"] .use-scene[data-use-scene="publish"] {
  display: flex;
}
/* Sin anclaje (móvil / sin JS) las 9 escenas van una debajo de otra. */
.use-scroller:not(.is-pinned) .use-scene { display: flex; }
.use-scroller:not(.is-pinned) .use-scene + .use-scene { padding-top: 14px; border-top: 1px solid hsl(var(--border)); }

@media (min-width: 1024px) {
  .use-scroller.is-pinned .use-sticky {
    position: sticky;
    top: var(--site-header-h);
    display: flex;
    align-items: center;
    min-height: calc(100vh - var(--site-header-h));
    min-height: calc(100dvh - var(--site-header-h));
  }
  .use-scroller.is-pinned .use-steps { display: block; margin-top: calc(-100vh + var(--site-header-h)); }
  .use-scroller.is-pinned .use-step { height: 74vh; height: 74dvh; }
  .use-scroller.is-pinned .use-pane { display: none; }
  .use-scroller.is-pinned .use-pane.is-active { display: block; animation: use-rise 360ms var(--ease-spring); }
}

/* ---- Piezas comunes ---- */
.use-sk { display: block; width: var(--w, 60%); height: 4px; border-radius: 9999px; background: hsl(var(--foreground) / 0.12); }
.use-sk--title { height: 7px; background: hsl(var(--foreground) / 0.26); }
.use-field {
  display: block;
  height: 22px;
  border-radius: 8px;
  box-shadow: inset 0 0 0 1px hsl(var(--foreground) / 0.14);
  background: hsl(var(--background));
}
.use-field.is-text { display: flex; align-items: center; height: auto; min-height: 24px; padding: 4px 8px; font-size: 11px; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.use-field.is-hl { box-shadow: inset 0 0 0 1.5px hsl(var(--accent)); }
.use-tag {
  display: inline-flex;
  align-items: center;
  gap: 5px;
  padding: 3px 8px 3px 6px;
  border-radius: 9999px;
  background: color-mix(in srgb, hsl(var(--accent)) 16%, hsl(var(--background)));
  color: color-mix(in srgb, hsl(var(--accent)) 55%, hsl(var(--foreground)));
  font-size: 11px;
  font-weight: 500;
  white-space: nowrap;
}
.use-tag i, .use-tag__dot { display: block; width: 6px; height: 6px; border-radius: 9999px; background: hsl(var(--accent)); }
.use-tag--ok { background: color-mix(in srgb, hsl(var(--success)) 16%, hsl(var(--background))); color: color-mix(in srgb, hsl(var(--success)) 45%, hsl(var(--foreground))); }
.use-tag--ok i { background: hsl(var(--success)); }
.use-chip { display: inline-flex; align-items: center; gap: 4px; padding: 2px 8px 2px 6px; border-radius: 9999px; background: var(--surface-2); font-size: 10px; color: hsl(var(--foreground)); }
.use-btn {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 6px;
  height: 32px;
  padding: 0 14px;
  border-radius: 9999px;
  font-size: 12px;
  font-weight: 500;
  white-space: nowrap;
}
.use-btn--ghost { box-shadow: inset 0 0 0 1px hsl(var(--border)); color: hsl(var(--foreground)); }
.use-btn--go { background: hsl(var(--primary)); color: hsl(var(--primary-foreground)); }
.use-btn--sm { height: 26px; padding: 0 10px; font-size: 11px; }
.use-btn--wide { align-self: stretch; margin-top: auto; }
.use-btn__check { display: inline-flex; width: 14px; height: 14px; align-items: center; justify-content: center; border-radius: 9999px; background: hsl(var(--success)); color: #fff; }
.use-caret { display: inline-block; width: 1.5px; height: 13px; margin-left: 1px; vertical-align: -2px; background: hsl(var(--foreground)); }
.use-ok, .use-edit { display: inline-flex; flex: none; align-items: center; justify-content: center; width: 18px; height: 18px; border-radius: 9999px; }
.use-ok { background: color-mix(in srgb, hsl(var(--success)) 18%, hsl(var(--background))); color: hsl(var(--success)); }
.use-edit { background: color-mix(in srgb, hsl(var(--accent)) 18%, hsl(var(--background))); color: hsl(var(--accent)); }
.use-note { display: flex; align-items: center; gap: 8px; margin: auto 0 0; font-size: 12px; color: hsl(var(--secondary)); }
.use-note .use-mark { color: hsl(var(--accent)); }
/* Registro de actividad: hora + línea */
.use-log { display: flex; flex-direction: column; gap: 5px; margin: auto 0 0; padding: 8px 10px; border-radius: 10px; background: var(--surface-2); list-style: none; font-size: 11px; }
.use-log li { display: flex; gap: 8px; align-items: baseline; color: hsl(var(--foreground) / 0.8); }
.use-log time { flex: none; font-variant-numeric: tabular-nums; color: hsl(var(--secondary)); }
.use-log li.is-live { color: hsl(var(--foreground)); }
.use-log li.is-live::after { content: ""; width: 6px; height: 6px; margin-left: auto; border-radius: 9999px; background: hsl(var(--accent)); flex: none; align-self: center; }
/* Mini-página (se reutiliza en 1, 3 y 4) */
.use-mini__nav { display: flex; align-items: center; gap: 6px; margin-bottom: 10px; }
.use-mini__nav i { display: block; width: 10px; height: 10px; border-radius: 3px; background: hsl(var(--accent)); }
.use-mini__nav span { display: block; width: 18px; height: 3px; border-radius: 9999px; background: hsl(var(--foreground) / 0.14); }
.use-mini__nav span:first-of-type { margin-left: auto; }
.use-mini__photo { display: block; height: 58px; border-radius: 8px; background: hsl(var(--accent) / 0.3); }
.use-mini__title { display: block; height: 9px; width: 70%; border-radius: 9999px; background: hsl(var(--foreground) / 0.26); }
.use-mini__cta { display: block; width: 44px; height: 12px; border-radius: 9999px; background: hsl(var(--primary)); }
.use-mini__cards { display: grid; grid-template-columns: repeat(3, 1fr); gap: 6px; margin-top: 6px; }
.use-mini__cards i { display: block; height: 24px; border-radius: 5px; background: hsl(var(--foreground) / 0.07); box-shadow: inset 0 0 0 1px hsl(var(--foreground) / 0.06); }
.use-swatches { display: flex; gap: 5px; }
.use-swatches i { display: block; width: 14px; height: 14px; border-radius: 9999px; background: hsl(var(--foreground) / 0.18); }
.use-swatches i.c2 { background: hsl(var(--warning) / 0.8); }
.use-swatches i.c3 { background: hsl(var(--color-breeze)); }
.use-swatches i.c4 { background: hsl(var(--foreground)); }
.use-swatches i.is-on { background: hsl(var(--accent)); box-shadow: 0 0 0 2px hsl(var(--background)), 0 0 0 3px hsl(var(--accent)); }

/* ---- 1 · Prompt + divisor ---- */
.use-prompt { display: flex; align-items: flex-start; gap: 10px; padding: 10px 8px 8px 10px; border: 1px solid hsl(var(--border)); border-radius: 16px; background: hsl(var(--background)); }
.use-prompt__bot { width: 26px; height: 26px; flex: none; }
.use-prompt__body { flex: 1; min-width: 0; display: flex; flex-direction: column; gap: 6px; }
.use-prompt__text { margin: 0; font-size: 12.5px; line-height: 1.45; color: hsl(var(--foreground)); }
.use-prompt__chips { display: flex; gap: 5px; }
.use-prompt__send { display: inline-flex; flex: none; align-items: center; justify-content: center; width: 28px; height: 28px; border-radius: 9999px; background: hsl(var(--primary)); color: hsl(var(--primary-foreground)); }
@property --use-split { syntax: "<percentage>"; inherits: true; initial-value: 46%; }
.use-split { position: relative; display: grid; grid-template-columns: var(--use-split, 46%) 1fr; flex: 1; min-height: 168px; border: 1px solid hsl(var(--border)); border-radius: 12px; background: hsl(var(--background)); overflow: hidden; }
.use-split__form { display: flex; flex-direction: column; gap: 3px; padding: 10px; border-right: 1px solid hsl(var(--border)); min-width: 0; overflow: hidden; }
.use-split__form small { margin-top: 3px; font-size: 9.5px; color: hsl(var(--foreground) / 0.6); white-space: nowrap; }
.use-radios { display: flex; gap: 4px; }
.use-radios i { display: inline-flex; align-items: center; height: 18px; padding: 0 8px; border-radius: 9999px; box-shadow: inset 0 0 0 1px hsl(var(--border)); font-style: normal; font-size: 10px; white-space: nowrap; }
.use-radios i.is-on { background: hsl(var(--primary)); color: hsl(var(--primary-foreground)); box-shadow: none; }
.use-swatches--row i { width: 16px; height: 16px; }
.use-split__bar { position: absolute; top: 0; bottom: 0; left: var(--use-split, 46%); width: 0; display: flex; align-items: center; justify-content: center; }
.use-split__bar i { display: block; width: 14px; height: 30px; border-radius: 9999px; background: hsl(var(--primary)); box-shadow: 0 0 0 3px hsl(var(--background)); }
.use-split__preview { display: flex; flex-direction: column; gap: 6px; padding: 12px; min-width: 0; }

/* ---- 2 · Propuesta ---- */
.use-doc__head { display: flex; align-items: center; justify-content: space-between; gap: 8px; }
.use-doc__head strong { font-size: 13px; font-weight: 600; }
.use-doc { display: flex; flex-direction: column; gap: 5px; margin: 0; padding: 0; list-style: none; }
.use-doc li { display: flex; align-items: center; gap: 9px; padding: 6px 9px; border-radius: 10px; background: hsl(var(--background)); box-shadow: inset 0 0 0 1px hsl(var(--border)); }
.use-doc li b { font-size: 10px; font-weight: 500; color: hsl(var(--foreground) / 0.45); font-variant-numeric: tabular-nums; }
.use-doc__thumb { display: block; flex: none; width: 34px; height: 22px; border-radius: 4px; background: hsl(var(--foreground) / 0.08); box-shadow: inset 0 0 0 1px hsl(var(--foreground) / 0.06); }
.use-doc li:first-child .use-doc__thumb { background: hsl(var(--accent) / 0.3); }
.use-doc__txt { display: flex; flex: 1; min-width: 0; flex-direction: column; gap: 1px; font-size: 12px; }
.use-doc__txt small { font-size: 10px; color: hsl(var(--secondary)); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.use-doc li.is-editing { box-shadow: inset 0 0 0 1.5px hsl(var(--accent)); }
.use-approve { display: flex; align-items: center; justify-content: flex-end; gap: 8px; margin-top: auto; }
.use-approve--tight { margin-top: 0; }
.use-approve__note { margin-right: auto; font-size: 11px; color: hsl(var(--secondary)); }

/* ---- 3 · Editar con Exi ---- */
.use-thread { display: flex; flex-direction: column; gap: 8px; }
.use-thread__cli { position: relative; align-self: flex-end; max-width: 84%; margin: 0; padding: 8px 10px 8px; border: 1px solid hsl(var(--border)); border-radius: 16px 16px 0 16px; background: var(--surface-2); font-size: 12.5px; line-height: 1.45; }
.use-thread__cli time { display: block; margin-top: 3px; text-align: right; font-size: 9px; color: hsl(var(--secondary)); }
.use-thread__exi { display: flex; align-items: flex-start; gap: 8px; margin: 0; font-size: 12.5px; line-height: 1.45; }
.use-thread__exi .use-mark { color: hsl(var(--accent)); margin-top: 3px; }
.use-thread__status { display: flex; align-items: center; gap: 8px; margin: 0; font-size: 10.5px; color: hsl(var(--secondary)); }
.use-steps-dots { display: flex; gap: 3px; }
.use-steps-dots i { display: block; width: 14px; height: 4px; border-radius: 9999px; background: hsl(var(--foreground) / 0.14); }
.use-steps-dots i.is-on { background: hsl(var(--accent)); }
.use-mini { position: relative; flex: 1; padding: 10px; border: 1px solid hsl(var(--border)); border-radius: 12px; background: hsl(var(--background)); }
.use-mini__hero { display: grid; grid-template-columns: 1fr 1fr; gap: 10px; align-items: center; }
.use-mini__copy { display: flex; flex-direction: column; gap: 6px; }
.use-tag--float { position: absolute; right: 10px; top: 10px; }

/* ---- 4 · Editor Pro ---- */
.use-editor { display: grid; grid-template-columns: 74px 1fr 40%; flex: 1; min-height: 210px; border: 1px solid hsl(var(--border)); border-radius: 12px; background: hsl(var(--background)); overflow: hidden; font-size: 10.5px; }
.use-editor__layers { display: flex; flex-direction: column; gap: 3px; padding: 8px 6px; border-right: 1px solid hsl(var(--border)); }
.use-editor__layers strong { font-size: 10px; margin-bottom: 4px; font-weight: 600; }
.use-editor__layers span { padding: 3px 6px; border-radius: 5px; color: hsl(var(--foreground) / 0.75); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.use-editor__layers span.is-sub { padding-left: 14px; }
.use-editor__layers span.is-on { background: hsl(var(--accent) / 0.16); color: hsl(var(--foreground)); }
.use-editor__canvas { display: flex; flex-direction: column; gap: 8px; padding: 12px; }
.use-editor__el { position: relative; display: block; height: 42px; border-radius: 6px; background: hsl(var(--accent) / 0.22); box-shadow: 0 0 0 1.5px hsl(var(--accent)); }
.use-editor__label { position: absolute; top: -9px; left: 0; padding: 1px 6px; border-radius: 4px; background: hsl(var(--accent)); color: #fff; font-size: 8.5px; font-weight: 500; white-space: nowrap; }
.use-editor__handle { position: absolute; width: 7px; height: 7px; border-radius: 2px; background: hsl(var(--background)); box-shadow: 0 0 0 1.5px hsl(var(--accent)); }
.use-editor__handle--tl { top: -4px; left: -4px; } .use-editor__handle--tr { top: -4px; right: -4px; }
.use-editor__handle--bl { bottom: -4px; left: -4px; } .use-editor__handle--br { right: -4px; bottom: -4px; }
.use-editor__panel { display: flex; flex-direction: column; gap: 4px; padding: 10px; border-left: 1px solid hsl(var(--border)); background: var(--surface-2); }
.use-editor__panel strong { margin-bottom: 4px; font-size: 11px; font-weight: 600; }
.use-editor__panel small { font-size: 9.5px; color: hsl(var(--foreground) / 0.6); }
.use-slider { position: relative; display: block; height: 4px; margin: 7px 30px 9px 0; border-radius: 9999px; background: hsl(var(--foreground) / 0.14); }
.use-slider__knob { position: absolute; top: 50%; left: var(--use-knob, 40%); width: 12px; height: 12px; border-radius: 9999px; background: hsl(var(--primary)); transform: translate(-50%, -50%); }
.use-slider__val { position: absolute; right: -30px; top: 50%; transform: translateY(-50%); font-size: 10px; font-weight: 500; font-variant-numeric: tabular-nums; }
.use-slider--b { --use-knob: 62%; }
.use-align { display: flex; gap: 4px; }
.use-align i { display: block; width: 20px; height: 16px; border-radius: 4px; background: hsl(var(--foreground) / 0.1); }
.use-align i.is-on { background: hsl(var(--primary)); }
.use-editor__save { display: flex; align-items: center; gap: 5px; margin-top: auto; font-size: 9.5px; color: hsl(var(--secondary)); }
.use-editor__save .use-tag__dot { background: hsl(var(--success)); }

/* ---- 5 · Conectar ---- */
.use-scene[data-use-scene="connect"], .use-scene[data-use-scene="automations"] { justify-content: space-between; }
.use-scene[data-use-scene="connect"] .use-log, .use-scene[data-use-scene="automations"] .use-log { margin-top: 0; }
.use-seg { display: inline-flex; align-self: center; padding: 2px; border-radius: 9999px; background: var(--surface-2); font-size: 12px; }
.use-seg > span { display: inline-flex; align-items: center; gap: 6px; height: 28px; padding: 0 12px; border-radius: 9999px; color: hsl(var(--secondary)); }
.use-seg > span.is-on { background: hsl(var(--background)); color: hsl(var(--foreground)); box-shadow: 0 0 0 1px hsl(var(--border)); }
.use-seg .use-mark { color: hsl(var(--accent)); }
.use-tiles { display: grid; grid-template-columns: repeat(3, 1fr); gap: 8px; margin: 0; padding: 0; list-style: none; }
.use-tiles li { display: flex; flex-direction: column; align-items: center; gap: 4px; padding: 14px 8px 12px; border-radius: 12px; background: hsl(var(--background)); box-shadow: inset 0 0 0 1px hsl(var(--border)); text-align: center; }
.use-tiles__ico { display: inline-flex; align-items: center; justify-content: center; width: 34px; height: 34px; margin-bottom: 4px; border-radius: 9999px; background: var(--surface-2); color: hsl(var(--foreground)); }
.use-tiles li.is-on .use-tiles__ico { background: color-mix(in srgb, hsl(var(--success)) 16%, hsl(var(--background))); color: hsl(var(--success)); }
.use-tiles li > span { font-size: 12px; font-weight: 500; }
.use-tiles li small { font-size: 9.5px; color: hsl(var(--secondary)); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; max-width: 100%; }
.use-tiles li em { margin-top: 4px; font-style: normal; font-size: 10px; color: hsl(var(--secondary)); }
.use-tiles li.is-on em { color: hsl(var(--success)); }

/* ---- 6 · Legales ---- */
/* `minmax(0, …)` y no `1fr` a secas: el mínimo de `1fr` es el contenido, así
   que por debajo de ~330px las dos columnas dejaban de caber y empujaban el
   ancho de la portada entera. */
.use-papers { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); gap: 10px; flex: 1; }
.use-paper { display: flex; flex-direction: column; gap: 6px; padding: 12px; border-radius: 12px; background: hsl(var(--background)); box-shadow: inset 0 0 0 1px hsl(var(--border)); }
.use-paper strong { font-size: 12px; font-weight: 600; }
.use-paper > small { font-size: 9.5px; color: hsl(var(--secondary)); margin: -3px 0 4px; }
.use-paper__foot { display: flex; gap: 6px; align-items: center; margin-top: auto; padding-top: 6px; }

/* ---- 7 · Automatizaciones ---- */
.use-recipes { display: flex; flex-direction: column; gap: 5px; margin: 0; padding: 0; list-style: none; }
.use-recipes li { display: flex; align-items: center; gap: 8px; padding: 7px 10px; border-radius: 10px; background: hsl(var(--background)); box-shadow: inset 0 0 0 1px hsl(var(--border)); }
.use-recipes__flow { display: flex; flex: 1; min-width: 0; align-items: center; gap: 6px; font-size: 11.5px; }
.use-recipes__flow b { font-weight: 500; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.use-recipes__flow i { position: relative; display: block; flex: none; width: 14px; height: 1px; background: hsl(var(--foreground) / 0.3); }
.use-recipes__flow i::after { content: ""; position: absolute; right: -1px; top: -2.5px; width: 5px; height: 5px; border-top: 1px solid hsl(var(--foreground) / 0.3); border-right: 1px solid hsl(var(--foreground) / 0.3); transform: rotate(45deg); }
.use-recipes li > small { flex: none; font-size: 9.5px; color: hsl(var(--secondary)); white-space: nowrap; }
.use-toggle { position: relative; display: block; flex: none; width: 30px; height: 18px; border-radius: 9999px; background: hsl(var(--foreground) / 0.18); }
.use-toggle i { position: absolute; top: 2px; left: 2px; width: 14px; height: 14px; border-radius: 9999px; background: hsl(var(--background)); }
.use-recipes li.is-on .use-toggle { background: hsl(var(--success)); }
.use-recipes li.is-on .use-toggle i { left: 14px; }

/* ---- 8 · SEO ---- */
.use-seo { display: grid; grid-template-columns: 84px 1fr; gap: 12px; align-items: center; }
.use-score { position: relative; display: flex; flex-direction: column; align-items: center; justify-content: center; width: 84px; height: 84px; }
.use-score svg { position: absolute; inset: 0; width: 100%; height: 100%; transform: rotate(-90deg); }
.use-score__track { fill: none; stroke: hsl(var(--foreground) / 0.1); stroke-width: 4; }
.use-score__arc { fill: none; stroke: hsl(var(--accent)); stroke-width: 4; stroke-linecap: round; stroke-dasharray: 106.8; stroke-dashoffset: 15; }
.use-score b { font-size: 22px; font-weight: 600; letter-spacing: -0.02em; line-height: 1; }
.use-score small { font-size: 9px; color: hsl(var(--secondary)); margin-top: 2px; }
.use-kw { display: flex; flex-direction: column; margin: 0; padding: 0; list-style: none; font-size: 11px; }
.use-kw li { display: grid; grid-template-columns: 1fr 26px 34px; gap: 6px; align-items: center; padding: 4px 0; border-bottom: 1px solid hsl(var(--border)); }
.use-kw li:last-child { border-bottom: 0; }
.use-kw__head { font-size: 9.5px; color: hsl(var(--secondary)); }
.use-kw__head span:last-child { grid-column: 2 / 4; }
.use-kw b { font-weight: 600; font-variant-numeric: tabular-nums; }
.use-kw em { font-style: normal; font-size: 9.5px; color: hsl(var(--secondary)); }
.use-kw em.is-up { color: hsl(var(--success)); }
.use-checks, .use-dns { display: flex; flex-direction: column; gap: 5px; margin: 0; padding: 0; list-style: none; }
.use-checks li, .use-dns li { display: flex; align-items: center; gap: 8px; padding: 6px 9px; border-radius: 9px; background: hsl(var(--background)); box-shadow: inset 0 0 0 1px hsl(var(--border)); font-size: 11.5px; }
.use-checks li i, .use-dns li i { display: inline-flex; flex: none; width: 16px; height: 16px; align-items: center; justify-content: center; border-radius: 9999px; box-shadow: inset 0 0 0 1px hsl(var(--foreground) / 0.2); color: transparent; }
.use-checks li.is-done i, .use-dns li.is-done i { background: hsl(var(--success)); box-shadow: none; color: #fff; }
.use-checks li.is-doing, .use-dns li.is-doing { box-shadow: inset 0 0 0 1.5px hsl(var(--accent)); }
.use-checks li.is-doing i, .use-dns li.is-doing i { box-shadow: inset 0 0 0 1.5px hsl(var(--accent)); }
.use-checks li > span { flex: 1; min-width: 0; }
.use-checks li em { font-style: normal; font-size: 10.5px; font-weight: 500; padding: 2px 8px; border-radius: 9999px; background: hsl(var(--primary)); color: hsl(var(--primary-foreground)); }

/* ---- 9 · Dominio + publicar ---- */
.use-domain { display: flex; align-items: center; gap: 4px; height: 38px; padding: 0 8px 0 12px; border: 1px solid hsl(var(--border)); border-radius: 9999px; background: hsl(var(--background)); font-size: 13px; }
.use-domain__www { color: hsl(var(--secondary)); }
.use-domain__name { flex: 1; font-weight: 500; }
.use-alts { display: flex; flex-direction: column; gap: 2px; margin: -6px 0 0; padding: 0 12px; list-style: none; font-size: 11px; }
.use-alts li { display: flex; justify-content: space-between; color: hsl(var(--foreground) / 0.75); }
.use-alts em { font-style: normal; color: hsl(var(--secondary)); }
.use-alts em.is-ok { color: hsl(var(--success)); }

@keyframes use-chat-change {
  from { opacity: 0.4; transform: translateY(10px) scale(0.985); }
  to { opacity: 1; transform: none; }
}

/* ---- Vida de cada escena (solo con movimiento permitido). Al cambiar de
   paso todo entra en cascada; después cada escena repite UN gesto corto. */
@media (prefers-reduced-motion: no-preference) {
  .use-chat-col.is-changing .use-scene > * { animation: use-rise 560ms var(--ease-spring) both; }
  .use-chat-col.is-changing .use-scene > :nth-child(2) { animation-delay: 90ms; }
  .use-chat-col.is-changing .use-scene > :nth-child(3) { animation-delay: 180ms; }
  .use-chat-col.is-changing .use-scene > :nth-child(4) { animation-delay: 270ms; }
  .use-chat-col.is-changing .use-scene > :nth-child(5) { animation-delay: 360ms; }
  .use-chat-col.is-changing :is(.use-doc, .use-recipes, .use-checks, .use-dns, .use-tiles) > li { animation: use-rise 480ms var(--ease-spring) both; }
  .use-chat-col.is-changing :is(.use-doc, .use-recipes, .use-checks, .use-dns, .use-tiles) > li:nth-child(2) { animation-delay: 70ms; }
  .use-chat-col.is-changing :is(.use-doc, .use-recipes, .use-checks, .use-dns, .use-tiles) > li:nth-child(3) { animation-delay: 140ms; }
  .use-chat-col.is-changing :is(.use-doc, .use-recipes, .use-checks, .use-dns, .use-tiles) > li:nth-child(4) { animation-delay: 210ms; }
  .use-chat-col.is-changing :is(.use-doc, .use-recipes, .use-checks, .use-dns, .use-tiles) > li:nth-child(5) { animation-delay: 280ms; }
  /* 1 */
  .use-caret { animation: use-caret 1s steps(1, end) infinite; }
  .use-type { animation: use-type 9s ease-in-out infinite; }
  .use-split { animation: use-split 7s ease-in-out infinite; }
  .use-split__preview > * { animation: use-rise 600ms var(--ease-spring) both; }
  .use-split__preview > :nth-child(3) { animation-delay: 120ms; } .use-split__preview > :nth-child(4) { animation-delay: 240ms; } .use-split__preview > :nth-child(5) { animation-delay: 360ms; } .use-split__preview > :nth-child(6) { animation-delay: 480ms; }
  /* 2 */
  .use-btn__check { animation: use-pop 2.8s var(--ease-spring) infinite; }
  .use-doc li.is-editing { animation: use-ring 3s ease-in-out infinite; }
  .use-doc li.is-editing .use-field { animation: use-typing-w 3s ease-in-out infinite; }
  /* 3 */
  .use-mini--ba .use-mini__photo { animation: use-swap 4.5s ease-in-out infinite; }
  .use-mini--ba .use-mini__title { animation: use-grow 4.5s ease-in-out infinite; }
  .use-steps-dots i:last-child { animation: use-dot-on 4.5s ease-in-out infinite; }
  /* 4 */
  .use-slider__knob { animation: use-knob 4s ease-in-out infinite; }
  .use-slider--b .use-slider__knob { animation-delay: -2s; }
  .use-editor__el { animation: use-el 4s ease-in-out infinite; }
  .use-editor__save { animation: use-fade 4s ease-in-out infinite; }
  /* 5 */
  .use-tiles li.is-arming .use-tiles__ico { animation: use-breathe 1.6s ease-in-out infinite; }
  .use-log li.is-live::after { animation: use-breathe 1.2s ease-in-out infinite; }
  /* 6 */
  .use-field.is-hl { animation: use-ring 3s ease-in-out infinite; }
  /* 7 */
  .use-toggle i { transition: left 240ms var(--ease-spring); }
  .use-recipes li.is-arming .use-toggle { animation: use-arm 4s ease-in-out infinite; }
  .use-recipes li.is-arming .use-toggle i { animation: use-arm-knob 4s ease-in-out infinite; }
  /* 8 */
  .use-score__arc { animation: use-score 1.4s var(--ease-spring) both; }
  .use-kw em.is-up { animation: use-nudge 3s ease-in-out infinite; }
  .use-checks li.is-doing, .use-dns li.is-doing { animation: use-ring 3s ease-in-out infinite; }
  /* 9 */
  .use-btn--wide .use-btn__check { animation: use-pop 3.5s var(--ease-spring) infinite; }
}
@keyframes use-caret { 50% { opacity: 0; } }
@keyframes use-type { 0% { clip-path: inset(0 100% 0 0); } 40%, 92% { clip-path: inset(0 0 0 0); } 100% { clip-path: inset(0 100% 0 0); } }
@keyframes use-split { 0%, 20%, 100% { --use-split: 46%; } 50%, 70% { --use-split: 34%; } }
@keyframes use-pop { 0%, 70%, 100% { transform: scale(1); } 80% { transform: scale(1.35); } }
@keyframes use-ring { 50% { box-shadow: inset 0 0 0 1.5px hsl(var(--accent) / 0.25); } }
@keyframes use-typing-w { 0%, 100% { max-width: 100%; } 50% { max-width: 55%; } }
@keyframes use-swap { 0%, 35%, 100% { background: hsl(var(--accent) / 0.3); } 55%, 80% { background: hsl(var(--warning) / 0.45); } }
@keyframes use-grow { 0%, 35%, 100% { width: 70%; height: 9px; } 55%, 80% { width: 96%; height: 14px; } }
@keyframes use-dot-on { 0%, 45% { background: hsl(var(--foreground) / 0.14); } 60%, 100% { background: hsl(var(--accent)); } }
@keyframes use-knob { 0%, 100% { left: 40%; } 50% { left: 68%; } }
@keyframes use-el { 0%, 100% { height: 42px; } 50% { height: 54px; } }
@keyframes use-fade { 0%, 30% { opacity: 0.35; } 60%, 100% { opacity: 1; } }
@keyframes use-breathe { 50% { transform: scale(0.88); opacity: 0.6; } }
@keyframes use-arm { 0%, 40% { background: hsl(var(--foreground) / 0.18); } 60%, 100% { background: hsl(var(--success)); } }
@keyframes use-arm-knob { 0%, 40% { left: 2px; } 60%, 100% { left: 14px; } }
@keyframes use-score { from { stroke-dashoffset: 106.8; } }
@keyframes use-nudge { 50% { transform: translateY(-2px); } }
@keyframes use-rise { from { opacity: 0; transform: translateY(10px); } to { opacity: 1; transform: none; } }

/* --- VIDEO --------------------------------------------------------------- */
.use-video { padding-block: 7rem 6rem; }
@media (min-width: 640px) {
  .use-video { padding-block: 10rem 9rem; }
}
.use-video__title {
  margin-bottom: 2.5rem;
  text-align: center;
}

/* ── Reel de la sección #video: pieza de lanzamiento de Exi (2026-09-06) ────
   La tarjeta 16:9 NO lleva un <video>: son 11 escenas hechas con CSS. El
   proyector (qué escena lleva `.is-active` y cuándo salta) vive en el bloque 7
   de public/home.js; TODO el movimiento vive aquí.

   Contrato que respetan las 11 escenas:
     · la regla BASE de cada elemento describe su estado FINAL —lo que se ve al
       acabar la escena—, así que sin JS la escena 1 queda quieta y hace de
       póster, y con `prefers-reduced-motion` cada plano se ve terminado;
     · las `animation` se declaran SOLO bajo `.is-active`, de modo que reinician
       solas cada vez que una escena entra y no hay nada animándose a ciegas;
     · fill-mode: `both` SOLO para entradas (el estado inicial es "oculto" y debe
       regir antes del delay); los efectos puntuales cuyo primer fotograma es
       visible (anillos de clic, destellos, barridos) van con `forwards`, si no
       se pintarían desde el segundo cero;
     · las medidas van en unidades de contenedor (`cqw`) contra `.reel__stage`
       (`container-type: size`): 100cqw = el ancho del cuadro, 56.25cqw = el alto.
       Sin media queries: el reel escala como un video;
     · cada escena declara `--reel-out` (cuándo empieza su fundido a negro) y el
       corte del proyector cae siempre sobre negro. La última no lo declara.

   Prefijos: lo compartido va como `reel-k-*` (keyframes) y `reel-title`, `reel-card`, `reel-switch`, `reel-toast`, `reel-cursor`,
   `reel-click`, `reel-typed` (componentes); lo propio de cada escena lleva
   `reel-sN__` (clases) y `reel-sN-` (keyframes e ids), y sus reglas arrancan
   por `[data-reel-scene="N"]`. El build falla con ids repetidos.

   Los degradados, brillos y sombras están ENCERRADOS aquí a propósito: el
   sistema x.ai/bot los prohíbe en la app y en el resto de la landing, pero el
   reel es contenido audiovisual, no chrome. Ninguna de estas variables existe
   fuera de `.reel`.
   ------------------------------------------------------------------------- */
.reel {
  --reel-ink: #000000;
  --reel-ink-2: #111111;
  --reel-card: #171717;
  --reel-well: #0d0d0d;
  --reel-white: #ffffff;
  --reel-text: #f4f4f4;
  --reel-pewter: #b6bec8;
  --reel-fog: #8a9299;
  --reel-accent: #30bf9e;
  --reel-accent-2: #6fdcc2;
  --reel-accent-3: #1b8f77;
  --reel-hair: rgb(255 255 255 / 0.08);
  --reel-sans: "Geist", -apple-system, "Segoe UI", Inter, Helvetica, Arial, sans-serif;
  --reel-mono: "Geist Mono", ui-monospace, SFMono-Regular, Menlo, monospace;
  --reel-ease: cubic-bezier(0.22, 1, 0.36, 1);
  --reel-ease-io: cubic-bezier(0.65, 0, 0.35, 1);
  --reel-spring: cubic-bezier(0.34, 1.45, 0.64, 1);

  position: relative;
  width: 100%;
  aspect-ratio: 16 / 9;
  border-radius: var(--radius-card);
  background: var(--reel-ink);
  overflow: hidden;
  isolation: isolate;
  /* El póster y la barra miden contra la TARJETA (las escenas miden contra
     `.reel__stage`, que declara su propio contenedor). */
  container-type: inline-size;
}

/* Contador animable: los números de la escena 8 (datos) y la posición de la 9
   (SEO) suben de verdad en vez de aparecer de golpe. */
@property --reel-n {
  syntax: "<integer>";
  /* Hereda a propósito: el número lo pinta un ::after con counter(), y sin
     herencia el pseudo-elemento vería el initial-value (0), no el del padre. */
  inherits: true;
  initial-value: 0;
}

/* El escenario: el contenedor contra el que miden las 11 escenas. */
.reel__stage {
  position: absolute;
  inset: 0;
  container-type: size;
  font-family: var(--reel-sans);
  color: var(--reel-white);
  line-height: 1.15;
}
.reel__stage * { box-sizing: border-box; }

/* Una escena a la vez. `visibility` (y no `display`) para que el navegador ya
   tenga la escena maquetada cuando le toque entrar y no haya un salto. */
.reel__scene {
  position: absolute;
  inset: 0;
  overflow: hidden;
  visibility: hidden;
  opacity: 0;
}
.reel__scene.is-active {
  visibility: visible;
  opacity: 1;
}
/* Sin JS no hay `.is-active`: la escena 1 hace de póster. */
:root:not(.js-ready) .reel__scene[data-reel-scene="1"] {
  visibility: visible;
  opacity: 1;
}
/* Con JS pero antes del primer play (estado idle y sin pausa a medias) la
   escena 1 también hace de póster, SIN `.is-active`: home.js (bloque 7) no
   marca escena activa hasta que arranca, y así la portada se anima desde cero
   la primera vez en vez de haber corrido —y fundido a negro— sola. */
.reel[data-reel-state="idle"]:not(.is-paused) .reel__scene[data-reel-scene="1"] {
  visibility: visible;
  opacity: 1;
}
/* Pausa DE VERDAD: sin esto el proyector se para pero el plano sigue animándose
   por dentro y al reanudar aparece adelantado. */
.reel.is-paused .reel__scene.is-active,
.reel.is-paused .reel__scene.is-active * {
  animation-play-state: paused !important;
}


/* Botón/póster. Cubre la tarjeta entera —dentro no hay nada con lo que
   interactuar— y encoge a una píldora discreta mientras el reel corre.
   Va anclado ABAJO, como el título de un reproductor. */
.reel__play {
  position: absolute;
  inset: 0;
  z-index: 40;
  display: flex;
  align-items: flex-end;
  gap: 0.4em;
  padding: 4.5cqw;
  color: #fff;
  font-size: clamp(0.95rem, 3.4cqw, 3rem);
  font-weight: 500;
  line-height: 1;
  text-align: left;
  cursor: pointer;
  transition: opacity 0.4s var(--ease-spring);
}
.reel__play::before {
  content: "";
  position: absolute;
  inset: 0;
  z-index: -1;
  background: linear-gradient(0deg, rgb(10 10 10 / 0.82) 0%, rgb(10 10 10 / 0.45) 26%, rgb(10 10 10 / 0.12) 52%, transparent 78%);
  transition: opacity 0.4s var(--ease-spring);
}
.reel__disc {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  flex-shrink: 0;
  width: clamp(2.25rem, 5.2cqw, 4.5rem);
  height: clamp(2.25rem, 5.2cqw, 4.5rem);
  border-radius: 9999px;
  background: #fff;
  color: hsl(var(--color-jet));
  transition: transform 0.3s var(--ease-spring);
}
.reel__disc svg { width: 45%; height: 45%; margin-left: 4%; }
.reel__play:hover .reel__disc { transform: scale(1.06); }

/* En marcha: el póster se aparta y solo queda un disco de pausa que aparece al
   pasar el ratón o al enfocar con el teclado. */
.reel[data-reel-state="playing"] .reel__play { opacity: 0; }
.reel[data-reel-state="playing"] .reel__play:hover,
.reel[data-reel-state="playing"] .reel__play:focus-visible { opacity: 1; }
.reel[data-reel-state="playing"] .reel__play::before { opacity: 0.55; }
.reel[data-reel-state="playing"] .reel__disc svg { display: none; }
.reel[data-reel-state="playing"] .reel__disc::before,
.reel[data-reel-state="playing"] .reel__disc::after {
  content: "";
  display: block;
  width: 10%;
  height: 36%;
  border-radius: 9999px;
  background: hsl(var(--color-jet));
}
.reel[data-reel-state="playing"] .reel__disc { gap: 8%; }

/* Barra de avance sobre el borde inferior de la tarjeta. */
.reel__track {
  position: absolute;
  right: 0;
  bottom: 0;
  left: 0;
  z-index: 45;
  height: clamp(2px, 0.28cqw, 4px);
  background: rgb(255 255 255 / 0.14);
}
.reel__bar {
  display: block;
  height: 100%;
  background: var(--reel-accent);
  transform: scaleX(0);
  transform-origin: left center;
  transition: transform 0s linear;
}

@media (prefers-reduced-motion: reduce) {
  .reel__play, .reel__play::before, .reel__disc { transition: none; }
  .reel__bar { transition: none; }
  /* Cada plano se ve TERMINADO (la regla base es el estado final). */
  .reel__scene, .reel__scene * { animation: none !important; }
}

/* ── Gramática compartida ─────────────────────────────────────────────────── */

/* El marco de cada escena: entra con un leve acercamiento y se funde a negro
   en `--reel-out`, así el corte del proyector nunca se ve. */
.reel__frame {
  position: absolute;
  inset: 0;
  transform-origin: 50% 50%;
}
/* Cada escena elige cómo entra y cómo sale con `--reel-in` y `--reel-exit`
   (nombres de keyframes): no todas cortan igual. */
.reel__scene.is-active .reel__frame {
  animation:
    var(--reel-in, reel-k-in-blur) 640ms var(--reel-ease) both,
    var(--reel-exit, reel-k-out-blur) 440ms var(--reel-ease-io) var(--reel-out, 9999s) forwards;
}
@keyframes reel-k-in-blur {
  from { opacity: 0; transform: scale(1.06); filter: blur(1.2cqw); }
  to { opacity: 1; transform: none; filter: blur(0); }
}
@keyframes reel-k-in-rise {
  from { opacity: 0; transform: translateY(7cqw); }
  to { opacity: 1; transform: none; }
}
@keyframes reel-k-in-slide {
  from { opacity: 0; transform: translateX(9cqw); }
  to { opacity: 1; transform: none; }
}
@keyframes reel-k-in-zoom {
  from { opacity: 0; transform: scale(0.88); filter: blur(0.8cqw); }
  to { opacity: 1; transform: none; filter: blur(0); }
}
@keyframes reel-k-out-blur {
  to { opacity: 0; transform: scale(0.97); filter: blur(0.8cqw); }
}
@keyframes reel-k-out-up {
  to { opacity: 0; transform: translateY(-9cqw); }
}
@keyframes reel-k-out-left {
  to { opacity: 0; transform: translateX(-12cqw); filter: blur(0.4cqw); }
}
@keyframes reel-k-out-push {
  to { opacity: 0; transform: scale(1.14); filter: blur(1.6cqw); }
}
@keyframes reel-k-out-wipe {
  from { clip-path: inset(0 0 0 0); }
  to { clip-path: inset(0 0 100% 0); }
}
@keyframes reel-k-out-iris {
  from { clip-path: circle(80% at 50% 50%); }
  to { clip-path: circle(0% at 50% 50%); }
}



/* Titular de capítulo: dos líneas, la segunda en gris. A la izquierda por
   defecto; `--center` lo lleva arriba y al centro (escena de pagos). */
.reel-title {
  position: absolute;
  left: 5cqw;
  top: 50%;
  z-index: 3;
  width: 35cqw;
  margin: 0;
  transform: translateY(-52%);
  display: flex;
  flex-direction: column;
  align-items: flex-start;
  gap: 0.15cqw;
  font-weight: 500;
  font-size: 3.9cqw;
  line-height: 1.06;
  letter-spacing: -0.035em;
  color: var(--reel-white);
  text-wrap: balance;
}
.reel-title__l { display: block; }
.reel-title__l--muted { color: var(--reel-fog); }
.reel-title--center {
  left: 50%;
  top: 9.6cqw;
  width: 74cqw;
  transform: translateX(-50%);
  align-items: center;
  text-align: center;
  font-size: 3.3cqw;
}
.reel__scene.is-active .reel-title__l:nth-child(1) { animation: reel-k-word 900ms var(--reel-ease) 260ms both; }
.reel__scene.is-active .reel-title__l:nth-child(2) { animation: reel-k-word 900ms var(--reel-ease) 400ms both; }

/* Capa de interfaz: las tarjetas se posicionan contra el cuadro completo. */
.reel-ui {
  position: absolute;
  inset: 0;
  z-index: 2;
}

/* Tarjeta de interfaz: superficie oscura con filo de luz arriba, anillo de 1px
   y una sombra larga que la despega del fondo. */
.reel-card {
  position: absolute;
  overflow: hidden;
  border-radius: 1.5cqw;
  background: linear-gradient(180deg, #1a1a1a 0%, var(--reel-ink-2) 100%);
  color: var(--reel-text);
  box-shadow:
    inset 0 1px 0 rgb(255 255 255 / 0.08),
    0 0 0 1px rgb(255 255 255 / 0.07),
    0 3cqw 6cqw -2.5cqw rgb(0 0 0 / 0.9);
}
.reel__scene.is-active .reel-card { animation: reel-k-card 900ms var(--reel-spring) var(--reel-d, 480ms) both; }
@keyframes reel-k-card {
  from { opacity: 0; transform: translateY(6cqw) scale(0.9); }
  to { opacity: 1; transform: none; }
}

/* Barra de navegador dentro de una tarjeta. */
.reel-card__bar {
  display: flex;
  align-items: center;
  gap: 0.5cqw;
  height: 2.7cqw;
  padding: 0 1.1cqw;
  border-bottom: 1px solid var(--reel-hair);
}
.reel-card__bar i { width: 0.68cqw; height: 0.68cqw; border-radius: 50%; background: #3a3a3a; }
.reel-card__url {
  margin-inline: auto;
  padding: 0.3cqw 1cqw;
  border-radius: 9999px;
  background: var(--reel-ink);
  font-family: var(--reel-mono);
  font-size: 0.82cqw;
  line-height: 1;
  color: var(--reel-fog);
}

/* Interruptor. Base = encendido. */
.reel-switch {
  position: relative;
  display: inline-block;
  flex-shrink: 0;
  width: 3.2cqw;
  height: 1.8cqw;
  border-radius: 9999px;
  background: var(--reel-accent);
  vertical-align: middle;
}
.reel-switch i {
  position: absolute;
  top: 0.2cqw;
  left: 0.2cqw;
  width: 1.4cqw;
  height: 1.4cqw;
  border-radius: 50%;
  background: #fff;
  transform: translateX(1.4cqw);
}
@keyframes reel-k-switch-track {
  from { background: #2e2e2e; }
  to { background: var(--reel-accent); }
}
@keyframes reel-k-switch-knob {
  from { transform: translateX(0); }
  to { transform: translateX(1.4cqw); }
}

/* Aviso flotante: píldora blanca con punto turquesa. */
.reel-toast {
  position: absolute;
  z-index: 6;
  display: flex;
  align-items: center;
  gap: 0.8cqw;
  padding: 0.75cqw 1.25cqw 0.75cqw 0.8cqw;
  border-radius: 9999px;
  background: #fff;
  color: var(--reel-ink);
  font-size: 1.15cqw;
  font-weight: 500;
  line-height: 1;
  white-space: nowrap;
  box-shadow: 0 1.6cqw 3cqw -1.2cqw rgb(0 0 0 / 0.8);
}
.reel-toast__dot {
  display: grid;
  place-items: center;
  width: 1.7cqw;
  height: 1.7cqw;
  border-radius: 50%;
  background: var(--reel-accent);
  color: #fff;
}
.reel-toast__dot svg { width: 60%; height: 60%; }
.reel-toast__v {
  color: #6b7280;
  font-family: var(--reel-mono);
  font-weight: 500;
  font-size: 1.05cqw;
}
@keyframes reel-k-toast {
  from { opacity: 0; transform: translateY(-3.2cqw) scale(0.86); }
  to { opacity: 1; transform: none; }
}

/* Puntero. Cada escena describe su recorrido con `transform: translate()`;
   la punta de la flecha es la esquina superior izquierda del cuadro. */
.reel-cursor {
  position: absolute;
  left: 0;
  top: 0;
  z-index: 8;
  width: 1.9cqw;
  height: 1.9cqw;
  fill: #fff;
  stroke: var(--reel-ink);
  stroke-width: 1.6;
  stroke-linejoin: round;
  filter: drop-shadow(0 0.25cqw 0.5cqw rgb(0 0 0 / 0.6));
  pointer-events: none;
}
/* Anillo de clic: nace en el punto y se disuelve. Siempre `forwards`. */
.reel-click {
  position: absolute;
  z-index: 7;
  width: 2.6cqw;
  height: 2.6cqw;
  margin: -1.3cqw 0 0 -1.3cqw;
  border-radius: 50%;
  border: 1px solid rgb(255 255 255 / 0.75);
  opacity: 0;
  pointer-events: none;
}
@keyframes reel-k-click {
  0% { opacity: 0.85; transform: scale(0.3); }
  100% { opacity: 0; transform: scale(1.7); }
}

/* Texto que se teclea: se revela de izquierda a derecha a saltos. Cada escena
   fija `--reel-d` (cuándo), `--reel-type-ms` (cuánto) y `--reel-type-steps`
   (cuántas teclas). Base = texto completo. */
.reel-typed {
  display: inline-block;
  white-space: nowrap;
  clip-path: inset(-20% -2% -20% 0);
}
.reel__scene.is-active .reel-typed {
  animation: reel-k-type var(--reel-type-ms, 900ms) steps(var(--reel-type-steps, 24), end) var(--reel-d, 0ms) both;
}
@keyframes reel-k-type {
  from { clip-path: inset(-20% 102% -20% 0); }
  to { clip-path: inset(-20% -2% -20% 0); }
}

/* Entradas genéricas. */
@keyframes reel-k-rise {
  from { opacity: 0; transform: translateY(2.8cqw); }
  to { opacity: 1; transform: none; }
}
@keyframes reel-k-word {
  from { opacity: 0; transform: translateY(3.4cqw) scale(0.94); filter: blur(1cqw); }
  to { opacity: 1; transform: none; filter: blur(0); }
}
@keyframes reel-k-pop {
  0% { opacity: 0; transform: scale(0.4); }
  62% { opacity: 1; transform: scale(1.1); }
  100% { opacity: 1; transform: scale(1); }
}
@keyframes reel-k-fade {
  from { opacity: 0; }
  to { opacity: 1; }
}
@keyframes reel-k-draw {
  from { stroke-dashoffset: 1; }
  to { stroke-dashoffset: 0; }
}
/* Barrido de luz sobre una tarjeta (pseudo-elemento con un degradado oblicuo). */
@keyframes reel-k-sweep {
  from { transform: translateX(-130%) skewX(-12deg); }
  to { transform: translateX(130%) skewX(-12deg); }
}

/* ── 01 · Portada: paisaje → sale Exi → negro → "Conoce a Exi" — 3400 ms ──
   El paisaje es la regla BASE (póster). El corte a negro y el texto llegan
   solo por animación (`forwards`); es la única escena que rompe "base =
   estado final", a propósito. */
.reel-s1 { --reel-out: 3000ms; --reel-in: reel-k-in-blur; --reel-exit: reel-k-out-push; }
[data-reel-scene="1"] .reel-s1__photo {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  object-fit: cover;
  object-position: 50% 60%;
  transform-origin: 50% 50%;
}
[data-reel-scene="1"] .reel-s1__cut {
  position: absolute;
  inset: 0;
  background: #000;
  opacity: 0;
}
[data-reel-scene="1"] .reel-s1__meet {
  position: absolute;
  left: 0;
  right: 0;
  top: 50%;
  margin: 0;
  transform: translateY(-50%);
  text-align: center;
  font-size: 5.6cqw;
  font-weight: 500;
  letter-spacing: -0.045em;
  color: var(--reel-white);
  text-shadow: 0 0.3cqw 2cqw rgb(0 0 0 / 0.45);
  opacity: 0;
}
[data-reel-scene="1"].is-active .reel-s1__photo { animation: reel-s1-photo 3200ms linear both; }
/* Sin corte a negro: el texto se TECLEA ENCIMA del paisaje; solo se oscurece
   un poco la foto para que se lea. */
[data-reel-scene="1"].is-active .reel-s1__cut { animation: reel-s1-dim 700ms var(--reel-ease-io) 700ms forwards; }
[data-reel-scene="1"] .reel-s1__type { --reel-d: 1100ms; --reel-type-ms: 800ms; --reel-type-steps: 12; }
[data-reel-scene="1"].is-active .reel-s1__meet { animation: reel-k-fade 1ms linear 1100ms forwards; }
@keyframes reel-s1-dim {
  from { opacity: 0; }
  to { opacity: 0.38; }
}
@keyframes reel-s1-photo {
  from { transform: scale(1.08); }
  to { transform: scale(1); }
}

/* ── 02 · Manifiesto: cuatro líneas que caen a ritmo — 2600 ms ──────────── */
.reel-s2 { --reel-out: 2200ms; --reel-in: reel-k-in-rise; --reel-exit: reel-k-out-up; }
[data-reel-scene="2"] .reel-s2__lines {
  position: absolute;
  left: 8cqw;
  top: 50%;
  z-index: 2;
  margin: 0;
  transform: translateY(-50%);
  display: flex;
  flex-direction: column;
  gap: 0.35cqw;
  font-size: 5.7cqw;
  font-weight: 500;
  line-height: 1.02;
  letter-spacing: -0.045em;
  color: var(--reel-white);
}
[data-reel-scene="2"] .reel-s2__l { display: block; }
[data-reel-scene="2"] .reel-s2__l--4 { color: var(--reel-accent); }
[data-reel-scene="2"].is-active .reel-s2__l--1 { animation: reel-s2-snap 720ms var(--reel-ease) 200ms both; }
[data-reel-scene="2"].is-active .reel-s2__l--2 { animation: reel-s2-snap 720ms var(--reel-ease) 660ms both; }
[data-reel-scene="2"].is-active .reel-s2__l--3 { animation: reel-s2-snap 720ms var(--reel-ease) 1120ms both; }
[data-reel-scene="2"].is-active .reel-s2__l--4 { animation: reel-s2-snap 720ms var(--reel-ease) 1580ms both; }
@keyframes reel-s2-snap {
  0% { opacity: 0; transform: translateY(4.4cqw) scale(1.18); filter: blur(1.6cqw); }
  60% { filter: blur(0); }
  100% { opacity: 1; transform: none; filter: blur(0); }
}

/* ── 03 · Pagos: el checkout cobra en vivo — 4000 ms ────────────────────────
   Guion: la tarjeta entra · el interruptor "Pagos conectados" se enciende · se
   teclea la tarjeta · el puntero llega y pulsa "Pagar" · el botón pasa a
   spinner y a palomita turquesa · cae el aviso "Pago recibido" · barrido de luz. */
.reel-s3 { --reel-out: 3600ms; --reel-in: reel-k-in-zoom; --reel-exit: reel-k-out-blur; }
[data-reel-scene="3"] .reel-s3__checkout {
  left: 30cqw;
  top: 20.4cqw;
  width: 40cqw;
  padding: 1.8cqw;
  --reel-d: 560ms;
}
/* Barrido de luz al confirmarse el pago. */
[data-reel-scene="3"] .reel-s3__checkout::after {
  content: "";
  position: absolute;
  inset: -10% -20%;
  z-index: 3;
  background: linear-gradient(105deg, transparent 38%, rgb(255 255 255 / 0.09) 50%, transparent 62%);
  transform: translateX(130%) skewX(-12deg);
  pointer-events: none;
}
[data-reel-scene="3"].is-active .reel-s3__checkout::after { animation: reel-k-sweep 900ms var(--reel-ease-io) 3320ms forwards; }
[data-reel-scene="3"] .reel-s3__row {
  display: flex;
  align-items: center;
  justify-content: space-between;
  height: 3.6cqw;
  border-bottom: 1px solid var(--reel-hair);
}
[data-reel-scene="3"] .reel-s3__item { font-size: 1.3cqw; font-weight: 500; color: var(--reel-text); }
[data-reel-scene="3"] .reel-s3__amount {
  font-family: var(--reel-mono);
  font-size: 1.45cqw;
  font-weight: 500;
  color: var(--reel-white);
}
[data-reel-scene="3"] .reel-s3__tlabel { font-size: 1.12cqw; color: var(--reel-pewter); }
[data-reel-scene="3"].is-active .reel-s3__switch { animation: reel-k-switch-track 360ms var(--reel-ease-io) 1250ms both; }
[data-reel-scene="3"].is-active .reel-s3__switch i { animation: reel-k-switch-knob 360ms var(--reel-ease-io) 1250ms both; }
[data-reel-scene="3"] .reel-s3__field {
  display: flex;
  align-items: center;
  gap: 1cqw;
  height: 3.8cqw;
  margin-top: 1.2cqw;
  padding: 0 1.2cqw;
  border-radius: 0.9cqw;
  background: var(--reel-well);
  box-shadow: inset 0 0 0 1px rgb(255 255 255 / 0.1);
  font-family: var(--reel-mono);
  font-size: 1.25cqw;
  color: var(--reel-text);
}
[data-reel-scene="3"] .reel-s3__cardicon { width: 1.5cqw; height: 1.5cqw; flex-shrink: 0; color: var(--reel-fog); }
[data-reel-scene="3"] .reel-s3__digits { --reel-d: 1480ms; --reel-type-ms: 820ms; --reel-type-steps: 19; }
[data-reel-scene="3"] .reel-s3__exp { margin-left: auto; color: var(--reel-fog); }
/* El campo se enfoca mientras se teclea y se suelta al terminar. */
[data-reel-scene="3"].is-active .reel-s3__field { animation: reel-s3-focus 1000ms linear 1420ms forwards; }
@keyframes reel-s3-focus {
  0% { box-shadow: inset 0 0 0 1px rgb(255 255 255 / 0.1); }
  10% { box-shadow: inset 0 0 0 1px rgb(48 191 158 / 0.9), 0 0 0 0.3cqw rgb(48 191 158 / 0.18); }
  88% { box-shadow: inset 0 0 0 1px rgb(48 191 158 / 0.9), 0 0 0 0.3cqw rgb(48 191 158 / 0.18); }
  100% { box-shadow: inset 0 0 0 1px rgb(255 255 255 / 0.1); }
}
/* Botón de pago: tres capas (texto · spinner · palomita); base = pagado. */
[data-reel-scene="3"] .reel-s3__pay {
  position: relative;
  display: flex;
  align-items: center;
  justify-content: center;
  height: 3.8cqw;
  margin-top: 1.2cqw;
  border-radius: 9999px;
  background: var(--reel-accent);
  color: #fff;
  font-size: 1.3cqw;
  font-weight: 500;
}
[data-reel-scene="3"] .reel-s3__pay-label { opacity: 0; }
[data-reel-scene="3"] .reel-s3__pay-spin {
  position: absolute;
  width: 1.6cqw;
  height: 1.6cqw;
  border-radius: 50%;
  border: 0.2cqw solid rgb(10 10 10 / 0.18);
  border-top-color: var(--reel-ink);
  opacity: 0;
}
[data-reel-scene="3"] .reel-s3__pay-check {
  position: absolute;
  width: 1.9cqw;
  height: 1.9cqw;
  stroke-dasharray: 1;
  stroke-dashoffset: 0;
}
[data-reel-scene="3"].is-active .reel-s3__pay { animation: reel-s3-paybg 380ms var(--reel-ease-io) 3260ms both; }
[data-reel-scene="3"].is-active .reel-s3__pay-label { animation: reel-s3-paylabel 200ms ease 2740ms both; }
[data-reel-scene="3"].is-active .reel-s3__pay-spin {
  animation:
    reel-s3-spinshow 560ms linear 2740ms forwards,
    reel-s3-spin 560ms linear 2740ms forwards;
}
[data-reel-scene="3"].is-active .reel-s3__pay-check { animation: reel-s3-check 380ms var(--reel-ease-io) 3280ms both; }
[data-reel-scene="3"].is-active .reel-s3__pay::after { animation: reel-s3-payflash 700ms var(--reel-ease) 3280ms forwards; }
[data-reel-scene="3"] .reel-s3__pay::after {
  content: "";
  position: absolute;
  inset: 0;
  border-radius: inherit;
  box-shadow: 0 0 0 0 rgb(48 191 158 / 0);
  pointer-events: none;
}
@keyframes reel-s3-paybg {
  from { background: #fff; color: var(--reel-ink); }
  to { background: var(--reel-accent); color: #fff; }
}
@keyframes reel-s3-paylabel {
  from { opacity: 1; }
  to { opacity: 0; }
}
@keyframes reel-s3-spinshow {
  0% { opacity: 0; }
  12% { opacity: 1; }
  88% { opacity: 1; }
  100% { opacity: 0; }
}
@keyframes reel-s3-spin {
  from { transform: rotate(0deg); }
  to { transform: rotate(560deg); }
}
@keyframes reel-s3-check {
  0% { stroke-dashoffset: 1; opacity: 0; }
  20% { opacity: 1; }
  100% { stroke-dashoffset: 0; opacity: 1; }
}
@keyframes reel-s3-payflash {
  0% { box-shadow: 0 0 0 0 rgb(48 191 158 / 0.55); }
  100% { box-shadow: 0 0 0 1.6cqw rgb(48 191 158 / 0); }
}
/* Aviso arriba a la derecha, a la altura de la cabecera de capítulo. */
[data-reel-scene="3"] .reel-s3__toast { right: 5cqw; top: 4cqw; }
[data-reel-scene="3"].is-active .reel-s3__toast { animation: reel-k-toast 620ms var(--reel-spring) 3380ms both; }
/* Puntero: entra por abajo a la derecha, pulsa "Pagar" y se queda. */
[data-reel-scene="3"] .reel-s3__cursor { transform: translate(56.2cqw, 38.2cqw); }
[data-reel-scene="3"].is-active .reel-s3__cursor {
  animation:
    reel-s3-cursor 520ms var(--reel-ease-io) 2200ms both,
    reel-s3-cursorclick 240ms ease 2720ms forwards;
}
[data-reel-scene="3"] .reel-s3__click { left: 56.6cqw; top: 38.5cqw; }
[data-reel-scene="3"].is-active .reel-s3__click { animation: reel-k-click 520ms var(--reel-ease) 2740ms forwards; }
@keyframes reel-s3-cursor {
  0% { opacity: 0; transform: translate(84cqw, 55cqw); }
  14% { opacity: 1; }
  100% { opacity: 1; transform: translate(56.2cqw, 38.2cqw); }
}
@keyframes reel-s3-cursorclick {
  0% { transform: translate(56.2cqw, 38.2cqw) scale(1); }
  45% { transform: translate(56.2cqw, 38.2cqw) scale(0.8); }
  100% { transform: translate(56.2cqw, 38.2cqw) scale(1); }
}

/* ── 04 · Cambios: se lo pides a Exi y la página cambia — 3700 ms ───────────
   Guion: la web del cliente entra al fondo · el chat entra encima · se teclea
   el pedido · pulso del botón de enviar · "Exi está trabajando…" · la portada
   cambia de foto y el precio pasa de dólares a pesos · píldora "Publicado". */
.reel-s4 { --reel-out: 3900ms; --reel-in: reel-k-in-blur; --reel-exit: reel-k-out-left; }
[data-reel-scene="4"] .reel-title { transform-origin: 0 50%; }
[data-reel-scene="4"].is-active .reel-title { animation: reel-s4-titlemove 800ms var(--reel-spring) 1150ms both; }
@keyframes reel-s4-titlemove {
  from { transform: translate(24cqw, -52%) scale(1.32); }
  to { transform: translateY(-52%) scale(1); }
}
[data-reel-scene="4"] .reel-s4__site {
  left: 44cqw;
  top: 6.4cqw;
  width: 51cqw;
  height: 34.2cqw;
  --reel-d: 1450ms;
}
[data-reel-scene="4"] .reel-s4__page { padding: 1.6cqw 1.8cqw; }
[data-reel-scene="4"] .reel-s4__nav {
  display: flex;
  align-items: center;
  justify-content: space-between;
  margin-bottom: 1.8cqw;
}
[data-reel-scene="4"] .reel-s4__logo { font-size: 1.15cqw; font-weight: 600; letter-spacing: -0.01em; color: var(--reel-white); }
[data-reel-scene="4"] .reel-s4__links { display: flex; gap: 0.8cqw; }
[data-reel-scene="4"] .reel-s4__links i { width: 3.2cqw; height: 0.55cqw; border-radius: 9999px; background: rgb(255 255 255 / 0.16); }
[data-reel-scene="4"] .reel-s4__hero {
  display: grid;
  grid-template-columns: 21cqw 1fr;
  gap: 2cqw;
  align-items: center;
}
/* La "foto": base = la portada nueva; el pseudo-elemento es la vieja y se apaga. */
[data-reel-scene="4"] .reel-s4__photo {
  position: relative;
  height: 20cqw;
  border-radius: 1cqw;
  overflow: hidden;
  background:
    radial-gradient(14cqw 10cqw at 80% 20%, rgb(255 255 255 / 0.22), transparent 70%),
    linear-gradient(150deg, #1c6a5b 0%, var(--reel-accent) 55%, #b9efe2 100%);
}
[data-reel-scene="4"] .reel-s4__photo::before {
  content: "";
  position: absolute;
  inset: 0;
  background:
    radial-gradient(12cqw 9cqw at 30% 80%, rgb(255 255 255 / 0.1), transparent 70%),
    linear-gradient(150deg, #2b2b2b 0%, #4a4643 60%, #6b655e 100%);
  opacity: 0;
}
[data-reel-scene="4"] .reel-s4__photo::after {
  content: "";
  position: absolute;
  left: 1.2cqw;
  bottom: 1.2cqw;
  width: 5.4cqw;
  height: 1.3cqw;
  border-radius: 9999px;
  background: rgb(255 255 255 / 0.85);
}
[data-reel-scene="4"].is-active .reel-s4__photo::before { animation: reel-s4-photoold 520ms var(--reel-ease-io) 3200ms both; }
[data-reel-scene="4"].is-active .reel-s4__photo { animation: reel-s4-photonew 700ms var(--reel-ease) 3200ms forwards; }
@keyframes reel-s4-photoold {
  from { opacity: 1; }
  to { opacity: 0; }
}
@keyframes reel-s4-photonew {
  0% { transform: scale(1.06); }
  100% { transform: scale(1); }
}
[data-reel-scene="4"] .reel-s4__copy {
  display: flex;
  flex-direction: column;
  align-items: flex-start;
  gap: 1.1cqw;
}
[data-reel-scene="4"] .reel-s4__h {
  font-size: 1.9cqw;
  font-weight: 500;
  line-height: 1.12;
  letter-spacing: -0.03em;
  color: var(--reel-white);
  text-wrap: balance;
}
[data-reel-scene="4"] .reel-s4__price {
  position: relative;
  display: block;
  height: 1.8cqw;
  width: 100%;
  font-family: var(--reel-mono);
  font-size: 1.35cqw;
  line-height: 1.8cqw;
  color: var(--reel-pewter);
}
[data-reel-scene="4"] .reel-s4__price-old,
[data-reel-scene="4"] .reel-s4__price-new { position: absolute; left: 0; top: 0; }
[data-reel-scene="4"] .reel-s4__price-old { opacity: 0; transform: translateY(-80%); }
[data-reel-scene="4"] .reel-s4__price-new { color: var(--reel-accent-2); font-weight: 500; }
[data-reel-scene="4"].is-active .reel-s4__price-old { animation: reel-s4-priceold 380ms var(--reel-ease-io) 3250ms both; }
[data-reel-scene="4"].is-active .reel-s4__price-new { animation: reel-s4-pricenew 460ms var(--reel-ease) 3310ms both; }
@keyframes reel-s4-priceold {
  from { opacity: 1; transform: translateY(0); }
  to { opacity: 0; transform: translateY(-80%); }
}
@keyframes reel-s4-pricenew {
  from { opacity: 0; transform: translateY(80%); }
  to { opacity: 1; transform: translateY(0); }
}
[data-reel-scene="4"] .reel-s4__cta {
  display: inline-flex;
  align-items: center;
  height: 2.5cqw;
  padding: 0 1.3cqw;
  border-radius: 9999px;
  background: #fff;
  color: var(--reel-ink);
  font-size: 0.98cqw;
  font-weight: 500;
}
/* "Publicado": esquina superior derecha de la web, bajo la barra. */
[data-reel-scene="4"] .reel-s4__pub {
  position: absolute;
  right: 1.4cqw;
  top: 3.7cqw;
  z-index: 2;
  display: flex;
  align-items: center;
  gap: 0.5cqw;
  padding: 0.42cqw 0.9cqw 0.42cqw 0.5cqw;
  border-radius: 9999px;
  background: #fff;
  color: var(--reel-ink);
  font-size: 0.95cqw;
  font-weight: 500;
  line-height: 1;
  box-shadow: 0 1cqw 2cqw -0.8cqw rgb(0 0 0 / 0.7);
}
[data-reel-scene="4"] .reel-s4__pub svg {
  width: 1.3cqw;
  height: 1.3cqw;
  padding: 0.28cqw;
  border-radius: 50%;
  background: var(--reel-accent);
  color: #fff;
}
[data-reel-scene="4"].is-active .reel-s4__pub { animation: reel-k-toast 620ms var(--reel-spring) 3450ms both; }
/* El chat, encima y solapando la esquina inferior izquierda de la web. */
[data-reel-scene="4"] .reel-s4__chat {
  left: 40cqw;
  top: 35.6cqw;
  width: 33cqw;
  --reel-d: 1600ms;
}
[data-reel-scene="4"] .reel-s4__msg {
  padding: 1.5cqw 1.6cqw 0.7cqw;
  font-size: 1.22cqw;
  line-height: 1.3;
  color: var(--reel-text);
  overflow: hidden;
}
[data-reel-scene="4"] .reel-s4__text { --reel-d: 1950ms; --reel-type-ms: 700ms; --reel-type-steps: 30; max-width: 100%; }
[data-reel-scene="4"] .reel-s4__foot {
  display: flex;
  align-items: center;
  gap: 0.8cqw;
  padding: 0.5cqw 1.2cqw 1.2cqw 1.5cqw;
}
[data-reel-scene="4"] .reel-s4__bot { width: 2.3cqw; height: auto; }
[data-reel-scene="4"] .reel-s4__working {
  display: flex;
  align-items: center;
  gap: 0.32cqw;
  font-size: 0.98cqw;
  color: var(--reel-fog);
  opacity: 0;
}
[data-reel-scene="4"] .reel-s4__working i {
  width: 0.42cqw;
  height: 0.42cqw;
  border-radius: 50%;
  background: var(--reel-accent);
}
[data-reel-scene="4"] .reel-s4__working i:nth-child(3) { margin-right: 0.4cqw; }
[data-reel-scene="4"].is-active .reel-s4__working { animation: reel-s4-working 520ms ease 2680ms forwards; }
[data-reel-scene="4"].is-active .reel-s4__working i { animation: reel-s4-dots 720ms ease-in-out infinite; }
[data-reel-scene="4"].is-active .reel-s4__working i:nth-child(2) { animation-delay: 120ms; }
[data-reel-scene="4"].is-active .reel-s4__working i:nth-child(3) { animation-delay: 240ms; }
@keyframes reel-s4-working {
  0% { opacity: 0; transform: translateY(0.4cqw); }
  15% { opacity: 1; transform: none; }
  85% { opacity: 1; transform: none; }
  100% { opacity: 0; transform: translateY(-0.4cqw); }
}
@keyframes reel-s4-dots {
  0%, 100% { transform: translateY(0); opacity: 0.55; }
  50% { transform: translateY(-0.35cqw); opacity: 1; }
}
[data-reel-scene="4"] .reel-s4__send {
  display: grid;
  place-items: center;
  width: 2.5cqw;
  height: 2.5cqw;
  margin-left: auto;
  border-radius: 50%;
  background: #fff;
  color: var(--reel-ink);
}
[data-reel-scene="4"] .reel-s4__send svg { width: 55%; height: 55%; }
[data-reel-scene="4"].is-active .reel-s4__send { animation: reel-s4-send 340ms ease 2640ms forwards; }
@keyframes reel-s4-send {
  0% { transform: scale(1); background: #fff; color: var(--reel-ink); }
  40% { transform: scale(0.82); background: var(--reel-accent); color: #fff; }
  100% { transform: scale(1); background: #fff; color: var(--reel-ink); }
}

/* ── 05 · Formularios: se llena, se envía, cae en la bandeja — 3800 ms ──────
   Guion: el formulario entra · los campos aparecen · se teclean nombre, correo
   y pedido · el puntero pulsa "Enviar" · el formulario se retira al fondo y la
   bandeja entra con el mensaje nuevo arriba, marcado. */
.reel-s5 { --reel-out: 3400ms; --reel-in: reel-k-in-slide; --reel-exit: reel-k-out-wipe; }
[data-reel-scene="5"] .reel-s5__form {
  left: 47cqw;
  top: 8cqw;
  width: 32cqw;
  padding: 1.8cqw;
  transform-origin: 0% 50%;
}
[data-reel-scene="5"] .reel-s5__form { opacity: 0.3; transform: translateX(-9cqw) scale(0.9); }
[data-reel-scene="5"].is-active .reel-s5__form {
  animation:
    reel-k-card 900ms var(--reel-spring) 480ms both,
    reel-s5-formback 620ms var(--reel-ease-io) 2560ms forwards;
}
@keyframes reel-s5-formback {
  from { opacity: 1; transform: none; }
  to { opacity: 0.3; transform: translateX(-9cqw) scale(0.9); }
}
[data-reel-scene="5"] .reel-s5__ftitle { display: block; font-size: 1.35cqw; font-weight: 500; color: var(--reel-white); }
[data-reel-scene="5"] .reel-s5__f {
  display: flex;
  flex-direction: column;
  gap: 0.45cqw;
  margin-top: 1.05cqw;
}
[data-reel-scene="5"] .reel-s5__lbl { font-size: 0.92cqw; color: var(--reel-fog); }
[data-reel-scene="5"] .reel-s5__val {
  display: flex;
  align-items: center;
  height: 3.1cqw;
  padding: 0 1cqw;
  border-radius: 0.8cqw;
  background: var(--reel-well);
  box-shadow: inset 0 0 0 1px rgb(255 255 255 / 0.1);
  font-size: 1.12cqw;
  color: var(--reel-text);
  overflow: hidden;
}
[data-reel-scene="5"].is-active .reel-s5__f--1 { animation: reel-k-rise 520ms var(--reel-ease) 780ms both; }
[data-reel-scene="5"].is-active .reel-s5__f--2 { animation: reel-k-rise 520ms var(--reel-ease) 900ms both; }
[data-reel-scene="5"].is-active .reel-s5__f--3 { animation: reel-k-rise 520ms var(--reel-ease) 1020ms both; }
[data-reel-scene="5"] .reel-s5__typed--1 { --reel-d: 960ms; --reel-type-ms: 400ms; --reel-type-steps: 10; }
[data-reel-scene="5"] .reel-s5__typed--2 { --reel-d: 1380ms; --reel-type-ms: 520ms; --reel-type-steps: 16; }
[data-reel-scene="5"] .reel-s5__typed--3 { --reel-d: 1900ms; --reel-type-ms: 560ms; --reel-type-steps: 21; }
[data-reel-scene="5"].is-active .reel-s5__f--1 .reel-s5__val { animation: reel-s5-focus 500ms linear 920ms forwards; }
[data-reel-scene="5"].is-active .reel-s5__f--2 .reel-s5__val { animation: reel-s5-focus 620ms linear 1340ms forwards; }
[data-reel-scene="5"].is-active .reel-s5__f--3 .reel-s5__val { animation: reel-s5-focus 660ms linear 1860ms forwards; }
@keyframes reel-s5-focus {
  0% { box-shadow: inset 0 0 0 1px rgb(255 255 255 / 0.1); }
  10% { box-shadow: inset 0 0 0 1px rgb(48 191 158 / 0.9); }
  88% { box-shadow: inset 0 0 0 1px rgb(48 191 158 / 0.9); }
  100% { box-shadow: inset 0 0 0 1px rgb(255 255 255 / 0.1); }
}
[data-reel-scene="5"] .reel-s5__submit {
  display: flex;
  align-items: center;
  justify-content: center;
  height: 3.3cqw;
  margin-top: 1.5cqw;
  border-radius: 9999px;
  background: #fff;
  color: var(--reel-ink);
  font-size: 1.15cqw;
  font-weight: 500;
}
[data-reel-scene="5"].is-active .reel-s5__submit { animation: reel-s5-submit 320ms ease 2480ms forwards; }
@keyframes reel-s5-submit {
  0% { transform: scale(1); background: #fff; }
  40% { transform: scale(0.96); background: var(--reel-accent-2); }
  100% { transform: scale(1); background: #fff; }
}
/* La bandeja entra desde la derecha cuando el formulario se retira. */
[data-reel-scene="5"] .reel-s5__inbox {
  left: 55cqw;
  top: 12.6cqw;
  width: 40cqw;
}
[data-reel-scene="5"].is-active .reel-s5__inbox { animation: reel-s5-inbox 640ms var(--reel-ease) 2660ms both; }
@keyframes reel-s5-inbox {
  from { opacity: 0; transform: translateX(7cqw) scale(0.98); }
  to { opacity: 1; transform: none; }
}
[data-reel-scene="5"] .reel-s5__ihead {
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding: 1.15cqw 1.6cqw;
  border-bottom: 1px solid var(--reel-hair);
}
[data-reel-scene="5"] .reel-s5__ititle { font-size: 1.15cqw; font-weight: 500; color: var(--reel-white); }
[data-reel-scene="5"] .reel-s5__count {
  display: grid;
  place-items: center;
  min-width: 1.7cqw;
  height: 1.7cqw;
  padding: 0 0.5cqw;
  border-radius: 9999px;
  background: var(--reel-accent);
  color: #fff;
  font-family: var(--reel-mono);
  font-size: 0.85cqw;
  line-height: 1;
}
[data-reel-scene="5"] .reel-s5__r {
  display: grid;
  grid-template-columns: 2.2cqw 1fr auto;
  grid-template-areas: "av who when" "av what tag";
  column-gap: 1cqw;
  row-gap: 0.25cqw;
  align-items: center;
  padding: 0.95cqw 1.6cqw;
  border-bottom: 1px solid rgb(255 255 255 / 0.05);
  font-size: 1.02cqw;
  line-height: 1.2;
}
[data-reel-scene="5"] .reel-s5__r:last-child { border-bottom: 0; }
[data-reel-scene="5"] .reel-s5__av {
  grid-area: av;
  display: grid;
  place-items: center;
  width: 2.2cqw;
  height: 2.2cqw;
  border-radius: 50%;
  background: var(--reel-accent-3);
  color: #fff;
  font-size: 0.95cqw;
  font-weight: 500;
}
[data-reel-scene="5"] .reel-s5__av--b { background: #3b3f46; }
[data-reel-scene="5"] .reel-s5__av--c { background: #2d3138; }
[data-reel-scene="5"] .reel-s5__who { grid-area: who; font-weight: 500; color: var(--reel-text); }
[data-reel-scene="5"] .reel-s5__what { grid-area: what; color: var(--reel-fog); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
[data-reel-scene="5"] .reel-s5__when { grid-area: when; justify-self: end; font-family: var(--reel-mono); font-size: 0.82cqw; color: var(--reel-fog); }
[data-reel-scene="5"] .reel-s5__new {
  grid-area: tag;
  justify-self: end;
  padding: 0.22cqw 0.6cqw;
  border-radius: 9999px;
  background: rgb(48 191 158 / 0.18);
  color: var(--reel-accent-2);
  font-size: 0.72cqw;
  font-weight: 600;
  letter-spacing: 0.06em;
  text-transform: uppercase;
  line-height: 1.3;
}
[data-reel-scene="5"] .reel-s5__r--new { background: rgb(48 191 158 / 0.07); }
[data-reel-scene="5"].is-active .reel-s5__r--new { animation: reel-s5-newrow 1100ms var(--reel-ease) 3000ms forwards; }
@keyframes reel-s5-newrow {
  0% { background: rgb(48 191 158 / 0.28); }
  100% { background: rgb(48 191 158 / 0.07); }
}
[data-reel-scene="5"].is-active .reel-s5__r:nth-child(2) { animation: reel-k-rise 480ms var(--reel-ease) 2820ms both; }
[data-reel-scene="5"].is-active .reel-s5__r:nth-child(3) { animation: reel-k-rise 480ms var(--reel-ease) 2920ms both; }
[data-reel-scene="5"].is-active .reel-s5__r:nth-child(4) { animation: reel-k-rise 480ms var(--reel-ease) 3020ms both; }
/* Puntero: llega a "Enviar", pulsa y se apaga con el formulario. */
[data-reel-scene="5"] .reel-s5__cursor { opacity: 0; transform: translate(62.4cqw, 32.9cqw); }
[data-reel-scene="5"].is-active .reel-s5__cursor {
  animation:
    reel-s5-cursor 460ms var(--reel-ease-io) 2040ms both,
    reel-s5-cursorclick 240ms ease 2480ms forwards,
    reel-s5-cursorout 360ms ease 2600ms forwards;
}
[data-reel-scene="5"] .reel-s5__click { left: 62.7cqw; top: 33.2cqw; }
[data-reel-scene="5"].is-active .reel-s5__click { animation: reel-k-click 500ms var(--reel-ease) 2500ms forwards; }
@keyframes reel-s5-cursor {
  0% { opacity: 0; transform: translate(86cqw, 52cqw); }
  16% { opacity: 1; }
  100% { opacity: 1; transform: translate(62.4cqw, 32.9cqw); }
}
@keyframes reel-s5-cursorclick {
  0% { transform: translate(62.4cqw, 32.9cqw) scale(1); }
  45% { transform: translate(62.4cqw, 32.9cqw) scale(0.8); }
  100% { transform: translate(62.4cqw, 32.9cqw) scale(1); }
}
@keyframes reel-s5-cursorout {
  from { opacity: 1; }
  to { opacity: 0; }
}

/* ── 06 · Agenda: día, hora y cita confirmada — 3800 ms ───────────────────
   Guion: el calendario entra y sus días caen fila a fila · el puntero elige el
   jueves 17 · aparecen los horarios · elige las 10:30 · "Cita confirmada". */
.reel-s6 { --reel-out: 3400ms; --reel-in: reel-k-in-rise; --reel-exit: reel-k-out-push; }
[data-reel-scene="6"] .reel-title { left: auto; right: 5cqw; align-items: flex-end; text-align: right; }
[data-reel-scene="6"] .reel-s6__cal {
  left: 5cqw;
  top: 6cqw;
  width: 33cqw;
  --reel-d: 520ms;
}
[data-reel-scene="6"] .reel-s6__head {
  display: flex;
  align-items: center;
  justify-content: space-between;
  height: 3.9cqw;
  padding: 0 1.5cqw;
  border-bottom: 1px solid var(--reel-hair);
}
[data-reel-scene="6"] .reel-s6__month { font-size: 1.15cqw; font-weight: 500; color: var(--reel-white); }
[data-reel-scene="6"] .reel-s6__arrows { display: flex; gap: 0.45cqw; }
[data-reel-scene="6"] .reel-s6__arrows i {
  width: 1.5cqw;
  height: 1.5cqw;
  border-radius: 50%;
  box-shadow: inset 0 0 0 1px rgb(255 255 255 / 0.14);
}
[data-reel-scene="6"] .reel-s6__dow {
  display: grid;
  grid-template-columns: repeat(7, 1fr);
  gap: 0.35cqw;
  padding: 0.9cqw 1.2cqw 0.2cqw;
  font-family: var(--reel-mono);
  font-size: 0.82cqw;
  text-align: center;
  color: var(--reel-fog);
}
[data-reel-scene="6"] .reel-s6__grid {
  display: grid;
  grid-template-columns: repeat(7, 1fr);
  gap: 0.35cqw;
  padding: 0.4cqw 1.2cqw 1.3cqw;
}
[data-reel-scene="6"] .reel-s6__day {
  position: relative;
  display: grid;
  place-items: center;
  aspect-ratio: 1;
  border-radius: 0.7cqw;
  font-size: 0.98cqw;
  color: #e5e7ea;
  --reel-row: 0;
  --reel-col: 0;
}
[data-reel-scene="6"] .reel-s6__day--off { color: rgb(138 146 153 / 0.55); }
[data-reel-scene="6"] .reel-s6__day--busy::after {
  content: "";
  position: absolute;
  bottom: 0.42cqw;
  left: 50%;
  width: 0.36cqw;
  height: 0.36cqw;
  margin-left: -0.18cqw;
  border-radius: 50%;
  background: var(--reel-accent);
}
/* El día elegido: base = blanco con texto negro. */
[data-reel-scene="6"] .reel-s6__day--pick { background: #fff; color: var(--reel-ink); font-weight: 500; }
/* Fila y columna para escalonar la entrada sin 31 reglas. */
[data-reel-scene="6"] .reel-s6__day:nth-child(n+8) { --reel-row: 1; }
[data-reel-scene="6"] .reel-s6__day:nth-child(n+15) { --reel-row: 2; }
[data-reel-scene="6"] .reel-s6__day:nth-child(n+22) { --reel-row: 3; }
[data-reel-scene="6"] .reel-s6__day:nth-child(n+29) { --reel-row: 4; }
[data-reel-scene="6"] .reel-s6__day:nth-child(7n+2) { --reel-col: 1; }
[data-reel-scene="6"] .reel-s6__day:nth-child(7n+3) { --reel-col: 2; }
[data-reel-scene="6"] .reel-s6__day:nth-child(7n+4) { --reel-col: 3; }
[data-reel-scene="6"] .reel-s6__day:nth-child(7n+5) { --reel-col: 4; }
[data-reel-scene="6"] .reel-s6__day:nth-child(7n+6) { --reel-col: 5; }
[data-reel-scene="6"] .reel-s6__day:nth-child(7n+7) { --reel-col: 6; }
[data-reel-scene="6"].is-active .reel-s6__day {
  animation: reel-k-pop 460ms var(--reel-ease) calc(720ms + var(--reel-row) * 90ms + var(--reel-col) * 28ms) both;
}
[data-reel-scene="6"].is-active .reel-s6__day--pick {
  animation:
    reel-k-pop 460ms var(--reel-ease) calc(720ms + var(--reel-row) * 90ms + var(--reel-col) * 28ms) both,
    reel-s6-pick 260ms var(--reel-ease-io) 1740ms both;
}
@keyframes reel-s6-pick {
  from { background: rgb(255 255 255 / 0); color: #e5e7ea; }
  to { background: #fff; color: var(--reel-ink); }
}
/* Horarios del día elegido. */
[data-reel-scene="6"] .reel-s6__slots {
  left: 40.2cqw;
  top: 12cqw;
  width: 16.6cqw;
  padding: 1.3cqw;
  display: flex;
  flex-direction: column;
  gap: 0.6cqw;
}
[data-reel-scene="6"].is-active .reel-s6__slots { animation: reel-s6-slots 600ms var(--reel-ease) 1880ms both; }
@keyframes reel-s6-slots {
  from { opacity: 0; transform: translateX(3cqw); }
  to { opacity: 1; transform: none; }
}
[data-reel-scene="6"] .reel-s6__stitle {
  margin-bottom: 0.5cqw;
  font-family: var(--reel-mono);
  font-size: 0.78cqw;
  letter-spacing: 0.1em;
  text-transform: uppercase;
  color: var(--reel-fog);
  white-space: nowrap;
}
[data-reel-scene="6"] .reel-s6__slot {
  display: grid;
  place-items: center;
  height: 2.9cqw;
  border-radius: 0.8cqw;
  box-shadow: inset 0 0 0 1px rgb(255 255 255 / 0.14);
  font-family: var(--reel-mono);
  font-size: 1.05cqw;
  color: var(--reel-text);
}
[data-reel-scene="6"] .reel-s6__slot--pick { background: #fff; color: var(--reel-ink); font-weight: 500; box-shadow: none; }
[data-reel-scene="6"].is-active .reel-s6__slot:nth-of-type(1) { animation: reel-k-rise 420ms var(--reel-ease) 2080ms both; }
[data-reel-scene="6"].is-active .reel-s6__slot:nth-of-type(2) { animation: reel-k-rise 420ms var(--reel-ease) 2160ms both, reel-s6-slotpick 240ms var(--reel-ease-io) 2740ms both; }
[data-reel-scene="6"].is-active .reel-s6__slot:nth-of-type(3) { animation: reel-k-rise 420ms var(--reel-ease) 2240ms both; }
[data-reel-scene="6"].is-active .reel-s6__slot:nth-of-type(4) { animation: reel-k-rise 420ms var(--reel-ease) 2320ms both; }
@keyframes reel-s6-slotpick {
  from { background: rgb(255 255 255 / 0); color: var(--reel-text); }
  to { background: #fff; color: var(--reel-ink); }
}
/* Confirmación bajo el calendario. */
[data-reel-scene="6"] .reel-s6__toast { left: 9cqw; top: 40.4cqw; }
[data-reel-scene="6"].is-active .reel-s6__toast { animation: reel-k-toast 620ms var(--reel-spring) 2980ms both; }
/* Puntero: dos tramos (día → hora) con su clic cada uno. */
[data-reel-scene="6"] .reel-s6__cursor { transform: translate(51.4cqw, 20.3cqw); }
[data-reel-scene="6"].is-active .reel-s6__cursor {
  animation:
    reel-s6-cursor1 460ms var(--reel-ease-io) 1260ms both,
    reel-s6-click1 220ms ease 1740ms forwards,
    reel-s6-cursor2 420ms var(--reel-ease-io) 2300ms forwards,
    reel-s6-click2 220ms ease 2740ms forwards;
}
[data-reel-scene="6"] .reel-s6__click--a { left: 21.4cqw; top: 22.9cqw; }
[data-reel-scene="6"] .reel-s6__click--b { left: 51.7cqw; top: 20.6cqw; }
[data-reel-scene="6"].is-active .reel-s6__click--a { animation: reel-k-click 480ms var(--reel-ease) 1760ms forwards; }
[data-reel-scene="6"].is-active .reel-s6__click--b { animation: reel-k-click 480ms var(--reel-ease) 2760ms forwards; }
@keyframes reel-s6-cursor1 {
  0% { opacity: 0; transform: translate(62cqw, 50cqw); }
  16% { opacity: 1; }
  100% { opacity: 1; transform: translate(21.1cqw, 22.6cqw); }
}
@keyframes reel-s6-click1 {
  0% { transform: translate(21.1cqw, 22.6cqw) scale(1); }
  45% { transform: translate(21.1cqw, 22.6cqw) scale(0.8); }
  100% { transform: translate(21.1cqw, 22.6cqw) scale(1); }
}
@keyframes reel-s6-cursor2 {
  from { transform: translate(21.1cqw, 22.6cqw); }
  to { transform: translate(51.4cqw, 20.3cqw); }
}
@keyframes reel-s6-click2 {
  0% { transform: translate(51.4cqw, 20.3cqw) scale(1); }
  45% { transform: translate(51.4cqw, 20.3cqw) scale(0.8); }
  100% { transform: translate(51.4cqw, 20.3cqw) scale(1); }
}

/* ── 07 · Automatizaciones: cuando llega un contacto, responde y avisa — 3700 ms
   Guion: la receta entra · los tres nodos nacen de izquierda a derecha con sus
   conectores · el interruptor se enciende · un pulso recorre la cadena y cada
   nodo se ilumina al recibirlo · queda el registro "Ejecutada hace 2 s". */
.reel-s7 { --reel-out: 3300ms; --reel-in: reel-k-in-zoom; --reel-exit: reel-k-out-iris; }
[data-reel-scene="7"] .reel-title {
  left: 0;
  right: 0;
  top: auto;
  bottom: 6.2cqw;
  width: auto;
  transform: none;
  flex-direction: row;
  justify-content: center;
  gap: 0.8cqw;
  text-align: center;
  font-size: 3.5cqw;
}
[data-reel-scene="7"].is-active .reel-title__l:nth-child(1) { animation-delay: 2350ms; }
[data-reel-scene="7"].is-active .reel-title__l:nth-child(2) { animation-delay: 2500ms; }
[data-reel-scene="7"] .reel-s7__flow {
  left: 24cqw;
  top: 5.6cqw;
  width: 52cqw;
  --reel-d: 380ms;
}
[data-reel-scene="7"] .reel-s7__top {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 1cqw;
  padding: 1.3cqw 1.6cqw;
  border-bottom: 1px solid var(--reel-hair);
}
[data-reel-scene="7"] .reel-s7__name { font-size: 1.15cqw; font-weight: 500; color: var(--reel-white); white-space: nowrap; }
[data-reel-scene="7"] .reel-s7__state { display: flex; align-items: center; gap: 0.7cqw; }
[data-reel-scene="7"] .reel-s7__on { font-size: 0.95cqw; font-weight: 500; color: var(--reel-accent-2); }
[data-reel-scene="7"].is-active .reel-s7__switch { animation: reel-k-switch-track 360ms var(--reel-ease-io) 1800ms both; }
[data-reel-scene="7"].is-active .reel-s7__switch i { animation: reel-k-switch-knob 360ms var(--reel-ease-io) 1800ms both; }
[data-reel-scene="7"].is-active .reel-s7__on { animation: reel-k-fade 300ms ease 2000ms both; }
[data-reel-scene="7"] .reel-s7__graph {
  display: flex;
  align-items: center;
  padding: 2.6cqw 1.6cqw;
}
[data-reel-scene="7"] .reel-s7__node {
  position: relative;
  flex: 0 0 13.6cqw;
  display: grid;
  gap: 0.35cqw;
  padding: 1.1cqw 1.2cqw;
  border-radius: 1cqw;
  background: var(--reel-well);
  box-shadow: inset 0 0 0 1px rgb(255 255 255 / 0.1);
}
[data-reel-scene="7"] .reel-s7__ic {
  display: grid;
  place-items: center;
  width: 2.4cqw;
  height: 2.4cqw;
  margin-bottom: 0.4cqw;
  border-radius: 50%;
  background: #1f1f1f;
  color: var(--reel-accent);
}
[data-reel-scene="7"] .reel-s7__ic svg { width: 55%; height: 55%; }
[data-reel-scene="7"] .reel-s7__kind {
  font-family: var(--reel-mono);
  font-size: 0.75cqw;
  letter-spacing: 0.12em;
  text-transform: uppercase;
  color: var(--reel-fog);
}
[data-reel-scene="7"] .reel-s7__txt { font-size: 1.05cqw; font-weight: 500; line-height: 1.25; color: var(--reel-text); }
[data-reel-scene="7"].is-active .reel-s7__node--1 { animation: reel-k-pop 520ms var(--reel-ease) 650ms both; }
[data-reel-scene="7"].is-active .reel-s7__node--2 { animation: reel-k-pop 520ms var(--reel-ease) 1100ms both, reel-s7-hit 600ms var(--reel-ease) 2250ms forwards; }
[data-reel-scene="7"].is-active .reel-s7__node--3 { animation: reel-k-pop 520ms var(--reel-ease) 1550ms both, reel-s7-hit 600ms var(--reel-ease) 2550ms forwards; }
@keyframes reel-s7-hit {
  0% { box-shadow: inset 0 0 0 1px rgb(48 191 158 / 0.9), 0 0 0 0.35cqw rgb(48 191 158 / 0.22); }
  100% { box-shadow: inset 0 0 0 1px rgb(255 255 255 / 0.1), 0 0 0 0 rgb(48 191 158 / 0); }
}
[data-reel-scene="7"] .reel-s7__link {
  position: relative;
  flex: 1 1 auto;
  height: 2px;
  background: rgb(255 255 255 / 0.16);
  transform-origin: left center;
}
[data-reel-scene="7"].is-active .reel-s7__link--1 { animation: reel-s7-link 320ms var(--reel-ease-io) 850ms both; }
[data-reel-scene="7"].is-active .reel-s7__link--2 { animation: reel-s7-link 320ms var(--reel-ease-io) 1300ms both; }
@keyframes reel-s7-link {
  from { transform: scaleX(0); }
  to { transform: scaleX(1); }
}
[data-reel-scene="7"] .reel-s7__dot {
  position: absolute;
  top: 50%;
  left: 0;
  width: 0.72cqw;
  height: 0.72cqw;
  margin: -0.36cqw 0 0 -0.36cqw;
  border-radius: 50%;
  background: var(--reel-accent-2);
  box-shadow: 0 0 0.9cqw var(--reel-accent);
  opacity: 0;
}
[data-reel-scene="7"].is-active .reel-s7__dot--1 { animation: reel-s7-travel 320ms linear 1950ms forwards; }
[data-reel-scene="7"].is-active .reel-s7__dot--2 { animation: reel-s7-travel 320ms linear 2250ms forwards; }
@keyframes reel-s7-travel {
  0% { opacity: 0; left: 0; }
  12% { opacity: 1; }
  88% { opacity: 1; }
  100% { opacity: 0; left: 100%; }
}
[data-reel-scene="7"] .reel-s7__log {
  display: flex;
  align-items: center;
  gap: 0.8cqw;
  padding: 1.1cqw 1.6cqw;
  border-top: 1px solid var(--reel-hair);
  font-size: 0.98cqw;
  color: var(--reel-fog);
}
[data-reel-scene="7"] .reel-s7__ok {
  display: grid;
  place-items: center;
  width: 1.6cqw;
  height: 1.6cqw;
  border-radius: 50%;
  background: var(--reel-accent);
  color: #fff;
}
[data-reel-scene="7"] .reel-s7__ok svg { width: 60%; height: 60%; }
[data-reel-scene="7"].is-active .reel-s7__log { animation: reel-k-rise 480ms var(--reel-ease) 2650ms both; }

/* ── 08 · Datos: visitas, clics y contactos contando en vivo — 3600 ms ─────
   Guion: el tablero entra · las tres cifras suben desde cero · las barras
   crecen · la línea se dibuja y su área se llena · el punto final aparece. */
.reel-s8 { --reel-out: 3800ms; --reel-in: reel-k-in-blur; --reel-exit: reel-k-out-up; }
[data-reel-scene="8"] .reel-title { transform-origin: 0 50%; }
[data-reel-scene="8"].is-active .reel-title { animation: reel-s8-titlemove 800ms var(--reel-spring) 1150ms both; }
@keyframes reel-s8-titlemove {
  from { transform: translate(22cqw, -52%) scale(1.32); }
  to { transform: translateY(-52%) scale(1); }
}
[data-reel-scene="8"] .reel-s8__dash {
  left: 43cqw;
  top: 7cqw;
  width: 52cqw;
  --reel-d: 1400ms;
}
[data-reel-scene="8"] .reel-s8__head {
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding: 1.2cqw 1.6cqw;
  border-bottom: 1px solid var(--reel-hair);
  font-size: 1.05cqw;
  color: var(--reel-pewter);
}
[data-reel-scene="8"] .reel-s8__tiles {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 1cqw;
  padding: 1.6cqw 1.6cqw 0;
}
[data-reel-scene="8"] .reel-s8__tile {
  display: flex;
  flex-direction: column;
  gap: 0.4cqw;
  padding: 1.1cqw 1.3cqw;
  border-radius: 1cqw;
  background: var(--reel-well);
  box-shadow: inset 0 0 0 1px rgb(255 255 255 / 0.1);
}
[data-reel-scene="8"] .reel-s8__k { font-size: 0.9cqw; color: var(--reel-fog); }
[data-reel-scene="8"] .reel-s8__num {
  font-family: var(--reel-mono);
  font-size: 2.5cqw;
  font-weight: 500;
  line-height: 1;
  font-variant-numeric: tabular-nums;
  color: var(--reel-white);
}
[data-reel-scene="8"] .reel-s8__num::after {
  counter-reset: reel-n var(--reel-n);
  content: counter(reel-n);
}
[data-reel-scene="8"] .reel-s8__num--a { --reel-n: 968; }
[data-reel-scene="8"] .reel-s8__num--b { --reel-n: 312; }
[data-reel-scene="8"] .reel-s8__num--c { --reel-n: 27; }
[data-reel-scene="8"] .reel-s8__delta { font-family: var(--reel-mono); font-size: 0.85cqw; color: var(--reel-accent-2); }
[data-reel-scene="8"].is-active .reel-s8__tile--1 { animation: reel-k-pop 520ms var(--reel-ease) 1700ms both; }
[data-reel-scene="8"].is-active .reel-s8__tile--2 { animation: reel-k-pop 520ms var(--reel-ease) 1820ms both; }
[data-reel-scene="8"].is-active .reel-s8__tile--3 { animation: reel-k-pop 520ms var(--reel-ease) 1940ms both; }
[data-reel-scene="8"].is-active .reel-s8__num--a { animation: reel-s8-count-a 1300ms var(--reel-ease) 1850ms both; }
[data-reel-scene="8"].is-active .reel-s8__num--b { animation: reel-s8-count-b 1150ms var(--reel-ease) 1970ms both; }
[data-reel-scene="8"].is-active .reel-s8__num--c { animation: reel-s8-count-c 950ms var(--reel-ease) 2090ms both; }
@keyframes reel-s8-count-a { from { --reel-n: 0; } to { --reel-n: 968; } }
@keyframes reel-s8-count-b { from { --reel-n: 0; } to { --reel-n: 312; } }
@keyframes reel-s8-count-c { from { --reel-n: 0; } to { --reel-n: 27; } }
[data-reel-scene="8"] .reel-s8__chart {
  position: relative;
  height: 15.5cqw;
  margin: 1.6cqw;
}
[data-reel-scene="8"] .reel-s8__bars {
  position: absolute;
  inset: 0;
  display: flex;
  align-items: flex-end;
  gap: 1.2cqw;
  padding: 0 0.6cqw;
}
[data-reel-scene="8"] .reel-s8__bars i {
  flex: 1 1 0;
  border-radius: 0.4cqw 0.4cqw 0 0;
  background: rgb(255 255 255 / 0.06);
  transform-origin: bottom center;
}
[data-reel-scene="8"] .reel-s8__bars i:nth-child(1) { height: 34%; }
[data-reel-scene="8"] .reel-s8__bars i:nth-child(2) { height: 44%; }
[data-reel-scene="8"] .reel-s8__bars i:nth-child(3) { height: 40%; }
[data-reel-scene="8"] .reel-s8__bars i:nth-child(4) { height: 56%; }
[data-reel-scene="8"] .reel-s8__bars i:nth-child(5) { height: 62%; }
[data-reel-scene="8"] .reel-s8__bars i:nth-child(6) { height: 74%; }
[data-reel-scene="8"] .reel-s8__bars i:nth-child(7) { height: 88%; }
[data-reel-scene="8"].is-active .reel-s8__bars i { animation: reel-s8-bar 640ms var(--reel-ease) both; }
[data-reel-scene="8"].is-active .reel-s8__bars i:nth-child(1) { animation-delay: 2010ms; }
[data-reel-scene="8"].is-active .reel-s8__bars i:nth-child(2) { animation-delay: 2080ms; }
[data-reel-scene="8"].is-active .reel-s8__bars i:nth-child(3) { animation-delay: 2150ms; }
[data-reel-scene="8"].is-active .reel-s8__bars i:nth-child(4) { animation-delay: 2220ms; }
[data-reel-scene="8"].is-active .reel-s8__bars i:nth-child(5) { animation-delay: 2290ms; }
[data-reel-scene="8"].is-active .reel-s8__bars i:nth-child(6) { animation-delay: 2360ms; }
[data-reel-scene="8"].is-active .reel-s8__bars i:nth-child(7) { animation-delay: 2430ms; }
@keyframes reel-s8-bar {
  from { transform: scaleY(0); }
  to { transform: scaleY(1); }
}
[data-reel-scene="8"] .reel-s8__svg {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  overflow: visible;
}
[data-reel-scene="8"] .reel-s8__area { fill: url(#reel-s8-area); }
[data-reel-scene="8"] .reel-s8__line {
  fill: none;
  stroke: var(--reel-accent);
  stroke-width: 2.2;
  stroke-linecap: round;
  stroke-linejoin: round;
  vector-effect: non-scaling-stroke;
  stroke-dasharray: 1;
  stroke-dashoffset: 0;
}
[data-reel-scene="8"].is-active .reel-s8__line { animation: reel-k-draw 1300ms var(--reel-ease-io) 2200ms both; }
[data-reel-scene="8"].is-active .reel-s8__area { animation: reel-k-fade 700ms ease 3000ms both; }
[data-reel-scene="8"] .reel-s8__point {
  position: absolute;
  right: 0;
  top: 11.7%;
  width: 0.95cqw;
  height: 0.95cqw;
  margin: -0.475cqw -0.475cqw 0 0;
  border-radius: 50%;
  background: #fff;
  box-shadow: 0 0 0 0.35cqw rgb(48 191 158 / 0.35);
}
[data-reel-scene="8"].is-active .reel-s8__point { animation: reel-k-pop 420ms var(--reel-ease) 3400ms both; }

/* ── 09 · SEO: la búsqueda, el resultado y la posición que sube — 3600 ms ──
   Guion: la búsqueda se teclea · aparece el resultado del cliente · en la
   tarjeta de posición el #14 baja hasta #3 mientras la línea sube · palabras
   clave. */
.reel-s9 { --reel-out: 3200ms; --reel-in: reel-k-in-slide; --reel-exit: reel-k-out-blur; }
[data-reel-scene="9"] .reel-title { left: auto; right: 5cqw; align-items: flex-end; text-align: right; }
[data-reel-scene="9"] .reel-s9__serp {
  left: 5cqw;
  top: 7cqw;
  width: 36cqw;
  --reel-d: 520ms;
}
[data-reel-scene="9"] .reel-s9__search {
  display: flex;
  align-items: center;
  gap: 0.9cqw;
  height: 3.6cqw;
  margin: 1.4cqw;
  padding: 0 1.3cqw;
  border-radius: 9999px;
  background: var(--reel-well);
  box-shadow: inset 0 0 0 1px rgb(255 255 255 / 0.12);
  font-size: 1.15cqw;
  color: var(--reel-text);
  overflow: hidden;
}
[data-reel-scene="9"] .reel-s9__search svg { width: 1.4cqw; height: 1.4cqw; flex-shrink: 0; color: var(--reel-fog); }
[data-reel-scene="9"] .reel-s9__q { --reel-d: 960ms; --reel-type-ms: 820ms; --reel-type-steps: 26; }
[data-reel-scene="9"] .reel-s9__result {
  display: flex;
  flex-direction: column;
  gap: 0.45cqw;
  padding: 0.3cqw 1.7cqw 1.7cqw;
}
[data-reel-scene="9"].is-active .reel-s9__result { animation: reel-k-rise 560ms var(--reel-ease) 1900ms both; }
[data-reel-scene="9"] .reel-s9__src { display: flex; align-items: center; gap: 0.6cqw; margin-bottom: 0.2cqw; }
[data-reel-scene="9"] .reel-s9__fav {
  display: grid;
  place-items: center;
  width: 1.7cqw;
  height: 1.7cqw;
  border-radius: 50%;
  background: #fff;
  color: var(--reel-ink);
  font-size: 0.85cqw;
  font-weight: 600;
}
[data-reel-scene="9"] .reel-s9__url { font-family: var(--reel-mono); font-size: 0.88cqw; color: var(--reel-fog); }
[data-reel-scene="9"] .reel-s9__rt { font-size: 1.25cqw; font-weight: 500; line-height: 1.25; color: var(--reel-white); }
[data-reel-scene="9"] .reel-s9__sn { font-size: 0.98cqw; line-height: 1.4; color: var(--reel-fog); }
/* Posición: base = #3. */
[data-reel-scene="9"] .reel-s9__rank {
  left: 43cqw;
  top: 7cqw;
  width: 14cqw;
  padding: 1.3cqw 1.3cqw 1.2cqw;
  display: flex;
  flex-direction: column;
  gap: 0.35cqw;
  --reel-d: 640ms;
  --reel-n: 3;
}
[data-reel-scene="9"] .reel-s9__rk {
  font-family: var(--reel-mono);
  font-size: 0.78cqw;
  letter-spacing: 0.1em;
  text-transform: uppercase;
  color: var(--reel-fog);
}
[data-reel-scene="9"] .reel-s9__rn {
  font-family: var(--reel-mono);
  font-size: 3.1cqw;
  font-weight: 500;
  line-height: 1;
  font-variant-numeric: tabular-nums;
  color: var(--reel-white);
  --reel-n: 3;
}
[data-reel-scene="9"] .reel-s9__rn::before { content: "#"; color: var(--reel-fog); }
[data-reel-scene="9"] .reel-s9__rn::after {
  counter-reset: reel-n var(--reel-n);
  content: counter(reel-n);
}
[data-reel-scene="9"].is-active .reel-s9__rn { animation: reel-s9-rank 900ms var(--reel-ease-io) 2000ms both; }
@keyframes reel-s9-rank { from { --reel-n: 14; } to { --reel-n: 3; } }
[data-reel-scene="9"] .reel-s9__spark {
  width: 100%;
  height: 3.2cqw;
  margin-top: 0.4cqw;
  overflow: visible;
  fill: none;
  stroke: var(--reel-accent);
  stroke-width: 2;
  stroke-linecap: round;
  stroke-linejoin: round;
  vector-effect: non-scaling-stroke;
}
[data-reel-scene="9"] .reel-s9__spark path { stroke-dasharray: 1; stroke-dashoffset: 0; vector-effect: non-scaling-stroke; }
[data-reel-scene="9"].is-active .reel-s9__spark path { animation: reel-k-draw 900ms var(--reel-ease-io) 2000ms both; }
[data-reel-scene="9"] .reel-s9__up { font-family: var(--reel-mono); font-size: 0.82cqw; color: var(--reel-accent-2); white-space: nowrap; }
[data-reel-scene="9"].is-active .reel-s9__up { animation: reel-k-rise 420ms var(--reel-ease) 2860ms both; }
/* Palabras clave bajo las tarjetas. */
[data-reel-scene="9"] .reel-s9__chips {
  position: absolute;
  left: 5cqw;
  top: 26.2cqw;
  display: flex;
  flex-wrap: wrap;
  gap: 0.7cqw;
  width: 52cqw;
}
[data-reel-scene="9"] .reel-s9__chip {
  padding: 0.6cqw 1.15cqw;
  border-radius: 9999px;
  font-size: 1.02cqw;
  line-height: 1;
  white-space: nowrap;
  color: var(--reel-pewter);
  box-shadow: inset 0 0 0 1px rgb(255 255 255 / 0.14);
}
[data-reel-scene="9"].is-active .reel-s9__chip:nth-child(1) { animation: reel-k-pop 480ms var(--reel-ease) 2240ms both; }
[data-reel-scene="9"].is-active .reel-s9__chip:nth-child(2) { animation: reel-k-pop 480ms var(--reel-ease) 2360ms both; }
[data-reel-scene="9"].is-active .reel-s9__chip:nth-child(3) { animation: reel-k-pop 480ms var(--reel-ease) 2480ms both; }

/* ── 10 · Todo en un solo lugar: las funciones aterrizan en rejilla — 2600 ms */
.reel-s10 { --reel-out: 2200ms; --reel-in: reel-k-in-zoom; --reel-exit: reel-k-out-push; }
[data-reel-scene="10"] .reel-s10__title {
  position: absolute;
  left: 0;
  right: 0;
  top: 7.6cqw;
  z-index: 2;
  margin: 0;
  text-align: center;
  font-size: 3.3cqw;
  font-weight: 500;
  line-height: 1;
  letter-spacing: -0.035em;
  white-space: nowrap;
  color: var(--reel-white);
}
[data-reel-scene="10"].is-active .reel-s10__title { animation: reel-k-word 720ms var(--reel-ease) 260ms both; }
[data-reel-scene="10"] .reel-s10__grid {
  position: absolute;
  left: 50%;
  top: 15.4cqw;
  z-index: 2;
  transform: translateX(-50%);
  display: grid;
  grid-template-columns: repeat(4, 17cqw);
  gap: 1.2cqw;
}
[data-reel-scene="10"] .reel-s10__tile {
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  gap: 1cqw;
  height: 14.2cqw;
  border-radius: 1.4cqw;
  background: linear-gradient(180deg, #1a1a1a 0%, var(--reel-ink-2) 100%);
  box-shadow: inset 0 1px 0 rgb(255 255 255 / 0.08), 0 0 0 1px rgb(255 255 255 / 0.07);
  font-size: 1.15cqw;
  font-weight: 500;
  color: var(--reel-text);
  --reel-fx: 0cqw;
  --reel-fy: 6cqw;
}
[data-reel-scene="10"] .reel-s10__ic {
  display: grid;
  place-items: center;
  width: 3.5cqw;
  height: 3.5cqw;
  border-radius: 50%;
  background: #1f1f1f;
  color: var(--reel-accent);
}
[data-reel-scene="10"] .reel-s10__ic svg { width: 50%; height: 50%; }
[data-reel-scene="10"] .reel-s10__tile--exi { box-shadow: inset 0 1px 0 rgb(255 255 255 / 0.08), 0 0 0 1px rgb(48 191 158 / 0.55); }
[data-reel-scene="10"] .reel-s10__bot { width: 3.8cqw; height: auto; }
[data-reel-scene="10"] .reel-s10__tile--1 { --reel-fx: -6cqw; --reel-fy: -4cqw; }
[data-reel-scene="10"] .reel-s10__tile--2 { --reel-fx: 0cqw; --reel-fy: -6cqw; }
[data-reel-scene="10"] .reel-s10__tile--3 { --reel-fx: 0cqw; --reel-fy: -6cqw; }
[data-reel-scene="10"] .reel-s10__tile--4 { --reel-fx: 6cqw; --reel-fy: -4cqw; }
[data-reel-scene="10"] .reel-s10__tile--5 { --reel-fx: -6cqw; --reel-fy: 4cqw; }
[data-reel-scene="10"] .reel-s10__tile--6 { --reel-fx: 0cqw; --reel-fy: 6cqw; }
[data-reel-scene="10"] .reel-s10__tile--7 { --reel-fx: 0cqw; --reel-fy: 6cqw; }
[data-reel-scene="10"] .reel-s10__tile--8 { --reel-fx: 6cqw; --reel-fy: 4cqw; }
[data-reel-scene="10"].is-active .reel-s10__tile { animation: reel-s10-land 800ms var(--reel-spring) both; }
[data-reel-scene="10"].is-active .reel-s10__tile--1 { animation-delay: 460ms; }
[data-reel-scene="10"].is-active .reel-s10__tile--2 { animation-delay: 540ms; }
[data-reel-scene="10"].is-active .reel-s10__tile--3 { animation-delay: 620ms; }
[data-reel-scene="10"].is-active .reel-s10__tile--4 { animation-delay: 700ms; }
[data-reel-scene="10"].is-active .reel-s10__tile--5 { animation-delay: 780ms; }
[data-reel-scene="10"].is-active .reel-s10__tile--6 { animation-delay: 860ms; }
[data-reel-scene="10"].is-active .reel-s10__tile--7 { animation-delay: 940ms; }
[data-reel-scene="10"].is-active .reel-s10__tile--8 { animation-delay: 1060ms; }
@keyframes reel-s10-land {
  from { opacity: 0; transform: translate(var(--reel-fx), var(--reel-fy)) scale(0.7); }
  to { opacity: 1; transform: none; }
}

/* ── 11 · Cierre de marca — 3400 ms. Sin `--reel-out`: aquí se queda el reel. */
.reel-s11 { --reel-in: reel-k-in-blur; }
[data-reel-scene="11"] .reel-s11__stack {
  position: absolute;
  inset: 0;
  z-index: 2;
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  gap: 1.9cqw;
  padding-bottom: 2cqw;
}
[data-reel-scene="11"] .reel-s11__brand { display: flex; align-items: center; justify-content: center; }
[data-reel-scene="11"] .reel-s11__bot {
  width: 11cqw;
  height: auto;
  filter: drop-shadow(0 1cqw 2.4cqw rgb(48 191 158 / 0.3));
}
[data-reel-scene="11"] .reel-s11__claim {
  display: flex;
  gap: 0.6cqw;
  margin: 0;
  font-size: 3.4cqw;
  font-weight: 500;
  letter-spacing: -0.035em;
  color: var(--reel-white);
}
[data-reel-scene="11"] .reel-s11__c--2 { color: var(--reel-accent-2); }
[data-reel-scene="11"].is-active .reel-s11__bot {
  animation:
    reel-s11-bot 1000ms var(--reel-spring) 300ms both,
    reel-s11-float 3.2s ease-in-out 1300ms infinite;
}
[data-reel-scene="11"].is-active .reel-s11__c--1 { animation: reel-k-word 900ms var(--reel-ease) 820ms both; }
[data-reel-scene="11"].is-active .reel-s11__c--2 { animation: reel-k-word 900ms var(--reel-ease) 980ms both; }
@keyframes reel-s11-bot {
  from { opacity: 0; transform: translateY(7cqw) scale(0.45) rotate(-16deg); }
  to { opacity: 1; transform: none; }
}
@keyframes reel-s11-float {
  0%, 100% { transform: translateY(0); }
  50% { transform: translateY(-0.6cqw); }
}

/* 05-agency-guides.css */
/* ==========================================================================
   Landing pública · Sección 05: AGENCY (#agency) + GUIDES (#guides)
   `#agency` es el port del teaser que ve un cliente en /client antes de
   activar su panel (src/components/freelancer/AgencyIntroduction.tsx): mismo
   título + entradilla + botón redondo + nota, y la misma rejilla
   "bento" de 5 tarjetas con maquetas DIBUJADAS (nada de capturas borrosas).
   Traducción de clases Tailwind → tokens de public/landing/base.css:
     rounded-card → var(--radius-card) · bg-card → hsl(var(--card))
     bg-surface-2/3 → var(--surface-2/3) · text-muted-foreground → hsl(var(--secondary))
     bg-foreground/15|25 → hsl(var(--foreground) / .15|.25) · text-accent → hsl(var(--accent))
   Solo selectores con prefijo `agency-` (y los `download-guides-` heredados).
   ========================================================================== */

.agency-inner { display: flex; flex-direction: column; gap: 2.5rem; }

/* --- Encabezado: título · entradilla · botón · nota ---------------------- */
.agency-head {
  display: flex;
  flex-direction: column;
  align-items: center;
  max-width: 42rem;
  margin-inline: auto;
  text-align: center;
}
.agency-lead { max-width: 36rem; margin-top: 1rem; text-wrap: pretty; }
.agency-cta { margin-top: 1.5rem; gap: 0.5rem; }
.agency-cta-icon { display: inline-flex; }
.agency-cta-icon svg { width: 1rem; height: 1rem; }
.agency-note { margin-top: 0.75rem; font-size: 0.875rem; color: hsl(var(--secondary)); }

/* --- Rejilla bento: 3 tarjetas + 2 anchas ------------------------------- */
/* `minmax(0, 1fr)` explícito: sin él la columna implícita es `auto` y se
   dimensiona por el contenido, así que la maqueta de la tarjeta estiraba la
   rejilla hasta 428px dentro de un móvil de 390 y la portada entera cogía
   scroll horizontal. Mismo remedio que ya lleva el breakpoint de abajo. */
.agency-grid { display: grid; gap: 1.25rem; grid-template-columns: minmax(0, 1fr); }
@media (min-width: 768px) {
  .agency-grid { grid-template-columns: repeat(6, minmax(0, 1fr)); }
  .agency-card--half { grid-column: span 2; }
  .agency-card--wide { grid-column: span 3; }
}

.agency-card {
  position: relative;
  isolation: isolate;
  display: flex;
  flex-direction: column;
  overflow: hidden;
  padding: 1.5rem;
}
@media (min-width: 640px) { .agency-card { padding: 2rem; } }
.agency-card > * { position: relative; z-index: 1; }
.agency-card:nth-child(-n + 4) {
  background: hsl(var(--card));
  border: 1px solid hsl(var(--foreground) / 0.06);
}
.agency-card:nth-child(-n + 4)::before {
  content: "";
  position: absolute;
  z-index: -2;
  inset: -22%;
  background-image: var(--agency-landscape);
  background-position: var(--agency-landscape-position, center);
  background-size: cover;
  opacity: 0.52;
  filter: blur(24px) saturate(1.12);
  transform: scale(1.05);
}
.agency-card:nth-child(-n + 4)::after {
  content: "";
  position: absolute;
  z-index: -1;
  inset: 0;
  background: color-mix(in srgb, hsl(var(--card)) 62%, transparent);
}
html.dark .agency-card:nth-child(-n + 4)::before { opacity: 0.44; }
html.dark .agency-card:nth-child(-n + 4)::after { background: color-mix(in srgb, hsl(var(--card)) 76%, transparent); }
.agency-card:nth-child(1) {
  --agency-landscape: url("/landing-shots/paisaje-1.jpg");
  --agency-landscape-position: 52% 44%;
}
.agency-card:nth-child(2) {
  --agency-landscape: url("/landing-shots/paisaje-2.jpg");
  --agency-landscape-position: 58% 40%;
}
.agency-card:nth-child(3) {
  --agency-landscape: url("/landing-shots/paisaje-3.jpg");
  --agency-landscape-position: 48% 50%;
}
.agency-card:nth-child(4) {
  --agency-landscape: url("/landing-shots/paisaje-4.jpg");
  --agency-landscape-position: 54% 48%;
}
/* Las tarjetas cuya maqueta se sale por abajo: la ventanita solo redondea
   arriba y la tarjeta se queda sin padding inferior, como en la app. */
.agency-card--bleed { overflow: hidden; padding-bottom: 0; }
@media (min-width: 640px) { .agency-card--bleed { padding-bottom: 0; } }
/* En la rejilla las tarjetas de una fila comparten alto: la maqueta se empuja
   ABAJO para que se salga de verdad por el borde (que es la gracia del
   recorte). En una sola columna no hay alto sobrante que repartir, así que se
   queda con su margen normal. */
@media (min-width: 768px) {
  .agency-card--bleed .agency-card-body { margin-bottom: 2rem; }
  .agency-card--bleed .agency-mock { margin-top: auto; }
}

.agency-card-title { font-size: 1.25rem; font-weight: 500; letter-spacing: -0.01em; }
.agency-card-body {
  margin-top: 0.5rem;
  max-width: 28rem;
  font-size: 0.875rem;
  line-height: 1.625;
  color: hsl(var(--secondary));
  text-wrap: pretty;
}

/* --- Maquetas decorativas ------------------------------------------------ */
.agency-mock { margin-top: 2rem; }
.agency-mock--window { overflow: hidden; border: 1px solid hsl(var(--border)); border-bottom: 0; border-radius: 1rem 1rem 0 0; background: hsl(var(--background)); font-size: 0.75rem; }
.agency-winbar { display: flex; align-items: center; gap: 0.375rem; padding: 0.625rem 0.875rem; border-bottom: 1px solid hsl(var(--border)); font-size: 0.6875rem; color: hsl(var(--secondary)); }
.agency-winbar-dot { width: 0.5rem; height: 0.5rem; border-radius: 9999px; background: hsl(var(--foreground) / 0.2); }
.agency-winbar-title { margin-left: auto; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.agency-mock-inner { display: flex; flex-direction: column; gap: 0.875rem; padding: 1.125rem; }

.agency-row { display: flex; align-items: center; gap: 0.75rem; }
.agency-avatar { display: inline-flex; flex-shrink: 0; align-items: center; justify-content: center; width: 2.5rem; height: 2.5rem; border-radius: 0.75rem; background: hsl(var(--primary)); color: hsl(var(--primary-foreground)); font-size: 1rem; font-weight: 500; }
.agency-avatar--round { width: 2.25rem; height: 2.25rem; border-radius: 9999px; font-size: 0.875rem; }
.agency-row-text { display: flex; min-width: 0; flex: 1; flex-direction: column; }
.agency-row-name { font-size: 0.875rem; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.agency-row-sub { margin-top: 0.125rem; font-size: 0.75rem; color: hsl(var(--secondary)); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.agency-check { margin-left: auto; display: inline-flex; align-items: center; justify-content: center; width: 1.25rem; height: 1.25rem; border-radius: 9999px; background: hsl(var(--success)); color: #fff; }

/* Píldoras de estado + botón */
.agency-pill { display: inline-flex; flex-shrink: 0; align-items: center; gap: 0.375rem; padding: 0.1875rem 0.5rem 0.1875rem 0.375rem; border-radius: 9999px; background: color-mix(in srgb, hsl(var(--accent)) 16%, hsl(var(--background))); color: color-mix(in srgb, hsl(var(--accent)) 55%, hsl(var(--foreground))); font-size: 0.6875rem; font-weight: 500; white-space: nowrap; }
.agency-pill i { display: block; width: 0.375rem; height: 0.375rem; border-radius: 9999px; background: hsl(var(--accent)); }
.agency-pill--ok { background: color-mix(in srgb, hsl(var(--success)) 16%, hsl(var(--background))); color: color-mix(in srgb, hsl(var(--success)) 45%, hsl(var(--foreground))); }
.agency-pill--ok i { background: hsl(var(--success)); }
.agency-pill--warn { background: color-mix(in srgb, hsl(var(--warning)) 18%, hsl(var(--background))); color: color-mix(in srgb, hsl(var(--warning)) 50%, hsl(var(--foreground))); }
.agency-pill--warn i { background: hsl(var(--warning)); }
.agency-btn { display: inline-flex; flex-shrink: 0; align-items: center; height: 1.75rem; padding: 0 0.75rem; border-radius: 9999px; box-shadow: inset 0 0 0 1px hsl(var(--border)); font-size: 0.6875rem; font-weight: 500; white-space: nowrap; }
.agency-btn--go { align-self: flex-start; height: 2rem; margin-top: 0.75rem; padding: 0 0.875rem; background: hsl(var(--primary)); color: hsl(var(--primary-foreground)); box-shadow: none; font-size: 0.75rem; }

/* 1 · Identidad */
.agency-identity { gap: 0.75rem; }
.agency-field { display: flex; flex-direction: column; gap: 0.3rem; }
.agency-field small { font-size: 0.6875rem; color: hsl(var(--secondary)); }
.agency-input { display: block; padding: 0.375rem 0.625rem; border-radius: 0.5rem; box-shadow: inset 0 0 0 1px hsl(var(--border)); font-size: 0.75rem; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.agency-input b { font-weight: 500; }
.agency-swatches { display: flex; align-items: center; gap: 0.5rem; }
.agency-swatch { width: 1.5rem; height: 1.5rem; border-radius: 9999px; }
.agency-swatch.is-on { box-shadow: 0 0 0 2px hsl(var(--background)), 0 0 0 3.5px hsl(var(--foreground)); }
.agency-swatch--outline { border: 1px solid hsl(var(--border)); background: hsl(var(--background)); }
.agency-swatch--ink { background: hsl(var(--foreground)); }
.agency-swatch--accent { background: hsl(var(--accent)); }
.agency-swatch--warm { background: hsl(var(--warning)); }
.agency-hex { margin-left: auto; font-size: 0.6875rem; font-variant-numeric: tabular-nums; color: hsl(var(--secondary)); }
.agency-identity .agency-pill { align-self: flex-start; }

/* 2 · Clientes */
.agency-clients { display: flex; flex-direction: column; gap: 0.625rem; }
.agency-client { display: flex; align-items: center; gap: 0.75rem; padding: 0.625rem 0.75rem; border: 1px solid hsl(var(--border)); border-radius: 1rem; background: hsl(var(--background)); }
.agency-client.is-hot { border-color: hsl(var(--warning) / 0.6); }
.agency-client-go { margin-left: auto; display: inline-flex; flex-shrink: 0; color: hsl(var(--secondary)); }
.agency-client-go svg { width: 1rem; height: 1rem; }
.agency-progress { position: relative; display: block; flex-shrink: 0; width: 3rem; height: 0.375rem; border-radius: 9999px; background: hsl(var(--foreground) / 0.12); overflow: hidden; }
.agency-progress i { position: absolute; inset: 0 auto 0 0; width: var(--p, 50%); border-radius: 9999px; background: hsl(var(--accent)); }
.agency-client--empty { justify-content: center; gap: 0.375rem; border-style: dashed; background: transparent; color: hsl(var(--secondary)); font-size: 0.75rem; }
.agency-client-plus { display: inline-flex; }
.agency-client-plus svg { width: 0.75rem; height: 0.75rem; }

/* 3 · Portal */
.agency-portal { gap: 0.625rem; }
.agency-portal-page { display: flex; align-items: center; gap: 0.625rem; padding: 0.5rem 0.625rem; border-radius: 0.75rem; background: var(--surface-2); font-size: 0.75rem; }
.agency-portal-thumb { display: flex; flex-shrink: 0; flex-direction: column; gap: 3px; width: 2.5rem; padding: 4px; border-radius: 0.375rem; background: hsl(var(--background)); box-shadow: 0 0 0 1px hsl(var(--border)); }
.agency-portal-thumb i { display: block; height: 10px; border-radius: 2px; background: hsl(var(--accent) / 0.35); }
.agency-portal-thumb b { display: block; height: 3px; border-radius: 9999px; background: hsl(var(--foreground) / 0.18); }
.agency-portal-thumb b:last-child { width: 60%; }
.agency-msg { display: flex; flex-direction: column; gap: 0.125rem; padding: 0.5rem 0.75rem; border-radius: 1rem; font-size: 0.75rem; line-height: 1.45; }
.agency-msg time { font-size: 0.5625rem; color: hsl(var(--secondary)); align-self: flex-end; }
.agency-msg--them { margin-right: 1.5rem; border-bottom-left-radius: 0.125rem; background: var(--surface-3); }
.agency-msg--us { margin-left: 1.5rem; border-bottom-right-radius: 0.125rem; background: hsl(var(--primary)); color: hsl(var(--primary-foreground)); }
.agency-msg--us time { color: hsl(var(--primary-foreground) / 0.6); }
.agency-typing { display: inline-flex; gap: 3px; align-self: flex-start; padding: 0.5rem 0.625rem; border-radius: 1rem; border-bottom-left-radius: 0.125rem; background: var(--surface-3); }
.agency-typing i { display: block; width: 5px; height: 5px; border-radius: 9999px; background: hsl(var(--secondary)); }

/* 4 · Páginas vinculadas */
.agency-pages { position: relative; }
.agency-pagelist { display: flex; flex-direction: column; gap: 0.5rem; margin: 0; padding: 0; list-style: none; }
.agency-pagelist li { display: flex; align-items: center; gap: 0.75rem; padding: 0.625rem 0.75rem; border: 1px solid hsl(var(--border)); border-radius: 1rem; background: hsl(var(--background)); }
.agency-pagelist li.is-attaching { border-style: dashed; }
.agency-thumb { position: relative; display: block; flex-shrink: 0; width: 3.25rem; height: 2.25rem; border-radius: 0.5rem; background: var(--surface-2); overflow: hidden; }
.agency-thumb::before { content: ""; position: absolute; left: 6px; right: 6px; top: 6px; height: 4px; border-radius: 9999px; background: hsl(var(--foreground) / 0.2); }
.agency-thumb::after { content: ""; position: absolute; left: 6px; right: 18px; top: 14px; bottom: 6px; border-radius: 3px; background: hsl(var(--accent) / 0.35); }
.agency-thumb--b::after { background: hsl(var(--warning) / 0.4); }
.agency-thumb--c::after { background: hsl(var(--color-breeze) / 0.6); }
.agency-pages-cursor { position: absolute; right: 12%; bottom: 0.35rem; display: inline-flex; color: hsl(var(--foreground)); }
.agency-pages-cursor svg { width: 1.125rem; height: 1.125rem; }

/* 5 · Capacidad */
.agency-capacity { display: flex; align-items: center; gap: 1.5rem; flex: 1; margin-top: 2rem; }
.agency-ring { position: relative; display: flex; flex-shrink: 0; align-items: center; justify-content: center; width: 6.5rem; height: 6.5rem; }
.agency-ring svg { position: absolute; inset: 0; width: 100%; height: 100%; transform: rotate(-90deg); }
.agency-ring__track { fill: none; stroke: hsl(var(--foreground) / 0.1); stroke-width: 3; }
.agency-ring__arc { fill: none; stroke: hsl(var(--accent)); stroke-width: 3; stroke-linecap: round; stroke-dasharray: 106.8; stroke-dashoffset: 0; }
.agency-capacity-num { font-size: 2.5rem; font-weight: 500; line-height: 1; letter-spacing: -0.04em; }
.agency-capacity-num small { font-size: 1rem; color: hsl(var(--secondary)); letter-spacing: 0; }
.agency-capacity-text { display: flex; flex-direction: column; min-width: 0; }
.agency-capacity-lead { font-size: 1.125rem; }
.agency-capacity-sub { margin-top: 0.25rem; font-size: 0.875rem; color: hsl(var(--secondary)); }
.agency-plan { display: flex; flex-direction: column; gap: 0.375rem; margin: 0.875rem 0 0; padding: 0; list-style: none; font-size: 0.8125rem; }
.agency-plan li { display: flex; align-items: center; gap: 0.5rem; }
.agency-plan i { display: inline-flex; flex-shrink: 0; align-items: center; justify-content: center; width: 1rem; height: 1rem; border-radius: 9999px; background: color-mix(in srgb, hsl(var(--success)) 18%, hsl(var(--background))); color: hsl(var(--success)); }

/* Vida: entrada en cascada al revelar la tarjeta y un gesto por maqueta. */
@media (prefers-reduced-motion: no-preference) {
  .agency-card.is-in :is(.agency-client, .agency-pagelist li, .agency-msg, .agency-field, .agency-plan li) { animation: agency-rise 520ms var(--ease-spring) both; }
  .agency-card.is-in :is(.agency-client, .agency-pagelist li, .agency-msg, .agency-field, .agency-plan li):nth-child(2) { animation-delay: 120ms; }
  .agency-card.is-in :is(.agency-client, .agency-pagelist li, .agency-msg, .agency-field, .agency-plan li):nth-child(3) { animation-delay: 240ms; }
  .agency-card.is-in :is(.agency-client, .agency-pagelist li, .agency-msg, .agency-field, .agency-plan li):nth-child(4) { animation-delay: 360ms; }
  .agency-card.is-in :is(.agency-client, .agency-pagelist li, .agency-msg, .agency-field, .agency-plan li):nth-child(5) { animation-delay: 480ms; }
  .agency-card.is-in .agency-typing { animation: agency-rise 520ms var(--ease-spring) 600ms both; }
  .agency-typing i { animation: agency-dot 1.2s ease-in-out infinite; }
  .agency-typing i:nth-child(2) { animation-delay: 150ms; }
  .agency-typing i:nth-child(3) { animation-delay: 300ms; }
  .agency-client.is-hot .agency-pill i { animation: agency-pulse 2s ease-in-out infinite; }
  .agency-card.is-in .agency-progress i { animation: agency-fill 1.2s var(--ease-spring) 400ms both; }
  .agency-card.is-in .agency-ring__arc { animation: agency-ring 1.4s var(--ease-spring) both; }
  .agency-card.is-in .agency-pages-cursor { animation: agency-cursor 4.5s var(--ease-spring) 800ms infinite; }
  .agency-card.is-in .agency-pagelist li.is-attaching .agency-btn { animation: agency-press 4.5s var(--ease-spring) 800ms infinite; }
  .agency-swatch.is-on { animation: agency-swatch 5s ease-in-out infinite; }
}
@keyframes agency-rise { from { opacity: 0; transform: translateY(10px); } to { opacity: 1; transform: none; } }
@keyframes agency-dot { 50% { transform: translateY(-3px); opacity: 0.5; } }
@keyframes agency-pulse { 50% { transform: scale(1.5); } }
@keyframes agency-fill { from { width: 0; } }
@keyframes agency-ring { from { stroke-dashoffset: 106.8; } }
@keyframes agency-cursor { 0%, 20%, 100% { transform: translate(0, 0); } 45%, 70% { transform: translate(-70px, -12px); } }
@keyframes agency-press { 0%, 40%, 100% { background: transparent; color: hsl(var(--foreground)); } 55%, 75% { background: hsl(var(--primary)); color: hsl(var(--primary-foreground)); } }
@keyframes agency-swatch { 0%, 30%, 100% { transform: scale(1); } 40%, 60% { transform: scale(1.15); } }

@media (prefers-reduced-motion: reduce) {
  .agency-card, .agency-cta { transition: none; }
}

/* ---------- #guides ---------- */
/* Abajo no lleva nada (el aire lo pone #faqs). Arriba SÍ: duplica el cierre de
   #agency (.section = 5rem, 7rem en sm) para separarse de la rejilla bento. */
.download-guides { padding-top: 6rem; padding-bottom: 0; }
@media (min-width: 640px) { .download-guides { padding-top: 8rem; } }

.download-guides-inner {
  width: 100%;
  max-width: var(--site-content-width);
  margin-inline: auto;
  padding-inline: 1rem;
}

.download-guides-body {
  display: flex;
  max-width: 36rem;
  margin-inline: auto;
  flex-direction: column;
  align-items: center;
  gap: 1.5rem;
  text-align: center;
}

/* Afina el .section-head de base.css a las medidas de x.ai (max-w-xl, gap 12px) */
.download-guides .section-head {
  max-width: 36rem;
  align-items: center;
  gap: 0.75rem;
}

/* ---------- Breakpoints ---------- */
@media (min-width: 640px) {
  .download-guides-inner { padding-inline: 1.5rem; }
}

/* 06-faqs-getstarted-footer.css */
/* ==========================================================================
   Sección 06 · FAQs + Get started + Footer — landing pública (réplica x.ai/bot)
   Depende de base.css (tokens hsl(var(--x)), .container .section .h2 .lead
   .btn .input .waitlist-form .btn-icon .reveal). Solo selectores de esta
   sección (prefijo faqs-; .faq* van scopeados bajo .faqs-list). Mobile-first,
   breakpoints 640 / 1024. Sin degradados, blur, glow ni sombras.
   ========================================================================== */

/* Ancho de contenido de x.ai (64rem) encima del .container de 80rem */
.container.faqs-content { max-width: var(--site-content-width); }

/* ── FAQs ─────────────────────────────────────────────────────────────── */
.faqs-grid { display: grid; gap: 2.5rem; }
@media (min-width: 1024px) {
  .faqs-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 4rem; }
  /* Pegajoso bajo el header fijo (x.ai usa top 2rem; aquí + alto del header para que no quede tapado) */
  .faqs-title { position: sticky; top: calc(var(--site-header-h) + 2rem); align-self: start; }
}

.faqs-list .faq { border-bottom: 1px solid hsl(var(--border)); }
.faqs-list .faq-q {
  display: flex; width: 100%; align-items: center; justify-content: space-between; gap: 1rem;
  padding-block: 1.25rem; text-align: left;
  font-size: 1rem; line-height: 1.5; font-weight: 500; color: hsl(var(--primary));
  text-wrap: pretty;
}
.faqs-list .faq-q > span { padding-right: 1rem; }
.faqs-list .faq-icon {
  width: 1.25rem; height: 1.25rem; flex-shrink: 0;
  color: hsl(var(--primary) / 0.3);
  transition: transform 0.3s var(--ease-spring), color var(--duration) ease;
}
.faqs-list .faq-q:hover .faq-icon { color: hsl(var(--primary) / 0.6); }
/* Abierto: el "+" gira 45° y se vuelve "×" (igual que x.ai) */
.faqs-list .faq-q[aria-expanded="true"] .faq-icon { transform: rotate(45deg); }

/* Respuesta: colapsa por CSS según aria-expanded del botón (home.js solo cambia el atributo) */
.faqs-list .faq-a {
  display: grid; grid-template-rows: 0fr; visibility: hidden;
  transition: grid-template-rows 0.3s var(--ease-spring), visibility 0s 0.3s;
}
.faqs-list .faq-q[aria-expanded="true"] + .faq-a {
  grid-template-rows: 1fr; visibility: visible;
  transition: grid-template-rows 0.3s var(--ease-spring), visibility 0s;
}
.faqs-list .faq-a-inner { min-height: 0; overflow: hidden; }
.faqs-list .faq-a p {
  padding-bottom: 1.5rem;
  font-size: 1rem; line-height: 1.625; color: hsl(var(--secondary)); text-wrap: pretty;
}

/* ── Get started ──────────────────────────────────────────────────────── */
.faqs-getstarted { padding-top: 6rem; padding-bottom: 6rem; }
@media (min-width: 640px) { .faqs-getstarted { padding-top: 8rem; padding-bottom: 8rem; } }

.faqs-getstarted-head { display: flex; flex-direction: column; align-items: center; gap: 1.5rem; max-width: 36rem; margin-inline: auto; }
.faqs-getstarted-copy { gap: 0.75rem; }

.faqs-getstarted-actions { display: flex; flex-direction: column; align-items: center; gap: 0.75rem; width: 100%; }
.faqs-getstarted-actions .waitlist-form { margin: 0; }
.faqs-getstarted-status { font-size: 0.875rem; line-height: 1.25rem; color: hsl(var(--secondary)); }
.faqs-getstarted-status[hidden] { display: none; }
.faqs-getstarted-status.is-error { color: hsl(var(--error)); }
.faqs-getstarted-status.is-success { color: hsl(var(--success)); }
@media (min-width: 640px) {
  /* El formulario va en fila; el mensaje de estado SIEMPRE en su propio
     renglón debajo (`flex-basis: 100%`), nunca al lado del botón. */
  .faqs-getstarted-actions { flex-direction: row; flex-wrap: wrap; justify-content: center; align-items: stretch; }
  .faqs-getstarted-status { flex: 0 0 100%; text-align: center; }
  .faqs-getstarted-actions .waitlist-form { width: auto; flex: 0 1 26rem; }
}

/* ── Footer ───────────────────────────────────────────────────────────── */
.faqs-footer { border-top: 1px solid hsl(var(--border)); }
.faqs-footer-inner {
  display: grid; grid-template-columns: minmax(0, 1fr); gap: 2.5rem;
  padding-top: 2.5rem; padding-bottom: 4rem;
}
@media (min-width: 1024px) {
  .faqs-footer-inner {
    grid-template-columns: 17.5rem 1px minmax(0, 1fr);
    grid-template-rows: minmax(0, 1fr) auto;
    column-gap: 4rem; row-gap: 2.5rem;
  }
  .faqs-footer-brand { grid-column: 1; grid-row: 1; }
  .faqs-footer-sep { grid-column: 2; grid-row: 1 / 3; }
  .faqs-footer-nav { grid-column: 3; grid-row: 1 / 3; }
  .faqs-footer-tools { grid-column: 1; grid-row: 2; }
}

/* Columna de marca */
.faqs-footer-brand { display: flex; flex-direction: column; align-items: flex-start; }
.faqs-wordmark {
  display: inline-flex; align-items: center; gap: 0.5rem;
  color: hsl(var(--primary) / 0.4); transition: color var(--duration) ease;
}
.faqs-wordmark:hover { color: hsl(var(--primary) / 0.7); }
/* Mismas medidas que .header-brand-* de la sección 01: hay UN solo wordmark. */
.faqs-wordmark-mark { width: 1.125rem; height: 1.125rem; flex-shrink: 0; }
.faqs-wordmark-text { font-size: 1.125rem; line-height: 1; font-weight: 500; letter-spacing: 0.12em; }
.faqs-footer-copy { display: block; margin-top: 1.25rem; font-size: 0.75rem; line-height: 1; color: hsl(var(--secondary)); }

/* Separador vertical punteado (solo lg) */
.faqs-footer-sep { display: none; }
@media (min-width: 1024px) {
  .faqs-footer-sep { display: block; width: 0; border-left: 1px dashed hsl(var(--primary) / 0.1); }
}

/* Columnas de links: 2 → 3 → 5 */
.faqs-footer-nav { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); column-gap: 2rem; row-gap: 2rem; }
@media (min-width: 640px) { .faqs-footer-nav { grid-template-columns: repeat(3, minmax(0, 1fr)); column-gap: 3rem; } }
@media (min-width: 1024px) {
  .faqs-footer-nav { grid-template-columns: repeat(3, minmax(0, 1fr)); column-gap: 3.5rem; row-gap: 2.5rem; margin-left: auto; width: 100%; }
}
.faqs-footer-col { display: flex; flex-direction: column; gap: 2.5rem; }
.faqs-footer-heading { margin-bottom: 0.375rem; font-size: 0.875rem; line-height: 1.5; font-weight: 500; color: hsl(var(--primary)); }
.faqs-footer-links { display: flex; flex-direction: column; gap: 0.25rem; }
.faqs-footer-links a {
  display: inline-block; font-size: 0.875rem; line-height: 1.625; color: hsl(var(--secondary));
  transition: color var(--duration) ease;
}
.faqs-footer-links a:hover { color: hsl(var(--primary)); }

/* Toggle de tema + badge "Built with Exi" (abajo-izq en lg; al final en móvil) */
.faqs-footer-tools { display: flex; align-items: center; gap: 0.75rem; }
@media (min-width: 1024px) { .faqs-footer-tools { align-self: end; padding-top: 2.5rem; } }
.faqs-theme-toggle { display: inline-flex; align-items: center; justify-content: center; }
.faqs-theme-toggle svg { width: 1rem; height: 1rem; }
.faqs-theme-moon { display: none; }
html.dark .faqs-theme-sun { display: none; }
html.dark .faqs-theme-moon { display: block; }

.faqs-built {
  display: inline-flex; align-items: center; gap: 0.5rem;
  border-radius: 9999px; border: 1px solid hsl(var(--primary) / 0.06);
  padding: 0.375rem 0.75rem 0.375rem 0.625rem;
  font-size: 0.625rem; line-height: 1; font-weight: 500; color: hsl(var(--primary) / 0.25);
  transition: color var(--duration) ease, border-color var(--duration) ease;
}
.faqs-built:hover { color: hsl(var(--primary) / 0.45); border-color: hsl(var(--primary) / 0.12); }
.faqs-built img { width: 0.75rem; height: 0.75rem; flex-shrink: 0; opacity: 0.6; transition: opacity var(--duration) ease; }
.faqs-built:hover img { opacity: 1; }

/* Movimiento reducido */
@media (prefers-reduced-motion: reduce) {
  .faqs-list .faq-icon, .faqs-list .faq-a, .faqs-list .faq-q[aria-expanded="true"] + .faq-a { transition: none; }
}

/* ── Wordmark gigante del footer (revelado por cursor) ─────────────────────
   Port vanilla del TextHoverEffect: solo trazo, sin relleno; el color aparece
   dentro de una máscara radial que sigue al puntero (home.js, bloque 11).
   Excepción consciente al "sin degradados": es tinta de una letra decorativa,
   no una superficie. Para apagarlo basta con .faqs-bigmark { display: none }. */
.faqs-bigmark {
  position: relative;
  grid-column: 1 / -1; /* fila propia bajo la rejilla del footer */
  margin-top: 1rem;
  padding-bottom: 1.5rem;
  line-height: 0;
}
.faqs-bigmark__svg { display: block; width: 100%; height: auto; user-select: none; }
.faqs-bigmark__text {
  font-family: var(--font-sans);
  font-size: 4.5rem;
  font-weight: 600;
  letter-spacing: -0.02em;
  fill: transparent;
  stroke-width: 0.35;
}
.faqs-bigmark__ghost { stroke: hsl(var(--primary) / 0.14); }
.faqs-bigmark__draw {
  stroke: hsl(var(--accent) / 0.55);
  stroke-dasharray: 1000;
  stroke-dashoffset: 1000;
}
/* home.js pone .is-drawn cuando el footer entra en pantalla */
.faqs-bigmark.is-drawn .faqs-bigmark__draw {
  animation: faqs-bigmark-draw 4s ease-in-out forwards;
}
.faqs-bigmark__fill {
  opacity: 0;
  transition: opacity var(--duration, 0.2s) ease;
}
.faqs-bigmark.is-hovered .faqs-bigmark__fill { opacity: 1; }
@keyframes faqs-bigmark-draw { to { stroke-dashoffset: 0; } }
@media (prefers-reduced-motion: reduce) {
  .faqs-bigmark__draw { stroke-dashoffset: 0; }
  .faqs-bigmark.is-drawn .faqs-bigmark__draw { animation: none; }
  .faqs-bigmark__fill { transition: none; }
}

/* ==========================================================================
   READY (#ready) — puente con Exi antes del alta
   Cara "surprised": el bot entra dando un salto corto y se queda flotando.
   ========================================================================== */
.ready { padding-block: 5rem 1rem; }
@media (min-width: 640px) { .ready { padding-block: 7rem 2rem; } }
.ready-inner { display: flex; justify-content: center; }
.ready-bot-wrap {
  /* Sin copy alrededor: el bot ES la sección, así que ocupa de verdad. */
  width: min(22rem, 72vw);
  /* El gesto de entrada es el salto del bot, no el del marco. */
  --reveal-y: 0px;
  --reveal-blur: 0px;
}
@media (min-width: 640px) { .ready-bot-wrap { width: min(30rem, 55vw); } }
.ready-bot {
  display: block;
  width: 100%;
  height: auto;
  transform: scale(0.4) translateY(40%);
  opacity: 0;
  transition:
    transform 0.9s var(--ease-spring),
    opacity 0.5s ease;
}
.ready-bot-wrap.is-in .ready-bot { transform: none; opacity: 1; }
@media (prefers-reduced-motion: no-preference) {
  /* El flotar arranca cuando el salto ya terminó. */
  .ready-bot-wrap.is-in .ready-bot { animation: ready-float 4.5s ease-in-out 0.9s infinite; }
}
@keyframes ready-float {
  50% { transform: translateY(-16px) rotate(-1.5deg); }
}
@media (prefers-reduced-motion: reduce) {
  .ready-bot { transform: none; opacity: 1; transition: none; }
}

/* Emoción de Exi: al apuntar al botón de la lista de espera, al bot de #ready
   se le estiran los ojos. Los ojos viven en un <mask> de la sección 02 (fuera
   de este subárbol), así que el disparador cuelga de <html> con :has() y el
   valor baja por herencia hasta cada [data-exi-blink] de la máscara. */
html:has(.faqs-getstarted-actions .btn-primary:hover) #exi-mask-surprised,
html:has(.faqs-getstarted-actions .btn-primary:focus-visible) #exi-mask-surprised { --eye-sy: 1.45; }
@media (prefers-reduced-motion: reduce) {
  html:has(.faqs-getstarted-actions .btn-primary:hover) #exi-mask-surprised { --eye-sy: 1; }
}

/* --- Paletas del bot grande del final -------------------------------------
   Se pulsa y va cambiando de color. Cada paleta son las 4 paradas del
   degradado, de la más clara a la más oscura; el color base se guarda en
   `--exi-c*` y las paradas solo lo leen. Sin marco al pulsar: ni foco, ni
   resalte táctil, ni selección. */
.ready-bot {
  --exi-c1: #b0e7db;
  --exi-c2: #59ccb3;
  --exi-c3: #2fbfa0;
  --exi-c4: #207765;
  cursor: pointer;
  outline: none;
  -webkit-tap-highlight-color: transparent;
  user-select: none;
  -webkit-user-select: none;
}
.ready-bot.is-pal-morado { --exi-c1: #d8ccf7; --exi-c2: #9b7ee8; --exi-c3: #6d55d6; --exi-c4: #402f8a; }
.ready-bot.is-pal-coral  { --exi-c1: #ffd0c6; --exi-c2: #fb8f7f; --exi-c3: #f2555a; --exi-c4: #8f2b32; }
.ready-bot.is-pal-azul   { --exi-c1: #c3ddff; --exi-c2: #6ea9f6; --exi-c3: #2f7ff0; --exi-c4: #1a4b95; }
.ready-bot.is-pal-dorado { --exi-c1: #ffe6ad; --exi-c2: #f0c250; --exi-c3: #e0a415; --exi-c4: #86610b; }
.ready-bot.is-pal-rosa   { --exi-c1: #fbcfe8; --exi-c2: #f184c0; --exi-c3: #db4a9b; --exi-c4: #822a5c; }
/* Las paradas del degradado: `stop-color` como PROPIEDAD (no atributo), que es
   lo único que acepta var(). */
.ready-bot__stop1 { stop-color: var(--exi-c1); }
.ready-bot__stop2 { stop-color: var(--exi-c2); }
.ready-bot__stop3 { stop-color: var(--exi-c3); }
.ready-bot__stop4 { stop-color: var(--exi-c4); }
.ready-bot__stop1, .ready-bot__stop2, .ready-bot__stop3, .ready-bot__stop4 { transition: stop-color 0.35s ease; }
@media (prefers-reduced-motion: reduce) {
  .ready-bot__stop1, .ready-bot__stop2, .ready-bot__stop3, .ready-bot__stop4 { transition: none; }
}
