/* ═══════════════════════════════════════════════════════════════════════
   AMINO MODE — «Aluminio anodizado bajo luz lineal»
   Mundo visual v11 · 1 de octubre de 2026 · reemplaza al derivado del
   Brand Book v1.0

   LA TESIS

   Esta superficie es una PIEZA MECANIZADA. No un laboratorio y no un
   gimnasio. Rechaza a propósito el arreglo por defecto de la categoría
   —fondo casi negro, acentos de neón que brillan, foto de cuerpo como
   héroe— por dos razones que apuntan al mismo sitio: es exactamente lo
   que produce cualquier generador al que se le pida «péptidos de alto
   rendimiento», y una foto de cuerpo insinúa justo la promesa que la
   regla editorial número uno prohíbe hacer.

   La energía deportiva la lleva la LUZ CRUZANDO METAL, no un cuerpo
   corriendo. Eso resuelve las dos cosas a la vez: da la tensión que pedía
   el encargo y no promete nada sobre nadie.

   EL MATERIAL

   · Fondo de aluminio anodizado, con grano y deriva tonal. Nunca plano.
   · Luz lineal rasante, de canto duro. Sin halo, sin resplandor, sin
     brillo difuso: una franja estrecha que cruza y se corta.
   · Los seis frentes son COLORES DE ANODIZADO sobre superficie real
     —bloques, cantos, campos—, jamás un filete de 1 px que brilla.
   · Esquinas rectas. El detalle de la pieza es la MARCA DE MECANIZADO:
     una escuadra de 2 px en el canto superior izquierdo, como la que
     deja una fresa.
   · Archivo variable en ANCHO para el titular; el titular se ensancha o
     se estrecha para llenar su medida en vez de encoger.
   · Public Sans para leer. Martian Mono SOLO para lo que es medida de
     verdad: miligramos, lote, SKU, grados. En ningún otro sitio.

   LO QUE NO SE TOCA

   El contenido, palabra por palabra. Los seis colores de frente, que
   están impresos en las etiquetas de los viales. El emblema y el
   logotipo, que se incrustan desde el archivo maestro y nunca se dibujan.

   El archivo anterior queda en `estilo-v10-referencia.css`.
   ═══════════════════════════════════════════════════════════════════════ */

/* ───────────────────────────────── 1 · MATERIA ───────────────────────── */
:root{
  /* El aluminio. Cinco niveles, todos con un punto de verde-neutro: el
     anodizado oscuro nunca es gris puro, y un gris puro es lo que delata
     un fondo elegido en un selector de color en vez de mirado. */
  /* v16. Las seis superficies bajan entre 9 y 13 puntos de luminancia.
     Motivo, medido y no opinado: el suelo estaba en #1B1D20 — gris de
     media luz. La categoría a la que esta marca aspira trabaja sobre casi
     negro: Oura usa #000 de lienzo con tarjetas en #0d0d0d y #1a1a1a;
     WHOOP, #000 con #0a0a0a y #141414; Porsche, un lienzo de luminancia
     1,2 %. Sobre un suelo de media luz ningún acento puede ser escaso:
     para destacar necesita saturación y superficie, y ahí es donde una
     página empieza a verse ordinaria.
     Bajar el suelo SUBE el contraste de toda la tinta y de los seis
     colores de frente, que estaban medidos contra --alu-3 y --alu-2: la
     escalera de abajo no pierde un solo umbral, los mejora todos. */
  --alu-0:#0B0D0E;   /* el pozo: fotografía, puerta de entrada           */
  --alu-1:#101214;   /* el suelo de la página                            */
  --alu-2:#16191C;   /* panel                                            */
  --alu-3:#1E2125;   /* panel levantado, estado de reposo de un control  */
  --mill:#2E3338;    /* el canto mecanizado: el filete de 1 px           */
  --mill-soft:#1F2327;

  /* La tinta. Medida contra --alu-2, que es la superficie más clara donde
     cae texto; lo que pasa ahí pasa en todas las demás. */
  --ink:#F3F4F5;     /* 15,1 : titular y dato                            */
  --ink-2:#C9CDD2;   /* 10,0 : el párrafo                                */
  --ink-3:#9BA1A8;   /*  5,9 : subordinado, rótulo, pie                  */

  /* Los seis frentes. `--m` es el color de marca —el del anodizado, el de
     la etiqueta del vial— y se usa en superficie: rellenos y filetes de
     3 px o más. `--m-txt` es el mismo color corregido para leerse COMO
     TEXTO sobre oscuro. La regla no es estética: el violeta de NEURO
     en texto da 2,7 de contraste y es ilegible.

     Medidos contra --alu-3, que es la superficie más clara donde cae
     texto —el reposo de una tarjeta levantada—, los seis pasan de 5,0.
     Tres estaban clavados en 4,50, 4,56 y 4,59: el mínimo exacto, sin
     un punto de margen. Un umbral sin margen no es un umbral; cualquier
     retoque del gris de fondo lo rompía sin que nadie se diera cuenta.
     Se subió sólo la luminosidad y se dejaron el tono y la saturación,
     que es lo que mantiene el color reconocible como el del frente. */
  --sk:#FF5E14;  --sk-txt:#FF8B52;
  --rp:#00E5F5;  --rp-txt:#00E5F5;
  --pf:#0A6BFF;  --pf-txt:#5D9EFF;
  --nr:#6A00FF;  --nr-txt:#B885FF;
  --vt:#2BE08A;  --vt-txt:#2BE08A;
  --dr:#FF2D78;  --dr-txt:#FF6D9E;

  --m:var(--rp);  --m-txt:var(--rp-txt);   /* respaldo; cada bloque declara la suya */

  --ok:#3DDC8C;  --warn:#FFC53D;  --stop:#FF6F7F;  --wa:#25D366;

  /* Las tres caras. Variables las tres: el eje de ancho de Archivo es el
     que hace el trabajo de composición, no un adorno. */
  --display:"Archivo","Archivo Narrow",Helvetica,Arial,sans-serif;
  --text:"Public Sans",-apple-system,"Segoe UI",Helvetica,sans-serif;
  --dato:"Martian Mono",ui-monospace,"SF Mono",Menlo,monospace;

  --wrap:1200px;
  --gut:clamp(20px,3.4vw,40px);
  --esc:clamp(56px,7.2vw,116px);    /* el aire entre secciones */

  /* ── Las curvas y los tiempos ────────────────────────────────────────
     La curva salía escrita a mano ocho veces en la hoja. Ahora es un
     token: si algún día el movimiento del sitio cambia de carácter,
     cambia aquí y cambia entero.

     `--ease-out` arranca rápido y frena al final. Es la correcta para
     todo lo que entra, sale o se mueve: el usuario mira justo el primer
     instante, y una curva que empieza lenta hace que una animación de
     200 ms se sienta más lenta que otra de 200 ms bien curvada.

     Los tiempos salen del presupuesto por elemento: nada de interfaz
     pasa de 300 ms. Por encima de ahí deja de leerse como respuesta y
     empieza a leerse como espera. */
  --ease-out:cubic-bezier(.16,1,.3,1);
  --t-toque:.16s;    /* la respuesta al dedo o al clic */
  --t-estado:.2s;    /* color, borde, fondo            */
  --t-mover:.24s;    /* lo que se desplaza o escala    */
}

/* El grano del anodizado. Una capa de ruido fija, al 3,5 %: sin ella el
   fondo es una tinta plana y la página deja de ser una superficie para
   ser un color. Va en el <html> y no en el <body> para que no se mueva
   con el desplazamiento ni genere una capa de composición por sección. */
/* El suelo va en <html> como color MACIZO, y el material en <body>.
   Nada de `background-attachment:fixed`: un fondo fijo se dimensiona contra
   la ventana, de modo que todo lo que queda por debajo del pliegue se pinta
   sobre el lienzo en blanco del navegador. Se vio en la primera captura de
   página completa —media portada en blanco con el texto gris encima— y es
   el mismo defecto que en iOS deja bandas al desplazar. */
