/* ==========================================================================
   El Camino DT — EL CHROME DE FM26
   --------------------------------------------------------------------------
   Lo que esta hoja agrega a la barra que ya existía en `app.css`, medido sobre
   la captura a resolución nativa del portal de FM26 que el dueño aportó el 20
   de agosto de 2026 (`referencia/fm26/notas.md`, sección «La captura buena»).
   Hasta ese día la única evidencia era un video de YouTube comprimido, y por
   eso faltaban justo las piezas que el compresor no dejaba leer:

   1. LA PLACA DEL ESCUDO. El escudo no flota sobre la barra: se apoya en un
      bloque del COLOR DEL CLUB que cruza los dos pisos, con cuatro corchetes
      en las esquinas. Es lo que hace que la barra se lea como la de tu club en
      vez de como una barra de herramientas, y era lo que este chrome buscaba
      cuando subió el escudo de 36 a 60px sin llegar del todo.
   2. LOS DESPLEGABLES. Cada sección del primer piso abre su submenú. El
      chevrón no es adorno: es la promesa de que ahí hay algo.
   3. EL BUSCADOR Y LA FILA DE UTILIDADES, que ocupan el hueco de la derecha.
   4. LA BARRA DE FAVORITOS en el segundo piso.
   5. CONTINUAR EN DEGRADADO — la única superficie con degradado del producto,
      declarada como excepción en `tokens.css`.

   Nada de esto lo escribe una pantalla: lo monta `scripts/chrome.js` sobre el
   marcado que las veinte ya tienen, por el mismo motivo por el que
   `controles.js` mejora los `<select>` sin tocarlas. Una barra que hay que
   copiar a mano en veinte archivos es una barra que se desincroniza.
   ========================================================================== */

/* --------------------------------------------------------------------------
   1. EL COLOR DEL CLUB EN LA BARRA
   --------------------------------------------------------------------------
   ESTO ERA UNA PLACA Y ESTABA MAL. Se había construido como un bloque del color
   del club, con borde y cuatro corchetes encuadrando el escudo, leyendo una
   captura de baja resolución. Con el escudo de Independiente adentro —rojo
   sobre rojo, dentro de un marco blanco— el dueño lo describió exacto: «parece
   una imagen mal pegada». Y tenía razón: **un marco alrededor de una imagen es
   justo lo que la hace parecer pegada.**

   Medido después a 1:1 sobre el video, FM26 no encuadra nada. Lo que hace es
   TEÑIR LA BARRA: un degradado del color del club que arranca en el borde
   izquierdo y se disuelve hacia la derecha, con el escudo suelto encima.

   Los números salen del muestreo, y son la parte que no había que inventar:

     · a lo ancho, el tinte muere a los 290 px de 1920 — un 15 % de la barra
     · a lo alto, cubre SÓLO el primer piso; a la altura de la subnavegación
       ya es fondo limpio

   El ancho va en píxeles y no en porcentaje a propósito: lo que el tinte tiene
   que envolver es el escudo y las flechas, que miden lo que miden en cualquier
   pantalla. En porcentaje, a 1920 el color llegaría hasta la mitad de la
   navegación. -------------------------------------------------------------- */

/* --------------------------------------------------------------------------
   Y EL TINTE BAJÓ DE 82 A 52 (22/9/2026)
   --------------------------------------------------------------------------
   «Rojo, blanco, violeta, me queda muy feo» —Alberto, sobre Estudiantes de La
   Plata—. El reclamo no era de una pantalla: era de la barra, que es el único
   sitio donde el color del CLUB y el acento del PRODUCTO comparten sesenta
   píxeles. Con un club celeste no se nota; con uno rojo, el violeta del botón
   grande queda encima de una franja roja saturada, y rojo con violeta es de las
   adyacencias que no se arreglan eligiendo mejor el violeta.

   AL 82 % ESO NO ERA UN TINTE, ERA UNA BANDA. El número venía de un muestreo de
   FM26 y lo que medía era el degradado en el borde izquierdo, donde se apoya el
   escudo. Al 52 % la esquina sigue siendo del club —se lee de reojo cuál es tu
   equipo, que es para lo que existe— y deja de ser una superficie de color con
   la interfaz encima.

   LO QUE NO CAMBIA ES QUIÉN MANDA: el color del club sigue viniendo del club y
   el acento sigue siendo el violeta. Lo que cambia es cuánto ocupa cada uno.

   Y EL CONTRASTE SÓLO MEJORA, que es la parte que no hay que discutir: bajar la
   mezcla acerca el fondo a `--bg-chrome`, o sea lo oscurece, así que todo lo que
   se apoya encima gana. El barrido de `vara-tinte-de-la-barra.mjs` —los 1.673
   clubes, incluido el que juega de amarillo— se corrió igual después de tocarlo:
   la regla de esta hoja es que cualquier número se demuestra ahí, y eso vale
   para bajarlo aunque la dirección sea la segura.

   PERO ESE BARRIDO ERA CIEGO A LOS DEGRADADOS CUANDO SE CORRIÓ, y conviene que
   quede escrito acá y no sólo en la vara: `backgroundColor` de un elemento
   pintado con `linear-gradient` es transparente, así que el botón de acento del
   chrome no contaba como superficie y su texto se medía contra el TINTE en vez
   de contra el botón. Con tinta blanca eso pasaba de casualidad, y el verde con
   el que se defendió este número tenía una de sus tres patas hueca. Lo destapó
   la sesión de diseño el mismo día, al poner tinta casi negra: 1.673 rojos,
   todos en 1,00 exacto. Recorrido con la vara arreglada —`c99c8262`— el
   resultado se sostiene: 0 de 1.673, leyendo dos tintas en vez de tres. */
.chrome__row--primary {
  position: relative;
  isolation: isolate;
}

/* El tinte, en su propia capa detrás de todo lo de la fila. Va en un
   pseudo-elemento y no en el `background` de la fila porque la fila ya tiene el
   suyo —el del chrome— y superponerlos con `background-image` obliga a repetir
   el color de fondo en cada regla que toque la barra. */
.chrome__row--primary::before {
  content: '';
  position: absolute;
  inset: 0;
  z-index: -1;
  background: linear-gradient(
    to right,
    color-mix(in srgb, var(--club-fondo, transparent) 52%, var(--bg-chrome)) 0,
    color-mix(in srgb, var(--club-fondo, transparent) 52%, var(--bg-chrome)) 72px,
    color-mix(in srgb, var(--club-fondo, transparent) 34%, var(--bg-chrome)) 125px,
    color-mix(in srgb, var(--club-fondo, transparent) 14%, var(--bg-chrome)) 560px,
    var(--bg-chrome) 740px);
  pointer-events: none;
}

/* --------------------------------------------------------------------------
   EL TINTE VUELVE A MORIR, Y AHORA DONDE TERMINA LA NAVEGACIÓN (22/9/2026)
   --------------------------------------------------------------------------
   «El header me gustaría que sólo una parte tome el color del equipo» —Alberto,
   eligiendo entre seis tratamientos puestos sobre la barra de verdad en
   `herramientas/cabecera-variantes.html`.

   El bloque de arriba cuenta por qué el tinte había pasado a cruzar la barra
   entera, y ese motivo sigue siendo cierto: la captura del Atalanta la muestra
   teñida de punta a punta. Lo que cambió no es la medición sino la decisión —
   acá el lado derecho lleva el reloj, el buscador y el botón de tareas, que son
   del SISTEMA y no del club, y teñirlos los ata a una identidad que no es la
   suya.

   740 px NO ES UN NÚMERO SUELTO Y NO ES EL PRIMERO QUE PROBÉ. Escribí 660 a
   ojo y la barra me desmintió: medida a 1280 px, `.nav-primary` va de 127 a
   689, así que a los 660 los últimos treinta píxeles de «Carrera» ya caían
   sobre fondo neutro. 740 es el final de la navegación más el aire que el
   degradado necesita para morir sin borde. O sea que el color cubre exactamente
   lo que es del club —el escudo y sus destinos— y suelta lo que no: el
   buscador, el reloj y el botón de tareas son del SISTEMA, y teñirlos los ata a
   una identidad que no es la suya.

   Y ESTO NO PUEDE ROMPER EL BARRIDO DEL TINTE. Los dos primeros escalones —82 %
   y 46 %— quedan intactos, que son los que `vara-tinte-de-la-barra.mjs` barrió
   club por club. Lo único que cambia es que del 30 % parejo del final se baja a
   18 % y después a cero: menos tinte, nunca más. Un cambio que sólo resta no
   necesita volver a demostrar el techo.
   -------------------------------------------------------------------------- */

/* --------------------------------------------------------------------------
   Y EL TINTE LLEGA HASTA EL FINAL DE LA BARRA (21/9/2026)
   --------------------------------------------------------------------------
   Arriba está escrito que el tinte muere a los 320 px, medido 1:1 sobre un
   video de FM26. Ese número era real y se queda anotado, pero era de UN club:
   Alberto trajo la captura del Atalanta y ahí la barra está teñida de punta a
   punta, las dos filas. Lo que yo había medido era el degradado, no su alcance.

   Así que el degradado sigue —fuerte donde está el escudo, que es lo que le da
   el peso a la esquina— pero en vez de morir en el fondo del sistema baja a un
   tinte parejo que cubre el resto. Y la segunda fila lo toma también, más
   flojo, que es como se ve en la captura.

   EL 30 % NO ES GUSTO. El fondo tiene que seguir siendo oscuro con CUALQUIERA
   de los 1.656 clubes, incluido el que juega de amarillo: mezclado al 30 %
   contra `--bg-chrome` ni el más claro levanta lo suficiente como para
   comerse el texto. Está barrido club por club en
   `herramientas/vara-tinte-de-la-barra.mjs`, y el barrido es la condición para
   subirlo: cualquier número más alto se demuestra ahí antes de escribirse acá.

   LA SEGUNDA FILA VA MÁS OSCURA QUE LA PRIMERA y no al revés: lleva la
   subnavegación, que es texto chico, y es la fila donde el contraste se gasta
   antes. */
