/* ============================================================
   SITIO DEL LABORATORIO DE FÍSICA CÓSMICA DE CHACALTAYA
   estilo-base.css — capa compartida por TODAS las plantillas
   IIF · UMSA — v1.0 · septiembre de 2026

   Contiene: variables de diseño, reset, cabecera, pie y los
   componentes de contenido reutilizables (citas, tablas, fichas
   de persona, avisos, fuentes, paginación, llamadas a la acción).

   Cada plantilla añade encima su propia hoja:
       estilo-hito.css      T3 · Hito histórico
       estilo-portada.css   T1 · Portada
       estilo-linea.css     T4 · Línea de tiempo

   PARA ADOPTAR LA IDENTIDAD VISUAL DE LA UNIVERSIDAD basta con
   cambiar el bloque :root de abajo. No hay ningún color escrito
   a mano fuera de él.
   ============================================================ */

:root{
  /* ---------- tintas del logotipo ----------
     Las dos únicas tintas de la marca. Todo lo demás se deriva de ellas.
     Muestreadas del logotipo: mediana de los píxeles de cada tinta.      */
  --logo-azul:#002D54;     /* montaña, letra pi, órbita y texto */
  --logo-rojo:#EF2525;     /* círculo */

  /* superficie y texto */
  --bg:#F6F8FB; --fg:#00284A; --muted:#4A6076; --line:#D5DEE7; --card:#fff; --code:#EBF0F5;

  /* acentos
     --accent es el rojo del logotipo oscurecido hasta 5,5:1 sobre el fondo,
     porque el rojo puro sólo da 3,98:1 y no cumple AA en texto corrido.
     Para rellenos, reglas y grafismo se usa --accent-vivo, que sí es el
     rojo exacto de la marca.                                             */
  --accent:#CA0F0F;        /* rojo de marca, legible en texto */
  --accent-vivo:#EF2525;   /* rojo de marca exacto: rellenos y grafismo */
  --accent-soft:#FCE9E9;   /* relleno tenue del rojo: avisos, filas clave */
  --brand-soft:#E4EDF6;    /* velo del azul: cabeceras de página */
  --accent2:#0B5FA5;       /* azul de enlace, mismo tono que el logotipo */
  --accent2-soft:#E5EEF7;
  --brand:#002D54;         /* azul exacto del logotipo: cabecera, pie, fondos */
  --warn:#A36200; --warn-soft:#FBF0DC;
  --ok:#1E7A4B;

  /* colores temáticos de la línea de tiempo */
  --t-ciencia:#0B5FA5; --t-institucion:#CA0F0F; --t-atmosfera:#0E7C7B; --t-internacional:#8A6A12;

  /* tipografía */
  --serif:Georgia,"Iowan Old Style","Times New Roman",serif;
  --sans:-apple-system,BlinkMacSystemFont,"Segoe UI",Inter,Roboto,Helvetica,Arial,sans-serif;
  --mono:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;
  /* medidas */
  --wide:1180px; --read:720px; --radius:10px;
}
@media (prefers-color-scheme: dark){
  :root:not([data-theme="light"]){
    --bg:#0B1826; --fg:#DCE6F0; --muted:#8FA3B8; --line:#25384C; --card:#132436; --code:#16283B;
    --accent:#F13A3A; --accent-vivo:#EF2525; --accent-soft:#2A1618; --brand-soft:#10243A;
    --accent2:#3D96E8; --accent2-soft:#12293E;
    --brand:#45A9FF;
    --warn:#C88A22; --warn-soft:#2A2213; --ok:#2E9C6A;
    --t-ciencia:#3D96E8; --t-institucion:#F13A3A; --t-atmosfera:#1FA8A6; --t-internacional:#C6A23C;
  }
}
:root[data-theme="dark"]{
  --bg:#0B1826; --fg:#DCE6F0; --muted:#8FA3B8; --line:#25384C; --card:#132436; --code:#16283B;
  --accent:#F13A3A; --accent-vivo:#EF2525; --accent-soft:#2A1618; --brand-soft:#10243A;
  --accent2:#3D96E8; --accent2-soft:#12293E;
  --brand:#45A9FF;
  --warn:#C88A22; --warn-soft:#2A2213; --ok:#2E9C6A;
  --t-ciencia:#3D96E8; --t-institucion:#F13A3A; --t-atmosfera:#1FA8A6; --t-internacional:#C6A23C;
}