html{
  scroll-behavior:smooth;background:var(--alu-1);
  /* Las cinco de la rúbrica de interfaz de Vercel que faltaban, y las cinco
     se notan en un teléfono:
     · color-scheme pinta los controles y las barras nativas en oscuro; sin
       ella un <select> o la barra de desplazamiento salen en claro sobre
       una página oscura.
     · touch-action quita el retardo de 300 ms que el navegador reserva por
       si el toque era un doble toque para acercar.
     · tap-highlight quita el rectángulo azul del sistema, que aquí no
       pertenece a ninguna paleta; el foco visible lo sustituye. */
  color-scheme:dark;
}
*{touch-action:manipulation;-webkit-tap-highlight-color:transparent}
*{box-sizing:border-box}
body{
  margin:0;color:var(--ink-2);
  /* El grano del anodizado, al 3,5 %: sin él el fondo es una tinta plana y
     la página deja de ser una superficie para ser un color. Encima, la luz
     que cae de arriba, resuelta en los primeros 900 px y plana a partir de
     ahí — una página de 12.000 px no necesita un degradado de 12.000 px. */
  background-color:var(--alu-1);
  background-image:
    url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='180' height='180'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.86' numOctaves='3' stitchTiles='stitch'/%3E%3CfeColorMatrix type='saturate' values='0'/%3E%3C/filter%3E%3Crect width='180' height='180' filter='url(%23n)' opacity='.26'/%3E%3C/svg%3E"),
    linear-gradient(176deg,#191C1F 0px,var(--alu-1) 820px,var(--alu-1) 100%);
  background-repeat:repeat,no-repeat;
  font-family:var(--text);font-size:16.5px;line-height:1.7;
  font-variant-numeric:tabular-nums;
  -webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;
}
img{max-width:100%;height:auto;display:block}
/* Red de seguridad, y está aquí por un defecto real. Al declarar
   width/height en el logotipo —que hacía falta para que el navegador
   reserve el hueco y no salte la maquetación— el atributo `width` pasó a
   contar como ancho, y cualquier regla que fijara SÓLO la altura dejaba
   el ancho en 1000 px recortado por `max-width:100%`: el logotipo del pie
   salió aplastado en las 30 vistas de móvil.

   Esta regla devuelve el ancho a «dedúcelo de la altura». Su especificidad
   es de UN selector de tipo más un atributo, así que cualquier regla de
   clase que sí quiera fijar el ancho —la foto de portada, las de los
   frentes, los viales— la gana sin esfuerzo y sin trucos de cascada. */
img[width][height]{width:auto}
a{color:inherit;text-decoration:none}

/* ── Las superficies que no dibujé yo ──────────────────────────────────
   Selección, cursor, barra de desplazamiento, anillo de foco y la
   distancia del subrayado vienen del navegador y no pertenecen a ningún
   sistema de diseño. Vestirlas es la señal más barata de que una página
   se construyó en vez de ensamblarse, y es la que más se olvida. */
::selection{background:var(--rp);color:#07121B}
html{caret-color:var(--rp);scrollbar-color:var(--mill) var(--alu-1);scrollbar-width:thin}
::-webkit-scrollbar{width:11px;height:11px}
::-webkit-scrollbar-track{background:var(--alu-1)}
::-webkit-scrollbar-thumb{background:var(--mill);border:3px solid var(--alu-1)}
::-webkit-scrollbar-thumb:hover{background:#4D535B}
:focus-visible{outline:2px solid var(--rp);outline-offset:3px}
/* Menos movimiento no es apagar la interfaz.
   La versión anterior ponía `transition:none` en todo, y con eso se iban
   también los cambios de color y de borde — que no son movimiento: son lo
   que le dice a quien toca un botón que el botón se enteró. Quien activa
   esta preferencia quiere que las cosas dejen de desplazarse, no quedarse
   sin respuesta.

   Así que aquí se corta lo que viaja —desplazamientos, escalas, el barrido
   de la portada— y se deja el color, el borde y la opacidad, acortados. */
@media (prefers-reduced-motion:reduce){
  *,*::before,*::after{
    animation-duration:.01ms!important;animation-iteration-count:1!important;
    transition-duration:.1s!important;scroll-behavior:auto!important;
  }
  .wa-float:hover,.mode-card:hover,.frente:hover,.prod:hover,.cruce:hover,
  .tema-card:hover,.ayuda-frente:hover,.ayuda-tema:hover,a.card:hover,
  .frente:hover figure img,.fiducial:hover::before,.prod:hover::before,
  .btn:active,.nav-toggle:active,.filters button:active,.quitar:active,
  .add:active,.frente:active,.prod:active,.cruce:active,.tema-card:active,
  .mode-card:active,.ayuda-frente:active,a.card:active{transform:none!important}
  .btn:hover::after{transform:translateX(-160%)!important}
}

/* ── La luz lineal rasante ─────────────────────────────────────────────
   El gesto del mundo. Una franja estrecha de canto DURO que cruza en
   diagonal, más una segunda más tenue por detrás. Los cortes son netos
   —0 % de difuminado en los bordes— porque un canto difuso es un
   resplandor, y el resplandor es justo el recurso que esta dirección
   rechaza. Se aplica como fondo, nunca como sombra. */
.luz{position:relative;overflow:hidden;isolation:isolate}
.luz::before{
  content:"";position:absolute;inset:-20% -30%;z-index:0;pointer-events:none;
  background:linear-gradient(104deg,
    transparent 0 30%,
    rgba(255,255,255,.030) 30% 30.9%,
    transparent 30.9% 52%,
    rgba(255,255,255,.055) 52% 52.7%,
    transparent 52.7% 100%);
}
.luz > *{position:relative;z-index:1}

/* ───────────────────────────── 2 · ESTRUCTURA ───────────────────────── */
.wrap{max-width:var(--wrap);margin:0 auto;padding-inline:var(--gut)}
section{padding-block:var(--esc)}
section.tight{padding-block:clamp(38px,4.4vw,62px)}
section + section{padding-top:clamp(38px,4vw,60px)}
.sec-line{border-top:1px solid var(--mill-soft);padding-top:clamp(44px,5vw,72px)}

/* La cejilla sobre el titular se retira del mundo: el titular lleva su
   propio peso y la etiqueta encima sólo lo retrasa. Sobrevive un uso, el
   rótulo al margen de las páginas de tema en pantalla ancha, que no es
   una cejilla sino una nota marginal — está al LADO, no encima. */
.eyebrow{display:none}

h1,h2,h3,h4{font-family:var(--display);margin:0;text-wrap:balance;color:var(--ink)}
h1{
  font-size:clamp(37px,6.6vw,80px);line-height:.95;letter-spacing:-.035em;
  font-variation-settings:'wght' 800,'wdth' 108;
  margin:0 0 24px;
}
h2{
  font-size:clamp(27px,3.7vw,46px);line-height:1.02;letter-spacing:-.028em;
  font-variation-settings:'wght' 760,'wdth' 104;
  margin:0 0 18px;
}
h3{
  font-size:clamp(18px,1.6vw,21px);line-height:1.22;letter-spacing:-.012em;
  font-variation-settings:'wght' 700,'wdth' 100;
  margin:0 0 10px;
}
p{margin:0 0 17px;max-width:66ch;color:var(--ink-2)}
.lede{font-size:clamp(17px,1.4vw,19.5px);line-height:1.6;max-width:58ch;color:var(--ink)}
h2 + .lede{margin-top:-4px}
strong,b{color:var(--ink);font-weight:650}
ul,ol{margin:0 0 17px;padding-left:20px;max-width:66ch;color:var(--ink-2)}
li{margin-bottom:8px}
li::marker{color:var(--mill)}
.small{font-size:13.5px;line-height:1.62;color:var(--ink-3)}
em{font-style:normal}
a.in-texto,.legal a,.am-firma a,.gate-check a{
  text-decoration:underline;text-decoration-thickness:1px;text-underline-offset:4px;
  text-decoration-color:var(--mill);
}
a.in-texto:hover,.legal a:hover{text-decoration-color:currentColor}

/* El dato. Martian Mono vive aquí y en ningún otro sitio del archivo:
   miligramos, lote, SKU, temperatura, precio. Esa es la regla. */
.mono,.dato{font-family:var(--dato);font-variation-settings:'wght' 400;letter-spacing:-.02em}

/* La marca de mecanizado. Una escuadra en el canto superior izquierdo,
   del color del frente, como la que deja una fresa al entrar. Es el
   detalle que ata todas las piezas sin recurrir a un filete de color. */
.fiducial{position:relative}
.fiducial::before{
  content:"";position:absolute;left:8px;top:8px;width:13px;height:13px;z-index:2;
  border-top:2px solid var(--m-txt);border-left:2px solid var(--m-txt);
  transform-origin:top left;transition:transform .22s var(--ease-out);
}
.fiducial:hover::before{transform:scale(1.7)}

/* ─────────────────────────── 3 · NAVEGACIÓN ─────────────────────────── */
.nav{
  position:sticky;top:0;z-index:50;
  background:rgba(22,24,27,.96);border-bottom:1px solid var(--mill-soft);
}
@supports (backdrop-filter:blur(1px)){
  .nav{background:rgba(22,24,27,.82);backdrop-filter:blur(18px) saturate(1.25)}
}
.nav-in{
  display:flex;align-items:center;gap:30px;height:66px;
  max-width:var(--wrap);margin:0 auto;
  padding-left:max(var(--gut),env(safe-area-inset-left));
  padding-right:max(var(--gut),env(safe-area-inset-right));
}
.nav-logo img{height:25px;width:auto}
.nav-links{display:flex;gap:26px;margin-left:auto;align-items:center}
.nav-links a{
  font-family:var(--display);font-size:11.5px;letter-spacing:.14em;text-transform:uppercase;
  font-variation-settings:'wght' 620,'wdth' 92;
  color:var(--ink-3);padding:7px 0;position:relative;transition:color .16s;
}
.nav-links a::after{
  content:"";position:absolute;left:0;right:0;bottom:0;height:2px;
  background:var(--rp);transform:scaleX(0);transform-origin:left;
  transition:transform .22s var(--ease-out);
}
.nav-links a:hover{color:var(--ink)}
.nav-links a:hover::after,.nav-links a[aria-current="page"]::after{transform:scaleX(1)}
.nav-links a[aria-current="page"]{color:var(--ink)}
.nav-toggle{
  display:none;margin-left:auto;background:var(--alu-2);border:1px solid var(--mill);
  color:var(--ink);font-family:var(--display);font-size:11px;letter-spacing:.14em;
  font-variation-settings:'wght' 620,'wdth' 92;
  padding:10px 14px;cursor:pointer;text-transform:uppercase;min-height:40px;
}
@media (max-width:900px){
  .nav-toggle{display:block}
  /* El menú baja desde el canto superior, que es donde está el botón que
     lo abre: un panel que aparece de golpe no dice de dónde vino, y uno
     que viene del centro de la pantalla miente sobre su origen.

     Entra en 200 ms y sale en 150: abrirlo es una decisión del usuario y
     merece verse; cerrarlo es el sistema respondiendo y debe quitarse de
     en medio. Va con transición y no con fotogramas, así que si se toca
     el botón dos veces seguidas el panel se devuelve desde donde esté en
     lugar de reiniciar.

     `allow-discrete` y `@starting-style` son lo que permite animar algo
     que entra y sale de `display:none`. Donde el navegador no los
     entienda, el menú sigue abriendo y cerrando — sin más, como antes. */
  .nav-links{
    display:none;position:absolute;top:66px;left:0;right:0;flex-direction:column;gap:0;
    background:var(--alu-2);border-bottom:1px solid var(--mill);
    padding:6px var(--gut) 16px;margin-left:0;align-items:stretch;
    opacity:0;transform:translateY(-10px);
    transition:opacity .15s var(--ease-out),transform .15s var(--ease-out),
               display .15s allow-discrete;
  }
  .nav-links.open{
    display:flex;opacity:1;transform:translateY(0);
    transition:opacity var(--t-estado) var(--ease-out),
               transform var(--t-estado) var(--ease-out),
               display var(--t-estado) allow-discrete;
  }
  @starting-style{
    .nav-links.open{opacity:0;transform:translateY(-10px)}
  }
  .nav-links a{padding:14px 0;border-bottom:1px solid var(--mill-soft);min-height:48px;display:flex;align-items:center}
  .nav-links a::after{bottom:-1px}
}

/* v16. La barra de seis colores.

   Era seis colores a plena saturación, 3 px, a todo el ancho, en TODAS
   las páginas. Es el elemento que más dice «ordinaria» de toda la web, y
   por un motivo que no es de gusto: un espectro completo no comunica
   nada. Si los seis frentes están siempre presentes y siempre iguales, la
   barra no dice dónde estás, no dice qué estás mirando y no jerarquiza —
   sólo decora, y decora a la máxima intensidad disponible.

   La arquitectura de seis frentes no se toca: es la marca. Lo que cambia
   es DÓNDE se enseña entera. Entera, a tope, se queda en la puerta de
   entrada —la verja— que es el único sitio donde su trabajo es presentar
   el sistema completo de una vez.

   En la navegación pasa a ser un filete neutro. Cuando la página SÍ
   pertenece a un frente, el <body> lleva su clase y el filete se tiñe de
   ese frente: ahí el color por fin dice algo, que es dónde estás. */
.pillbar{
  height:2px;
  background:var(--mill-soft);
}
/* La página de un frente tiñe su propio filete. --m la fija cada página
   en su <body>; donde no hay frente, no hay color. */
[style*="--m:"] .pillbar,
.pillbar[data-frente]{background:var(--m)}

.saltar{
  position:absolute;left:-9999px;top:0;z-index:100;background:var(--ink);color:var(--alu-0);
  font-family:var(--display);font-size:11.5px;letter-spacing:.14em;text-transform:uppercase;
  font-variation-settings:'wght' 700,'wdth' 95;padding:13px 20px;
}
.saltar:focus{left:0}

/* ────────────────────────────── 4 · BOTONES ─────────────────────────── */
/* En Archivo ancho, no en mono. El mono de un botón es disfraz: un botón
   no es una medida. */
.btn{
  display:inline-flex;align-items:center;justify-content:center;gap:10px;
  font-family:var(--display);font-size:12px;letter-spacing:.14em;text-transform:uppercase;
  font-variation-settings:'wght' 680,'wdth' 96;
  padding:14px 24px;min-height:46px;border:1px solid var(--mill);
  color:var(--ink);background:var(--alu-2);cursor:pointer;position:relative;overflow:hidden;
  transition:border-color .16s,color .16s,background .16s;
}
/* La luz que cruza: el mismo gesto del mundo, a escala de control. */
.btn::after{
  content:"";position:absolute;top:-60%;bottom:-60%;left:-30%;width:28%;
  background:linear-gradient(104deg,transparent,rgba(255,255,255,.14),transparent);
  transform:translateX(-160%);transition:transform .26s var(--ease-out);
}
.btn:hover::after{transform:translateX(560%)}
.btn:hover{border-color:var(--m-txt,var(--rp));color:var(--m-txt,var(--rp));background:var(--alu-3)}
.btn.solid{
  /* `background-color` ADEMÁS del degradado, no en vez de él. Un degradado
     deja el color de fondo calculado en «transparent»: si el degradado no
     llega a pintarse —modo de contraste forzado, impresión, una extensión
     que bloquea imágenes— el texto oscuro de este botón se queda sobre el
     fondo oscuro de la página y desaparece. Setenta nodos lo marcaron en la
     medición de contraste y los setenta eran el mismo botón. */
  background-color:#E0E3E7;
  background-image:linear-gradient(177deg,#F6F7F8 0%,#DADDE1 52%,#C8CCD1 100%);
  color:#15181B;border-color:#DADDE1;font-variation-settings:'wght' 740,'wdth' 96;
}
.btn.solid:hover{
  background-color:#F1F3F5;
  background-image:linear-gradient(177deg,#FFFFFF,#E6E9ED);
  color:#15181B;border-color:#FFF;
}
.btn.ghost{background:transparent;color:var(--ink-3);border-color:var(--mill-soft)}
.btn.ghost:hover{color:var(--ink);border-color:var(--mill)}
.btn.mini{padding:9px 15px;font-size:11px;min-height:38px}
.btn[disabled]{opacity:.36;pointer-events:none}
.btn-row{display:flex;flex-wrap:wrap;gap:12px;margin-top:30px}
.btn-row .btn{width:max-content;justify-self:start}
.cta-row{display:flex;flex-wrap:wrap;gap:12px}

/* v16. El botón de WhatsApp. En su versión `solid` era un rectángulo de
   #25D366 macizo: el objeto más saturado y más claro de la portada, por
   encima del titular y de la fotografía del producto. Un verde de
   mensajería no es un color de esta marca, y como primer acento de la
   página estaba diciendo que lo importante era el canal y no el catálogo.
   Se conserva el verde donde identifica —el glifo, el filete— y el
   relleno pasa a la escalera de superficies. El botón sigue siendo el
   control más visible del bloque porque es el único con filete de color. */
.btn.wa{border-color:rgba(37,211,102,.38);color:var(--ink);background:var(--alu-2)}
.btn.wa svg{color:var(--wa)}
.btn.wa:hover{background:var(--alu-3);border-color:var(--wa)}
.btn.wa.solid{background:var(--alu-2);color:var(--ink);
  border-color:rgba(37,211,102,.55);font-variation-settings:'wght' 660,'wdth' 96}
.btn.wa.solid:hover{background:var(--alu-3);border-color:var(--wa)}
.btn.add.puesto{border-color:var(--ok);color:var(--ok)}

.wa-float{
  position:fixed;right:max(18px,env(safe-area-inset-right));
  bottom:max(18px,env(safe-area-inset-bottom));z-index:80;display:flex;align-items:center;gap:10px;
  /* v16. Era un bloque de verde #25D366 fijo en la esquina: un color que
     no pertenece a este sistema, a plena saturación, visible en todo
     momento y en todas las páginas. El botón no deja de reconocerse por
     quitarle el relleno —lo que lo identifica es el glifo, no el fondo—,
     así que el verde se queda sólo en el icono y en el filete, y el
     relleno pasa a ser una superficie de la página. */
  background:var(--alu-2);color:var(--ink);
  border:1px solid rgba(37,211,102,.42);
  padding:13px 19px 13px 16px;
  font-family:var(--display);font-size:11.5px;letter-spacing:.12em;text-transform:uppercase;
  font-variation-settings:'wght' 640,'wdth' 94;
  box-shadow:0 10px 30px -6px rgba(0,0,0,.6),0 2px 6px rgba(0,0,0,.4);
  transition:transform .18s var(--ease-out),background .18s,border-color .18s;
}
.wa-float svg{color:var(--wa)}
.wa-float:hover{transform:translateY(-3px);background:var(--alu-3);border-color:var(--wa)}
.wa-float svg{flex:none}

/* ─────────────────── 5 · PANELES, REJILLAS Y TARJETAS ───────────────── */
/* Esquinas rectas en todo. El radio pertenecía al mundo anterior. */
.grid{display:grid;gap:16px}
.g2{grid-template-columns:repeat(auto-fit,minmax(262px,1fr))}
.g3{grid-template-columns:repeat(auto-fit,minmax(222px,1fr))}
.g4{grid-template-columns:repeat(auto-fit,minmax(192px,1fr))}
.g5,.g6{grid-template-columns:repeat(3,1fr);gap:16px}
@media (max-width:900px){.g5,.g6{grid-template-columns:repeat(2,1fr)}}
@media (max-width:560px){.g5,.g6{grid-template-columns:1fr}}
/* cinco o seis piezas leen mejor en 3x2 que en 4+2 huérfano */
.grid.g2:has(> :nth-child(5)),.grid.g3:has(> :nth-child(5)),.grid.g4:has(> :nth-child(5)){
  grid-template-columns:repeat(3,1fr)}
@media (max-width:820px){
  .grid.g2:has(> :nth-child(5)),.grid.g3:has(> :nth-child(5)),.grid.g4:has(> :nth-child(5)){
    grid-template-columns:repeat(2,1fr)}}
@media (max-width:520px){
  .grid.g2:has(> :nth-child(5)),.grid.g3:has(> :nth-child(5)),.grid.g4:has(> :nth-child(5)){
    grid-template-columns:1fr}}

.card{background:var(--alu-2);border:1px solid var(--mill-soft);padding:26px 24px;position:relative}
.card h3{font-size:17.5px;margin-bottom:9px}
.card p{font-size:14px;margin:0;color:var(--ink-3)}
.card .k{
  display:block;font-family:var(--display);font-size:11px;letter-spacing:.2em;text-transform:uppercase;
  font-variation-settings:'wght' 640,'wdth' 88;color:var(--ink-3);margin-bottom:14px;
}
.card .k::before{content:"";display:inline-block;width:14px;height:2px;background:var(--m-txt);
  margin-right:9px;vertical-align:middle}

.mode-card{
  display:block;background:var(--alu-2);border:1px solid var(--mill-soft);
  padding:28px 24px 26px;transition:border-color .18s,background .18s,transform var(--t-mover) var(--ease-out);
}
.mode-card:hover{transform:translateY(-3px);background:var(--alu-3)}
.mode-card .bar{height:4px;width:52px;margin-bottom:22px}
.mode-card h3{
  font-size:clamp(16px,1.6vw,19px);letter-spacing:.02em;text-transform:uppercase;
  font-variation-settings:'wght' 800,'wdth' 112;
}
.mode-card .sub{
  font-family:var(--display);font-size:11.5px;letter-spacing:.05em;text-transform:uppercase;
  font-variation-settings:'wght' 600,'wdth' 90;color:var(--ink-3);margin-bottom:14px;
}
.mode-card p{font-size:14px}
.m-sk .bar{background:var(--sk)} .m-sk:hover{border-color:var(--sk-txt)} .m-sk h3{color:var(--sk-txt)}
.m-rp .bar{background:var(--rp)} .m-rp:hover{border-color:var(--rp-txt)} .m-rp h3{color:var(--rp-txt)}
.m-pf .bar{background:var(--pf)} .m-pf:hover{border-color:var(--pf-txt)} .m-pf h3{color:var(--pf-txt)}
.m-nr .bar{background:var(--nr)} .m-nr:hover{border-color:var(--nr-txt)} .m-nr h3{color:var(--nr-txt)}
.m-vt .bar{background:var(--vt)} .m-vt:hover{border-color:var(--vt-txt)} .m-vt h3{color:var(--vt-txt)}
.m-dr .bar{background:var(--dr)} .m-dr:hover{border-color:var(--dr-txt)} .m-dr h3{color:var(--dr-txt)}
/* los alias antiguos de clase que todavía emite algún generador */
.m-cl .bar{background:var(--rp)} .m-cl h3{color:var(--rp-txt)}
.m-ex .bar{background:var(--nr)} .m-ex h3{color:var(--nr-txt)}
.m-fn .bar{background:var(--ink-3)} .m-fn h3{color:var(--ink-3)}

/* ──────────────────────── 6 · TABLAS Y FICHAS DE DATO ───────────────── */
.scroller{overflow-x:auto}
.scroller table{min-width:620px}
table{width:100%;border-collapse:collapse;font-size:14px}
th{
  text-align:left;font-family:var(--display);font-size:11px;letter-spacing:.17em;text-transform:uppercase;
  font-variation-settings:'wght' 640,'wdth' 88;color:var(--ink-3);font-weight:400;
  padding:12px 16px 12px 0;border-bottom:1px solid var(--mill);
}
td{padding:14px 16px 14px 0;border-bottom:1px solid var(--mill-soft);color:var(--ink-2);vertical-align:top}
td:first-child{color:var(--ink)}

.spec{display:grid;grid-template-columns:168px 1fr;border-top:1px solid var(--mill)}
.spec dt{
  font-family:var(--display);font-size:11px;letter-spacing:.16em;text-transform:uppercase;
  font-variation-settings:'wght' 640,'wdth' 88;color:var(--ink-3);
  padding:14px 0;border-bottom:1px solid var(--mill-soft);
}
.spec dd{
  margin:0;padding:14px 0;border-bottom:1px solid var(--mill-soft);color:var(--ink);
  font-family:var(--dato);font-size:13px;letter-spacing:-.02em;
}
@media (max-width:560px){.spec{grid-template-columns:1fr}.spec dt{padding-bottom:2px;border-bottom:0}}

/* ───────────────────────────── 7 · AVISOS ───────────────────────────── */
/* Sin filete de color de 2 px al costado: ese es el recurso por defecto.
   El aviso se distingue por SUPERFICIE —un escalón de material— y por una
   banda superior de 3 px, que es canto, no línea decorativa. */
.note{
  background:var(--alu-2);border:1px solid var(--mill-soft);
  padding:20px 24px;font-size:14.5px;color:var(--ink-2);margin:26px 0;max-width:78ch;
}
.note p{max-width:none;margin-bottom:0}
.note.warn{border-color:#4A3C14;background:#221C0C;color:#EBDCB4}
.note.stop{border-color:#53242B;background:#231316;color:#F0CCD1}
.ojo{background:#221C0C;border:1px solid #4A3C14;padding:18px 22px;margin-top:22px}
.ojo b{
  display:block;font-family:var(--display);font-size:11px;letter-spacing:.18em;text-transform:uppercase;
  font-variation-settings:'wght' 680,'wdth' 88;color:var(--warn);margin-bottom:7px;
}
.ojo p{margin:0;color:var(--ink);font-size:14.5px;line-height:1.65;max-width:none}
.porque-este{margin:24px 0 0;padding:18px 20px;background:var(--alu-1);
  border:1px solid var(--mill-soft);font-size:13.5px;line-height:1.65;color:var(--ink-2)}

/* ──────────────────────────── 8 · PORTADA ───────────────────────────── */
.hero2{
  position:relative;border-bottom:1px solid var(--mill-soft);overflow:hidden;isolation:isolate;
  background-color:var(--alu-1);
  background-image:
    linear-gradient(104deg,
      transparent 0 26%, rgba(255,255,255,.028) 26% 27.1%,
      transparent 27.1% 58%, rgba(255,255,255,.05) 58% 58.8%,
      transparent 58.8% 100%),
    linear-gradient(168deg,#262A2E 0%,var(--alu-1) 54%,#17191C 100%);
}
/* El único momento autorizado del sitio: la luz entra una vez y se queda.
   No hay animación de entrada en ninguna otra sección. */
@media (prefers-reduced-motion:no-preference){
  .hero2{animation:barrido 1.1s var(--ease-out) both}
}
@keyframes barrido{from{background-position:-62vw 0,0 0}to{background-position:0 0,0 0}}
.hero2-in{max-width:var(--wrap);margin:0 auto;padding:clamp(52px,6.4vw,84px) var(--gut) 0;position:relative;z-index:1}
.hero2 .logo-hero{width:min(430px,76vw);margin:0 auto 34px}
.hero2 h1{max-width:14ch;margin-inline:auto;text-align:center}
.hero2 p{margin-inline:auto;text-align:center;max-width:60ch}
.hero2 .btn-row{justify-content:center}
.hero2-photo{
  margin-top:clamp(40px,5vw,58px);position:relative;border-top:1px solid var(--mill-soft);
  height:clamp(280px,42vw,470px);overflow:hidden;background:var(--alu-0);
}
.hero2-photo img{width:100%;height:100%;object-fit:cover;object-position:50% 28%;
  filter:contrast(1.06) saturate(.92)}
.hero2-photo::after{
  content:"";position:absolute;inset:0;
  background:linear-gradient(to bottom,rgba(18,20,22,.5) 0%,transparent 32%,rgba(18,20,22,.95) 100%);
}
.hero2-photo .cap{
  position:absolute;left:0;right:0;bottom:26px;z-index:2;text-align:center;
  font-family:var(--display);font-size:11px;letter-spacing:.24em;text-transform:uppercase;
  font-variation-settings:'wght' 600,'wdth' 90;color:var(--ink-3);
}

/* El arte del logo trae fondo negro sólido: en modo screen el negro
   desaparece y queda sólo el cromado. */
.hero2 .logo-hero,.closer img,.dist .emb,.nav-logo img,.foot-brand img,.gate-logo{
  mix-blend-mode:screen}

/* ── la franja de los seis frentes ── */
.metrics{border-bottom:1px solid var(--mill-soft);background:var(--alu-2);padding-block:12px}
.metrics-in{
  max-width:var(--wrap);margin:0 auto;padding-inline:var(--gut);
  display:grid;grid-template-columns:repeat(6,1fr);
}
.metric{padding:30px 16px;border-left:1px solid var(--mill-soft);transition:background .18s}
.metric:first-child{border-left:0}
a.metric:hover{background:var(--alu-3)}
.metric b{
  display:block;font-family:var(--display);font-size:clamp(14px,1.4vw,19px);
  text-transform:uppercase;letter-spacing:.03em;line-height:1;margin-bottom:9px;
  font-variation-settings:'wght' 800,'wdth' 115;color:var(--ink);
}
.metric span{
  font-family:var(--display);font-size:11px;letter-spacing:.05em;
  font-variation-settings:'wght' 580,'wdth' 88;color:var(--ink-3);line-height:1.55;
}
@media (max-width:1100px){.metrics-in{grid-template-columns:repeat(3,1fr)}
  .metric:nth-child(3n+1){border-left:0}
  .metric:nth-child(n+4){border-top:1px solid var(--mill-soft)}}
@media (max-width:640px){.metrics-in{grid-template-columns:repeat(2,1fr)}
  .metric{border-left:1px solid var(--mill-soft);padding:24px 14px}
  .metric:nth-child(odd){border-left:0}
  .metric:nth-child(n+3){border-top:1px solid var(--mill-soft)}}

/* ── los seis frentes con fotografía ── */
.frentes{display:grid;grid-template-columns:repeat(3,1fr);gap:clamp(14px,1.6vw,20px);
  margin-top:clamp(28px,3vw,44px)}
.frente{
  display:flex;flex-direction:column;background:var(--alu-2);
  border:1px solid var(--mill-soft);overflow:hidden;position:relative;
  transition:border-color .2s,background .2s,transform var(--t-mover) var(--ease-out);
}
.frente:hover{border-color:var(--m-txt);background:var(--alu-3);transform:translateY(-3px)}
.frente figure{margin:0;position:relative;aspect-ratio:1/1;overflow:hidden;background:var(--alu-0)}
.frente{position:relative}
.frente figure img{width:100%;height:100%;object-fit:cover;filter:contrast(1.05) saturate(.95);
  transition:transform .24s var(--ease-out)}
.frente:hover figure img{transform:scale(1.04)}
.frente figure::after{content:"";position:absolute;inset:auto 0 0 0;height:48%;
  background:linear-gradient(to bottom,transparent,var(--alu-2))}
/* El código de dos letras, macizo, sobre el canto inferior de la foto:
   el mismo que va impreso en la etiqueta del vial. Reemplaza al filete de
   color que había aquí — el filete al canto es el tic más reconocible de
   una interfaz generada, y pintar el color en una línea contradecía la
   dirección, que pide el color sobre superficie. */
.frente{--cod-b:0}
.frente-cod{
  position:absolute;left:0;top:0;z-index:3;
  background:var(--m);color:var(--m-cap,#0E1013);
  font-family:var(--display);font-size:15px;letter-spacing:.06em;
  font-variation-settings:'wght' 800,'wdth' 115;
  padding:7px 13px 5px;line-height:1;
}
.frente-txt{padding:22px 24px 26px;display:flex;flex-direction:column;flex:1}
.frente-txt h3{
  color:var(--m-txt);margin:0 0 9px;text-transform:uppercase;letter-spacing:.03em;
  font-variation-settings:'wght' 800,'wdth' 114;font-size:clamp(19px,1.8vw,23px);
}
.frente-txt .sub{
  font-family:var(--display);font-size:11px;letter-spacing:.05em;
  font-variation-settings:'wght' 580,'wdth' 88;color:var(--ink-3);margin-bottom:13px;line-height:1.7;
}
.frente-txt p{font-size:14.5px;line-height:1.62;color:var(--ink-2);margin:0;max-width:40ch;flex:1}
.frente-ir{
  margin-top:18px;font-family:var(--display);font-size:11px;letter-spacing:.17em;
  text-transform:uppercase;font-variation-settings:'wght' 620,'wdth' 90;
  color:var(--ink-3);transition:color .2s;
}
.frente-ir::after{content:" →"}
.frente:hover .frente-ir{color:var(--m-txt)}
@media (max-width:980px){.frentes{grid-template-columns:repeat(2,1fr)}}
@media (max-width:620px){.frentes{grid-template-columns:1fr}
  .frente figure{aspect-ratio:4/3}
  .frente figure img{object-position:50% 22%}}

/* ── proceso de cuatro pasos ── */
.steps{display:grid;grid-template-columns:repeat(4,1fr);border:1px solid var(--mill-soft);
  margin-top:38px;background:var(--alu-2)}
.step{padding:28px 24px 30px;border-left:1px solid var(--mill-soft);position:relative}
.step:first-child{border-left:0}
.step .n{
  display:block;font-family:var(--dato);font-size:11px;letter-spacing:.1em;
  color:var(--ink-3);margin-bottom:18px;
}
.step h3{font-size:16.5px;margin-bottom:9px}
.step p{font-size:13.5px;color:var(--ink-3);margin:0}
.step::before{content:"";position:absolute;top:-1px;left:-1px;width:38px;height:3px;background:var(--rp)}
@media (max-width:820px){.steps{grid-template-columns:1fr 1fr}
  .step:nth-child(3){border-left:0}.step:nth-child(n+3){border-top:1px solid var(--mill-soft)}}
@media (max-width:480px){.steps{grid-template-columns:1fr}
  .step{border-left:0;border-top:1px solid var(--mill-soft)}.step:first-child{border-top:0}}

/* ── acordeón ── */
.acc-lista{margin-top:clamp(26px,3vw,38px)}
details.acc{border-bottom:1px solid var(--mill-soft)}
details.acc summary{
  cursor:pointer;list-style:none;padding:22px 0;display:flex;align-items:center;gap:18px;
  font-family:var(--display);font-size:clamp(17px,1.6vw,19px);color:var(--ink);
  font-variation-settings:'wght' 700,'wdth' 100;min-height:48px;
}
details.acc summary::-webkit-details-marker{display:none}
details.acc summary::after{
  content:"";margin-left:auto;flex:none;width:13px;height:13px;
  border-right:2px solid var(--ink-3);border-bottom:2px solid var(--ink-3);
  transform:rotate(45deg) translate(-3px,-3px);transition:transform .25s var(--ease-out);
}
details.acc[open] summary::after{transform:rotate(-135deg) translate(-3px,-3px);border-color:var(--ink)}
details.acc .in{padding:0 0 26px;max-width:66ch}
details.acc .in p:last-child{margin-bottom:0}

/* ── la banda de gente ── */
.people{position:relative;border-block:1px solid var(--mill-soft);overflow:hidden;background:var(--alu-1)}
.people-grid{display:grid;grid-template-columns:1.1fr .9fr;min-height:520px}
.people-photo{position:relative;overflow:hidden}
.people-photo img{width:100%;height:100%;object-fit:cover;object-position:56% 24%;min-height:520px;
  filter:contrast(1.05) saturate(.93)}
.people-photo::after{
  content:"";position:absolute;inset:0;
  background:
    linear-gradient(90deg,transparent 56%,rgba(27,29,32,.36) 84%,var(--alu-1) 100%),
    linear-gradient(to top,rgba(18,20,22,.55),transparent 42%);
}
.people-copy{padding:clamp(48px,6vw,76px) clamp(28px,3.6vw,52px);display:flex;flex-direction:column;
  justify-content:center}
.people-copy h2{margin-bottom:20px}
.people-copy .who{
  font-family:var(--text);font-size:14px;line-height:1.6;letter-spacing:.02em;
  font-variation-settings:'wght' 620,'wdth' 90;color:var(--rp-txt);
  margin-top:28px;padding-top:20px;border-top:1px solid var(--mill-soft);
}
@media (max-width:880px){
  .people-grid{grid-template-columns:1fr}
  .people-photo{border-bottom:1px solid var(--mill-soft)}
  .people-photo img{min-height:340px}
  .people-copy{padding:44px var(--gut)}
}

/* ── bloque distribuidores y cierre ── */
.dist{
  border:1px solid var(--mill-soft);background:var(--alu-2);
  padding:clamp(32px,4vw,52px) clamp(24px,3.4vw,46px);position:relative;overflow:hidden;
}
.dist::before{
  content:"";position:absolute;inset:0;pointer-events:none;
  background:linear-gradient(104deg,transparent 0 44%,rgba(255,255,255,.042) 44% 44.9%,transparent 44.9% 100%);
}
.dist .emb{position:absolute;right:-60px;top:50%;transform:translateY(-50%);width:360px;
  opacity:.16;pointer-events:none;z-index:1}
.dist h2{margin-bottom:14px}
.dist .grid{position:relative;z-index:2}
@media (max-width:600px){.dist .emb{display:none}}

.closer{text-align:center;padding-block:var(--esc)}
.closer img{width:112px;margin:0 auto 30px}
.closer h2{max-width:18ch;margin-inline:auto}
.closer p{margin-inline:auto;text-align:center}
.closer .btn-row{justify-content:center}

/* ─────────────────────── 9 · CATÁLOGO Y PRODUCTO ────────────────────── */
section.cat-intro{padding-bottom:0}
.filters{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:28px}
.filters button{
  font-family:var(--display);font-size:11px;letter-spacing:.14em;text-transform:uppercase;
  font-variation-settings:'wght' 620,'wdth' 92;
  padding:11px 16px;min-height:42px;border:1px solid var(--mill-soft);
  background:var(--alu-2);color:var(--ink-3);cursor:pointer;transition:border-color .15s,color .15s,background .15s;
}
.filters button:hover{color:var(--ink);background:var(--alu-3)}
.filters button[aria-pressed="true"]{border-color:var(--ink);color:var(--ink);background:var(--alu-3)}

.modo-bloque{margin-top:clamp(48px,5.5vw,78px);padding-block:0;scroll-margin-top:92px}
.modo-bloque:first-child{margin-top:34px}
/* el canto de anodizado del frente: 4 px macizos a todo el ancho */
.modo-cab{
  border-top:1px solid var(--mill);padding-top:22px;margin-bottom:26px;
  display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1.1fr);gap:12px 44px;align-items:end;
}
.modo-tag{
  grid-column:1/-1;font-family:var(--display);font-size:11px;letter-spacing:.24em;
  text-transform:uppercase;font-variation-settings:'wght' 680,'wdth' 92;color:var(--m-txt);
}
.modo-cab h2{
  font-size:clamp(23px,3.1vw,34px);margin:0;line-height:1.04;letter-spacing:-.022em;
  font-variation-settings:'wght' 780,'wdth' 106;
}
.modo-cab p{margin:0;color:var(--ink-2);font-size:14.5px;line-height:1.62}
@media (max-width:820px){.modo-cab{grid-template-columns:1fr;gap:8px}}

.prod-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:18px}
.prod-grid:has(> :nth-child(5)):not(:has(> :nth-child(7))){grid-template-columns:repeat(3,1fr)}
.prod-grid:has(> :nth-child(9)):not(:has(> :nth-child(10))){grid-template-columns:repeat(3,1fr)}
.prod-grid:has(> .prod:only-child){grid-template-columns:1fr}
@media (max-width:980px){.prod-grid,.prod-grid:has(> :nth-child(5)),
  .prod-grid:has(> :nth-child(9)){grid-template-columns:repeat(2,1fr)}}
@media (max-width:560px){.prod-grid,.prod-grid:has(> :nth-child(5)),
  .prod-grid:has(> :nth-child(9)){grid-template-columns:1fr}}

.prod{
  display:flex;flex-direction:column;background:var(--alu-2);border:1px solid var(--mill-soft);
  overflow:hidden;position:relative;transition:border-color .16s,background .16s,transform var(--t-mover) var(--ease-out);
}
.prod::before{
  content:"";position:absolute;left:9px;top:9px;width:13px;height:13px;z-index:3;
  border-top:2px solid var(--m-txt);border-left:2px solid var(--m-txt);
  transform-origin:top left;transition:transform .22s var(--ease-out);
}
.prod:hover::before{transform:scale(1.75)}
.prod:hover{border-color:var(--m-txt);background:var(--alu-3);transform:translateY(-3px)}
.prod-img{display:block;padding:14px 12px 0;background-color:var(--alu-2);
  background-image:radial-gradient(ellipse at 50% 46%,rgba(255,255,255,.055),transparent 64%)}
.prod-img img{height:236px;width:auto;margin:0 auto;object-fit:contain}
.prod-body{padding:4px 18px 18px;display:flex;flex-direction:column;flex:1}
.prod-modo{
  font-family:var(--display);font-size:11px;letter-spacing:.18em;text-transform:uppercase;
  font-variation-settings:'wght' 660,'wdth' 90;color:var(--m-txt);
}
.prod-modo.prestada{color:var(--ink-3);letter-spacing:.15em}
.prod-modo.prestada i{font-style:normal;color:var(--m-txt)}
.prod h3{
  font-family:var(--display);font-size:20px;margin:8px 0 5px;line-height:1.1;
  letter-spacing:-.018em;font-variation-settings:'wght' 760,'wdth' 102;
}
.prod h3 .alias{display:block;font-family:var(--text);font-weight:400;font-size:12px;
  color:var(--ink-3);margin-top:3px;letter-spacing:0}
.prod-gancho{font-size:14.5px;font-weight:600;color:var(--ink);line-height:1.5;margin:0 0 9px;max-width:none}
.prod-simple{font-size:13px;color:var(--ink-2);line-height:1.58;margin:0 0 12px;max-width:none}
.prod-bul{list-style:none;margin:0 0 15px;padding:0;flex:1;max-width:none}
.prod-bul li{font-size:12.5px;color:var(--ink-3);line-height:1.48;padding-left:15px;position:relative;
  margin-bottom:6px}
/* El guion de viñeta mide 2 px de alto: por debajo de 3 px es elemento
   gráfico y no superficie, así que va en --m-txt. Con --m, el violeta de
   NEURO daba 2,57 de contraste sobre el panel y la viñeta desaparecía. */
.prod-bul li::before{content:"";position:absolute;left:0;top:8px;width:7px;height:2px;background:var(--m-txt)}
.prod-pie{display:flex;align-items:center;justify-content:space-between;gap:10px;
  border-top:1px solid var(--mill-soft);padding-top:14px}
.prod-precio{
  font-family:var(--dato);font-size:16px;color:var(--ink);line-height:1.15;letter-spacing:-.03em;
  font-variation-settings:'wght' 500;
}
.prod-precio i{display:block;font-style:normal;font-size:11px;color:var(--ink-3);letter-spacing:0;
  font-variation-settings:'wght' 400}
.prod-precio.grande{font-size:28px}

/* un frente con una sola referencia propia: la tarjeta se tiende */
.prod:only-child{display:grid;grid-template-columns:minmax(0,270px) minmax(0,1fr);gap:0 32px;
  align-items:center}
.prod:only-child .prod-img{height:100%;display:grid;place-items:center;padding:16px}
.prod:only-child .prod-img img{max-height:340px;width:auto}
.prod:only-child .prod-body{padding-right:28px}
.prod:only-child .prod-gancho{font-size:16.5px}
.prod:only-child .prod-pie{justify-content:flex-start;gap:24px}
@media (max-width:760px){
  .prod:only-child{grid-template-columns:1fr}
  .prod:only-child .prod-img img{max-height:260px}
  .prod:only-child .prod-body{padding-right:0}
}

/* ── combinaciones ── */
.combi-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(324px,1fr));gap:18px;margin-top:30px}
.combi{display:grid;grid-template-columns:120px 1fr;gap:20px;border:1px solid var(--mill-soft);
  background:var(--alu-2);padding:20px 22px;align-items:center}
.combi-viales{display:flex;align-items:center;justify-content:center;gap:2px}
.combi-viales img{height:96px;width:auto}
.combi-viales .mas{color:var(--ink-3);font-family:var(--dato);font-size:14px}
.combi h3{font-size:17.5px;margin:0 0 4px}
.combi-par{font-family:var(--display);font-size:11px;color:var(--rp-txt);letter-spacing:.09em;
  text-transform:uppercase;font-variation-settings:'wght' 620,'wdth' 90;margin:0 0 9px}
.combi p{margin:0;font-size:13.5px;color:var(--ink-2);line-height:1.56;max-width:none}
.combi-lista{display:grid;gap:10px;margin-top:18px}
.combi-min{display:grid;grid-template-columns:68px 1fr;gap:16px;align-items:center;
  border:1px solid var(--mill-soft);background:var(--alu-2);padding:13px 17px;
  transition:border-color .15s,background .15s}
.combi-min:hover{border-color:var(--m-txt);background:var(--alu-3)}
.combi-min img{height:66px;width:auto;margin:0 auto}
.combi-min b{display:block;font-family:var(--display);font-size:15px;margin-bottom:3px;
  font-variation-settings:'wght' 720,'wdth' 100}
.combi-min i{font-style:normal;font-size:12.5px;color:var(--ink-3);line-height:1.5}
@media (max-width:820px){.combi{grid-template-columns:98px 1fr;gap:15px;padding:15px 17px}
  .combi-viales img{height:74px}}

/* ── respaldo ── */
.respaldo{
  display:grid;grid-template-columns:minmax(0,1fr) auto;gap:30px;align-items:center;
  border:1px solid var(--mill-soft);background:var(--alu-2);padding:28px 30px;
}
.respaldo h2{font-size:21px;margin:4px 0 10px}
.respaldo p{margin:0 0 8px;color:var(--ink-2);font-size:14px;line-height:1.62}
.respaldo .small{color:var(--ink-3);font-size:12.5px}

/* ── referencias prestadas de otro frente ── */
.cruces{margin-top:32px;border-top:1px solid var(--mill-soft);padding-top:24px}
.cruces h3{
  font-family:var(--display);font-size:11px;letter-spacing:.12em;text-transform:uppercase;
  font-variation-settings:'wght' 620,'wdth' 88;color:var(--ink-3);margin:0 0 7px;
}
.cruces .small{margin:0 0 17px;color:var(--ink-3);max-width:62ch}
.cruce-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(244px,100%),1fr));gap:10px}
.cruce{display:grid;gap:5px;padding:15px 17px;border:1px solid var(--mill-soft);background:var(--alu-2);
  position:relative;transition:border-color .15s,background .15s,transform var(--t-mover) var(--ease-out)}

.cruce:hover{border-color:var(--m-txt);background:var(--alu-3);transform:translateY(-2px)}
.cruce-modo{font-family:var(--display);font-size:11px;letter-spacing:.2em;text-transform:uppercase;
  font-variation-settings:'wght' 660,'wdth' 88;color:var(--m-txt)}
.cruce b{font-family:var(--display);font-size:16px;color:var(--ink);line-height:1.14;
  font-variation-settings:'wght' 740,'wdth' 100}
.cruce-t{font-size:12.5px;line-height:1.5;color:var(--ink-2)}

/* ──────────────────────────── 10 · FICHA ────────────────────────────── */
.miga{
  font-family:var(--display);font-size:11px;color:var(--ink-3);letter-spacing:.055em;
  font-variation-settings:'wght' 580,'wdth' 88;margin-bottom:24px;
}
.miga a{color:var(--ink-3)}
.miga a:hover{color:var(--ink)}

.ficha-top{display:grid;grid-template-columns:minmax(0,350px) minmax(0,1fr);gap:clamp(28px,4vw,52px);
  align-items:start}
.ficha-media{
  background-color:var(--alu-2);
  background-image:
    linear-gradient(104deg,transparent 0 40%,rgba(255,255,255,.04) 40% 41%,transparent 41% 100%),
    radial-gradient(ellipse at 50% 42%,rgba(255,255,255,.07),transparent 64%);
  border:1px solid var(--mill-soft);padding:18px;margin:0;text-align:center;
}
.ficha-vial{height:520px;width:auto;margin:0 auto;object-fit:contain}
.ficha-info h1{
  font-size:clamp(31px,5vw,52px);line-height:1;margin:12px 0 5px;letter-spacing:-.032em;
  font-variation-settings:'wght' 800,'wdth' 106;
}
.alias-h{font-size:13px;color:var(--ink-3);margin:0 0 12px}
.titular-problema{
  font-family:var(--display);font-size:clamp(20px,2.4vw,27px);line-height:1.18;color:var(--ink);
  letter-spacing:-.02em;font-variation-settings:'wght' 700,'wdth' 102;margin:8px 0 15px;
}
.ficha-mec{font-family:var(--dato);font-size:12px;color:var(--m-txt);margin:7px 0 18px;
  letter-spacing:-.01em}
.ficha-def{font-size:16px;line-height:1.68;color:var(--ink);max-width:62ch}
.bul-grande{list-style:none;margin:24px 0 0;padding:0;max-width:none}
.bul-grande li{font-size:15px;color:var(--ink);line-height:1.5;padding-left:24px;position:relative;
  margin-bottom:11px}
/* Misma razón que la viñeta pequeña: una marca de 13 x 3 px se lee como
   elemento gráfico, no como superficie. Con --m, en una ficha de NEURO la
   viñeta desaparecía. El umbral real no es el grosor: es si la mancha se
   lee como superficie. Una marca pequeña va siempre en --m-txt. */
.bul-grande li::before{content:"";position:absolute;left:0;top:10px;width:13px;height:3px;background:var(--m-txt)}
.ficha-compra{display:flex;align-items:center;gap:15px;flex-wrap:wrap;margin:30px 0 10px;
  border-top:1px solid var(--mill-soft);padding-top:26px}
.chips{display:flex;flex-wrap:wrap;gap:7px;margin-top:24px}
.chips span{
  font-family:var(--display);font-size:11px;letter-spacing:.05em;color:var(--ink-3);
  font-variation-settings:'wght' 560,'wdth' 92;
  border:1px solid var(--mill-soft);background:var(--alu-2);padding:7px 12px;
}

.ficha-lecho{display:grid;grid-template-columns:minmax(0,1fr) 308px;gap:clamp(28px,4vw,56px);
  align-items:start;margin-top:clamp(44px,5vw,68px)}
.ficha-cuerpo{max-width:none;margin-top:0}
.ficha-bloque{border-top:1px solid var(--mill-soft);padding-top:28px;margin-top:40px}
.ficha-bloque:first-child{margin-top:0}
.ficha-bloque h2{font-size:clamp(21px,2.2vw,26px);margin:0 0 15px}
.ficha-bloque p{color:var(--ink-2);font-size:15px;line-height:1.76;margin:0 0 15px}

/* el riel: lo que el lector necesita a mano mientras lee */
.ficha-rail{position:sticky;top:92px;display:grid;gap:16px}
.rail-card{
  border:1px solid var(--mill-soft);background:var(--alu-2);padding:22px;display:grid;gap:9px;
  position:relative;
}

.rail-card img{width:100%;max-width:152px;margin:0 auto 4px;display:block}
.rail-modo{font-family:var(--display);font-size:11px;letter-spacing:.22em;text-transform:uppercase;
  font-variation-settings:'wght' 660,'wdth' 88;color:var(--m-txt)}
.rail-card h3{margin:0;font-size:21px;line-height:1.08}
.rail-card h3 i{font-style:normal;font-family:var(--dato);font-size:11.5px;color:var(--ink-3);
  letter-spacing:-.02em;margin-left:6px}
.rail-mg{margin:0;font-family:var(--dato);font-size:11px;color:var(--ink-3);letter-spacing:-.02em}
.rail-precio{font-family:var(--dato);font-size:25px;letter-spacing:-.045em;color:var(--ink);
  margin:3px 0 7px;font-variation-settings:'wght' 500}
.rail-card .btn{width:100%}
.rail-nota{margin:7px 0 0;font-size:11.5px;line-height:1.6;color:var(--ink-3);max-width:none}
.rail-temas{border:1px solid var(--mill-soft);background:var(--alu-2);padding:20px 22px 22px}
.rail-temas h4{
  margin:0 0 13px;font-family:var(--display);font-size:11px;letter-spacing:.22em;text-transform:uppercase;
  font-variation-settings:'wght' 620,'wdth' 88;color:var(--ink-3);
}
.rail-temas a{display:block;font-size:13.5px;line-height:1.45;color:var(--ink-2);
  padding:10px 0;border-top:1px solid var(--mill-soft)}
.rail-temas a:first-of-type{border-top:0;padding-top:0}
.rail-temas a:hover{color:var(--ink)}
@media (max-width:1000px){
  .ficha-lecho{grid-template-columns:1fr}
  .ficha-rail{position:static;grid-template-columns:1fr 1fr}
}
@media (max-width:620px){.ficha-rail{grid-template-columns:1fr}}
@media (max-width:820px){
  .ficha-top{grid-template-columns:1fr;gap:26px}
  .ficha-vial{height:360px}
}

/* ── la capa simple: el lenguaje plastilina ── */
.simple-bloque{
  background:var(--alu-2);border:1px solid var(--mill-soft);padding:28px 30px;position:relative;
}
.simple-frase{font-size:clamp(16.5px,1.7vw,19.5px);line-height:1.6;color:var(--ink);margin:0 0 4px;
  max-width:none}
.como-h{
  font-family:var(--display);font-size:11px;letter-spacing:.12em;text-transform:uppercase;
  font-variation-settings:'wght' 680,'wdth' 90;color:var(--m-txt);margin:28px 0 16px;
}
ol.como{margin:0;padding:0;list-style:none;counter-reset:paso;max-width:none}
ol.como li{
  counter-increment:paso;position:relative;padding:0 0 0 46px;margin:0 0 16px;
  font-size:14.5px;line-height:1.62;color:var(--ink-2);
}
ol.como li::before{
  content:counter(paso,decimal-leading-zero);position:absolute;left:0;top:0;
  width:30px;height:26px;border-left:2px solid var(--m-txt);color:var(--m-txt);
  display:grid;place-items:center start;padding-left:9px;
  font-family:var(--dato);font-size:11px;letter-spacing:-.02em;
}
.simple-bloque .simple-frase,.simple-bloque ol.como li,.simple-bloque .porque-este{max-width:none}

/* ── comparación con otra referencia ── */
.vs{display:grid;grid-template-columns:repeat(auto-fit,minmax(246px,1fr));gap:16px}
.vs-col{border:1px solid var(--mill-soft);background:var(--alu-2);padding:20px 22px}
.vs-col.esta{border-color:var(--m-txt)}
.vs-tag{
  display:block;font-family:var(--display);font-size:11px;letter-spacing:.16em;text-transform:uppercase;
  font-variation-settings:'wght' 660,'wdth' 88;color:var(--m-txt);margin-bottom:13px;
}
.vs-tag.otra{color:var(--ink-3)}
.vs-col ul{list-style:none;margin:0;padding:0;max-width:none}
.vs-col li{font-size:13.5px;color:var(--ink-2);line-height:1.5;margin-bottom:9px;padding-left:16px;
  position:relative}
.vs-col li::before{content:"";position:absolute;left:0;top:9px;width:8px;height:1px;
  background:currentColor;opacity:.45}

/* ── cierre de ficha y referencias relacionadas ── */
.cierre{
  display:grid;grid-template-columns:minmax(0,1fr) auto;gap:26px;align-items:center;
  border:1px solid #2A7C4E;background:#141E19;
  padding:26px 28px;margin-top:46px;max-width:calc(var(--wrap) - 48px);margin-inline:auto;
}
.cierre h3{font-size:20px;margin:0 0 6px}
.cierre p{margin:0;color:var(--ink-2);font-size:14px;max-width:none}
.cierre .btn{width:max-content}
section.cierre{display:block}
section.cierre .btn-row{margin-top:26px}
.rel-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(206px,1fr));gap:14px;margin-top:22px}
.rel{display:flex;align-items:center;gap:14px;border:1px solid var(--mill-soft);background:var(--alu-2);
  padding:11px 15px;transition:border-color .15s,background .15s}
.rel:hover{border-color:var(--m-txt);background:var(--alu-3)}
.rel img{height:78px;width:auto}
.rel b{display:block;font-family:var(--display);font-size:15px;font-variation-settings:'wght' 720,'wdth' 100}
.rel i{font-style:normal;font-size:12px;color:var(--ink-3);line-height:1.4}

/* ── las palabras con las que la gente llega: una lista, no once cajas ── */
.busca-bloque ul.busca-chips,.busca-chips{
  list-style:none;margin:16px 0 0;padding:0;display:flex;flex-wrap:wrap;gap:5px 15px;max-width:none}
.busca-chips li{margin:0;font-size:12.5px;color:var(--ink-3);border:0;padding:0}
.busca-chips li + li::before{content:"·";margin-right:15px;color:var(--mill)}
.busca-chips li a{color:inherit;border-bottom:1px solid var(--mill-soft)}
.busca-chips li a:hover{border-bottom-color:currentColor;color:var(--ink-2)}
details.busca{margin-top:18px}
details.busca summary{
  cursor:pointer;list-style:none;font-family:var(--text);font-size:13.5px;letter-spacing:0;
  font-weight:600;color:var(--m-txt);
  min-height:36px;display:flex;align-items:center;gap:8px;
}
details.busca summary::-webkit-details-marker{display:none}
details.busca summary::before{content:"+";font-family:var(--dato);font-size:12px}
details.busca[open] summary::before{content:"–"}
details.busca ul{list-style:none;margin:12px 0 0;padding:0;display:flex;flex-wrap:wrap;gap:5px 15px}
details.busca li{font-size:12px;color:var(--ink-3)}

/* ── literatura ── */
.fuentes-bloque{margin-top:12px}
.fuente-lista{list-style:none;margin:18px 0 0;padding:0;max-width:none}
.fuente{border-top:1px solid var(--mill-soft);padding:16px 0;display:grid;gap:5px}
.fuente a{color:var(--ink);text-decoration:underline;text-decoration-color:var(--mill);
  text-underline-offset:4px;font-size:14.5px;line-height:1.5}
.fuente a:hover{text-decoration-color:var(--ink)}
.fuente-meta{font-family:var(--dato);font-size:11px;color:var(--ink-3);letter-spacing:-.02em}
.fuente-estado{
  font-family:var(--text);font-size:13.5px;line-height:1.6;letter-spacing:0;
  font-weight:400;color:var(--ink-3);max-width:70ch;
}
.fuente-estado b{color:var(--ink-2);font-weight:620}

/* ── preguntas frecuentes ── */
.faq-sec{margin-top:clamp(40px,4.4vw,60px)}
.faq{border-bottom:1px solid var(--mill-soft);padding-bottom:14px}
.faq-par{padding-block:4px}
.faq-par p{color:var(--ink-2)}

/* ────────────────────── 11 · PÁGINAS DE TEMA ────────────────────────── */
.tema-hero{padding-top:clamp(40px,4.4vw,60px)}
.tema-hero h1{max-width:19ch;letter-spacing:-.036em}
.tema-def{font-size:17px;line-height:1.66;color:var(--ink);max-width:62ch}
.tema-frases{margin-top:20px;max-width:70ch;color:var(--ink-2)}
.tema-frases em{color:var(--ink);white-space:nowrap}
.tema-campo{max-width:72ch}
.tema-grid{grid-template-columns:repeat(auto-fit,minmax(292px,1fr));gap:18px}
.tema-card{
  display:block;padding:28px 26px 24px;border:1px solid var(--mill-soft);background:var(--alu-2);
  position:relative;transition:border-color .15s,background .15s,transform var(--t-mover) var(--ease-out);
}

.tema-card:hover{border-color:var(--ink-3);background:var(--alu-3);transform:translateY(-3px)}
.tema-card h3{font-size:19.5px;line-height:1.22;margin:0 0 11px}
.tema-card p{font-size:14px;line-height:1.6;color:var(--ink-2);margin:0 0 16px;max-width:none}
.tema-chips{display:flex;flex-wrap:wrap;gap:6px}
.tema-chips span{
  font-family:var(--display);font-size:11px;letter-spacing:.09em;color:var(--ink-3);
  font-variation-settings:'wght' 560,'wdth' 92;
  border:1px solid var(--mill-soft);padding:5px 9px;line-height:1.4;
}
.tema-links{display:flex;flex-wrap:wrap;gap:10px;margin-top:10px}
.tema-links a{
  font-family:var(--display);font-size:12px;letter-spacing:.015em;
  font-variation-settings:'wght' 620,'wdth' 92;color:var(--ink-2);
  border:1px solid var(--mill-soft);background:var(--alu-2);padding:11px 15px;min-height:42px;
  display:inline-flex;align-items:center;transition:color .15s,border-color .15s,background .15s;
}
.tema-links a:hover{color:var(--ink);border-color:var(--mill);background:var(--alu-3)}
.tema-rel{margin-top:16px;color:var(--ink-2)}
.tema-rel a{color:var(--ink)}
@media (min-width:920px){
  .tema-hero{display:grid;grid-template-columns:1.2fr .8fr;gap:0 56px;align-items:end}
  .tema-hero .miga{grid-column:1/-1}
  .tema-hero h1{grid-column:1;margin-bottom:0;max-width:15ch}
  .tema-hero .lede{grid-column:2;padding-bottom:9px;margin-bottom:0}
  .tema-hero .tema-def,.tema-hero .tema-frases{grid-column:1/-1;margin-top:26px}

  /* El rótulo al margen: ésta es la ÚNICA cejilla que sobrevive, y
     sobrevive porque no es una cejilla — es una nota marginal, al lado
     del texto y no encima del titular. */
  .tema-sec{display:grid;grid-template-columns:188px minmax(0,1fr);gap:0 48px;align-items:start}
  .tema-sec > .eyebrow{
    display:block;grid-column:1;margin:0;padding-top:7px;
    font-family:var(--display);font-size:11px;letter-spacing:.2em;text-transform:uppercase;
    font-variation-settings:'wght' 620,'wdth' 88;color:var(--ink-3);
  }
  .tema-sec > .eyebrow::before{content:"";display:block;width:26px;height:2px;background:var(--rp);
    margin-bottom:10px}
  .tema-sec > *:not(.eyebrow){grid-column:2}
}
.tema-sec h2{max-width:22ch}
.tema-sec .prod-grid{grid-template-columns:repeat(auto-fit,minmax(min(262px,100%),1fr))}
@media (max-width:700px){.tema-hero{padding-top:34px}}

/* ─────────────────────── 12 · AYUDAVENTAS ──────────────────────────── */
.ayuda{padding-top:clamp(44px,5vw,64px)}
.ayuda > .lede{max-width:62ch}
.ayuda-pasos{
  display:flex;gap:0;list-style:none;margin:32px 0 0;padding:0;
  border:1px solid var(--mill-soft);border-bottom:0;max-width:none;
}
.ayuda-pasos li{
  flex:1;padding:13px 16px;font-family:var(--display);font-size:11px;letter-spacing:.16em;
  text-transform:uppercase;font-variation-settings:'wght' 620,'wdth' 88;
  color:var(--ink-3);border-left:1px solid var(--mill-soft);transition:color .2s,background .2s;
}
.ayuda-pasos li:first-child{border-left:0}
.ayuda-pasos li.on{color:var(--ink);background:var(--alu-2)}
.ayuda-caja{border:1px solid var(--mill-soft);background:var(--alu-2);padding:clamp(24px,3vw,38px);
  scroll-margin-top:96px}
.ayuda-q{
  font-family:var(--display);font-size:clamp(21px,2.4vw,29px);line-height:1.06;letter-spacing:-.026em;
  font-variation-settings:'wght' 780,'wdth' 104;color:var(--ink);margin:0 0 22px;
}
.ayuda-frentes{display:grid;grid-template-columns:repeat(6,1fr);gap:12px}
.ayuda-frente{
  appearance:none;background:var(--alu-1);border:1px solid var(--mill-soft);padding:0 0 15px;
  cursor:pointer;text-align:center;overflow:hidden;color:inherit;
  display:flex;flex-direction:column;align-items:stretch;
  transition:border-color .18s,background .18s,transform var(--t-mover) var(--ease-out);
}
.ayuda-frente:hover{border-color:var(--m-txt);background:var(--alu-3);transform:translateY(-3px)}
.af-img{display:block;position:relative;width:100%;padding-top:100%;overflow:hidden;
  margin-bottom:13px;border-bottom:4px solid var(--m)}
.af-img img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}
.af-n{
  font-family:var(--display);font-size:15px;color:var(--m-txt);text-transform:uppercase;
  letter-spacing:.04em;font-variation-settings:'wght' 800,'wdth' 112;padding-inline:8px;
}
.af-e{
  font-family:var(--display);font-size:11px;letter-spacing:.04em;
  font-variation-settings:'wght' 560,'wdth' 86;color:var(--ink-3);line-height:1.6;
  margin-top:6px;padding-inline:10px;
}
@media (max-width:980px){.ayuda-frentes{grid-template-columns:repeat(3,1fr)}}
@media (max-width:520px){.ayuda-frentes{grid-template-columns:repeat(2,1fr)}}
.ayuda-temas{display:grid;gap:10px}
.ayuda-tema{
  appearance:none;text-align:left;background:var(--alu-1);color:inherit;cursor:pointer;
  border:1px solid var(--mill-soft);padding:17px 19px;min-height:48px;
  display:grid;gap:6px;transition:border-color .16s,background .16s,transform var(--t-mover) var(--ease-out);
}
.ayuda-tema:hover{border-color:var(--rp-txt);background:var(--alu-3);transform:translateX(4px)}
.ayuda-tema b{font-family:var(--display);font-size:16.5px;line-height:1.28;color:var(--ink);
  font-variation-settings:'wght' 720,'wdth' 100}
