/*
  Fundación Alcanza una Beca — hoja de estilo del sitio (autocontenida, sin frameworks).
  Registro visual: fusión GTP + Apple + LinkedIn con sello editorial propio.
  · Del Global Teacher Prize: marco azul marino, banda cálida crema-oro del hero,
    fotografía protagonista y oro ceremonial.
  · De Apple: titulares display en sans pesada con tracking negativo, espacio generoso,
    separación por aire (sin filetes entre secciones) y UN solo acento de acción.
  · De LinkedIn: lienzo gris cálido (--card) con módulos-tarjeta blancos, botones
    píldora, retratos circulares y chips de confianza.
  · Sello propio: la serif queda reservada a cifras, firmas, citas, pies de foto y
    titulares de prensa; numerales romanos en eyebrows; marcador dorado (.hl);
    carmesí como único color de acción.

  GOBIERNO DE IDENTIDAD (reglas del sistema):
  · Color de acción: carmesí sobre superficies claras. Oxford nunca es color de acción.
  · Dorado: honor y cifras sobre superficies oscuras; sobre claro solo como marca
    gráfica (--gold-deep), banda del hero o subrayado-marcador (.hl). Nunca #e9b949
    como texto sobre claro.
  · Radios: --r-pill botones y chips · --r-l módulos-tarjeta y fotografía principal ·
    --r-m módulos internos · --r-s controles menores. Esquina viva reservada al
    crest y al wordmark.
  · Sombras: escala --shadow-1/2/3 (base oxford, suaves); negro solo sobre fotografía.
  · Versalitas (uppercase): un solo nivel — eyebrows, dt de fichas y rótulos de bloque,
    nunca por debajo de --fs-min. Botones y enlaces de acción van en sentence case.
  · Secciones: separadas por aire sobre el lienzo, nunca por filetes; los hairlines
    --rule viven solo dentro de los módulos.
  · Bandas oscuras: gradiente oxford→oxford-deep + --r-l (módulos navy tipo GTP).
*/

