/* =============================================================================
 * GrowBy CRM - superposición de identidad sobre Twenty v2.56.1 (APR-015, alcance A)
 * =============================================================================
 * Se carga DESPUÉS de /gb/tokens.css (brand/tokens.css: originales de GrowBy Board 2 y las
 * 5 variantes AA aprobadas, como --gb-*). Aquí solo se REDEFINEN variables --t-* de Twenty.
 *
 * Por qué funciona (verificado en el front servido, 2026-11-10): los tokens de Twenty viven en
 * `@layer twenty-ui { .light {...} .dark {...} }`. Una regla SIN capa gana a cualquier regla
 * con capa, sin importar especificidad ni orden; por eso basta `.light, .dark { --t-*: ... }`.
 * Mapeo y evidencia: openspec/changes/twenty-theming-overlay/design.md.
 *
 * Regla de color: todo valor sale de --gb-* (originales de Board 2) o es una mezcla
 * `color-mix` con transparencia de uno de ellos (los mismos "/90", "/20", "/10" que usa
 * Board 2). Excepciones documentadas: --gb-violet-soft = --ring del modo oscuro de Board 2 y los
 * --gb-login-*, que repiten originales del modo claro (prueba: test/overlay.test.ts).
 *
 * Al final de este archivo, la sección «Pantalla de acceso» da al login de Twenty el diseño del login
 * de Board 2 (change twenty-theming-overlay, tareas 6.x). Todas sus reglas cuelgan de un único selector
 * de alcance, así que ninguna llega a otras pantallas.
 * ========================================================================== */

:root {
  /* Original de Board 2 (app/globals.css, --ring en .dark) que tokens.css solo publica en oscuro. */
  --gb-violet-soft: #8a83e8;
  /* --gb-radius es 0.625rem en Board 2 (rem = 16 px = 10 px), pero Twenty fija rem = 13 px: en px fijos. */
  --gb-radius-px: 10px;
  /* Login (Board 2 fija el panel del formulario en claro, también con tema oscuro; app/(auth)/layout.tsx).
     Originales del modo claro de brand/tokens.json; en .dark los --gb-* cambian, por eso se repiten aquí. */
  --gb-login-surface: #ffffff;
  --gb-login-foreground: oklch(0.141 0.005 285.823);
  --gb-login-muted-text: #646180;
  --gb-login-border: #dcdaf5;
  --gb-login-destructive-text: #d00016;
}