/* ══════════════════════════════════════════════════════════════════════════
   EL ESCUDO ENCENDIDO DETRÁS DE LA BARRA (22/9/2026)
   ══════════════════════════════════════════════════════════════════════════
   «Agreguemos un efecto con el escudo como acá» —Alberto, con la cabecera del
   Al-Nassr al lado— y después, cuando lo saqué por lo que dice abajo: «pero no
   me saques el escudo del header». Se queda. Lo que sigue es lo aprendido
   ajustándolo, que cambia los números y no la idea.

   EL ALTO DE LA FILA ES LA RESTRICCIÓN: 49 px. De ahí salen las tres reglas.

   1. ES UN RESPLANDOR, NO UN ESCUDO, Y ASÍ SE ELIGIÓ. De un escudo de 210 px
      en una fila de 49 se ve el 23 %: la franja del medio, desenfocada. Yo leí
      eso como un defecto —«no se reconoce el dibujo»— y lo «arreglé» bajándolo
      a 62 px y sacándole el blur, con lo que aparece un escudo NÍTIDO al lado
      de la placa. Alberto lo frenó: «se ve mal y distinto a como hace un rato
      elegí tenerlo».

      Tenía razón y el error fue de lectura. Lo que se eligió en
      `herramientas/cabecera-variantes.html` no era un segundo escudo chico:
      era una mancha ancha de color del club detrás del rincón, que es lo que
      hace la cabecera del Al-Nassr. Que no se reconozca el dibujo no es la
      falla, ES EL EFECTO. Los valores de abajo son los de esa variante, sin
      tocar.

   2. `z-index: 0` Y NO -1, y costó dos intentos. El tinte de la fila vive en un
      `::before` a -1 y es OPACO —un `color-mix` de dos colores opacos—, así que
      a -1 el escudo queda debajo y no se ve. Subirlo a `.chrome` fue peor: ese
      contenedor tiene fondo propio y `isolation: isolate`, o sea que a -1
      pinta detrás de su PROPIO fondo y desaparece del todo. En cero queda
      entre el tinte y el contenido, que es su sitio.

   VA PEGADO A LA PLACA, EN 150, Y NO MÁS A LA DERECHA. La placa ocupa de 72 a
   125 px medidos, así que centrado sobre ella el halo se esconde detrás del
   escudo chico: por eso arranca donde la placa termina.

   LO MOVÍ A 268 UNA VEZ Y ESTUVO MAL. El argumento era que a 150 quedaban dos
   escudos del mismo club a veinticinco píxeles y se leía como duplicado. En
   268 el escudo cae ENCIMA de «Plantilla» —no detrás de la palabra, sobre
   ella— y el rótulo queda partido por el dibujo, que es bastante peor que el
   duplicado que venía a resolver. Alberto lo vio con el América de Cali y lo
   frenó: «si lo teníamos bien, ¿para qué lo sacás?».

   La regla que queda: el halo va en el hueco entre la placa y el primer
   destino, y la máscara se encarga de que no llegue al texto. No hay más
   superficie libre en esta barra, y buscarla más a la derecha es pisar
   rótulos.

   DONDE ESTE EFECTO LUCE DE VERDAD ES EN UNA SUPERFICIE ALTA: la banda de
   `club.html` mide 143 px y el afiche de noticias 186. Acá hay 49 y por eso es
   una marca de agua y no una figura. Está puesto sabiendo eso.
   ══════════════════════════════════════════════════════════════════════════ */

/* --------------------------------------------------------------------------
   LA INTENSIDAD SALE DE OTRA SESIÓN, Y NO SE PISA (22/9/2026)
   --------------------------------------------------------------------------
   Los porcentajes de arriba —52 / 34 / 14— no son míos: son los que Alberto
   pidió hoy en la sesión de la mesa de negociación, «rojo, blanco, violeta, me
   queda muy feo», mirando la barra con Estudiantes. Al 82 % la fila era una
   franja de color y el botón quedaba encima.

   Los traigo ACÁ a propósito, antes de mover main. Mi cambio y el suyo tocan
   el MISMO gradiente: el mío decide DÓNDE muere —a los 740 px, donde termina
   la navegación— y el suyo CUÁNTO tiñe. Son dos preguntas distintas sobre la
   misma regla, así que el que mergeara segundo se comía al otro sin que el
   diff lo mostrara. Aviso de `trabajo/mesa-de-negociacion` (`d3521f2a`).

   Y no afloja nada de lo medido: menos tinte es más contraste. El barrido de
   los cinco clubes extremos daba 6,31 en el peor —Rafaela— con 82/46; con
   52/34 sólo puede subir.
   -------------------------------------------------------------------------- */
