/* ===========================================================================
   Panel de creatividades activas — Ricca, Kinu e Islamorada
   ---------------------------------------------------------------------------
   Dirección «Suizo editorial»: papel claro, rejilla estricta, filetes finos y
   reglas de tinta, cero sombras, esquinas a escuadra.

     · Archivo (grotesca) sostiene todo el dato y la interfaz. Se carga desde
       <head> en index.html, junto a DM Serif Display.
     · DM Serif Display queda SOLO para titulares: nombre del cliente, cabeceras
       grandes y la marca del grupo.
     · El color de cada cliente entra como acento único sobre el papel; la
       semántica (oliva/ámbar/coral = antigüedad, azul = conversión) es
       idéntica en los tres.

   Lo que cambia entre pestañas es la marca. Lo que NO cambia es la semántica:
   si no, el equipo tendría que aprender a leer tres paneles distintos. El
   atributo que conmuta el tema es `data-cliente` en <html>, y lo pone app.js.
   Los tres bloques declaran EXACTAMENTE las mismas variables.
   ======================================================================== */

:root {
  color-scheme: light;

  /* Semántica de antigüedad — bajadas de luminosidad para leer sobre papel */
  --fresco: #5f7a37;
  --medio: #b0761a;
  --viejo: #b23b2c;

  /* Azul de conversión: el único frío del panel */
  --electrico: #2f5fd0;

  /* Dorado del coste por resultado en la gráfica diaria. Mismo tono que
     --medio (el ámbar de antigüedad) pero variable propia: no es la misma
     semántica, y no debe moverse si el ámbar de antigüedad cambia. */
  --dorado: #b0761a;

  --curva: cubic-bezier(0.16, 1, 0.3, 1);

  /* Alza al pasar el ratón: sombra de tinta corta y suave, editorial, no un
     halo de neón. Es lo que devuelve la vivacidad al panel claro. */
  --alza: 0 12px 28px -16px rgba(26, 24, 19, 0.28);
  --alza-fuerte: 0 20px 44px -22px rgba(26, 24, 19, 0.36);

  --radio: 0px;
  --radio-grande: 2px;
  --ancho: 1560px;

  /* DM Serif se queda para titulares; Archivo sostiene el dato */
  --serif: "DM Serif Display", "Iowan Old Style", Georgia, serif;
  --sans: "Archivo", "Instrument Sans", -apple-system, "Segoe UI", Helvetica, Arial, sans-serif;

  /* La Bombonera Group: identidad del paraguas, no cambia con la pestaña.
     En claro: papel, tinta y un hueso neutro. */
  --grupo-hondo: #f4f2ea;
  --grupo-superficie: #ffffff;
  --grupo-superficie-alta: #ffffff;
  --grupo-crema: #1a1813;
  --grupo-linea: #d9d4c5;
  --grupo-linea-fuerte: #1a1813;
  --grupo-acento: #8a8578;
  --grupo-hondo-rgb: 244 242 234;
  --grupo-negro-rgb: 26 24 19;
}

/* --- Ricca: acento vino #A80F27 (el rojo de la Suizo editorial) --- */
[data-cliente="ricca"] {
  --hondo-rgb: 234 231 219;
  --negro-rgb: 26 24 19;
  --superficie-rgb: 255 255 255;
  --vino-rgb: 168 15 39;
  --laton-rgb: 168 15 39;

  --vino: #a80f27;
  --crema: #1a1813;
  --vino-claro: #c8324a;
  --vino-tenue: rgba(168, 15, 39, 0.5);

  --hondo: #eae7db;
  --fondo: #f4f2ea;
  --superficie: #ffffff;
  --superficie-alta: #ffffff;
  --relieve: #ffffff;

  --texto: #1a1813;
  --texto-medio: #565247;
  --texto-tenue: #8a8578;

  --laton: #a80f27;
  --laton-hondo: #7c0a1c;

  --linea: #d9d4c5;
  --linea-fuerte: #b3ad9c;
  --sombra: none;
  --sombra-corta: none;
  --brillo-alto: none;
  --halo-laton: none;
  --halo-vino: none;
  --halo-alerta: none;
}

/* --- Kinu: acento petróleo #1F6F68 (el #1F3A3D de su web, subido para papel) --- */
[data-cliente="kinu"] {
  --hondo-rgb: 234 231 219;
  --negro-rgb: 26 24 19;
  --superficie-rgb: 255 255 255;
  --vino-rgb: 31 111 104;
  --laton-rgb: 31 111 104;

  --vino: #1f6f68;
  --crema: #1a1813;
  --vino-claro: #2c8c84;
  --vino-tenue: rgba(31, 111, 104, 0.5);

  --hondo: #eae7db;
  --fondo: #f4f2ea;
  --superficie: #ffffff;
  --superficie-alta: #ffffff;
  --relieve: #ffffff;

  --texto: #1a1813;
  --texto-medio: #565247;
  --texto-tenue: #8a8578;

  --laton: #1f6f68;
  --laton-hondo: #134b46;

  --linea: #d9d4c5;
  --linea-fuerte: #b3ad9c;
  --sombra: none;
  --sombra-corta: none;
  --brillo-alto: none;
  --halo-laton: none;
  --halo-vino: none;
  --halo-alerta: none;
}