/* Etiqueta visible sólo para lectores de pantalla. Se usa cuando el campo ya
   se explica por su contexto visual pero necesita <label> para ser accesible.
   No usar display:none: eso también lo oculta a los lectores de pantalla. */
.visualmente-oculto{position:absolute; width:1px; height:1px; margin:-1px; padding:0;
  overflow:hidden; clip:rect(0 0 0 0); clip-path:inset(50%); white-space:nowrap; border:0;}

*{box-sizing:border-box}
html{scroll-behavior:smooth; scroll-padding-top:80px}
body{margin:0; background:var(--bg); color:var(--fg); font:17px/1.7 var(--serif);
  -webkit-font-smoothing:antialiased;}
.ui{font-family:var(--sans);}
a{color:var(--accent2);}
img{max-width:100%; height:auto;}
/* rutas de archivo y nombres técnicos son cadenas sin espacios: si no se les
   permite partir, desbordan la página en pantallas estrechas */
code{font-family:var(--mono); font-size:.92em; background:var(--code);
  padding:1px 5px; border-radius:4px; overflow-wrap:anywhere;}
:focus-visible{outline:2px solid var(--accent2); outline-offset:2px;}

/* ---------- cabecera ---------- */
/* fondo opaco a propósito: con transparencia, el texto de la página se
   transparenta detrás de la cabecera en los navegadores sin backdrop-filter */
.site{position:sticky; top:0; z-index:50; background:var(--bg); border-bottom:1px solid var(--line);}
.site-in{max-width:var(--wide); margin:0 auto; padding:12px 24px; display:flex; align-items:center;
  gap:20px; font-family:var(--sans); font-size:14px;}