.ayuda-tema i{font-family:var(--display);font-style:normal;font-size:11px;letter-spacing:.14em;
  text-transform:uppercase;font-variation-settings:'wght' 580,'wdth' 88;color:var(--ink-3)}
.ayuda-atras{
  margin-top:22px;background:none;border:0;padding:0;cursor:pointer;min-height:40px;
  font-family:var(--display);font-size:11px;letter-spacing:.14em;text-transform:uppercase;
  font-variation-settings:'wght' 620,'wdth' 90;color:var(--ink-3);
}
.ayuda-atras:hover{color:var(--ink)}
.ayuda-res h3{font-size:clamp(22px,2.6vw,31px);line-height:1.08;letter-spacing:-.028em;
  font-variation-settings:'wght' 800,'wdth' 104;margin:0 0 15px}
.ayuda-res .lede{max-width:64ch}
.ayuda-campo{color:var(--ink-2);font-size:14.5px;max-width:66ch}
.ayuda-refs{display:grid;gap:14px;margin:28px 0 6px}
.ayuda-ref{
  display:grid;grid-template-columns:164px minmax(0,1fr);gap:22px;
  border:1px solid var(--mill-soft);background:var(--alu-1);padding:20px 22px;position:relative;
}

.ar-img{display:block;align-self:center}
.ar-modo{font-family:var(--display);font-size:11px;letter-spacing:.2em;text-transform:uppercase;
  font-variation-settings:'wght' 660,'wdth' 88;color:var(--m-txt)}