/* --- Islamorada: acento cobalto #20408A (el azulejo sevillano) --- */
[data-cliente="islamorada"] {
  --hondo-rgb: 234 231 219;
  --negro-rgb: 26 24 19;
  --superficie-rgb: 255 255 255;
  --vino-rgb: 32 64 138;
  --laton-rgb: 32 64 138;

  --vino: #20408a;
  --crema: #1a1813;
  --vino-claro: #3358ad;
  --vino-tenue: rgba(32, 64, 138, 0.5);

  --hondo: #eae7db;
  --fondo: #f4f2ea;
  --superficie: #ffffff;
  --superficie-alta: #ffffff;
  --relieve: #ffffff;

  --texto: #1a1813;
  --texto-medio: #565247;
  --texto-tenue: #8a8578;

  --laton: #20408a;
  --laton-hondo: #152c60;

  --linea: #d9d4c5;
  --linea-fuerte: #b3ad9c;
  --sombra: none;
  --sombra-corta: none;
  --brillo-alto: none;
  --halo-laton: none;
  --halo-vino: none;
  --halo-alerta: none;
}

*,
*::before,
*::after {
  box-sizing: border-box;
}

[hidden] {
  display: none !important;
}

html {
  scroll-behavior: smooth;
}

body {
  margin: 0;
  background: var(--fondo);
  transition: background 0.4s var(--curva), color 0.4s var(--curva);
  color: var(--texto);
  font-family: var(--sans);
  font-size: 14px;
  line-height: 1.5;
  font-variant-numeric: tabular-nums;
  -webkit-font-smoothing: antialiased;
  text-rendering: optimizeLegibility;
}

h1,
h2,
h3,
h4 {
  margin: 0;
  font-weight: 400;
}

main {
  max-width: var(--ancho);
  margin: 0 auto;
  padding: 0 clamp(18px, 3vw, 44px) 160px;
}

:focus-visible {
  outline: 2px solid var(--laton);
  outline-offset: 3px;
  border-radius: 0;
}

::selection {
  background: var(--vino);
  color: #faf8f2;
}

/* ===========================================================================
   Puerta — grupo, no cliente. Papel, filete, sin brillos.
   ======================================================================== */

.puerta {
  min-height: 100vh;
  display: grid;
  place-items: center;
  padding: 24px;
  position: relative;
  overflow: hidden;
  background: var(--grupo-hondo);
  color: var(--grupo-crema);
}

.puerta::before {
  content: "";
  position: absolute;
  inset: -10%;
  background: radial-gradient(60% 50% at 50% 0%, rgba(26, 24, 19, 0.04), transparent 70%);
  pointer-events: none;
}

.puerta__caja {
  position: relative;
  width: min(430px, 100%);
  background: var(--grupo-superficie);
  border: 1px solid var(--grupo-linea-fuerte);
  border-radius: var(--radio-grande);
  padding: 46px 42px 40px;
  display: grid;
  gap: 16px;
}

.puerta__marca {
  position: relative;
  overflow: hidden;
  margin: 0 0 12px;
  font-family: var(--serif);
  font-size: 26px;
  line-height: 1.15;
  letter-spacing: 0.1em;
  text-transform: uppercase;
  color: var(--grupo-crema);
}

.puerta__marca > span:last-child {
  display: block;
  margin-top: 12px;
  font-family: var(--sans);
  font-size: 10px;
  font-weight: 600;
  letter-spacing: 0.3em;
  color: var(--grupo-acento);
}

.puerta__marca-ll,
.puerta__marca-lb {
  white-space: nowrap;
}

/* Lima que se lee sobre blanco */
.puerta__marca-ll {
  color: #5f7d0e;
}

.puerta__marca-lb {
  color: var(--grupo-crema);
}

.puerta__marca-x {
  margin: 0 0.3em;
  font-size: 0.72em;
  vertical-align: 0.08em;
  color: var(--grupo-acento);
}

@media (prefers-reduced-motion: no-preference) {
  .puerta__marca {
    animation: puerta-marca-flota 4s ease-in-out infinite alternate;
  }
}

@keyframes puerta-marca-flota {
  from {
    transform: translateY(-2px);
  }
  to {
    transform: translateY(2px);
  }
}

.puerta__titulo {
  font-family: var(--serif);
  font-size: 30px;
  line-height: 1.1;
  letter-spacing: -0.01em;
  color: var(--grupo-crema);
}

.puerta__texto {
  margin: 0;
  color: var(--texto-medio);
  font-size: 13.5px;
}

.puerta__campo,
.filtros__campo {
  width: 100%;
  padding: 12px 14px;
  border: 1px solid var(--linea-fuerte);
  border-radius: var(--radio);
  background: #fff;
  font: inherit;
  color: var(--texto);
  transition: border-color 0.18s ease;
}

.puerta__campo::placeholder,
.filtros__campo::placeholder {
  color: var(--texto-tenue);
}

.puerta__campo:focus,
.filtros__campo:focus {
  border-color: var(--texto);
  outline: none;
}

.puerta__error {
  margin: 0;
  color: var(--viejo);
  font-size: 13.5px;
  font-weight: 600;
}

.puerta__campo {
  background: #fff;
  border-color: var(--grupo-linea-fuerte);
  color: var(--grupo-crema);
}

.puerta__campo::placeholder {
  color: var(--grupo-acento);
}

.puerta__campo:focus {
  border-color: var(--grupo-crema);
}

.puerta .boton--primario {
  background: var(--grupo-crema);
  border-color: var(--grupo-crema);
  color: #faf8f2;
}

.puerta .boton--primario:hover {
  background: #000;
  border-color: #000;
  color: #fff;
}

/* ===========================================================================
   Barra superior
   ======================================================================== */

.tira {
  display: flex;
  align-items: stretch;
  justify-content: space-between;
  gap: 24px;
  padding-right: 32px;
  background: var(--fondo);
  border-bottom: 1px solid var(--linea-fuerte);
}

.tira__grupo {
  margin: 0;
  align-self: center;
  font-family: var(--serif);
  font-size: 13px;
  line-height: 1;
  letter-spacing: 0.18em;
  text-transform: uppercase;
  color: var(--texto-medio);
  white-space: nowrap;
}

.tira__grupo span {
  margin-left: 0.5em;
  color: var(--texto-tenue);
}

