:root {
  --cat-ink: #15252e;
  --cat-ink-soft: #40535d;
  --cat-paper: #f5f1e8;
  --cat-paper-deep: #e8e1d3;
  --cat-surface: #fffdf8;
  --cat-line: #d8d0c1;
  --cat-blue: #244e63;
  --cat-blue-deep: #173746;
  --cat-red: #8e242b;
  --cat-red-deep: #6f171d;
  --cat-gold: #b98a3c;
  --cat-shadow: 0 18px 48px rgb(21 37 46 / 10%);
  /* Cambria conserva la sobriedad editorial sin la pesadez de la serif de
     exposición anterior. Es una fuente del sistema en Windows y degrada a
     Georgia/serif sin descargar tipografías de terceros. */
  --cat-serif: Cambria, Georgia, serif;
  --cat-sans: "Atkinson Hyperlegible", Arial, sans-serif;
}

* {
  box-sizing: border-box;
}

html {
  scroll-behavior: smooth;
  scroll-padding-top: 2rem;
}

/* Base tipografica explicita (antes heredaba el default del navegador,
   16px, sin declarar) -- pedido explicito de revisar tamaños generales. */
body.cat-shell {
  margin: 0;
  min-height: 100vh;
  background: var(--cat-paper);
  color: var(--cat-ink);
  font-family: var(--cat-sans);
  font-size: 1rem;
  line-height: 1.55;
}
/* Tamaño pedido explicitamente, SOLO movil: en escritorio se queda en
   1rem (regla de arriba). No se toca aqui la escala de ningun elemento
   con tamaño propio en rem ya fijado (h1, h2, etc. mantienen su rem
   exacto); esto solo baja el tamaño base del que parten los px/em que
   dependan del body. */
@media (max-width: 900px) {
  body.cat-shell { font-size: .9rem; }
}

a {
  color: var(--cat-blue-deep);
  text-decoration-thickness: .08em;
  text-underline-offset: .16em;
}

a:hover {
  color: var(--cat-red-deep);
}

a:focus-visible,
button:focus-visible,
input:focus-visible,
summary:focus-visible,
video:focus-visible {
  outline: 3px solid #e2a93f;
  outline-offset: 3px;
}

.skip-link {
  position: fixed;
  z-index: 1000;
  top: .75rem;
  left: .75rem;
  padding: .75rem 1rem;
  transform: translateY(-160%);
  background: #fff;
  color: #000;
  font-weight: 700;
}

.skip-link:focus {
  transform: translateY(0);
}

.sr-only {
  position: absolute !important;
  width: 1px !important;
  height: 1px !important;
  padding: 0 !important;
  margin: -1px !important;
  overflow: hidden !important;
  clip: rect(0, 0, 0, 0) !important;
  white-space: nowrap !important;
  border: 0 !important;
}

.cat-sidebar {
  position: fixed;
  inset: 0 auto 0 0;
  z-index: 20;
  display: flex;
  width: 258px;
  flex-direction: column;
  overflow-y: auto;
  overscroll-behavior: contain;
  scrollbar-width: none;
  -ms-overflow-style: none;
  padding: 1.25rem 1rem 1.5rem;
  /* El azul del menú se pintaba SOLO con degradados, es decir con
     background-image, dejando background-color en transparente. Cualquier
     validador (WAVE, axe, Lighthouse) resuelve entonces el fondo subiendo
     por los ancestros hasta la crema del body y calcula los 16 enlaces de
     navegación a 1,05:1: 19 errores de contraste en TODAS las páginas del
     sitio, aunque visualmente se vea perfecto. Declarar el color base lo
     resuelve y además protege si los degradados no llegan a pintarse. */
  background-color: #122e3b;
  background-image:
    linear-gradient(rgb(18 46 59 / 96%), rgb(18 46 59 / 98%)),
    repeating-linear-gradient(0deg, transparent 0 3px, rgb(255 255 255 / 3%) 3px 4px);
  color: #fff;
  border-right: 1px solid rgb(255 255 255 / 12%);
}

.cat-sidebar::-webkit-scrollbar {
  display: none;
}

.cat-sidebar__brand {
  display: block;
  width: min(100%, 190px);
  margin: 0 auto 1.25rem;
  padding: .75rem;
  background: #fffdf9;
  box-shadow: 0 12px 30px rgb(0 0 0 / 20%);
  text-decoration: none;
}

.cat-sidebar__brand img {
  display: block;
  width: 100%;
  height: auto;
}

.cat-sidebar__status {
  display: grid;
  grid-template-columns: auto 1fr;
  gap: .1rem .55rem;
  margin-top: auto;
  padding: 1rem .8rem 0;
  border-top: 1px solid rgb(255 255 255 / 16%);
  color: #dce7eb;
  font-size: .82rem;
}

.cat-sidebar__status strong {
  color: #fff;
}

.cat-sidebar__status > span:last-child {
  grid-column: 2;
}

.cat-status-dot {
  width: .65rem;
  height: .65rem;
  margin-top: .35rem;
  border-radius: 50%;
  background: #e2a93f;
  box-shadow: 0 0 0 4px rgb(226 169 63 / 16%);
}

.cat-main {
  width: min(100%, 1500px);
  min-height: 75vh;
  margin: 0 auto;
  padding: clamp(1.25rem, 3vw, 3.5rem) clamp(1rem, 4vw, 4.5rem) 5rem;
}

.cat-main h1,
.cat-main h2,
.cat-main h3,
.cat-main h4 {
  font-family: var(--cat-serif);
  line-height: 1.08;
  text-wrap: balance;
}

.cat-main h1 {
  margin: 0;
  font-size: clamp(2.25rem, 4vw, 4rem);
  letter-spacing: -.04em;
}

.cat-main h2 {
  margin: 0;
  font-size: clamp(1.75rem, 2.6vw, 2.65rem);
  letter-spacing: -.025em;
}

.cat-main h3 {
  margin: 0;
  font-size: 1.32rem;
}

.cat-main h4 {
  margin: 0;
  font-size: var(--cat2-text-2);
}

/* Pie compactado 2026-08-14 a petición del propietario: ocupaba demasiado.
   Se reduce el aire vertical (2rem → 1.4rem), el cuerpo de texto
   (.86 → .8rem) y el hueco entre columnas; la estructura y los enlaces no
   cambian. */
.cat-footer {
  display: flex;
  justify-content: space-between;
  gap: 1.2rem 2rem;
  padding: 1.4rem clamp(1rem, 4vw, 4.5rem);
  background: var(--cat-blue-deep);
  color: #e7eef0;
  font-size: .8rem;
  line-height: 1.55;
}

.cat-footer p {
  max-width: 52rem;
  margin: 0;
}

.cat-footer strong {
  color: #fff;
}

.cat-footer a {
  color: #cfe0e6;
  text-decoration-color: rgb(207 224 230 / 55%);
}

.cat-footer a:visited {
  color: #cfe0e6;
}

.cat-kicker,
.cat-eyebrow {
  margin: 0 0 .65rem;
  color: var(--cat-red-deep);
  font-family: var(--cat-sans);
  font-size: .76rem;
  font-weight: 700;
  letter-spacing: .13em;
  text-transform: uppercase;
}

.cat-eyebrow {
  display: block;
  margin-bottom: .35rem;
  /* .7rem (11.2px) es la alerta "Very small text" que marca WAVE: se usa en
     decenas de tarjetas y cabeceras en todo el sitio, así que se sube aquí,
     en la base, en vez de parche a parche. */
  font-size: .76rem;
}

/* El componente .cat-hero de "portada" antigua (grid de dos columnas con
   .cat-hero__archive) se retiró: ningún template lo usa ya (verificado por
   grep, 2026-08-14). Esa clase quedó libre para el sistema unificado de
   cabeceras de sección que se define más abajo, junto a las cabeceras
   móviles a pantalla completa; antes de este borrado coexistían dos
   reglas .cat-hero con especificidad igual (0,1,0), la vieja de aquí y la
   nueva al final del archivo, y ambas se aplicaban a la vez sobre las 16
   páginas: la vieja aportaba grid, márgenes negativos y una franja diagonal
   clara; la nueva aportaba el azul marino. Esa mezcla es la caja rota que
   reportó el propietario. */
.cat-search {
  max-width: 58rem;
}

.cat-search label {
  display: block;
  margin-bottom: .45rem;
  font-weight: 700;
}

.cat-search__control {
  display: flex;
  min-height: 60px;
  background: #fff;
  border: 1px solid #b9ae9d;
  box-shadow: 0 10px 28px rgb(21 37 46 / 10%);
}

.cat-search input {
  min-width: 0;
  flex: 1;
  padding: 0 1.15rem;
  border: 0;
  background: transparent;
  color: var(--cat-ink);
  font: 1.05rem var(--cat-sans);
}

.cat-search button {
  min-width: 132px;
  padding: 0 1.2rem;
  border: 0;
  background: var(--cat-red);
  color: #fff;
  cursor: pointer;
  font: 700 1rem var(--cat-sans);
}

.cat-search button:hover {
  background: var(--cat-red-deep);
}

.cat-search > p {
  margin: .55rem 0 0;
  color: var(--cat-ink-soft);
  font-size: .85rem;
}

.cat-search--results {
  max-width: 70rem;
  margin-bottom: 1.5rem;
}

.cat-section {
  padding-top: clamp(3rem, 7vw, 6rem);
}