.ayuda-ref h4{font-size:21px;margin:7px 0 9px;line-height:1.08;
  font-variation-settings:'wght' 780,'wdth' 102}
.ayuda-ref h4 i{font-style:normal;font-family:var(--dato);font-size:11.5px;color:var(--ink-3);
  letter-spacing:-.02em;margin-left:7px}
.ar-titular{color:var(--ink);font-size:14.5px;margin:0 0 9px;font-weight:620;max-width:none}
.ar-simple{color:var(--ink-2);font-size:14px;line-height:1.66;margin:0 0 13px;max-width:62ch}
.ar-como{margin:0 0 15px;padding-left:19px;max-width:62ch}
.ar-como li{font-size:13px;line-height:1.6;color:var(--ink-2);margin-bottom:6px}
.ar-como li::marker{color:var(--m-txt)}
.ar-pie{display:flex;align-items:center;gap:15px;flex-wrap:wrap}
.ar-precio{font-family:var(--dato);font-size:18px;letter-spacing:-.04em;color:var(--ink);
  font-variation-settings:'wght' 500}
.ayuda-limite{border-top:1px solid var(--mill-soft);margin-top:24px;padding-top:20px}
.ayuda-limite b{
  display:block;font-family:var(--display);font-size:11px;letter-spacing:.22em;text-transform:uppercase;
  font-variation-settings:'wght' 620,'wdth' 88;color:var(--ink-3);margin-bottom:9px;
}
.ayuda-limite p{color:var(--ink-2);font-size:14px;line-height:1.7;margin:0;max-width:none}
.ayuda-cierre{display:flex;gap:12px;flex-wrap:wrap;margin-top:26px}
@media (max-width:700px){
  .ayuda-ref{grid-template-columns:1fr;gap:13px}
  .ar-img{max-width:172px;margin:0 auto}
}
@media (max-width:620px){
  .ayuda-pasos{flex-wrap:wrap}
  .ayuda-pasos li{flex:1 1 100%;border-left:0;border-top:1px solid var(--mill-soft);
    padding:11px 14px;font-size:11px}
  .ayuda-pasos li:first-child{border-top:0}
}