@media (max-width: 560px) {
  .tira {
    padding-right: 18px;
  }
  .tira__grupo {
    font-size: 11px;
    letter-spacing: 0.12em;
  }
}

.pestanas {
  display: flex;
  gap: 28px;
  padding: 0 32px;
}

/* Las pestañas son nombres de cliente: serif, como el nombre grande de la
   barra. El conmutador de días se queda pequeño y de versalitas. */
.pestanas__opcion {
  appearance: none;
  background: none;
  border: 0;
  border-bottom: 2px solid transparent;
  margin-bottom: -1px;
  padding: 15px 0 11px;
  font-family: var(--serif);
  font-size: 20px;
  line-height: 1;
  color: var(--texto-tenue);
  cursor: pointer;
  transition: color 0.35s var(--curva), border-color 0.35s var(--curva);
}

.pestanas__opcion:hover {
  color: var(--texto);
  border-bottom-color: var(--linea-fuerte);
}

.pestanas__opcion.es-activa {
  color: var(--texto);
  border-bottom-color: var(--laton);
}

.pestanas__opcion:focus-visible {
  outline: 2px solid var(--laton);
  outline-offset: 3px;
}

.barra {
  position: sticky;
  top: 0;
  z-index: 40;
  display: flex;
  flex-wrap: wrap;
  gap: 18px;
  align-items: center;
  justify-content: space-between;
  padding: 16px clamp(18px, 3vw, 44px);
  background: rgb(var(--hondo-rgb) / 0.88);
  backdrop-filter: blur(10px) saturate(120%);
  border-bottom: 1px solid var(--linea);
}

.barra__marca {
  display: flex;
  align-items: baseline;
  gap: 16px;
  min-width: 0;
}

/* Nombre del cliente: titular, DM Serif */
.barra__cuenta {
  font-family: var(--serif);
  font-size: 26px;
  letter-spacing: 0.1em;
  text-transform: uppercase;
  color: var(--texto);
  white-space: nowrap;
}

.barra__sub {
  color: var(--texto-tenue);
  font-size: 12px;
  letter-spacing: 0.04em;
  white-space: nowrap;
}

.barra__sub.es-viejo {
  color: var(--medio);
  font-weight: 600;
}

.barra__acciones {
  display: flex;
  gap: 10px;
  align-items: center;
}

.conmutador {
  display: flex;
  border: 1px solid var(--linea-fuerte);
  border-radius: var(--radio);
  overflow: hidden;
  background: #fff;
}

.conmutador__opcion {
  border: 0;
  background: none;
  padding: 8px 16px;
  font: inherit;
  font-size: 12px;
  font-weight: 600;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  color: var(--texto-medio);
  cursor: pointer;
  transition: color 0.2s var(--curva), background 0.2s var(--curva);
}

.conmutador__opcion:hover {
  color: var(--texto);
  background: rgba(26, 24, 19, 0.05);
}

.conmutador__opcion.es-activa {
  background: var(--vino);
  color: #faf8f2;
}

.boton {
  border: 1px solid var(--linea-fuerte);
  background: #fff;
  color: var(--texto);
  padding: 8px 18px;
  border-radius: var(--radio);
  font: inherit;
  font-size: 12px;
  font-weight: 600;
  letter-spacing: 0.06em;
  text-transform: uppercase;
  cursor: pointer;
  transition: border-color 0.2s var(--curva), color 0.2s var(--curva),
    background 0.2s var(--curva), transform 0.2s var(--curva), box-shadow 0.2s var(--curva);
}

.boton:hover {
  border-color: var(--texto);
  color: var(--texto);
  background: rgba(26, 24, 19, 0.04);
  transform: translateY(-2px);
  box-shadow: var(--alza);
}

.boton:active {
  transform: translateY(0);
  box-shadow: none;
}

.boton--primario {
  background: var(--vino);
  border-color: var(--vino);
  color: #faf8f2;
  font-size: 13px;
  padding: 11px 22px;
}

.boton--primario:hover {
  background: var(--laton-hondo);
  border-color: var(--laton-hondo);
  color: #fff;
}

/* «Cerrar sesión» en la barra: no compite con el conmutador de días. Sin caja,
   texto tenue, y al pasar el ratón se subraya y toma el color del cliente. */
.boton--sutil {
  border-color: transparent;
  background: none;
  color: var(--texto-tenue);
  padding: 8px 4px;
}

.boton--sutil:hover {
  border-color: transparent;
  background: none;
  color: var(--laton);
  transform: none;
  box-shadow: none;
  text-decoration: underline;
  text-underline-offset: 4px;
}

/* ===========================================================================
   Tablero — cajas blancas de filete fino, sin relieve ni sombra. El aire
   entre ellas se conserva idéntico.
   ======================================================================== */

.tablero {
  position: relative;
  padding: clamp(26px, 3.4vw, 44px) 0 0;
  display: grid;
  gap: clamp(18px, 2.2vw, 26px);
}

/* --- Cifras --- */

.kpis {
  display: grid;
  grid-template-columns: repeat(5, minmax(0, 1fr));
  gap: clamp(12px, 1.4vw, 18px);
}

.kpis.es-seis {
  grid-template-columns: repeat(6, minmax(0, 1fr));
}

.kpi {
  position: relative;
  padding: 18px 18px 18px;
  border-radius: var(--radio);
  background: #fff;
  border: 1px solid var(--linea);
  border-top: 2px solid var(--texto);
  box-shadow: none;
  display: grid;
  gap: 7px;
  align-content: start;
  overflow: hidden;
  transition: transform 0.28s var(--curva), box-shadow 0.28s var(--curva),
    border-color 0.28s var(--curva);
}

.kpi::before,
.kpi::after {
  display: none;
}

/* Las cinco/seis cifras de arriba son lo primero que se mira: al pasar el ratón
   se levantan, engordan el filo de tinta al color del cliente y encienden la
   cifra. */
