/* COLORES */
:root {
  color-scheme: dark;
  --fondo: #080d0b;
  --superficie: #111b16;
  --superficie-hover: #18271e;
  --texto: #eff7f2;
  --secundario: #a6b9ae;
  --verde: #83e39a;
  --texto-boton: #062315;
  --borde: #284334;
  --cuadricula: #4ce39b06;
  --resplandor: #19be7220;
}
:root[data-tema="claro"] {
  color-scheme: light;
  --fondo: #f6f9f7;
  --superficie: #ffffff;
  --superficie-hover: #edf5f0;
  --texto: #14291d;
  --secundario: #506759;
  --verde: #267735;
  --texto-boton: #ffffff;
  --borde: #cbded2;
  --cuadricula: #087d4308;
  --resplandor: #19be7210;
}
/* BASE */
* {
  box-sizing: border-box;
}
[hidden] {
  display: none !important;
}
body {
  margin: 0;
  min-height: 100vh;
  background-color: var(--fondo);
  background-image:
    radial-gradient(
      ellipse at 70% 0%,
      var(--resplandor),
      transparent 55%
    ),
    linear-gradient(var(--cuadricula) 1px, transparent 1px),
    linear-gradient(90deg, var(--cuadricula) 1px, transparent 1px);
  background-size: auto, 48px 48px, 48px 48px;
  color: var(--texto);
  font: 16px/1.6 "Segoe UI", Arial, sans-serif;
}
button,
input {
  font: inherit;
}
button {
  cursor: pointer;
}
a {
  color: var(--verde);
  text-underline-offset: 4px;
}
a:focus-visible,
button:focus-visible,
input:focus-visible {
  outline: 3px solid var(--verde);
  outline-offset: 4px;
}
h1,
h2,
h3,
p {
  overflow-wrap: anywhere;
}
h1 {
  margin: 16px 0;
  font-size: clamp(32px, 4vw, 48px);
  line-height: 1.15;
  letter-spacing: -1px;
}
h1 span {
  color: var(--verde);
}
.etiqueta {
  color: var(--verde);
  font-size: 12px;
  font-weight: 700;
  letter-spacing: 2px;
}
/* INICIO: ENCABEZADO INSTITUCIONAL
   La franja oscura conserva sus colores en ambos temas.
   Se recortan los márgenes verticales vacíos de la franja generada. */
