/* Incentivos Comerciales D'ELIZA.

   ⚠️ TODO color del sistema sale de una ficha, y las fichas se definen
   SOLO aca. Mas abajo no hay ni un hex suelto: si aparece uno, esa regla
   se queda igual cuando alguien cambia de paleta y la pantalla sale con
   dos temas encima.

   La paleta viaja en `data-paleta` sobre el <html>, que pone el context
   processor con lo que eligio quien entro (`servicios/apariencia.py`).
   Un valor desconocido --o ninguno-- cae en `:root`, que es la de
   siempre: la pantalla nunca se queda sin colores.

   Las seis pasan 4.5:1 de contraste en texto normal.

   Pensado para una pantalla de escritorio con tablas anchas: el mes son
   catorce columnas y no hay forma de que entren en un telefono sin
   esconder algo. En el telefono la tabla se desliza. */

:root,
[data-paleta="actual"] {
  color-scheme: light;
  /* Actual -- la de siempre, clara. */
  --tinta: #1b1f24;
  --suave: #5b6570;
  --linea: #dfe3e8;
  --fondo: #f7f8fa;
  --papel: #ffffff;
  --papel2: #eef2f6;
  --acento: #16607a;
  --sobre-acento: #ffffff;
  --acento-suave: #f2f7f9;
  --gana: #0d7040;
  --gana-fondo: #e8f6ee;
  --grave: #a12020;
  --grave-fondo: #fdecec;
  --ok-fondo: #eaf5ec;
  --falta: #9a6a10;
  --falta-fondo: #fff8e8;
  --grupo: #6b5a2a;
  --grupo-fondo: #f0ece2;
  --sombra: rgba(0, 0, 0, .12);
}

[data-paleta="indigo"] {
  color-scheme: light;
  /* Clara, mas cromatica. */
  --tinta: #191b2e;
  --suave: #55597a;
  --linea: #dcdff0;
  --fondo: #f4f5fb;
  --papel: #ffffff;
  --papel2: #eaedf8;
  --acento: #383da6;
  --sobre-acento: #ffffff;
  --acento-suave: #eef0fb;
  --gana: #12704f;
  --gana-fondo: #e6f4ee;
  --grave: #a8203f;
  --grave-fondo: #fceaee;
  --ok-fondo: #e9f3ee;
  --falta: #8a6510;
  --falta-fondo: #fdf6e6;
  --grupo: #6b5a2a;
  --grupo-fondo: #f0ece2;
  --sombra: rgba(25, 27, 46, .16);
}

[data-paleta="arena"] {
  color-scheme: light;
  /* Clara y calida; cansa menos en jornada larga. */
  --tinta: #241d16;
  --suave: #6b5f52;
  --linea: #e0d8cc;
  --fondo: #f4f1ec;
  --papel: #fffefb;
  --papel2: #efeae1;
  --acento: #8c4030;
  --sobre-acento: #fffefb;
  --acento-suave: #f7ece8;
  --gana: #2f6b46;
  --gana-fondo: #e7f1e9;
  --grave: #9b2226;
  --grave-fondo: #f9e8e5;
  --ok-fondo: #eaf1e9;
  --falta: #8a6510;
  --falta-fondo: #fbf2df;
  --grupo: #5f4d21;
  --grupo-fondo: #eee5d3;
  --sombra: rgba(36, 29, 22, .16);
}

[data-paleta="pizarra"] {
  color-scheme: dark;
  /* Oscura y fria. */
  --tinta: #e6ebef;
  --suave: #9dabb5;
  --linea: #2c353c;
  --fondo: #14181c;
  --papel: #1b2126;
  --papel2: #232b31;
  --acento: #61b6d3;
  --sobre-acento: #0f1418;
  --acento-suave: #1b2c33;
  --gana: #5cc79a;
  --gana-fondo: #16302a;
  --grave: #f0958b;
  --grave-fondo: #331f1e;
  --ok-fondo: #172b26;
  --falta: #d7ab5a;
  --falta-fondo: #2c2617;
  --grupo: #d3c08f;
  --grupo-fondo: #2b2820;
  --sombra: rgba(0, 0, 0, .5);
}

[data-paleta="noche"] {
  color-scheme: dark;
  /* Oscura y calida. */
  --tinta: #ece7de;
  --suave: #aaa192;
  --linea: #332f28;
  --fondo: #171512;
  --papel: #201d18;
  --papel2: #2a2620;
  --acento: #dc9c48;
  --sobre-acento: #1a1611;
  --acento-suave: #302516;
  --gana: #82c48c;
  --gana-fondo: #1e2c1f;
  --grave: #ec9585;
  --grave-fondo: #33201a;
  --ok-fondo: #1f2b20;
  --falta: #c2b273;
  --falta-fondo: #2c2718;
  --grupo: #cbbb8e;
  --grupo-fondo: #2b271e;
  --sombra: rgba(0, 0, 0, .55);
}

[data-paleta="contraste"] {
  color-scheme: light;
  /* Para pantalla con reflejo o vista cansada. */
  --tinta: #000000;
  --suave: #3a3a3a;
  --linea: #8a8a8a;
  --fondo: #ffffff;
  --papel: #ffffff;
  --papel2: #ededed;
  --acento: #0b4fbf;
  --sobre-acento: #ffffff;
  --acento-suave: #e4ecfb;
  --gana: #0a5c2e;
  --gana-fondo: #d6efe0;
  --grave: #b00014;
  --grave-fondo: #ffe0e2;
  --ok-fondo: #d9f0e2;
  --falta: #6b4a00;
  --falta-fondo: #fff2cc;
  --grupo: #4a3c00;
  --grupo-fondo: #f2e9c8;
  --sombra: rgba(0, 0, 0, .35);
}

* { box-sizing: border-box; }

body {
  margin: 0;
  background: var(--fondo);
  color: var(--tinta);
  font: 15px/1.5 system-ui, "Segoe UI", Roboto, sans-serif;
}

/* Todo enlace, tenga clase o no. Los nombres de los vendedores en la
   tabla del mes no la tienen, y salian con el azul del navegador:
   ilegible sobre la paleta Pizarra. */
a { color: var(--acento); }

main { padding: 1.5rem; max-width: 1500px; margin: 0 auto; }

/* ---------------------------------------------------------- barra */

/* El hilo toma el acento de la paleta. Tres sistemas que se parecen y
   una franja de color arriba: se sabe en cual estas sin leer nada. */
.hilo { height: 3px; background: var(--acento); }

.barra {
  display: flex; align-items: center; gap: .8rem; flex-wrap: wrap;
  padding: .5rem 1.5rem;
  background: var(--papel);
  border-bottom: 1px solid var(--linea);
}
.marca { font-weight: 700; color: var(--acento); text-decoration: none;
         font-size: 1.05rem; }