.kpi:hover {
  transform: translateY(-4px) scale(1.015);
  border-color: var(--linea);
  border-top-color: var(--laton);
  box-shadow: var(--alza);
}

.kpi:hover .kpi__valor {
  color: var(--laton);
}

.kpi:active {
  transform: translateY(-1px) scale(1.005);
}

.kpi__etiqueta {
  margin: 0;
  font-size: 10px;
  font-weight: 700;
  letter-spacing: 0.11em;
  text-transform: uppercase;
  color: var(--texto-tenue);
}

/* Cifra = dato: Archivo pesada, no serif */
.kpi__valor {
  margin: 0;
  font-family: var(--sans);
  font-weight: 900;
  font-size: clamp(28px, 2.6vw, 37px);
  line-height: 1;
  color: var(--texto);
  letter-spacing: -0.02em;
  transition: color 0.28s var(--curva);
}

.kpi__apunte {
  margin: 0;
  font-size: 11.5px;
  line-height: 1.4;
  color: var(--texto-medio);
}

.kpi.es-alerta .kpi__valor {
  color: var(--viejo);
}

.kpi.es-sube .kpi__apunte {
  color: var(--fresco);
  font-weight: 600;
}

.kpi.es-baja .kpi__apunte {
  color: var(--viejo);
  font-weight: 600;
}

/* --- Paneles --- */

.paneles {
  display: grid;
  grid-template-columns: minmax(0, 1.62fr) minmax(0, 1fr);
  gap: clamp(18px, 2.2vw, 26px);
}

.panel {
  margin: 0;
  padding: 20px 22px 18px;
  border-radius: var(--radio-grande);
  background: #fff;
  border: 1px solid var(--linea);
  box-shadow: none;
  display: grid;
  gap: 16px;
  align-content: start;
  min-width: 0;
  transition: transform 0.3s var(--curva), box-shadow 0.3s var(--curva),
    border-color 0.3s var(--curva);
}

/* Los paneles llevan gráficas: se levantan un poco, pero sin escalar, para no
   emborronar el trazo ni mover el punto que estás mirando. */
.panel:hover {
  transform: translateY(-3px);
  border-color: var(--texto);
  box-shadow: var(--alza);
}

.panel__cabecera {
  display: flex;
  flex-wrap: wrap;
  align-items: baseline;
  justify-content: space-between;
  gap: 8px 20px;
  padding-bottom: 10px;
  border-bottom: 1px solid var(--texto);
}

.panel__titulo {
  font-size: 11px;
  font-weight: 700;
  letter-spacing: 0.13em;
  text-transform: uppercase;
  color: var(--texto);
}

.panel__pista {
  font-size: 12px;
  color: var(--texto-tenue);
  font-variant-numeric: tabular-nums;
  text-align: right;
}

.panel__lienzo {
  min-height: 40px;
}

.panel__leyenda {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 10px 24px;
  color: var(--texto-tenue);
  font-size: 11.5px;
}

.leyenda__pista {
  margin-left: auto;
  color: var(--texto-tenue);
}

.muestra {
  width: 16px;
  height: 3px;
  border-radius: 0;
  display: inline-block;
  flex: none;
}

.muestra--area {
  background: var(--laton);
}

.muestra--reserva {
  width: 8px;
  height: 8px;
  border-radius: 50%;
  background: var(--electrico);
  box-shadow: none;
}

.muestra--linea {
  background: var(--dorado);
}

.muestra--paid {
  width: 16px;
  height: 8px;
  border-radius: 0;
  background: var(--laton);
}

.muestra--redes {
  width: 16px;
  height: 8px;
  border-radius: 0;
  background: var(--texto-tenue);
}

/* --- Reparto del gasto --- */

.reparto {
  list-style: none;
  margin: 0;
  padding: 0;
  display: grid;
  gap: 13px;
}

.reparto__fila {
  display: grid;
  grid-template-columns: minmax(0, 1fr) 76px;
  gap: 5px 14px;
  align-items: center;
  padding: 4px 8px;
  margin: -4px -8px;
  border-radius: 0;
  transition: background 0.25s var(--curva), transform 0.25s var(--curva);
}

.reparto__fila:hover {
  background: rgba(26, 24, 19, 0.05);
  transform: translateX(4px);
}

.reparto__fila:hover .reparto__barra {
  filter: brightness(0.92);
}

.reparto__fila:hover .reparto__nombre {
  color: var(--texto);
}

.reparto__nombre {
  font-size: 12px;
  color: var(--texto-medio);
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.reparto__carril {
  grid-column: 1;
  height: 7px;
  border-radius: 0;
  background: #e7e3d5;
  overflow: hidden;
}

.reparto__barra {
  display: block;
  height: 100%;
  border-radius: 0;
  background: var(--texto-tenue);
  transition: filter 0.25s var(--curva);
}

.reparto__fila--paid .reparto__barra {
  background: var(--laton);
  box-shadow: none;
}

.reparto__fila--resto .reparto__barra {
  background: #cfc9b8;
}

.reparto__cifra {
  grid-column: 2;
  grid-row: 1 / span 2;
  text-align: right;
  font-size: 13px;
  line-height: 1.3;
}

.reparto__cifra b {
  display: block;
  color: var(--texto);
  font-weight: 700;
}

.reparto__pct {
  color: var(--texto-tenue);
  font-size: 11px;
}

/* --- Globo de la línea de tiempo --- */

.globo {
  position: absolute;
  z-index: 30;
  width: 232px;
  padding: 10px;
  border-radius: var(--radio-grande);
  background: #fff;
  border: 1px solid var(--texto);
  box-shadow: none;
  display: grid;
  grid-template-columns: 62px minmax(0, 1fr);
  gap: 12px;
  pointer-events: none;
}

.globo__imagen {
  width: 62px;
  height: 62px;
  border-radius: 0;
  overflow: hidden;
  background: var(--hondo);
}

.globo__imagen img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  display: block;
}

