/* ARCA del Tormes — prototipo "TERRITORIO v3" (ficha de Montejo).
   ============================================================================
   Rediseño tras revisión de UX: la versión anterior repetía la MISMA caja
   navy+filete dorado en las 14 cabeceras de sección, sin distinguir nunca
   qué es importante -- todo pesaba igual, así que nada destacaba, y el
   dorado (único acento de color) se repetía en cada caja, tarjeta, píldora
   y tabla de la página. Reescrito con un solo principio: el color y las
   cajas navy se reservan para 2 momentos (hero, cronología); el resto de
   cabeceras son tipografía limpia (kicker rojo + serif grande + filete
   fino), y el dorado queda solo en las tarjetas de entidad real
   (yacimientos, lugares, documentos, estudios) -- las de apoyo (hitos,
   menciones, oficios) llevan borde neutro. Piezas reales reutilizadas:

     .cat-hero              cabecera de ficha (fondo navy + filete dorado)
     .cat-card               tarjeta base (borde, filete dorado, radio 8px)
     .cat-data-kpis          banda de cifras clara (dt rojo, dorado arriba)
     .cat-accordion          acordeón plano (borde inferior, "+" circular)
     .cat-accordion--pref    acordeón "preferido" (cabecera navy/dorado) --
                             usado SOLO en cronología, para que siga siendo
                             un momento fuerte, no la norma de toda la página
     .cat-place-toc          índice de página fijo (navy + lista con flecha)
   ============================================================================ */

:root { --tv3-topbar: 64px; }
html { scroll-padding-top: calc(var(--tv3-topbar) + 12px); }

/* .cat-main (real, catalogo.css) limita TODA la página a 1500px centrados --
   en un monitor ancho eso deja márgenes enormes a los dos lados de esta
   ficha, aunque cada bloque interno ocupe el 100% de SU columna (por eso la
   sensación de "no usa el ancho" se repetía en cualquier sección: el límite
   es de la página entera, no de un párrafo suelto). Se anula solo en esta
   página del prototipo -- no toca la ficha real ni el resto del sitio. */
#main-content:has(.tv3-layout) { width: 100% !important; max-width: none !important; }

.tv3-prototype-bar {
  margin: 0 0 var(--cat2-space-3);
  padding: var(--cat2-space-2) var(--cat2-space-3);
  border: 1px dashed var(--cat2-color-border-focus);
  border-radius: var(--cat2-radius-sm);
  background: var(--cat2-color-surface);
  color: var(--cat2-color-text-secondary);
  font-size: var(--cat2-text-0);
}
.tv3-prototype-bar a { color: var(--cat2-color-link); }