/* El mes, en la barra y una sola vez. */
.mes-chip { display: flex; align-items: center; gap: .3rem; }
.mes-chip label {
  position: absolute; width: 1px; height: 1px; overflow: hidden;
  clip-path: inset(50%); white-space: nowrap;
}
.mes-chip input {
  padding: .25rem .5rem; font-size: .88rem; border-radius: 999px;
  background: var(--papel2);
}
.mes-chip button {
  margin-top: 0; padding: .28rem .7rem; font-size: .82rem;
  border-radius: 999px; background: none; color: var(--suave);
  border: 1px solid var(--linea);
}
.mes-chip button:hover { background: var(--papel2); color: var(--acento);
                         filter: none; }

/* «You are here»: sin esto los dos destinos se ven igual. */
.tabs { display: flex; gap: .25rem; }
.tab {
  color: var(--suave); text-decoration: none; font-size: .95rem;
  padding: .35rem .75rem; border-radius: 6px;
  border: 1px solid transparent;
}
.tab:hover { background: var(--papel2); color: var(--acento); }
.tab.activo {
  background: var(--papel2); color: var(--tinta); font-weight: 600;
  border-color: var(--linea);
}
.barra .quien {
  margin-left: auto; display: flex; align-items: center; gap: .6rem;
  color: var(--suave); font-size: .9rem;
}
.enlace {
  background: none; border: 0; padding: 0; cursor: pointer;
  color: var(--suave); text-decoration: underline; font: inherit;
}

/* ------------------------------------------------- cabecera de pagina */

.cabecera-pag {
  display: flex; align-items: flex-end; gap: .8rem 1.5rem; flex-wrap: wrap;
  padding-bottom: .7rem; margin-bottom: 1.2rem;
  border-bottom: 1px solid var(--linea);
}
.cabecera-pag h1 { margin: 0; font-size: 1.55rem; }
.cabecera-pag .acciones { margin-left: auto; display: flex; gap: .5rem;
                          flex-wrap: wrap; }

/* El regreso NOMBRA su destino. Objetivo tactil de verdad, no un texto
   de 12 px que hay que cazar con el dedo. */
.volver {
  margin: 0 0 .6rem;
}
.volver a {
  display: inline-flex; align-items: center; min-height: 40px;
  padding: .2rem .1rem; color: var(--acento); text-decoration: none;
  font-size: .92rem; font-weight: 500;
}
.volver a:hover { text-decoration: underline; }

/* ---------------------------------------------------------- avisos */

.aviso {
  padding: .7rem 1rem; margin: 1rem 1.5rem; border-radius: 6px;
  border-left: 4px solid var(--falta); background: var(--falta-fondo);
}
.aviso.grave { border-color: var(--grave); background: var(--grave-fondo); }
.aviso.ok { border-color: var(--gana); background: var(--ok-fondo); }

.avisos {
  background: var(--papel); border: 1px solid var(--linea);
  border-radius: 8px; padding: 1rem 1.2rem; margin-bottom: 1.5rem;
}
.avisos .aviso { margin: .5rem 0; }

/* ---------------------------------------------------------- tablas */

table { border-collapse: collapse; width: 100%; background: var(--papel); }
th, td { padding: .45rem .6rem; border-bottom: 1px solid var(--linea);
         text-align: left; }
th { font-size: .8rem; text-transform: uppercase; letter-spacing: .03em;
     color: var(--suave); font-weight: 600; vertical-align: bottom; }
th.mini { font-size: .68rem; text-transform: none; }
td.num, th.num { text-align: right; font-variant-numeric: tabular-nums; }

td.total { font-weight: 700; }

/* --------------------------------------------------- la tabla del mes */

/* Se lleva todo el ancho: las catorce columnas entran apretadas en una
   pantalla normal y no hay barra que deslizar. El `overflow-x` queda de
   red por si la pantalla es mas angosta de lo previsto. */
.env-tabla {
  background: var(--papel); border: 1px solid var(--linea);
  border-radius: 8px; overflow-x: auto;
}
.env-tabla > table { border: 0; }

.tabla-mes {
  border-collapse: separate; border-spacing: 0; white-space: nowrap;
  font-size: .88rem;
}
.tabla-mes th, .tabla-mes td {
  padding: 0 .45rem; height: 36px; vertical-align: middle;
  border-bottom: 1px solid var(--linea);
}
.tabla-mes td:first-child, .tabla-mes th:first-child { padding-left: .8rem; }
.tabla-mes td:last-child, .tabla-mes th:last-child { padding-right: .8rem; }
.tabla-mes thead th {
  position: sticky; top: 0; z-index: 2; height: 30px;
  background: var(--papel2); vertical-align: bottom;
}
.tabla-mes thead tr:nth-child(2) th { top: 30px; }

/* El nombre pegado a la izquierda: cuando la tabla si tiene que
   deslizarse, sin esto se pierde de quien es la fila a la segunda
   columna. Es lo que mas rompe estas tablas. */
.tabla-mes .fija {
  position: sticky; left: 0; z-index: 1; background: var(--papel);
  box-shadow: 1px 0 0 var(--linea); white-space: nowrap;
}
.tabla-mes thead .fija { z-index: 3; background: var(--papel2); }
.tabla-mes tbody tr:hover td,
.tabla-mes tbody tr:hover .fija { background: var(--papel2); }

/* «Que hizo» y «que se le paga» son dos bloques distintos. Catorce
   columnas planas no se leen. */
.corte { border-left: 2px solid var(--linea); }

.tabla-mes .cero { color: var(--suave); }
.tabla-mes .ganado { font-weight: 600; }

/* Solo el total lleva fondo. Antes se pintaban las cinco columnas de
   bonos y media pantalla quedaba verde: con todo resaltado no se
   distingue nada. */
.col-total {
  background: var(--gana-fondo); font-weight: 700;
  border-left: 2px solid var(--linea);
}
.tabla-mes tfoot td {
  background: var(--papel2); border-top: 2px solid var(--tinta);
  border-bottom: 0; font-weight: 600;
}

/* --------------------------------------------- el mes en el telefono */

.lista-mes { display: grid; gap: .5rem; }
.reng {
  display: block; text-decoration: none; color: inherit;
  background: var(--papel); border: 1px solid var(--linea);
  border-radius: 8px; padding: .7rem .9rem;
}
.reng:active { background: var(--papel2); }
.reng-alto { display: flex; align-items: baseline; gap: .6rem; }
.reng-cod { color: var(--suave); font-size: .8rem;
            font-variant-numeric: tabular-nums; }