.globo__datos {
  min-width: 0;
  align-self: center;
}

.globo__nombre {
  margin: 0;
  font-size: 12.5px;
  font-weight: 700;
  line-height: 1.3;
  display: -webkit-box;
  -webkit-line-clamp: 2;
  -webkit-box-orient: vertical;
  overflow: hidden;
}

.globo__campana,
.globo__edad {
  margin: 3px 0 0;
  font-size: 11px;
  color: var(--texto-tenue);
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.globo__edad {
  color: var(--laton);
  font-weight: 600;
}

/* --- Línea de tiempo --- */

.panel--linea {
  position: relative;
}

.linea__lienzo {
  padding-top: 6px;
}

.linea__marcas {
  position: relative;
  height: 132px;
}

.linea__marcas::after {
  content: "";
  position: absolute;
  inset: auto 0 0 0;
  height: 1px;
  background: var(--texto);
}

/* Filamento = una pieza, colocada por su fecha. Barra sólida fina, sin halo. */
.marca {
  position: absolute;
  bottom: 0;
  width: 4px;
  padding: 0;
  border: 0;
  border-radius: 0;
  background: var(--tono, var(--fresco));
  box-shadow: none;
  transform-origin: bottom;
  cursor: pointer;
  transition: transform 0.2s var(--curva), filter 0.2s ease, box-shadow 0.2s ease;
}

.marca::after {
  content: "";
  position: absolute;
  left: 50%;
  bottom: -3px;
  width: 6px;
  height: 6px;
  transform: translateX(-50%);
  border-radius: 50%;
  background: var(--tono, var(--fresco));
  box-shadow: none;
}

.marca::before {
  content: "";
  position: absolute;
  inset: -6px -9px -10px -9px;
}

.marca:hover,
.marca:focus-visible {
  transform: scaleY(1.2) scaleX(1.75);
  filter: brightness(0.9);
  box-shadow: 0 3px 10px -2px var(--tono, var(--fresco));
  z-index: 2;
}

.marca--ok {
  --tono: var(--fresco);
}
.marca--aviso {
  --tono: var(--medio);
}
.marca--alerta {
  --tono: var(--viejo);
}

@media (prefers-reduced-motion: no-preference) {
  .linea__marcas.es-nueva .marca {
    animation: brota 0.6s cubic-bezier(0.16, 1, 0.3, 1) backwards;
  }
}

@keyframes brota {
  from {
    transform: scaleY(0);
    opacity: 0;
  }
}

.linea__ejes {
  position: relative;
  height: 26px;
  margin-top: 10px;
  border-top: 1px solid var(--linea);
  padding-top: 8px;
  color: var(--texto-tenue);
  font-size: 11px;
  letter-spacing: 0.08em;
  text-transform: uppercase;
}

.linea__ejes span {
  position: absolute;
  transform: translateX(-50%);
  white-space: nowrap;
}

.linea__leyenda {
  display: flex;
  align-items: center;
  flex-wrap: wrap;
  gap: 10px 26px;
  color: var(--texto-tenue);
  font-size: 12px;
  margin: 18px 0 0;
}

.leyenda__item {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  white-space: nowrap;
}

.punto {
  width: 8px;
  height: 8px;
  border-radius: 50%;
  display: inline-block;
  flex: none;
}

.punto--ok {
  background: var(--fresco);
  box-shadow: none;
}
.punto--aviso {
  background: var(--medio);
  box-shadow: none;
}
.punto--alerta {
  background: var(--viejo);
  box-shadow: none;
}

/* ===========================================================================
   Gráficas
   ======================================================================== */

.panel svg,
.grafica svg {
  display: block;
  width: 100%;
  height: auto;
  overflow: visible;
}

.rejilla {
  stroke: #e6e1d3;
}

.trazo-gasto {
  fill: none;
  stroke: var(--laton);
  stroke-width: 1.75;
  stroke-linejoin: round;
  stroke-linecap: round;
}

.linea-cpa {
  fill: none;
  stroke: var(--dorado);
  stroke-width: 1.5;
  stroke-linejoin: round;
  stroke-linecap: round;
  opacity: 0.9;
}

.ref-cpa {
  stroke: var(--dorado);
  stroke-width: 1;
  stroke-dasharray: 4 4;
  opacity: 0.45;
}

.rotulo--cpa {
  fill: var(--dorado);
  opacity: 0.9;
}

.punto-reserva {
  fill: var(--electrico);
  stroke: #fff;
  stroke-width: 1;
}

.tallo-reserva {
  stroke: var(--electrico);
  stroke-width: 1;
  opacity: 0.3;
}

.guia {
  stroke: var(--texto);
  stroke-width: 1;
  stroke-dasharray: 2 4;
  opacity: 0.45;
}

.foco {
  fill: var(--texto);
  stroke: #fff;
  stroke-width: 2;
}

.eje {
  stroke: var(--texto);
}

.rotulo {
  fill: var(--texto-tenue);
  font-size: 11px;
  font-family: var(--sans);
}

.grafica {
  margin: 0;
  padding: 0;
}

.grafica figcaption {
  color: var(--texto-tenue);
  font-size: 11px;
  font-weight: 600;
  letter-spacing: 0.1em;
  text-transform: uppercase;
  margin-bottom: 14px;
}

.grafica .barra-dia {
  fill: var(--laton);
  opacity: 0.72;
}

/* ===========================================================================
   Filtros
   ======================================================================== */

.filtros {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 20px;
  margin: 34px 0 22px;
}

.filtros__campo {
  width: min(320px, 100%);
  text-transform: uppercase;
  letter-spacing: 0.04em;
  font-size: 12.5px;
}

.selector {
  display: inline-flex;
  align-items: center;
  gap: 10px;
  padding: 0 14px 0 15px;
  height: 40px;
  border: 1px solid var(--linea-fuerte);
  border-radius: var(--radio);
  background: #fff;
  transition: border-color 0.2s var(--curva), transform 0.2s var(--curva),
    box-shadow 0.2s var(--curva);
}

.selector:hover,
.selector:focus-within {
  border-color: var(--texto);
  transform: translateY(-2px);
  box-shadow: var(--alza);
}

.selector__etiqueta {
  color: var(--texto-tenue);
  font-size: 11px;
  font-weight: 600;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  white-space: nowrap;
}

.selector select {
  appearance: none;
  border: 0;
  background: none;
  font: inherit;
  font-size: 13px;
  font-weight: 600;
  color: var(--texto);
  cursor: pointer;
  padding-right: 16px;
  background-image: linear-gradient(45deg, transparent 50%, var(--texto) 50%),
    linear-gradient(135deg, var(--texto) 50%, transparent 50%);
  background-position: right 6px center, right 1px center;
  background-size: 5px 5px, 5px 5px;
  background-repeat: no-repeat;
}

.selector select:focus {
  outline: none;
}

.selector select option {
  background: #fff;
  color: var(--texto);
}

.selector--linea {
  height: 32px;
  padding: 0 11px 0 12px;
  gap: 8px;
  background: none;
  border-color: var(--linea);
  margin-right: auto;
}

.selector--linea .selector__etiqueta,
.selector--linea select {
  font-size: 12px;
}

.filtros__cuenta {
  margin-left: auto;
  color: var(--texto-tenue);
  font-size: 12px;
  letter-spacing: 0.04em;
}

/* ===========================================================================
   Bloques y campañas
   ======================================================================== */

.bloque__titulo {
  display: flex;
  align-items: baseline;
  flex-wrap: wrap;
  gap: 14px;
  margin: 48px 0 18px;
  padding-bottom: 12px;
  border-bottom: 2px solid var(--texto);
  font-family: var(--serif);
  font-size: 27px;
  color: var(--texto);
}

.bloque__cuenta {
  font-family: var(--sans);
  color: var(--texto-tenue);
  font-size: 14px;
  font-weight: 600;
  font-variant-numeric: tabular-nums;
}

.campana {
  border: 1px solid var(--linea);
  border-radius: var(--radio-grande);
  background: #fff;
  margin-bottom: 12px;
  overflow: hidden;
  box-shadow: none;
  transition: border-color 0.25s var(--curva), box-shadow 0.25s var(--curva);
}

.campana__cabecera {
  display: grid;
  grid-template-columns: 1fr auto auto;
  gap: 22px;
  align-items: center;
  width: 100%;
  padding: 16px 22px;
  background: none;
  border: 0;
  font: inherit;
  color: inherit;
  text-align: left;
  cursor: pointer;
  transition: background 0.25s var(--curva);
}

.campana__cabecera:hover {
  background: rgba(26, 24, 19, 0.03);
}

.campana__cabecera:hover .campana__nombre {
  color: var(--texto);
}

.campana:hover {
  border-color: var(--texto);
  box-shadow: var(--alza);
}

.campana__nombre {
  font-size: 15px;
  font-weight: 600;
  letter-spacing: 0.005em;
}

.campana__objetivo {
  color: var(--texto-tenue);
  font-size: 11px;
  font-weight: 600;
  letter-spacing: 0.09em;
  text-transform: uppercase;
  margin-left: 12px;
}

.campana__edad {
  font-size: 13px;
  font-weight: 600;
  color: var(--fresco);
}

.campana__edad--aviso {
  color: var(--medio);
}

.campana__edad--alerta {
  color: var(--viejo);
}

.campana__piezas {
  color: var(--texto-tenue);
  font-size: 12px;
  min-width: 150px;
  text-align: right;
  white-space: nowrap;
}

.campana__rejilla {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(252px, 1fr));
  gap: 18px;
  padding: 6px 22px 24px;
  border-top: 1px solid var(--linea);
}