/* ---- Común a claro y oscuro ------------------------------------------------ */
.light,
.dark {
  /* Tipografía: Twenty ya trae Inter (@fontsource); se alinea con el token de Board 2. */
  --t-font-family: var(--gb-font-sans), sans-serif;

  /* Radios: escala de Board 2 (sm 6, md 8, lg 10, xl 14). Twenty: xs 4, sm 8, md 16 (rem = 13 px). */
  --t-border-radius-sm: calc(var(--gb-radius-px) - 4px);
  --t-border-radius-md: calc(var(--gb-radius-px) - 2px);

  /* Superficies */
  --t-background-primary: var(--gb-container);
  --t-background-secondary: var(--gb-background);
  --t-background-tertiary: var(--gb-muted);
  --t-background-quaternary: var(--gb-accent);

  /* Escala de grises de Twenty (la barra lateral usa gray3 directamente) -> neutros de Board 2 */
  --t-gray-scale-gray1: var(--gb-container);
  --t-gray-scale-gray2: var(--gb-background);
  --t-gray-scale-gray3: var(--gb-sidebar);
  --t-gray-scale-gray4: var(--gb-muted);
  --t-gray-scale-gray5: var(--gb-accent);
  --t-gray-scale-gray6: var(--gb-border);
  --t-gray-scale-gray7: color-mix(in srgb, var(--gb-muted-foreground) 55%, transparent);
  --t-gray-scale-gray8: var(--gb-muted-foreground-text);
  --t-gray-scale-gray9: var(--gb-muted-foreground-text);
  --t-gray-scale-gray10: var(--gb-muted-foreground-text);
  --t-gray-scale-gray11: var(--gb-muted-foreground-text);
  --t-gray-scale-gray12: var(--gb-foreground);

  /* Botón principal de Twenty (variant=solid, color=neutral) = bg-primary de Board 2 */
  --t-background-primary-inverted: var(--gb-primary);
  --t-background-primary-inverted-hover: color-mix(in srgb, var(--gb-primary) 90%, transparent);
  --t-background-inverted-primary: var(--gb-primary);
  --t-background-inverted-secondary: color-mix(in srgb, var(--gb-primary) 90%, transparent);
  --t-font-color-inverted: var(--gb-primary-foreground);
  --t-font-color-on-accent: var(--gb-primary-foreground);

  /* Texto */
  --t-font-color-primary: var(--gb-foreground);
  --t-font-color-secondary: var(--gb-muted-foreground-text);
  /* Board 2 solo tiene dos niveles de texto (foreground y muted-foreground). Twenty tiene cinco: los tres
     intermedios usan la variante AA muted-foreground-text (válida sobre muted y accent, 4,5:1 o más en las
     cuatro superficies de Twenty); la jerarquía la dan tamaño y peso. extra-light es no textual (deshabilitado). */
  --t-font-color-tertiary: var(--gb-muted-foreground-text);
  --t-font-color-light: var(--gb-muted-foreground-text);
  --t-font-color-extra-light: color-mix(in srgb, var(--gb-muted-foreground) 55%, transparent);

  /* Bordes */
  --t-border-color-light: color-mix(in srgb, var(--gb-border) 60%, transparent);
  --t-border-color-medium: var(--gb-border);
  --t-border-color-strong: color-mix(in srgb, var(--gb-border), var(--gb-muted-foreground) 35%);
  --t-border-color-blue: color-mix(in srgb, var(--gb-ring) 50%, transparent);

  /* Destructivo: coral original en superficies; variantes AA para texto y relleno sólido */
  --t-color-red: var(--gb-destructive);
  --t-font-color-danger: var(--gb-destructive-text);
  --t-background-danger-solid: var(--gb-destructive-solid);
  --t-background-danger: color-mix(in srgb, var(--gb-destructive) 10%, transparent);
  --t-background-transparent-danger: color-mix(in srgb, var(--gb-destructive) 10%, transparent);
  --t-border-color-danger: color-mix(in srgb, var(--gb-destructive) 20%, transparent);
  --t-snack-bar-error-color: var(--gb-destructive-text);
  --t-snack-bar-error-background-color: color-mix(in srgb, var(--gb-destructive) 10%, transparent);

  /* Acento: la familia «blue» de Twenty pasa a ser el violeta primario (pasos 8-12 comunes) */
  --t-color-blue: var(--gb-primary);
  --t-color-blue8: var(--gb-violet-soft);
  --t-color-blue9: var(--gb-primary);
  --t-color-blue10: color-mix(in srgb, var(--gb-primary) 90%, transparent);
  --t-color-blue11: var(--gb-primary-text);
  --t-background-transparent-blue: color-mix(in srgb, var(--gb-primary) 8%, transparent);
  --t-snack-bar-info-color: var(--gb-primary-text);
  --t-snack-bar-info-background-color: color-mix(in srgb, var(--gb-primary) 8%, transparent);

  /* Alias semánticos del acento (en Twenty son copias literales de la escala blue) */
  --t-accent-primary: var(--t-color-blue5);
  --t-accent-secondary: var(--t-color-blue5);
  --t-accent-tertiary: var(--t-color-blue3);
  --t-accent-quaternary: var(--t-color-blue2);
  --t-accent-accent3570: var(--t-color-blue8);
  --t-accent-accent4060: var(--t-color-blue8);
  --t-accent-accent1: var(--t-color-blue1);
  --t-accent-accent2: var(--t-color-blue2);
  --t-accent-accent3: var(--t-color-blue3);
  --t-accent-accent4: var(--t-color-blue4);
  --t-accent-accent5: var(--t-color-blue5);
  --t-accent-accent6: var(--t-color-blue6);
  --t-accent-accent7: var(--t-color-blue7);
  --t-accent-accent8: var(--t-color-blue8);
  --t-accent-accent9: var(--t-color-blue9);
  --t-accent-accent10: var(--t-color-blue10);
  --t-accent-accent11: var(--t-color-blue11);
  --t-accent-accent12: var(--t-color-blue12);
}