.reng-nom { font-weight: 600; }
.reng-bono {
  margin-left: auto; font-size: 1.15rem; font-weight: 700;
  font-variant-numeric: tabular-nums; white-space: nowrap;
}
.reng-bono.cero { color: var(--suave); font-weight: 500; }
.reng-bajo {
  display: grid; grid-template-columns: repeat(3, 1fr);
  gap: .6rem; margin-top: .6rem;
}
.mini-dato .r { display: block; font-size: .68rem; text-transform: uppercase;
                letter-spacing: .05em; color: var(--suave); }
.mini-dato .v { font-weight: 600; font-variant-numeric: tabular-nums; }

/* ------------------------------------------------- resumen del mes */

.resumen {
  display: grid; gap: .8rem; margin: 1.2rem 0 0;
  grid-template-columns: repeat(auto-fit, minmax(210px, 1fr));
}
.resumen h2 {
  margin: 0 0 .4rem; border: 0; padding: 0;
  font-size: .72rem; text-transform: uppercase; letter-spacing: .08em;
  color: var(--suave); font-weight: 600;
}
.resumen .cifra { font-size: 1.6rem; font-weight: 700;
                  font-variant-numeric: tabular-nums; }
.pie-cifra { color: var(--suave); font-size: .82rem; margin: .3rem 0 0; }

.estado {
  display: inline-flex; align-items: center; gap: .4rem;
  font-size: .82rem; font-weight: 600; border-radius: 999px;
  padding: .1rem .6rem; border: 1px solid var(--linea);
  background: var(--papel2);
}
.estado::before {
  content: ""; width: 7px; height: 7px; border-radius: 999px;
  background: var(--falta);
}
.estado.cerrado::before { background: var(--gana); }

/* --------------------------------------------------- avisos plegados */

.avisos { margin-bottom: 1.2rem; }
.avisos summary {
  cursor: pointer; font-weight: 600; list-style: none;
  display: flex; align-items: center; gap: .6rem; min-height: 40px;
}
.avisos summary::-webkit-details-marker { display: none; }
.avisos summary::after {
  content: "▾"; margin-left: auto; color: var(--suave); font-size: .7rem;
}
.avisos[open] summary::after { content: "▴"; }
.insignia {
  background: var(--grave); color: var(--papel); border-radius: 999px;
  font-size: .72rem; font-weight: 700; padding: .05rem .5rem;
}

/* La accion destructiva no comparte fila con una normal. */
.peligrosa { margin-top: 1.5rem; padding-top: 1rem;
             border-top: 1px solid var(--linea); }

.chica td, .chica th { padding: .35rem .5rem; font-size: .92rem; }
tr.suma td { border-top: 2px solid var(--tinta); font-weight: 700; }

/* -------------------------------------------- la pantalla del vendedor */

.tira {
  display: grid; gap: .7rem; margin-bottom: 1.2rem;
  grid-template-columns: repeat(auto-fit, minmax(160px, 1fr));
}
.ficha {
  background: var(--papel); border: 1px solid var(--linea);
  border-radius: 8px; padding: .7rem .9rem;
}
.ficha.destacada { border-color: var(--acento);
                   box-shadow: inset 3px 0 0 var(--acento); }
.ficha .r {
  display: block; font-size: .7rem; text-transform: uppercase;
  letter-spacing: .06em; color: var(--suave); margin-bottom: .15rem;
}
.ficha .v { font-size: 1.35rem; font-weight: 700;
            font-variant-numeric: tabular-nums; }
/* La meta, debajo de la venta con IVA. Chica y en gris: acompana al
   monto, no compite con el. Sin esto un 100% no dice contra que es. */
.ficha .meta {
  display: block; margin-top: .3rem; font-size: .75rem;
  color: var(--suave); font-variant-numeric: tabular-nums;
}

/* Las dos tarjetas lado a lado. Estiradas a todo el ancho, el monto
   quedaba a un metro de su rotulo. */
.dos {
  display: grid; gap: 1rem; align-items: start; margin-bottom: 1rem;
  grid-template-columns: repeat(auto-fit, minmax(340px, 1fr));
}
.tarjeta.ancha { display: block; }
.tarjeta h2 {
  margin: 0 0 .6rem; border: 0; padding: 0;
  font-size: .72rem; text-transform: uppercase; letter-spacing: .08em;
  color: var(--suave); font-weight: 600;
}

.tabla-chica { width: 100%; border-collapse: collapse; font-size: .9rem;
               background: none; }
.tabla-chica td { padding: .4rem 0; border-bottom: 1px solid var(--linea); }
.tabla-chica td.num { text-align: right; white-space: nowrap;
                      font-variant-numeric: tabular-nums; }
.tabla-chica tr:last-child td { border-bottom: 0; }
.tabla-chica tr.suma td { border-top: 2px solid var(--tinta);
                          border-bottom: 0; padding-top: .55rem; }
.tabla-chica .desc { color: var(--suave); font-size: .8rem; }
.tabla-chica .cero { color: var(--suave); }
.tabla-chica .ganado { font-weight: 600; }

/* El avance no es solo un numero: tambien es una forma. Se ve de un
   golpe cual esta cerca y cual ni de lejos. */
.medidor {
  display: block; height: 3px; border-radius: 999px;
  background: var(--linea); margin-top: .2rem; overflow: hidden;
}
.medidor i { display: block; height: 100%; background: var(--acento); }
.medidor.lleno i { background: var(--gana); }

.focos { font-size: .9rem; }
.focos th { padding: 0 .5rem .4rem; }
.focos td { padding: .4rem .5rem; }
.focos td.avance, .focos th.avance { min-width: 5.5rem; }
.focos tr.logrado td:first-child { box-shadow: inset 3px 0 0 var(--gana); }
.focos .marca-ok { color: var(--gana); font-weight: 700; }
.focos .cero { color: var(--suave); }
.focos tr.detalle td { border-bottom: 0; padding-top: 0;
                       font-size: .82rem; color: var(--suave); }
.pieza { display: inline-block; margin-right: .9rem; }

.etiqueta {
  font-size: .7rem; background: var(--papel2); color: var(--suave);
  padding: .05rem .4rem; border-radius: 999px; margin-left: .3rem;
}
.falta { color: var(--falta); font-style: italic; }

/* ---------------------------------------------------------- piezas */

.encabezado-mes {
  display: flex; align-items: baseline; gap: 1.5rem; flex-wrap: wrap;
}
.encabezado-mes h1 { margin: 0 0 1rem; }
.ir-al-mes { display: flex; gap: .5rem; align-items: center;
             font-size: .9rem; color: var(--suave); }