/* ===========================================================================
   Tarjeta de creatividad — blanca, filete, franja de antigüedad a la izquierda.
   ======================================================================== */

.pieza {
  display: grid;
  grid-template-rows: auto 1fr;
  border: 1px solid var(--linea);
  border-radius: var(--radio-grande);
  background: #fff;
  overflow: hidden;
  position: relative;
  transition: transform 0.3s var(--curva), box-shadow 0.3s var(--curva),
    border-color 0.3s var(--curva);
}

/* Se levanta hacia el usuario, el filete se vuelve tinta y la foto hace un
   punto de zoom (ver .pieza__imagen). */
.pieza:hover,
.pieza:focus-within {
  transform: translateY(-6px);
  border-color: var(--texto);
  box-shadow: var(--alza-fuerte);
  z-index: 2;
}

.pieza--alerta:hover,
.pieza--alerta:focus-within {
  box-shadow: 0 20px 44px -22px rgba(178, 59, 44, 0.5);
}

.pieza::before {
  content: "";
  position: absolute;
  left: 0;
  top: 0;
  bottom: 0;
  width: 3px;
  z-index: 3;
  background: var(--fresco);
}

.pieza--aviso::before {
  background: var(--medio);
}

.pieza--alerta::before {
  background: var(--viejo);
  box-shadow: none;
}

.pieza__ventana {
  position: relative;
  aspect-ratio: 1;
  background: var(--hondo);
  overflow: hidden;
  cursor: pointer;
  border: 0;
  padding: 0;
  width: 100%;
  display: block;
}

.pieza__imagen {
  width: 100%;
  height: 100%;
  object-fit: cover;
  display: block;
  transition: transform 0.4s cubic-bezier(0.16, 1, 0.3, 1);
}

