/* ==========================================================================
   UTRACUN — Base: reset, tipografía, grid editorial y utilidades
   ========================================================================== */

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

html {
  -webkit-text-size-adjust: 100%;
  scroll-behavior: smooth;
  scroll-padding-top: 7rem;
  /* Safari iOS no siempre respeta overflow-x:hidden puesto sólo en body
     para frenar el scroll horizontal de la página: hay que ponerlo también
     en html. Es el resguardo; la causa real del desborde se corrige en el
     grid del masthead (componentes.css). */
  overflow-x: hidden;
}

body {
  margin: 0;
  background: var(--fondo);
  color: var(--texto);
  font-family: var(--f-ui);
  font-size: var(--t-base);
  line-height: var(--lh-normal);
  font-feature-settings: 'kern' 1;
  text-rendering: optimizeLegibility;
  -webkit-font-smoothing: antialiased;
  overflow-x: hidden;
  transition: background-color var(--ms-medio) var(--ease-suave),
              color var(--ms-medio) var(--ease-suave);
}

img, picture, video, canvas, svg { display: block; max-width: 100%; }
img { height: auto; }
input, button, textarea, select { font: inherit; color: inherit; }
button { cursor: pointer; }
p, h1, h2, h3, h4, h5, h6 { overflow-wrap: break-word; }
ul, ol { margin: 0; padding: 0; }
figure { margin: 0; }

a {
  color: inherit;
  text-decoration: none;
  transition: color var(--ms-rapido) var(--ease-suave);
}

/* Foco visible sólo por teclado: no contamina el clic con mouse */
:focus-visible {
  outline: 2px solid var(--c-azul-per);
  outline-offset: 3px;
  border-radius: var(--r-1);
}