.brand{font-weight:700; letter-spacing:-.01em; text-decoration:none; color:var(--fg); white-space:nowrap;}
.brand span{color:var(--accent);}
/* isotipo junto al nombre: trazos engrosados para que se lea a 30 px */
.brand-logo{display:inline-block; vertical-align:middle; height:30px; width:auto; margin:-4px 9px -3px 0;}
.site nav{display:flex; gap:18px; margin-left:auto; flex-wrap:wrap;}
.site nav a{color:var(--muted); text-decoration:none;}
.site nav a:hover,.site nav a[aria-current]{color:var(--accent);}
.lang{display:flex; gap:4px; border-left:1px solid var(--line); padding-left:16px;}
.lang a{padding:2px 7px; border-radius:5px; font-size:12.5px; font-weight:600; text-decoration:none; color:var(--muted);}
.lang a:hover{background:var(--code);}
.lang a[aria-current]{background:var(--accent); color:#fff;}
/* Idioma todavía no disponible para ESTA página. Se marca como no disponible en
   lugar de enlazarse a «#» o a la portada: la arquitectura (§04) exige que el
   selector lleve siempre a la misma página traducida, nunca a otro sitio, y que
   la ausencia de traducción se vea. Es un <span>, no un enlace: así no recibe
   foco de teclado ni promete un destino que no existe. */
.lang span{padding:2px 7px; border-radius:5px; font-size:12.5px; font-weight:600;
  color:var(--muted); opacity:.42; cursor:not-allowed;}
/* Entrada de menú cuyo destino sólo existe todavía en español. Se enlaza igual
   —§04 de la arquitectura prohíbe el 404— y se marca con el código de idioma,
   para que quien navega en inglés o portugués sepa antes de pulsar que va a
   cambiar de lengua. El distintivo sale del propio atributo hreflang: no hay
   que acordarse de escribirlo dos veces. */
.site nav a[hreflang]::after{content:attr(hreflang); margin-left:5px; vertical-align:.3em;
  font-size:9.5px; font-weight:700; letter-spacing:.06em; text-transform:uppercase;
  color:var(--muted); opacity:.8;}
@media(max-width:760px){ .site nav{display:none} }

/* Referencia cruzada cuya ficha todavía no existe. Se escribe en texto plano con
   este distintivo detrás, nunca como enlace a «#»: un enlace que no lleva a
   ninguna parte es peor que ningún enlace —promete algo y no lo cumple— y además
   ensucia la navegación por teclado. Al publicarse la ficha se sustituye el
   conjunto por un <a href>. */
.pend-inline{margin-left:6px; font-family:var(--sans); font-size:10.5px; font-weight:700;
  letter-spacing:.07em; text-transform:uppercase; color:var(--warn); background:var(--warn-soft);
  padding:2px 6px; border-radius:20px; white-space:nowrap;}

/* ---------- fotografía publicada ----------
   Sustituye al recuadro .ph cuando la imagen ya existe y tiene derechos
   comprobados. El crédito NO es decorativo: la regla del sitio es que ninguna
   imagen se publica sin él, así que va dentro del mismo <figure> y se imprime.
   La relación de aspecto se fija con los atributos width/height del <img> para
   que el texto no salte mientras carga. */
figure.foto{margin:34px 0; padding:0;}
/* Una imagen muy vertical —las trazas de emulsión del hito 02 miden más de
   dos alturas por una de ancho— no debe ocupar tres pantallas: se limita su
   alto y se centra. Las apaisadas siguen llenando la columna. */
figure.foto img{display:block; width:auto; height:auto; max-width:100%; max-height:78vh;
  margin-inline:auto; border-radius:var(--radius);
  background:var(--code);}
figure.foto figcaption{margin-top:10px; font-family:var(--sans); font-size:13.5px;
  line-height:1.55; color:var(--muted);}
figure.foto figcaption .cred{display:block; margin-top:3px; font-size:12.5px;
  letter-spacing:.02em; opacity:.85;}
figure.foto figcaption .cred em{font-style:normal; color:var(--warn);}
/* dos fotografías en paralelo cuando el ancho lo permite */
.fotos-par{display:grid; gap:16px; margin:34px 0;}
.fotos-par figure.foto{margin:0;}
@media(min-width:760px){ .fotos-par{grid-template-columns:1fr 1fr;} }

/* ---------- componentes de contenido ---------- */
blockquote{margin:32px 0; padding:22px 26px; background:var(--card); border:1px solid var(--line);
  border-left:4px solid var(--accent2); border-radius:0 var(--radius) var(--radius) 0; font-size:19px; line-height:1.55;}
blockquote p{margin:0;}
blockquote cite{display:block; margin-top:12px; font-size:14px; font-style:normal; font-family:var(--sans); color:var(--muted);}

.ph{margin:36px 0; padding:0;}
.ph .box{aspect-ratio:16/9; border:2px dashed var(--line); border-radius:var(--radius); background:var(--code);
  display:flex; flex-direction:column; align-items:center; justify-content:center; text-align:center;
  gap:6px; padding:20px; font-family:var(--sans);}
.ph .box b{font-size:13px; letter-spacing:.08em; text-transform:uppercase; color:var(--accent);}
.ph .box span{font-size:13.5px; color:var(--muted); max-width:46ch;}
figcaption{font-family:var(--sans); font-size:13.5px; color:var(--muted); margin-top:10px; line-height:1.5;}

.callout{margin:32px 0; padding:20px 24px; border-radius:var(--radius); background:var(--card);
  border:1px solid var(--line); font-family:var(--sans); font-size:15px; line-height:1.6;}
.callout h4{margin:0 0 8px; font-size:13px; letter-spacing:.08em; text-transform:uppercase; color:var(--accent2);}
.callout.warn{background:var(--warn-soft); border-color:transparent;} .callout.warn h4{color:var(--warn);}
.callout.unesco{background:var(--accent-soft); border-color:transparent;} .callout.unesco h4{color:var(--accent);}
.callout p:last-child{margin-bottom:0;} .callout p:first-of-type{margin-top:0;}

.tablewrap{overflow-x:auto; margin:26px 0; border:1px solid var(--line); border-radius:var(--radius);}
table{border-collapse:collapse; width:100%; background:var(--card); font-family:var(--sans); font-size:14.5px;}
th,td{padding:11px 15px; text-align:left; border-bottom:1px solid var(--line); vertical-align:top;}
th{background:var(--code); font-size:12px; letter-spacing:.05em; text-transform:uppercase; color:var(--muted);}
td:first-child{white-space:nowrap; color:var(--muted); font-variant-numeric:tabular-nums;}
tr:last-child td{border-bottom:none;}
tr.key td{background:var(--accent-soft);} tr.key td strong{color:var(--accent);}

/* Rótulo de una tabla con nombre propio. Se lee como encabezado de la tabla y
   no como título de sección, así que va pequeño, en versalitas y sobre el velo
   del azul de marca, que es el mismo recurso que usan las cabeceras de página. */
caption{caption-side:top; text-align:left; padding:11px 15px; background:var(--brand-soft);
        font-family:var(--sans); font-size:12px; letter-spacing:.05em; text-transform:uppercase;
        color:var(--brand); font-weight:600; border-bottom:1px solid var(--line);}

.people{display:grid; grid-template-columns:repeat(auto-fill,minmax(210px,1fr)); gap:14px; margin:26px 0;}
.person{background:var(--card); border:1px solid var(--line); border-radius:var(--radius); padding:15px 17px; font-family:var(--sans);}
.person b{display:block; font-size:15px;}
.person .yrs{font-size:12.5px; color:var(--muted); margin:2px 0 7px;}
.person p{margin:0; font-size:13.5px; color:var(--muted); line-height:1.5;}

details{background:var(--card); border:1px solid var(--line); border-radius:var(--radius); margin:16px 0; overflow:hidden;}
summary{cursor:pointer; padding:14px 18px; font-family:var(--sans); font-size:14.5px; font-weight:650;
  list-style:none; display:flex; justify-content:space-between; align-items:center; gap:14px;}
summary::-webkit-details-marker{display:none}
summary::after{content:"+"; color:var(--accent); font-size:19px; font-weight:400;}
details[open] summary::after{content:"\2212";}
details .body{padding:0 18px 16px; font-family:var(--sans); font-size:14.5px;}
details dl{margin:0;} details dt{font-weight:700; margin-top:12px;} details dd{margin:2px 0 0; color:var(--muted);}

ol.sources{font-family:var(--sans); font-size:14px; line-height:1.6; color:var(--muted);}
ol.sources li{margin:10px 0;} ol.sources strong{color:var(--fg);}

.cite-box{margin:44px 0 0; padding:18px 22px; background:var(--code); border-radius:var(--radius);
  font-family:var(--mono); font-size:13px; line-height:1.6; color:var(--muted);
  overflow-wrap:anywhere;} /* la URL es una cadena sin espacios: debe poder partirse */
.cite-box b{display:block; font-family:var(--sans); font-size:11.5px; letter-spacing:.1em;
  text-transform:uppercase; color:var(--accent); margin-bottom:8px;}

.pager{display:grid; grid-template-columns:1fr 1fr; gap:14px; margin:56px 0 0; font-family:var(--sans);}
.pager a{display:block; padding:16px 18px; border:1px solid var(--line); border-radius:var(--radius);
  text-decoration:none; background:var(--card); color:var(--fg);}
.pager a:hover{border-color:var(--accent);}
.pager .lbl{font-size:11.5px; letter-spacing:.1em; text-transform:uppercase; color:var(--muted); display:block; margin-bottom:5px;}
.pager .nxt{text-align:right;}
@media(max-width:600px){ .pager{grid-template-columns:1fr} .pager .nxt{text-align:left} }

.cta{margin:56px 0 0; padding:28px 30px; border-radius:12px; background:var(--accent); color:#fff;}
.cta h3{margin:0 0 8px; color:#fff; font-size:22px;}
.cta p{margin:0 0 16px; opacity:.92; font-size:16px;}
.cta a{display:inline-block; background:#fff; color:var(--accent); text-decoration:none; font-weight:700;
  padding:10px 20px; border-radius:8px; font-family:var(--sans); font-size:15px;}

/* ---------- pie ---------- */
footer.site-foot{border-top:1px solid var(--line); margin-top:70px; background:var(--card);}
.foot-in{max-width:var(--wide); margin:0 auto; padding:36px 24px; font-family:var(--sans); font-size:13.5px; color:var(--muted);}
.foot-in a{color:var(--muted);}

/* ---------- nota de desarrollo (se elimina en producción) ---------- */
.dev-note{max-width:var(--wide); margin:0 auto; padding:0 24px 40px;}
.dev-note .inner{border:1px dashed var(--accent); border-radius:var(--radius); padding:18px 22px;
  background:var(--accent-soft); font-family:var(--sans); font-size:13.5px; line-height:1.6;}
.dev-note b{color:var(--accent);}
.dev-note code{background:var(--code); padding:1px 5px; border-radius:4px; font:12.5px var(--mono);}

@media print{
  .site,.pager,.cta,.dev-note,.lang{display:none !important;}
  body{font-size:11pt}
  .callout,.tablewrap,blockquote,.people{break-inside:avoid}
}