.pieza:hover .pieza__imagen,
.pieza:focus-within .pieza__imagen {
  transform: scale(1.06);
}

.pieza__ventana::after {
  content: "";
  position: absolute;
  inset: auto 0 0 0;
  height: 45%;
  background: linear-gradient(to top, rgb(var(--hondo-rgb) / 0.66), transparent);
  pointer-events: none;
}

.pieza__sello {
  position: absolute;
  left: 10px;
  bottom: 10px;
  z-index: 2;
  padding: 3px 8px;
  border-radius: 0;
  background: #fff;
  border: 1px solid var(--texto);
  color: var(--texto);
  font-size: 10px;
  font-weight: 600;
  letter-spacing: 0.08em;
  text-transform: uppercase;
}

.pieza__sinvista {
  position: absolute;
  inset: 0;
  display: grid;
  place-content: center;
  text-align: center;
  padding: 22px;
  color: var(--texto-tenue);
  font-size: 12px;
}

.pieza__datos {
  padding: 13px 14px 14px;
  display: flex;
  flex-direction: column;
  gap: 7px;
  min-width: 0;
}

.pieza__nombre {
  font-size: 13px;
  font-weight: 600;
  line-height: 1.35;
  letter-spacing: 0.005em;
  display: -webkit-box;
  -webkit-line-clamp: 2;
  -webkit-box-orient: vertical;
  overflow: hidden;
  min-height: calc(2 * 1.35em);
}

.pieza__conjunto {
  margin: 0;
  padding-left: 8px;
  border-left: 2px solid var(--laton);
  color: var(--texto-medio);
  font-size: 11px;
  line-height: 1.4;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}

.pieza__edad {
  margin: 0;
  font-size: 11px;
  font-weight: 700;
  color: var(--fresco);
  white-space: nowrap;
}

.pieza--aviso .pieza__edad--emitiendo {
  color: var(--medio);
}

.pieza--alerta .pieza__edad--emitiendo {
  color: var(--viejo);
}

.pieza__edad--nueva,
.pieza__edad--pausada,
.pieza__edad--inactiva {
  color: var(--texto-tenue);
  font-weight: 600;
}

.pieza.es-pausada .pieza__ventana {
  opacity: 0.6;
}

.pieza.es-pausada:hover .pieza__ventana {
  opacity: 1;
}

.pieza__metricas {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 10px;
  margin: 4px 0 0;
  padding-top: 11px;
  border-top: 1px solid var(--linea);
}

.pieza__metrica {
  min-width: 0;
}

.pieza__metricas dt {
  color: var(--texto-tenue);
  font-size: 9px;
  font-weight: 600;
  letter-spacing: 0.06em;
  text-transform: uppercase;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}

.pieza__metricas dd {
  margin: 1px 0 0;
  color: var(--texto);
  font-size: 14px;
  font-weight: 800;
  line-height: 1.25;
  letter-spacing: -0.01em;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}

.pieza__acciones {
  display: flex;
  gap: 7px;
  margin-top: auto;
  padding-top: 12px;
}

.pieza__accion {
  flex: 1;
  border: 1px solid var(--linea-fuerte);
  background: #faf8f2;
  border-radius: var(--radio);
  padding: 8px 6px;
  font: inherit;
  font-size: 11px;
  font-weight: 600;
  letter-spacing: 0.05em;
  text-transform: uppercase;
  color: var(--texto);
  cursor: pointer;
  transition: border-color 0.2s var(--curva), color 0.2s var(--curva),
    background 0.2s var(--curva), transform 0.2s var(--curva);
}

.pieza__accion:hover {
  border-color: var(--texto);
  color: var(--texto);
  background: rgba(26, 24, 19, 0.04);
  transform: translateY(-2px);
}

.pieza__accion:active {
  transform: translateY(0);
}

.pieza__accion--quitar[aria-pressed="true"] {
  background: var(--vino);
  border-color: var(--vino);
  color: #faf8f2;
}

.pieza__accion--revisar[aria-pressed="true"] {
  background: var(--laton-hondo);
  border-color: var(--laton-hondo);
  color: #faf8f2;
  font-weight: 700;
}

.pieza.es-quitar {
  border-color: var(--viejo);
}

.pieza.es-quitar .pieza__ventana {
  opacity: 0.4;
}

.pieza.es-revisar {
  border-color: var(--laton-hondo);
}

/* ===========================================================================
   Barra de revisión
   ======================================================================== */

.revision {
  position: fixed;
  left: 50%;
  bottom: 26px;
  transform: translateX(-50%);
  z-index: 50;
  display: flex;
  align-items: center;
  gap: 14px;
  padding: 13px 16px 13px 22px;
  background: #fff;
  border: 1px solid var(--texto);
  border-radius: var(--radio);
  box-shadow: 0 6px 22px -10px rgba(26, 24, 19, 0.35);
}

.revision__texto {
  font-weight: 600;
  font-size: 13px;
  letter-spacing: 0.04em;
  white-space: nowrap;
}

/* ===========================================================================
   Ficha
   ======================================================================== */

.ficha {
  border: 1px solid var(--texto);
  border-radius: var(--radio-grande);
  padding: 0;
  width: min(1000px, 94vw);
  max-height: 90vh;
  background: #fff;
  color: var(--texto);
  box-shadow: 0 20px 60px -24px rgba(26, 24, 19, 0.4);
}

.ficha::backdrop {
  background: rgba(26, 24, 19, 0.42);
}

.ficha__cerrar {
  position: absolute;
  top: 12px;
  right: 14px;
  z-index: 5;
  border: 1px solid var(--texto);
  background: #fff;
  width: 32px;
  height: 32px;
  border-radius: 0;
  font-size: 18px;
  line-height: 1;
  cursor: pointer;
  color: var(--texto);
  transition: background 0.2s var(--curva), transform 0.2s var(--curva);
}