/* ── qué es un péptido, en la portada del catálogo ── */
.peptido-101{display:grid;grid-template-columns:1.45fr .85fr;gap:clamp(30px,3.8vw,48px);align-items:start}
.peptido-101 p{font-size:15.5px;line-height:1.72;color:var(--ink-2)}
.peptido-101 .cierre-101{color:var(--ink);font-weight:620;margin-top:22px;padding-top:20px;
  border-top:1px solid var(--mill-soft)}
ul.notas{list-style:none;margin:0;padding:0;border:1px solid var(--mill-soft);background:var(--alu-2);
  max-width:none}
ul.notas li{display:grid;gap:4px;padding:17px 21px;border-bottom:1px solid var(--mill-soft);margin:0}
ul.notas li:last-child{border-bottom:0}
ul.notas b{font-family:var(--display);font-size:14px;letter-spacing:.02em;color:var(--ink);
  font-variation-settings:'wght' 720,'wdth' 100}
ul.notas span{font-size:13px;color:var(--ink-2)}
@media(max-width:860px){.peptido-101{grid-template-columns:1fr;gap:30px}}

/* ─────────────────── 13 · PEDIDO, LEGAL, VERIFICACIÓN ──────────────── */
/* La tabla del pedido perdió las columnas de precio y subtotal: ya no hay
   cifras que publicar, el pedido es una solicitud de cotización. Con cuatro
   columnas en 1280 px la referencia quedaba nadando en un extremo y la
   cantidad en el otro, así que se acota el ancho y se fijan las tres
   columnas estrechas; la referencia se queda con la holgura. */
