:root{
  --noche:#001b34;--azul:#0c3b5c;--acento:#065c86;--celeste:#c7dde1;--tinta:#02030b;
  --gris:#3d5560;--suave:#e3eef0;--fondo:#f4f8f9;--borde:#d5e4e8;
  --gota-a:#06707f;--gota-b:#2f8f45;--gota-osc:#0b5b4f;
  --display:'Bricolage Grotesque',system-ui,sans-serif;
  --texto:'Atkinson Hyperlegible',system-ui,sans-serif;
}
*{box-sizing:border-box}
html{scroll-behavior:smooth;-webkit-text-size-adjust:100%}
body{margin:0;background:var(--fondo);color:var(--tinta);font-family:var(--texto);font-size:17px;line-height:1.6}
img{max-width:100%;display:block}
::selection{background:var(--celeste);color:var(--noche)}
a{color:var(--acento);text-underline-offset:3px}
a:hover{color:var(--azul)}
:focus-visible{outline:3px solid var(--acento);outline-offset:3px;border-radius:6px}
.oscuro :focus-visible,.cabecera :focus-visible{outline-color:var(--celeste)}
h1,h2,h3{font-family:var(--display);color:var(--noche);margin:0;letter-spacing:-.025em;text-wrap:balance}
h1{font-weight:800;line-height:1.02}
h2{font-weight:800;font-size:clamp(30px,4vw,48px);line-height:1.05}
h3{font-weight:800;font-size:22px;line-height:1.2}
p{margin:0}
.envoltura{max-width:1200px;margin:0 auto;padding:0 24px}
.seccion{padding:88px 0}
.fila{display:flex;flex-wrap:wrap;gap:24px}
.saltar{position:absolute;left:-999px;top:8px;background:#fff;color:var(--noche);padding:10px 14px;border-radius:8px;z-index:100}
.saltar:focus{left:8px}
.oscuro{background:var(--noche);color:#fff}
.oscuro h1,.oscuro h2,.oscuro h3{color:#fff}

/* Cabecera */
.cabecera{position:sticky;top:0;z-index:50;background:rgba(0,27,52,.94);backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px);color:#fff;border-bottom:1px solid rgba(199,221,225,.12)}
.cabecera .envoltura{display:flex;align-items:center;justify-content:space-between;gap:20px;min-height:72px}
.marca{display:flex;align-items:center;gap:12px;color:#fff;text-decoration:none}
.marca img{height:46px;width:auto}
.marca span{line-height:1.2}
.marca strong{display:block;font-family:var(--display);font-size:18px}
.marca small{display:block;font-size:13px;color:var(--celeste)}
.menu{display:flex;align-items:center;gap:4px}
.menu>li{position:relative;list-style:none}
.menu ul{margin:0;padding:0;list-style:none}.menu .sub li{list-style:none}
.menu a,.menu button{display:flex;align-items:center;gap:6px;min-height:44px;padding:0 12px;border-radius:10px;color:#e3eef0;text-decoration:none;font:inherit;font-size:16px;font-weight:700;background:none;border:0;cursor:pointer}
.menu a:hover,.menu button:hover,.menu [aria-current=page]{color:#fff;background:rgba(199,221,225,.1)}
.menu .sub{position:absolute;top:100%;left:0;min-width:220px;padding:8px;background:var(--noche);border:1px solid rgba(199,221,225,.18);border-radius:14px;box-shadow:0 20px 40px -12px rgba(0,0,0,.5);display:none}
.menu li:hover>.sub,.menu li:focus-within>.sub,.menu .abierto>.sub{display:block}
.menu .sub a{font-weight:400}
.menu .boton-aula{background:#fff;color:var(--noche);margin-left:8px}
.menu .boton-aula:hover{background:var(--celeste);color:var(--noche)}
.hamburguesa{display:none;width:44px;height:44px;border-radius:10px;border:1px solid rgba(199,221,225,.3);background:none;color:#fff;cursor:pointer;align-items:center;justify-content:center}
@media (max-width:980px){
  .hamburguesa{display:flex}
  .menu{display:none;position:absolute;top:72px;left:0;right:0;flex-direction:column;align-items:stretch;gap:2px;padding:12px 16px 20px;background:var(--noche);border-bottom:1px solid rgba(199,221,225,.15);max-height:calc(100vh - 72px);overflow:auto}
  .menu.visible{display:flex}
  .menu .sub{position:static;display:block;border:0;box-shadow:none;padding:0 0 6px 14px;background:none}
  .menu .boton-aula{margin:8px 0 0;justify-content:center}
}

/* Botones */
.boton{display:inline-flex;align-items:center;justify-content:center;gap:10px;min-height:52px;padding:0 22px;border-radius:12px;font-weight:700;font-size:17px;text-decoration:none;border:2px solid transparent;transition:background-color .15s ease,color .15s ease,transform .2s cubic-bezier(.16,1,.3,1)}
.boton:active{transform:scale(.98)}
.boton.blanco{background:#fff;color:var(--noche)}.boton.blanco:hover{background:var(--celeste);color:var(--noche)}
.boton.solido{background:var(--noche);color:#fff}.boton.solido:hover{background:var(--azul);color:#fff}
.boton.contorno{border-color:currentColor;color:var(--noche)}.boton.contorno:hover{background:var(--noche);color:#fff;border-color:var(--noche)}
.oscuro .boton.contorno,.portada .boton.contorno{color:#fff}
.oscuro .boton.contorno:hover,.portada .boton.contorno:hover{background:#fff;color:var(--noche);border-color:#fff}

/* Portada */
.portada{position:relative;overflow:hidden;min-height:min(92vh,820px);display:flex;align-items:flex-end;background:var(--noche);color:#fff}
.portada .fotos,.portada .velo,.portada svg.circuito{position:absolute;inset:0}
.portada .foto{position:absolute;inset:0;opacity:0;animation:pasa 21s linear infinite both}
.portada .foto img{width:100%;height:100%;object-fit:cover;animation:acerca 21s ease-out infinite both}
.portada .f2,.portada .f2 img{animation-delay:7s}.portada .f3,.portada .f3 img{animation-delay:14s}
@keyframes pasa{0%{opacity:0}5%{opacity:1}33%{opacity:1}38%{opacity:0}100%{opacity:0}}
@keyframes acerca{0%{transform:scale(1.1)}38%{transform:scale(1.02)}100%{transform:scale(1.02)}}
.portada .velo{background:linear-gradient(to top,rgba(0,27,52,.96) 0%,rgba(0,27,52,.72) 45%,rgba(0,27,52,.3) 100%)}
.circuito{width:100%;height:100%;pointer-events:none}
.pulso{stroke-dasharray:50 1400;stroke-dashoffset:1450;animation:viaja 8s linear infinite}
.pulso.p2{animation-delay:-3s;animation-duration:9s}.pulso.p3{animation-delay:-5.5s;animation-duration:7.5s}
@keyframes viaja{to{stroke-dashoffset:0}}
.portada .contenido{position:relative;width:100%;padding:150px 0 140px}
.portada h1{font-size:clamp(42px,6.4vw,92px);max-width:14ch;color:#fff}
.portada .lema{animation:lema 1.1s cubic-bezier(.16,1,.3,1) .15s both}
@keyframes lema{from{clip-path:inset(0 0 100% 0);transform:translateY(20px)}to{clip-path:inset(0);transform:none}}
.portada .bajada{margin-top:22px;font-size:20px;color:#e3eef0;max-width:52ch}
.portada .acciones{margin-top:32px;display:flex;flex-wrap:wrap;gap:12px}
.indicadores{position:absolute;left:24px;right:24px;bottom:28px;display:flex;gap:8px;max-width:1152px;margin:0 auto}
.indicadores span{flex:1;height:3px;border-radius:2px;background:rgba(199,221,225,.3);overflow:hidden}
.indicadores i{display:block;height:100%;background:#fff;transform-origin:0 50%;transform:scaleX(0);animation:llena 21s linear infinite}
.indicadores span:nth-child(2) i{animation-delay:7s}.indicadores span:nth-child(3) i{animation-delay:14s}
@keyframes llena{0%{transform:scaleX(0)}33.3%{transform:scaleX(1)}33.4%,100%{transform:scaleX(0)}}

/* Cabecera de página interna */
.titular{position:relative;overflow:hidden;background:var(--noche);color:#fff}
.titular img.fondo{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}
.titular .velo{position:absolute;inset:0;background:linear-gradient(100deg,rgba(0,27,52,.97) 0%,rgba(0,27,52,.88) 55%,rgba(12,59,92,.7) 100%)}
.titular .envoltura{position:relative;padding-top:72px;padding-bottom:72px}
.titular h1{font-size:clamp(38px,5vw,64px);color:#fff}
.titular p{margin-top:14px;font-size:19px;color:#e3eef0;max-width:58ch}
.ruta{font-size:15px;color:var(--celeste);margin-bottom:14px}
.ruta a{color:var(--celeste)}

/* Componentes */
.tarjeta{background:#fff;border:1px solid var(--borde);border-radius:20px;padding:28px}
.foto-redonda{width:100%;object-fit:cover;border-radius:22px;background:var(--celeste)}
.dato strong{display:block;font-family:var(--display);font-weight:800;font-size:44px;line-height:1;color:var(--noche)}
.dato span{color:var(--gris);font-size:15px}
.accesos{position:relative;margin-top:-64px;z-index:2}
.accesos .panel{background:#fff;border-radius:22px;box-shadow:0 24px 48px -20px rgba(0,27,52,.4);padding:22px}
.accesos ul{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(auto-fit,minmax(230px,1fr));gap:8px}
.acceso{display:flex;align-items:center;gap:14px;min-height:64px;padding:10px 14px;border-radius:14px;text-decoration:none;color:var(--noche);font-weight:700;transition:background-color .15s ease,transform .2s cubic-bezier(.16,1,.3,1)}
.acceso:hover{background:#eef4f6;color:var(--noche);transform:translateY(-2px)}
.acceso small{display:block;font-weight:400;color:var(--gris);font-size:14px;line-height:1.35}
.icono{flex:none;width:44px;height:44px;border-radius:12px;display:flex;align-items:center;justify-content:center}
.externos{margin-top:16px;padding-top:16px;border-top:1px solid var(--suave);display:flex;flex-wrap:wrap;gap:8px 24px;font-size:15px}
.nivel{flex:1 1 280px;display:flex;flex-direction:column;gap:10px;min-height:240px;text-decoration:none;color:inherit;transition:border-color .15s ease,transform .2s cubic-bezier(.16,1,.3,1)}
.nivel:hover{border-color:var(--acento);transform:translateY(-3px);color:inherit}
.nivel .mas{margin-top:auto;font-weight:700;color:var(--acento)}
.nivel.destacado{position:relative;overflow:hidden;background:var(--noche);border-color:var(--noche);color:#fff}
.nivel.destacado h3{color:#fff}.nivel.destacado .mas{color:var(--celeste)}
.nivel.destacado img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;opacity:.22}
.nivel.destacado>*{position:relative}
.paso{flex:1 1 260px;display:flex;flex-direction:column;gap:10px}
.num{width:42px;height:42px;border-radius:50%;background:var(--noche);color:#fff;font-weight:700;display:flex;align-items:center;justify-content:center}
.video{position:relative;width:100%;aspect-ratio:16/9;border-radius:16px;overflow:hidden;background:var(--noche)}
.video iframe{position:absolute;inset:0;width:100%;height:100%;border:0}
dl.datos{margin:0;display:grid;gap:16px}dl.datos dt{font-weight:700;color:var(--noche)}dl.datos dd{margin:2px 0 0;color:var(--gris)}
.mapa{border-radius:22px;overflow:hidden;min-height:340px;background:var(--celeste)}
.mapa iframe{width:100%;height:100%;min-height:340px;border:0;display:block}
.lista-check{list-style:none;margin:0;padding:0;display:grid;gap:10px}
.lista-check li{display:flex;gap:10px;align-items:flex-start}
.lista-check svg{flex:none;margin-top:3px}
.nota{background:#eef4f6;border:1px solid var(--borde);border-radius:14px;padding:16px 18px;color:var(--gris)}
.app-frame{width:100%;border:0;border-radius:18px;background:#fff;min-height:720px;box-shadow:0 20px 40px -24px rgba(0,27,52,.4)}

@media (max-width:700px){.portada svg.circuito{display:none}.portada .contenido{padding:120px 0 110px}}

/* Revelado al desplazarse */
.revela{opacity:0;transform:translateY(22px);transition:opacity .8s cubic-bezier(.16,1,.3,1),transform .8s cubic-bezier(.16,1,.3,1)}
.revela.visto{opacity:1;transform:none}

/* Pie */
.pie{background:var(--noche);color:var(--celeste);font-size:15px}
.pie a{color:var(--celeste)}.pie a:hover{color:#fff}
.pie .envoltura.fila{padding-top:56px;padding-bottom:28px;justify-content:space-between;gap:32px}
.pie nav{display:flex;flex-direction:column;gap:8px}
.pie .titulo{font-weight:700;color:#fff;margin-bottom:4px}
.pie .creditos{border-top:1px solid var(--azul);padding-top:18px;padding-bottom:28px;display:flex;flex-wrap:wrap;justify-content:space-between;gap:10px;font-size:14px}

@media (prefers-reduced-motion:reduce){
  html{scroll-behavior:auto}
  .portada .foto,.portada .foto img,.pulso,.indicadores i,.portada .lema{animation:none}
  .portada .f1{opacity:1}.pulso{opacity:0}
  .revela{opacity:1;transform:none;transition:none}
}

/* ===== Capa de movimiento: el "circuito" como lenguaje del sitio ===== */
.cabecera{transition:background-color .3s ease,box-shadow .3s ease}
.cabecera.compacta{background:rgba(0,27,52,.98);box-shadow:0 10px 30px -18px rgba(0,0,0,.6)}
.cabecera .envoltura{transition:min-height .3s cubic-bezier(.16,1,.3,1)}
.cabecera.compacta .envoltura{min-height:60px}

/* Cabeceras internas: foto que se acerca, circuito que late y título que se revela */
.titular img.fondo{animation:acercaLento 18s ease-out both}
@keyframes acercaLento{from{transform:scale(1.12)}to{transform:scale(1)}}
.titular .circuito{position:absolute;inset:0;width:100%;height:100%}
.titular h1{animation:lema 1s cubic-bezier(.16,1,.3,1) .1s both}
.titular p,.titular .ruta{animation:aparece .9s cubic-bezier(.16,1,.3,1) .35s both}
@keyframes aparece{from{opacity:0;transform:translateY(14px)}to{opacity:1;transform:none}}
.titular .linea-luz{position:absolute;left:0;right:0;bottom:0;height:3px;background:linear-gradient(90deg,transparent,var(--celeste),transparent);background-size:40% 100%;background-repeat:no-repeat;animation:barre 4.5s cubic-bezier(.45,0,.55,1) infinite}
@keyframes barre{from{background-position:-40% 0}to{background-position:140% 0}}

/* Revelado escalonado de listas (máximo ~0.4 s de retraso total) */
.grupo .revela:nth-child(2){transition-delay:.08s}
.grupo .revela:nth-child(3){transition-delay:.16s}
.grupo .revela:nth-child(4){transition-delay:.24s}
.revela.foto-redonda,.revela img.foto-redonda{clip-path:inset(8% 8% 8% 8% round 22px);transition:opacity .9s cubic-bezier(.16,1,.3,1),transform .9s cubic-bezier(.16,1,.3,1),clip-path 1.1s cubic-bezier(.16,1,.3,1)}
.revela.visto.foto-redonda,.revela.visto img.foto-redonda{clip-path:inset(0 0 0 0 round 22px)}

/* Tarjetas y accesos: respuesta al puntero */
.tarjeta{transition:border-color .2s ease,box-shadow .25s ease,transform .25s cubic-bezier(.16,1,.3,1)}
a.tarjeta:hover,.paso:hover{box-shadow:0 22px 40px -26px rgba(0,27,52,.45);transform:translateY(-4px)}
.paso .num{transition:transform .3s cubic-bezier(.16,1,.3,1),background-color .2s ease}
.paso:hover .num{transform:scale(1.12);background:var(--acento)}
.boton svg{transition:transform .2s cubic-bezier(.16,1,.3,1)}
.boton:hover svg{transform:translateX(3px)}

/* Gotagantsi: energía del degradado, búho que flota, teléfono que entra */
.gota-vivo{background-size:220% 220% !important;animation:fluye 14s ease-in-out infinite alternate}
@keyframes fluye{from{background-position:0% 40%}to{background-position:100% 60%}}
.flota{animation:flota 6s ease-in-out infinite}
@keyframes flota{0%,100%{transform:translateY(0) rotate(0)}50%{transform:translateY(-12px) rotate(-1.5deg)}}
.telefono{position:relative;width:min(270px,72vw);aspect-ratio:9/19.5;border-radius:38px;background:#02030b;padding:10px;box-shadow:0 40px 70px -28px rgba(0,30,20,.7),inset 0 0 0 2px rgba(255,255,255,.12)}
.telefono img{width:100%;height:100%;object-fit:cover;border-radius:30px}
.telefono::before{content:"";position:absolute;top:18px;left:50%;width:70px;height:6px;margin-left:-35px;border-radius:3px;background:#1b2230}
.revela.telefono{transform:translateY(40px) rotate(4deg)}
.revela.visto.telefono{transform:rotate(-3deg)}
.chispa{position:absolute;width:10px;height:10px;border-radius:50%;background:#ffd25a;box-shadow:0 0 14px 4px rgba(255,210,90,.6);animation:chispa 3.2s ease-in-out infinite}
.chispa.c2{animation-delay:-1.1s}.chispa.c3{animation-delay:-2.2s}
@keyframes chispa{0%,100%{opacity:0;transform:scale(.4) translateY(6px)}40%,60%{opacity:1;transform:scale(1) translateY(-8px)}}
.insignia-play{display:inline-flex;align-items:center;gap:12px;min-height:56px;padding:6px 18px 6px 8px;border-radius:14px;background:#02030b;color:#fff;text-decoration:none;font-weight:700;transition:transform .2s cubic-bezier(.16,1,.3,1),box-shadow .2s ease}
.insignia-play:hover{color:#fff;transform:translateY(-2px);box-shadow:0 14px 28px -14px rgba(0,0,0,.6)}
.insignia-play img{width:42px;height:42px;border-radius:10px}
.insignia-play small{display:block;font-weight:400;font-size:12px;color:#c7dde1;line-height:1}

/* Contadores */
.dato strong{font-variant-numeric:tabular-nums}

@media (prefers-reduced-motion:reduce){
  .titular img.fondo,.titular h1,.titular p,.titular .ruta,.titular .linea-luz,.gota-vivo,.flota,.chispa{animation:none}
  .revela.foto-redonda,.revela img.foto-redonda{clip-path:none}
  .revela.telefono,.revela.visto.telefono{transform:none}
  .cabecera .envoltura{transition:none}
}
