/* ===========================================================================
   charts_tren-toledo.css — Accidente de tren en Toledo (elDiario.es)
   1) BLOQUE BASE: copia literal de plantilla graficos/shared/styles/tokens.css +
      base.css + el overlay de carga de components/controles.css. No se edita aquí.
   2) ESPECÍFICO DEL PROYECTO: todo bajo .chart-tren-toledo
   =========================================================================== */

/* ---------- 1) BLOQUE BASE ---------- */

/*
 * shared/styles/tokens.css — FUENTE CANÓNICA de los tokens de marca (--ed-*).
 * -------------------------------------------------------------------
 * Tokens de marca elDiario.es como variables CSS, en :root, usados con var(--ed-*).
 * Mantener sincronizado con shared/colors/paleta.js.
 *
 * NO se enlaza ni se duplica como fichero suelto en los proyectos: se COPIA
 * (junto con base.css) en el "BLOQUE BASE" de arriba del ÚNICO
 * charts_<proyecto>.css de cada proyecto. Igual que las genéricas del JS.
 * -------------------------------------------------------------------
 */
:root {
  /* Colores de marca */
  --ed-rojo: #D0021B;
  --ed-negro: #1a1a1a;
  --ed-amarillo: #ECDC19;
  --ed-azul: #4A90E2;
  /* Azul principal de elDiario.es: color por defecto de acentos/controles de los gráficos
     (spinner, interruptores…) salvo que un proyecto use otro color principal. */
  --ed-azul-principal: #005695;

  /* Grises de UI / ejes */
  --ed-gris-900: #333333;
  --ed-gris-700: #4a4a4a;
  --ed-gris-500: #939393;
  --ed-gris-300: #c5c5c5;
  --ed-gris-200: #dedede;
  --ed-gris-100: #eaeaea;

  /* Texto */
  --ed-texto: #1a1a1a;
  --ed-texto-suave: #4a4a4a;

  /* Radio de las esquinas de los controles (botones, switch, dropdown, buscador).
     Por defecto ligero (4px). Para esquinas RECTAS, envuelve en un elemento con
     la clase .ed-rectos (pone --ed-radio: 0) o cambia este valor. */
  --ed-radio: 4px;

  /* Tipografías.
     - --ed-fuente: Encode Sans (Google Fonts). Es la fuente por defecto, también
       para los TÍTULOS estándar (como en incendios).
     - --ed-fuente-titulo: Sanomat, fuente editorial "de entidad" para proyectos más
       visuales. La sirve el propio CMS de elDiario; fuera del CMS cae a Georgia.
       Se activa con la clase `ed-display` en el contenedor. */
  --ed-fuente: 'Encode Sans', 'Helvetica Neue', Arial, sans-serif;
  --ed-fuente-titulo: 'Sanomat-Bold', Georgia, 'Times New Roman', serif;
}

/* Variante de esquinas RECTAS: envuelve los controles en un elemento con esta clase. */
.ed-rectos { --ed-radio: 0px; }

/*
 * shared/styles/base.css
 * -------------------------------------------------------------------
 * Base para gráficos que se incrustan INLINE en el CMS (no en iframe).
 * Como el gráfico convive en el mismo DOM que el artículo, TODO cuelga de
 * clases propias para no colisionar con los estilos del CMS.
 *
 * CONVENIO DE SCOPING (fijado):
 *   Cada contenedor de gráfico lleva DOS clases:
 *     - `.ed-chart`         -> base UNIVERSAL de la casa (este archivo, fuente canónica).
 *     - `.chart-<proyecto>` -> estilos ESPECÍFICOS del proyecto (su charts_<x>.css).
 *   Así el reset/tipografía/anti-CMS y las primitivas comunes (svg, ejes, tooltip)
 *   se definen una sola vez aquí, y lo propio de cada proyecto se aísla bajo su
 *   clase, de modo que dos proyectos distintos nunca se pisen en una misma pieza.
 *
 * USO EN UN PROYECTO: NO se enlaza ni se crea un base.css suelto. Se COPIA,
 * justo debajo de tokens.css, en el "BLOQUE BASE" de arriba del ÚNICO
 * charts_<proyecto>.css (el proyecto entrega un solo CSS). Ver plantillas/_base/.
 * -------------------------------------------------------------------
 */

/* Reset mínimo, SOLO dentro del gráfico */
.ed-chart,
.ed-chart *,
.ed-chart *::before,
.ed-chart *::after {
  box-sizing: border-box;
}

.ed-chart {
  font-family: var(--ed-fuente);
  color: var(--ed-texto);
  line-height: 1.4;
  margin: 24px 0;
  /* El CMS suele forzar text-align:center en el cuerpo del artículo: lo neutralizamos. */
  text-align: left;
  /* Evita que el gráfico se coloque pegado a un elemento flotado del CMS. */
  clear: left;
}