.chrome__halo {
  position: absolute;
  left: 24px;
  top: 50%;
  width: 210px;
  height: 210px;
  transform: translateY(-50%);
  object-fit: contain;
  pointer-events: none;
  z-index: 0;
  opacity: 0.34;
  filter: blur(5px) saturate(1.5);
  -webkit-mask-image: linear-gradient(to right, #000 48%, transparent 90%);
          mask-image: linear-gradient(to right, #000 48%, transparent 90%);
}
/* Y SE ACHICA EN EL TELÉFONO, PORQUE AHÍ NO ES UN RINCÓN SINO MEDIA BARRA.
   --------------------------------------------------------------------------
   El tamaño se eligió mirando 1280, donde 210 px de escudo arrancando en 24
   ocupan hasta el 234: el 18 % del ancho, o sea un rincón. A 375 —el ancho de
   teléfono con el que se mide todo acá— esos mismos números tapan el 56 %, y
   deja de ser un fondo para ser una mancha atravesada en la mitad de la barra.

   No se vio antes porque la paleta se barrió a 1280. Apareció recién al
   probarla en teléfono, que es la clase de cosa que un ancho solo no contesta.

   120 px desde el borde mantienen la proporción: a 375 ocupan el 34 %, que es
   lo más parecido al rincón de escritorio que entra acá. */
@media (max-width: 700px) {
  .chrome__halo {
    left: 8px;
    width: 120px;
    height: 120px;
    opacity: 0.28;
  }
}

/* El que pide contraste alto no quiere una imagen debajo del texto. */
@media (prefers-contrast: more) {
  .chrome__halo { display: none; }
}

/* --------------------------------------------------------------------------
   EL TRAMO FUERTE SE QUEDA DEBAJO DEL ESCUDO (22/9/2026)
   --------------------------------------------------------------------------
   El 82 % arrancaba en 0 y bajaba al 46 % recién a los 320 px, o sea que los
   destinos de la navegación —que empiezan en 127— caían sobre un tinte al
   67 %. Medido en la barra andando, con la tinta que llevaban:

       destino        tinte   --text-secondary
       Portal          67 %       2,18  (Rafaela)   2,34  (Racing)
       Plantilla       60 %       2,59              2,75
       Contratación    50 %       3,22              3,40

   Tres destinos de seis por debajo de 4,5:1 con los clubes claros, y no es un
   defecto que trajo este cambio: los dos escalones eran los de main.

   EL ARREGLO ES EL MISMO QUE YA SE USÓ EN LA SEGUNDA FILA —subir la tinta, no
   bajar el color— pero acá solo no alcanzaba: con `--text-primary` los cinco
   últimos destinos pasan y «Portal» se queda en 3,89. A 67 % de tinte la
   superficie es de luz MEDIA, y ahí no hay tinta de la escala que llegue: ni la
   clara ni la oscura, que es la misma pared contra la que se choca
   `tonoLegible()` en `mundo.js`.

   Así que el color no baja: se CORRE. El 82 % se queda plano hasta los 72 px y
   cae al 46 % a los 125, que NO son números elegidos: medida la barra a 1280,
   `.chrome__placa` —el escudo, donde no hay texto— va de 72 a 125, y el primer
   destino arranca en 130. O sea que el tramo fuerte ocupa exactamente el ancho
   del escudo y se termina justo antes de la primera palabra.

   (El primer intento puso la caída en 104→158 y quedó corto: «Portal» caía
   ADENTRO de la rampa, sobre un 65 % de tinte, y Rafaela se quedaba en 4,12.
   El número no se estimó dos veces; la segunda se midió el elemento.)

   La esquina sigue pesando lo mismo, que es lo que le da el porte, y los
   destinos arrancan sobre 46 %. Es mover el color a donde no estorba, no
   apagarlo.
   -------------------------------------------------------------------------- */
.chrome__row--secondary {
  position: relative;
  isolation: isolate;
}
/* Y LA SUBNAVEGACIÓN SUBE UN ESCALÓN DE TINTA. Sus destinos inactivos estaban
   en `--text-muted`, que alcanzaba de sobra sobre el fondo plano del sistema.
   Con la fila teñida el fondo se aclara, y barridos los 1.673 clubes el gris
   quedaba por debajo de 4,5:1 en 80 de ellos — los que juegan de amarillo, de
   verde lima y de celeste, con Vegalta Sendai en 3,54:1 como el peor.

   Se podía bajar el tinte al 10 %, que es donde los 1.673 pasan, y era la
   salida mala: al 10 % el color del club no se ve, que es justamente lo que se
   vino a hacer. Lo que se sube es la tinta, y sólo la de esta fila: el fondo
   cambió, así que lo que se apoya en él tiene que cambiar con él.

   (El «Favoritos» de la derecha iba en esta misma regla por compartir fila y
   fondo; la barra se fue el mismo día, más abajo está el porqué.) */
.chrome__row--secondary .nav-sub__item:not([aria-current]):not(.nav-sub__item--marcado) {
  color: var(--text-secondary);
}

/* Y LA NAVEGACIÓN PRIMARIA SUBE EL SUYO, por el mismo motivo y con el mismo
   criterio: el fondo de esta fila cambió, así que lo que se apoya en él cambia
   con él. Con `--text-primary` y el tramo fuerte ya corrido debajo del escudo,
   el peor de los cinco clubes probados —Rafaela, el fondo más claro que existe
   en el juego— queda en 4,61:1 en «Plantilla» y de ahí para arriba. */
.chrome__row--primary .nav-primary a:not([aria-current]),
.chrome__row--primary .nav-primary button:not([aria-current]) {
  color: var(--text-primary);
}

/* ══════════════════════════════════════════════════════════════════════════
   «ACÁ ESTÁS» DEJA DE SER UN COLOR Y PASA A SER UN RELLENO (22/9/2026)
   ══════════════════════════════════════════════════════════════════════════
   Lo obligó la paleta monocroma. Con el acento en blanco, `--nav-aqui` y la
   tinta de los destinos inactivos son EL MISMO BLANCO: medido en la barra
   andando, activo e inactivo salían en `rgb(255,255,255)` con peso 700 los dos
   y una razón de contraste entre ellos de 1,00. O sea que el destino abierto
   dejaba de señalarse por completo.

   No es un defecto de la paleta monocroma: es que el sistema apoyaba TODA la
   señal en el matiz. Una paleta sin matiz lo deja a la vista, igual que el
   panel claro dejó a la vista que `tonoLegible()` tenía la dirección fija.

   Así que la señal se muda a lo único que no depende del tono: la INVERSIÓN
   figura-fondo. El destino abierto se rellena con el acento y se escribe con
   `--text-on-accent`, que es el par que el sistema ya garantiza legible en
   cualquier paleta —negro sobre blanco acá, casi negro sobre amarillo en la
   ácida, blanco sobre violeta en la de hoy—.

   Y GANA EN LAS TRES, no sólo en la monocroma: un relleno se ve de más lejos
   que un cambio de tinta, que es lo que hace FM con la sección abierta. */
.chrome__row--primary .nav-primary [aria-current] {
  background: var(--accent);
  color: var(--text-on-accent);
  border-radius: var(--r-sm);
  padding-inline: 10px;
}
.chrome__row--primary .nav-primary [aria-current] .i {
  color: var(--text-on-accent);
}

/* Y EL «ESTÁS ACÁ» SUBE UN ESCALÓN DE LA MISMA ESCALA. Con los inactivos
   arreglados, el que quedaba corto era el magenta del destino abierto: 3,98:1
   con el club más claro. Se mueve DENTRO de su escala —`--hueso-400` a
   `--hueso-300`, el mismo tono dos grados más claro— y no a otro color: lo que
   dice «estás acá» en todo el juego es el magenta, y cambiarlo por contraste
   sería arreglar el número rompiendo el significado. */
.chrome__row--secondary .nav-sub__item[aria-current] { color: var(--hueso-300); }

.chrome__row--secondary::before {
  content: '';
  position: absolute;
  inset: 0;
  z-index: -1;
  background: linear-gradient(
    to right,
    color-mix(in srgb, var(--club-fondo, transparent) 34%, var(--bg-chrome)) 0,
    color-mix(in srgb, var(--club-fondo, transparent) 34%, var(--bg-chrome)) 72px,
    color-mix(in srgb, var(--club-fondo, transparent) 22%, var(--bg-chrome)) 125px,
    color-mix(in srgb, var(--club-fondo, transparent) 9%,  var(--bg-chrome)) 560px,
    var(--bg-chrome) 740px);
  pointer-events: none;
}

/* --------------------------------------------------------------------------
   LA SEGUNDA FILA TIENE QUE MORIR DONDE MUERE LA PRIMERA (22/9/2026)
   --------------------------------------------------------------------------
   Era un TINTE PLANO al 20 % a lo ancho, y ese número hacía juego con el
   82/46/30 de la primera fila: más flojo que ella en todo punto, que es lo que
   pide la sección 1 de arriba —«la segunda fila va más oscura que la primera y
   no al revés», porque lleva la subnavegación, que es texto chico—.

   Al hacer morir el tinte de la primera fila a los 740 px rompí esa relación
   sin darme cuenta: de ahí a la derecha la de arriba queda en cromo puro y la
   de abajo seguía teñida. O sea justo al revés de lo que el archivo declara, y
   en más de la mitad del ancho.

   Lo encontró la sesión de la mesa de negociación midiendo lo SERVIDO —un
   árbol montado en `0621cd1b`, con el rojo de Estudiantes a 1440 de ancho—:
   arriba `rgb(15,15,15)`, cromo puro; abajo `srgb(0.225, 0.075, 0.084)`, rojo.
   Yo no lo había visto porque miré las capturas a 1280 y con Racing, que es
   celeste y sobre negro casi no se nota.

   Así que la segunda fila deja de ser plana y copia la FORMA de la primera —
   las mismas cuatro paradas, muriendo en el mismo sitio— con los valores a dos
   tercios: 34 / 22 / 9 contra 52 / 34 / 14. Más floja que ella en cada x, y
   las dos en cero desde los 740.
   -------------------------------------------------------------------------- */

/* El escudo, suelto. Sin caja, sin borde, sin corchetes: lo único que lo separa
   del fondo es su propio dibujo, que es como se ve un escudo en cualquier lado.
   Crece a 64 porque ya no tiene que caber dentro de nada. */
/* LA PLACA ES UN MANDO Y TIENE QUE PARECERLO (8/9/2026). Era un enlace mudo al
   Portal y ahora abre la salida del juego —la portada y guardar una copia—,
   porque es lo ÚNICO que se ve en la fila de arriba a todos los anchos y es
   donde la gente hace clic para volver al principio. El porqué entero está en
   `chrome.js`.

   NO LLEVA CHEVRÓN y el porqué está en `chrome.js`: no entra en ningún ancho
   sin caer encima del escudo, y ahí su contraste pasaría a depender de cuál de
   los 1.656 escudos tenés puesto. Lo que sí lleva es el acuse de abierta, que
   es la misma marca que usan las secciones y no cuesta un píxel. */
.chrome__placa {
  display: grid;
  place-items: center;
  flex: none;
  padding-inline: var(--sp-3);
}
.chrome__placa[aria-expanded='true'] { background: var(--bg-active); }
.chrome__placa .crest { width: 64px; height: 64px; }

/* --------------------------------------------------------------------------
   2. LOS DESPLEGABLES DE LA NAVEGACIÓN
   --------------------------------------------------------------------------
   El chevrón sólo aparece donde hay algo que desplegar: «Club» no tiene
   subsecciones y no lo lleva. Un chevrón sobre un enlace liso es la interfaz
   prometiendo un menú que no existe.
   -------------------------------------------------------------------------- */

.nav-primary__item .nav-primary__chev {
  width: 12px; height: 12px;
  margin-left: 1px;
  color: currentColor;
  opacity: 0.5;
  transition: transform var(--dur-fast) var(--ease), opacity var(--dur-fast) var(--ease);
}
.nav-primary__item[aria-expanded='true'] .nav-primary__chev { opacity: 1; }
@media (hover: hover) {
  .nav-primary__item:hover .nav-primary__chev { opacity: 1; }
}
.nav-primary__item[aria-expanded='true'] .nav-primary__chev { transform: rotate(180deg); }
.nav-primary__item[aria-expanded='true'] { background: var(--bg-active); color: var(--text-primary); }

/* El panel. Mismo vocabulario que el menú del botón derecho —panel sobre línea
   fuerte, sin sombra— porque es la misma clase de superficie: algo que se
   apoya sobre lo que estabas mirando y se va. */
.nav-menu {
  position: fixed;
  z-index: var(--z-flotante);
  min-width: 208px;
  padding: var(--sp-2);
  border: 1px solid var(--line-strong);
  border-radius: var(--r-md);
  background: var(--bg-panel);
}
.nav-menu[hidden] { display: none !important; }

.nav-menu__item {
  display: flex;
  align-items: center;
  gap: var(--sp-4);
  height: 30px;
  padding: 0 var(--sp-4);
  border-radius: var(--r-sm);
  color: var(--text-secondary);
  font-size: var(--fs-sm);
  white-space: nowrap;
}
.nav-menu__item .i { color: var(--icon-quiet); flex: none; }
.nav-menu__item:focus-visible { background: var(--bg-active); color: var(--text-primary); }
@media (hover: hover) {
  .nav-menu__item:hover { background: var(--bg-active); color: var(--text-primary); }
}
.nav-menu__item:focus-visible .i { color: var(--text-secondary); }
@media (hover: hover) {
  .nav-menu__item:hover .i { color: var(--text-secondary); }
}
.nav-menu__item[aria-current='page'] { color: var(--nav-aqui); }
.nav-menu__item[aria-current='page'] .i { color: var(--nav-aqui); }

/* EL PIE DEL MENÚ DEL CLUB: EL IDIOMA.

   Los dos botones usan `.nav-menu__item` entera —la misma altura, el mismo
   filete, el mismo hover— pero un `<button>` no hereda ni la tipografía ni el
   ancho del contenedor, así que hay que devolvérselos: sin esto los dos
   renglones salían con la letra del sistema y a la mitad del ancho de los
   enlaces de arriba, en el mismo panel.

   El elegido se marca con `aria-current="true"` y no `"page"`: no es la página
   en la que estás, es la opción que tenés puesta. Toma el mismo color por la
   regla de abajo, que es lo que hace que las dos marcas se lean igual. */
button.nav-menu__item {
  width: 100%;
  border: 0;
  background: none;
  font: inherit;
  font-size: var(--fs-sm);
  text-align: left;
  cursor: pointer;
}

.nav-menu__item[aria-current='true'] { color: var(--nav-aqui); }
.nav-menu__item[aria-current='true'] .i { color: var(--nav-aqui); }

/* La raya y el rótulo que separan el idioma de los destinos: son dos cosas
   distintas —adónde vas y cómo lo leés— y sin la raya se leían como un destino
   más de la sección Club. */
.nav-menu__sep {
  height: 1px;
  margin: var(--sp-2) var(--sp-4);
  background: var(--line);
}

.nav-menu__rotulo {
  display: block;
  padding: 0 var(--sp-4);
  margin-bottom: var(--sp-1);
  font-size: var(--fs-2xs);
  font-weight: 600;
  letter-spacing: var(--tracking-label);
  text-transform: uppercase;
  color: var(--text-muted);
}

/* LA NOTA DEL PIE: «se guarda sola». No es un destino ni una acción, así que no
   lleva el filete de `.nav-menu__item` ni reacciona al puntero — es la única
   línea del panel que se lee y no se pulsa, y tiene que verse así antes de
   leerse. Va debajo del rótulo y no al lado del botón porque contesta a los
   dos: el que guarda una copia y el que se va a la portada quieren saber lo
   mismo, que lo suyo no se pierde al cerrar la pestaña.

   Rompe el `nowrap` de los ítems a propósito: es una frase, no un rótulo, y en
   un panel de 208 px entra en dos renglones. El `balance` es por lo que pasaba
   sin él: el panel lo ensancha el ítem más largo —«Las ligas del mundo»— así
   que la frase entraba casi entera y dejaba «navegador.» sola en el segundo
   renglón. Con las dos líneas parejas se lee como una nota y no como un texto
   que no entró. */
.nav-menu__nota {
  padding: 0 var(--sp-4);
  margin: 0 0 var(--sp-2);
  max-width: 26ch;
  font-size: var(--fs-2xs);
  line-height: 1.35;
  white-space: normal;
  text-wrap: balance;
  color: var(--text-muted);
}

/* EL DESTINO QUE ESTÁ Y NO SE PUEDE ABRIR. La pretemporada existe todo el año y
   sólo se arma en julio; esconderla el resto sería una pantalla que aparece y
   desaparece sin avisar, que es la peor manera de enseñar que existe.

   Se apaga y DICE POR QUÉ en el mismo renglón. Un ítem gris sin explicación
   manda a probar clic tras clic; con el motivo al lado se aprende cuándo vuelve.
   El alto crece porque ahora lleva dos líneas: el nombre y la razón. */
.nav-menu__item[aria-disabled='true'] {
  height: auto;
  padding-top: var(--sp-2);
  padding-bottom: var(--sp-2);
  flex-wrap: wrap;
  color: var(--text-disabled);
  cursor: default;
}
.nav-menu__item[aria-disabled='true'] .i { color: var(--text-disabled); }
@media (hover: hover) {
  .nav-menu__item[aria-disabled='true']:hover { background: transparent; color: var(--text-disabled); }
}
.nav-menu__item[aria-disabled='true'] small {
  flex-basis: 100%;
  padding-left: calc(var(--sp-4) + 16px);
  font-size: var(--fs-2xs);
  line-height: 1.35;
  white-space: normal;
  color: var(--text-disabled);
}


/* --------------------------------------------------------------------------
   3. EL BUSCADOR GLOBAL Y LA FILA DE UTILIDADES
   -------------------------------------------------------------------------- */

.chrome__utiles { display: flex; align-items: center; gap: var(--sp-1); flex: none; }

.chrome__util {
  display: grid;
  place-items: center;
  width: 30px; height: 30px;
  border-radius: var(--r-sm);
  color: var(--icon-quiet);
  transition: background var(--dur-fast) var(--ease), color var(--dur-fast) var(--ease);
}

/* EL GLIFO VA A 16 Y NO A LOS 13 DE `i--sm`. Estos cuatro son las únicas
   entradas a la portada, al mundo, al recorrido y a favoritos que hay en la
   barra, y estaban dibujados con el tamaño chico de la escala adentro de un
   botón de 30: un glifo de 13 deja el 81 % de la caja vacía y se lee como un
   icono apagado, no como un botón. Pasaron primero a 16 —el tamaño BASE de la
   escala, el de `.i`— y de ahí a 18 el 1/9/2026, mirándolos: 16 seguía leyéndose
   chico en la fila de 30. A 18 la tinta ocupa el 36 % de la caja, y el área
   táctil no se mueve ni un píxel porque la manda el botón y no el glifo.

   18 NO ESTÁ EN LA ESCALA de `app.css` —que tiene 13, 16 y 20— y es a
   propósito: no es un tamaño nuevo del sistema, es el porte de ESTA barra, que
   es la única fila donde un glifo vive solo dentro de un botón de 30 sin texto
   al lado que le dé cuerpo. Si algún día son tres las barras así, ahí sí va a
   la escala.

   VA ACÁ Y NO EN `.i--sm`, que vive en `app.css` y la usan las veintitantas
   pantallas: subir la escala entera movería anchos medidos en tablas y fichas
   que no tienen nada que ver con esta barra. */
.chrome__util .i { width: 18px; height: 18px; }
@media (hover: hover) {
  .chrome__util:hover { background: var(--bg-active); color: var(--text-primary); }
}
.chrome__util[aria-expanded='true'] { background: var(--bg-active); color: var(--accent-strong); }

/* El buscador del chrome es un BOTÓN hasta que lo pulsás, y ésa es la
   diferencia con los cinco buscadores de pantalla que ya tiene el juego: aquéllos
   filtran una lista que está ahí, y éste abre un sitio nuevo. Un `<input>`
   permanente en la barra promete filtrar la pantalla. */
.buscador-global {
  display: flex;
  align-items: center;
  gap: var(--sp-4);
  width: 176px;
  height: 32px;
  padding: 0 var(--sp-5);
  border: 1px solid var(--line);
  border-radius: var(--r-pill);
  background: var(--ink-1000);
  color: var(--text-muted);
  font-size: var(--fs-sm);
  transition: border-color var(--dur-fast) var(--ease), color var(--dur-fast) var(--ease);
}
@media (hover: hover) {
  .buscador-global:hover { border-color: var(--line-strong); color: var(--text-secondary); }
}
.buscador-global .i { flex: none; }

/* --------------------------------------------------------------------------
   DÓNDE CEDE LA FILA, Y EN QUÉ ORDEN
   --------------------------------------------------------------------------
   El primer piso pasó de cinco piezas a ocho, y el sobrante que antes repartía
   entre el reloj y el hueco se acabó. Sin un orden declarado, el que cedía era
   el que tuviera `min-width: 0` —el reloj, a 28px, o sea a nada— mientras el
   buscador conservaba su palabra y CONTINUAR se cortaba contra el borde. Eso
   está al revés: el reloj dice cuándo estás parado, el buscador es un atajo, y
   la acción principal no se corta nunca.

   El orden, de lo primero que se va a lo último:

     1760  la palabra «Buscar» — el icono ya dice qué es
     1700  el aire: canalón de fila y flancos de la navegación
     1400  la navegación baja un escalón de cuerpo (21 → 18)
     1500  la marca de competición — el reloj ya nombra el torneo al lado
     1300  las utilidades — son atajos, y el reloj es estado
     1240  el reloj entero (regla que ya existía)
     1080  lo que ya había: navegación a 16 y buscadores de pantalla en icono

   Los números salen de MEDIR la fila a cada ancho, no de estimarla: la cuenta a
   mano daba 1.370 donde el navegador daba 1.333, porque los flancos de la
   navegación cambian con el propio quiebre que se está midiendo.

   Todo se mide contra el ANCHO DE VENTANA aunque el sitio se dibuje con
   `zoom` (`--escala-sitio`): una media query no sabe del zoom, así que a 1440
   de ventana la fila tiene 1.384 de maquetación —con la escala en 1,04; eran
   1.333 cuando estaba en 1,08—. Por eso los cortes están donde están y no
   donde parecería. -------------------------------------------------------- */
@media (max-width: 1760px) {
  .buscador-global__txt { display: none; }
  .buscador-global { width: 32px; padding: 0; justify-content: center; }
}
@media (max-width: 1700px) {
  .chrome__row--primary { gap: var(--sp-4); }
  /* La navegación cede AIRE, no cuerpo. Son seis palabras largas en español
     —«Contratación», «Día del partido»— y achicarlas acá es perder el escalón
     que las hace navegación; juntarlas 2px por lado, no. */
  .nav-primary { gap: 0; }
  .nav-primary__item { padding-inline: var(--sp-3); }
}
/* LAS TRES GRADAS SON UNA, Y ESTÁ DONDE EL MOBILIARIO ENTRA.

   Eran tres —la tipografía a 1400, las utilidades y la placa a 1300— y las tres
   devolvían mobiliario ANTES de que hubiera sitio, así que ensanchar la ventana
   ROMPÍA la navegación. Medido en una carrera de Boca:

     ancho   1280  1300  1301  1350  1400  1440  1500  1560
     sobra      0     0   138    93    46    77    21     0

   A 1300 entran las seis secciones; a 1301 se pasa 138 px. Al cruzar, la
   ventana gana UN píxel y la fila pide 167 más — hijo por hijo:

     1300  placa 65  utiles   0  hueco 6   nav 671 de caja, 621 de contenido
     1301  placa 82  utiles 138  hueco 8   nav 521 de caja, 621 de contenido

   Vuelven las utilidades (+138), engorda la placa (+17) y el hueco pasa de 6 a
   8 (+12). Y quien lo paga es siempre la misma: `.chrome__utiles` es
   `flex: 0 0 auto` y no cede nunca; la navegación es la única `0 1 auto` con
   `min-width: 0`. En 1400 pasaba lo mismo por el otro lado: el tipo sube de 18
   a 21 y el contenido de la nav salta de 621 a 688.

   LA NAVEGACIÓN VA ANTES QUE LAS UTILIDADES, y esta hoja ya tenía escrita la
   mitad de la regla —«las utilidades se van antes que el reloj»—. Los cuatro
   botones de ahí son ATAJOS: buscador, ligas del mundo, tu recorrido y
   favoritos, y los cuatro se alcanzan por la navegación. Esconder un atajo
   cuesta un clic; esconder secciones detrás de un arrastre cuesta encontrarlas.

   EL NÚMERO SALE DEL PEOR ESTADO Y NO DEL CÓMODO, que es la lección que la
   grada de abajo ya dejó escrita en este mismo archivo. La fila no mide siempre
   lo mismo: el rótulo del botón va de «Continuar» (145) a «Te esperan 12
   tareas» (235, el más ancho de `continuar.js:143`), el reloj encoge hacia su
   piso de 140 según la fecha, y `.comp-marca` aparece y desaparece con la copa.
   Con los textos de hoy la fila entera entra desde 1530; con los peores, desde
   1588 DE MAQUETACIÓN. Y de ahí al número del `@media` hay un salto que no se
   ve: **la consulta mide la VENTANA y la maquetación recibe ventana menos la
   BARRA**, y en toda pantalla que rueda la página la vertical es clásica —las
   reglas traen `scrollbar-color`, y Chrome con eso puesto no usa superposición—
   y se lleva 15 px. Comprobado en ventana de verdad, no en iframe: con la grada
   en 1600, a 1601 de ventana la maquetación recibía 1586 y en el peor estado
   quedaban 2 px de navegación fuera. La cuenta es `1588 + 14`; va 1620, que
   deja diecisiete de aire.

   Y el error se paga distinto de cada lado, así que se redondea hacia arriba a
   propósito: tarde, se esconden cuatro atajos unos píxeles de más y no lo nota
   nadie; temprano, se van secciones del juego detrás de un arrastre lateral. */
@media (max-width: 1620px) {
  .nav-primary__item { font-size: var(--fs-lg); }
}
/* EL LOGO DE COMPETICIÓN YA NO SE VA. Se escondía a 1500 con este argumento:
   «el reloj ESCRIBE el torneo y el logo lo dibuja; de los dos se queda el que
   se puede leer en voz alta». El argumento era bueno y dejó de ser cierto — la
   caja de fecha ya no escribe el torneo, dice sólo cuándo, como la fuente. Sin
   ese texto, esconder el logo es quedarse sin decir en qué competición estás.

   Y el sitio salió de donde estaba el problema: la caja liberó los ~100 px que
   se llevaba el nombre del torneo, que es más de lo que el logo ocupa. */

/* La placa se estrecha y el hueco se aprieta con la misma grada de arriba: los
   tres ajustes valen 167 px juntos y hay que darlos —o quitarlos— de una vez.
   Estaban en 1300 con este argumento, que sigue siendo cierto para lo que
   miraba: «la banda entre 1240 y 1300 es la peor de todas y era donde CONTINUAR
   se cortaba». Lo que no miraba es lo que pasa ARRIBA del número. */
@media (max-width: 1620px) {
  .chrome__placa .crest { width: 48px; height: 48px; }
  .chrome__row--primary { gap: var(--sp-3); }
}
/* El reloj no baja de acá: recortado con puntos suspensivos sigue diciendo el
   torneo, pero por debajo de 140px lo que queda es «Primera Divi…» sin fecha,
   que es un rótulo ilegible ocupando sitio. Antes de eso ceden los de arriba. */
.clock { min-width: 140px; }
/* LAS UTILIDADES SE VAN ANTES QUE EL RELOJ, y hasta hoy se iban después: el
   orden decía 1240 el reloj y 1180 las utilidades, que contradice el motivo por
   el que este orden existe —«el reloj dice cuándo estás parado, el buscador es
   un atajo»—. Estaba escrito el argumento y aplicado al revés.

   Se arregla ahora porque hacía falta: con la cara nueva, a 1280 la fila se
   pasaba 36 px y CONTINUAR colgaba 24 fuera de la ventana. Sacar las utilidades
   devuelve 128 y de paso pone el orden de acuerdo con su propia razón. */
/* EL UMBRAL BAJÓ DE 1620 A 1080 (21/9/2026), Y EL NÚMERO VIEJO NO ESTABA MAL:
   ESTABA VENCIDO.
   --------------------------------------------------------------------------
   Los 1620 se midieron con el botón de Favoritos todavía en esta fila. Esa
   barra se fue esta misma mañana y con ella su botón, así que el presupuesto
   de ancho cambió y nadie volvió a medirlo. Alberto lo notó por el otro lado:
   «añadime la opción de ir a la home», que estaba puesta desde hace semanas y
   escondida en su ventana de 1260.

   Medido ahora, con la fila en `max-content` y sin dejar encoger a nadie —que
   es la única forma de saber lo que PIDE: en una fila flex, `scrollWidth`
   iguala a `clientWidth` siempre y la primera medición decía «entra» en los
   diez anchos, incluidos los que desbordan—:

     ventana   pide    hueco
       1620    1333    1841   entra
       1400    1333    1591   entra
       1280    1333    1455   entra
       1260    1333    1432   entra   ← la de Alberto
       1100    1187    1250   entra
       1024    1183    1164   NO entra

   El corte cae entre 1024 y 1100. Va 1080, redondeado hacia arriba por lo
   mismo que decía el número viejo: tarde, se esconden tres atajos unos píxeles
   antes de hacer falta y se llega igual por la navegación; temprano, la fila
   entera se corre de costado. */
@media (max-width: 1080px) {
  .chrome__utiles { display: none; }
}

/* LA ÚLTIMA GRADA NO ES UNA GRADA: NO LLEVA `@media`, y es a propósito.

   MEDIDA, la fila primaria no baja de 941 px de maquetación —64 el historial,
   60 la placa, 613 la navegación, 32 la marca de competición, 130 CONTINUAR,
   más los seis huecos y el relleno—. Contra el ancho de ventana eso son 1.016,
   y la grada siguiente estaba en 860 (`app.css`): entre 861 y 1016 la fila se
   pasaba y no la sostenía nadie. Lo que sobraba, medido en una carrera de
   Boca: 15 px a 1000, 52 a 960, 108 a 900, 144 a 861.

   ESTO EMPEZÓ SIENDO UN `@media (max-width: 1020px)` Y DURÓ MEDIO DÍA. El
   número era correcto y aun así llegaba tarde, por dos motivos que son el
   mismo: **el número que se escribe en un `@media` no es el ancho que va a
   tener la caja.**

     · La media query mide la VENTANA y la maquetación recibe ventana menos
       BARRA. En una pantalla que rueda la página, la vertical clásica se lleva
       15 px: a 1024 de ventana, `matchMedia('(max-width: 1020px)')` contesta
       que no y la fila tiene 1.009 útiles. La regla no entraba justo donde
       hacía falta. Medido en ventana de verdad, no en iframe —ahí las barras
       son de superposición y el defecto no aparece—.

     · Y los 941 NO SON UNA CONSTANTE: son los de esta partida, en este
       momento. Dos cosas los mueven, y las dos aparecen y desaparecen solas:

       `.comp-marca` viene vacía mientras no estés en una copa, así que la
       misma fila mide 931 en un club sin copa y ~1.017 en uno con copa.

       Y sobre todo EL RÓTULO DEL BOTÓN, que es el caso común y no el raro:
       `.chrome .action` es `flex: 0 1 auto` con el rótulo que dobla, así que
       cuando hay tareas pendientes —«Te esperan 2 tareas»— el botón se
       encoge y la fila entra; cuando no hay nada pendiente el rótulo es
       «Continuar», entra en un renglón y la fila pide más. El defecto
       aparecía justo en el estado en que no hay nada que hacer, que es el más
       frecuente, y se tapaba solo en cuanto había algo pendiente.

       Un umbral fijo elegido con cualquiera de los dos estados reabre el
       defecto en el otro, y un defecto que va y viene con la partida es peor
       que uno fijo: no se reproduce a pedido.

   Sin `@media` no hay umbral que elegir mal. Mientras la lista entre, un
   contenedor que puede desplazarse y no tiene nada que desplazar no se ve ni
   se comporta distinto: `scrollWidth === clientWidth`, no hay barra —va
   escondida igual— y el `scrollIntoView` de `chrome.js` con `nearest` es
   inerte. Cede exactamente cuando hace falta, sea por ancho de ventana, por
   barra clásica, por el zoom del sitio o por una marca de competición que
   apareció el domingo. Comprobado que a 1021, 1040, 1280, 1440 y 2000 los seis
   hijos de la fila caen en el mismo píxel que con la grada puesta.

   Y lo que se veía NO era una barra de más: era CONTINUAR fuera de la ventana.
   En las pantallas de alto fijo —plantel, mercado, reserva— el `overflow:
   hidden` del `body` se propaga a la ventana y RECORTA, así que el botón no
   estaba cortado a medias: no estaba, y no había barra ni rueda que lo trajera.
   En las que sueltan la página aparecía una barra horizontal y había que
   empujar la pantalla entera para pulsarlo. Las dos caras del mismo hueco.

   CEDE LA NAVEGACIÓN, NO LA FILA, y ahí está la diferencia con la grada de
   860: ésa pone `overflow-x: auto` en `.chrome__row` entera, que se lleva
   CONTINUAR adentro del desplazamiento —la acción principal del juego detrás
   de un arrastre lateral—. Acá se desplaza sólo la lista de secciones, que es
   una lista y las listas se desplazan, y los cuatro fijos siguen fijos.

   La barra no se pinta porque la respuesta a «¿dónde estoy?» no la da una
   barra: `chrome.js` trae al sitio la sección en la que estás. */
.nav-primary {
  /* `0 1 auto` y NO `1 1 auto`: sólo hace falta que CEDA, no que crezca.
     Con `flex-grow: 1` la navegación se reparte el hueco libre con
     `.chrome__spacer` y queda más ancha de lo que mide su contenido — medido a
     1280, 613 px de secciones en una caja de 654—. No se ve, porque el hueco
     que gana es tan vacío como el del espaciador, pero es un cambio sin motivo
     en la única fila que tiene todo puesto a mano. */
  flex: 0 1 auto;
  min-width: 0;
  overflow-x: auto;
  scrollbar-width: none;
  /* EL RELLENO ES PARA EL ANILLO DE FOCO, y el margen negativo lo devuelve.
     `overflow: auto` recorta contra la caja de relleno aunque no haya nada que
     desplazar, y el anillo del sistema —`outline: 2px` con `outline-offset: 2`
     en `app.css:74`— se dibuja 4 px FUERA de la caja del ítem. Medido: los seis
     ítems miden exactamente el alto de la fila, y el primero y el último tocan
     sus bordes, así que el anillo quedaba recortado por los cuatro costados y
     la navegación con teclado dejaba de decir dónde estaba el foco.
     Los cuatro píxeles se los devuelve el margen: la caja de fuera mide lo
     mismo que antes y ningún hijo de la fila se mueve. */
  padding: 4px;
  margin: -4px;
}
.nav-primary::-webkit-scrollbar { display: none; }

/* Y CUANDO ESCONDE, LO DICE. Ésta es la otra mitad de la decisión de arriba: la
   barra no se pinta porque «¿dónde estoy?» lo contesta `alSitio()`, pero eso
   deja sin contestar «¿hay más?». Medido a 1280 el 4/9/2026: el amortiguador de
   la fila es `.chrome__spacer` y son 19,7 px; agotado, esta caja se encoge y se
   come los ítems de a uno —72 px de secciones ocultas en el primer escalón, o
   sea «Club» y media «Carrera»— sin ninguna señal. Un menú al que le faltan dos
   entradas y se ve entero es peor que uno recortado: el que no las ve no las
   busca.

   ES UNA DEGRADACIÓN Y NO UNA FLECHA, y no es gusto: una flecha es un control
   —pide sitio en la fila que justamente no lo tiene, y hay que poder pulsarla—,
   mientras que el borde que se apaga no ocupa nada y dice lo único que hay que
   decir. Va de los DOS lados por separado: apagado a la izquierda significa
   «hay algo atrás», a la derecha «sigue», y con las dos puntas encendidas estás
   en el medio. El estado lo escribe `chrome.js` con `data-mas`, que es quien
   puede mirar el desplazamiento.

   LOS 24 px SALEN DEL CONTENIDO Y NO DE UN GUSTO: el ítem más angosto de la
   navegación es «Club» y mide 71, así que 24 apagan un tercio del más chico
   —se lee que sigue— y no alcanzan a tapar ninguno entero.

   ══ Y LA MITAD QUE FALTABA: LA FILA DE SOLAPAS (8/9/2026) ══
   Esto lo tenía la fila de SECCIONES y no la de subsecciones, y en el teléfono
   la que más esconde es la segunda: debajo de 860 las dos filas se desplazan
   —`app.css`, `.chrome__row { overflow-x: auto }`— y medido con
   `banco-las-tiras-del-chrome.mjs` sobre las 22 pantallas a 320/390/430 daba
   **43 tiras de solapas escondiendo hasta 316 px sin ninguna señal**. Cortaba
   la palabra al ras del borde, que es exactamente lo que llegó reportado por X
   —«en el celu el overflow le pinta berretín y no se entiende nada»—.

   No es una regla nueva: es la misma con el selector abierto. Va con `:is()`
   para no duplicar tres bloques, y la especificidad queda igual —las dos ramas
   son una clase sola, o sea (0,1,0), y `:is()` toma la de su argumento más
   específico—, que es lo que deja intacto el desempate de `:focus-within` de
   acá abajo. */
:is(.nav-primary, .chrome__row--secondary)[data-mas~='izq'] {
  mask-image: linear-gradient(to right, transparent 0, #000 24px);
}
:is(.nav-primary, .chrome__row--secondary)[data-mas~='der'] {
  mask-image: linear-gradient(to left, transparent 0, #000 24px);
}
:is(.nav-primary, .chrome__row--secondary)[data-mas~='izq'][data-mas~='der'] {
  mask-image: linear-gradient(to right, transparent 0, #000 24px,
                              #000 calc(100% - 24px), transparent 100%);
}

/* Y SE APAGA CON EL TECLADO ADENTRO. Medido a 1000 con 86 px de secciones
   escondidas: al tabular hasta «Carrera» el ítem queda a −0,1 px del borde
   derecho, o sea ENTERO dentro de los 24 del degradado, y con él su anillo de
   foco. Sería deshacer con una mano lo que el bloque de arriba arregla con la
   otra: esa caja se paga un relleno de 4 px y un margen negativo que lo
   devuelve sólo para que el anillo no se recorte.

   Se apaga entero y no sólo la punta enfocada porque `mask-image` no sabe de
   focos, y porque mientras el teclado está adentro la pregunta «¿hay más?» ya
   la contesta el propio recorrido: tabulando se llega a todas las secciones,
   estén desvanecidas o no. La señal es para el que mira, no para el que tabula.

   VA CON `[data-mas]` Y NO PELADO, y eso NO es adorno: `.nav-primary:focus-within`
   a secas es (0,2,0) y la regla de las dos puntas —`[data-mas~='izq'][data-mas~='der']`—
   es (0,3,0), así que la pisaba y esto no hacía NADA. Se computaba y no se
   aplicaba, que es el defecto que no da error ni se ve leyendo la hoja: hay que
   preguntarle a la propiedad. Con el atributo empata en (0,3,0) y gana por
   orden, que es el desempate correcto acá. Medido con foco puesto en «Carrera»:
   `maskImage` pasa de gradiente a `none`. */
.nav-primary[data-mas]:focus-within { mask-image: none; }


/* La solapa que sale de la pantalla. La flecha va apagada y no crece con el
   hover: es un signo de destino, no un control aparte — lo pulsable es la
   solapa entera. */
/* `--salta` SE FUE CON SUS DOS SOLAPAS (4/9/2026). Marcaba con una flecha las
   del portal que saltaban a otra pantalla, y esas dos salieron de la barra por
   repetidas: ver el comentario de `index.html`. Hoy ninguna solapa del juego
   salta, así que la regla no tenía a quién pintar. El glifo sigue en el sprite
   —`#i-externo`— para el día que una lo necesite de verdad. */

/* --------------------------------------------------------------------------
   4. LA BARRA DE FAVORITOS SE FUE (21/9/2026)
   --------------------------------------------------------------------------
   Acá vivían la barra de seis atajos del segundo piso, su panel de elección y
   la guarda que la escondía por debajo de 970 px. El porqué de la baja está en
   `chrome.js`, donde también estaba su código: ofrecía un atajo a lo que la
   navegación ya da a un clic y cobraba por él un renglón entero.

   LA GUARDA DE LOS 970 SE FUE CON ELLA Y NO HACE FALTA REEMPLAZARLA. Existía
   porque el segundo piso tenía DOS piezas rígidas compitiendo por el ancho
   —`.nav-sub` y `.marcadores`, las dos `flex: none`— y cuando no entraban no
   cedía ninguna: se corría la página entera de costado. Con una sola pieza esa
   competencia no existe.

   Si alguna vez vuelve una barra de atajos, lo que hay que volver a medir es
   eso: lo que pide la sección más ancha —el portal— más lo que pida la barra,
   y a ojo cerrado, achicando la ventana hasta que el desborde aparezca. El
   método está probado y es lo único que conviene heredar de aquella pieza.
   -------------------------------------------------------------------------- */


/* --------------------------------------------------------------------------
   5. CONTINUAR, EN DEGRADADO
   --------------------------------------------------------------------------
   Sólo la del chrome. Los otros dieciocho `.action` del juego —vender, firmar,
   listo— siguen siendo violeta pleno: si todo lo importante fuera degradado, el
   degradado dejaría de decir cuál es LA acción.
   -------------------------------------------------------------------------- */

.chrome .action {
  height: 38px;
  padding-inline: var(--sp-7) var(--sp-5);
  border-radius: var(--r-boton);
  background: var(--accent-degradado);
  /* Y EL RÓTULO NO SE PARTE. Es lo que hace VERDAD la regla que este archivo
     ya declaraba —«la acción principal NUNCA cambia de lugar, sólo de
     etiqueta»—: una etiqueta que se puede partir no cambia la etiqueta, parte
     el botón.

     El botón tiene alto fijo —38, y 34 debajo de 1080— y es `flex: 0 1 auto`,
     así que cuando la fila se quedaba sin sitio el rótulo doblaba y el
     contenido se salía de la píldora por abajo. Empezó cuando el botón pasó de
     decir «Continuar» a decir una frase (72cb072): «Continuar» nunca dobló.

     MEDIDO con «Te esperan 2 tareas» —el rótulo de entonces; hoy el botón dice
     el paso que sigue, ver el presupuesto reescrito al final de esta sección— y
     el ancho útil recortado 15 px, que es lo que se lleva una barra vertical
     clásica —contenido / caja—:

       ancho    doblando              con `nowrap`
        860     146 px, 2 renglones   206 px, 1 renglón
                38 / 34               34 / 34
        960     167, 2, 38 / 34       206, 1, 34 / 34
       1024     181, 2, 38 / 34       206, 1, 34 / 34
       1280     205, 2, 40 / 38       210, 1, 38 / 38

     Y no cuesta sitio a nadie más: el borde derecho del botón no se mueve
     —medido a 1000, queda en 972 con `nowrap` y sin él— y CONTINUAR sigue
     adentro con sus 12 px de aire en los cuatro anchos. Lo que cede son 24 a
     59 px MÁS de navegación, que es la que tiene que ceder (ver la regla de
     `.nav-primary` acá arriba).

     Sin barra clásica el defecto es el mismo, sólo que en anchos más chicos:
     lo que lo dispara es que la fila se quede sin sitio, no un número. */
  white-space: nowrap;
}
@media (hover: hover) {
  .chrome .action:hover:not(:disabled) { background: var(--accent-degradado-hover); }
}

/* --------------------------------------------------------------------------
   Y EL BOTÓN SE ADELANTA CUANDO LE PASÁS POR ENCIMA
   --------------------------------------------------------------------------
   «Otra animación, con el hover o algo» —Alberto, 22/9/2026—. El botón que
   relata el paso ya avisa solo —el anillo cada tres segundos, la palabra nueva
   entrando— y le faltaba contestar cuando lo mirás: hasta acá el hover era un
   cambio de degradado, que en dos violetas consecutivos casi no se ve.

   SON DOS GESTOS Y CADA UNO DICE UNA COSA DISTINTA:

     · LA PÍLDORA SE LEVANTA UN PÍXEL. Es el «te escuché» de cualquier control,
       y uno alcanza: dos ya es un botón que salta. Al pulsar vuelve a cero, que
       es el gesto completo —se levanta, se hunde— y no dos estados sueltos.
     · EL CHEVRÓN SE CORRE TRES. Éste es el que dice algo que el color no:
       ADÓNDE va. La flecha que ya estaba dibujada empuja hacia su lado, y con
       el rótulo diciendo «Contestar el planteo» eso se lee como el principio
       del viaje.

   `transform` Y NO `box-shadow`, y no es preferencia: el latido de
   `continuar.js` anima `box-shadow` con la API web, que está por encima de toda
   la cascada — una sombra de hover escrita acá no se vería nunca. Ver la nota
   entera al lado de `.action__mas` en `app.css`.

   SÓLO EN EL BOTÓN DEL CHROME, que es el que tiene el degradado y el oficio de
   llevarte a algún lado. Los otros dieciocho `.action` del juego siguen con su
   hover de color: si todo se levantara, levantarse dejaría de decir cuál es LA
   acción, que es el mismo argumento con el que este botón se quedó solo con el
   degradado.

   Y `hover: hover` deja afuera al teléfono, donde `:hover` se queda pegado
   después de tocar; `prefers-reduced-motion` lo apaga entero, y no se pierde
   nada: el degradado del hover sigue estando. */
@media (hover: hover) and (prefers-reduced-motion: no-preference) {
  .chrome .action {
    transition: background var(--dur-fast) var(--ease),
                transform var(--dur-fast) var(--ease);
  }
  .chrome .action > .i:last-child {
    transition: transform var(--dur-pantalla) var(--ease);
  }
  .chrome .action:hover:not(:disabled) { transform: translateY(-1px); }
  .chrome .action:hover:not(:disabled) > .i:last-child { transform: translateX(3px); }
  .chrome .action:active:not(:disabled) { transform: translateY(0); }
}
/* Y el `:active` deja de ser CAL. Estaba en verde-lima por herencia del mundo
   anterior —cuando la cal era el acento del producto— y desde el repintado
   pulsar Continuar daba un destello verde que ninguna guía pide. */
.chrome .action:active:not(:disabled) { background: var(--accent-degradado); filter: brightness(0.86); }
.chrome .action .i { opacity: 0.9; }

@media (max-width: 1080px) {
  .chrome .action { height: 34px; padding-inline: var(--sp-6) var(--sp-4); }
}


/* --------------------------------------------------------------------------
   6. LA FILA PRIMARIA EN EL TELÉFONO
   --------------------------------------------------------------------------
   Debajo de 860 la fila entera pasa a ser un carrusel horizontal
   (`app.css`, `.chrome__row { overflow-x: auto }`). Esa decisión se queda: en
   347 px de ancho útil no hay forma de que entren la placa del club, las seis
   secciones y CONTINUAR, y las otras dos salidas —plegar la barra o esconder
   secciones— cuestan más de lo que arreglan.

   Lo que NO se queda son las dos cosas que ese carrusel rompía, y las dos se
   midieron a 390×844 con la carrera sembrada y el botón diciendo «Te esperan 2
   tareas», que es el rótulo largo y por lo tanto el caso malo (ver el desglose
   de `.chrome .action` acá arriba: el rótulo cambia el ancho del botón, así que
   cualquier medida de esta fila hay que anotarla con lo que decía el botón).

   · CONTINUAR SE IBA DETRÁS DEL ARRASTRE. 61 px del botón quedaban fuera del
     carrusel a 390, 91 a 360 y 21 a 430 — la acción principal del juego, la
     que hace avanzar el tiempo, escondida detrás de un gesto que nada anuncia.
     Es exactamente lo que la regla de `.nav-primary` de esta hoja ya declaraba
     mal cuando explicaba por qué ahí cede la navegación y no la fila.

     Se ancla con `sticky` y no escondiendo vecinos: el botón se queda pegado
     al borde derecho mientras el resto de la fila corre por debajo, así que no
     se pierde ninguna pieza y no hay umbral que elegir mal. Lleva fondo propio
     —el degradado— y por eso puede tapar lo que pasa detrás.

   · LA NAVEGACIÓN QUEDABA EN UNA ASTILLA DE 9 px. `.nav-primary` es
     `flex: 0 1 auto` con `min-width: 0` para que ceda, y en el teléfono cedía
     TODO: las seis secciones seguían ahí, dentro de un desplazamiento de nueve
     píxeles de ancho. Técnicamente alcanzable; en la práctica, el juego sin
     navegación.

     Y acá la nav DEJA DE DESPLAZARSE POR SU CUENTA, que es lo contrario de lo
     que pide arriba de 860. El motivo es que la fila ya es un carrusel: dejarle
     el suyo a la navegación pone un carrusel horizontal DENTRO de otro, y en
     una pantalla táctil eso no se maneja —el dedo cae en uno o en el otro según
     dónde apoye, y ninguno de los dos anuncia dónde termina—. Sin su
     `overflow`, las seis secciones son seis piezas más de la única fila que se
     arrastra, y un gesto las recorre todas.
     -------------------------------------------------------------------------- */

@media (max-width: 860px) {
  /* Y LA FILA PIERDE EL RELLENO DE LA DERECHA, que no es un detalle: el botón
     anclado se pega al borde del ÁREA DE DESPLAZAMIENTO, y ese relleno queda a
     su derecha como una franja de veinte píxeles por la que se ve pasar el
     texto de las secciones. Con el relleno en cero no hay franja que tapar.
     Teñir esos veinte píxeles con `--bg-chrome` era la otra salida y se
     descartó: el tinte del club vive detrás y no termina de disolverse hasta
     los 320 px, así que abajo de ~365 de ventana el parche se ve como costura
     (los números, en la sección 1 de esta hoja). */
  .chrome__row--primary {
    padding-right: 0;
    /* Y EL ANCLAJE DE LA SECCIÓN ACTUAL ATERRIZA A LA IZQUIERDA DEL BOTÓN.
       `chrome.js` trae al sitio la sección en la que estás con un
       `scrollIntoView({inline:'nearest'})`, y `nearest` cumple dejándola en el
       borde del ÁREA DE DESPLAZAMIENTO — que acá termina debajo del botón
       anclado—. Medido en `plantel` a 390: la fila arranca desplazada 5 px,
       el botón ocupa de 153 a 375, y las dos únicas secciones que caían dentro
       del carrusel —«Portal» y «Plantilla»— quedaban las dos tapadas;
       `elementFromPoint` sobre su centro devolvía el `<span>` del botón, o
       sea que NINGUNA de las seis se podía tocar sin arrastrar la barra a
       ciegas.

       El relleno de desplazamiento le dice al navegador que ese pedazo no
       cuenta como visible. No mueve un píxel del dibujo: sólo cambia dónde
       aterriza el desplazamiento. Los 240 cubrían el botón más largo de
       entonces —«Te esperan 2 tareas», 222— con doce de aire, y hoy se quedan
       cortos por once: el botón que relata llega a 251. No se toca porque esta
       línea ya no corre: la sección 7 de esta hoja la pone en cero en la misma
       media query, que es donde el carrusel dejó de existir. */
    scroll-padding-inline-end: 240px;
  }
  .chrome__row--primary .action {
    position: sticky;
    right: 0;
    z-index: 2;
  }
  .nav-primary {
    flex: 0 0 auto;
    min-width: auto;
    overflow-x: visible;
  }
}


/* --------------------------------------------------------------------------
   7. LA NAVEGACIÓN, EN SU PROPIO RENGLÓN
   --------------------------------------------------------------------------
   El carrusel de la sección 6 resolvía que nada se saliera, pero no que se
   pudiera USAR. Medido a 375 con `elementFromPoint` sobre el centro de cada
   sección: el botón anclado ocupa de 153 a 375 —el 59 % de la barra— y de las
   seis secciones sólo entraban dos en el carrusel, las dos debajo del botón.
   Ninguna se podía tocar. El `scroll-padding` de la sección 6 salva a la
   sección ACTUAL; las otras cinco seguían detrás de un arrastre a ciegas.

   Acá la fila deja de ser un carrusel y pasa a tener dos renglones: arriba la
   identidad y la acción, abajo las seis secciones a todo el ancho, con su
   propio desplazamiento y sin nada encima. Es lo que hace cualquier aplicación
   de teléfono, y cuesta un renglón de 44.

   PARA QUE EL RENGLÓN DE ARRIBA ENTRE HAY QUE SACARLE DOS COSAS, y las dos se
   eligieron por medida y no por gusto. Con los controles a 44 —la sección del
   dedo, en `app.css`— la fila pedía 96 de flechas + 65 de escudo + 35 de
   escudo de liga + 222 de botón = 418 en 375 de ancho útil:

   · LA FLECHA DE ADELANTE. Las dos flechas pasaron de 69 px a 96 al engordar
     para el dedo, y de las dos, «adelante» sólo sirve después de haber usado
     «atrás». En una instalación de pantalla completa —el `manifest` declara
     `standalone`— el navegador no presta ninguna, así que «atrás» se queda:
     es la única forma de volver. Se va la otra, y son 52 px.
   · EL ESCUDO DE LA LIGA. Es decoración: quién sos lo dice el escudo del club,
     que está al lado y mide 65. Son 35 px más.

   Quedan 44 + 65 + 222 = 331 con dos huecos de 8: 347 en 375, con 28 px de
   aire para que un rótulo de botón más largo que «Te esperan 2 tareas» —el más
   largo medido, 222— siga entrando en un renglón.

   Y ESE AIRE SE GASTÓ, A SABIENDAS. Desde el 22/9/2026 el botón no dice una
   cuenta sino el paso que sigue —«Contestar el planteo», «Sacar al sancionado»,
   más la insignia de las que faltan— y eso mueve el presupuesto de 222 a 251,
   que es «Drop the suspended man», el más largo de los dos idiomas. Medido en
   la fila de verdad:

     375   los diez pasos en castellano y los tres largos en inglés, UN renglón
     320   los que pasan de ~210 bajan a su propio renglón

   A 375 —el ancho que mide `vara-la-barra-entra.mjs`, y el más chico de los
   cuatro iPhone que usa— entra todo con la flecha y el escudo al lado. A 320 el
   botón se va a un renglón suyo, y eso es lo que tiene que pasar: la fila es
   `flex-wrap: wrap` desde esta misma sección, así que lo que ocurre es que
   envuelve. No se recorta un rótulo, no se esconde una pieza y no se desborda
   la página —comprobado a 320: `scrollWidth` igual a la ventana en los siete
   rótulos—. Un renglón de más en una pantalla de 320 es más barato que un botón
   que no dice a qué te lleva.

   Y EL BOTÓN SE DESANCLA, porque ya no hay nada que se le pase por debajo:
   `sticky` era la respuesta a un carrusel que acá dejó de existir. Se va con
   él el `scroll-padding`, que existía para el mismo problema.
   -------------------------------------------------------------------------- */

@media (max-width: 860px) {
  .chrome__row--primary {
    flex-wrap: wrap;
    height: auto;
    overflow-x: visible;
    scroll-padding-inline-end: 0;
    column-gap: var(--sp-2);
    row-gap: var(--sp-2);
    padding-block: var(--sp-2);
    /* El relleno lateral baja de --sp-5 a --sp-3: son 16 px de ancho útil que
       el renglón de arriba necesita para que el botón entre al lado del escudo
       en vez de irse a un tercer renglón. */
    padding-inline: var(--sp-3);
  }
  .chrome__row--primary .action { position: static; }

  .history__btn[aria-label='Adelante'] { display: none; }
  .comp-marca { display: none; }

  /* Y EL ESCUDO PIERDE SU AIRE LATERAL, que es lo que compra el margen. Con el
     relleno de --sp-3 la placa mide 65 y el renglón de arriba cerraba en 384
     de 390: seis píxeles, o sea que el primer rótulo de botón más largo que
     «Te esperan 2 tareas» lo mandaba a un tercer renglón justo en el ancho de
     teléfono más común. Con --sp-1 la placa mide 48 y sobran 23, y el corte a
     dos renglones baja de ~390 a ~373: entran también los de 375. El escudo no
     se achica, se le saca el margen. */
  .chrome__placa { padding-inline: var(--sp-1); }

  /* El renglón de abajo: a todo el ancho y con su desplazamiento propio. Acá
     SÍ va `overflow-x`, al revés de la sección 6, y por el mismo motivo por el
     que allá no iba: allá la fila entera era un carrusel y anidar uno adentro
     de otro deja al dedo sin saber cuál agarra. Acá la fila ya no se desplaza,
     así que el único carrusel de la barra es éste. */
  .nav-primary {
    /* `order` Y NO SÓLO LA BASE DEL 100 %. En el marcado la navegación viene
       ANTES del espaciador y del botón, así que al tomar su renglón empuja a
       los dos al siguiente y la barra queda en tres pisos, con CONTINUAR
       debajo de las secciones. Medido: 164 px de alto y el botón en 112.
       Mandándola al final del orden visual, arriba quedan las flechas, el
       escudo y el botón, y abajo las secciones. */
    order: 1;
    flex: 1 0 100%;
    min-width: 0;
    overflow-x: auto;
    scrollbar-width: none;
  }
  .nav-primary::-webkit-scrollbar { display: none; }
}

/* ==========================================================================
   EL RIEL DE LA IZQUIERDA — RETIRADO EL 21/9/2026
   --------------------------------------------------------------------------
   Vivió un día. Era una columna fija de 206 px con los veinticuatro destinos
   del juego agrupados, dibujada por `chrome.js` desde el mismo `MAPA` que los
   desplegables. Estaba medida: entraba desde 1200, no desbordaba en ninguna
   de las veintiuna pantallas y marcaba un solo destino de los veinticuatro.

   La sacó Alberto mirándola: «no suma y sólo achica los espacios».

   El porqué vale más que el componente: se llevaba una columna entera de
   contenido para ofrecer un atajo a lo que la sub-nav de cada pantalla ya
   ofrece. **Un atajo que cuesta una columna no es un atajo, es un peaje.**

   Si alguna vez vuelve, la condición es que NO le quite ancho al contenido:
   encima, desplegable, o en el hueco que sobra en un monitor muy ancho. Al
   lado, no.
   ========================================================================== */


/* ==========================================================================
   9. EL SALTO DE LA TEMPORADA, ANCLADO EN LA FILA DE ABAJO
   --------------------------------------------------------------------------
   «Que el botón del salto quede siempre a la vista» —Alberto, 22/9/2026—.
   Bajó de la cabecera del calendario; el porqué de la mudanza está en
   `index.html`, en el hueco que dejó, y el manejador propio que la mudanza
   obligó a escribir está en `inicio.js`.

   ESTA FILA YA SE COMIÓ UNA PIEZA Y LA ESCUPIÓ, y está contado en la sección 4:
   la barra de favoritos vivía acá y tuvo que esconderse por debajo de 970 px
   porque ella y `.nav-sub` eran las dos `flex: none` y no cedía ninguna — la
   página se corría de costado. La nota terminaba diciendo qué medir si volvía
   una pieza a esta fila: lo que pide la sección más ancha más lo que pida la
   pieza, achicando la ventana hasta que el desborde aparezca.

   Se midió, y la respuesta es que acá hay UNA sola rígida. El botón es
   `flex: none` —210 px, dentro del presupuesto de 222 de la píldora del
   chrome— y las solapas ceden, que es lo que ya saben hacer: por debajo de
   860 px `.chrome__row` es `overflow-x: auto` y se vuelve un carrusel.
   -------------------------------------------------------------------------- */
/* Y NO PUEDE LLEVAR EL DEGRADADO, que es lo primero que se vio al mirarlo.
   --------------------------------------------------------------------------
   `.chrome .action` —sección 5 de este archivo— le pone `--accent-degradado` a
   TODO `.action` que viva en la barra, y el `.action--callada` del marcado no
   alcanza para ganarle: la regla del chrome es más específica. Resultado en la
   primera foto a 390: dos píldoras amarillas apiladas, «Contestar la oferta»
   arriba y «Simular toda la temporada» justo debajo, las dos con el mismo peso.

   Lo dice la propia nota de aquella sección y es la regla de la casa: «si todo
   lo importante fuera degradado, el degradado dejaría de decir cuál es LA
   acción». Arriba vive LA acción —el botón grande, que cambia de etiqueta y
   nunca de sitio— y ésta es otra cosa: un atajo que está siempre disponible y
   casi nunca es lo que hay que hacer ahora.

   Así que se le devuelve el trato callado que el marcado ya pedía. No es una
   excepción caprichosa: es la misma jerarquía que el juego usa en las otras
   dieciocho pantallas, aplicada al único `.action` de la barra que no es EL
   botón. */
/* EL SELECTOR LLEVA LAS TRES CLASES A PROPÓSITO. `.chrome .action` es (0,2,0)
   y `.chrome__salto` sola es (0,1,0): escrito corto, esto no gana y el botón
   sigue saliendo amarillo. Es el caso que la casa ya tiene anotado —un valor
   copiado de la base se vuelve el techo el día que la base cambia— por el otro
   extremo: acá lo que falta no es el valor, es el peso. */
.chrome .action.chrome__salto {
  flex: none;
  background: none;
  border: 1px solid var(--line-control);
  color: var(--text-secondary);
}

@media (hover: hover) {
  .chrome .action.chrome__salto:hover:not(:disabled) {
    background: var(--bg-hover);
    border-color: var(--line-control-strong);
    color: var(--text-primary);
  }
}

/* Y ABAJO DE 860 EL CARRUSEL SE LO LLEVARÍA PUESTO, que es la mitad que este
   cambio venía a arreglar. Con la fila desplazándose de costado, un botón al
   final de la tira está fuera de pantalla hasta que alguien la rueda — o sea
   exactamente el defecto de antes, mudado de eje: antes había que rodar 1.358
   px hacia abajo, ahora habría que rodar de costado.

   `sticky` contra el borde derecho lo deja quieto mientras las solapas pasan
   por debajo. Lleva fondo propio y no es decoración: sin él las solapas se leen
   A TRAVÉS del botón cuando la tira se desplaza. El degradado de la izquierda
   es el mismo recurso que la fila ya usa para avisar que hay más
   (`[data-mas~='der']`), del lado que ahora tapa el botón. */
/* TRES RÓTULOS Y UN SOLO ENCENDIDO. El largo manda, y los otros dos aparecen
   sólo donde la fila los paga. El primer corte es el mismo 860 del carrusel a
   propósito: por encima la fila no desborda y acortar no le devuelve nada a
   nadie. El segundo es 374, medido: ver la nota del marcado en `index.html`. */
.chrome__salto-corto,
.chrome__salto-min { display: none; }

@media (max-width: 860px) {
  .chrome__salto-largo { display: none; }
  .chrome__salto-corto { display: inline; }

  /* Y EL RELLENO SE APRIETA, que son siete píxeles y deciden un ancho entero.
     `.chrome .action` lleva `padding-inline: var(--sp-7) var(--sp-5)` —16 y 8—
     porque es el del botón grande, que tiene una flecha del lado corto. Éste
     no la tiene. Con 8 y 8 el botón pasa de 119 a 112 px, y 112 es justo lo que
     hace falta para que «Calendario» entre a 360 sin tocar el rótulo: el
     umbral medido ahí es 114. */
  .chrome .action.chrome__salto {
    padding-inline: var(--sp-5);
    position: sticky;
    right: 0;
    z-index: 2;
    margin-left: var(--sp-4);
    /* Y EL FONDO LLEVA EL TINTE DEL CLUB, no `--bg-chrome` pelado. Esta fila
       no tiene fondo plano: se lo pinta `.chrome__row--secondary::before` con
       un degradado que arranca en 34 % sobre la esquina y se apaga hacia la
       derecha. Un botón con el fondo sin teñir se lee como un parche más claro
       pegado al borde — probado, y se ve—. El 14 % es donde está el degradado a
       la altura del borde derecho en una ventana de teléfono: entre el 22 % de
       los 125 px y el 9 % de los 560. */
    background: color-mix(in srgb, var(--club-fondo, transparent) 14%, var(--bg-chrome));
    box-shadow: -12px 0 12px -6px color-mix(in srgb, var(--club-fondo, transparent) 14%, var(--bg-chrome));
  }
}

/* Y A 374 SE CAE LA SEGUNDA PALABRA. Medido forzando el ancho del botón, el
   umbral para que «Calendario» entre sin arrastrar es 114 px a 360 y 75 px a
   320. Con el relleno apretado «Simular el año» mide 112 —pasa a 360, no a
   320— y «Simular año» mide 96, que tampoco pasa. Con una palabra son 67.

   El corte va en 374 y no en 375 porque 375 es el primer ancho que SÍ entra
   con el rótulo de dos palabras: el iPhone SE y el mini se quedan con la
   palabra sola, y de ahí para arriba nadie la ve. El nombre entero sigue en
   `aria-label` y en el globo; ver la nota del marcado. */
@media (max-width: 374px) {
  .chrome__salto-corto { display: none; }
  .chrome__salto-min { display: inline; }
}

/* ==========================================================================
   10. LA CHINCHE DE «ABRE ACÁ» (22/9/2026)
   --------------------------------------------------------------------------
   RENUMERADA DE 9 A 10 AL MERGEAR (22/9/2026): la sección 9 se la ganó el
   botón del salto, que entró a esta misma hoja el mismo día y desde otra rama.
   Las dos son piezas nuevas del chrome y ninguna toca a la otra —aquélla vive
   en la fila de abajo, ésta adentro del desplegable—, así que el choque era el
   número y nada más. Se queda con el 9 la que ya está en producción.

   Lo cuarto del deep dive de FM27: elegir en qué pantalla aterriza cada opción
   de la navegación. La chinche vive en la fila del destino, dentro del
   desplegable de sección que ya existe, así que cuesta CERO píxeles de la
   pantalla — no hay panel nuevo ni fila nueva; hay un botón más en una fila
   que ya estaba.

   LA FILA SE ENVUELVE Y EL ENLACE NO CAMBIA. `<button>` adentro de `<a>` no es
   HTML válido ni tiene un blanco de clic definido, así que la fila pasa a ser
   un contenedor con dos hijos: el enlace, que conserva `.nav-menu__item` y
   todo su estilo, y la chinche. Ninguna regla de las de arriba se toca.

   EN REPOSO CASI NO SE VE, Y ES A PROPÓSITO. Seis destinos por sección son
   seis chinches en un panel de 208 px; encendidas serían una fila de estrellas
   compitiendo con los iconos que dicen a dónde va cada renglón. Se apagan al
   30 % y suben al pasar por encima, al foco y cuando están elegidas. El
   destino elegido lleva tilde y no estrella: una estrella encendida entre
   estrellas apagadas es un grado del mismo signo, y una tilde es otro signo.

   NO SE ESCONDEN DEL TODO EN REPOSO —`opacity: 0` hasta el hover— porque en un
   teléfono no hay hover y serían seis botones invisibles que igual ocupan
   sitio táctil. Es la trampa que este proyecto ya tiene anotada: el dedo no
   pasa por encima.
   ========================================================================== */
.nav-menu__fila {
  display: flex;
  align-items: center;
  gap: var(--sp-1);
}
.nav-menu__fila .nav-menu__item {
  flex: 1;
  min-width: 0;
}
.nav-menu__fijar {
  display: grid;
  place-items: center;
  flex: none;
  width: 26px; height: 26px;
  border: 0;
  border-radius: var(--r-sm);
  background: transparent;
  color: var(--icon-quiet);
  opacity: 0.3;
  cursor: pointer;
  transition: opacity var(--dur-fast) var(--ease), background var(--dur-fast) var(--ease),
    color var(--dur-fast) var(--ease);
}
@media (hover: hover) {
  .nav-menu__fila:hover .nav-menu__fijar { opacity: 0.75; }
  .nav-menu__fijar:hover { opacity: 1; background: var(--bg-active); color: var(--text-primary); }
}
.nav-menu__fijar:focus-visible {
  opacity: 1;
  outline: 2px solid var(--focus-ring);
  outline-offset: 1px;
}
.nav-menu__fijar[aria-pressed='true'] {
  opacity: 1;
  color: var(--accent-strong);
}

/* El menú del club, escondido mientras el modo selección lo reescribe (ver
   `puerta.js` y `seleccion-equipo.js`, 2/10/2026). */
.chrome-del-modo-pendiente .nav-primary,
.chrome-del-modo-pendiente .nav-sub,
.chrome-del-modo-pendiente .breadcrumb,
.chrome-del-modo-pendiente .chrome__row--primary [data-f="crest-club"] { visibility: hidden; }