.tarjetas { display: flex; gap: 1rem; flex-wrap: wrap; margin: 1rem 0 2rem; }
.tarjeta {
  background: var(--papel); border: 1px solid var(--linea);
  border-radius: 8px; padding: .8rem 1.1rem; min-width: 150px;
}
.tarjeta.grande { border-color: var(--acento); }
.tarjeta .rotulo { display: block; font-size: .78rem; color: var(--suave); }
.tarjeta .cifra { font-size: 1.5rem; font-weight: 700;
                  font-variant-numeric: tabular-nums; }

.indice { display: flex; gap: 1rem; margin: 1rem 0 2rem; }
.indice a { color: var(--acento); }

section { margin-bottom: 2.5rem; }
h2 { border-bottom: 2px solid var(--linea); padding-bottom: .3rem; }
.nota { color: var(--suave); font-size: .88rem; }
.sub { color: var(--suave); margin-top: -.6rem; }
.volver a { color: var(--suave); text-decoration: none; }

input, select {
  padding: .35rem .5rem; border: 1px solid var(--linea);
  border-radius: 4px; font: inherit; background: var(--papel);
  /* Un `size="50"` en el comentario del cierre empujaba la PAGINA
     entera de lado en el telefono, y con ella la barra de arriba. */
  max-width: 100%;
}
input:focus, select:focus { outline: 2px solid var(--acento);
                            outline-offset: 1px; }
button {
  padding: .45rem 1rem; border: 0; border-radius: 5px;
  background: var(--acento); color: var(--sobre-acento);
  font: inherit; cursor: pointer;
  margin-top: .7rem;
}
button:hover { filter: brightness(1.1); }

.fila-alta { display: flex; gap: .5rem; flex-wrap: wrap;
             align-items: center; margin-top: 1rem; }
.fila-alta button { margin-top: 0; }
.copiar { display: flex; gap: .7rem; align-items: center; flex-wrap: wrap;
          margin-top: 1.5rem; }
.copiar button { margin-top: 0; }

.vendedor-focos {
  background: var(--papel); border: 1px solid var(--linea);
  border-radius: 8px; padding: .6rem 1rem; margin-bottom: .6rem;
}
.vendedor-focos summary { cursor: pointer; font-weight: 600; }
.vendedor-focos summary small { color: var(--suave); font-weight: 400;
                                margin-left: .5rem; }

/* ---------------------------------------------------------- entrar */

.pantalla-entrar {
  display: flex; align-items: center; justify-content: center;
  min-height: 100vh; padding: 1rem;
}
.pantalla-entrar .hilo { position: fixed; top: 0; left: 0; right: 0; }
.tarjeta-entrar {
  background: var(--papel); border: 1px solid var(--linea);
  border-radius: 10px; padding: 2rem; width: 100%; max-width: 340px;
}
.tarjeta-entrar h1 { margin: 0; color: var(--acento); }
.tarjeta-entrar label { display: block; margin-top: 1rem;
                        font-size: .85rem; color: var(--suave); }
.tarjeta-entrar input { width: 100%; margin-top: .25rem; }
.tarjeta-entrar button { width: 100%; margin-top: 1.5rem; padding: .6rem; }

/* ---------------------------------------------------------- cierre */

.cierre {
  background: var(--papel); border: 1px solid var(--linea);
  border-radius: 8px; padding: 1rem 1.2rem; margin-top: 2rem;
}
.cierre h2 { margin-top: 0; }
.cierre label { display: flex; gap: .4rem; align-items: center;
                margin-right: 1rem; font-size: .9rem; max-width: 34rem; }
.cierre label input { flex: 1; min-width: 0; }
.cierre .forzar { display: inline-flex; max-width: none; }
.forzar { color: var(--grave); }
button.peligro { background: var(--grave); }

/* ------------------------------------------------ configuracion por capas */

.migas { display: flex; gap: .5rem; align-items: center;
         font-size: .88rem; color: var(--suave); margin-bottom: 1rem; }
.migas a { color: var(--acento); text-decoration: none; }
.migas .actual { color: var(--tinta); font-weight: 600; }

/* La barra lateral de Configuracion. Siempre a la vista: saltar de
   Cuotas a Focos es un clic, no tres. */
.config { display: grid; gap: 1.2rem; align-items: start; }
@media (min-width: 760px) {
  .config { grid-template-columns: 210px minmax(0, 1fr); }
}
.config-cuerpo { min-width: 0; }

.rail {
  display: flex; gap: .3rem; overflow-x: auto; padding-bottom: .3rem;
}
@media (min-width: 760px) {
  .rail {
    flex-direction: column; overflow: visible; padding: .3rem;
    background: var(--papel); border: 1px solid var(--linea);
    border-radius: 8px;
  }
}
.capa {
  display: block; white-space: nowrap; text-decoration: none;
  color: var(--suave); font-size: .92rem; font-weight: 500;
  padding: .45rem .7rem; border-radius: 6px;
  border: 1px solid transparent; min-height: 40px;
}
.capa:hover { background: var(--papel2); color: var(--tinta); }
.capa.activo {
  background: var(--papel2); color: var(--tinta); font-weight: 600;
  border-color: var(--linea);
}
.capa small { display: block; font-weight: 400; font-size: .74rem;
              color: var(--suave); }
/* En el telefono la lateral es una tira que se desliza, y ahi el pie de
   cada capa solo ocupa lugar. */
@media (max-width: 759px) {
  .capa small { display: none; }
  .capa { display: flex; align-items: center; }
}

.ayuda { max-width: 65ch; }
tr.inactivo { opacity: .55; }

/* ---------------------------------------------------------- buscador */

.buscador {
  background: var(--papel); border: 1px solid var(--linea);
  border-radius: 8px; padding: 1rem 1.2rem; margin-bottom: 1.5rem;
}
.buscador-caja { display: block; font-size: .85rem; color: var(--suave); }
.buscador-caja input { width: 100%; max-width: 460px; margin-top: .25rem;
                       padding: .5rem .7rem; font-size: 1rem; }

.chip {
  margin: 0 .2rem 0 0; padding: .2rem .6rem; font-size: .8rem;
  background: var(--papel2); color: var(--suave); border-radius: 999px;
}
.chip.elegido { background: var(--acento); color: var(--sobre-acento); }
.chip.grupo { background: var(--grupo-fondo); color: var(--grupo); }

.resultados { display: flex; flex-direction: column; gap: 2px;
              max-height: 320px; overflow-y: auto; margin-top: .7rem; }
.resultado {
  display: flex; gap: .7rem; align-items: baseline; width: 100%;
  margin: 0; padding: .4rem .6rem; text-align: left;
  background: var(--fondo); color: var(--tinta); border-radius: 4px;
}
.resultado:hover { background: var(--gana-fondo); filter: none; }
.resultado.ya-esta { opacity: .5; cursor: default; }
.resultado code { color: var(--acento); font-weight: 600; min-width: 7em; }
.r-nombre { flex: 1; }
.r-unidad { font-size: .78rem; color: var(--suave); }
.r-vendido { font-size: .75rem; color: var(--suave); }
.r-sinficha { font-size: .72rem; color: var(--falta);
              border: 1px solid var(--falta); border-radius: 999px;
              padding: 0 .35rem; }