/* Título ESTÁNDAR: en Encode Sans (como incendios). Es el que se usa por defecto. */
/* CABECERA — título, subtítulo y fuente.
   Clases de nivel superior (no dependen de .ed-chart) para que funcionen en las DOS formas:
   (A) renderadas por el JS dentro del gráfico (init({ titulo, subtitulo, fuente }));
   (B) escritas A MANO en el HTML, como sibling del contenedor del gráfico. */
.ed-titulo {
  font-family: var(--ed-fuente);
  font-weight: 700;
  color: var(--ed-negro);
  font-size: 22px;
  line-height: 1.2;
  margin: 0 0 4px;
}
/* Variante de entidad: título en Sanomat. Añade `ed-display` al título o a un ancestro. */
.ed-titulo.ed-display,
.ed-display .ed-titulo {
  font-family: var(--ed-fuente-titulo);
}
.ed-subtitulo {
  font-family: var(--ed-fuente);
  color: var(--ed-texto-suave);
  font-size: 14px;
  margin: 0 0 16px;
}
.ed-fuente {
  font-family: var(--ed-fuente);
  color: var(--ed-gris-500);
  font-size: 12px;
  margin-top: 8px;
}

/* --- Primitivas comunes de gráfico (universales, se comparten) --- */

/* SVG responsive: ocupa el ancho del contenedor y escala en alto. */
.ed-chart .ed-svg {
  display: block;
  width: 100%;
  height: auto;
  overflow: visible;
}

/* Ejes D3 — estilo elDiario:
   - dominio (línea del eje) SIEMPRE oculto,
   - texto en gris medio (#939393),
   - ejes de VALOR con rejilla gris clara punteada (clase .ed-eje-grid),
   - eje base (categorías) con marcas gris medio sólidas. */
/* Todo el texto SVG en la fuente de la casa (los ejes y etiquetas la necesitan
   explícita: la herencia de font-family dentro del SVG no siempre es fiable). */
.ed-chart .ed-svg text { font-family: var(--ed-fuente); }
.ed-chart .ed-eje text { font-size: 14px; fill: var(--ed-gris-500); }
.ed-chart .ed-eje path { stroke-width: 0; }                 /* dominio oculto */
.ed-chart .ed-eje line { stroke: var(--ed-gris-500); stroke-width: 1; }
.ed-chart .ed-eje-grid line { stroke: var(--ed-gris-300); stroke-width: 0.5; stroke-dasharray: 3; }

/* Halo de texto: contorno blanco para que una etiqueta SVG se lea sobre un fondo
   con color (mapas, líneas, barras). Añade la clase .ed-halo al <text>. */
.ed-chart .ed-halo {
  stroke: #fff;
  stroke-width: 3px;
  stroke-opacity: 0.9;
  paint-order: stroke; /* pinta el contorno DEBAJO del relleno */
}

/* Capa de resalte (borde negro sobre el elemento activo).
   La crea shared/utils/highlight.js (EDHighlight.crear). */
.ed-chart .ed-highlight-layer rect,
.ed-chart .ed-highlight-layer circle,
.ed-chart .ed-highlight-layer path {
  fill: none;
  stroke: var(--ed-negro);
  stroke-width: 2px;
}

/* El tooltip (.ed-tooltip) se crea en <body> con estilos INLINE (patrón de la casa,
   ver shared/utils/tooltip.js). No lleva CSS aquí a propósito: vive fuera de .ed-chart. */

/* ---- Overlay de carga con spinner ---- */
.ed-cargando {
  position: absolute; inset: 0; z-index: 20;
  display: flex; align-items: center; justify-content: center;
  background: rgba(255, 255, 255, 0.7); transition: opacity 0.3s ease;
}
.ed-cargando-spinner {
  width: 34px; height: 34px; border-radius: 50%;
  /* color principal de los gráficos (azul elDiario) por defecto */
  border: 3px solid var(--ed-gris-200); border-top-color: var(--ed-azul-principal);
  animation: ed-spin 0.8s linear infinite;
}
@keyframes ed-spin { to { transform: rotate(360deg); } }


/* ---------- 2) ESPECÍFICO DEL PROYECTO ---------- */

/* Lienzo del mapa (lo crea el JS dentro del contenedor) */
.chart-tren-toledo .tren-toledo-lienzo {
  position: relative;
  width: 100%;
  height: 650px;
  background-color: #fff;
  border-radius: 5px;
}
@media (max-width: 600px) {
  .chart-tren-toledo .tren-toledo-lienzo { height: 500px; }
}

/* Barra de escala: solo línea inferior, sin caja, con halo blanco en el texto */
.chart-tren-toledo .maplibregl-ctrl-scale {
  font-family: var(--ed-fuente);
  font-size: 11px;
  color: var(--ed-negro);
  background: transparent;
  border: none;
  border-bottom: 1px solid var(--ed-negro);
  box-shadow: none;
  padding: 0 5px 1px;
  line-height: 1.2;
  text-align: center;
  text-shadow: 0 0 3px #fff, 0 1px 2px #fff, 0 0 6px #fff;
}