.encabezado {
  position: sticky;
  top: 0;
  z-index: 10;
  padding: 12px max(20px, calc((100% - 1200px) / 2));
  background: #07110c;
  color: #eff7f2;
  border-top: 3px solid #51b947;
  border-bottom: 1px solid #284334;
}
.encabezado-contenido {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 28px;
  width: 100%;
  min-width: 0;
}
.marca-institucional {
  display: flex;
  flex: 0 1 490px;
  min-width: 0;
  flex-direction: column;
  align-items: flex-start;
  gap: 3px;
  color: #eff7f2;
  text-decoration: none;
}
.logo-institucional {
  display: block;
  width: 100%;
  height: auto;
  aspect-ratio: 5.7 / 1;
  max-height: 90px;
  object-fit: cover;
  object-position: center;
}
.marca-leyenda {
  padding-left: 4px;
  color: #b8cbbd;
  font-size: 11px;
  letter-spacing: 2px;
}
.marca-leyenda strong { color: #eff7f2; font-weight: 600; }
.encabezado-controles {
  display: flex;
  align-items: center;
  justify-content: flex-end;
  flex-shrink: 0;
  gap: 20px;
}
.menu { display: flex; flex-wrap: wrap; gap: 6px; }
.menu a {
  padding: 9px 14px;
  border-radius: 8px;
  color: #b8cbbd;
  font-weight: 600;
  text-decoration: none;
}
.menu a:hover,
.menu a[aria-current="page"] { background: #182b1e; color: #83e39a; }
.encabezado #cambiar-tema {
  background: #111e16;
  color: #eff7f2;
  border-color: #36533e;
  white-space: nowrap;
}
.encabezado #cambiar-tema:hover { border-color: #83e39a; color: #83e39a; }
.encabezado a:focus-visible,
.encabezado button:focus-visible { outline-color: #83e39a; }
/* FIN: ENCABEZADO INSTITUCIONAL */
/* BOTONES */
.boton-principal,
.boton-secundario {
  display: inline-block;
  padding: 11px 20px;
  border-radius: 9px;
  text-align: center;
  text-decoration: none;
}
.boton-principal {
  border: 1px solid var(--verde);
  background: var(--verde);
  color: var(--texto-boton);
  font-weight: 700;
}
.boton-secundario {
  border: 1px solid var(--borde);
  background: var(--superficie);
  color: var(--texto);
}
.boton-secundario:hover {
  border-color: var(--verde);
  color: var(--verde);
}
.boton-principal:hover {
  outline: 2px solid var(--verde);
  outline-offset: 3px;
}
/* CONTENIDO */
main {
  width: min(1200px, calc(100% - 40px));
  min-height: calc(100vh - 240px);
  margin: 40px auto;
}
.vista {
  animation: aparecer 350ms ease both;
}
.bienvenida {
  max-width: 960px;
  padding: 28px 0 40px;
}
.bienvenida h1 {
  margin: 24px 0;
  font-size: clamp(38px, 5.5vw, 68px);
  letter-spacing: -2px;
  line-height: 1.08;
}
.bienvenida h1 span {
  display: block;
}
.descripcion-inicio {
  max-width: 700px;
  color: var(--secundario);
  font-size: 18px;
}
.acciones {
  display: flex;
  flex-wrap: wrap;
  gap: 14px;
  margin-top: 28px;
}
/* INICIO: PORTADA Y PUMAS */
.portada-institucional {
  display: grid;
  grid-template-columns: minmax(0, 1.45fr) minmax(0, .75fr);
  align-items: center;
  gap: clamp(24px, 4vw, 56px);
  margin-bottom: 36px;
  padding-block: 20px;
}
.portada-institucional > * { min-width: 0; }
.portada-institucional .bienvenida { padding: 28px 0; }
.portada-institucional .bienvenida h1 { font-size: clamp(38px, 4.4vw, 60px); line-height: 1.1; }
/* El título recibe foco al navegar; los controles mantienen su indicador. */
.portada-institucional h1[tabindex="-1"]:focus { outline: none; }
.bienvenida-comunidad { margin: 24px 0 0; color: var(--secundario); font-size: 13px; }
.pumas-bienvenida {
  position: relative;
  isolation: isolate;
  width: min(100%, 360px);
  justify-self: center;
  margin: 0;
  padding: 0;
  border: 0;
  border-radius: 0;
  background: transparent;
  box-shadow: none;
}
.pumas-bienvenida::before {
  content: "";
  position: absolute;
  z-index: -1;
  inset: 12% -12% 5%;
  background: radial-gradient(ellipse at center, var(--resplandor), transparent 70%);
  pointer-events: none;
}
.pumas-imagen-contenedor { display: grid; place-items: center; }
.pumas-imagen {
  display: block;
  width: 100%;
  height: auto;
  max-height: 390px;
  object-fit: contain;
  opacity: .9;
  filter: saturate(.76) drop-shadow(0 14px 18px #00000022);
  -webkit-mask-image: linear-gradient(to bottom, #000 0%, #000 83%, transparent 100%);
  mask-image: linear-gradient(to bottom, #000 0%, #000 83%, transparent 100%);
}
.pumas-bienvenida figcaption {
  margin-top: -6px;
  color: var(--secundario);
  font-size: 10px;
  font-weight: 600;
  letter-spacing: 1.8px;
  text-transform: uppercase;
  text-align: center;
}
.pumas-indicador { display: none; }
:root[data-tema="claro"] .pumas-imagen { opacity: .95; }
/* FIN: PORTADA Y PUMAS */
.resumen {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 20px;
  margin-bottom: 30px;
  padding: 24px 0;
  border-top: 1px solid var(--borde);
  border-bottom: 1px solid var(--borde);
}
.resumen strong {
  display: block;
  color: var(--verde);
  font-size: 28px;
}
.resumen span {
  color: var(--secundario);
  font-size: 14px;
}
.funciones {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 20px;
}
.panel {
  padding: 26px;
  background: var(--superficie);
  border: 1px solid var(--borde);
  border-radius: 16px;
}
.panel h2 {
  margin: 18px 0 12px;
  font-size: 22px;
  line-height: 1.3;
}
.panel p {
  color: var(--secundario);
}
.panel .etiqueta {
  color: var(--verde);
}
.nota {
  margin-top: 26px;
  padding: 24px;
  border: 1px solid var(--borde);
  border-left: 3px solid var(--verde);
  border-radius: 12px;
  background: var(--superficie);
}
.nota p {
  margin: 6px 0 0;
  color: var(--secundario);
}
/* CATÁLOGO */
.ruta {
  display: flex;
  flex-wrap: wrap;
  gap: 10px;
  margin-bottom: 24px;
  color: var(--secundario);
  font-size: 14px;
}
.ruta a {
  text-decoration: none;
}
.ruta a:hover {
  text-decoration: underline;
}
.ruta [aria-current="page"] {
  color: var(--texto);
}
.cabecera-catalogo {
  padding: 30px;
  background:
    radial-gradient(
      ellipse at right top,
      var(--resplandor),
      transparent 70%
    ),
    var(--superficie);
  border: 1px solid var(--borde);
  border-radius: 18px;
}
.cabecera-catalogo .etiqueta {
  margin-top: 0;
}
.cabecera-catalogo > p:last-child {
  margin-bottom: 0;
  color: var(--secundario);
}
.controles {
  margin-top: 26px;
}
.controles label {
  display: block;
  margin-bottom: 8px;
  color: var(--secundario);
  font-size: 14px;
}
.controles input {
  width: 100%;
  min-height: 50px;
  padding: 12px 16px;
  border: 1px solid var(--borde);
  border-radius: 9px;
  background: var(--superficie);
  color: var(--texto);
}
.controles input::placeholder {
  color: var(--secundario);
}
.contador {
  color: var(--secundario);
  font-size: 14px;
}
.rejilla {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 20px;
  margin-top: 24px;
}
.tarjeta {
  display: flex;
  flex-direction: column;
  min-height: 240px;
  padding: 26px;
  border: 1px solid var(--borde);
  border-radius: 16px;
  background: var(--superficie);
  color: var(--texto);
  text-decoration: none;
  transition: transform 180ms ease, border-color 180ms ease;
}
.tarjeta:hover {
  transform: translateY(-4px);
  border-color: var(--verde);
  background: var(--superficie-hover);
}
.tarjeta-superior {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
}
.numero {
  color: var(--verde);
  font-size: 30px;
  line-height: 1;
}
.tipo {
  padding: 4px 9px;
  border: 1px solid var(--borde);
  border-radius: 5px;
  color: var(--secundario);
  font-size: 12px;
  letter-spacing: 2px;
}
.tarjeta h2 {
  margin: 24px 0 10px;
  font-size: 22px;
  line-height: 1.3;
}
.tarjeta p {
  margin: 0 0 24px;
  color: var(--secundario);
  font-size: 14px;
}
.tarjeta-accion {
  margin-top: auto;
  color: var(--verde);
  font-size: 14px;
  font-weight: 700;
}
.estado {
  margin-top: 24px;
  padding: 42px 26px;
  border: 1px dashed var(--borde);
  border-radius: 16px;
  background: var(--superficie);
  text-align: center;
}
.estado h2 {
  font-size: 24px;
}
.estado p {
  max-width: 600px;
  margin-inline: auto;
  color: var(--secundario);
}
.asistente-panel {
  max-width: 850px;
  margin: auto;
}
.asistente-panel .nota {
  margin-bottom: 26px;
}
footer {
  display: flex;
  justify-content: space-between;
  flex-wrap: wrap;
  gap: 16px;
  padding: 24px max(20px, calc((100% - 1200px) / 2));
  border-top: 1px solid var(--borde);
  color: var(--secundario);
  font-size: 14px;
}
/* PRESENTACIÓN: SIEMPRE EN FONDO OSCURO */
#presentacion {
  position: fixed;
  inset: 0;
  width: 100%;
  height: 100%;
  height: 100dvh;
  max-width: none;
  max-height: none;
  margin: 0;
  padding: 24px;
  border: 0;
  overflow: auto;
  color: #eff7f2;
  background: radial-gradient(
    ellipse at center,
    #103523 0%,
    #07120c 45%,
    #030705 80%
  );
  opacity: 1;
  transition: opacity 350ms ease;
}
#presentacion:not([open]) {
  display: none;
}
#presentacion[open] {
  display: grid;
  place-items: center;
}
#presentacion::backdrop {
  background: #030705;
}
#presentacion.saliendo {
  opacity: 0;
}
body.presentacion-activa {
  overflow: hidden;
}
.intro-contenido {
  width: min(100%, 640px);
  margin: auto;
  text-align: center;
  animation: aparecer 900ms ease both;
}
.intro-emblema {
  position: relative;
  display: grid;
  place-items: center;
  width: min(420px, 76vw, 48svh);
  aspect-ratio: 1;
  margin: 0 auto 32px;
}
.intro-logo {
  position: relative;
  z-index: 1;
  width: 84%;
  height: auto;
  filter: drop-shadow(0 0 14px #36da8430);
}
.aro {
  position: absolute;
  border-radius: 50%;
  pointer-events: none;
}
.aro-exterior {
  inset: 0;
  border: 2px solid #4ce39b20;
  border-top-color: #4ce39b;
  border-right-color: #20a66d;
  box-shadow: 0 0 28px #4ce39b12;
  animation: girar 2.8s linear infinite;
}
.aro-interior {
  inset: 13px;
  border: 1px dashed #4ce39b50;
  animation: girar 16s linear infinite reverse;
}
#presentacion .etiqueta {
  color: #4ce39b;
  letter-spacing: 4px;
}
#titulo-presentacion {
  margin: 12px 0;
  font-size: clamp(28px, 5vw, 42px);
  line-height: 1.2;
}
#titulo-presentacion span {
  color: #4ce39b;
}
.intro-descripcion {
  color: #afc5b8;
}
.intro-linea {
  width: min(240px, 80%);
  height: 3px;
  margin: 28px auto;
  overflow: hidden;
  background: #4ce39b20;
}
.intro-linea span {
  display: block;
  width: 100%;
  height: 100%;
  background: #4ce39b;
  transform-origin: left;
  animation: avance 6s linear both;
}
.boton-intro {
  padding: 10px 24px;
  border: 1px solid #527361;
  border-radius: 30px;
  background: transparent;
  color: #eff7f2;
}
.boton-intro:hover {
  border-color: #4ce39b;
  color: #4ce39b;
}
/* ANIMACIONES */
@keyframes aparecer {
  from {
    opacity: 0;
    transform: translateY(10px);
  }
  to {
    opacity: 1;
    transform: translateY(0);
  }
}
@keyframes girar {
  to {
    transform: rotate(360deg);
  }
}
@keyframes avance {
  from {
    transform: scaleX(0);
  }
  to {
    transform: scaleX(1);
  }
}
/* PANTALLAS PEQUEÑAS */
@media (max-width: 1000px) {
  .rejilla {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }
  .funciones {
    grid-template-columns: 1fr;
  }
}
@media (max-width: 700px) {
  .encabezado {
    position: static;
    gap: 14px;
  }
  .menu {
    order: 3;
    width: 100%;
  }
  .menu a {
    flex: 1;
    padding: 9px;
    text-align: center;
  }
  .logo-encabezado {
    width: 58px;
    height: 40px;
  }
  #cambiar-tema {
    padding: 8px 12px;
    font-size: 14px;
  }
  main {
    margin-top: 24px;
  }
  .bienvenida {
    padding-top: 12px;
  }
  .bienvenida h1 {
    letter-spacing: -1px;
  }
  .resumen {
    grid-template-columns: 1fr;
    gap: 16px;
  }
  .resumen > div {
    display: flex;
    align-items: center;
    gap: 16px;
  }
  .resumen strong {
    min-width: 90px;
    font-size: 24px;
  }
  .rejilla {
    grid-template-columns: 1fr;
  }
  .cabecera-catalogo,
  .panel {
    padding: 22px;
  }
}
@media (prefers-reduced-motion: reduce) {
  *,
  *::before,
  *::after {
    animation: none !important;
    transition: none !important;
  }
}
/* INICIO: CORRECCIÓN DEL TAMAÑO DEL LECTOR */
#lector-pdf {
  position: fixed;
  inset: 0;
  width: 96vw;
  height: 94vh;
  height: 94dvh;
  max-width: none;
  max-height: none;
  margin: auto;
  padding: 16px;
  border: 1px solid var(--borde);
  border-radius: 14px;
  background: var(--fondo);
  color: var(--texto);
  overflow: hidden;
}
#lector-pdf:not([open]) {
  display: none;
}
#lector-pdf[open] {
  display: grid;
  grid-template-rows: auto auto minmax(0, 1fr) auto;
  gap: 12px;
}
#lector-pdf::backdrop {
  background: #000c;
}
body.lector-activo {
  overflow: hidden;
}
#lector-pdf .lector-barra {
  display: flex;
  justify-content: space-between;
  align-items: center;
  flex-wrap: wrap;
  gap: 10px;
}
#lector-pdf .lector-datos {
  max-height: 18vh;
  overflow: auto;
}
#lector-pdf .lector-datos h2 {
  margin: 0;
  font-size: 22px;
  line-height: 1.3;
}
#lector-pdf .lector-datos p {
  margin: 4px 0 0;
  color: var(--secundario);
  font-size: 14px;
}
#lector-marco {
  display: block;
  width: 100%;
  height: 100%;
  min-width: 0;
  min-height: 0;
  border: 0;
  border-radius: 8px;
  background: var(--superficie);
}
#lector-pdf .lector-ayuda {
  margin: 0;
  color: var(--secundario);
  font-size: 14px;
}
@media (max-width: 650px) {
  #lector-pdf {
    width: 100%;
    height: 100vh;
    height: 100dvh;
    padding: 10px;
    border-radius: 0;
  }
  #lector-pdf .lector-barra .boton-secundario {
    padding: 8px 10px;
    font-size: 14px;
  }
}
/* FIN: CORRECCIÓN DEL TAMAÑO DEL LECTOR */
/* INICIO: AJUSTES INSTITUCIONALES PARA TABLET Y CELULAR */
@media (max-width: 1050px) {
  .encabezado-contenido { gap: 20px; }
  .marca-institucional { flex-basis: 390px; }
  .encabezado-controles { gap: 10px; }
  .menu a { padding-inline: 10px; }
}
@media (max-width: 900px) {
  .encabezado { position: static; }
  .encabezado-contenido { flex-direction: column; align-items: stretch; gap: 14px; }
  .marca-institucional { flex: none; width: min(100%, 490px); }
  .encabezado-controles { justify-content: space-between; width: 100%; }
  .portada-institucional { grid-template-columns: 1fr; gap: 24px; }
  .portada-institucional .bienvenida { max-width: 720px; padding-bottom: 0; }
  .pumas-bienvenida { width: min(65%, 300px); justify-self: center; }
}
@media (max-width: 700px) {
  .encabezado .menu { order: 0; width: auto; flex: 1; }
  .encabezado .menu a { padding: 8px; }
  .encabezado-controles { flex-wrap: wrap; }
  .marca-leyenda { font-size: 10px; letter-spacing: 1.5px; }
  .logo-institucional { max-height: none; }
  .portada-institucional .bienvenida h1 { font-size: clamp(34px, 8.5vw, 50px); }
  .pumas-bienvenida { padding: 0; border-radius: 0; }
}
@media (max-width: 380px) {
  .encabezado-controles { gap: 12px; }
  .encabezado .menu { flex-basis: 100%; }
  .encabezado #cambiar-tema { margin-left: auto; }
  .acciones > * { width: 100%; }
}
/* FIN: AJUSTES INSTITUCIONALES */