/* La lista del buscador que vive adentro del renglón del foco. Va
   FLOTANDO por encima de la tabla: si empujara las filas, elegir un foco
   movería los otros nueve de lugar mientras se los está mirando. */
.celda-buscador { position: relative; }
.celda-buscador .flotante {
  position: absolute; z-index: 20; top: 100%; left: 0; min-width: 30rem;
  max-width: 90vw; background: var(--papel); border: 1px solid var(--linea);
  border-radius: 6px; box-shadow: 0 6px 18px var(--sombra);
}
.celda-buscador .flotante:empty { display: none; }
.celda-buscador .resultados { margin-top: 0; padding: .3rem; }
.celda-buscador .nota { margin: 0; padding: .5rem .7rem; }

/* Lo marcado con las flechas se ve igual que lo que está bajo el mouse:
   son la misma cosa y Enter elige eso. */
.resultado.marcada { background: var(--gana-fondo); }

/* El grupo se distingue del producto suelto de un vistazo: elegirlo trae
   varios códigos sumados con sus factores, y eso no es lo mismo que
   elegir un producto. */
.resultado.es-grupo .r-nombre { font-weight: 600; }
.r-etiqueta {
  font-size: .7rem; text-transform: uppercase; letter-spacing: .04em;
  background: var(--grupo-fondo); color: var(--grupo); border-radius: 999px;
  padding: .05rem .45rem; min-width: 7em; text-align: center;
}

tr.recien input { background: var(--gana-fondo); }
.dos-columnas { display: flex; gap: 2rem; flex-wrap: wrap;
                align-items: flex-start; }
.dos-columnas table { width: auto; min-width: 180px; }

/* ---------------------------------------------------------- descargas */

/* El boton del paquete y el del reporte individual. Es un enlace, no un
   <button>: no manda nada, solo lleva a la descarga. Con borde y sin
   relleno para no competir con la accion principal de la pantalla (Ir,
   o Cerrar el mes). */
.boton-secundario {
  display: inline-block; padding: .45rem 1rem; border-radius: 5px;
  border: 1px solid var(--acento); color: var(--acento);
  text-decoration: none; font-size: .9rem;
  /* Nacio para un <a>, y sobre un <button> heredaba el fondo del acento
     de la regla de arriba: quedaba el acento sobre el acento y el rotulo
     no se leia. Un boton invisible es peor que uno feo. */
  background: transparent;
}
.boton-secundario:hover { background: var(--gana-fondo); }

/* La flecha de descarga del renglon. Discreta: el enlace al detalle es
   la accion principal de esa celda, la descarga es la de al lado. */
.descarga { text-decoration: none; opacity: .45; padding: 0 .25rem; }
.descarga:hover { opacity: 1; }

/* ------------------------------------------------------- la apariencia */

/* Cada muestra lleva `data-paleta` encima, asi que se pinta con sus
   PROPIAS fichas. Por eso aca no hay ni un hex: la muestra enseña
   exactamente los colores con los que se veria el sistema, y el dia que
   se corrija uno en el bloque de arriba, esta pantalla lo enseña
   corregido sin que nadie la toque. */

.paletas {
  display: grid; gap: .8rem; margin-top: 1rem;
  grid-template-columns: repeat(auto-fill, minmax(220px, 1fr));
}
.paleta {
  display: block; cursor: pointer; overflow: hidden;
  background: var(--papel); border: 1px solid var(--linea);
  border-radius: 8px;
}
.paleta:hover { border-color: var(--acento); }
.paleta:focus-within { outline: 2px solid var(--acento); outline-offset: 2px; }
.paleta.elegida { border-color: var(--acento);
                  box-shadow: inset 0 0 0 1px var(--acento); }

/* El radio se esconde a la vista pero NO del teclado ni del lector: la
   tarjeta entera es su etiqueta, y el anillo lo pone `:focus-within`. */
.paleta input { position: absolute; width: 1px; height: 1px;
                opacity: 0; pointer-events: none; }

.muestra { display: flex; height: 3.4rem; }
.muestra span { flex: 1; }
.m-fondo  { background: var(--fondo); }
.m-papel  { background: var(--papel); }
.m-acento { background: var(--acento); }
.m-gana   { background: var(--gana); }
.m-tinta  { background: var(--tinta); }

.paleta-pie { display: block; padding: .6rem .8rem;
              border-top: 1px solid var(--linea); }
.paleta-nombre { display: block; font-weight: 600; }
.paleta-desc { display: block; font-size: .82rem; color: var(--suave); }

/* ---------------------------------------------------------- telefono */

/* Lo que en una pantalla ancha es comodo, en un telefono es una trampa:
   la barra se apila, y todo lo que se toca llega a los 44 px que pide
   un dedo. */
@media (max-width: 700px) {
  main { padding: 1rem .8rem 3rem; }



  /* Una tabla ancha se desliza adentro de SU caja. Sin esto empuja la
     pagina entera y la barra de arriba se va de la pantalla: se pierde
     el mes, las pestanas y la salida, todo junto. */
  .config-cuerpo table, .cierre table, .avisos table {
    display: block; overflow-x: auto; max-width: 100%;
  }

  .dos { grid-template-columns: 1fr; }
  .tira { grid-template-columns: repeat(2, 1fr); }
  .focos td.avance, .focos th.avance { display: none; }

  .barra { padding: .5rem .8rem; gap: .5rem; }
  .barra .quien { font-size: .82rem; }
  .tabs { order: 3; width: 100%; }
  .tab { flex: 1; text-align: center; min-height: 44px;
         display: flex; align-items: center; justify-content: center; }

  .cabecera-pag h1 { font-size: 1.3rem; }
  .cabecera-pag .acciones { margin-left: 0; width: 100%; }

  .aviso { margin: .8rem 0; }

  /* Todo lo que se toca, a 44 px. */
  .enlace, .boton-secundario, button, .volver a {
    min-height: 44px;
  }
  .enlace, .boton-secundario {
    display: inline-flex; align-items: center;
  }
  input, select { font-size: 16px; }  /* menos de 16 y iOS hace zoom solo */
}

/* -------------------------------------------------- cuentas: la ficha */

/* Dos campos y un desplegable, uno debajo del otro. Nada de columnas:
   son cuatro renglones y una rejilla los separaria mas de lo que los
   ordena. */