@font-face {
  font-family: 'Source Serif 4';
  font-style: normal;
  font-weight: 400 700;
  font-display: swap;
  src: url('/fonts/source-serif.woff2') format('woff2');
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
@font-face {
  font-family: 'Source Serif 4';
  font-style: italic;
  font-weight: 400; /* archivo estático de peso único: declarar 400 permite sintetizar pesos mayores */
  font-display: swap;
  src: url('/fonts/source-serif-italic.woff2') format('woff2');
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
@font-face {
  font-family: 'Public Sans';
  font-style: normal;
  font-weight: 100 900;
  font-display: swap;
  src: url('/fonts/public-sans.woff2') format('woff2');
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}

:root {
  /* Superficies y tinta */
  --card: #f3f1ea;      /* lienzo de página y tintes internos */
  --ink: #191b20;
  --muted: #575c66;
  --oxford: #152641;
  --oxford-deep: #0e1a2e;
  --oxford-deep-rgb: 14, 26, 46; /* para superficies de vidrio con alfa */
  --crimson: #9a2233;
  --crimson-deep: #7c1a28;
  --rule: #ddd9d0;      /* hairlines decorativos dentro de módulos */
  --rule-dark: #b7b2a6; /* hairlines de mayor peso, nunca borde de control */
  --rule-strong: #8a8578; /* borde de controles: ≥3:1 sobre blanco y lienzo */
  /* Dorado ceremonial */
  --gold: #e9b949;        /* acento sobre superficies oscuras (8.3:1 sobre oxford) */
  --gold-deep: #b07d1e;   /* marcas gráficas doradas sobre claro (≥3:1) */
  --gold-ink: #8a6710;    /* texto dorado sobre claro (≥4.5:1) */
  --gold-on: #3a2c07;     /* tinta sobre fondo dorado */
  --gold-rgb: 233, 185, 73;
  /* Rampa de blancos sobre superficies oscuras */
  --ink-inv: rgba(255, 255, 255, 0.92);
  --muted-inv: rgba(255, 255, 255, 0.72);
  --faint-inv: rgba(255, 255, 255, 0.55);
  --line-inv: rgba(255, 255, 255, 0.16);
  --line-inv-strong: rgba(255, 255, 255, 0.35);
  /* Geometría */
  --r-s: 8px;
  --r-m: 12px;
  --r-l: 16px;
  --r-pill: 999px;
  /* Elevación (base oxford, suave; negro solo sobre fotografía) */
  --shadow-1: 0 1px 2px rgba(21, 38, 65, 0.05), 0 6px 16px -10px rgba(21, 38, 65, 0.14);
  --shadow-2: 0 2px 4px rgba(21, 38, 65, 0.05), 0 14px 32px -18px rgba(21, 38, 65, 0.22);
  --shadow-3: 0 24px 54px -24px rgba(21, 38, 65, 0.42);
  --shadow-flag: 0 4px 10px -4px rgba(0, 0, 0, 0.5);
  /* Tipografía */
  --serif: "Source Serif 4", Georgia, "Times New Roman", serif;
  --sans: "Public Sans", -apple-system, "Segoe UI", Arial, sans-serif;
  --fs-min: 0.7rem;      /* suelo tipográfico: nada informativo por debajo */
  --wrap: 1080px;
}

* { box-sizing: border-box; }
@media (prefers-reduced-motion: no-preference) { html { scroll-behavior: smooth; } }
/* El masthead pegajoso tapa ~81px: los saltos de ancla compensan vía scroll-padding.
   En móvil sin JS (p. ej. /evidencia) el masthead crece a dos filas. */
html { scroll-padding-top: 5.4rem; }
@media (max-width: 800px) { html:not(.js-nav) { scroll-padding-top: 9.5rem; } }
body {
  margin: 0;
  background: var(--card);
  color: var(--ink);
  font-family: var(--sans);
  font-size: 16.5px;
  line-height: 1.7;
  -webkit-font-smoothing: antialiased;
}
::selection { background: rgba(var(--gold-rgb), 0.35); }

/* Titulares display en sans pesada (Apple/GTP); la serif queda para cifras, firmas y prensa */
h1, h2, h3 { font-family: var(--sans); color: var(--oxford); line-height: 1.12; margin: 0 0 0.7rem; letter-spacing: -0.02em; }
h2 { font-size: clamp(1.7rem, 1.3rem + 1.6vw, 2.4rem); font-weight: 800; }
h3 { font-size: 1.08rem; font-weight: 700; margin-top: 2rem; }
p { margin: 0 0 1rem; max-width: 68ch; }
a { color: var(--oxford); text-decoration-color: var(--muted); text-underline-offset: 3px; }
a:hover { color: var(--crimson); text-decoration-color: currentColor; }
address { font-style: normal; }
ul, ol { margin: 0 0 1rem; }

/* Subrayado-marcador dorado: la palabra clave de los titulares en secciones claras */
.hl {
  font-style: normal;
  background: linear-gradient(transparent 60%, rgba(var(--gold-rgb), 0.4) 60%);
  padding: 0 0.06em;
}

/* Foco visible: carmesí sobre claro, dorado sobre las superficies oscuras del sistema */
:focus-visible { outline: 2px solid var(--crimson); outline-offset: 3px; }
.donate :focus-visible,
.ev-band :focus-visible,
.arch-band :focus-visible,
.site-foot :focus-visible,
.transp-cta :focus-visible,
.microbar :focus-visible,
.skip-link:focus-visible { outline-color: var(--gold); }

.wrap { max-width: var(--wrap); margin: 0 auto; padding-left: clamp(1rem, 4vw, 2rem); padding-right: clamp(1rem, 4vw, 2rem); }

.skip-link {
  position: absolute; left: -9999px; top: 0;
  background: var(--oxford); color: #fff; padding: 0.6rem 1rem; z-index: 100;
}
.skip-link:focus { left: 0; }

/* ---- Sistema de botones (único para todo el sitio) ---- */
.btn, .mast-nav a.mast-cta, .transp-cta-btn, .gc-btn {
  display: inline-flex; align-items: center; justify-content: center; gap: 0.45rem;
  min-height: 44px; padding: 0.6rem 1.45rem; border-radius: var(--r-pill);
  font-family: var(--sans); font-size: 0.88rem; font-weight: 600; letter-spacing: 0.01em;
  line-height: 1.25; text-decoration: none; text-align: center;
  border: 1.5px solid transparent; cursor: pointer;
  transition: background 0.15s ease, color 0.15s ease, border-color 0.15s ease, transform 0.15s ease;
}
.btn-solid, .mast-nav a.mast-cta {
  background: var(--crimson); border-color: var(--crimson); color: #fff;
}
.btn-solid:hover, .mast-nav a.mast-cta:hover {
  background: var(--crimson-deep); border-color: var(--crimson-deep); color: #fff; transform: translateY(-1px);
}
.btn-ghost, .gc-btn {
  background: #fff; border-color: var(--rule-strong); color: var(--oxford);
}
.btn-ghost:hover, .gc-btn:hover {
  border-color: var(--oxford); background: var(--card); color: var(--oxford);
}
.btn-inverse, .transp-cta-btn {
  background: transparent; border-color: var(--line-inv-strong); color: #fff;
}
.btn-inverse:hover, .transp-cta-btn:hover {
  background: #fff; border-color: #fff; color: var(--oxford); transform: translateY(-1px);
}

/* Enlace de acción (nivel terciario, sentence case) */
.lc-link, .tc-link, .nfx-link {
  font-size: 0.85rem; font-weight: 600; letter-spacing: 0.01em; text-decoration: none;
}
.lc-link span, .tc-link span, .nfx-link span, .nfx-more-link span {
  display: inline-block; transition: transform 0.15s ease;
}
.lc-link:hover span, .tc-link:hover span, .nfx-link:hover span,
.nfx-more:hover .nfx-more-link span { transform: translateX(4px); }

/* ---- Barra superior: dato vivo ---- */
.microbar { background: var(--oxford-deep); color: var(--muted-inv); }
.microbar-row {
  display: flex; justify-content: space-between; gap: 1rem;
  font-size: var(--fs-min); letter-spacing: 0.14em; text-transform: uppercase;
  padding-top: 0.45rem; padding-bottom: 0.45rem;
}
.micro-star { color: var(--gold); }

/* ---- Masthead: barra pegajosa translúcida (Apple) ---- */
.masthead {
  position: sticky; top: 0;
  background: rgba(255, 255, 255, 0.9);
  -webkit-backdrop-filter: saturate(180%) blur(14px);
  backdrop-filter: saturate(180%) blur(14px);
  border-bottom: 1px solid var(--rule);
}
@supports not (backdrop-filter: blur(1px)) { .masthead { background: #fff; } }
.masthead-row {
  display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between;
  gap: 0.9rem; padding-top: 1.1rem; padding-bottom: 1.1rem;
}
.wordmark { display: flex; align-items: center; gap: 0.8rem; text-decoration: none; }
.crest {
  display: flex; align-items: center; justify-content: center;
  width: 46px; height: 46px; border: 1.5px solid var(--oxford);
  font-family: var(--serif); font-weight: 700; font-size: 1.15rem; color: var(--oxford);
}
.wordmark-text { display: flex; flex-direction: column; line-height: 1.25; }
.wordmark-text strong { font-family: var(--serif); font-size: 1.2rem; color: var(--oxford); }
.wordmark-text small { font-size: var(--fs-min); letter-spacing: 0.12em; text-transform: uppercase; color: var(--muted); }
.mast-nav { display: flex; flex-wrap: wrap; align-items: center; gap: 1.3rem; }
.mast-nav a {
  font-size: 0.83rem; font-weight: 500; letter-spacing: 0.04em;
  text-decoration: none; color: var(--ink);
}
.mast-nav a:hover { color: var(--crimson); }
.mast-nav a.mast-cta { font-size: 0.85rem; letter-spacing: 0.01em; padding: 0.45rem 1.2rem; }

/* Hamburguesa del masthead (solo móvil, alineada con el logo) */
.masthead { z-index: 60; }
.mast-toggle { display: none; }
@media (max-width: 800px) {
  html.js-nav .mast-toggle {
    display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 5px;
    width: 44px; height: 44px; flex-shrink: 0;
    background: transparent; border: 1.5px solid var(--oxford); border-radius: 50%; cursor: pointer;
  }
  .mt-bar { display: block; width: 18px; height: 2px; background: var(--oxford); border-radius: 2px; transition: transform 0.2s ease, opacity 0.2s ease; }
  .mast-toggle[aria-expanded="true"] .mt-bar:nth-child(1) { transform: translateY(7px) rotate(45deg); }
  .mast-toggle[aria-expanded="true"] .mt-bar:nth-child(2) { opacity: 0; }
  .mast-toggle[aria-expanded="true"] .mt-bar:nth-child(3) { transform: translateY(-7px) rotate(-45deg); }

  html.js-nav .mast-nav { display: none; }
  html.js-nav .mast-nav.open {
    display: flex; flex-direction: column; align-items: stretch; gap: 0;
    position: absolute; top: 100%; left: 0; right: 0; z-index: 65;
    background: #fff; border-bottom: 1px solid var(--rule);
    box-shadow: var(--shadow-3);
    padding: 0.3rem 1.4rem 1.2rem;
    animation: mastIn 0.2s ease;
  }
  html.js-nav .mast-nav.open a { padding: 0.85rem 0.2rem; border-bottom: 1px solid var(--rule); font-size: 0.95rem; }
  html.js-nav .mast-nav.open a.mast-cta {
    margin-top: 0.9rem; border-bottom: none; justify-content: center;
    border-radius: var(--r-pill); padding: 0.7rem;
  }
}
@keyframes mastIn { from { opacity: 0; transform: translateY(-6px); } to { opacity: 1; transform: none; } }
@media (prefers-reduced-motion: reduce) { html.js-nav .mast-nav.open { animation: none; } .mt-bar { transition: none; } }

/* ---- Portada: banda cálida crema-oro (GTP) ---- */
.hero-band {
  background: linear-gradient(180deg, #fdfcf8 0%, #faf3e0 62%, #f6ecd2 100%);
  border-bottom: 1px solid var(--rule);
}
.hero { padding-top: 3rem; padding-bottom: 3.2rem; }
.eyebrow {
  font-size: 0.72rem; letter-spacing: 0.16em; text-transform: uppercase;
  color: var(--crimson); font-weight: 600; margin-bottom: 1rem;
}
.eyebrow::before { content: ""; display: inline-block; width: 1.6rem; height: 1px; background: var(--crimson); vertical-align: middle; margin-right: 0.6rem; }
.hero h1 { font-size: clamp(2.5rem, 1.7rem + 3.4vw, 3.9rem); font-weight: 800; letter-spacing: -0.025em; max-width: 16ch; }
.slogan { font-family: var(--serif); font-style: italic; font-size: 1.25rem; color: var(--muted); max-width: 50ch; }

/* CTA primario del hero + ruta estudiante */
.hero-cta-row { display: flex; flex-wrap: wrap; align-items: center; gap: 1rem 1.4rem; margin: 1.4rem 0 0.4rem; }
.hero-student {
  font-size: 0.92rem; font-weight: 600; color: var(--oxford); text-decoration: none;
}
.hero-student strong { font-weight: 700; background: linear-gradient(transparent 60%, rgba(var(--gold-rgb), 0.4) 60%); padding: 0 0.06em; }
.hero-student:hover { color: var(--crimson); }
.hero-student span { display: inline-block; transition: transform 0.15s ease; }
.hero-student:hover span { transform: translateX(4px); }

/* ---- Reconocimientos: repisa de trofeos ---- */
.hero-recognitions { margin-top: 1.6rem; }
.rec-eyebrow {
  font-size: var(--fs-min); letter-spacing: 0.15em; text-transform: uppercase;
  color: var(--muted); font-weight: 600; margin: 0 0 0.8rem;
}
/* Barra de confianza: logos sin caja, en reposo desaturados (Apple) */
.rec-row {
  list-style: none; margin: 0; padding: 0;
  display: grid; grid-template-columns: repeat(3, 1fr); gap: 1rem;
  border-top: 1px solid rgba(var(--gold-rgb), 0.5); padding-top: 1.2rem;
}
.rec-item { display: flex; flex-direction: column; align-items: center; text-align: center; gap: 0.55rem; }
.rec-plate {
  height: 54px; flex-shrink: 0;
  display: flex; align-items: center; justify-content: center;
  filter: saturate(0.2) opacity(0.8);
  transition: filter 0.3s ease;
}
.rec-item:hover .rec-plate { filter: none; }
a.rec-plate { text-decoration: none; }
.rec-logo { max-width: 100%; max-height: 50px; width: auto; height: auto; object-fit: contain; display: block; }
.rec-text { display: flex; flex-direction: column; gap: 0.1rem; line-height: 1.3; }
.rec-text strong { font-family: var(--sans); font-size: 0.86rem; color: var(--oxford); font-weight: 700; letter-spacing: -0.01em; }
.rec-text span { font-size: var(--fs-min); color: var(--muted); }
@media (max-width: 440px) {
  .rec-row { grid-template-columns: 1fr; gap: 0.9rem; }
  .rec-item { flex-direction: row; text-align: left; gap: 0.9rem; }
  .rec-plate { width: 96px; height: 60px; flex-shrink: 0; }
  .rec-logo { max-height: 40px; }
}

/* ---- Hero de dos columnas (texto + imagen) ---- */
.hero-grid { display: grid; grid-template-columns: 1.05fr 0.95fr; gap: clamp(1.6rem, 4vw, 3.4rem); align-items: center; }
.hero-text { min-width: 0; }
.hero-text .hero-desc { max-width: 46ch; }

/* Figura del hero: foto redondeada con insignia y estadística flotante en vidrio */
.hero-figure {
  position: relative; margin: 0; align-self: stretch;
  display: flex; flex-direction: column; justify-content: center;
}
.hero-figure img {
  position: relative; z-index: 1; width: 100%; height: auto; display: block;
  aspect-ratio: 4 / 5; object-fit: cover;
  border-radius: var(--r-l);
  box-shadow: var(--shadow-3);
}
.hero-badge, .transp-badge {
  position: absolute; z-index: 2;
  display: inline-flex; align-items: center; gap: 0.4rem;
  background: rgba(var(--oxford-deep-rgb), 0.85); color: #fff;
  -webkit-backdrop-filter: blur(8px); backdrop-filter: blur(8px);
  font-size: var(--fs-min); font-weight: 600; letter-spacing: 0.08em; text-transform: uppercase;
  padding: 0.45rem 0.95rem; border-radius: var(--r-pill); box-shadow: var(--shadow-flag);
}
.hero-badge { top: 0.9rem; left: 0.9rem; }
.hero-badge-star { color: var(--gold); font-size: 0.8rem; line-height: 1; }
.hero-stat {
  position: absolute; z-index: 2; left: -1.1rem; bottom: 1.2rem;
  display: flex; flex-direction: column; margin: 0;
  padding: 0.7rem 1.2rem 0.75rem;
  background: rgba(255, 255, 255, 0.92);
  -webkit-backdrop-filter: blur(10px); backdrop-filter: blur(10px);
  border-radius: var(--r-m); box-shadow: var(--shadow-2);
}
.hero-stat-num { font-family: var(--serif); font-weight: 700; font-size: 1.9rem; line-height: 1.1; color: var(--oxford); font-variant-numeric: tabular-nums; }
.hero-stat-cap { font-size: var(--fs-min); letter-spacing: 0.1em; text-transform: uppercase; color: var(--muted); font-weight: 600; }
@keyframes heroRise { from { opacity: 0; transform: translateY(16px); } to { opacity: 1; transform: none; } }
.hero-figure { animation: heroRise 0.7s cubic-bezier(0.2,0.7,0.2,1) 0.05s both; }
@media (prefers-reduced-motion: reduce) { .hero-figure { animation: none; } }

@media (max-width: 820px) {
  .hero-grid { grid-template-columns: 1fr; gap: 1.8rem; }
  .hero-figure { max-width: 460px; }
  .hero-figure img { aspect-ratio: 3 / 2; object-position: center 30%; }
  .hero-stat { left: 0.9rem; }
}

/* Cinta de datos: componente único de cifra (número serif arriba, versalita debajo) */
.fact-strip {
  display: grid; grid-template-columns: repeat(3, 1fr); gap: 1.2rem;
  padding: 1.4rem 0 0; margin: 2rem 0 0;
  border-top: 1px solid rgba(var(--gold-rgb), 0.5);
}
.fact-strip > div { display: flex; flex-direction: column-reverse; }
.fact-strip dt { font-size: var(--fs-min); letter-spacing: 0.13em; text-transform: uppercase; color: var(--muted); margin-top: 0.25rem; }
.fact-strip dd { margin: 0; font-family: var(--serif); font-size: 1.02rem; color: var(--oxford); font-variant-numeric: tabular-nums; }
@media (max-width: 860px) { .fact-strip { grid-template-columns: repeat(2, 1fr); } }
@media (max-width: 480px) { .fact-strip { grid-template-columns: 1fr; } }

/* ---- Transparencia financiera: banda blanca a ancho de página (segmento LinkedIn) ---- */
.transp-band {
  background: #fff;
  border-top: 1px solid var(--rule);
  border-bottom: 1px solid var(--rule);
  padding: clamp(2.6rem, 5vw, 4.2rem) 0;
  margin-bottom: 0;
}
.transp-grid { display: grid; grid-template-columns: minmax(0, 1fr) 320px; gap: clamp(1.8rem, 4vw, 3.4rem); align-items: start; }
@media (max-width: 840px) { .transp-grid { grid-template-columns: 1fr; } .transp-figure { max-width: 380px; } }
.transp-intro { font-size: 0.95rem; color: var(--muted); margin: 0 0 1.6rem; max-width: 58ch; }

/* Figura moderna: redondeada con insignia de vidrio (mismo registro que el hero) */
.transp-figure { position: relative; margin: 0; }
.transp-figure img {
  width: 100%; height: auto; display: block; aspect-ratio: 3 / 4; object-fit: cover; object-position: center 20%;
  border-radius: var(--r-l); box-shadow: var(--shadow-3);
}
.transp-badge { bottom: 0.9rem; left: 0.9rem; }

/* Chips de verificación (registro "cuenta verificada") */
.verify-row { list-style: none; margin: 0 0 1.7rem; padding: 0; display: flex; flex-wrap: wrap; gap: 0.55rem; }
.verify-chip {
  display: inline-flex; align-items: center; gap: 0.55rem;
  background: var(--card); border-radius: var(--r-pill);
  padding: 0.4rem 1rem 0.4rem 0.45rem;
  font-size: 0.82rem; font-weight: 600; color: var(--ink);
}
.vc-check {
  width: 24px; height: 24px; flex-shrink: 0; border-radius: 50%;
  background: var(--gold); color: var(--gold-on);
  font-size: 0.72rem; font-weight: 700;
  display: flex; align-items: center; justify-content: center;
}

/* Origen de los recursos: tarjetas compactas */
.src-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 0.9rem; margin-top: 0.4rem; }
@media (max-width: 860px) { .src-grid { grid-template-columns: 1fr; } }
.src-card { background: var(--card); border-radius: var(--r-l); padding: 1.15rem 1.25rem 1.2rem; }
.src-ico {
  width: 44px; height: 44px; border-radius: 50%;
  display: flex; align-items: center; justify-content: center;
  background: rgba(var(--gold-rgb), 0.18); border: 1.5px solid rgba(var(--gold-rgb), 0.6);
  color: var(--oxford); margin-bottom: 0.7rem;
}
.avatar-pile { display: flex; margin-bottom: 0.7rem; }
.avatar { width: 44px; height: 44px; border-radius: 50%; object-fit: cover; border: 2px solid #fff; display: block; }
.avatar + .avatar { margin-left: -12px; }
.src-title { font-size: 0.95rem; font-weight: 700; margin: 0 0 0.4rem; letter-spacing: -0.01em; }
.src-line { font-size: 0.85rem; font-weight: 600; color: var(--ink); margin: 0; }
.src-sub { font-size: 0.76rem; color: var(--muted); margin: 0 0 0.35rem; }

/* CTA de transparencia (módulo oscuro en columna: --r-m) */
.transp-cta {
  margin-top: 2.2rem;
  background: linear-gradient(180deg, var(--oxford) 0%, var(--oxford-deep) 100%);
  color: #fff; border-radius: var(--r-m);
  padding: 1.3rem clamp(1.2rem, 3vw, 2rem);
  display: flex; align-items: center; justify-content: space-between; gap: 1.4rem; flex-wrap: wrap;
  box-shadow: var(--shadow-3);
}
.transp-cta-text { min-width: 0; max-width: 62ch; }
.transp-cta-title { font-family: var(--serif); font-weight: 700; font-size: 1.15rem; margin: 0 0 0.25rem; color: #fff; }
.transp-cta-sub { font-size: 0.87rem; color: var(--muted-inv); margin: 0; }
.transp-cta-btn { flex-shrink: 0; }

/* ---- Revelado al hacer scroll (animación: no interfiere con las transiciones de hover) ---- */
html.js-reveal .reveal-up { opacity: 0; }
html.js-reveal .reveal-up.in {
  opacity: 1;
  /* backwards (no both): al terminar, la animación suelta el transform y el hover-lift vuelve a funcionar */
  animation: rvRise 0.55s cubic-bezier(0.2, 0.7, 0.2, 1) backwards;
  animation-delay: var(--rv-delay, 0ms);
}
@keyframes rvRise { from { opacity: 0; transform: translateY(18px); } to { opacity: 1; transform: none; } }
@media (prefers-reduced-motion: reduce) {
  html.js-reveal .reveal-up { opacity: 1 !important; }
  html.js-reveal .reveal-up.in { animation: none; }
}

/* ---- Cuerpo del documento ---- */
.layout { padding-top: 3rem; padding-bottom: 2.2rem; }
.content { min-width: 0; }
.index-title, .ficha-title {
  font-size: var(--fs-min); letter-spacing: 0.14em; text-transform: uppercase;
  color: var(--muted); margin: 0 0 0.6rem; font-weight: 600;
}
.index ol { list-style: none; padding: 0; margin: 0; }
.index li { border-top: 1px dotted var(--rule-dark); }
.index li:last-child { border-bottom: 1px dotted var(--rule-dark); }
.index a {
  display: flex; gap: 0.7rem; align-items: baseline;
  padding: 0.5rem 0.2rem; font-size: 0.85rem; text-decoration: none; color: var(--ink);
}
.index .num { font-family: var(--serif); font-size: 0.8rem; color: var(--muted); min-width: 1.5rem; }
.index a:hover { color: var(--crimson); }
.index a[aria-current="location"] { color: var(--crimson); box-shadow: inset 2px 0 0 var(--crimson); padding-left: 0.6rem; }
.index a[aria-current="location"] .num { color: var(--crimson); }

.ficha { background: var(--card); border: 1px solid var(--rule); padding: 1rem 1.1rem; }
.ficha-float { margin-top: 1.1rem; border-radius: var(--r-m); }
.ficha dl { margin: 0; }
.ficha dl div { padding: 0.45rem 0; border-bottom: 1px dotted var(--rule-dark); }
.ficha dl div:last-child { border-bottom: 0; }
.ficha dt { font-size: var(--fs-min); letter-spacing: 0.12em; text-transform: uppercase; color: var(--muted); }
.ficha dd { margin: 0; font-size: 0.83rem; font-variant-numeric: tabular-nums; color: var(--ink); word-break: break-all; }

/* ---- Navegación flotante (índice; solo escritorio — en móvil navega la hamburguesa) ---- */
.float-nav, .float-backdrop { display: none; }
html.js-nav .float-nav { display: block; }
@media (max-width: 800px) {
  html.js-nav .float-nav { display: none; }
  html.js-nav .float-backdrop { display: none !important; }
}
.float-nav-toggle {
  position: fixed; left: 16px; top: 50%; transform: translateY(-50%); z-index: 80;
  width: 50px; height: 50px; border-radius: 50%;
  background: var(--oxford); border: 1.5px solid rgba(var(--gold-rgb), 0.75); cursor: pointer;
  display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 5px;
  box-shadow: var(--shadow-2);
  transition: transform 0.15s ease, box-shadow 0.15s ease;
}
.float-nav-toggle:hover { transform: translateY(-50%) scale(1.06); box-shadow: var(--shadow-3); }
.fnt-bar { display: block; width: 18px; height: 2px; background: #fff; border-radius: 2px; transition: transform 0.2s ease, opacity 0.2s ease; }
.float-nav-toggle[aria-expanded="true"] .fnt-bar:nth-child(1) { transform: translateY(7px) rotate(45deg); }
.float-nav-toggle[aria-expanded="true"] .fnt-bar:nth-child(2) { opacity: 0; }
.float-nav-toggle[aria-expanded="true"] .fnt-bar:nth-child(3) { transform: translateY(-7px) rotate(-45deg); }

html.js-nav .float-backdrop:not([hidden]) {
  display: block; position: fixed; inset: 0; z-index: 78;
  background: rgba(21, 38, 65, 0.38);
}
.float-nav-panel {
  position: fixed; left: 82px; top: 50%; transform: translateY(-50%); z-index: 82;
  width: min(300px, calc(100vw - 100px)); max-height: 82vh; overflow-y: auto;
  background: #fff; border: 1px solid var(--rule); border-radius: var(--r-m);
  padding: 1.1rem 1.2rem; box-shadow: var(--shadow-3);
  animation: fnPanelIn 0.22s cubic-bezier(0.2, 0.7, 0.2, 1);
}
@keyframes fnPanelIn { from { opacity: 0; transform: translateY(-50%) translateX(-10px); } to { opacity: 1; transform: translateY(-50%); } }
@media (prefers-reduced-motion: reduce) { .float-nav-panel { animation: none; } .fnt-bar { transition: none; } }
@media print {
  .float-nav, .float-backdrop { display: none !important; }
  html.js-reveal .reveal-up { opacity: 1 !important; animation: none !important; }
}

/* ---- Secciones: separadas por aire sobre el lienzo (Apple) ---- */
.content section { padding-top: 0; margin-bottom: 4.2rem; }
.content section.donate, .content section.ev-band { padding-top: 2.2rem; }
.sec-eyebrow {
  font-size: var(--fs-min); letter-spacing: 0.15em; text-transform: uppercase;
  color: var(--muted); font-weight: 600; margin-bottom: 0.9rem;
}
.sec-eyebrow .num { font-family: var(--serif); color: var(--crimson); font-size: 0.95rem; margin-right: 0.5rem; letter-spacing: 0; }
.sec-eyebrow-inverse { color: var(--muted-inv); }
.sec-eyebrow-inverse .num { color: var(--gold); }

/* ---- Donaciones: banda oscura estándar ---- */
.donate {
  background: linear-gradient(180deg, var(--oxford) 0%, var(--oxford-deep) 100%);
  color: var(--ink-inv); border-radius: var(--r-l);
  padding: 2.2rem clamp(1.2rem, 3vw, 2.2rem) 2.2rem;
}
.donate h2 { color: #fff; }
.donate p { color: var(--ink-inv); }

/* Hub de conversión: opciones a la izquierda, panel de acción a la derecha */
.donate-lead { max-width: 58ch; }
.dc-perks { list-style: none; margin: 0.2rem 0 0.7rem; padding: 0; display: flex; flex-direction: column; gap: 0.3rem; }
.dc-perks li { font-size: 0.82rem; color: var(--ink); padding-left: 1.35rem; position: relative; }
.dc-perks li::before {
  content: "✓" / ""; position: absolute; left: 0; top: 0;
  width: 1rem; height: 1rem; border-radius: 50%;
  background: rgba(var(--gold-rgb), 0.22); color: var(--gold-ink);
  font-size: 0.62rem; font-weight: 700; display: flex; align-items: center; justify-content: center;
}

.don-hub { display: grid; grid-template-columns: 1.15fr 0.85fr; gap: 1.2rem; margin-top: 1.6rem; align-items: start; }
@media (max-width: 820px) { .don-hub { grid-template-columns: 1fr; } }

.don-opts { display: flex; flex-direction: column; gap: 0.7rem; }
.don-opt {
  display: grid; grid-template-columns: 44px 1fr auto; gap: 0.95rem; align-items: center;
  background: #fff; border-radius: var(--r-m); padding: 0.95rem 1.15rem;
  text-decoration: none; box-shadow: var(--shadow-1);
  border: 1.5px solid transparent;
  transition: transform 0.18s ease, border-color 0.18s ease, box-shadow 0.18s ease;
}
.don-opt:hover { transform: translateY(-2px); border-color: var(--gold); box-shadow: var(--shadow-2); }
.don-ico {
  width: 44px; height: 44px; border-radius: 50%;
  display: flex; align-items: center; justify-content: center;
  background: rgba(var(--gold-rgb), 0.18); border: 1.5px solid rgba(var(--gold-rgb), 0.6);
  color: var(--oxford);
}
.don-body { min-width: 0; display: flex; flex-direction: column; gap: 0.1rem; }
.don-title { font-weight: 700; font-size: 0.98rem; color: var(--oxford); letter-spacing: -0.01em; display: flex; align-items: center; gap: 0.5rem; flex-wrap: wrap; }
.don-flag {
  font-size: var(--fs-min); font-weight: 700; letter-spacing: 0.06em; text-transform: uppercase;
  background: var(--gold); color: var(--gold-on);
  padding: 0.1rem 0.6rem; border-radius: var(--r-pill);
}
.don-sub { font-size: 0.82rem; color: var(--muted); line-height: 1.45; }
.don-go { color: var(--crimson); font-size: 1.1rem; transition: transform 0.15s ease; }
.don-opt:hover .don-go { transform: translateX(4px); }

.don-panel {
  background: rgba(255, 255, 255, 0.06); border: 1px solid var(--line-inv); border-radius: var(--r-l);
  padding: 1.4rem 1.4rem 1.5rem;
  display: flex; flex-direction: column; gap: 0.7rem;
}
.don-kicker { font-size: var(--fs-min); letter-spacing: 0.15em; text-transform: uppercase; color: var(--gold); font-weight: 700; margin: 0; }
.don-panel .dc-perks { margin: 0; }
.don-panel .dc-perks li { color: var(--ink-inv); }
.don-panel .dc-perks li::before { background: rgba(var(--gold-rgb), 0.2); color: var(--gold); }
.don-cta { margin-top: 0.4rem; }
.don-inst-q { font-size: 0.8rem; color: var(--muted-inv); margin: 0.5rem 0 0; }
.don-cert { display: flex; align-items: center; gap: 0.9rem; margin-top: 0.8rem; padding-top: 1rem; border-top: 1px solid var(--line-inv); }
.cert-seal {
  display: flex; flex-direction: column; align-items: center; justify-content: center;
  width: 58px; height: 58px; flex-shrink: 0; border-radius: 50%;
  border: 1.5px dashed var(--gold); color: var(--gold);
  font-family: var(--serif); font-weight: 700; font-size: 0.85rem; line-height: 1;
}
.cert-seal small { font-size: 0.52rem; letter-spacing: 0.14em; margin-top: 0.2rem; color: rgba(var(--gold-rgb), 0.85); }
.don-cert-txt { font-size: 0.76rem; color: var(--muted-inv); margin: 0; line-height: 1.55; }

/* Reglas en reserva: .slogan (PENDIENTE #3) y .nfx-stat-gold (PENDIENTE #34)
   no tienen uso en el HTML actual; se conservan porque los comentarios PENDIENTE
   del index las restauran al llegar los datos reales. */

/* ---- Preguntas frecuentes: acordeón nativo ---- */
.faq-intro { font-size: 0.95rem; color: var(--muted); max-width: 58ch; }
.faq-list { display: flex; flex-direction: column; gap: 0.7rem; margin-top: 1.4rem; max-width: 780px; }
.faq-item {
  background: #fff; border: 1px solid var(--rule); border-radius: var(--r-m);
  box-shadow: var(--shadow-1); overflow: hidden;
}
.faq-q {
  display: flex; align-items: center; justify-content: space-between; gap: 1rem;
  padding: 1rem 1.25rem; min-height: 44px; cursor: pointer;
  font-weight: 700; font-size: 0.98rem; color: var(--oxford); letter-spacing: -0.01em;
  list-style: none;
}
.faq-q::-webkit-details-marker { display: none; }
.faq-q:hover { color: var(--crimson); }
.faq-ind {
  flex-shrink: 0; width: 28px; height: 28px; border-radius: 50%;
  display: flex; align-items: center; justify-content: center;
  background: rgba(var(--gold-rgb), 0.18); border: 1.5px solid rgba(var(--gold-rgb), 0.6);
  color: var(--oxford); font-weight: 600; font-size: 1rem; line-height: 1;
  transition: transform 0.2s ease;
}
.faq-item[open] .faq-ind { transform: rotate(45deg); }
@media (prefers-reduced-motion: reduce) { .faq-ind { transition: none; } }
.faq-a { padding: 0 1.25rem 1.1rem; }
.faq-a p { font-size: 0.9rem; color: var(--ink); margin: 0; max-width: 64ch; }
.faq-a a { color: var(--crimson); font-weight: 600; text-decoration: none; }
.faq-a a:hover { text-decoration: underline; }
.faq-a a span { display: inline-block; transition: transform 0.15s ease; }
.faq-a a:hover span { transform: translateX(4px); }
.faq-more { font-size: 0.9rem; color: var(--muted); margin: 1.4rem 0 0; }
.faq-more a { color: var(--crimson); font-weight: 600; text-decoration: none; }
.faq-more a:hover { text-decoration: underline; }

/* ---- Sede: ficha estilo Google Business ---- */
.sede-intro { font-size: 0.95rem; color: var(--muted); max-width: 58ch; }
.gcard {
  display: grid; grid-template-columns: 1.1fr 0.9fr; grid-template-areas: "map body" "cov cov";
  background: #fff; border: 1px solid var(--rule); border-radius: var(--r-l); overflow: hidden;
  box-shadow: var(--shadow-3); margin-top: 1.4rem;
}
@media (max-width: 760px) { .gcard { grid-template-columns: 1fr; grid-template-areas: "map" "body" "cov"; } }
.gcard-map { grid-area: map; min-height: 300px; }
.gcard-map iframe { width: 100%; height: 100%; min-height: 300px; border: 0; display: block; }
@media (max-width: 760px) { .gcard-map, .gcard-map iframe { min-height: 220px; } }
.gcard-body { grid-area: body; padding: 1.3rem 1.4rem; display: flex; flex-direction: column; gap: 0.9rem; }
.gcard-head h3 { margin: 0 0 0.15rem; font-size: 1.2rem; color: var(--oxford); }
.gcard-cat { font-size: 0.8rem; color: var(--muted); margin: 0; }
.gcard-rows { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; }
.gcard-rows li {
  display: flex; align-items: flex-start; gap: 0.75rem;
  padding: 0.6rem 0; border-bottom: 1px solid var(--rule); font-size: 0.9rem;
}
.gcard-rows li:last-child { border-bottom: 0; }
.gc-ico {
  color: var(--oxford); flex-shrink: 0; width: 28px; height: 28px; border-radius: 50%;
  background: var(--card); display: flex; align-items: center; justify-content: center; margin-top: -2px;
}
.gcard-rows address { display: inline; }
.gcard-rows a { color: var(--oxford); text-decoration: none; font-weight: 500; }
.gcard-rows a:hover { color: var(--crimson); }
.gc-muted { color: var(--muted); }
.gcard-actions { display: flex; flex-wrap: wrap; gap: 0.6rem; margin-top: auto; }
.gcard-coverage {
  grid-area: cov; display: flex; flex-wrap: wrap; align-items: center; gap: 0.7rem;
  padding: 0.9rem 1.4rem; border-top: 1px solid var(--rule); background: var(--card);
}
.gcov-label { font-size: var(--fs-min); letter-spacing: 0.13em; text-transform: uppercase; color: var(--muted); font-weight: 600; }
.gcard-coverage .area-list { margin: 0; }
.area-list { list-style: none; padding: 0; display: flex; flex-wrap: wrap; gap: 0.6rem; }
.area-list li { border: 1px solid var(--rule-dark); border-radius: var(--r-pill); padding: 0.3rem 0.9rem; font-size: 0.88rem; background: #fff; }

/* ---- Liderazgo: registro biográfico compacto ---- */
.team-intro { font-size: 0.95rem; color: var(--muted); max-width: 58ch; }
.bio-list { display: flex; flex-direction: column; gap: 1rem; margin-top: 1.5rem; }
.bio-row {
  display: grid; grid-template-columns: 148px 1fr; gap: 1.5rem; align-items: center;
  background: #fff; border: 1px solid var(--rule); border-radius: var(--r-l);
  padding: 1.25rem 1.6rem 1.25rem 1.25rem;
  box-shadow: var(--shadow-1);
}
.bio-photo {
  width: 100%; height: auto; aspect-ratio: 4 / 5; object-fit: cover; object-position: center top;
  border-radius: var(--r-m); display: block;
}
.bio-mono {
  display: flex; align-items: center; justify-content: center;
  background: linear-gradient(180deg, var(--oxford) 0%, var(--oxford-deep) 100%);
  color: var(--gold); border: 1.5px solid rgba(var(--gold-rgb), 0.6);
  font-family: var(--serif); font-weight: 700; font-size: 2.2rem; letter-spacing: 0.02em;
}
.bio-main { min-width: 0; }
.bio-name { font-size: 1.3rem; font-weight: 800; margin: 0 0 0.15rem; letter-spacing: -0.015em; }
.bio-role {
  display: flex; flex-wrap: wrap; align-items: center; gap: 0.6rem;
  font-size: var(--fs-min); letter-spacing: 0.12em; text-transform: uppercase;
  color: var(--crimson); font-weight: 700; margin: 0 0 0.7rem;
}
.bio-tenure {
  letter-spacing: 0.08em; font-weight: 700;
  background: rgba(var(--gold-rgb), 0.18); color: var(--gold-ink);
  padding: 0.14rem 0.7rem; border-radius: var(--r-pill);
}
.bio-lema {
  font-family: var(--serif); font-style: italic; font-size: 1.08rem; line-height: 1.45;
  color: var(--oxford); margin: 0 0 0.45rem; max-width: 52ch;
  border-left: 3px solid var(--gold); padding-left: 0.9rem;
}
.bio-quote { margin: 0 0 0.45rem; }
.bio-quote .bio-lema { margin-bottom: 0.25rem; }
.bio-src { font-size: var(--fs-min); letter-spacing: 0.1em; text-transform: uppercase; color: var(--muted); font-weight: 600; padding-left: calc(0.9rem + 3px); }
.bio-desc { font-size: 0.85rem; color: var(--muted); margin: 0.35rem 0 0.35rem; max-width: 60ch; }
.tc-link { color: var(--crimson); }
.tc-link:hover { text-decoration: underline; }
@media (max-width: 640px) {
  .bio-row { grid-template-columns: 96px 1fr; gap: 1rem; padding: 1rem; align-items: start; }
  .bio-name { font-size: 1.12rem; }
  .bio-lema { font-size: 0.98rem; }
  .bio-mono { font-size: 1.6rem; }
}

/* ---- Patrocinadores: franja compacta y sobria ---- */
.sponsor-intro { font-size: 0.95rem; color: var(--muted); max-width: 58ch; }
.sponsor-wall {
  list-style: none; margin: 1.8rem 0 0; padding: 2rem 1.6rem;
  display: flex; flex-wrap: wrap; justify-content: center; align-items: flex-start;
  gap: 1.8rem 3rem;
  background: #fff; border: 1px solid var(--rule); border-radius: var(--r-l);
  box-shadow: var(--shadow-1);
}
.sw-item {
  display: flex; flex-direction: column; align-items: center; justify-content: flex-start;
  text-align: center; gap: 0.45rem; padding: 0.4rem 0.2rem; min-width: 150px;
}
.sw-logo-box {
  display: flex; align-items: center; justify-content: center; gap: 0.55rem;
  height: 56px;
  filter: saturate(0.15) opacity(0.72);
  transition: filter 0.3s ease;
}
.sw-item:hover .sw-logo-box { filter: none; }
.sw-logo { max-height: 48px; max-width: 170px; width: auto; height: auto; object-fit: contain; display: block; }
.sw-lockup { font-family: var(--sans); font-weight: 700; font-size: 1.15rem; color: var(--oxford); letter-spacing: -0.01em; }
.sw-lockup em { font-style: normal; font-weight: 500; font-size: var(--fs-min); letter-spacing: 0.16em; text-transform: uppercase; color: var(--muted); display: block; line-height: 1; }
.sw-mark {
  font-family: var(--serif); font-weight: 600; letter-spacing: -0.01em;
  font-size: clamp(1.25rem, 1.05rem + 0.8vw, 1.5rem); line-height: 1.15;
  color: var(--muted);
}
.sw-name { font-size: 0.82rem; font-weight: 600; color: var(--ink); margin-top: 0.35rem; }
.sw-cap { font-size: 0.75rem; color: var(--muted); }

/* ---- Programas: tiles compactos de oferta (sin foto, medallón heráldico) ---- */
.lineas-intro { font-size: 0.95rem; color: var(--muted); max-width: 58ch; }
.prog-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 1.2rem; margin-top: 1.4rem; align-items: stretch; }
@media (max-width: 860px) { .prog-grid { grid-template-columns: 1fr; max-width: 480px; } }
.prog-card {
  display: flex; flex-direction: column; gap: 0.55rem;
  background: #fff; border: 1px solid var(--rule); border-radius: var(--r-l);
  border-top: 3px solid var(--gold);
  padding: 1.35rem 1.3rem 1.3rem;
  box-shadow: var(--shadow-1);
  transition: transform 0.18s ease, box-shadow 0.18s ease;
}
.prog-card:hover { transform: translateY(-4px); box-shadow: var(--shadow-2); }
.prog-card-star { border-top-color: var(--crimson); }
.prog-head { display: flex; align-items: center; gap: 0.85rem; }
.prog-ico {
  width: 52px; height: 52px; flex-shrink: 0; border-radius: 50%;
  display: flex; align-items: center; justify-content: center;
  background: rgba(var(--gold-rgb), 0.18); border: 1.5px solid rgba(var(--gold-rgb), 0.6);
  color: var(--oxford);
}
.prog-kicker { font-size: var(--fs-min); letter-spacing: 0.13em; text-transform: uppercase; color: var(--muted); font-weight: 600; margin: 0 0 0.1rem; }
.prog-card h3 { margin: 0; font-size: 1.14rem; letter-spacing: -0.01em; }
.prog-sum { font-size: 0.88rem; color: var(--muted); margin: 0.2rem 0 0; }
.prog-card .dc-perks { margin: 0.35rem 0 0.9rem; }
.prog-actions { margin-top: auto; display: flex; flex-direction: column; gap: 0.55rem; align-items: flex-start; }
.lc-link { color: var(--crimson); }
.lc-link:hover { text-decoration: underline; }

/* Micro-vida en hover: la foto interna respira (guardado por reduced-motion) */
.nfx-media img { transition: transform 0.25s ease; }
.nfx-card:hover .nfx-media img { transform: scale(1.04); }
@media (prefers-reduced-motion: reduce) {
  .nfx-media img { transition: none; }
  .nfx-card:hover .nfx-media img { transform: none; }
  .don-opt, .prog-card, .nfx-card, a.rec-plate,
  .btn, .mast-nav a.mast-cta, .transp-cta-btn, .gc-btn,
  .float-nav-toggle,
  .lc-link span, .tc-link span, .nfx-link span,
  .nfx-more-link span, .hero-student span { transition: none; }
  .pn-feature-img { transition: none; }
  .pn-feature-link:hover .pn-feature-img { transform: none; }
  .pn-feature-read span { transition: none; }
  .pn-feature-link:hover .pn-feature-read span { transform: none; }
  .honor-tile img { transition: none; }
  .honor-tile:hover img { transform: none; }
  .honor-video, .honor-cta { transition: none; }
  .honor-video:hover, .honor-cta:hover { transform: none; }
  .honor-cta:hover .honor-cta-link span { transform: none; }
  .don-opt:hover, .prog-card:hover, .nfx-card:hover, a.rec-plate:hover,
  .btn-solid:hover, .mast-nav a.mast-cta:hover, .transp-cta-btn:hover { transform: none; }
  .don-opt:hover .don-go { transform: none; }
  .lc-link:hover span, .tc-link:hover span, .nfx-link:hover span,
  .nfx-more:hover .nfx-more-link span, .hero-student:hover span { transform: none; }
  .float-nav-toggle:hover { transform: translateY(-50%); }
}

/* ---- Evidencia de labores: banda oscura estándar ---- */
.content .ev-band, .arch-band {
  background: linear-gradient(180deg, var(--oxford) 0%, var(--oxford-deep) 100%);
  color: var(--ink-inv); border-radius: var(--r-l);
  padding: 2.2rem clamp(1.2rem, 3vw, 2.2rem) 2rem;
}
.ev-band h2 { color: #fff; }
.nfx-intro { font-size: 0.92rem; color: var(--muted-inv); max-width: 60ch; }

/* Tiles de convenios: mismo componente de cifra que el fact-strip (variante oscura) */
.nfx-tiles { display: grid; grid-template-columns: repeat(3, 1fr); gap: 1rem; margin: 1.4rem 0 2.2rem; }
@media (max-width: 680px) { .nfx-tiles { grid-template-columns: 1fr; } }
.nfx-tile {
  background: rgba(255, 255, 255, 0.06); border: 1px solid var(--line-inv); border-radius: var(--r-m);
  padding: 1rem 1.15rem; display: flex; flex-direction: column; gap: 0.2rem;
}
.nfx-tile-num { font-family: var(--serif); font-weight: 700; font-size: 1.7rem; color: var(--gold); font-variant-numeric: tabular-nums; }
.nfx-tile-cap { font-size: 0.75rem; color: var(--muted-inv); }

/* Filas por año */
.nfx-row { margin-top: 2.2rem; }
.nfx-head { display: flex; align-items: center; gap: 0.9rem; flex-wrap: wrap; margin-bottom: 0.9rem; }
.nfx-year { font-family: var(--serif); font-weight: 700; font-size: clamp(1.7rem, 1.4rem + 1.2vw, 2.3rem); color: #fff; line-height: 1; margin: 0; }
.nfx-stats { display: flex; gap: 0.5rem; flex-wrap: wrap; align-items: center; }
.nfx-stat {
  font-size: 0.75rem; font-weight: 600; letter-spacing: 0.02em;
  padding: 0.3rem 0.75rem; border-radius: var(--r-pill);
  border: 1px solid rgba(var(--gold-rgb), 0.65); color: var(--gold);
}
.nfx-stat-gold { background: var(--gold); color: var(--gold-on); border-color: var(--gold); }
.nfx-stat-pending { border-color: rgba(255, 255, 255, 0.28); color: var(--faint-inv); }
.nfx-arrows { margin-left: auto; display: none; gap: 0.4rem; }
html.js-nav .nfx-arrows { display: flex; }
.nfx-arrow {
  width: 44px; height: 44px; border-radius: 50%; cursor: pointer;
  background: rgba(255, 255, 255, 0.08); border: 1px solid var(--line-inv-strong); color: #fff;
  font-size: 1.3rem; line-height: 1; display: flex; align-items: center; justify-content: center;
  transition: background 0.15s ease, border-color 0.15s ease;
}
.nfx-arrow:hover { background: var(--crimson); border-color: var(--crimson); }

/* Carrusel horizontal */
.nfx-strip {
  list-style: none; margin: 0; padding: 0 0 0.8rem;
  display: flex; gap: 0.9rem; overflow-x: auto;
  scroll-snap-type: x mandatory; -webkit-overflow-scrolling: touch;
  scrollbar-width: thin; scrollbar-color: rgba(255, 255, 255, 0.25) transparent;
}
.nfx-strip::-webkit-scrollbar { height: 6px; }
.nfx-strip::-webkit-scrollbar-thumb { background: rgba(255, 255, 255, 0.22); border-radius: 3px; }
.nfx-card {
  flex: 0 0 268px; scroll-snap-align: start;
  background: rgba(255, 255, 255, 0.06); border: 1px solid var(--line-inv); border-radius: var(--r-m);
  overflow: hidden; display: flex; flex-direction: column;
  transition: transform 0.18s ease, border-color 0.18s ease;
}
.nfx-card:hover { transform: translateY(-4px); border-color: var(--line-inv-strong); }
.nfx-media { display: block; position: relative; aspect-ratio: 16 / 9; background: var(--oxford-deep); overflow: hidden; }
.nfx-media img { width: 100%; height: 100%; object-fit: cover; display: block; }
.nfx-media-video { display: flex; align-items: center; justify-content: center; background: linear-gradient(135deg, rgba(255, 255, 255, 0.06) 0%, rgba(0, 0, 0, 0.25) 100%); }
.nfx-media-tag {
  position: absolute; bottom: 0.5rem; left: 0.5rem;
  font-size: var(--fs-min); font-weight: 600; letter-spacing: 0.02em;
  color: var(--ink-inv); background: rgba(0, 0, 0, 0.45); padding: 0.16rem 0.6rem; border-radius: var(--r-pill);
}
.nfx-body { padding: 0.75rem 0.9rem 0.9rem; display: flex; flex-direction: column; gap: 0.25rem; flex: 1; }
.nfx-meta { font-size: 0.75rem; color: var(--gold); margin: 0; }
.nfx-card h4, .nfx-card h3 { font-family: var(--serif); font-size: 0.94rem; color: #fff; margin: 0; line-height: 1.25; font-weight: 600; }
.nfx-desc {
  font-size: 0.78rem; color: var(--muted-inv); margin: 0 0 0.35rem;
  display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden;
}
.nfx-link { margin-top: auto; color: var(--gold); }
.nfx-link:hover { color: #fff; }
.nfx-foot { font-size: 0.75rem; color: var(--faint-inv); margin: 1.8rem 0 0; }

/* Nota de archivo entre años */
.nfx-gap {
  font-family: var(--serif); font-style: italic; font-size: 0.85rem; color: var(--faint-inv);
  border-top: 1px dashed var(--line-inv); margin: 2rem 0 0; padding-top: 0.8rem; max-width: none;
}

/* Tarjeta «ver archivo completo» al final de cada fila */
.nfx-card-more { background: transparent; border: 1px dashed rgba(var(--gold-rgb), 0.45); }
.nfx-card-more:hover { border-color: var(--gold); }
.nfx-more {
  display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 0.3rem;
  height: 100%; min-height: 220px; padding: 1.2rem; text-align: center; text-decoration: none;
}
.nfx-more-num { font-family: var(--serif); font-weight: 700; font-size: 2rem; color: var(--gold); line-height: 1; }
.nfx-more-cap { font-size: 0.78rem; color: var(--muted-inv); max-width: 20ch; }
.nfx-more-link { margin-top: 0.5rem; font-size: 0.85rem; font-weight: 600; color: var(--gold); }
.nfx-more:hover .nfx-more-link { color: #fff; }

/* ---- Cuadro de honor: muro visual de estudiantes beneficiados ---- */
.honor-intro { font-size: 0.95rem; color: var(--muted); max-width: 58ch; }
.honor-wall { display: grid; grid-template-columns: repeat(3, 1fr); gap: 0.9rem; margin-top: 1.4rem; }
@media (min-width: 861px) { .honor-wall { grid-template-columns: repeat(4, 1fr); } }
@media (max-width: 560px) { .honor-wall { grid-template-columns: repeat(2, 1fr); gap: 0.6rem; } }
.honor-tile {
  position: relative; margin: 0; border-radius: var(--r-l); overflow: hidden;
  box-shadow: var(--shadow-1); aspect-ratio: 4 / 5;
}
.honor-tile img { width: 100%; height: 100%; object-fit: cover; display: block; transition: transform 0.25s ease; }
.honor-tile:hover img { transform: scale(1.05); }
.honor-cap {
  position: absolute; left: 0; right: 0; bottom: 0;
  padding: 2.2rem 0.85rem 0.75rem;
  background: linear-gradient(180deg, transparent 0%, rgba(var(--oxford-deep-rgb), 0.85) 100%);
  color: #fff; font-size: 0.78rem; font-weight: 600; line-height: 1.35;
}

/* Ficha de video (plantilla PENDIENTE #37) */
.honor-video {
  display: flex; flex-direction: column; justify-content: flex-end; gap: 0.25rem;
  background: linear-gradient(180deg, var(--oxford) 0%, var(--oxford-deep) 100%);
  padding: 0.9rem; text-decoration: none;
  transition: transform 0.18s ease, box-shadow 0.18s ease;
}
.honor-video:hover { transform: translateY(-3px); box-shadow: var(--shadow-2); }
.honor-video-tag {
  position: absolute; top: 0.7rem; left: 0.7rem;
  font-size: var(--fs-min); font-weight: 600; letter-spacing: 0.02em;
  color: var(--ink-inv); background: rgba(0, 0, 0, 0.45);
  padding: 0.16rem 0.6rem; border-radius: var(--r-pill);
}
.honor-video-t { color: #fff; font-weight: 700; font-size: 0.92rem; line-height: 1.3; }
.honor-video-s { color: var(--gold); font-size: 0.75rem; }

/* Ficha de reseña (plantilla PENDIENTE #37) */
.honor-review {
  display: flex; flex-direction: column; justify-content: space-between; gap: 0.5rem;
  background: #fff; border: 1px solid var(--rule); padding: 1rem;
}
.honor-review-q { font-family: var(--serif); font-style: italic; font-size: 0.9rem; color: var(--oxford); margin: 0; line-height: 1.5; }
.honor-review-a { font-size: var(--fs-min); letter-spacing: 0.1em; text-transform: uppercase; color: var(--muted); font-weight: 600; }

/* Tarjeta recolectora */
.honor-cta {
  display: flex; flex-direction: column; align-items: flex-start; justify-content: center; gap: 0.4rem;
  background: rgba(var(--gold-rgb), 0.14); border: 1.5px dashed rgba(var(--gold-rgb), 0.75);
  padding: 1.1rem; text-decoration: none;
  transition: transform 0.18s ease, border-color 0.18s ease;
}
.honor-cta:hover { transform: translateY(-3px); border-color: var(--gold-deep); }
.honor-cta-star { color: var(--gold-deep); font-size: 1.3rem; line-height: 1; }
.honor-cta-big { font-weight: 800; font-size: 1.05rem; color: var(--oxford); line-height: 1.25; letter-spacing: -0.015em; }
.honor-cta-sub { font-size: 0.8rem; color: var(--muted); line-height: 1.45; }
.honor-cta-link { margin-top: 0.3rem; font-size: 0.88rem; font-weight: 700; color: var(--crimson); }
.honor-cta-link span { display: inline-block; transition: transform 0.15s ease; }
.honor-cta:hover .honor-cta-link span { transform: translateX(4px); }
.honor-google { font-size: 0.9rem; color: var(--muted); margin: 1.3rem 0 0; }
.honor-google a { color: var(--crimson); font-weight: 600; text-decoration: none; }
.honor-google a:hover { text-decoration: underline; }

/* ---- Sala de prensa ---- */
.pn-intro { font-size: 0.95rem; color: var(--muted); max-width: 58ch; }
.press-hub { display: grid; grid-template-columns: 1.05fr 0.95fr; gap: clamp(1.4rem, 3vw, 2.6rem); margin-top: 1.6rem; align-items: stretch; }
@media (max-width: 820px) { .press-hub { grid-template-columns: 1fr; } }

.pn-kicker {
  display: flex; align-items: baseline; flex-wrap: wrap; gap: 0.45rem;
  font-size: var(--fs-min); letter-spacing: 0.1em; text-transform: uppercase; margin: 0 0 0.5rem;
  color: var(--muted);
}
.pn-pub { font-weight: 700; color: var(--oxford); letter-spacing: 0.12em; }
.pn-date { font-variant-numeric: tabular-nums; }
.pn-by { text-transform: none; letter-spacing: 0.02em; }
.pn-kicker-inv { color: var(--muted-inv); }
.pn-kicker-inv .pn-pub { color: #fff; }
.pn-kicker-inv .pn-verified { color: var(--gold); }

/* Insignia de autoridad: sello dorado «Fuente verificada» */
.pn-verified {
  display: inline-flex; align-items: center; gap: 0.32rem;
  color: var(--gold-ink); font-weight: 700; letter-spacing: 0.08em;
}
.pn-vseal { flex-shrink: 0; display: block; }
.pn-vseal circle { fill: var(--gold); }
.pn-vseal path { stroke: var(--gold-on); }

/* Portada estelar: la foto llena la tarjeta, el titular vive sobre el degradado */
.pn-feature {
  border-radius: var(--r-l); overflow: hidden; box-shadow: var(--shadow-2);
  background: var(--oxford-deep); display: flex;
}
.pn-feature-link { position: relative; display: flex; flex-direction: column; justify-content: flex-end; width: 100%; min-height: 440px; text-decoration: none; }
.pn-feature-img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; transition: transform 0.3s ease; }
.pn-feature-link:hover .pn-feature-img { transform: scale(1.03); }
.pn-feature-scrim {
  position: absolute; inset: 0;
  background: linear-gradient(180deg, rgba(var(--oxford-deep-rgb), 0.08) 30%, rgba(var(--oxford-deep-rgb), 0.92) 100%);
}
.pn-feature-body { position: relative; z-index: 2; display: block; padding: 1.5rem 1.6rem 1.5rem; }
.pn-headline { margin: 0 0 0.9rem; }
.pn-headline span {
  font-family: var(--serif); font-weight: 700; font-size: clamp(1.3rem, 1.05rem + 1.1vw, 1.7rem);
  line-height: 1.26; color: #fff;
}
.pn-feature-read { font-size: 0.88rem; font-weight: 600; color: var(--gold); }
.pn-feature-read span { display: inline-block; transition: transform 0.15s ease; }
.pn-feature-link:hover .pn-feature-read span { transform: translateX(4px); }
@media (max-width: 820px) { .pn-feature-link { min-height: 360px; } }

.pn-list {
  list-style: none; margin: 0; padding: 0.6rem 1.4rem;
  background: #fff; border: 1px solid var(--rule); border-radius: var(--r-l);
  box-shadow: var(--shadow-1);
}
.pn-list li { padding: 0.95rem 0.2rem; border-bottom: 1px solid var(--rule); }
.pn-list li:first-child { padding-top: 0.75rem; }
.pn-list li:last-child { border-bottom: 0; }
.pn-item-head {
  display: block; text-decoration: none;
  font-family: var(--serif); font-weight: 600; font-size: 0.98rem; line-height: 1.35; color: var(--ink);
  transition: color 0.15s ease;
}
.pn-item-head:hover { color: var(--crimson); }
.pn-arrow { font-size: 0.8rem; color: var(--muted); }
.pn-item-head:hover .pn-arrow { color: var(--crimson); }

/* Fotos de las noticias */
.pn-list li { display: flex; gap: 0.9rem; align-items: flex-start; }
.pn-thumb {
  width: 116px; height: auto; aspect-ratio: 16 / 9; object-fit: cover;
  border-radius: var(--r-s); flex-shrink: 0; margin-top: 0.4rem; display: block;
}
.pn-item-body { min-width: 0; }
@media (max-width: 480px) { .pn-thumb { width: 92px; } }

/* Modal lector: previsualización de la noticia sin salir del sitio */
.pn-modal { position: fixed; inset: 0; z-index: 90; display: flex; align-items: center; justify-content: center; padding: 1rem; }
.pn-modal[hidden] { display: none; }
.pn-modal-backdrop {
  position: absolute; inset: 0; background: rgba(var(--oxford-deep-rgb), 0.55);
  -webkit-backdrop-filter: blur(6px); backdrop-filter: blur(6px);
}
.pn-modal-panel {
  position: relative; z-index: 1; width: min(560px, 100%); max-height: 92vh; overflow-y: auto;
  background: #fff; border-radius: var(--r-l); box-shadow: var(--shadow-3);
  animation: pnIn 0.22s cubic-bezier(0.2, 0.7, 0.2, 1);
}
@keyframes pnIn { from { opacity: 0; transform: translateY(14px) scale(0.985); } to { opacity: 1; transform: none; } }
@media (prefers-reduced-motion: reduce) { .pn-modal-panel { animation: none; } }
.pn-modal-img { display: block; width: 100%; height: auto; aspect-ratio: 16 / 9; object-fit: cover; }
.pn-modal-close {
  /* sticky dentro del panel con scroll: el cierre nunca queda fuera de vista */
  position: sticky; top: 0.8rem; z-index: 2;
  margin: 0.8rem 0.8rem calc(-44px - 0.8rem) auto;
  width: 44px; height: 44px; border-radius: 50%; border: none; cursor: pointer;
  background: rgba(var(--oxford-deep-rgb), 0.65); color: #fff; font-size: 1.05rem;
  display: flex; align-items: center; justify-content: center;
  -webkit-backdrop-filter: blur(8px); backdrop-filter: blur(8px);
  transition: background 0.15s ease;
}
.pn-modal-close:hover { background: var(--crimson); }
.pn-modal-body { padding: 1.2rem 1.5rem 1.4rem; }
.pn-modal-kicker {
  display: flex; flex-wrap: wrap; gap: 0.6rem;
  font-size: var(--fs-min); letter-spacing: 0.1em; text-transform: uppercase;
  color: var(--muted); margin: 0 0 0.5rem;
}
.pn-modal-pub { font-weight: 700; color: var(--oxford); letter-spacing: 0.12em; }
.pn-modal-title {
  font-family: var(--serif); font-weight: 700; font-size: 1.25rem; line-height: 1.32;
  color: var(--oxford); letter-spacing: 0; margin: 0 0 1.1rem;
}
.pn-modal-actions { display: flex; flex-wrap: wrap; gap: 0.6rem; }
.pn-modal-note { font-size: 0.78rem; color: var(--muted); margin: 0.9rem 0 0; }
html.pn-modal-open { overflow: hidden; }

/* ---- Archivo de evidencia (/evidencia) ---- */
.arch-head { padding: 2.2rem 0 0.6rem; }
.arch-head h1 { font-size: clamp(1.9rem, 1.4rem + 2vw, 2.8rem); max-width: 22ch; }
.arch-intro { font-size: 0.95rem; color: var(--muted); max-width: 62ch; }
.arch-band { margin: 1.6rem 0; }
.arch-band h2 { color: #fff; }
.nfx-grid {
  list-style: none; margin: 1.2rem 0 0; padding: 0;
  display: grid; grid-template-columns: repeat(auto-fill, minmax(240px, 1fr)); gap: 0.9rem;
}
.nfx-grid .nfx-card { flex: none; }
.arch-back { margin: 1.4rem 0 2.6rem; }

/* ---- Pie institucional ---- */
.site-foot { background: var(--oxford-deep); color: var(--ink-inv); margin-top: 3rem; }
.foot-grid {
  display: grid; grid-template-columns: 1.4fr 1fr 1fr 1.1fr; gap: clamp(1.6rem, 3vw, 3rem);
  padding: 2.8rem 0 2.2rem;
}
@media (max-width: 860px) { .foot-grid { grid-template-columns: 1fr 1fr; } }
@media (max-width: 520px) { .foot-grid { grid-template-columns: 1fr; } }
.foot-crest {
  display: flex; align-items: center; justify-content: center;
  width: 46px; height: 46px; border: 1.5px solid rgba(var(--gold-rgb), 0.8);
  font-family: var(--serif); font-weight: 700; font-size: 1.15rem; color: var(--gold);
  margin-bottom: 0.8rem;
}
.foot-name { font-family: var(--serif); font-weight: 700; font-size: 1.1rem; color: #fff; margin: 0 0 0.4rem; }
.foot-mission { font-size: 0.85rem; color: var(--muted-inv); margin: 0 0 1rem; max-width: 34ch; }
.foot-social { list-style: none; margin: 0; padding: 0; display: flex; flex-wrap: wrap; gap: 0.4rem 1.1rem; }
.foot-social a {
  font-size: 0.85rem; font-weight: 600; letter-spacing: 0.01em;
  color: var(--muted-inv); text-decoration: none; display: inline-block; padding: 0.2rem 0;
}
.foot-social a:hover { color: var(--gold); }
.foot-title {
  font-size: var(--fs-min); letter-spacing: 0.15em; text-transform: uppercase;
  color: var(--gold); font-weight: 700; margin: 0 0 0.8rem;
}
.foot-col ul { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; gap: 0.3rem; }
.foot-col a { font-size: 0.85rem; color: var(--ink-inv); text-decoration: none; display: inline-block; padding: 0.15rem 0; }
.foot-col a:hover { color: #fff; text-decoration: underline; text-decoration-color: var(--gold); }
.foot-data li { font-size: 0.8rem; color: var(--muted-inv); line-height: 1.5; }
.foot-data a { color: var(--ink-inv); }
.foot-bottom {
  display: flex; flex-wrap: wrap; justify-content: space-between; gap: 0.4rem 1.5rem;
  border-top: 1px solid var(--line-inv); padding: 1.1rem 0 1.4rem;
}
.foot-bottom p { font-size: 0.74rem; color: var(--faint-inv); margin: 0; }
.foot-bottom a { color: var(--muted-inv); text-decoration: none; }
.foot-bottom a:hover { color: var(--gold); }

/* Objetivos táctiles cómodos en pantallas táctiles */
@media (pointer: coarse) {
  .foot-col a, .foot-social a { padding: 0.5rem 0; }
  .lc-link, .tc-link, .nfx-link { display: inline-block; padding: 0.4rem 0; }
}