/* EDIFICIOS · colores locales; el encabezado conserva el verde institucional. */
[data-edificio="edificio-1"], [data-edificio="general"] { --ed-acento:#83e39a; --ed-tinta:#092d20; --ed-velo:#83e39a10; }
[data-edificio="edificio-2"] { --ed-acento:#75d9eb; --ed-tinta:#07343e; --ed-velo:#75d9eb10; }
[data-edificio="edificio-3"] { --ed-acento:#efbe72; --ed-tinta:#3f2a09; --ed-velo:#efbe7210; }
[data-tema="claro"] [data-edificio="edificio-1"], [data-tema="claro"] [data-edificio="general"] { --ed-acento:#1b7340; --ed-tinta:#fff; }
[data-tema="claro"] [data-edificio="edificio-2"] { --ed-acento:#08687b; --ed-tinta:#fff; }
[data-tema="claro"] [data-edificio="edificio-3"] { --ed-acento:#8c570d; --ed-tinta:#fff; }
#catalogo[data-edificio] { --verde:var(--ed-acento); --texto-boton:var(--ed-tinta); }
.ed-rejilla { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:22px; }
.ed-rejilla.ed-rejilla-carreras { grid-template-columns:repeat(2,minmax(0,1fr)); }
.ed-tarjeta { display:flex; flex-direction:column; min-width:0; padding:26px; border:1px solid var(--borde); border-top:3px solid var(--ed-acento); border-radius:18px; background:linear-gradient(145deg,var(--ed-velo),transparent),var(--superficie); text-decoration:none; color:var(--texto); transition:transform .2s,border-color .2s; }
.ed-tarjeta:hover { transform:translateY(-4px); border-color:var(--ed-acento); }
.ed-tarjeta:focus-visible { outline:3px solid var(--ed-acento); outline-offset:4px; }
.ed-tarjeta h2 { font-size:clamp(21px,2vw,28px); line-height:1.25; margin:14px 0; overflow-wrap:anywhere; }
.ed-tarjeta p,.ed-carreras-nombres { font-size:15px; line-height:1.7; color:var(--secundario); }
.ed-carreras-nombres { padding-left:18px; margin:0 0 25px; }
.ed-carreras-nombres li+li { margin-top:10px; }
.ed-etiqueta { font-size:10px; font-weight:750; letter-spacing:.13em; color:var(--ed-acento); }
.ed-accion { margin-top:auto; padding-top:20px; color:var(--ed-acento); font-size:14px; font-weight:650; }
.ed-dibujo { margin:18px 0 0; background:var(--ed-velo); border-radius:12px; overflow:hidden; }
.ed-arte { display:block; width:100%; max-height:225px; fill:none; stroke:var(--ed-acento); stroke-width:2.5; stroke-linecap:round; stroke-linejoin:round; }
.ed-fondo { opacity:.13; stroke-width:1; }
.ed-giro { animation:ed-girar 16s linear infinite; }
.ed-flujo { animation:ed-fluir 5s linear infinite; }
.ed-latido { animation:ed-latir 4s ease-in-out infinite; }
.ed-caja { animation:ed-transportar 5s ease-in-out infinite alternate; }
.ed-brazo { transform-origin:133px 136px; animation:ed-balancear 6s ease-in-out infinite alternate; }
.ed-herramienta { transform-origin:220px 88px; animation:ed-ajustar 5s ease-in-out infinite alternate; }
.ed-barras { transform-origin:140px 149px; animation:ed-crecer 5s ease-in-out infinite alternate; }
.ed-trazo { stroke-dasharray:250; animation:ed-dibujar 5s ease-in-out infinite alternate; }
.ed-banner { display:flex; align-items:center; gap:35px; padding:18px 30px; margin:20px 0 32px; background:linear-gradient(100deg,var(--ed-velo),transparent); border:1px solid var(--borde); border-radius:18px; }
.ed-banner-arte { width:240px; flex-shrink:0; }
.ed-banner p { font-size:clamp(17px,2vw,23px); color:var(--secundario); max-width:600px; }
.ed-control-movimiento { display:flex; justify-content:flex-end; }
.ed-control-movimiento button { font-size:12px; padding:9px 14px; }
#catalogo[data-edificio="edificio-2"] #estado-catalogo,#catalogo[data-edificio="edificio-3"] #estado-catalogo { border:1px dashed var(--ed-acento); background:var(--ed-velo); }
.ed-inicio-edificios { margin:55px 0; }
.ed-inicio-edificios>p,#inicio .b3-areas>p { color:var(--secundario); margin-bottom:25px; }
.ed-pausado .ed-arte * { animation-play-state:paused!important; }
.vista[hidden] .ed-arte * { animation-play-state:paused; }
@keyframes ed-girar { to { transform:rotate(360deg); } }
@keyframes ed-fluir { to { stroke-dashoffset:-60; } }
@keyframes ed-latir { 50% { opacity:.35; } }
@keyframes ed-transportar { to { transform:translateX(85px); } }
@keyframes ed-balancear { to { transform:rotate(-8deg); } }
@keyframes ed-ajustar { to { transform:rotate(12deg); } }
@keyframes ed-crecer { from { transform:scaleY(.65); } to { transform:scaleY(1); } }
@keyframes ed-dibujar { from { stroke-dashoffset:220; } to { stroke-dashoffset:0; } }
@media(max-width:900px) { .ed-rejilla { grid-template-columns:1fr; } .ed-dibujo .ed-arte { max-height:170px; } }
@media(max-width:650px) { .ed-rejilla.ed-rejilla-carreras { grid-template-columns:1fr; } .ed-banner { flex-direction:column; gap:0; padding:16px; } .ed-banner-arte { width:min(100%,260px); } .ed-tarjeta { padding:22px; } }
@media(prefers-reduced-motion:reduce) { .ed-arte * { animation:none!important; } .ed-tarjeta { transition:none; } .ed-tarjeta:hover { transform:none; } }