.campo { display: block; margin-bottom: .9rem; max-width: 26rem; }
.campo > span {
  display: block; font-size: .8rem; text-transform: uppercase;
  letter-spacing: .03em; color: var(--suave); margin-bottom: .2rem;
}
/* Solo lo que se TECLEA ocupa el renglon entero. Sobre `input` a secas,
   esto le daba 100% de ancho tambien a las casillas y a los redondeles:
   cada uno se comia la fila y el texto de al lado se salia de la caja.
   Se vio en la maqueta de los esquemas, antes de que llegara aca. */
.campo input:not([type="checkbox"]):not([type="radio"]),
.campo select { width: 100%; }

/* Un campo que no es un renglon de texto --una tabla, una lista de
   interruptores-- necesita mas de 26rem, pero tampoco los 1500 del
   `main`: estirado a todo el ancho el texto queda a media pantalla de
   su propio borde. */
.campo.ancho { max-width: 44rem; }

/* Un interruptor con su para-que-sirve al lado. La casilla y el texto
   no se pisan porque la casilla no crece. */
.interruptor {
  display: flex; gap: .55rem; align-items: flex-start;
  padding: .45rem .6rem; margin-bottom: .45rem;
  border: 1px solid var(--linea); border-radius: 6px;
  background: var(--papel); text-transform: none; letter-spacing: normal;
}
.interruptor input { flex: 0 0 auto; margin-top: .25rem; }
.interruptor b { display: block; font-size: .9rem; color: var(--tinta); }
.interruptor small { color: var(--suave); font-size: .8rem; }

/* El aviso de una ficha se acota como la ficha y arranca donde arranca
   el contenido, no con el sangrado del aviso global de la barra. */
.aviso.acotado { margin: 0 0 1.2rem; max-width: 44rem; }
.campo .fijo {
  display: block; font-weight: 600; font-family: ui-monospace, monospace;
  padding: .35rem 0;
  /* El rotulo de arriba va en mayusculas; el VALOR no. Sin esto, un
     usuario «lemuel» salia «LEMUEL» y un nombre propio salia gritado. */
  text-transform: none; letter-spacing: normal;
}
.campo .pie {
  display: block; color: var(--suave); font-size: .8rem; margin-top: .2rem;
  /* El rotulo de arriba va en mayusculas; el para-que-sirve NO. Los dos
     son `span` sueltos dentro de `.campo`, asi que sin esto el pie
     heredaba las mayusculas del rotulo y un renglon de dos lineas salia
     gritando. */
  text-transform: none; letter-spacing: normal;
}

/* La escala de foco son once renglones de tres columnas cortas: a todo
   el ancho del campo, el numero queda a media pantalla de su factor. */
.tabla-escala { max-width: 26rem; }

/* Seis columnas cortas no se estiran a 1500 px. El problema nunca es
   que sobre espacio: es que el contenido se estira. */
.tabla-esquemas { max-width: 56rem; }

/* La lista para ESCOGER una cuenta de Handy. Cuatro columnas fijas y no
   cuatro cosas peleando por el ancho: el redondel no crece, el numero
   va con digitos de ancho parejo y alineado a la derecha, el nombre se
   estira y de-quien-es se queda en su renglon. Suelto, el nombre era un
   item de flex anonimo y se partia en dos antes que el resto. */
.lista-escoger {
  border: 1px solid var(--linea); border-radius: 6px;
  background: var(--papel); max-width: 34rem; overflow: hidden;
}
.lista-escoger label {
  display: flex; gap: .6rem; align-items: center;
  padding: .35rem .6rem; border-bottom: 1px solid var(--linea);
  font-size: .9rem; text-transform: none; letter-spacing: normal;
}
.lista-escoger label:last-child { border-bottom: 0; }
.lista-escoger label.ocupada { color: var(--suave); background: var(--papel2); }
.lista-escoger input { flex: 0 0 auto; width: auto; margin: 0; }
.lista-escoger .llave {
  flex: 0 0 auto; min-width: 4.4rem; text-align: right;
  font-family: ui-monospace, "Cascadia Mono", monospace;
  font-variant-numeric: tabular-nums; font-size: .85rem;
}
.lista-escoger .nombre-cuenta { flex: 1 1 auto; min-width: 0; }
.lista-escoger .quien-la-tiene {
  flex: 0 0 auto; margin-left: auto; font-size: .8rem; white-space: nowrap;
  color: var(--suave);
}

/* Un nombre de persona no es un codigo: va en la letra de siempre. El
   `.fijo` de monoespaciada es para el usuario de una cuenta. */
.campo .fijo.nombre { font-family: inherit; font-size: 1rem; }

/* La tabla de vendedores se vuelve tarjetas en el telefono, con el
   rotulo de cada celda sacado de `data-rotulo`.

   Por que asi y no con las dos versiones en el mismo HTML, como el mes:
   adentro hay CAMPOS. Dos copias del mismo campo se mandan las dos y
   gana la que este primero, no la que la persona tecleo. Una sola tabla
   y la hoja de estilo la reacomoda. */
@media (max-width: 700px) {
  .tabla-vendedores thead { display: none; }
  .tabla-vendedores tr {
    display: block; margin-bottom: .6rem; padding: .35rem .5rem;
    background: var(--papel); border: 1px solid var(--linea);
    border-radius: 8px;
  }
  .tabla-vendedores td {
    display: grid; grid-template-columns: 8.5rem minmax(0, 1fr);
    gap: .6rem; align-items: center; border: 0; padding: .25rem .2rem;
  }
  .tabla-vendedores td::before {
    content: attr(data-rotulo);
    color: var(--suave); font-size: .74rem; text-transform: uppercase;
    letter-spacing: .03em;
  }
  .tabla-vendedores tr.marcada { border-color: var(--grave); }
  .tabla-vendedores td input[type="text"],
  .tabla-vendedores td input:not([type]) { max-width: 9rem; }
}

/* La fila que no cuadra se marca con fondo Y con la palabra escrita al
   lado: el color no puede ser la unica senal. */
tr.marcada > td { background: var(--grave-fondo); }
.etiqueta.grave { background: var(--grave-fondo); color: var(--grave); }

/* La lista de cuentas: el nombre desactivado se marca con una etiqueta
   al lado, no escondiendo la fila entera. */
.fila-nombre { display: flex; align-items: center; gap: .5rem; }
.apagada {
  font-size: .72rem; text-transform: uppercase; letter-spacing: .05em;
  color: var(--suave); border: 1px solid var(--linea);
  border-radius: 999px; padding: .05rem .5rem; white-space: nowrap;
}

.llave {
  font-family: ui-monospace, monospace; font-size: .82rem;
  color: var(--suave);
}

/* El PIN no vive en un input que ya esta ahi esperando que alguien lo
   pise sin querer: se abre a proposito. */