/* ---- Claro: pasos 1-7 y 12 con las tintas originales de Board 2 --------------- */
.light {
  --t-color-blue1: var(--gb-container);
  --t-color-blue2: var(--gb-background);
  --t-color-blue3: var(--gb-muted);
  --t-color-blue4: var(--gb-accent);
  --t-color-blue5: var(--gb-sidebar-accent);
  --t-color-blue6: var(--gb-border);
  --t-color-blue7: var(--gb-color-growby-mist);
  --t-color-blue12: var(--gb-color-growby-ink);
}

/* ---- Oscuro: Board 2 es gris neutro; las tintas del acento son primary con transparencia ---- */
.dark {
  --t-color-blue1: var(--gb-container);
  --t-color-blue2: color-mix(in srgb, var(--gb-primary) 8%, transparent);
  --t-color-blue3: color-mix(in srgb, var(--gb-primary) 14%, transparent);
  --t-color-blue4: color-mix(in srgb, var(--gb-primary) 20%, transparent);
  --t-color-blue5: color-mix(in srgb, var(--gb-primary) 26%, transparent);
  --t-color-blue6: color-mix(in srgb, var(--gb-primary) 34%, transparent);
  --t-color-blue7: color-mix(in srgb, var(--gb-primary) 45%, transparent);
  --t-color-blue12: var(--gb-color-growby-mist);
}

/* ---- Reglas mínimas que las variables no cubren (atributos públicos del componente Button) ---- */
/* Botón destructivo sólido: texto blanco sobre destructive-solid (AA); Twenty usa --t-color-red. */
button[data-variant="solid"][data-color="danger"] {
  --tw-button-background: var(--gb-destructive-solid);
  --tw-button-hover: color-mix(in srgb, var(--gb-destructive-solid) 90%, transparent);
  --tw-button-active: var(--gb-destructive-solid);
}

/* =============================================================================
 * Pantallas de Ajustes sin uso real (MEJ-020): fuera del menú y de las pestañas
 * =============================================================================
 * Fallan incluso para el Admin (recorrido H4, docs/qa/2026-11-13-h4-y-bloqueo.md): Partner abre vacía, Comunicación > Bajas
 * responde FORBIDDEN y el detalle de una app instalada responde NOT_FOUND. Solo se ocultan las ENTRADAS; no se tocan rutas ni permisos
 * (la ruta directa sigue abriendo la pantalla). Se identifican por el href del enlace, que no depende del idioma. La entrada «Manage
 * unsubscribe» de Comunicación es un botón sin href: la marca hide.js con data-gb-hidden="screen". Sin color: solo display.
 * Si una versión futura de Twenty cambia estas rutas, los enlaces vuelven a verse (falla segura). */
a[href="/settings/partner"],
a[href^="/settings/applications/"],
a[href="/settings/communications/unsubscribe"],
a[href^="/settings/email/new-unsubscribe-topic"],
[data-gb-hidden="screen"] {
  display: none;
}

/* =============================================================================
 * Pantalla de acceso = login de GrowBy Board 2 (app/(auth)/layout.tsx y login/login-form.tsx)
 * =============================================================================
 * Solo CSS de superposición sobre el DOM de Twenty v2.56.1 (ADR-0007: sin tocar su front).
 *
 * Alcance: todo cuelga de `html:has(#root form input[autocomplete="email"])`. Ese campo
 * (`autoComplete="email"`) existe únicamente en el formulario de acceso de Twenty
 * (SignInUpEmailField); el resto de la app no lo tiene, así que ninguna regla de abajo llega a otras
 * pantallas. Si una versión futura de Twenty lo cambia, el selector deja de coincidir y el acceso
 * vuelve al aspecto de Twenty con los colores de marca (falla segura).
 *
 * Selectores: el DOM lo genera React y las clases (`s1wc667`, `_button_1tycy_1`...) son hashes; aquí no
 * se usan. Se usan: `#root`, `form`, atributos (`autocomplete`, `data-variant`, `data-testid`, `role`,
 * `href`), `:has()` y la posición documentada de los hijos del contenido de acceso (StyledAuthContent):
 *   1.º logotipo · 2.º título · 3.º contenedor del formulario [+ 4.º aviso legal, que se oculta].
 *
 * Como Board 2, el panel del formulario es siempre claro (pedido de Kevin del 2026-09-08 en su
 * layout.tsx) y a partir de 1024 px hay un panel de marca a la izquierda. Los --gb-login-* de :root
 * son los originales del modo claro (la prueba los coteja con brand/tokens.json): en .dark los
 * --gb-* de marca cambian, y este panel no.
 * ========================================================================== */