.tabla-pedido{width:100%;max-width:760px;border-collapse:collapse;margin-top:26px;font-size:14px}
.tabla-pedido th:nth-child(2){width:26%}
.tabla-pedido th:nth-child(3){width:120px}
.tabla-pedido th:nth-child(4){width:56px}
.tabla-pedido th,.tabla-pedido td{border-bottom:1px solid var(--mill-soft);padding:14px 10px;text-align:left}
.tabla-pedido thead th{
  font-family:var(--display);font-size:11px;letter-spacing:.16em;text-transform:uppercase;
  font-variation-settings:'wght' 640,'wdth' 88;color:var(--ink-3);border-bottom-color:var(--mill);
}
.tabla-pedido .num{text-align:right;font-family:var(--dato);letter-spacing:-.03em}
.tabla-pedido tfoot th{font-family:var(--dato);font-size:15px;letter-spacing:-.03em;border-bottom:0;
  padding-top:20px;color:var(--ink)}
.tabla-pedido input[type=number]{
  width:66px;background:var(--alu-1);border:1px solid var(--mill);color:var(--ink);
  padding:8px 9px;font-family:var(--dato);font-size:13px;text-align:right;min-height:40px;
}
.quitar{background:none;border:0;color:var(--ink-3);cursor:pointer;font-size:19px;line-height:1;
  padding:8px;min-height:40px;min-width:40px}