details.pin {
  border: 1px solid var(--linea); border-radius: 8px;
  background: var(--papel); padding: .5rem .8rem; margin: 1.2rem 0 0;
  max-width: 26rem;
}
details.pin summary { cursor: pointer; font-weight: 600; font-size: .93rem; }
details.pin .nota { margin: .5rem 0 0; }
details.pin input { width: 100%; margin-top: .5rem; }

/* -------------------------------------------------- roles: las casillas */

/* Las diez casillas, repartidas en los tres bloques del catalogo. */
.bloques { display: grid; gap: .9rem; margin: 0 0 1rem; }
@media (min-width: 760px) {
  .bloques { grid-template-columns: repeat(3, minmax(0, 1fr)); }
}
.bloque {
  border: 1px solid var(--linea); border-radius: 8px;
  background: var(--papel); padding: .7rem .8rem; margin: 0;
}
.bloque legend {
  font-size: .72rem; text-transform: uppercase; letter-spacing: .06em;
  color: var(--suave); font-weight: 600; padding: 0 .3rem;
}
.casilla {
  display: grid; grid-template-columns: auto minmax(0, 1fr);
  gap: .1rem .5rem; padding: .35rem 0;
}
.casilla + .casilla { border-top: 1px solid var(--linea); }
.casilla input { grid-row: span 2; align-self: start; margin-top: .25rem; }
.casilla b { font-weight: 600; font-size: .93rem; }
.casilla small { color: var(--suave); font-size: .78rem; line-height: 1.35; }

/* El rol protegido, en la lista de roles. */
.marca-prot {
  font-size: .72rem; text-transform: uppercase; letter-spacing: .05em;
  color: var(--falta); background: var(--falta-fondo);
  border: 1px solid var(--falta); border-radius: 999px;
  padding: .05rem .5rem; font-weight: 600; white-space: nowrap;
}

/* Lo de una vez al mes va al final y apagado: no compite con lo diario. */
.al-final { margin-top: 2rem; opacity: .75; }
.al-final:hover, .al-final:focus-within { opacity: 1; }

/* ================================================== reporte mensual

   La pantalla que se le ensena al vendedor que duda de sus numeros.
   Ningun color literal: todo sale de las fichas de la paleta. */

/* El indice de las tres secciones largas. */
.indice { display: flex; gap: .3rem; flex-wrap: wrap; margin-bottom: 1rem; }
.salto {
  font-size: .85rem; text-decoration: none; color: var(--suave);
  padding: .3rem .7rem; border: 1px solid var(--linea); border-radius: 999px;
  background: var(--papel); white-space: nowrap;
}
.salto:hover { color: var(--acento); border-color: var(--acento); }

/* Los cuatro estados de un dia. Cada uno con FORMA ademas de color:
   cinco columnas pintadas de un color no resaltan nada. */
.ficha.hoy { background: var(--acento-suave); border-color: var(--acento); }
.ficha.cargado { background: var(--falta-fondo); border-color: var(--falta); }
.ficha.cargado .v { color: var(--falta); }

.marca-estado {
  font-size: .7rem; text-transform: uppercase; letter-spacing: .06em;
  font-weight: 650; white-space: nowrap;
}
.marca-estado.hoy { color: var(--acento); }
.marca-estado.cargado { color: var(--falta); }

.medidor i.encamino {
  background: repeating-linear-gradient(135deg,
    var(--falta) 0 3px, transparent 3px 6px);
  border-left: 1px solid var(--papel);
}
.leyenda-medidor {
  display: flex; gap: .8rem; flex-wrap: wrap; margin-top: .3rem;
  font-size: .74rem; color: var(--suave);
}
.leyenda-medidor span { display: inline-flex; align-items: center; gap: .3rem; }
.muestra { width: 10px; height: 10px; border-radius: 2px; display: inline-block; }
.muestra.solida { background: var(--acento); }
.muestra.rayada {
  background: repeating-linear-gradient(135deg,
    var(--falta) 0 3px, transparent 3px 6px);
  border: 1px solid var(--falta);
}

.sub-titulo {
  margin: 1.3rem 0 .5rem; font-size: .74rem; text-transform: uppercase;
  letter-spacing: .09em; color: var(--suave); font-weight: 650;
  padding-bottom: .25rem; border-bottom: 1px solid var(--linea);
}
/* El titulo de una tarjeta es un rotulo chiquito EN MAYUSCULAS (regla de
   la casa, `.tarjeta h2`). El contador que va al lado hereda eso si no se
   le dice lo contrario, y entonces las dos partes se leen como una sola
   frase corrida: «LA CUOTA, DIA POR DIA LOS 21 DIAS DE REPARTO DE
   AGOSTO». Se vio mirando la pantalla, no con las pruebas. */
.tarjeta > h2 .cuenta {
  text-transform: none; letter-spacing: normal;
  font-size: .78rem; font-weight: 500; color: var(--suave);
}
.tarjeta > h2 .cuenta::before { content: " · "; }
.tarjeta > .intro { margin: 0 0 .8rem; font-size: .85rem; color: var(--suave); }

/* La tabla de los dias. Relleno apretado antes que esconder columnas. */
.tabla-dias td, .tabla-dias th { padding: 6px 7px; }
.tabla-dias .dia-fecha { white-space: nowrap; font-weight: 600; }
.tabla-dias .dia-origen { color: var(--suave); font-size: .84rem; white-space: nowrap; }
.tabla-dias tr.hoy td { background: var(--acento-suave); }
.tabla-dias tr.hoy .dia-fecha { color: var(--acento); }
.tabla-dias tr.cargado td { background: var(--falta-fondo); }
.tabla-dias tr.cargado .dia-fecha { color: var(--falta); }
.tabla-dias tr.futuro td { color: var(--suave); }
.tabla-dias tr.futuro .dia-fecha { font-weight: 500; }
.tabla-dias tr.total td {
  font-weight: 700; background: var(--acento-suave);
  border-top: 2px solid var(--acento);
}

/* La lista apilada del telefono. */
.lista-dias { flex-direction: column; gap: .45rem; }
.dia-tarjeta {
  border: 1px solid var(--linea); border-radius: 8px; background: var(--fondo);
  padding: .5rem .65rem;
}
.dia-tarjeta.hoy { background: var(--acento-suave); border-color: var(--acento); }
.dia-tarjeta.cargado { background: var(--falta-fondo); border-color: var(--falta); }
.dia-tarjeta.futuro { border-style: dashed; color: var(--suave); }
.dia-tarjeta .fila1 { display: flex; align-items: baseline; gap: .5rem; }
.dia-tarjeta .fecha { font-weight: 650; }
.dia-tarjeta .monto {
  margin-left: auto; font-variant-numeric: tabular-nums; font-weight: 650;
}
.dia-tarjeta .fila2 {
  display: flex; gap: .8rem; flex-wrap: wrap; margin-top: .15rem;
  font-size: .8rem; color: var(--suave);
}