::selection { background: var(--c-rojo); color: #fff; }

@media (prefers-reduced-motion: reduce) {
  html { scroll-behavior: auto; }
  *, *::before, *::after {
    animation-duration: 0.01ms !important;
    animation-iteration-count: 1 !important;
    transition-duration: 0.01ms !important;
  }
}

/* ---------------------------------------------------------------- TITULARES
   Playfair 900 con tracking negativo: es lo que da el aire de gran
   cabecera internacional. El ajuste óptico compensa el peso extremo. */
.titular,
h1.titular, h2.titular, h3.titular {
  font-family: var(--f-display);
  font-weight: 900;
  line-height: var(--lh-titular);
  letter-spacing: -0.022em;
  margin: 0;
  color: var(--texto);
  text-wrap: balance;
}

.titular--xxl { font-size: var(--t-5xl); line-height: var(--lh-tight); letter-spacing: -0.032em; }
.titular--xl  { font-size: var(--t-4xl); line-height: var(--lh-tight); letter-spacing: -0.028em; }
.titular--l   { font-size: var(--t-3xl); }
.titular--m   { font-size: var(--t-2xl); }
.titular--s   { font-size: var(--t-xl); letter-spacing: -0.016em; }
.titular--xs  { font-size: var(--t-lg); letter-spacing: -0.012em; }

.titular a:hover { color: var(--acento); }

/* Titular alterno en sans: para módulos de servicio (agenda, directorio),
   donde el serif competiría con el contenido informativo. */
.titular-ui {
  font-family: var(--f-ui);
  font-weight: 800;
  letter-spacing: -0.02em;
  line-height: var(--lh-snug);
  margin: 0;
}

/* ------------------------------------------------------------------ BAJADA */
.bajada {
  font-family: var(--f-editorial);
  font-size: var(--t-lg);
  font-weight: 400;
  line-height: 1.45;
  color: var(--texto-2);
  margin: 0;
  text-wrap: pretty;
}

/* ------------------------------------------------------------------ KICKER
   Etiqueta de sección. La marca de 3px a la izquierda hereda el color de
   sección vía --color-seccion, definido por el modificador .es-*.       */
.kicker {
  display: inline-flex;
  align-items: center;
  gap: var(--e-2);
  font-family: var(--f-ui);
  font-size: var(--t-3xs);
  font-weight: 700;
  letter-spacing: var(--tr-etiqueta);
  text-transform: uppercase;
  color: var(--color-seccion, var(--acento));
  line-height: 1;
}

.kicker::before {
  content: '';
  width: 3px;
  height: 0.85em;
  background: currentColor;
  flex: none;
}

.kicker--sin-marca::before { display: none; }

/* Asignación de color por sección — se aplica al contenedor de la pieza */
.es-noticias      { --color-seccion: var(--s-noticias); }
.es-comunicados   { --color-seccion: var(--s-comunicados); }
.es-periodico     { --color-seccion: var(--s-periodico); }
.es-eventos       { --color-seccion: var(--s-eventos); }
.es-capacitacion  { --color-seccion: var(--s-capacitacion); }
.es-documentos    { --color-seccion: var(--s-documentos); }
.es-deportes      { --color-seccion: var(--s-deportes); }
.es-multimedia    { --color-seccion: var(--s-multimedia); }
.es-salones       { --color-seccion: var(--s-salones); }
.es-directorio    { --color-seccion: var(--s-directorio); }
.es-asesoria      { --color-seccion: var(--s-asesoria); }

/* --------------------------------------------------------------- METADATOS */
.meta {
  font-family: var(--f-ui);
  font-size: var(--t-2xs);
  color: var(--texto-3);
  letter-spacing: 0.01em;
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: var(--e-2);
  line-height: 1.4;
}

.meta__sep { color: var(--linea-fuerte); }
.meta strong { color: var(--texto-2); font-weight: 600; }

/* ------------------------------------------------------------------- TEXTO */
.texto { color: var(--texto-2); font-size: var(--t-md); line-height: var(--lh-normal); margin: 0; }
.texto--sm { font-size: var(--t-sm); }
.texto--centro { text-align: center; }

/* =========================================================== LAYOUT / GRID */

.contenedor {
  width: 100%;
  max-width: var(--ancho-max);
  margin-inline: auto;
  padding-inline: var(--marco);
}

.contenedor--estrecho { max-width: var(--ancho-estrecho); }
.contenedor--lectura { max-width: var(--ancho-lectura); }
.contenedor--ancho { max-width: 1600px; }

/* Grid editorial de 12 columnas: la base de toda la maquetación */
.rejilla {
  display: grid;
  grid-template-columns: repeat(12, minmax(0, 1fr));
  gap: var(--gutter);
}

@media (max-width: 900px) {
  .rejilla { grid-template-columns: repeat(6, minmax(0, 1fr)); }
}
@media (max-width: 560px) {
  .rejilla { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}

/* Helpers de tramo. En móvil todo colapsa a ancho completo. */
.col-2 { grid-column: span 2; } .col-3 { grid-column: span 3; }
.col-4 { grid-column: span 4; } .col-5 { grid-column: span 5; }
.col-6 { grid-column: span 6; } .col-7 { grid-column: span 7; }
.col-8 { grid-column: span 8; } .col-9 { grid-column: span 9; }
.col-12 { grid-column: 1 / -1; }

@media (max-width: 900px) {
  .col-2, .col-3, .col-4 { grid-column: span 3; }
  .col-5, .col-6, .col-7, .col-8, .col-9 { grid-column: 1 / -1; }
}
@media (max-width: 560px) {
  .col-2, .col-3, .col-4 { grid-column: 1 / -1; }
}

/* Filetes: el recurso de jerarquía más importante del diseño editorial.
   Sustituyen tarjetas y sombras, y densifican sin ensuciar. */
.filete { border-top: 1px solid var(--linea); }
.filete-fuerte { border-top: 2px solid var(--texto); }
.filete-acento { border-top: 3px solid var(--color-seccion, var(--acento)); }
.filete-inf { border-bottom: 1px solid var(--linea); }

/* Columna con filete vertical izquierdo, como en prensa impresa */
.col-filete { border-left: 1px solid var(--linea); padding-left: var(--gutter); }
@media (max-width: 900px) {
  .col-filete { border-left: 0; padding-left: 0; border-top: 1px solid var(--linea); padding-top: var(--e-6); }
}

.pila { display: flex; flex-direction: column; }
.pila--1 { gap: var(--e-1); } .pila--2 { gap: var(--e-2); }
.pila--3 { gap: var(--e-3); } .pila--4 { gap: var(--e-4); }
.pila--5 { gap: var(--e-5); } .pila--6 { gap: var(--e-6); }
.pila--8 { gap: var(--e-8); } .pila--10 { gap: var(--e-10); }

.fila { display: flex; align-items: center; gap: var(--e-3); flex-wrap: wrap; }
.fila--entre { justify-content: space-between; }
.fila--fin { justify-content: flex-end; }
.fila--centro { justify-content: center; }
.fila--arriba { align-items: flex-start; }
.fila--sin-salto { flex-wrap: nowrap; }
.crecer { flex: 1 1 auto; min-width: 0; }

.seccion { padding-block: clamp(2.5rem, 5vw, 4.5rem); }
.seccion--compacta { padding-block: clamp(1.75rem, 3vw, 2.75rem); }
.seccion--alterna { background: var(--fondo-alterno); }
.seccion--tinta { background: var(--c-tinta); color: #fff; }
.seccion--tinta .titular, .seccion--tinta .titular-ui { color: #fff; }
.seccion--tinta .texto, .seccion--tinta .bajada { color: rgba(255, 255, 255, 0.72); }
.seccion--tinta .meta { color: rgba(255, 255, 255, 0.55); }

/* ----------------------------------------------------- CABEZA DE SECCIÓN
   Regla superior gruesa + título: la firma visual de cada bloque.     */
.cabeza-seccion {
  display: flex;
  align-items: flex-end;
  justify-content: space-between;
  gap: var(--e-4);
  padding-top: var(--e-3);
  border-top: 3px solid var(--color-seccion, var(--texto));
  margin-bottom: var(--e-6);
  flex-wrap: wrap;
}

.cabeza-seccion__titulo {
  font-family: var(--f-ui);
  font-size: var(--t-sm);
  font-weight: 800;
  letter-spacing: var(--tr-etiqueta);
  text-transform: uppercase;
  margin: 0;
  color: var(--texto);
}

.cabeza-seccion__nota { font-size: var(--t-2xs); color: var(--texto-3); }

.enlace-mas {
  font-family: var(--f-ui);
  font-size: var(--t-2xs);
  font-weight: 700;
  letter-spacing: 0.06em;
  text-transform: uppercase;
  color: var(--color-seccion, var(--acento));
  display: inline-flex;
  align-items: center;
  gap: var(--e-2);
  white-space: nowrap;
}
.enlace-mas svg { transition: transform var(--ms-rapido) var(--ease-suave); }
.enlace-mas:hover svg { transform: translateX(3px); }

/* ------------------------------------------------------------- UTILIDADES */
.solo-lectores {
  position: absolute; width: 1px; height: 1px; padding: 0; margin: -1px;
  overflow: hidden; clip: rect(0, 0, 0, 0); white-space: nowrap; border: 0;
}

.salto-contenido {
  position: absolute; top: -100%; left: var(--e-4); z-index: var(--z-aviso);
  background: var(--c-tinta); color: #fff; padding: var(--e-3) var(--e-5);
  font-size: var(--t-sm); font-weight: 700; border-radius: 0 0 var(--r-3) var(--r-3);
}
.salto-contenido:focus { top: 0; }

.oculto { display: none !important; }
.centro-texto { text-align: center; }
.sin-margen { margin: 0 !important; }
.max-lectura { max-width: var(--ancho-lectura); }
.mx-auto { margin-inline: auto; }

/* Recorte de líneas: indispensable para que las rejillas no se desalineen
   cuando el editor escribe titulares de longitud imprevisible. */
.lineas-1, .lineas-2, .lineas-3, .lineas-4 {
  display: -webkit-box; -webkit-box-orient: vertical; overflow: hidden;
}
.lineas-1 { -webkit-line-clamp: 1; }
.lineas-2 { -webkit-line-clamp: 2; }
.lineas-3 { -webkit-line-clamp: 3; }
.lineas-4 { -webkit-line-clamp: 4; }

@media print {
  .cabecera-sitio, .pie-sitio, .barra-progreso, .no-imprimir { display: none !important; }
  body { background: #fff; color: #000; }
  a { text-decoration: underline; }
}