.quitar:hover{color:var(--stop)}
@media(max-width:820px){
  .tabla-pedido thead{display:none}
  .tabla-pedido tr{display:grid;grid-template-columns:1fr auto;gap:2px 10px;padding:13px 0;
    border-bottom:1px solid var(--mill-soft)}
  .tabla-pedido td,.tabla-pedido th{border:0;padding:3px 0}
  .respaldo,.cierre{grid-template-columns:1fr;gap:18px}
}

.legal{max-width:820px}
.legal h1{font-size:clamp(31px,5vw,48px);margin:12px 0 8px}
.legal h2{font-size:clamp(20px,2vw,23px);margin:48px 0 14px;padding-top:22px;
  border-top:1px solid var(--mill-soft)}
.legal h3{font-size:16.5px;margin:28px 0 10px;font-variation-settings:'wght' 680,'wdth' 100}
.legal p{color:var(--ink-2);font-size:15px;line-height:1.8}
.legal :target{scroll-margin-top:92px}
.lista{margin:0;padding-left:20px;color:var(--ink-2);font-size:14.5px;line-height:1.76}
.lista li{margin-bottom:9px}

.verify-box{max-width:560px;border:1px solid var(--mill-soft);background:var(--alu-2);padding:32px}
.verify-box input{
  width:100%;background:var(--alu-1);border:1px solid var(--mill);color:var(--ink);
  font-family:var(--dato);font-size:16px;letter-spacing:.04em;padding:16px;text-transform:uppercase;
  min-height:52px;
}
.verify-box input:focus-visible{outline:2px solid var(--rp);outline-offset:2px;border-color:var(--rp)}
.result{margin-top:24px;border:1px solid var(--mill-soft);background:var(--alu-1);padding:24px;display:none}
.result.show{display:block}
.result.hit{border-color:var(--ok)}
.result.hit h3::before{content:"✓ ";color:var(--ok)}
.result.miss{border-color:var(--stop)}
.result.miss h3::before{content:"✕ ";color:var(--stop)}
.result h3{font-size:18px;margin-bottom:14px}

/* etiquetas internas */
.prop{margin-top:46px;border-top:1px solid var(--mill-soft);padding-top:26px}
.prop.es-rec{border-top-color:var(--rp)}
.prop h2{font-size:22px;margin:0 0 7px}
.prop header p{color:var(--ink-2);font-size:14px;margin:0 0 20px;max-width:70ch}
.prop-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(252px,1fr));gap:16px}
.prop-grid figure{margin:0;background:#8A8D91;border:1px solid var(--mill);padding:14px}
.prop-grid figcaption{font-family:var(--dato);font-size:11px;color:#15181B;margin-top:11px;letter-spacing:-.01em}
.etq-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(238px,1fr));gap:14px;margin-top:24px}
.etq-grid figure{margin:0}
.etq-grid figcaption{font-family:var(--dato);font-size:11px;color:var(--ink-3);margin-top:7px}

/* ───────────────── 14 · PUERTA DE ENTRADA Y FIRMA ──────────────────── */
#am-gate{display:none}
html.am-gate #am-gate{
  display:flex;position:fixed;inset:0;z-index:999;align-items:center;justify-content:center;
  background:rgba(18,20,22,.95);backdrop-filter:blur(12px);overflow-y:auto;
  /* `overscroll-behavior:contain` evita que al llegar al final de la puerta
     el desplazamiento se contagie a la página de debajo. Y el relleno
     respeta el recorte de la pantalla: sin `env(safe-area-inset-*)` el
     botón de aceptar se mete bajo la barra de gestos del teléfono. */
  overscroll-behavior:contain;
  padding:max(24px,env(safe-area-inset-top)) max(24px,env(safe-area-inset-right))
          max(24px,env(safe-area-inset-bottom)) max(24px,env(safe-area-inset-left));
}
html.am-gate body{overflow:hidden}
html.am-gate .wa-float{display:none}
.gate-box{
  max-width:640px;width:100%;background:var(--alu-2);border:1px solid var(--mill);
  padding:40px 36px 32px;margin:auto;position:relative;
}
/* La verja es el único sitio donde el espectro completo trabaja: es la
   primera pantalla y su función es presentar los seis frentes de una vez. */
.gate-box::before{
  content:"";position:absolute;left:0;right:0;top:0;height:3px;
  background:linear-gradient(90deg,
    var(--sk) 0 16.66%,var(--rp) 16.66% 33.33%,var(--pf) 33.33% 50%,
    var(--nr) 50% 66.66%,var(--vt) 66.66% 83.33%,var(--dr) 83.33% 100%);
}
.gate-logo{height:24px;width:auto;margin-bottom:24px}
.gate-box h2{font-size:clamp(23px,3.4vw,31px);line-height:1.06;margin:8px 0 15px}
.gate-box p{color:var(--ink-2);font-size:14.5px;margin:0 0 18px}
.gate-check{
  display:flex;gap:13px;align-items:flex-start;margin:0 0 12px;cursor:pointer;min-height:48px;
  border:1px solid var(--mill-soft);background:var(--alu-1);padding:14px 16px;
  transition:border-color .15s,background .15s;
}
.gate-check:hover{border-color:var(--mill);background:var(--alu-3)}
.gate-check input{margin:3px 0 0;width:18px;height:18px;flex:none;accent-color:var(--rp)}
.gate-check span{font-size:14px;line-height:1.55;color:var(--ink)}
.gate-row{display:flex;gap:12px;flex-wrap:wrap;margin:24px 0 16px}
.gate-box .small{color:var(--ink-3);font-size:12.5px;margin:0}

.am-firma{
  max-width:calc(var(--wrap) - 48px);margin:clamp(46px,5vw,74px) auto 0;
  padding:24px 26px;border:1px solid var(--mill-soft);background:var(--alu-2);
}
.am-firma p{margin:0;max-width:74ch;font-size:14px;line-height:1.62;color:var(--ink-2)}
.am-firma strong{color:var(--ink)}
.am-firma-f{
  margin-top:11px!important;font-family:var(--dato);font-size:11px;letter-spacing:-.01em;
  color:var(--ink-3)!important;
}
@media(max-width:760px){.am-firma{margin-inline:var(--gut);padding:20px}}

/* ──────────────────────────── 15 · PIE ──────────────────────────────── */
footer{border-top:1px solid var(--mill-soft);background:var(--alu-2);padding-block:58px 36px}
.foot-grid{display:grid;grid-template-columns:1.5fr 1fr 1fr 1fr 1fr;gap:34px;margin-bottom:42px}
footer h4,footer .pie-t{
  font-family:var(--display);font-size:11px;letter-spacing:.2em;text-transform:uppercase;
  font-variation-settings:'wght' 640,'wdth' 88;color:var(--ink-3);margin:0 0 15px;font-weight:400;
}
footer ul{list-style:none;padding:0;margin:0;max-width:none}
footer li{margin-bottom:10px}
footer li a{font-size:14px;color:var(--ink-2)}
footer li a:hover{color:var(--ink)}
.foot-brand img{height:30px;width:auto;margin-bottom:17px}
.foot-brand p{font-size:13px;color:var(--ink-3);max-width:34ch}
.foot-legal{
  border-top:1px solid var(--mill-soft);padding-top:24px;
  font-family:var(--text);font-size:13px;letter-spacing:0;color:var(--ink-3);
  display:flex;flex-wrap:wrap;gap:10px 28px;justify-content:space-between;
}
.foot-aviso{margin-top:24px;padding-top:20px;border-top:1px solid var(--mill-soft)}
.foot-aviso a{color:var(--ink-3);font-size:13px;text-decoration:underline;
  text-decoration-color:var(--mill);text-underline-offset:4px}
.foot-aviso a:hover{color:var(--ink)}
.revisado{margin:20px 0 0;font-family:var(--dato);font-size:11px;letter-spacing:-.01em;color:var(--ink-3)}
@media (max-width:980px){.foot-grid{grid-template-columns:1.4fr 1fr 1fr}}
@media (max-width:780px){.foot-grid{grid-template-columns:1fr 1fr}}
@media (max-width:480px){.foot-grid{grid-template-columns:1fr}}

/* ───────────── 16 · RITMO DE CABECERA EN PANTALLA ANCHA ─────────────── */
/* Un H1 de dos líneas contra media pantalla vacía se lee como una página
   sin terminar. En ancho, titular y bajada se reparten la línea. */