/* Un bloque por producto foco, con el mes entero adentro. */
.resumen-focos td.prod { font-weight: 600; }
.resumen-focos tr.logrado td.prod { color: var(--gana); }

.foco-bloque {
  border: 1px solid var(--linea); border-radius: 9px; background: var(--fondo);
  padding: .7rem .8rem .5rem; margin-bottom: .6rem;
}
.foco-bloque.logrado { background: var(--ok-fondo); border-color: var(--gana); }
.foco-cab { display: flex; align-items: baseline; gap: .5rem; flex-wrap: wrap; }
.foco-cab .nom { font-weight: 650; font-size: .98rem; }
.foco-cab .cod {
  font-size: .75rem; color: var(--grupo); background: var(--grupo-fondo);
  padding: .08rem .4rem; border-radius: 4px;
}
.foco-cab .cifra {
  margin-left: auto; font-variant-numeric: tabular-nums; font-weight: 650;
  white-space: nowrap;
}
.foco-cab .cifra .de { color: var(--suave); font-weight: 400; }
.foco-cab .pct {
  font-variant-numeric: tabular-nums; color: var(--suave); font-size: .88rem;
}

/* La tira del mes: una columna por dia de reparto. */
.tira-mes { display: grid; gap: 2px; margin-top: .55rem; align-items: end; }
.dia-col { display: flex; flex-direction: column; gap: 2px; min-width: 0; }
.dia-col .barra-dia {
  height: 34px; display: flex; align-items: flex-end;
  background: var(--papel2); border-radius: 2px; overflow: hidden;
}
.dia-col .barra-dia i { display: block; width: 100%; background: var(--acento); }
.foco-bloque.logrado .dia-col .barra-dia i { background: var(--gana); }
.dia-col .u {
  font-size: .68rem; text-align: center; line-height: 1.25;
  font-variant-numeric: tabular-nums; color: var(--tinta);
}
.dia-col .u.vacia { color: var(--suave); opacity: .5; }
.dia-col .d {
  font-size: .64rem; text-align: center; line-height: 1.25;
  color: var(--suave); white-space: nowrap;
}

/* Estas van DESPUES y con la misma cuenta de clases que la regla de
   `.logrado`: con menos, el bloque ya logrado pintaba de verde solido
   los dias que todavia no salen y se perdia la distincion. */
.foco-bloque .dia-col.hoy .barra-dia {
  outline: 1px solid var(--acento); outline-offset: -1px;
}
.foco-bloque .dia-col.cargado .barra-dia {
  background: var(--falta-fondo); outline: 1px solid var(--falta);
  outline-offset: -1px;
}
.foco-bloque .dia-col.cargado .barra-dia i {
  background: repeating-linear-gradient(135deg,
    var(--falta) 0 3px, transparent 3px 6px);
}
.foco-bloque .dia-col.futuro .barra-dia {
  background: transparent; border: 1px dashed var(--linea);
}
.dia-col.hoy .d, .dia-col.hoy .u { color: var(--acento); font-weight: 650; }
.dia-col.cargado .d, .dia-col.cargado .u { color: var(--falta); }
.dia-col.futuro .d, .dia-col.futuro .u { color: var(--suave); opacity: .7; }

.foco-pie {
  display: flex; align-items: baseline; gap: .5rem 1rem; flex-wrap: wrap;
  margin-top: .5rem; padding-top: .45rem; border-top: 1px solid var(--linea);
  font-size: .82rem; color: var(--suave);
}
.foco-pie .faltan { color: var(--falta); font-weight: 600; }
.foco-pie .sobran { color: var(--gana); font-weight: 600; }
.foco-pie .piezas { display: flex; flex-wrap: wrap; gap: .3rem; margin-left: auto; }

.leyenda-tira {
  display: flex; gap: 1rem; flex-wrap: wrap; margin: .1rem 0 .7rem;
  font-size: .76rem; color: var(--suave);
}
.leyenda-tira span { display: inline-flex; align-items: center; gap: .35rem; }
.leyenda-tira i { width: 10px; height: 10px; border-radius: 2px; }
.m-solida { background: var(--acento); }
.m-hoy {
  background: var(--acento); outline: 2px solid var(--acento);
  outline-offset: 1px;
}
.m-rayada {
  background: repeating-linear-gradient(135deg,
    var(--falta) 0 3px, transparent 3px 6px);
  border: 1px solid var(--falta);
}
.m-punteada { border: 1px dashed var(--linea); }

/* El corte del mes, al pie. */
.pie-regla {
  border: 1px solid var(--linea); border-left: 3px solid var(--acento);
  border-radius: 8px; background: var(--papel); padding: .75rem .9rem;
  font-size: .88rem;
}
.pie-regla h3 { margin: 0 0 .3rem; font-size: .93rem; }
.pie-regla p { margin: .25rem 0; color: var(--suave); }
.pie-regla strong { color: var(--tinta); }
.pie-regla .corte { color: var(--falta); font-weight: 600; }

/* ------------------------------------------------- PC o telefono, no los dos */

/* Van AL FINAL a proposito. Son reglas de una sola clase, igual que las
   de cualquier componente: puestas antes, un `.lista-mes { display:
   grid }` declarado despues gana por orden y la version de telefono
   aparece tambien en la pantalla grande. Ya paso.
   Aca abajo no hay nada que pueda pisarlas. */
.solo-tel { display: none; }
.solo-pc { display: block; }

.tabla-dias { display: block; }
.lista-dias { display: none; }

@media (max-width: 700px) {
  .solo-tel { display: block; }
  .solo-pc { display: none; }

  /* En el telefono se CONSULTA: la tabla de ocho columnas se vuelve
     tarjetas, la de focos de un vistazo se va, y las tiras quedan sin
     los numeros encima -- a 390 px, 21 columnas no dan para tres
     digitos. Las barras y el numero del dia si se leen. */
  .tabla-dias { display: none; }
  .lista-dias { display: flex; }
  .dia-col .u { display: none; }
  .dia-col .d { font-size: .55rem; }
  .dia-col .barra-dia { height: 40px; }
  /* El nombre se queda con su renglon: si comparte fila, la cifra y el
     porcentaje se parten segun cuanto mida el nombre y cada bloque queda
     alineado distinto. */
  .foco-cab .nom { flex: 1 1 100%; }
  .foco-cab .cifra { margin-left: 0; }
  .foco-pie .piezas { margin-left: 0; }
  .salto { min-height: 34px; display: inline-flex; align-items: center; }
}