.ficha__cerrar:hover {
  background: var(--texto);
  color: #fff;
  transform: rotate(90deg);
}

.ficha__cuerpo {
  display: grid;
  grid-template-columns: 380px 1fr;
  gap: 32px;
  padding: 30px;
  max-height: 90vh;
  overflow: auto;
}

.ficha__anuncio {
  background: var(--hondo);
  border: 1px solid var(--linea);
  border-radius: 0;
  overflow: hidden;
  align-self: start;
}

.ficha__anuncio img {
  display: block;
}

.ficha__enlace {
  display: block;
  padding: 12px;
  color: var(--laton);
  font-size: 12px;
  font-weight: 600;
  letter-spacing: 0.06em;
  text-transform: uppercase;
  text-align: center;
  text-decoration: none;
  border-top: 1px solid var(--linea);
}

.ficha__enlace:hover {
  background: rgba(26, 24, 19, 0.04);
}

.ficha__datos h3 {
  font-family: var(--serif);
  font-size: 28px;
  line-height: 1.15;
  color: var(--texto);
}

.ficha__meta {
  color: var(--texto-tenue);
  font-size: 12.5px;
  margin: 10px 0 26px;
}

.ficha__metricas {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 22px 18px;
  margin: 0 0 30px;
  padding: 22px 0;
  border-top: 1px solid var(--texto);
  border-bottom: 1px solid var(--texto);
}

.ficha__dato {
  display: grid;
  gap: 2px;
  align-content: start;
}

.ficha__metricas dt {
  color: var(--texto-tenue);
  font-size: 10px;
  font-weight: 700;
  letter-spacing: 0.1em;
  text-transform: uppercase;
}

.ficha__metricas dd {
  margin: 4px 0 0;
  font-family: var(--sans);
  font-weight: 900;
  font-size: 28px;
  letter-spacing: -0.02em;
  color: var(--texto);
}

/* ===========================================================================
   Pie
   ======================================================================== */

.pie {
  max-width: var(--ancho);
  margin: 90px auto 0;
  padding: 40px clamp(18px, 3vw, 44px) 0;
  border-top: 2px solid var(--texto);
  display: flex;
  flex-wrap: wrap;
  align-items: baseline;
  gap: 20px 56px;
}

.pie__marca {
  margin: 0;
  font-family: var(--serif);
  font-size: 21px;
  letter-spacing: 0.12em;
  text-transform: uppercase;
  color: var(--texto-medio);
  white-space: nowrap;
}

.pie__marca span {
  display: block;
  margin-top: 7px;
  font-family: var(--sans);
  font-size: 9px;
  font-weight: 600;
  letter-spacing: 0.26em;
  color: var(--laton);
}

/* ===========================================================================
   Avisos
   ======================================================================== */

.aviso {
  padding: 30px 0;
  color: var(--texto-tenue);
  font-size: 13.5px;
}

.aviso--error {
  color: var(--viejo);
  font-weight: 600;
}

/* ===========================================================================
   Adaptación — idéntica a estilos.css
   ======================================================================== */

@media (max-width: 1240px) {
  .kpis,
  .kpis.es-seis {
    grid-template-columns: repeat(3, minmax(0, 1fr));
  }
  .paneles {
    grid-template-columns: 1fr;
  }
}

@media (max-width: 1000px) {
  .ficha__cuerpo {
    grid-template-columns: 1fr;
  }
  .campana__cabecera {
    grid-template-columns: 1fr auto;
    gap: 12px;
  }
  .campana__piezas {
    display: none;
  }
  .linea__titulo {
    max-width: 100%;
  }
}

@media (max-width: 620px) {
  .kpis,
  .kpis.es-seis {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }
  .linea__marcas {
    height: 88px;
  }
  .panel {
    padding: 18px 16px 16px;
  }
  .globo {
    width: 200px;
  }
  .leyenda__pista {
    display: none;
  }
  .campana__rejilla {
    grid-template-columns: repeat(auto-fill, minmax(0, 1fr));
    padding: 6px 14px 18px;
    gap: 14px;
  }
  .campana__cabecera {
    padding: 15px 14px;
  }
  .pie {
    margin-top: 60px;
    gap: 18px;
  }
  .barra {
    gap: 12px;
  }
  .revision {
    left: 16px;
    right: 16px;
    transform: none;
    justify-content: space-between;
    padding-left: 18px;
  }
}

/* En táctil el :hover se queda pegado tras el toque: nada de alzas ni zooms
   que se queden clavados; solo un hundido corto al pulsar la tarjeta. */
@media (hover: none) {
  .kpi:hover,
  .panel:hover,
  .pieza:hover,
  .pieza:focus-within,
  .campana:hover,
  .boton:hover,
  .selector:hover,
  .selector:focus-within,
  .reparto__fila:hover,
  .pieza__accion:hover,
  .marca:hover {
    transform: none;
    box-shadow: none;
  }
  .pieza:hover .pieza__imagen,
  .pieza:focus-within .pieza__imagen {
    transform: none;
  }
  .pieza:active {
    transform: scale(0.99);
  }
}

@media (prefers-reduced-motion: reduce) {
  * {
    animation-duration: 0.01ms !important;
    transition-duration: 0.01ms !important;
  }
  html {
    scroll-behavior: auto;
  }
  .kpi:hover,
  .panel:hover,
  .pieza:hover,
  .pieza:focus-within,
  .campana:hover,
  .reparto__fila:hover,
  .marca:hover,
  .marca:focus-visible {
    transform: none;
  }
  .pieza:hover .pieza__imagen,
  .pieza:focus-within .pieza__imagen {
    transform: none;
  }
  .puerta__marca {
    transform: none !important;
  }
}