@media (min-width:920px){
  main > section.wrap:first-child:has(> h1){
    display:grid;grid-template-columns:1.12fr .88fr;gap:0 56px;align-items:end;
  }
  main > section.wrap:first-child:has(> h1) > *{grid-column:1/-1}
  main > section.wrap:first-child:has(> h1) > h1{grid-column:1;margin-bottom:0;max-width:15ch}
  main > section.wrap:first-child:has(> h1) > .lede{
    grid-column:2;margin-bottom:0;padding-bottom:9px;max-width:44ch}
  main > section.wrap:first-child:has(> h1) > .btn-row{grid-column:1/-1;margin-top:36px}
  main > section.wrap:first-child:has(> h1) > h2{margin-top:clamp(34px,4.4vw,58px)}
  main > section.wrap:first-child:has(> h1) > .grid,
  main > section.wrap:first-child:has(> h1) > .note,
  main > section.wrap:first-child:has(> h1) > table{margin-top:clamp(26px,3vw,38px)}

  .sec-abre{display:grid;grid-template-columns:1.12fr .88fr;gap:0 56px;align-items:end}
  .sec-abre > *{grid-column:1/-1}
  .sec-abre > h2{grid-column:1;margin-bottom:0;max-width:16ch}
  .sec-abre > .lede{grid-column:2;margin-bottom:0;padding-bottom:7px;max-width:46ch}
}

/* ───────────── 17 · MÓVIL: área táctil y acción a ancho completo ─────── */
@media (max-width:760px){
  .wa-float{bottom:max(14px,env(safe-area-inset-bottom));
    right:max(14px,env(safe-area-inset-right));width:54px;height:54px;padding:0;
    display:grid;place-items:center}
  .wa-float span,.wa-float b{display:none}
  .gate-check{min-height:48px}
  .miga{padding-block:4px}
}
@media (max-width:520px){
  .ficha-compra{display:grid;gap:10px}
  .ficha-compra .btn,.cierre .btn,.btn-row .btn,.rail-card .btn,.ayuda-cierre .btn{
    width:100%;justify-content:center;min-height:50px;justify-self:stretch}
  .ficha-compra .prod-precio{margin-bottom:4px}
  .btn-row,.cta-row,.ayuda-cierre{display:grid;gap:10px}
}

/* v16. El frente deja de ser un BLOQUE de color y pasa a ser una PALABRA
   en el color, con un filete de 2 px delante.

   Es la misma corrección que se hizo en la etiqueta del vial, y por la
   misma razón. Una página de catálogo lleva veintidós de estas cápsulas:
   veintidós rectángulos de cian, naranja y violeta saturados sobre el
   fondo. Ningún acento es acento cuando se repite veintidós veces en
   superficie llena; a esa dosis el color deja de clasificar y sólo hace
   ruido. En palabra + filete el frente se sigue identificando de un
   vistazo —el color está, y está en el sitio exacto donde empieza la
   ficha— sin quedarse con la página.

   El filete son 2 px, y por eso NO lleva --m sino --m-txt, igual que la
   palabra. Medido: --m es el token de SUPERFICIE, pensado para rellenos
   de 3 px o más; a 2 px el filete deja de ser una superficie y pasa a ser
   un elemento gráfico, que exige 3,0 de contraste. Contra el panel nuevo
   (#16191C) los seis --m dan 5,77 · 11,37 · 3,83 · 2,57 · 10,20 · 4,96:
   el violeta de NEURO se queda en 2,57 y no pasa. Con --m-txt los seis
   pasan de 6,0. De paso la cápsula queda de un solo color —filete y
   palabra—, que es lo que debía ser desde el principio. */
.prod-modo,.rail-modo,.cruce-modo,.ar-modo,.modo-tag,.vs-tag:not(.otra),.af-n{
  display:inline-flex;align-items:center;gap:8px;
  background:transparent;color:var(--m-txt);
  border-left:2px solid var(--m-txt);
  font-family:var(--display);font-size:11px;letter-spacing:.11em;text-transform:uppercase;
  font-variation-settings:'wght' 640,'wdth' 94;
  padding:3px 0 2px 9px;line-height:1.25;
}
.prod-modo.prestada{background:transparent;color:var(--ink-3);border-left-color:var(--mill)}
.prod-modo.prestada i{color:var(--m-txt);font-style:normal}
.vs-tag.otra{display:inline-flex;align-items:center;background:transparent;color:var(--ink-3);
  border-left:2px solid var(--mill);
  font-family:var(--display);font-size:11px;letter-spacing:.11em;text-transform:uppercase;
  font-variation-settings:'wght' 640,'wdth' 94;padding:3px 0 2px 9px;line-height:1.25}
.modo-tag{font-size:12px;padding:4px 0 3px 11px;letter-spacing:.15em;border-left-width:3px}
.af-n{align-self:center;margin-top:-20px;position:relative;z-index:2;font-size:12px}

/* El frente de la ficha baja: dejó de ser una cejilla encima del titular
   —«NEURO · Concentración, ánimo, tensión» antes de leer «DSIP»— y pasa a
   ser lo que de verdad es, una clasificación que se lee DESPUÉS de saber
   qué se está mirando. La cápsula lleva sólo el nombre del frente; el
   campo va al lado, en caja normal, porque es una frase. */
.ficha-frente{display:flex;align-items:center;gap:12px;flex-wrap:wrap;margin:18px 0 16px;
  max-width:none}
.prod-campo{font-family:var(--text);font-size:13.5px;color:var(--ink-3);letter-spacing:0}

/* Tres remates del pase de detección, mirando el render:

   · La cápsula del frente dentro del riel se estiraba a todo el ancho de
     la columna, porque el riel es una rejilla y un bloque en línea dentro
     de una rejilla ocupa su celda entera.
   · «Consultar» se componía en la tipografía de dato, a 28 px. Leído de
     lejos parecía una cifra. No lo es.
   · El mecanismo de cada ficha —«Nonapéptido huérfano, sin receptor ni gen
     precursor identificados»— también iba en mono. Es una frase. */
.rail-modo,.prod-modo,.ar-modo,.cruce-modo,.vs-tag,.modo-tag,.af-n{
  justify-self:start;width:max-content;max-width:100%}
.sin-precio{font-family:var(--display);font-size:.72em;letter-spacing:.01em;
  font-variation-settings:'wght' 700,'wdth' 98}
.ficha-mec{font-family:var(--text);font-size:14px;line-height:1.55;letter-spacing:0;
  color:var(--m-txt);max-width:62ch}

/* La tarjeta cuando es un enlace entero: el bloque se comporta como
   control, no como adorno con un enlace dentro. */
a.card{display:block;transition:border-color .16s,background .16s,transform var(--t-mover) var(--ease-out)}
a.card:hover{border-color:var(--mill);background:var(--alu-3);transform:translateY(-3px)}
a.card h3{color:var(--ink)}
a.card::after{content:" →";font-family:var(--display);font-size:13px;color:var(--ink-3);
  display:block;margin-top:14px;font-variation-settings:'wght' 620,'wdth' 92}
a.card:hover::after{color:var(--rp-txt)}

/* Los mayoristas, en una línea. Antes eran una sección entera de portada
   con el emblema de fondo —el mismo peso visual que «¿Qué es un
   péptido?»— para un público que es una fracción mínima de quien llega.
   El programa no se retira: se pone donde le corresponde. */
.nota-mayoristas{
  margin:clamp(34px,4vw,52px) auto 0;max-width:62ch;text-align:center;
  font-size:13.5px;color:var(--ink-3);
}
.nota-mayoristas a{color:var(--ink-2);text-decoration:underline;
  text-decoration-color:var(--mill);text-underline-offset:4px}
.nota-mayoristas a:hover{color:var(--ink);text-decoration-color:var(--ink-3)}

/* ══════════════════════════════════════════════════════════════════════
   RESPUESTA AL TOQUE
   ══════════════════════════════════════════════════════════════════════
   La hoja tenía cuarenta y cinco reglas de `:hover` y ninguna de
   `:active`. En un computador eso se nota poco. En un teléfono —que es
   por donde entra casi todo el tráfico de este sitio— significaba que
   tocar un botón no devolvía absolutamente nada: el dedo tapa el botón,
   el color de hover queda debajo del dedo, y hasta que carga la página
   siguiente no hay señal de que el toque se registró.

   Un botón que se hunde 3 % al presionarlo cuesta dieciséis centésimas y
   resuelve eso. Se aplica a todo lo que se puede presionar.

   Las tarjetas se hunden menos (1,2 %) porque son superficies grandes:
   el mismo porcentaje que en un botón de 46 px se ve exagerado en una
   tarjeta de 400 px — la escala se percibe en píxeles recorridos, no en
   porcentaje. */
.btn,.nav-toggle,.filters button,.quitar,.add{
  transition:border-color var(--t-estado),color var(--t-estado),
             background var(--t-estado),transform var(--t-toque) var(--ease-out);
}
.btn:active,.nav-toggle:active,.filters button:active,.quitar:active,
.add:active{transform:scale(.97)}

.frente:active,.prod:active,.cruce:active,.tema-card:active,
.mode-card:active,.ayuda-frente:active,a.card:active{transform:scale(.988)}

/* ══════════════════════════════════════════════════════════════════════
   EL HOVER NO EXISTE EN UNA PANTALLA TÁCTIL
   ══════════════════════════════════════════════════════════════════════
   Un toque dispara `:hover` y lo deja pegado: la tarjeta se levanta tres
   píxeles y se queda levantada hasta que tocas otra cosa. Parece un fallo
   de pintado, y en una rejilla de veintidós viales dejaba media pantalla
   con tarjetas a distintas alturas.

   El movimiento del hover se apaga donde el puntero es grueso. El cambio
   de color y de borde se queda: en táctil es justamente la señal de que
   el dedo aterrizó donde debía. */
@media (hover:none),(pointer:coarse){
  .wa-float:hover,.mode-card:hover,.frente:hover,.prod:hover,.cruce:hover,
  .tema-card:hover,.ayuda-frente:hover,.ayuda-tema:hover,a.card:hover,
  .frente:hover figure img{transform:none}
  .fiducial:hover::before,.prod:hover::before{transform:scale(1)}
  /* El barrido de luz del botón es un gesto de marca para el puntero.
     En táctil no se dispara nunca: se quedaría a medio cruzar. */
  .btn:hover::after{transform:translateX(-160%)}
}

/* El botón pequeño de las fichas del ayudaventas mide 38 px de alto. Para
   el ratón sobra; para un dedo no llega: la guía de interfaz pide 44 px de
   lado mínimo, y por debajo de eso el error de toque sube rápido. Crece
   solo donde el puntero es grueso — en pantalla de computador se queda
   pequeño, que es para lo que se diseñó. */
@media (pointer:coarse){
  .btn.mini{min-height:44px;padding:11px 16px}
}

/* El aviso de «quitado · deshacer» del pedido. Aparece bajo la tabla, en el
   mismo sitio donde estaba la línea que se fue, para que el ojo no tenga
   que buscarlo. No se anima: entra y sale muchas veces seguidas si alguien
   está editando el pedido, y a esa frecuencia una transición estorba. */
.carrito-deshacer{
  display:flex;align-items:center;flex-wrap:wrap;gap:12px;
  margin-top:14px;padding:12px 15px;
  border:1px solid var(--mill);border-left:3px solid var(--rp);
  background:var(--alu-2);color:var(--ink-2);font-size:14px;
}
.carrito-deshacer b{color:var(--ink);font-weight:600}
.carrito-deshacer[hidden]{display:none}

/* ══════════════════════════════════════════════════════════════════════
   EL FILTRO DEL CATÁLOGO
   ══════════════════════════════════════════════════════════════════════
   Tocar «SKIN 5» hacía desaparecer diecisiete tarjetas de golpe y dejaba
   cinco. Sin transición, un cambio así no se lee como un filtro: se lee
   como que la página se rompió y volvió a dibujarse. Es uno de los casos
   que sí piden movimiento — evitar un cambio brusco.

   Las que entran suben ocho píxeles y aparecen. Las que salen no se
   animan: ya no son la respuesta a la pregunta, y despedirlas con
   ceremonia alarga la espera de lo que sí se pidió.

   El escalonado se corta a 170 ms. Con veintidós referencias y 28 ms por
   tarjeta, la última entraría a los seiscientos y pico: a esa altura el
   escalonado deja de leerse como cascada y empieza a leerse como lentitud.
   Las primeras seis entran en cascada y el resto llega junto. */
[data-modo]{
  transition:opacity var(--t-estado) var(--ease-out),
             transform var(--t-estado) var(--ease-out),
             display var(--t-estado) allow-discrete;
}
/* El retraso sale de `--i`, que el JavaScript pone al filtrar y quita al
   terminar. Sin `--i` el retraso es cero: al cargar la página el catálogo
   ya está en «Todo» y nadie pidió nada — un escalonado ahí sería adorno
   sobre contenido que el usuario vino a leer. */
[data-modo]:not([hidden]){
  opacity:1;transform:translateY(0);
  transition-delay:min(calc(var(--i,0) * 28ms),170ms);
}
@starting-style{
  [data-modo]:not([hidden]){opacity:0;transform:translateY(8px)}
}

@media (prefers-reduced-motion:reduce){
  [data-modo],[data-modo]:not([hidden]){transition-delay:0s!important;transform:none!important}
  .nav-links,.nav-links.open{transform:none!important}
}