/* ── cabecera: mismo fondo que .cat-hero (real, catalogo.css) ──────────── */
.tv3-hero {
  display: grid; grid-template-columns: minmax(0, 1fr) auto; gap: var(--cat2-space-8);
  align-items: center; padding: clamp(1.5rem, 4vw, 3rem);
  border-bottom: 4px solid var(--cat2-gold-500);
  border-radius: var(--cat2-radius-md) var(--cat2-radius-md) 0 0;
  background-color: #122e3b;
  background-image:
    linear-gradient(100deg, rgb(16 48 62 / 97%) 0 61%, rgb(16 48 62 / 78%)),
    radial-gradient(circle at 80% 20%, #447181, #173746);
  color: #fff;
}
.tv3-hero h1 {
  margin: var(--cat2-space-2) 0 var(--cat2-space-4); font-family: var(--cat2-serif);
  font-size: var(--cat2-text-5); line-height: 1.1; color: #fff;
}
.tv3-hero .tv3-kicker { color: var(--cat2-gold-300); }
.tv3-lede { max-width: 70ch; margin: 0; font-size: var(--cat2-text-2); line-height: 1.6; color: #f4efe3; }
.tv3-symbols { display: flex; gap: var(--cat2-space-4); align-items: flex-end; }
.tv3-emblem {
  margin: 0; padding: var(--cat2-space-3); border-radius: var(--cat2-radius-sm);
  background: #fffdf8; color: var(--cat2-ink-900); text-align: center;
  box-shadow: var(--cat2-shadow-card);
}
.tv3-emblem img { display: block; width: auto; max-width: 100%; height: 6.5rem; margin: 0 auto var(--cat2-space-2); }
.tv3-emblem--flag img { height: 4.5rem; }
.tv3-emblem figcaption { font-size: var(--cat2-text-000); }
.tv3-emblem a { color: var(--cat2-navy-900); }

.tv3-kicker {
  margin: 0; font-size: var(--cat2-text-00); font-weight: 700;
  letter-spacing: .06em; text-transform: uppercase; color: var(--cat2-color-text-muted);
}

/* ── ficha rápida (datos + alcaldía/elecciones, mismo bloque) ──────────── */
.tv3-facts-wrap {
  margin: var(--cat2-space-5) 0 var(--cat2-space-6); overflow: hidden;
  border: 1px solid var(--cat2-color-border); border-radius: 0 0 var(--cat2-radius-md) var(--cat2-radius-md);
  border-top: 0; background: var(--cat2-color-surface); box-shadow: var(--cat2-shadow-card);
}
.tv3-facts { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); margin: 0; }
.tv3-facts > div { padding: var(--cat2-space-3) var(--cat2-space-4); box-shadow: inset -1px -1px 0 var(--cat2-color-border); }
.tv3-facts > div:last-child { grid-column: 1 / -1; }
.tv3-facts dt { font-size: var(--cat2-text-00); font-weight: 700; text-transform: uppercase; letter-spacing: .05em; color: var(--cat2-color-text-muted); }
.tv3-facts dd { margin: var(--cat2-space-1) 0 0; font-size: var(--cat2-text-1); color: var(--cat2-color-text-primary); }
.tv3-facts dd a { display: inline-block; margin-left: var(--cat2-space-2); font-size: var(--cat2-text-0); color: var(--cat2-color-link); }
@media (min-width: 720px) { .tv3-facts { grid-template-columns: repeat(3, minmax(0, 1fr)); } .tv3-facts > div:last-child { grid-column: auto; } }

.tv3-gov { margin: 0; border-top: 1px solid var(--cat2-color-border); }
.tv3-gov__line {
  margin: 0; padding: var(--cat2-space-3) var(--cat2-space-4); font-size: var(--cat2-text-1);
  color: var(--cat2-color-text-primary);
}
.tv3-gov__line strong {
  margin-right: var(--cat2-space-2); font-size: var(--cat2-text-00);
  text-transform: uppercase; letter-spacing: .05em; color: var(--cat2-color-text-muted);
}
.tv3-gov__line span { display: block; margin-top: 2px; font-size: var(--cat2-text-0); color: var(--cat2-color-text-secondary); }
#main-content .tv3-gov details.cat-accordion { margin-top: 0; border: 0; border-top: 1px solid var(--cat2-color-border); border-radius: 0; background: transparent; }
.tv3-votes { display: grid; grid-template-columns: repeat(auto-fill, minmax(min(100%, 16rem), 1fr)); gap: 0 var(--cat2-space-5); margin: 0 0 var(--cat2-space-3); padding: 0; list-style: none; }
.tv3-votes li { padding: var(--cat2-space-1) 0; border-bottom: 1px solid var(--cat2-color-border); font-size: var(--cat2-text-0); }
.tv3-votes__year { display: inline-block; min-width: 3rem; font-family: var(--cat2-serif); font-weight: 700; color: var(--cat2-color-accent); }
.tv3-votes__party small { color: var(--cat2-color-text-muted); }

.tv3-related { margin: 0; padding: var(--cat2-space-3) var(--cat2-space-4); border-top: 1px solid var(--cat2-color-border); font-size: var(--cat2-text-0); line-height: 1.7; color: var(--cat2-color-text-secondary); }
.tv3-related a { color: var(--cat2-color-link); }

/* ── cifras: .cat-data-kpis reutilizado tal cual, solo enlaces internos ── */
.tv3-kpis { margin: 0 0 var(--cat2-space-8); }
.tv3-kpis dl > div a { display: block; padding: inherit; margin: calc(-1 * var(--cat2-space-1)) calc(-1 * var(--cat2-space-2)); border-radius: var(--cat2-radius-sm); color: inherit; text-decoration: none; }
.tv3-kpis dl > div { padding: var(--cat2-space-1) var(--cat2-space-2); }
.tv3-kpis dl > div a:hover, .tv3-kpis dl > div a:focus-visible { background: var(--cat2-color-surface-alt); }
.tv3-kpis dl > div a:focus-visible { outline: 3px solid var(--cat2-color-border-focus); outline-offset: -2px; }

/* ── layout: índice fijo + contenido ────────────────────────────────────── */
/* Ancho máximo propio (más generoso que el de la página, ver arriba) para
   que en monitores muy anchos las líneas no se hagan interminables --
   mismo límite en la cabecera, la ficha rápida, las cifras y el resto del
   contenido, para que todo el bloque quede centrado de forma consistente. */
.tv3-hero, .tv3-facts-wrap, .tv3-kpis, .tv3-layout { max-width: 1900px; margin-left: auto !important; margin-right: auto !important; }
.tv3-layout { display: block; }
.tv3-content { min-width: 0; }
.tv3-toc { margin-bottom: var(--cat2-space-6); }
@media (min-width: 1180px) {
  .tv3-layout { display: grid; grid-template-columns: 15.5rem minmax(0, 1fr); gap: var(--cat2-space-8); align-items: start; }
  /* Sin max-height/overflow: con la lista completa (14 enlaces + 3
     etiquetas de grupo) un recorte a la altura de la ventana obligaba a
     hacer scroll DENTRO del propio índice para ver el final -- absurdo,
     señalado explícitamente. Se deja crecer lo que necesite; al ser
     "sticky" simplemente deja de pegarse cuando su borde inferior llega
     al final de su columna, como cualquier sticky normal. */
  .tv3-toc { position: sticky; top: calc(var(--tv3-topbar) + var(--cat2-space-3)); margin-bottom: 0; }
}
/* El real (ficha-lugar.css) acota el <details> del índice a min(65vh,28rem)
   CON SU PROPIO scroll interno -- pensado para la ficha real, con un índice
   más corto. Aquí, con 14 enlaces + 3 grupos, esa altura se queda corta y
   obliga a scroll DENTRO del menú -- señalado explícitamente como "no
   completo, sigue con scroll". Se anula del todo: la lista completa se ve
   siempre entera. */
#main-content .tv3-toc .cat-place-toc__details { max-height: none !important; overflow-y: visible !important; }

/* ── cabeceras de sección: tipografía, no cajas ──────────────────────────
   El navy+dorado en bloque se reserva para el hero y la cronología (ver
   .cat-accordion--pref más abajo) -- aquí solo kicker en rojo (identidad
   real, var(--cat-red-deep) vía --cat2-critical) + el H2 serif grande que
   ya define catalogo.css (.cat-main h2), sin caja, con un filete fino
   neutro debajo para separar sin repetir la misma pieza 12 veces. */
.tv3-shead {
  margin: 0 0 var(--cat2-space-5); padding-bottom: var(--cat2-space-4);
  border-bottom: 1px solid var(--cat2-color-border);
}
.tv3-shead .tv3-kicker { color: var(--cat2-color-critical); font-size: var(--cat2-text-0); letter-spacing: .1em; }
.tv3-shead h2 { margin: var(--cat2-space-1) 0 0; color: var(--cat2-color-text-primary); }
.tv3-video .tv3-shead h2 { font-size: var(--cat2-text-3); }

/* Legibilidad: medida de línea de 60-75 caracteres, interlineado 1.5-1.6 y
   un espacio entre párrafos de ~1-1.5 líneas -- valores de UXPin/Baymard/
   USWDS, no inventados:
   https://www.uxpin.com/studio/blog/optimal-line-length-for-readability/
   https://baymard.com/blog/line-length-readability
   https://designsystem.digital.gov/components/typography/
   Aplicado solo donde el bloque en sí ya está acotado (tarjetas, columnas);
   los párrafos "sueltos" bajo una cabecera usan el ancho completo del
   bloque (ver .tv3-lede-row más abajo), para no dejar hueco muerto. */
.tv3-section { margin: 0 0 clamp(2.5rem, 5vw, 4rem); }
.tv3-section h3 { margin: var(--cat2-space-8) 0 var(--cat2-space-3); font-family: var(--cat2-serif); font-size: var(--cat2-text-3); line-height: 1.3; color: var(--cat2-color-accent); }
.tv3-section h3.tv3-h3-small { font-size: var(--cat2-text-2); margin-top: var(--cat2-space-4); }
.tv3-section h4 { margin: 0 0 var(--cat2-space-2); font-size: var(--cat2-text-2); line-height: 1.3; color: var(--cat2-color-text-primary); }
/* Alineado a la izquierda, sin justificar: WAVE marcaba 81 avisos (WCAG
   1.4.8) -- el justificado abre huecos desiguales entre palabras y dificulta
   la lectura, sobre todo en tarjetas estrechas y para personas con dislexia. */
.tv3-section p {
  max-width: none; margin: 0 0 1.15em; line-height: 1.65; color: var(--cat2-color-text-primary);
  text-align: left;
}
.tv3-section p:last-child { margin-bottom: 0; }
/* El aviso del visor (texto blanco sobre teal, visor-municipal.css) no debe
   heredar el color oscuro ni el margen de los párrafos de la ficha: WAVE lo
   marcaba como error de contraste y el recuadro crecía de más. */
.tv3-section .cat-municipal-viewer__status { margin: 0; color: #fff; line-height: 1.45; }
.tv3-section a { color: var(--cat2-color-link); text-underline-offset: 2px; }
.tv3-section a:focus-visible, .tv3-section summary:focus-visible { outline: 3px solid var(--cat2-color-border-focus); outline-offset: 2px; }
.tv3-lead { font-size: var(--cat2-text-2); line-height: 1.55; color: var(--cat2-color-text-secondary); }
/* Capitular: el único recurso tipográfico "editorial" real de la página --
   marca visualmente el arranque de cada bloque grande en vez de que el
   texto empiece igual que cualquier otro párrafo. */
.tv3-lead::first-letter {
  float: left; margin: .02em .12em 0 0; font-family: var(--cat2-serif);
  font-size: 3.4em; line-height: .78; font-weight: 700; color: var(--cat2-color-accent);
}
.tv3-count {
  padding: var(--cat2-space-4) var(--cat2-space-5); border-left: 4px solid var(--cat2-color-accent);
  background: var(--cat2-color-surface); border-radius: 0 var(--cat2-radius-sm) var(--cat2-radius-sm) 0;
}
.tv3-note, .tv3-source { font-size: var(--cat2-text-0); line-height: 1.6; color: var(--cat2-color-text-secondary); }

.tv3-actions { display: flex; flex-direction: column; gap: var(--cat2-space-3); margin: var(--cat2-space-6) 0 var(--cat2-space-3); }
@media (min-width: 640px) { .tv3-actions { flex-direction: row; flex-wrap: wrap; } }

/* Fila de introducción de dos columnas (texto + panel de apoyo), para que
   un párrafo suelto no quede flotando en una caja mucho más ancha que él
   (bug real señalado en Toponimia/Cartografía): el texto ocupa su columna
   entera y el panel usa el resto -- entre los dos, todo el ancho. */
.tv3-lede-row {
  display: grid; gap: var(--cat2-space-6); grid-template-columns: 1fr;
  padding: var(--cat2-space-5); border: 1px solid var(--cat2-color-border); border-radius: var(--cat2-radius-md);
  background: var(--cat2-color-surface);
}
.tv3-lede-row > .tv3-lede-text { min-width: 0; }
.tv3-lede-panel {
  min-width: 0; padding: var(--cat2-space-4) var(--cat2-space-5);
  border: 1px solid var(--cat2-color-border); border-radius: var(--cat2-radius-sm);
  background: var(--cat2-color-surface-alt);
}
.tv3-lede-panel h3 { margin: 0 0 var(--cat2-space-3); font-size: var(--cat2-text-2); }
.tv3-lede-panel .tv3-variants { flex-direction: column; align-items: flex-start; }
.tv3-lede-panel .tv3-variants li { width: 100%; }
@media (min-width: 860px) { .tv3-lede-row { grid-template-columns: minmax(0, 1.5fr) minmax(0, 1fr); align-items: start; } }

/* ── tarjetas ─────────────────────────────────────────────────────────── */
.tv3-cards { display: grid; grid-template-columns: repeat(auto-fill, minmax(min(100%, 15rem), 1fr)); gap: var(--cat2-space-5); margin: var(--cat2-space-5) 0; }
/* Máximo 2 columnas, nunca 3+ (antes auto-fill permitía 3 columnas muy
   estrechas en escritorio -- señalado explícitamente como "no usable"). */
.tv3-cards--wide { grid-template-columns: 1fr; }
@media (min-width: 760px) { .tv3-cards--wide { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
.tv3-cards--sites { grid-template-columns: repeat(auto-fill, minmax(min(100%, 13.5rem), 1fr)); }

/* Recibo compartido, SIN color -- el dorado ya no es la norma. */
.tv3-card, .tv3-site, .tv3-era, .tv3-tl-card, .tv3-mention, .tv3-chips a {
  display: flex; flex-direction: column; gap: var(--cat2-space-3); min-width: 0;
  padding: var(--cat2-space-5) var(--cat2-space-5) var(--cat2-space-6);
  border: 1px solid var(--cat2-color-border); border-top: 3px solid var(--cat2-color-border);
  border-radius: var(--cat2-radius-sm);
  background: var(--cat2-color-surface);
  box-shadow: var(--cat2-shadow-card); color: var(--cat2-color-text-primary); text-decoration: none;
  transition: transform .18s ease, box-shadow .18s ease;
}
/* El dorado vuelve, pero SOLO en las fichas de entidad real (yacimiento,
   lugar, documento, estudio) -- así se distingue "esto es una ficha
   consultable" de "esto es apoyo narrativo" (hito, mención, oficio). */
.tv3-card, .tv3-site { border-top-color: var(--cat2-gold-500); }
a.tv3-card:hover, a.tv3-site:hover, .tv3-chips a:hover { transform: translateY(-3px); box-shadow: var(--cat2-shadow-lift); border-top-color: var(--cat2-color-accent); }
.tv3-card:focus-visible, .tv3-site:focus-visible, .tv3-chips a:focus-visible { outline: 3px solid var(--cat2-color-border-focus); outline-offset: 2px; }
.tv3-card p { max-width: none; margin: 0; font-size: var(--cat2-text-0); line-height: 1.6; }
.tv3-card p + p { margin-top: .6em; }
.tv3-card .tv3-card__title, .tv3-site .tv3-card__title { margin: 0; font-family: var(--cat2-serif); font-size: var(--cat2-text-2); font-weight: 700; line-height: 1.3; color: var(--cat2-color-accent); }
.tv3-card .cat-text-link, .tv3-site__action { margin-top: auto; padding-top: var(--cat2-space-3); font-weight: 700; color: var(--cat2-color-link); }
.tv3-card--place p { font-size: var(--cat2-text-1); line-height: 1.65; }

.tv3-site__period {
  align-self: flex-start; padding: .2rem .55rem; border-radius: 999px;
  background: var(--cat2-color-surface-alt); color: var(--cat2-color-text-primary);
  font-size: var(--cat2-text-00); font-weight: 700; letter-spacing: .04em; text-transform: uppercase;
}
.tv3-site__meta { font-size: var(--cat2-text-0); color: var(--cat2-color-text-secondary); }

.tv3-card__links { display: grid; gap: var(--cat2-space-1); margin-top: auto; padding-top: var(--cat2-space-3); border-top: 1px dashed var(--cat2-color-border); }
.tv3-card__links a { display: flex; align-items: center; min-height: 2.5rem; font-weight: 700; color: var(--cat2-color-link); }

/* historia: 5 épocas numeradas -- el único ordinal de la página, se deja
   sobrio (gris) porque el texto ya varía de por sí, no necesita más color. */
.tv3-eras { display: grid; gap: var(--cat2-space-6); grid-template-columns: 1fr; margin-top: var(--cat2-space-6); counter-reset: era; }
.tv3-era { counter-increment: era; border-top-color: var(--cat2-color-border); }
.tv3-era h3 { margin-top: 0; }
.tv3-era h3::before { content: "0" counter(era); display: block; margin-bottom: var(--cat2-space-1); font-family: var(--cat2-sans); font-size: var(--cat2-text-00); letter-spacing: .12em; color: var(--cat2-color-text-muted); }
.tv3-era p { font-size: 1.03rem; }
/* Mismo recurso editorial que .tv3-lead, para que las tarjetas de historia
   tampoco empiecen igual que cualquier párrafo suelto (señalado: "densidad
   de texto plano" dentro de estas tarjetas en concreto). */
.tv3-era p:first-of-type::first-letter {
  float: left; margin: .02em .1em 0 0; font-family: var(--cat2-serif);
  font-size: 2.6em; line-height: .78; font-weight: 700; color: var(--cat2-color-accent);
}
@media (min-width: 900px) { .tv3-eras { grid-template-columns: repeat(2, minmax(0, 1fr)); } .tv3-era:first-child { grid-column: 1 / -1; } }

/* toponimia */
.tv3-variants { display: flex; flex-wrap: wrap; gap: var(--cat2-space-2); margin: 0; padding: 0; list-style: none; }
.tv3-variants li { padding: var(--cat2-space-2) var(--cat2-space-3); border: 1px solid var(--cat2-color-border); border-radius: 999px; background: var(--cat2-color-bg); color: var(--cat2-color-text-primary); font-size: var(--cat2-text-00); font-weight: 600; }
.tv3-mentions { display: grid; grid-template-columns: repeat(auto-fit, minmax(min(100%, 19rem), 1fr)); gap: var(--cat2-space-5); margin-top: var(--cat2-space-2); }
.tv3-mention h4 { margin: 0; font-family: var(--cat2-serif); font-size: var(--cat2-text-2); color: var(--cat2-color-accent); }
.tv3-mention .tv3-source { margin-top: auto; padding-top: var(--cat2-space-2); border-top: 1px dashed var(--cat2-color-border); }
.tv3-mention--synth { grid-column: 1 / -1; }

/* cronología: el ÚNICO otro momento navy+dorado de la página, aparte del
   hero -- por eso ahora sí destaca. El título de cada grupo era un
   <strong>, no un encabezado real (H2 saltaba a H4); ahora H3 real con el
   mismo aspecto que ya define catalogo-utilidades-migradas.css. */
#main-content .tv3-section .cat-accordion--pref summary h3 {
  margin: 0; color: #fff; font: 600 clamp(1.25rem, 5.2vw, 1.65rem) var(--cat2-serif); line-height: 1.15;
}
.tv3-timeline { display: grid; grid-template-columns: 1fr; gap: var(--cat2-space-4); margin: 0; padding: var(--cat2-space-2) 0 0; list-style: none; }
.tv3-tl-card__when { display: flex; flex-wrap: wrap; align-items: baseline; gap: var(--cat2-space-2); margin: 0; }
.tv3-tl-card__when strong { font-family: var(--cat2-serif); font-weight: 700; color: var(--cat2-color-accent); }
.tv3-tl-card__when span { font-size: var(--cat2-text-0); color: var(--cat2-color-text-secondary); }
.tv3-section .tv3-timeline__title { margin: 0; font-family: var(--cat2-serif); font-size: var(--cat2-text-2); font-weight: 700; line-height: 1.25; color: var(--cat2-color-accent); }
.tv3-tl-card__text { max-width: none; font-size: var(--cat2-text-0); line-height: 1.6; }
.tv3-timeline__source { margin: auto 0 0; padding-top: var(--cat2-space-2); font-size: var(--cat2-text-0); font-weight: 600; }
@media (min-width: 760px) { .tv3-timeline { grid-template-columns: repeat(2, minmax(0, 1fr)); } }

/* Bloque con fondo propio, para separar visualmente sub-bloques dentro de
   una misma sección grande (señalado explícitamente en "Familias, personas
   y oficios": todo corría junto, sin ninguna caja que separase un
   sub-bloque de otro). */
/* Panel de la síntesis histórica: fondo beige del sistema para que las
   tarjetas de época (blancas) resalten. Contraste medido sobre #e8e1d3:
   texto 6,2:1, título 12:1, kicker 8,9:1, nota 5:1; oscuro 7,7:1. */
.tv3-panel {
  padding: var(--cat2-space-6);
  border: 1px solid var(--cat2-color-border); border-radius: var(--cat2-radius-md);
  background: var(--cat2-color-surface-alt);
}
.tv3-panel .tv3-shead { border-bottom-color: var(--cat2-line-200); }
.tv3-panel > .tv3-note { margin-top: var(--cat2-space-5); }
@media (max-width: 640px) { .tv3-panel { padding: var(--cat2-space-4); } }

.tv3-block {
  padding: var(--cat2-space-5); margin: var(--cat2-space-5) 0;
  border: 1px solid var(--cat2-color-border); border-radius: var(--cat2-radius-md);
  background: var(--cat2-color-surface);
}
.tv3-block > h3:first-child { margin-top: 0; }

/* oficios */
.tv3-chips { display: grid; grid-template-columns: repeat(auto-fill, minmax(min(100%, 14rem), 1fr)); gap: var(--cat2-space-4); margin: var(--cat2-space-5) 0; padding: 0; list-style: none; }
.tv3-chips a { padding: var(--cat2-space-4); min-height: 4.5rem; justify-content: center; }
.tv3-chips strong { color: var(--cat2-color-accent); }
.tv3-chips small { font-size: var(--cat2-text-0); color: var(--cat2-color-text-secondary); }

/* Empresas/servicios: el H3 de arriba ya es el título; el acordeón que
   sigue no repite el mismo texto en su cabecera (bug real: "Empresas y
   negocios" dos veces seguidas). */
.tv3-actualidad-group { margin: var(--cat2-space-3) 0 var(--cat2-space-6); }
.tv3-actualidad-group > h3 { margin-bottom: var(--cat2-space-2); }

/* vídeo: fondo propio (antes vídeo + texto sueltos sobre el fondo de la
   página, sin nada que los agrupe como un único bloque). */
.tv3-video {
  display: grid; grid-template-columns: 1fr; gap: var(--cat2-space-5); align-items: start;
  padding: var(--cat2-space-5); border: 1px solid var(--cat2-color-border); border-radius: var(--cat2-radius-md);
  background: var(--cat2-color-surface);
}
.tv3-video__copy { padding: 0; }
.tv3-video video { width: 100%; height: auto; aspect-ratio: 16 / 9; border-radius: var(--cat2-radius-sm); background: #000; box-shadow: var(--cat2-shadow-lift); }
.tv3-inline-dl { display: flex; flex-wrap: wrap; gap: var(--cat2-space-2) var(--cat2-space-5); margin: var(--cat2-space-3) 0; font-size: var(--cat2-text-0); }
.tv3-inline-dl dt { display: inline; font-weight: 700; color: var(--cat2-color-text-muted); }
.tv3-inline-dl dd { display: inline; margin: 0 0 0 var(--cat2-space-1); }
@media (min-width: 900px) { .tv3-video { grid-template-columns: minmax(0, 1.2fr) minmax(0, 1fr); } }

/* FAQ: lista con separador fino, no rectángulos con caja -- menos "panel
   de administración", más lista de lectura. */
.tv3-faq { border-top: 1px solid var(--cat2-color-border); }
#main-content .tv3-faq .cat-accordion { border: 0; border-bottom: 1px solid var(--cat2-color-border); border-radius: 0; }
.tv3-faq .cat-accordion summary { font-size: var(--cat2-text-2); }
.tv3-faq .cat-accordion__body { padding: 0 0 var(--cat2-space-5); }
.tv3-faq .cat-accordion__body p { margin: 0; line-height: 1.65; }
#actualidad details { margin: var(--cat2-space-4) 0; }

/* fuentes */
.tv3-table-wrap { margin: var(--cat2-space-4) 0; border: 1px solid var(--cat2-color-border); border-radius: var(--cat2-radius-sm); overflow: hidden; }
.tv3-sources { width: 100%; border-collapse: collapse; background: var(--cat2-color-surface); font-size: var(--cat2-text-0); }
.tv3-sources th, .tv3-sources td { padding: var(--cat2-space-3) var(--cat2-space-4); border-bottom: 1px solid var(--cat2-color-border); text-align: left; vertical-align: top; line-height: 1.55; }
.tv3-sources thead th { background: var(--cat2-navy-900); color: #fff; font-size: var(--cat2-text-00); text-transform: uppercase; letter-spacing: .05em; }
.tv3-sources tbody th { width: 18%; font-family: var(--cat2-serif); color: var(--cat2-color-accent); }
.tv3-sources tr:last-child > * { border-bottom: 0; }
@media (max-width: 719px) {
  .tv3-sources, .tv3-sources tbody, .tv3-sources tr, .tv3-sources th, .tv3-sources td { display: block; width: auto; }
  .tv3-sources thead { position: absolute; width: 1px; height: 1px; overflow: hidden; clip-path: inset(50%); }
  .tv3-sources tbody tr { margin: var(--cat2-space-3); border: 1px solid var(--cat2-color-border); border-left: 4px solid var(--cat2-color-accent); border-radius: var(--cat2-radius-sm); }
  .tv3-sources tbody th { padding-bottom: 0; border: 0; font-size: var(--cat2-text-1); }
  .tv3-sources td { border: 0; padding-top: var(--cat2-space-2); }
  .tv3-sources td::before { content: attr(data-label); display: block; font-size: var(--cat2-text-00); font-weight: 700; letter-spacing: .05em; text-transform: uppercase; color: var(--cat2-color-text-muted); }
  .tv3-table-wrap { border: 0; }
}

/* ── responsive ───────────────────────────────────────────────────────── */
@media (max-width: 860px) {
  .tv3-hero { grid-template-columns: 1fr; gap: var(--cat2-space-5); }
  .tv3-symbols { justify-content: flex-start; }
}
@media (max-width: 640px) {
  .tv3-hero { padding: var(--cat2-space-5) var(--cat2-space-4); }
  .tv3-emblem img { height: 5rem; }
  .tv3-emblem--flag img { height: 3.5rem; }
  .tv3-lead { font-size: var(--cat2-text-1); line-height: 1.6; }
  .tv3-lede { font-size: var(--cat2-text-1); line-height: 1.5; }
  .tv3-section p, .tv3-faq .cat-accordion__body p, .tv3-card--place p { line-height: 1.7; }
  .tv3-card, .tv3-site, .tv3-era, .tv3-tl-card, .tv3-mention, .tv3-chips a { padding: var(--cat2-space-4) var(--cat2-space-4) var(--cat2-space-5); }
  .tv3-toc { margin-bottom: var(--cat2-space-5); }
}
@media (prefers-reduced-motion: reduce) {
  .tv3-card, .tv3-site, .tv3-chips a { transition: none; }
}

/* ── índice móvil: indicador +/- ──────────────────────────────────────────
   Se probaron varias reimplementaciones propias (span, b, position:absolute,
   incluso con estilo inline !important) y NINGUNA llegaba a pintarse dentro
   de este <summary> en concreto -- indica que algo en la cascada real del
   sitio impide renderizar un elemento propio ahí, no un problema de mi CSS.
   La cronología (misma pieza, .cat-accordion--pref) nunca necesitó un
   elemento propio: usa solo el "+"/"−" nativo de #main-content details >
   summary::after (ficha-lugar.css), que sí es fiable. Se hace lo mismo
   aquí -- sin marcado propio, solo el color para que se vea sobre el navy. */
#main-content .tv3-toc .cat-place-toc__details > summary::after { color: #fff !important; }

/* Lugares históricos y yacimientos: lista de acordeones (antes tarjetas
   siempre abiertas con todo el texto visible) -- mismo criterio que la
   cronología, para que la sección se vea plegada de entrada. */
.tv3-place-list { display: grid; gap: var(--cat2-space-3); margin: var(--cat2-space-5) 0; }
#main-content .tv3-place-list .cat-accordion--pref { margin: 0; }

/* La lista real (cat-place-toc__list) solo distingue un enlace de otro por
   el hover -- en reposo, 14 enlaces seguidos se leen como texto corrido sin
   ninguna pausa (bug real señalado por captura). Se añade un separador fino
   entre filas, dentro de cada grupo, para que la lista se lea como lista. */
.tv3-toc .cat-place-toc__list li:not(:last-child) { border-bottom: 1px solid var(--cat2-color-border); }
.tv3-toc .cat-place-toc__list { margin-bottom: var(--cat2-space-3); }
.tv3-toc .cat-place-toc__group-label:first-of-type { margin-top: .5rem; }
/* WAVE: 3 errores de contraste -- var(--cat-gold) (dorado apagado) sobre el
   fondo crema del índice no llega a 4.5:1. Se usa el mismo rojo ya
   verificado que los kickers del resto de la página (var(--cat2-color-
   critical)), no un color nuevo. */
.tv3-toc .cat-place-toc__group-label { color: var(--cat2-color-critical); }