html:has(#root form input[autocomplete="email"]) {
  color-scheme: light;
  background: var(--gb-login-surface);
  /* Twenty amplía todo un 7,7 % (zoom) con 768 px o menos; Board 2 no, y aquí los px de abajo son los de Board 2. */
  --t-zoom: 1;
  zoom: 1;

  & body {
    background: var(--gb-login-surface);
    color: var(--gb-login-foreground);
  }

  /* Panel siempre claro: los --t-* de texto, superficie y borde que usan los componentes de Twenty del acceso
     (campo, botón, avisos, ayudas, botones SSO) se fijan al modo claro también cuando el tema es oscuro. */
  & #root,
  & body > [role="region"] {
    --t-font-color-primary: var(--gb-login-foreground);
    --t-font-color-secondary: var(--gb-login-muted-text);
    --t-font-color-tertiary: var(--gb-login-muted-text);
    --t-font-color-light: var(--gb-login-muted-text);
    --t-background-primary: var(--gb-login-surface);
    --t-background-secondary: var(--gb-color-offwhite);
    --t-border-color-medium: var(--gb-login-border);
    --t-border-color-danger: var(--gb-color-coral);
    --t-box-shadow-strong: 0 1px 2px 0 color-mix(in srgb, var(--gb-login-foreground) 5%, transparent);
  }

  /* Contenedores de página de Twenty: sin fondo propio; el de la página lo pone el panel blanco. */
  & #root div:has(form) {
    background: transparent;
  }
  & #root > div:has(form) {
    background: var(--gb-login-surface);
  }

  /* ---- Contenido (StyledAuthContent = padre del contenedor del formulario): px-6 py-10, max-w-sm ----
     MEJ-001 (centrado a lo alto, como el panel del formulario de Board 2: `flex min-h-svh flex-col items-center
     justify-center px-6 py-10`): la caja mide al menos el alto de la ventana (`svh`: el alto estable con la barra del
     navegador móvil a la vista, el mismo que usa Board 2) y centra título y formulario en vertical, sin depender de
     que los contenedores de Twenty midan el 100 %. Si el contenido es más alto que la ventana (pantalla baja, teclado
     virtual), la caja crece (`flex: 1 0 auto`, sin encoger los hijos) y el contenedor de Twenty, que ya desplaza
     (`overflow: auto`), muestra una barra: el relleno de 40 px arriba y abajo y el no encoger evitan que se recorte. */
  & #root div:has(> div > div > form) {
    box-sizing: border-box;
    flex: 1 0 auto;
    min-height: 100vh;
    min-height: 100svh;
    justify-content: center;
    padding: 40px 24px;
  }
  & #root div:has(> div > div > form) > * {
    flex-shrink: 0;
  }
  & #root div:has(> div > div > form) > * {
    box-sizing: border-box;
    width: 100%;
    max-width: 384px;
  }

  /* Logotipo en móvil y tablet (Board 2: logotipo apilado a la izquierda, mb-8; aquí el logotipo definitivo
     «GrowBy CRM», versión para fondo claro). El logotipo de Twenty (isotipo + avatar del workspace) se oculta
     y la caja muestra el PNG de brand/assets/generated/logo-growby-crm-on-light-220.png (reducción del original
     entregado, 2x de la visualización). Caja de 52 px de alto (110 x 52 con la relación 2,1:1 del logotipo;
     Board 2 usa 36 px para su logotipo apilado, y con «CRM» en la segunda línea 52 px la mantiene legible). */
  & #root div:has(> div > div > form) > :first-child {
    height: 52px;
    margin-bottom: 32px;
    background: url("data:image/png;base64,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") left top / auto 52px no-repeat;
  }
  & #root div:has(> div > div > form) > :first-child > * {
    display: none;
  }

  /* Título (h1 de Board 2: text-xl font-semibold, a la izquierda; 24 px hasta el formulario) */
  & #root div:has(> div > div > form) > :nth-child(2) {
    margin: 0 0 24px;
    line-height: 28px;
  }
  & #root div:has(> div > div > form) > :nth-child(2) > * {
    margin: 0;
    color: var(--gb-login-foreground);
    font-size: 20px;
    font-weight: 600;
    line-height: 28px;
    text-align: left;
  }

  /* Contenedor del formulario y del enlace «¿Olvidó su contraseña?» */
  & #root div:has(> div > div > form) > :nth-child(3) {
    margin: 0;
    align-items: stretch;
  }
  & #root div:has(> div > div > form) > :nth-child(3) > div {
    width: 100%;
    margin: 0;
  }
  & #root div:has(> div > div > form) > :nth-child(3) > div:not(:last-child) {
    margin-bottom: 24px;
  }

  /* ---- Aviso legal del pie (política de privacidad y términos de Twenty): fuera ---- */
  & #root a[href*="/privacy-policy"],
  & #root a[href*="/terms"] {
    display: none;
  }
  & #root div:has(> a[href*="/privacy-policy"], > a[href*="/terms"]):not(:has(> button)) {
    display: none;
  }
  /* Con «Omitir SSO» (botón del mismo contenedor) se conserva el botón y solo se ocultan enlaces y separadores. */
  & #root div:has(> a[href*="/privacy-policy"], > a[href*="/terms"]):has(> button) > span {
    display: none;
  }

  /* ---- Campos (Input de Board 2: h-10, rounded-md, border-input, shadow-xs, text-sm) ---- */
  & #root form > div + div {
    margin-top: 16px;
  }
  & #root form > div:last-child {
    margin-top: 24px;
  }
  & #root form > div > div {
    margin-bottom: 0;
  }
  & #root form input {
    box-sizing: border-box;
    height: 40px;
    padding: 0 12px;
    border-radius: calc(var(--gb-radius-px) - 2px);
    background: transparent;
    color: var(--gb-login-foreground);
    font-size: 14px;
    font-weight: 400;
    box-shadow: 0 1px 2px 0 color-mix(in srgb, var(--gb-login-foreground) 5%, transparent);
    transition: color 0.15s, box-shadow 0.15s;
  }
  & #root form input::placeholder {
    color: var(--gb-login-muted-text);
    font-weight: 400;
  }
  & #root form input:focus,
  & #root form input:focus-visible {
    outline: none;
    border-color: var(--gb-color-growby-violet);
    box-shadow: 0 0 0 3px color-mix(in srgb, var(--gb-color-growby-violet) 50%, transparent);
  }
  & #root form input:-webkit-autofill {
    -webkit-text-fill-color: var(--gb-login-foreground);
    box-shadow: 0 0 0 1000px var(--gb-login-surface) inset;
  }

  /* Etiquetas «Correo» y «Contraseña» sobre los campos y subtítulo bajo el título: textos de Board 2
     (login-form.tsx), en español. Solo con html[lang^="es"]; en otro idioma queda el aspecto de Twenty
     (marcador dentro del campo, sin subtítulo), que ya viene traducido. */
  &:lang(es) #root form input::placeholder {
    color: transparent;
  }
  &:lang(es) #root form div:has(> div > input)::before {
    display: block;
    margin-bottom: 8px;
    color: var(--gb-login-foreground);
    font-size: 14px;
    font-weight: 500;
    line-height: 14px;
    user-select: none;
  }
  &:lang(es) #root form div:has(> div > input[autocomplete="email"])::before {
    content: "Correo";
  }
  &:lang(es) #root form div:has(> div > input):has([data-testid="reveal-password-button"])::before {
    content: "Contraseña";
  }
  &:lang(es) #root div:has(> div > div > form) > :nth-child(2)::after {
    content: "Usa el correo con el que te dieron de alta.";
    display: block;
    margin-top: 6px;
    color: var(--gb-login-muted-text);
    font-size: 14px;
    line-height: 20px;
  }

  /* Ayuda bajo el campo (modo registro: «Al menos 8 caracteres.») */
  & #root form p {
    margin: 6px 0 0;
    font-size: 12px;
    line-height: 16px;
  }

  /* Mostrar contraseña: caja de 40 px a la derecha (Board 2: w-10, text-muted-foreground, hover foreground) */
  & #root form div:has(> [data-testid="reveal-password-button"]) {
    padding-right: 0;
  }
  & #root form [data-testid="reveal-password-button"] {
    width: 40px;
    height: 100%;
    color: var(--gb-login-muted-text);
  }
  & #root form [data-testid="reveal-password-button"]:hover {
    color: var(--gb-login-foreground);
  }
  & #root form div:has(> div > [data-testid="reveal-password-button"]) > input {
    padding-right: 40px;
  }

  /* ---- Botón principal (Button default de Board 2: h-10, bg-primary, font-semibold, shadow-xs) ---- */
  & #root form button[type="submit"] {
    --tw-button-size: 40px;
    --tw-button-border: transparent;
    --tw-button-font-weight: 600;
    font-size: 14px;
    box-shadow: 0 1px 2px 0 color-mix(in srgb, var(--gb-login-foreground) 5%, transparent);
    backdrop-filter: none;
  }
  & #root form button[type="submit"]:focus-visible {
    outline: 2px solid var(--gb-color-growby-violet);
    outline-offset: 2px;
  }

  /* ---- «¿Olvidó su contraseña?» (Board 2: text-sm text-muted-foreground, hover foreground, centrado) ---- */
  & #root button[data-variant="link"] {
    --tw-button-size: 44px;
    --tw-button-color: var(--gb-login-muted-text);
    margin-top: -12px;
    align-self: center;
    font-size: 14px;
  }
  & #root button[data-variant="link"]:hover {
    color: var(--gb-login-foreground);
  }
  & #root button[data-variant="link"]:focus-visible {
    outline: 2px solid var(--gb-color-growby-violet);
    outline-offset: 2px;
  }

  /* ---- Error (en Board 2 un recuadro bajo los campos; en Twenty es una notificación, que se viste igual) ---- */
  & body > [role="region"] {
    --t-font-size-sm: 14px;
    inset-block: 16px auto;
    inset-inline: 24px;
    inline-size: auto;
    max-inline-size: 384px;
    margin-inline: auto;
  }
  & body > [role="region"] [role="status"] {
    inline-size: 100%;
    margin-block-start: 0;
    padding: 10px 12px;
    border: 1px solid var(--gb-login-border);
    border-radius: calc(var(--gb-radius-px) - 2px);
    font-size: 14px;
  }
  & body > [role="region"] [role="status"] > [aria-hidden="true"] {
    display: none;
  }
  & body > [role="region"] .tabler-icon-alert-triangle {
    stroke: var(--gb-login-destructive-text);
  }
  & body > [role="region"] [role="status"]:has(.tabler-icon-alert-triangle) {
    --t-background-primary: color-mix(in srgb, var(--gb-color-coral) 10%, var(--gb-login-surface));
    --t-font-color-secondary: var(--gb-login-destructive-text);
    border-color: color-mix(in srgb, var(--gb-color-coral) 20%, transparent);
  }

  /* ---- A partir de 1024 px (lg de Board 2): panel de marca 50/50 ---- */
  @media (min-width: 1024px) {
    /* Panel de marca: `html::after`, fijo en la mitad izquierda (mismos halos, tamaños y colores que layout.tsx:
       halos de 384 y 288 px, barra de 40x4). Logotipo definitivo «GrowBy CRM» (versión para fondo oscuro,
       brand/assets/generated/logo-growby-crm-on-dark-440.png) a 220 x 104 px (2x del PNG de 440 x 208). El bloque
       logotipo (104) + 32 de aire + barra (4) + 40 + tres elementos (144) = 324 px queda centrado en vertical:
       logotipo desde -162 px, barra en -26 px, elementos desde +18 px (todo relativo al centro). */
    &::after {
      content: "";
      position: fixed;
      inset: 0 50% 0 0;
      z-index: 0;
      pointer-events: none;
      background:
        linear-gradient(var(--gb-color-growby-yellow), var(--gb-color-growby-yellow)) 50% calc(50% - 24px) / 40px 4px no-repeat,
        url("data:image/png;base64,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") 50% calc(50% - 110px) / 220px auto no-repeat,
        radial-gradient(circle, color-mix(in srgb, var(--gb-color-growby-violet) 20%, transparent), transparent 70%) right -112px top -112px / 384px 384px no-repeat,
        radial-gradient(circle, color-mix(in srgb, var(--gb-color-growby-violet) 20%, transparent), transparent 70%) left -80px bottom -80px / 288px 288px no-repeat,
        var(--gb-color-growby-ink);
    }
    & #root > div:has(form) {
      margin-left: 50%;
      width: 50%;
    }

    /* Tres elementos bajo el logotipo: icono + frase corta (viñetas del panel de Board 2: `li flex items-center gap-3`,
       icono `size-4` violeta dentro de `size-8 rounded-full bg-growby-violet/20`, texto `text-sm text-growby-mist`,
       lista de 384 px, 12 px entre elementos, 40 px bajo la barra). Un pseudoelemento de CSS no puede alojar icono y
       texto en columnas, así que cada elemento es un pseudoelemento (`html::before`, `body::before`, `#root::before`:
       los tres van antes del formulario en el orden de lectura) con el icono de fondo (círculo + trazo lucide 0.476.0,
       licencia ISC, en el mismo SVG; byte a byte lo que fija la prueba) y el texto como contenido generado, que Chrome expone a los
       lectores de pantalla. Alto fijo de 40 px (dos líneas) con el texto centrado, como `items-center` en Board 2. */
    &::before,
    & body::before,
    & #root::before {
      position: fixed;
      z-index: 1;
      left: calc(25% - 192px);
      width: 384px;
      height: 40px;
      box-sizing: border-box;
      display: flex;
      align-items: center;
      padding-left: 44px;
      background-repeat: no-repeat;
      background-position: left center;
      background-size: 32px 32px;
      color: var(--gb-color-growby-mist);
      font-family: var(--gb-font-sans), sans-serif;
      font-size: 14px;
      font-weight: 400;
      line-height: 20px;
      -webkit-font-smoothing: antialiased; /* `antialiased` del body de Board 2; en html::before no se hereda */
      pointer-events: none;
    }
    &::before {
      content: "Gestiona leads y prospectos con inteligencia artificial.";
      top: calc(50% + 18px);
      background-image: url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIzMiIgaGVpZ2h0PSIzMiIgdmlld0JveD0iMCAwIDMyIDMyIj48Y2lyY2xlIGN4PSIxNiIgY3k9IjE2IiByPSIxNiIgZmlsbD0iIzVkNTVkNyIgZmlsbC1vcGFjaXR5PSIuMiIvPjxnIHRyYW5zZm9ybT0idHJhbnNsYXRlKDggOCkgc2NhbGUoLjY2NjY3KSIgZmlsbD0ibm9uZSIgc3Ryb2tlPSIjNWQ1NWQ3IiBzdHJva2Utd2lkdGg9IjIiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCI+PHBhdGggZD0iTTkuOTM3IDE1LjVBMiAyIDAgMCAwIDguNSAxNC4wNjNsLTYuMTM1LTEuNTgyYS41LjUgMCAwIDEgMC0uOTYyTDguNSA5LjkzNkEyIDIgMCAwIDAgOS45MzcgOC41bDEuNTgyLTYuMTM1YS41LjUgMCAwIDEgLjk2MyAwTDE0LjA2MyA4LjVBMiAyIDAgMCAwIDE1LjUgOS45MzdsNi4xMzUgMS41ODFhLjUuNSAwIDAgMSAwIC45NjRMMTUuNSAxNC4wNjNhMiAyIDAgMCAwLTEuNDM3IDEuNDM3bC0xLjU4MiA2LjEzNWEuNS41IDAgMCAxLS45NjMgMHoiLz48cGF0aCBkPSJNMjAgM3Y0Ii8+PHBhdGggZD0iTTIyIDVoLTQiLz48cGF0aCBkPSJNNCAxN3YyIi8+PHBhdGggZD0iTTUgMThIMyIvPjwvZz48L3N2Zz4=");
    }
    & body::before {
      content: "Crea workflows y secuencias de correo en minutos, sin código.";
      top: calc(50% + 70px);
      background-image: url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIzMiIgaGVpZ2h0PSIzMiIgdmlld0JveD0iMCAwIDMyIDMyIj48Y2lyY2xlIGN4PSIxNiIgY3k9IjE2IiByPSIxNiIgZmlsbD0iIzVkNTVkNyIgZmlsbC1vcGFjaXR5PSIuMiIvPjxnIHRyYW5zZm9ybT0idHJhbnNsYXRlKDggOCkgc2NhbGUoLjY2NjY3KSIgZmlsbD0ibm9uZSIgc3Ryb2tlPSIjNWQ1NWQ3IiBzdHJva2Utd2lkdGg9IjIiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCI+PHJlY3Qgd2lkdGg9IjgiIGhlaWdodD0iOCIgeD0iMyIgeT0iMyIgcng9IjIiLz48cGF0aCBkPSJNNyAxMXY0YTIgMiAwIDAgMCAyIDJoNCIvPjxyZWN0IHdpZHRoPSI4IiBoZWlnaHQ9IjgiIHg9IjEzIiB5PSIxMyIgcng9IjIiLz48L2c+PC9zdmc+");
    }
    & #root::before {
      content: "Reportes en tiempo real para decidir mejor sobre tus ventas.";
      top: calc(50% + 122px);
      background-image: url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIzMiIgaGVpZ2h0PSIzMiIgdmlld0JveD0iMCAwIDMyIDMyIj48Y2lyY2xlIGN4PSIxNiIgY3k9IjE2IiByPSIxNiIgZmlsbD0iIzVkNTVkNyIgZmlsbC1vcGFjaXR5PSIuMiIvPjxnIHRyYW5zZm9ybT0idHJhbnNsYXRlKDggOCkgc2NhbGUoLjY2NjY3KSIgZmlsbD0ibm9uZSIgc3Ryb2tlPSIjNWQ1NWQ3IiBzdHJva2Utd2lkdGg9IjIiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCI+PHBhdGggZD0iTTMgM3YxNmEyIDIgMCAwIDAgMiAyaDE2Ii8+PHBhdGggZD0iTTE4IDE3VjkiLz48cGF0aCBkPSJNMTMgMTdWNSIvPjxwYXRoIGQ9Ik04IDE3di0zIi8+PC9nPjwvc3ZnPg==");
    }

    /* El aviso de error se centra sobre el panel del formulario (la mitad derecha). */
    & body > [role="region"] {
      inset-block: 24px auto;
      inset-inline: auto calc(25% - 192px);
      inline-size: 384px;
      margin-inline: 0;
    }
    /* El logotipo vive en el panel de marca. */
    & #root div:has(> div > div > form) > :first-child {
      display: none;
    }
  }

  /* ---- Táctil y pantallas estrechas: áreas de toque de 44 px (Board 2 usa 40) y 16 px en campos (evita el zoom de iOS) ---- */
  @media (max-width: 1023px), (pointer: coarse) {
    & #root form input {
      height: 44px;
    }
    & #root form button[type="submit"] {
      --tw-button-size: 44px;
    }
    & #root form [data-testid="reveal-password-button"] {
      width: 44px;
    }
    /* Cerrar el aviso: caja de 44 px que no engorda la notificación (margen negativo). */
    & body > [role="region"] [role="status"] button {
      --tw-button-size: 44px;
      margin: -12px -8px -12px 0;
    }
    & #root form div:has(> div > [data-testid="reveal-password-button"]) > input {
      padding-right: 44px;
    }
  }
  @media (max-width: 767px) {
    & #root form input {
      font-size: 16px;
    }
  }
}