/* Identidad del catalogo aprobado para cabeceras de seccion: navy con
   filete dorado abajo, la misma variante "preferida" que ya llevan el
   indice de pagina y los acordeones de yacimientos. Usado en 21
   plantillas del sitio (misma clase compartida), asi que este cambio
   se propaga a todas ellas, no solo a la ficha de lugar. */
.cat-section__head {
  display: flex;
  align-items: end;
  justify-content: space-between;
  gap: 2rem;
  margin: 0 0 1.8rem;
  padding: 1.25rem 1.5rem;
  background: var(--cat-blue-deep);
  border-bottom: 4px solid var(--cat-gold);
  border-radius: 8px 8px 0 0;
  color: #fff;
}

.cat-section__head h2 { color: #fff; }
/* gold-500 (var(--cat-gold)) sobre navy falla el minimo AA para texto
   (4.05:1, medido en el catalogo de tokens) -- se usa el dorado claro
   que ya usan el resto de kickers sobre navy del sitio (#f2c45d,
   7.68:1). */
.cat-section__head .cat-kicker { color: #f2c45d; }

.cat-section__head > p {
  max-width: 38rem;
  margin: 0;
  color: rgb(255 255 255 / 85%);
}

/* Medido en vivo 2026-08-15: 191x22px, por debajo de los 24x24 que exige
   WCAG 2.2 §2.5.8 (Target Size Minimum). No le aplica la excepción «inline»
   porque no va dentro de una frase: es un enlace suelto en la cabecera de
   sección. Se le da alto con padding, sin tocar el aspecto visual. */
.cat-text-link {
  display: inline-block;
  padding-block: .15rem;
  font-weight: 700;
  line-height: 1.5;
}

.cat-resource-grid {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 1.35rem;
}

.cat-resource-card {
  display: flex;
  min-width: 0;
  flex-direction: column;
  overflow: hidden;
  background: var(--cat-surface);
  border: 1px solid var(--cat-line);
  color: var(--cat-ink);
  text-decoration: none;
  transition: border-color .18s ease, box-shadow .18s ease, transform .18s ease;
}

.cat-resource-card:hover {
  border-color: #9c8e79;
  box-shadow: var(--cat-shadow);
  color: var(--cat-ink);
  transform: translateY(-3px);
}

.cat-resource-card__media {
  display: block;
  aspect-ratio: 16 / 10;
  overflow: hidden;
  border-bottom: 1px solid var(--cat-line);
}

.cat-resource-card__media img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  transition: transform .28s ease;
}

.cat-resource-card:hover img {
  transform: scale(1.025);
}

.cat-resource-card__body {
  display: flex;
  min-height: 210px;
  flex: 1;
  flex-direction: column;
  padding: 1.2rem;
}

.cat-resource-card__body > strong {
  margin-bottom: .65rem;
  font-family: var(--cat-serif);
  font-size: 1.35rem;
  line-height: 1.15;
}

.cat-resource-card__body > span:not(.cat-eyebrow, .cat-resource-card__meta) {
  color: var(--cat-ink-soft);
  font-size: .92rem;
}

.cat-resource-card__meta {
  margin-top: auto;
  padding-top: 1rem;
  color: #63747b;
  font-size: .78rem;
}

/* Cruce por co-ocurrencia en la ficha de persona: bajo cada documento
   relacionado, que otras entidades enlaza ese mismo documento. */
.cat-coocurrencia {
  margin: -.5rem 0 1rem;
  padding: 0 .25rem;
  color: #5a6a71;
  font-size: .82rem;
  line-height: 1.4;
}

.cat-coocurrencia__label {
  font-weight: 600;
  color: #4a5a60;
}

.cat-coocurrencia a {
  color: var(--cat-blue-deep, #1c3f4d);
}

.cat-collection-grid {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  border-top: 1px solid var(--cat-line);
  border-left: 1px solid var(--cat-line);
}

.cat-collection-card {
  display: grid;
  grid-template-columns: auto 1fr;
  gap: 1rem 1.25rem;
  min-height: 190px;
  padding: 1.6rem;
  background: rgb(255 253 248 / 58%);
  border-right: 1px solid var(--cat-line);
  border-bottom: 1px solid var(--cat-line);
  color: var(--cat-ink);
  text-decoration: none;
}

.cat-collection-card:hover {
  background: var(--cat-surface);
  color: var(--cat-ink);
}

.cat-collection-card__number {
  color: var(--cat-red);
  font-family: var(--cat-serif);
  font-size: 2.2rem;
}

.cat-collection-card strong {
  display: block;
  margin-bottom: .45rem;
  font-family: var(--cat-serif);
  font-size: 1.42rem;
  line-height: 1.15;
}

.cat-collection-card span span {
  display: block;
  color: var(--cat-ink-soft);
}

.cat-collection-card small {
  grid-column: 2;
  /* #63747b medía 4,32:1 sobre el fondo real de la tarjeta (2026-08-15,
     medido en vivo en /hemeroteca/ con el texto «36 recursos», 11,7px):
     por debajo del 4,5:1 que exige WCAG AA para texto normal, y además
     justo en el límite donde unas herramientas lo marcan y otras no según
     cómo resuelvan el fondo semitransparente de la tarjeta. Se oscurece a
     #5a6a71, que mide 5,3:1 y deja margen. */
  color: #5a6a71;
}

.cat-breadcrumb {
  display: flex;
  flex-wrap: wrap;
  gap: .3rem .55rem;
  margin-bottom: 2rem;
  /* #66777f daba 4.13:1 sobre los fondos claros del tema, por debajo de 4.5:1.
     Mismo gris ya corregido en responsive-a11y.css para .cat-tree-empty y
     .cat-source-note (>= 5.5:1 sobre todos los fondos claros). */
  color: #55666d;
  font-size: .85rem;
}

/* Los enlaces de la miga medían 37×21 CSS px. Van en una línea aparte, así
   que no les vale la excepción «en línea» del criterio WCAG 2.2 §2.5.8
   (objetivo mínimo 24×24). Con el interlineado y un poco de aire vertical
   pasan de 21 a 24px sin mover nada de sitio. Importa especialmente aquí:
   buena parte del público del catálogo son personas mayores. */
.cat-breadcrumb a {
  display: inline-block;
  padding-block: .15rem;
  font-weight: 700;
  line-height: 1.5;
}

.cat-classification {
  display: grid;
  gap: 1.4rem;
}

.cat-classification-tech-link {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 2rem;
  margin: 1.4rem 0 2.5rem;
  padding: 1.45rem 1.6rem;
  border: 1px solid #8f3533;
  border-left: 6px solid #f0bb58;
  background: linear-gradient(120deg, #8b2f31, #b24d35);
  color: #fff;
  box-shadow: 0 12px 24px rgb(21 37 46 / 12%);
}

.cat-classification-tech-link .cat-kicker { margin: 0 0 .3rem; color: #ffe09a; }
.cat-classification-tech-link h2 { margin: 0; font: 600 clamp(1.35rem, 2vw, 1.8rem)/1.1 var(--cat-serif); }
.cat-classification-tech-link p:last-child { max-width: 54rem; margin: .65rem 0 0; color: #fff7ed; line-height: 1.5; }
.cat-classification-tech-link a {
  flex: 0 0 auto;
  padding: .8rem 1rem;
  border: 1px solid #ffe09a;
  background: #fff8ea;
  color: #7a272b;
  font-weight: 800;
  text-decoration: none;
  white-space: nowrap;
}
.cat-classification-tech-link a:hover { background: #ffe09a; color: #611d25; }
.cat-classification-tech-link a span { margin-left: .4rem; }

@media (max-width: 680px) {
  .cat-classification-tech-link { align-items: flex-start; flex-direction: column; gap: 1rem; padding: 1.2rem; }
}

.cat-chip-list {
  display: flex;
  flex-wrap: wrap;
  gap: .65rem;
  margin: 0;
  padding: 0;
  list-style: none;
}

.cat-chip-list a {
  display: inline-block;
  padding: .55rem .8rem;
  background: var(--cat-surface);
  border: 1px solid var(--cat-line);
  font-weight: 700;
  text-decoration: none;
}

.cat-series-grid {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 1rem;
}

.cat-series-card {
  display: flex;
  min-height: 220px;
  flex-direction: column;
  padding: 1.35rem;
  background: var(--cat-surface);
  border: 1px solid var(--cat-line);
  color: var(--cat-ink);
  text-decoration: none;
}

.cat-series-card:hover {
  border-color: var(--cat-blue);
  color: var(--cat-ink);
  box-shadow: var(--cat-shadow);
}

.cat-series-card__ornament {
  color: var(--cat-red);
  font: 600 1.4rem var(--cat-serif);
}

.cat-series-card strong {
  margin: .9rem 0 .6rem;
  font: 600 1.35rem/1.15 var(--cat-serif);
}

.cat-series-card > span:not(.cat-series-card__ornament) {
  color: var(--cat-ink-soft);
}

.cat-series-card small {
  margin-top: auto;
  padding-top: 1rem;
  color: var(--cat-blue-deep);
  font-weight: 700;
}

.cat-empty-state {
  max-width: 54rem;
  margin: 2rem auto;
  padding: clamp(2rem, 5vw, 4rem);
  background: var(--cat-surface);
  border: 1px solid var(--cat-line);
  text-align: center;
}

.cat-empty-state__icon {
  display: grid;
  width: 4.5rem;
  height: 4.5rem;
  margin: 0 auto 1.2rem;
  place-items: center;
  border: 1px solid var(--cat-line);
  border-radius: 50%;
  color: var(--cat-red);
  font: 600 1.8rem var(--cat-serif);
}

.cat-empty-state h1,
.cat-empty-state h2,
.cat-empty-state h3 {
  font-size: 2rem;
}

.cat-empty-state p {
  color: var(--cat-ink-soft);
}

.cat-pagination {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 1rem;
  margin-top: 2.5rem;
}

.cat-pagination a,
.cat-pagination span {
  padding: .65rem .9rem;
  background: var(--cat-surface);
  border: 1px solid var(--cat-line);
}

.cat-pagination a {
  font-weight: 700;
  text-decoration: none;
}

.cat-results-summary {
  display: flex;
  align-items: baseline;
  gap: .7rem;
  margin-bottom: 2.5rem;
  padding: 1rem 0;
  border-bottom: 1px solid var(--cat-line);
}

.cat-results-summary strong {
  color: var(--cat-red);
  font: 600 2.3rem var(--cat-serif);
}

.cat-result-group {
  margin-bottom: 4rem;
}

.cat-result-group__head {
  display: flex;
  align-items: baseline;
  justify-content: space-between;
  gap: 1rem;
  margin-bottom: 1.2rem;
  padding-bottom: .75rem;
  border-bottom: 2px solid var(--cat-blue);
}

.cat-result-group__head h2 {
  font-size: 2rem;
}

.cat-result-group__head span {
  color: var(--cat-ink-soft);
  font-size: .85rem;
}

.cat-record-header {
  margin-bottom: 2rem;
  padding-bottom: 1.7rem;
  border-bottom: 1px solid var(--cat-line);
}

.cat-record-header h1 {
  max-width: 82rem;
  font-size: clamp(2.1rem, 3.8vw, 3.8rem);
}

.cat-record-header__badges {
  display: flex;
  flex-wrap: wrap;
  gap: .55rem;
  margin-top: 1.2rem;
}

.cat-record-header__badges span {
  padding: .42rem .65rem;
  background: var(--cat-surface);
  border: 1px solid var(--cat-line);
  color: var(--cat-ink-soft);
  font-size: .82rem;
}

.cat-record-header__badges .cat-review-badge {
  background: #fff4d8;
  border-color: #d8aa4d;
  color: #674606;
  font-weight: 700;
}

.cat-original-source {
  display: flex;
  justify-content: space-between;
  gap: 1.5rem;
  align-items: center;
  margin-top: 1rem;
  padding: 1.1rem 1.25rem;
  border: 1px solid var(--cat-line);
  border-left: 4px solid var(--cat-gold);
  background: var(--cat-surface);
  box-shadow: 0 12px 30px rgb(25 49 61 / 7%);
}

.cat-original-source strong {
  display: block;
  margin-top: .2rem;
  color: var(--cat-blue-deep);
  font: 600 1.35rem var(--cat-serif);
}

.cat-original-source p {
  max-width: 48rem;
  margin: .35rem 0 0;
  color: var(--cat-ink-soft);
}

.cat-original-source__actions {
  display: flex;
  flex: 0 0 min(34rem, 46%);
  justify-content: flex-end;
  gap: .65rem;
}

.cat-original-source__actions a {
  display: inline-flex;
  align-items: center;
  padding: .7rem .85rem;
  border: 1px solid var(--cat-blue-deep);
  color: var(--cat-blue-deep);
  font-size: .82rem;
  font-weight: 800;
  line-height: 1.25;
  text-decoration: none;
}

.cat-original-source__actions a:last-child {
  background: var(--cat-blue-deep);
  color: #fff;
}

.cat-original-source__actions a:hover,
.cat-original-source__actions a:focus-visible {
  border-color: var(--cat-red);
  background: var(--cat-red);
  color: #fff;
}

.cat-file-placeholder {
  display: grid;
  max-width: 30rem;
  gap: 1rem;
  padding: 3rem;
  place-items: center;
  background: var(--cat-surface);
  box-shadow: var(--cat-shadow);
  text-align: center;
}

.cat-file-placeholder > span {
  color: var(--cat-red);
  font: 700 3rem var(--cat-serif);
}

.cat-record-facts {
  position: sticky;
  top: 1rem;
  padding: 1.35rem;
  background: var(--cat-blue-deep);
  color: #edf3f5;
}

.cat-record-facts h2 {
  padding-bottom: .8rem;
  border-bottom: 1px solid rgb(255 255 255 / 18%);
  color: #fff;
  font-size: 1.45rem;
}

.cat-record-facts dl {
  margin: 0;
}

.cat-record-facts dl div {
  padding: .8rem 0;
  border-bottom: 1px solid rgb(255 255 255 / 12%);
}

.cat-record-facts dt {
  color: #aebfc6;
  font-size: .73rem;
  font-weight: 700;
  letter-spacing: .08em;
  text-transform: uppercase;
}

.cat-record-facts dd {
  margin: .2rem 0 0;
}

.cat-record-facts a {
  color: #fff;
}

.cat-media-strip {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 1rem;
}

.cat-media-strip > a {
  display: grid;
  grid-template-columns: 90px 1fr;
  gap: .9rem;
  align-items: center;
  padding: .8rem;
  background: var(--cat-surface);
  border: 1px solid var(--cat-line);
  color: var(--cat-ink);
  text-decoration: none;
}

.cat-media-strip__thumb {
  display: grid;
  aspect-ratio: 1;
  overflow: hidden;
  place-items: center;
  background: var(--cat-blue);
  color: #fff;
  font: 700 1rem var(--cat-serif);
}

.cat-media-strip__thumb img {
  width: 100%;
  height: 100%;
  object-fit: cover;
}

.cat-media-strip small {
  grid-column: 2;
  color: var(--cat-ink-soft);
}

.cat-record-content {
  max-width: 76rem;
  margin: 3rem auto 0;
  border-top: 1px solid var(--cat-line);
}

.cat-lead-text {
  color: var(--cat-ink);
  font: 1.22rem/1.6 var(--cat-serif);
}

/* Comparado contra el catalogo real (demo-note): el sitio usaba tono
   "aviso" amarillo/dorado para notas normales de metodo/dato -- el
   artifact reserva ese tono de alerta para .demo-note--aviso; una nota
   normal lleva filete NAVY (no dorado) sobre fondo neutro, con esquina
   redondeada en el lado del filete. */
.cat-data-note {
  padding: .75rem 1rem;
  background: #f7f2e6;
  border-left: 4px solid var(--cat-blue-deep);
  border-radius: 0 6px 6px 0;
  color: var(--cat-ink);
  font-size: .88rem;
}

.cat-relations {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 2rem;
}

.cat-editorial-list {
  border-top: 1px solid var(--cat-line);
}

.cat-editorial-list__item {
  border-bottom: 1px solid var(--cat-line);
}

.cat-editorial-list__item > a {
  display: grid;
  grid-template-columns: 126px minmax(0, 1fr) 150px;
  gap: 1.25rem;
  align-items: center;
  min-height: 130px;
  padding: .9rem 0;
  color: var(--cat-ink);
  text-decoration: none;
}

.cat-editorial-list__item > a:hover {
  background: rgb(255 253 248 / 65%);
}

.cat-editorial-list__places {
  display: flex;
  flex-wrap: wrap;
  align-items: baseline;
  gap: .5rem;
  margin: 0 0 .75rem;
  padding: 0 0 .75rem;
}

.cat-editorial-list__places-label {
  flex: 0 0 auto;
  color: var(--cat-ink-soft);
  font-size: .68rem;
  font-weight: 700;
  letter-spacing: .04em;
  text-transform: uppercase;
}

.cat-editorial-list__places .cat-subject-chips {
  gap: .4rem;
}

.cat-editorial-list__places .cat-subject-chips li {
  font-size: .74rem;
}

.cat-editorial-list__places .cat-subject-chips a {
  padding: .35rem .65rem;
}

.cat-digital-grid__places {
  display: flex;
  flex-wrap: wrap;
  align-items: baseline;
  gap: .4rem;
  margin: 0;
  padding: 0 .7rem .6rem;
}

.cat-digital-grid__places-label {
  flex: 0 0 auto;
  color: var(--cat-ink-soft);
  font-size: .62rem;
  font-weight: 700;
  letter-spacing: .04em;
  text-transform: uppercase;
}

.cat-digital-grid__places .cat-subject-chips {
  gap: .3rem;
}

.cat-digital-grid__places .cat-subject-chips li {
  font-size: .66rem;
}

.cat-digital-grid__places .cat-subject-chips a {
  padding: .25rem .5rem;
}

.cat-editorial-list__thumb {
  display: grid;
  width: 126px;
  aspect-ratio: 4 / 3;
  overflow: hidden;
  place-items: center;
  background: var(--cat-blue);
  color: #fff;
  font: 700 1.1rem var(--cat-serif);
}

.cat-editorial-list__thumb img {
  width: 100%;
  height: 100%;
  object-fit: cover;
}

.cat-editorial-list__body small,
.cat-editorial-list__body strong,
.cat-editorial-list__body > span {
  display: block;
}

.cat-editorial-list__body small {
  color: var(--cat-red-deep);
  font-size: .75rem;
  font-weight: 700;
  text-transform: uppercase;
}

.cat-editorial-list__body strong {
  margin: .25rem 0;
  font: 600 1.35rem var(--cat-serif);
}

.cat-editorial-list__body > span {
  color: var(--cat-ink-soft);
}

.cat-editorial-list__item > a > em {
  color: var(--cat-ink-soft);
  font-size: .78rem;
  font-style: normal;
  text-align: right;
}

.cat-subhome-actions {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 1rem;
}

.cat-subhome-actions a {
  display: grid;
  grid-template-columns: auto 1fr;
  gap: .15rem 1rem;
  padding: 1.25rem;
  background: var(--cat-blue-deep);
  color: #fff;
  text-decoration: none;
}

.cat-subhome-actions strong {
  grid-row: span 2;
  font: 600 2.5rem var(--cat-serif);
}

.cat-subhome-actions span {
  font-weight: 700;
}

.cat-subhome-actions em {
  color: #c9d7dc;
  font-size: .78rem;
  font-style: normal;
}

.cat-muted {
  color: var(--cat-ink-soft);
}

.cat-digital-grid {
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: .85rem;
}

.cat-digital-grid > article {
  background: var(--cat-surface);
  border: 1px solid var(--cat-line);
}

.cat-digital-grid > article > a {
  display: grid;
  grid-template-columns: 92px 1fr;
  gap: .8rem;
  min-height: 100px;
  padding: .7rem;
  color: var(--cat-ink);
  text-decoration: none;
}

.cat-digital-grid__media {
  display: grid;
  width: 92px;
  height: 86px;
  overflow: hidden;
  place-items: center;
  background: var(--cat-blue);
  color: #fff;
  font: 700 .8rem var(--cat-serif);
}

.cat-digital-grid__media img {
  width: 100%;
  height: 100%;
  object-fit: cover;
}

.cat-digital-grid small,
.cat-digital-grid strong,
.cat-digital-grid em {
  display: block;
}

.cat-digital-grid small {
  color: var(--cat-red-deep);
  font-size: .68rem;
  font-weight: 700;
  text-transform: uppercase;
}

.cat-digital-grid strong {
  margin: .15rem 0;
  font: 600 1rem/1.15 var(--cat-serif);
}

.cat-digital-grid em {
  color: var(--cat-ink-soft);
  font-size: .7rem;
  font-style: normal;
}

@media (max-width: 1180px) {
.cat-resource-grid,
  .cat-series-grid {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }
.cat-media-strip {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }
.cat-digital-grid {
    grid-template-columns: repeat(3, minmax(0, 1fr));
  }
}

@media (max-width: 900px) {
/* Botón de volver arriba, 2026-08-15. Solo móvil: en escritorio la
     barra lateral con "Inicio" siempre visible ya cumple la misma función.
     Siempre visible (no aparece/desaparece con el scroll) para no repetir
     el patrón de mecanismos reactivos al scroll que ya se retiró dos veces
     esta semana por quedar rotos o sin documentar. Es un enlace normal a
     #main-content, sin JS. */
.cat-back-to-top {
    display: flex;
    position: fixed;
    right: 1rem;
    bottom: 1rem;
    z-index: 20;
    display: flex;
    align-items: center;
    justify-content: center;
    width: 44px;
    height: 44px;
    border-radius: 50%;
    background: var(--cat-blue-deep, #122e3b);
    color: #fff;
    font-size: 1.2rem;
    line-height: 1;
    text-decoration: none;
    box-shadow: 0 4px 14px rgb(18 46 59 / 30%);
  }
.cat-back-to-top:focus-visible {
    outline: 3px solid var(--cat-gold, #f0c76c);
    outline-offset: 2px;
  }
.cat-record-facts {
    position: static;
  }
.cat-footer {
    flex-direction: column;
  }
.cat-digital-grid {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }
}

@media (max-width: 680px) {
.cat-main {
    padding-bottom: 3rem;
  }
.cat-main h1 {
    font-size: clamp(2.25rem, 12vw, 3.6rem);
  }
.cat-search__control {
    flex-direction: column;
  }
.cat-search input,
  .cat-search button {
    min-height: 54px;
  }
.cat-original-source,
  .cat-original-source__actions {
    align-items: stretch;
    flex-direction: column;
  }
.cat-original-source__actions {
    flex-basis: auto;
  }
.cat-media-strip > a {
    grid-template-columns: 74px 1fr;
  }
.cat-editorial-list__item > a {
    grid-template-columns: 86px 1fr;
  }
.cat-editorial-list__thumb {
    width: 86px;
  }
.cat-editorial-list__item > a > em {
    display: none;
  }
}

@media (prefers-reduced-motion: reduce) {
html {
    scroll-behavior: auto;
  }
*,
  *::before,
  *::after {
    scroll-behavior: auto !important;
    transition-duration: .01ms !important;
  }
}

/* Fichas de autoridad: personas, lugares y cabeceras
   Cada tipo evita el visor documental vacío y prioriza sus datos propios. */
.cat-record-header--personas,
.cat-record-header--lugares,
.cat-record-header--publicaciones {
  margin-bottom: 1.5rem;
}

.cat-identity-grid {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  margin-top: .55rem;
  border-top: 1px solid var(--cat-line);
  border-left: 1px solid var(--cat-line);
}

.cat-identity-fact {
  display: grid;
  min-height: 112px;
  align-content: start;
  padding: 1rem 1.1rem;
  border-right: 1px solid var(--cat-line);
  border-bottom: 1px solid var(--cat-line);
}

.cat-identity-fact--accent {
  background: #f7e7bd;
}

.cat-identity-fact > span,
.cat-evidence-note > span {
  color: var(--cat-red-deep);
  font-size: .68rem;
  font-weight: 800;
  letter-spacing: .08em;
  text-transform: uppercase;
}

.cat-identity-fact strong {
  margin-top: .35rem;
  color: var(--cat-blue-deep);
  font: 600 clamp(1.05rem, 2vw, 1.35rem) var(--cat-serif);
}

.cat-identity-fact strong a {
  color: inherit;
}

.cat-identity-fact small {
  margin-top: .3rem;
  color: var(--cat-ink-soft);
  font-size: .72rem;
  font-weight: 400;
}

.cat-evidence-note {
  margin-top: 1rem;
  padding: .9rem 1.1rem;
  background: #f3efe6;
  border-left: 4px solid var(--cat-blue);
}

.cat-evidence-note p {
  margin: .3rem 0 0;
  color: var(--cat-ink-soft);
  font-size: .85rem;
  line-height: 1.6;
}

.cat-oficios-chips {
  display: flex;
  flex-wrap: wrap;
  gap: .5rem;
  margin: .6rem 0 0;
  padding: 0;
  list-style: none;
}

.cat-oficios-chips li {
  display: flex;
  align-items: baseline;
  gap: .35rem;
  padding: .3rem .65rem;
  background: #fff;
  border: 1px solid #ddd3c2;
  border-radius: 999px;
  font-size: .85rem;
}

.cat-oficios-chips strong { color: var(--cat-blue-deep); font-weight: 600; }

.cat-oficios-chips small { color: #65767c; }

.cat-tratamiento-tag {
  margin: .6rem 0 0 !important;
  font-size: .78rem !important;
  color: #65767c !important;
}

.cat-family-relations .cat-entity-cards {
  margin-top: .6rem;
  grid-template-columns: repeat(auto-fit, minmax(220px, 1fr));
}

.cat-entity-card--sin-enlace {
  display: grid;
  grid-template-columns: 1fr;
  min-height: 74px;
  padding: .75rem;
  border: 1px dashed #ddd3c2;
  color: var(--cat-ink-soft);
  align-content: center;
}

.cat-entity-card--sin-enlace strong { line-height: 1.2; color: var(--cat-blue-deep); }

.cat-entity-card--sin-enlace small { color: #65767c; }

.cat-record-content--sources {
  margin-top: 1.5rem;
}

.cat-linked-records {
  scroll-margin-top: 2rem;
}

@media (max-width: 680px) {
.cat-identity-fact {
    min-height: 92px;
  }
}

/* -------------------------------------------------------------------------
   Prototipos editoriales: territorio, autoridades reconocidas y relatos
   ------------------------------------------------------------------------- */
.cat-editorial-header {
  max-width: 960px;
  margin: 0 0 3rem;
  padding: 1.5rem 0 2.25rem;
  border-bottom: 1px solid var(--arca-border, #d8cfbf);
}

.cat-editorial-header > p:last-child {
  max-width: 760px;
  margin: 0;
  color: #47586a;
  font-size: 1.08rem;
  line-height: 1.75;
}

.cat-prototype-notice {
  margin: 1.5rem 0;
  padding: 1rem 1.2rem;
  border: 1px solid #dcae54;
  border-left: 5px solid #b77912;
  background: #fff8e7;
  color: #62450f;
  line-height: 1.6;
}

.cat-evolution {
  margin-top: 3rem;
}

.cat-time-compare {
  --compare-split: 50%;
  overflow: hidden;
  border: 1px solid #cfc6b6;
  background: #132f3d;
  box-shadow: 0 22px 55px rgba(23, 43, 53, 0.16);
}

.cat-time-compare__toolbar {
  display: grid;
  grid-template-columns: minmax(150px, 1fr) minmax(170px, auto) minmax(150px, 1fr);
  align-items: end;
  gap: 1rem;
  padding: 1rem 1.2rem;
  color: #fff;
}

.cat-time-compare__toolbar label {
  display: grid;
  gap: 0.3rem;
  color: #c9d6d9;
  font-size: 0.72rem;
  font-weight: 700;
  letter-spacing: 0.08em;
  text-transform: uppercase;
}

.cat-time-compare__toolbar label:last-child {
  text-align: right;
}

.cat-time-compare__toolbar select {
  min-height: 2.7rem;
  padding: 0.35rem 0.75rem;
  border: 1px solid rgba(255, 255, 255, 0.34);
  border-radius: 0;
  background: #fff;
  color: #173a4b;
  font: 700 1rem "Atkinson Hyperlegible", sans-serif;
}

.cat-time-compare__toolbar p {
  margin: 0;
  text-align: center;
}

.cat-time-compare__toolbar p span,
.cat-time-compare__toolbar p strong {
  display: block;
}

.cat-time-compare__toolbar p span {
  color: #d6bd80;
  font-size: 0.74rem;
}

.cat-time-compare__stage {
  position: relative;
  aspect-ratio: 1410 / 763;
  overflow: hidden;
  background: #ede7da;
}

.cat-time-compare__stage > img,
.cat-time-compare__before,
.cat-time-compare__before img {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
}

.cat-time-compare__stage img {
  object-fit: cover;
}

.cat-time-compare__before {
  z-index: 2;
  width: 100%;
  overflow: hidden;
  clip-path: inset(0 calc(100% - var(--compare-split)) 0 0);
}

.cat-time-compare__before img {
  width: 100%;
}

.cat-time-compare__divider {
  position: absolute;
  z-index: 4;
  top: 0;
  bottom: 0;
  left: var(--compare-split);
  width: 3px;
  transform: translateX(-50%);
  background: #fff;
  box-shadow: 0 0 0 1px rgba(0, 0, 0, 0.24);
  pointer-events: none;
}

.cat-time-compare__divider::after {
  content: "↔";
  position: absolute;
  top: 50%;
  left: 50%;
  display: grid;
  width: 3rem;
  height: 3rem;
  transform: translate(-50%, -50%);
  place-items: center;
  border: 3px solid #fff;
  border-radius: 50%;
  background: #8d2631;
  color: #fff;
  font-size: 1.25rem;
}

.cat-time-compare__stage input[type="range"] {
  position: absolute;
  z-index: 5;
  inset: 0;
  width: 100%;
  height: 100%;
  margin: 0;
  opacity: 0;
  cursor: ew-resize;
}

.cat-time-compare__label {
  position: absolute;
  z-index: 3;
  top: 1rem;
  padding: 0.35rem 0.6rem;
  background: rgba(10, 32, 43, 0.84);
  color: #fff;
  font-weight: 700;
}

.cat-time-compare__label--left { left: 1rem; }

.cat-time-compare__label--right { right: 1rem; }

.cat-time-compare__caption {
  margin: 0;
  padding: 0.75rem 1.2rem;
  color: #dbe3e4;
  font-size: 0.78rem;
}

.cat-evolution__pending {
  display: flex;
  align-items: center;
  gap: 1rem;
  min-height: 140px;
  padding: 2rem;
  border: 1px dashed #b9aa91;
  background: linear-gradient(135deg, #f7f1e5, #efe7d7);
}

.cat-evolution__pending > span {
  color: #8d2631;
  font: 600 3rem "Source Serif 4", serif;
}

.cat-evolution__pending p { margin: 0.3rem 0 0; }

.cat-recognized-strip {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(250px, 1fr));
  gap: 0.85rem;
  margin-bottom: 1.4rem;
}

/* Colores propios -> tokens del sitio + filete dorado arriba, mismo
   lenguaje que cat-card/cat-person-card/cat-site-card. */
.cat-recognized-strip > a {
  display: grid;
  grid-template-columns: 72px 1fr;
  gap: 0.9rem;
  align-items: center;
  padding: 0.75rem;
  border: 1px solid var(--cat-line);
  border-top: 3px solid var(--cat-gold);
  background: var(--cat-surface);
  color: inherit;
  text-decoration: none;
  transition: border-top-color .18s ease;
}
.cat-recognized-strip > a:hover { border-top-color: var(--cat-blue-deep); }

.cat-recognized-strip img,
.cat-recognized-strip > a > span:first-child {
  width: 72px;
  height: 82px;
  object-fit: cover;
  background: #183e4d;
}

.cat-recognized-strip > a > span:first-child:not(:last-child) {
  display: grid;
  place-items: center;
  color: #fff;
  font: 600 1.8rem "Source Serif 4", serif;
}

.cat-recognized-strip a > span:last-child {
  display: grid;
  gap: 0.15rem;
}

.cat-recognized-strip small {
  color: #8d2631;
  /* 0.68rem (10.88px), misma alerta "Very small text" de WAVE. */
  font-size: 0.76rem;
  font-weight: 700;
  letter-spacing: 0.07em;
  text-transform: uppercase;
}

.cat-recognized-strip strong {
  color: #173a4b;
  font-family: "Source Serif 4", Georgia, serif;
  font-size: 1.15rem;
}

.cat-recognized-strip em {
  color: #52646c;
  font-size: 0.8rem;
  font-style: normal;
}

.cat-people-grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(245px, 1fr));
  gap: 0.65rem;
}

.cat-document-group + .cat-document-group { margin-top: 2rem; }

.cat-document-group__head {
  display: flex;
  align-items: baseline;
  justify-content: space-between;
  gap: 1rem;
  margin-bottom: 0.8rem;
  padding-bottom: 0.6rem;
  border-bottom: 1px solid #d9d1c4;
}

.cat-document-group__head h3 {
  margin: 0;
  color: #173a4b;
  font: 600 1.35rem "Source Serif 4", serif;
}

.cat-document-group__head h3 span {
  display: inline-grid;
  min-width: 1.8rem;
  min-height: 1.8rem;
  margin-left: 0.35rem;
  place-items: center;
  border-radius: 50%;
  background: #ece3d2;
  font: 700 0.75rem "Atkinson Hyperlegible", sans-serif;
}

.cat-document-group__head a { color: #8d2631; font-weight: 700; }

.cat-resource-grid--compact {
  /* auto-fill, no auto-fit: con 1 solo elemento (frecuente en materias con
     pocos recursos de un tipo) auto-fit colapsaba las columnas vacías y la
     tarjeta se estiraba a todo el ancho. Mismo fix que .cat-study__related-
     grid en catalogo-estudios.css. */
  grid-template-columns: repeat(auto-fill, minmax(180px, 1fr));
  gap: 0.8rem;
}

.cat-resource-grid--compact .cat-resource-card {
  min-height: 0;
}

.cat-button-link { display: block; width: fit-content; padding: 0.75rem 1rem; background: #173b49; color: #fff; font-weight: 700; text-decoration: none; }

.cat-recognized-strip--large > a { grid-template-columns: 110px 1fr; }

.cat-recognized-strip--large img { width: 110px; height: 145px; }

@media (max-width: 850px) {
.cat-time-compare__toolbar label:last-child { text-align: left; }
.cat-time-compare__toolbar p { text-align: left; }
}

/* Retículas densas para recursos: evitan que uno o dos registros se estiren
   como visores y permiten cinco tarjetas en un escritorio Full HD. */
.cat-resource-grid--home,
.cat-resource-grid--compact {
  grid-template-columns: repeat(5, minmax(0, 1fr));
  gap: .85rem;
}

.cat-resource-grid--home .cat-resource-card__media,
.cat-resource-grid--compact .cat-resource-card__media {
  aspect-ratio: 16 / 9;
  max-height: 175px;
}

.cat-resource-grid--home .cat-resource-card__body,
.cat-resource-grid--compact .cat-resource-card__body {
  min-height: 170px;
  padding: .9rem;
}

.cat-resource-grid--home .cat-resource-card__body > strong,
.cat-resource-grid--compact .cat-resource-card__body > strong {
  margin-bottom: .45rem;
  font-size: 1.05rem;
  line-height: 1.12;
}

.cat-resource-grid--home .cat-resource-card__body > span:not(.cat-eyebrow, .cat-resource-card__meta) {
  display: -webkit-box;
  overflow: hidden;
  font-size: .82rem;
  -webkit-box-orient: vertical;
  -webkit-line-clamp: 3;
}

.cat-resource-grid--compact .cat-resource-card__body > span:not(.cat-eyebrow, .cat-resource-card__meta) {
  display: none;
}

.cat-resource-grid--home .cat-resource-card__meta,
.cat-resource-grid--compact .cat-resource-card__meta {
  padding-top: .7rem;
  overflow-wrap: anywhere;
  /* .68rem (10.88px), alerta "Very small text" de WAVE. */
  font-size: .76rem;
}

@media (max-width: 1600px) {
.cat-resource-grid--home,
  .cat-resource-grid--compact {
    grid-template-columns: repeat(4, minmax(0, 1fr));
  }
}

@media (max-width: 1280px) {
.cat-resource-grid--home,
  .cat-resource-grid--compact {
    grid-template-columns: repeat(3, minmax(0, 1fr));
  }
}

@media (max-width: 900px) {
.cat-resource-grid--home,
  .cat-resource-grid--compact {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }
}

@media (max-width: 600px) {
.cat-resource-grid--home,
  .cat-resource-grid--compact {
    grid-template-columns: 1fr;
  }
}

.cat-relations--cards {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 2rem;
  padding: 1.6rem;
}

.cat-entity-cards a {
  display: grid;
  grid-template-columns: 42px 1fr;
  grid-template-rows: auto auto;
  column-gap: 0.8rem;
  align-items: center;
  min-height: 74px;
  padding: 0.75rem;
  border: 1px solid #ddd3c2;
  color: #173a4b;
  text-decoration: none;
  transition: border-color 160ms ease, transform 160ms ease, box-shadow 160ms ease;
}

.cat-entity-cards a:hover {
  transform: translateY(-2px);
  border-color: #c99428;
  box-shadow: 0 10px 24px rgba(25, 53, 64, 0.09);
}

.cat-entity-cards a > span {
  grid-row: 1 / 3;
  display: grid;
  width: 42px;
  height: 42px;
  place-items: center;
  border-radius: 50%;
  background: #173e4d;
  color: #fff;
  font: 700 1.1rem "Source Serif 4", serif;
}

.cat-entity-cards a strong { line-height: 1.2; }

.cat-entity-cards a small { color: #65767c; }

.cat-entity-cards--places a > span { background: #9b6418; }

.cat-people-grid--directory { grid-template-columns: repeat(3, minmax(0, 1fr)); }

.cat-pagination { display: flex; justify-content: center; gap: 1rem; align-items: center; margin: 2.5rem 0; }

.cat-pagination a { padding: 0.7rem 1rem; border: 1px solid #a99370; color: #173a4b; text-decoration: none; }

.cat-demography {
  padding: clamp(2rem, 4vw, 4rem);
  border: 1px solid #d7cbb9;
  background: #fbf8f1;
}
/* Bug real medido en vivo: clamp(2rem,4vw,4rem) se resuelve al minimo
   fijo de 2rem (32px) en cualquier movil (4vw no supera 2rem hasta
   pasar los 800px de ancho), sumado al padding de <main> (16px) dejaba
   el texto con solo ~74% del ancho util en un viewport de 375px. */
@media (max-width: 900px) {
  .cat-demography { padding: 1.1rem; }
}

.cat-demography__notes { margin-top: 1.5rem; padding-top: 1.25rem; border-top: 1px solid #d7cbb9; }

.cat-demography__notes p { max-width: 950px; }

/* .cat-data-table ya no fija su propio contenedor/summary -- ahora es un
   .cat-accordion real (pieza del catalogo). Solo quedan aqui los estilos
   de CONTENIDO interno (la tabla en si), no el marco/cabecera. */
.cat-data-table { margin-top: 1rem; }

/* La tabla mantiene su ancho legible (no se encoge por debajo de 520px) y el
   <details> scrollea en horizontal en vez de forzar cada celda a partirse en
   dos o tres líneas, que es lo que pasaba en móvil con width:100%. */
.cat-data-table[open] { overflow-x: auto; }

.cat-data-table table { width: 520px; max-width: none; margin-top: 1rem; border-collapse: collapse; }

.cat-data-table th, .cat-data-table td { padding: 0.55rem 0.75rem; border-bottom: 1px solid #ddd3c2; text-align: left; }

@media (max-width: 980px) {
.cat-relations--cards { grid-template-columns: 1fr; }
.cat-people-grid--directory { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}

/* Videoteca y presentación audiovisual territorial */
.cat-video-heading {
  align-items: end;
}

.cat-video-heading > p {
  max-width: 42rem;
}

.cat-video-groups {
  display: grid;
  gap: 2.5rem;
}

.cat-video-grid {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 1.25rem;
}

.cat-video-card {
  display: grid;
  grid-template-columns: minmax(11rem, 42%) minmax(0, 1fr);
  min-height: 15rem;
  overflow: hidden;
  background: var(--paper, #fffdf8);
  border: 1px solid var(--line, #d8cfbd);
  box-shadow: 0 12px 30px rgba(18, 44, 54, 0.07);
}

.cat-video-card__poster {
  position: relative;
  display: block;
  min-height: 100%;
  overflow: hidden;
  background: #173f4e;
}

.cat-video-card__poster img {
  width: 100%;
  height: 100%;
  min-height: 15rem;
  object-fit: cover;
  transition: transform 180ms ease;
}

.cat-video-card__poster span {
  position: absolute;
  inset: 50% auto auto 50%;
  display: grid;
  width: 3.25rem;
  height: 3.25rem;
  place-items: center;
  padding-left: 0.2rem;
  color: #fff;
  border: 1px solid rgba(255, 255, 255, 0.72);
  border-radius: 50%;
  background: rgba(23, 63, 78, 0.86);
  transform: translate(-50%, -50%);
}

.cat-video-card:hover .cat-video-card__poster img {
  transform: scale(1.025);
}

.cat-video-card__body {
  display: flex;
  flex-direction: column;
  padding: 1.35rem;
}

.cat-video-card__body h3 {
  margin: 0.2rem 0 0.75rem;
  font-size: clamp(1.35rem, 1.8vw, 1.8rem);
  line-height: 1.08;
}

.cat-video-card__body h3 a {
  color: inherit;
  text-decoration-thickness: 1px;
  text-underline-offset: 0.2em;
}

.cat-video-card__body > p:not(.cat-eyebrow) {
  margin: 0;
  color: #3d5660;
  line-height: 1.55;
}

.cat-video-detail__heading {
  display: grid;
  grid-template-columns: minmax(0, 1fr) auto;
  gap: 2rem;
  align-items: end;
  padding-bottom: 1.8rem;
  border-bottom: 1px solid var(--line, #d8cfbd);
}

.cat-video-detail__heading h1 {
  margin: 0.2rem 0 0.75rem;
}

.cat-video-detail__heading p:last-child {
  max-width: 54rem;
  color: #38505a;
  font-size: 1.05rem;
  line-height: 1.65;
}

.cat-video-detail__layout {
  display: grid;
  grid-template-columns: minmax(0, 1fr) minmax(17rem, 25%);
  gap: 1.5rem;
  margin-top: 1.5rem;
  align-items: start;
}

.cat-video-player {
  margin: 0;
  background: #102f3b;
  box-shadow: 0 20px 48px rgba(18, 44, 54, 0.15);
}

.cat-video-player figcaption {
  padding: 0.8rem 1rem;
  color: rgba(255, 255, 255, 0.82);
  font-size: 0.78rem;
}

.cat-video-metadata {
  padding: 1.45rem;
  color: #eef5f4;
  background: #173f4e;
}

.cat-video-metadata .cat-eyebrow {
  color: #f0c65a;
}

.cat-video-metadata dl {
  margin: 0.8rem 0 0;
}

.cat-video-metadata dl div {
  padding: 0.8rem 0;
  border-top: 1px solid rgba(255, 255, 255, 0.16);
}

.cat-video-metadata dt {
  color: #a8cbd4;
  font-size: 0.68rem;
  font-weight: 800;
  letter-spacing: 0.09em;
  text-transform: uppercase;
}

.cat-video-metadata dd {
  margin: 0.25rem 0 0;
  line-height: 1.45;
}

.cat-video-metadata a {
  color: #fff;
}

@media (max-width: 1050px) {
.cat-video-grid {
    grid-template-columns: 1fr;
  }
}

@media (max-width: 760px) {
.cat-video-card,
  .cat-video-detail__layout,
  .cat-video-detail__heading {
    grid-template-columns: 1fr;
  }
.cat-video-card__poster,
  .cat-video-card__poster img {
    min-height: 12rem;
    max-height: 17rem;
  }
}

.cat-regional-timeline { position: relative; max-width: 1120px; margin: 0 auto; padding: 1rem 0; }

.cat-regional-timeline__line { position: absolute; top: 0; bottom: 0; left: 50%; width: 3px; overflow: hidden; background: #d8cec0; transform: translateX(-50%); }

.cat-regional-timeline__line span { display: block; width: 100%; height: 0; background: linear-gradient(#c9922f, var(--cat-red)); transition: height .15s linear; }

@media (max-width: 680px) {
.cat-regional-timeline__line { left: 18px; }
}

@media (prefers-reduced-motion: reduce) {
.cat-regional-timeline__line span { height: 100% !important; transition: none; }
}

/* Revisión editorial 2026-07: accesibilidad, relaciones y obras. */
.cat-button-link:hover,
.cat-button-link:focus-visible {
  background: #f0c65a;
  color: #132832;
}

.cat-artwork-grid {
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: 1rem;
}

.cat-artwork-card {
  display: grid;
  grid-template-rows: 260px 1fr;
  overflow: hidden;
  border: 1px solid var(--cat-line);
  background: var(--cat-surface);
  color: var(--cat-ink);
  text-decoration: none;
}

.cat-artwork-card:hover {
  border-color: #9c722b;
  box-shadow: var(--cat-shadow);
  color: var(--cat-ink);
  transform: translateY(-3px);
}

.cat-artwork-card__image {
  overflow: hidden;
  background: #ded7ca;
}

.cat-artwork-card__image img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  transition: transform 180ms ease;
}

.cat-artwork-card:hover img {
  transform: scale(1.025);
}

.cat-artwork-card__copy {
  display: grid;
  align-content: start;
  gap: .45rem;
  padding: 1rem;
}

.cat-artwork-card__copy small {
  color: var(--cat-red);
  font-size: .68rem;
  font-weight: 850;
  letter-spacing: .08em;
  text-transform: uppercase;
}

.cat-artwork-card__copy strong {
  color: #173e4d;
  font: 650 1.25rem/1.15 var(--cat-serif);
}

.cat-artwork-card__copy span,
.cat-artwork-card__copy em {
  color: var(--cat-ink-soft);
  font-size: .82rem;
  font-style: normal;
}

.cat-artwork-card__copy em {
  margin-top: .35rem;
  padding-top: .55rem;
  border-top: 1px solid var(--cat-line);
}

/* Relaciones documentales, comparación demográfica e índice de materias. */
.cat-locality-evidence {
  display: flex;
  flex-wrap: wrap;
  gap: .45rem;
}

.cat-locality-evidence a,
.cat-locality-evidence span {
  display: inline-flex;
  padding: .35rem .65rem;
  border: 1px solid #a99370;
  border-radius: 999px;
  background: #fffaf0;
  color: #173e4d;
  font: 750 .88rem var(--cat-sans);
  text-decoration: none;
}

.cat-locality-evidence a:hover,
.cat-locality-evidence a:focus-visible {
  border-color: #173e4d;
  background: #173e4d;
  color: #fff;
}

[data-population-comparison-summary] {
  display: grid;
  gap: .55rem;
  padding-top: .9rem;
  border-top: 1px solid rgb(255 255 255 / 25%);
}

/* Mismo problema que la leyenda: display:grid pisaba el hidden nativo y
   dejaba un bloque vacío con solo el borde superior visible cuando no hay
   comparación seleccionada. */
[data-population-comparison-summary][hidden] {
  display: none;
}

[data-population-comparison-summary] strong {
  font-size: 1.3rem;
}

.cat-artwork__original {
  display: inline-flex;
  margin-top: 1rem;
}

/* .cat-historical-method ya no fija su propio contenedor/summary -- ahora
   es un .cat-accordion real (pieza del catalogo, cabecera navy). Solo
   quedan aqui los estilos de CONTENIDO interno. */
.cat-historical-method__body {
  padding: 0;
}

.cat-historical-method p {
  margin: .35rem 0 .8rem;
}

.cat-historical-method ul {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: .45rem 1.2rem;
  margin: .9rem 0;
  padding: 0;
  list-style: none;
}

.cat-historical-method li {
  padding-bottom: .45rem;
  border-bottom: 1px solid rgb(109 77 26 / 22%);
  font-size: .82rem;
}

.cat-historical-method li > span {
  display: inline-block;
  min-width: 3.2rem;
  color: #7b1721;
  font-weight: 850;
}

.cat-historical-method a {
  margin-left: .35rem;
  color: #68131c;
  font-weight: 800;
}

/* Antes forzaba width:100% y anulaba el ancho fijo de .cat-data-table table,
   comprimiendo las 4 columnas y partiendo cada celda en 2-3 líneas en móvil. */
@media (max-width: 600px) {
.cat-historical-method ul {
    grid-template-columns: 1fr;
  }
}

.cat-artwork__hero figure {
  display: grid;
  place-items: center;
  min-height: 460px;
  padding: 1rem;
  background: #e9e2d6;
}

.cat-artwork__hero figure img {
  width: 100%;
  max-height: 76vh;
  object-fit: contain;
}

.cat-artwork__metadata div {
  border-top-color: var(--cat-line);
}

.cat-artwork__status {
  margin-top: 1.2rem;
  padding: .8rem 1rem;
  border-left: 4px solid #d6a12e;
  background: #fff3cf;
  color: #714b0c;
  font-size: .85rem;
  font-weight: 700;
}

.cat-artwork__auction {
  display: grid;
  grid-template-columns: 1fr minmax(320px, .8fr);
  gap: clamp(2rem, 5vw, 5rem);
  margin-top: 2rem;
  padding: clamp(2rem, 4vw, 4rem);
  background: #f0e9dc;
}

.cat-artwork__auction h2 {
  font: 650 3rem var(--cat-serif);
}

.cat-artwork__auction dl div {
  border-top-color: #cabca5;
}

.cat-artwork__auction figure {
  margin: 0;
}

.cat-artwork__auction img {
  width: 100%;
  border: 1px solid #cabcaa;
}

.cat-artwork__auction figcaption {
  margin-top: .55rem;
  color: var(--cat-ink-soft);
  font-size: .75rem;
}

@media (max-width: 1150px) {
.cat-artwork-grid {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }
}

@media (max-width: 600px) {
.cat-artwork-grid {
    grid-template-columns: 1fr;
  }
.cat-artwork-card {
    grid-template-rows: 230px 1fr;
  }
}

.cat-method-note {
  margin: 0 0 3rem;
  padding: 1rem 1.2rem;
  border-left: 4px solid #d49d2e;
  background: #fff3cf;
  color: #65420b;
}

.cat-method-note p {
  margin: .25rem 0 0;
}

.cat-review-state {
  align-self: flex-start;
  margin-top: 1.2rem;
  padding: .65rem .85rem;
  border-left: 3px solid #ffd76d;
  background: rgba(6, 28, 43, .78);
  color: #fff;
  font-size: .82rem;
}

.cat-facsimile-grid {
  display: grid;
  grid-template-columns: repeat(5, minmax(0, 1fr));
  gap: .75rem;
}

.cat-facsimile-grid img {
  display: block;
  width: 100%;
  height: 360px;
  object-fit: cover;
  object-position: top;
  transition: transform .35s ease;
}

.cat-bibliography {
  display: grid;
  gap: .75rem;
  margin: 2rem 0 0;
  padding: 0;
  list-style: none;
}

.cat-bibliography li {
  padding-top: .75rem;
  border-top: 1px solid #cdbfa9;
  color: var(--cat-ink-soft);
  font-size: .88rem;
  line-height: 1.55;
}

.cat-button {
  display: inline-flex;
  padding: .95rem 1.1rem;
  border: 1px solid var(--cat-blue-deep);
  color: #fff;
  background: var(--cat-blue-deep);
  font-weight: 800;
  text-decoration: none;
}

/* Sobre fondos que ya son --cat-blue-deep (heroes oscuros), el boton se
   fundia con el fondo y quedaba como un enlace subrayado suelto. Variante
   dorada con caja visible, coherente con el resto del tema oscuro. */
.cat-about-hero .cat-button,
.cat-about-data-hero .cat-button,
.cat-data-hero .cat-button {
  border-color: #f0d18c;
  background: #f0d18c;
  color: var(--cat-blue-deep);
}

.cat-about-hero .cat-button:hover,
.cat-about-hero .cat-button:focus-visible,
.cat-about-data-hero .cat-button:hover,
.cat-about-data-hero .cat-button:focus-visible,
.cat-data-hero .cat-button:hover,
.cat-data-hero .cat-button:focus-visible {
  border-color: #fff;
  background: #fff;
  color: var(--cat-red-deep);
}

.cat-button:hover,
.cat-button:focus-visible {
  border-color: var(--cat-red);
  color: #fff;
  background: var(--cat-red);
}

@media (max-width: 1100px) {
.cat-facsimile-grid {
    grid-template-columns: repeat(3, minmax(0, 1fr));
  }
}

@media (max-width: 760px) {
.cat-facsimile-grid {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }
.cat-facsimile-grid img {
    height: 280px;
  }
}

/* Portada en móvil: hero a pantalla casi completa con foto real (castillo de
   Salvatierra de Tormes) y el resto de la página se recorre con un pequeño
   efecto de «encajado» por sección. Autorizado 2026-08-13; foto elegida por
   nitidez y ausencia de marca de agua frente a otras candidatas del archivo.
   Alcance deliberadamente limitado a la portada y a las páginas narrativas
   de destacados (ver clase .cat-body--snap añadida solo en esas plantillas):
   nunca se aplica a fichas, listados ni a Qué es ARCA. */
@media (max-width: 900px) {
/* El sangrado completo NO se hace con márgenes negativos ni con 50vw:
     `vw` incluye el ancho de la barra de desplazamiento, así que el hero
     se salía 4px por cada lado y provocaba desbordamiento horizontal
     (medido en vivo: hero de -4px a 316px sobre un área útil de 0-312px).
     En su lugar se quita el padding lateral de .cat-main y se devuelve a
     cada hijo que no sea el hero. Así no depende de ningún cálculo. */
.cat-body--inmersiva .cat-main {
    padding-top: 0;
    padding-inline: 0;
  }
/* Recorrido por secciones: cada bloque principal se ancla al borde
     superior de la pantalla al hacer scroll, sin obligar (proximity, no
     mandatory) a quedar atrapado en un bloque más alto que la pantalla. */
.cat-body--snap .cat-main {
    scroll-snap-type: y proximity;
    scroll-padding-top: 76px;
  }
.cat-editorial-header {
    margin-bottom: 2rem;
    padding-bottom: 1.5rem;
  }
}

.leaflet-control-layers,
.leaflet-bar a { font-family: var(--cat-sans); }

.cat-record-fund { margin-top: 2rem; padding-top: 1rem; border-top: 1px solid #d6c9b5; color: #594b3d; }

/* El pie es una fila flex; la licencia se coloca como banda completa debajo
   para que no compita por espacio con los enlaces (anadido 2026-08-12). */
.cat-footer { flex-wrap: wrap; }

.cat-footer__license {
  flex-basis: 100%;
  max-width: none;
  padding-top: .8rem;
  border-top: 1px solid rgb(231 238 240 / 22%);
  color: #c8d6db;
  font-size: .74rem;
  line-height: 1.55;
}

/* El nombre del fondo va destacado dentro del párrafo de licencia: es la
   atribución que la licencia CC BY-NC exige citar. */
.cat-footer__license strong {
  color: #f0c76c;
}

/* Enlaces de accion "a pelo" (texto suelto sin ningun tratamiento visual)
   sustituidos por una tarjeta de texto, pensada para la columna lateral de
   .cat-page-intro--split. Capturado en pantalla real, 23-ago-2026.

   Sin iconos (decision expresa del propietario, 23-ago-2026: nada de
   emoji/iconos decorativos en la interfaz de ARCA -- ver memoria de
   feedback). Los selectores de color van cualificados con
   ".cat-page-intro .cat-action-chip ..." (3 clases) a proposito: la regla
   general ".cat-page-intro a:not(.cat-button)" (2 clases + 1 pseudo-clase)
   tiene mas especificidad que un simple ".cat-action-chip__label" (1
   clase) y ganaba el cascade, dejando el texto del botón oscuro sobre
   fondo oscuro -- contraste roto, detectado en pantalla real. */
.cat-action-chips {
  display: grid;
  gap: .9rem;
  width: 100%;
}

.cat-action-chips--inline {
  margin-top: 1.3rem;
  max-width: 26rem;
}

.cat-action-chip {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 1rem;
  padding: 1.05rem 1.3rem;
  border: 1px solid var(--cat-line);
  background: var(--cat-surface);
  text-decoration: none;
  transition: transform .15s ease, box-shadow .15s ease, background .15s ease;
}

.cat-action-chip:hover,
.cat-action-chip:focus-visible {
  transform: translateY(-2px);
  box-shadow: 0 8px 18px rgb(20 63 77 / 12%);
  background: #f5eee1;
}

.cat-action-chip:hover .cat-action-chip__arrow,
.cat-action-chip:focus-visible .cat-action-chip__arrow { transform: translateX(3px); }

.cat-action-chip--primary { background: var(--cat-blue-deep); }

.cat-action-chip--primary:hover,
.cat-action-chip--primary:focus-visible { background: #204a5f; }

@media (prefers-reduced-motion: reduce) {
.cat-action-chip, .cat-action-chip__arrow { transition: none; }
}

@media (prefers-reduced-motion: reduce) {
.cat-action-chip { transition: none; }
}

.cat-data-hero > div {
  max-width: none;
}

.cat-data-jury { margin: 0 0 1.25rem; padding: clamp(1.25rem, 3vw, 2.5rem); border-top: 4px solid var(--cat-blue-deep); background: #eef4f3; }

.cat-data-jury header { max-width: 52rem; }

.cat-data-jury h2 { margin: .25rem 0 1.35rem; font-size: clamp(1.8rem, 3.5vw, 3rem); }

.cat-data-jury > div { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 1.25rem; }

.cat-data-jury article { padding-right: 1.25rem; border-right: 1px solid #bbcbc9; }

.cat-data-jury article:last-child { padding-right: 0; border-right: 0; }

.cat-data-jury small { color: var(--cat-red-deep); font: 800 .7rem/1.4 var(--cat-sans); letter-spacing: .08em; text-transform: uppercase; }

.cat-data-jury h3 { margin: .4rem 0 .5rem; font-size: var(--cat2-text-3); }

.cat-data-jury p { margin: 0; color: var(--cat-ink-soft); line-height: 1.55; }

.cat-data-jury__link { margin: 1.25rem 0 0; font-weight: 600; }

@media (max-width: 800px) {
.cat-data-jury article { padding: 0 0 1rem; border-right: 0; border-bottom: 1px solid #bbcbc9; }
.cat-data-jury article:last-child { padding-bottom: 0; border-bottom: 0; }
}

/* Datos abiertos: refuerzo de mensaje diferencial, resultados del piloto,
   caso demostrador de Salvatierra, leyenda de tipos de dato, estados del
   registro y bloques de licencia (revisión agosto 2026). */
.cat-data-hero__claim {
  max-width: 40ch;
  margin: .6rem 0 0;
  color: var(--cat-red-deep);
  font: 800 1.05rem/1.4 var(--cat-serif);
}

.cat-data-hero__pilot {
  max-width: 46ch;
  margin: .5rem 0 0;
  color: #e4ebef;
  font-size: .9rem;
  line-height: 1.55;
}

.cat-data-pilot,
.cat-data-showcase {
  margin: 0 0 2.5rem;
  padding: clamp(1.25rem, 3vw, 2.5rem);
  border: 1px solid var(--cat-line);
  background: #fbf8f1;
}

.cat-data-pilot header,
.cat-data-showcase header { max-width: 52rem; }

.cat-data-pilot h2,
.cat-data-showcase h2 { margin: .25rem 0 1.25rem; font-size: clamp(1.6rem, 3vw, 2.4rem); }

.cat-data-pilot dl,
.cat-data-showcase dl {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(180px, 1fr));
  gap: 1px;
  margin: 0 0 1rem;
  background: var(--cat-line);
  border: 1px solid var(--cat-line);
}

.cat-data-pilot dl div,
.cat-data-showcase dl div { padding: 1.1rem 1.25rem; background: #fffdf8; }

.cat-data-pilot dt,
.cat-data-showcase dt { font: 2.1rem var(--cat-serif); color: var(--cat-red); line-height: 1; }

.cat-data-pilot dt.cat-data-pilot__text,
.cat-data-showcase dt.cat-data-pilot__text { font-size: 1.15rem; line-height: 1.3; }

.cat-data-pilot dd,
.cat-data-showcase dd { margin: .4rem 0 0; color: var(--cat-ink-soft); font-size: .85rem; line-height: 1.35; }

.cat-data-pilot > p { max-width: 60rem; margin: 0; color: var(--cat-ink-soft); }

.cat-data-showcase > p:not(.cat-data-pilot__text) { max-width: 60rem; margin: 0 0 1.25rem; color: var(--cat-ink-soft); line-height: 1.55; }

.cat-data-wfs .cat-text-link { display: inline-block; margin-top: .5rem; }

.cat-data-legend {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));
  gap: .75rem;
  margin: .9rem 0 0;
  padding: 0;
  list-style: none;
}

.cat-data-legend li { padding: .7rem .85rem; border-left: 3px solid var(--cat-blue-deep); background: rgba(255, 253, 248, .6); }

.cat-data-legend strong { display: block; margin-bottom: .2rem; color: var(--cat-ink); }

.cat-data-legend span { display: block; color: var(--cat-ink-soft); font-size: .85rem; line-height: 1.4; }

.cat-status-badge {
  display: inline-block;
  padding: .25rem .6rem;
  border: 1px solid rgb(255 255 255 / 45%);
  color: #fff;
  font: 800 .68rem/1.3 var(--cat-sans);
  letter-spacing: .06em;
  text-transform: uppercase;
  white-space: nowrap;
}

.cat-status-badge--integrado { background: #2f6b4f; border-color: #2f6b4f; }

.cat-status-badge--servicio_base { background: #4a5d75; border-color: #4a5d75; }

.cat-status-badge--pendiente { background: #9f2234; border-color: #9f2234; }

.cat-data-flow {
  max-width: 60rem;
  margin: .9rem 0 0;
  padding: .7rem .9rem;
  border: 1px dashed #c9922f;
  color: #664707;
  font-weight: 700;
}

.cat-data-license-types { display: grid; gap: 1rem; margin: 0 0 1rem; }

.cat-data-license-types dt { color: var(--cat-ink); font-weight: 800; }

.cat-data-license-types dd { margin: .25rem 0 0; color: var(--cat-ink-soft); line-height: 1.5; }

.cat-data-closing {
  max-width: 60rem;
  margin: 2.5rem auto 0;
  padding-top: 1.5rem;
  border-top: 1px solid var(--cat-line);
  color: var(--cat-ink-soft);
  font: 1.1rem/1.55 var(--cat-serif);
  text-align: center;
}

@media (max-width: 800px) {
.cat-data-pilot dl, .cat-data-showcase dl { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}

@media (max-width: 520px) {
.cat-data-pilot dl, .cat-data-showcase dl { grid-template-columns: 1fr; }
}

/* Página de contacto: tarjeta con el logo del fondo familiar (visible a
   propósito -- no reutiliza .cat-hero__marca porque esa clase está
   apagada en todo el sitio desde el 14-ago-2026) y una figura decorativa
   de cierre. */
.cat-contact-card {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 2rem;
  margin-bottom: 2.4rem;
  padding: clamp(1.4rem, 4vw, 2.2rem);
  background: #efe8dc;
  border-top: 4px solid var(--cat-red);
}

.cat-contact-card__logo {
  width: 200px;
  max-width: 100%;
  height: auto;
}

.cat-contact-card__email a {
  font: 650 1.4rem var(--cat-serif);
  color: var(--cat-blue-deep);
  text-decoration: none;
}

.cat-contact-card__email a:hover {
  text-decoration: underline;
}

.cat-contact-figure {
  margin: 2.4rem 0 0;
}

.cat-contact-figure img {
  width: 100%;
  max-height: 320px;
  object-fit: cover;
  display: block;
}

.cat-contact-figure figcaption {
  margin-top: .6rem;
  color: var(--cat-ink-soft);
  font-size: .9rem;
}

@media (max-width: 560px) {
.cat-contact-card { flex-direction: column; align-items: center; text-align: center; }
.cat-contact-card__email { max-width: 100%; margin-inline: auto; }
.cat-contact-card__email a { display: block; font-size: clamp(1.12rem, 6vw, 1.4rem); overflow-wrap: anywhere; word-break: break-word; }
}

