:root{
  --noche:#0e1122; --tinta:#171b36; --tinta2:#20254a; --linea:#2b3160;
  --oro:#d4a64a; --oro-claro:#ecc877; --marfil:#f3eee2; --niebla:#9096b3; --brasa:#ff8a70; --ok:#7fd6a4;
  --r:14px;
  --display:"Bricolage Grotesque",system-ui,sans-serif; --texto:"Hanken Grotesk",system-ui,sans-serif;
}
*{box-sizing:border-box;margin:0}
html{-webkit-text-size-adjust:100%}
body{background:var(--noche);color:var(--marfil);font:400 16px/1.55 var(--texto);min-height:100vh}
a{color:inherit}
button,input,textarea{font:inherit;color:inherit}
:focus-visible{outline:2px solid var(--oro-claro);outline-offset:3px;border-radius:6px}
.boot{min-height:100vh;display:grid;place-items:center}
.spin{width:30px;height:30px;border-radius:50%;border:3px solid var(--linea);border-top-color:var(--oro);animation:g 0.9s linear infinite;display:inline-block}
@keyframes g{to{transform:rotate(360deg)}}

/* ---------- entrada ---------- */
.entrada{min-height:100vh;display:grid;grid-template-columns:1.05fr 1fr}
.entrada .marca{position:relative;padding:48px 56px;display:flex;flex-direction:column;justify-content:space-between;
  background:radial-gradient(1200px 600px at 20% 110%,#2a2f66 0%,transparent 60%),linear-gradient(160deg,#141836,#0b0e20);overflow:hidden}
.entrada .marca::after{content:"";position:absolute;right:-140px;top:-140px;width:420px;height:420px;border-radius:50%;border:1px solid #d4a64a33;box-shadow:0 0 0 60px #d4a64a0d,0 0 0 130px #d4a64a08}
.entrada .marca img{width:150px;height:auto;position:relative;z-index:1}
.entrada .marca h2{font:800 clamp(34px,4.2vw,56px)/1.04 var(--display);letter-spacing:-.02em;max-width:12ch;position:relative;z-index:1}
.entrada .marca p{color:var(--niebla);max-width:36ch;margin-top:16px;position:relative;z-index:1}
.entrada .form{display:flex;align-items:center;justify-content:center;padding:40px 28px}
.caja{width:100%;max-width:400px}
.caja h1{font:700 30px/1.15 var(--display);letter-spacing:-.01em;margin-bottom:8px}
.caja .sub{color:var(--niebla);margin-bottom:26px}
label{display:block;font-weight:500;font-size:14px;margin:16px 0 6px}
input[type=email],input[type=password],input[type=text],textarea{width:100%;background:var(--tinta);border:1px solid var(--linea);border-radius:10px;padding:13px 14px;color:var(--marfil)}
input:focus,textarea:focus{border-color:var(--oro);outline:none;box-shadow:0 0 0 3px #d4a64a33}
.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;background:var(--oro);color:#17140a;border:0;border-radius:999px;padding:13px 26px;font-weight:600;cursor:pointer;text-decoration:none;transition:background .15s}
.btn:hover{background:var(--oro-claro)}
.btn[disabled]{opacity:.55;cursor:default}
.btn.full{width:100%;margin-top:22px}
.btn.sec{background:transparent;color:var(--marfil);border:1px solid var(--linea)}
.btn.sec:hover{background:var(--tinta)}
.link{background:none;border:0;color:var(--oro-claro);cursor:pointer;text-decoration:underline;text-underline-offset:3px;padding:0}
.aux{margin-top:18px;font-size:14px;color:var(--niebla)}
.msg{margin-top:16px;padding:12px 14px;border-radius:10px;font-size:14px;border:1px solid}
.msg.err{background:#ff8a7014;border-color:#ff8a7055;color:#ffc5b8}
.msg.ok{background:#7fd6a414;border-color:#7fd6a455;color:#c4f1d6}
.reglas{font-size:13px;color:var(--niebla);margin-top:8px}

/* ---------- barra ---------- */
.barra{position:sticky;top:0;z-index:20;display:flex;align-items:center;gap:22px;padding:14px clamp(18px,4vw,48px);
  background:linear-gradient(#0e1122ee,#0e1122cc);backdrop-filter:blur(10px);border-bottom:1px solid #ffffff0d}
.barra img{height:34px;width:auto;cursor:pointer}
.barra nav{display:flex;gap:6px;flex:1}
.barra nav a{padding:8px 14px;border-radius:999px;text-decoration:none;color:var(--niebla);font-weight:500;font-size:15px}
.barra nav a:hover,.barra nav a[aria-current=page]{color:var(--marfil);background:var(--tinta)}
.barra .yo{color:var(--niebla);font-size:14px;display:flex;align-items:center;gap:14px}

/* ---------- portada ---------- */
.hero{position:relative;padding:clamp(36px,7vw,84px) clamp(18px,4vw,48px) clamp(34px,5vw,56px);
  background:radial-gradient(900px 420px at 85% 0%,#d4a64a26,transparent 60%),linear-gradient(180deg,#171b3a,var(--noche));border-bottom:1px solid #ffffff0a}
.hero .peq{color:var(--oro-claro);font-weight:600;font-size:14px;margin-bottom:14px}
.hero h1{font:800 clamp(38px,6.4vw,84px)/.98 var(--display);letter-spacing:-.03em;max-width:15ch}
.hero p{color:var(--niebla);max-width:52ch;margin:18px 0 28px;font-size:17px}
.hero .acc{display:flex;gap:12px;flex-wrap:wrap;align-items:center}
.prog{height:4px;background:var(--linea);border-radius:4px;overflow:hidden;min-width:140px}
.prog>i{display:block;height:100%;background:var(--oro)}
.fila{padding:34px clamp(18px,4vw,48px) 6px}
.fila h2{font:700 21px/1.2 var(--display);margin-bottom:16px}
.carril{display:grid;grid-template-columns:repeat(auto-fill,minmax(250px,1fr));gap:18px}
.tarjeta{position:relative;display:flex;flex-direction:column;text-align:left;background:var(--tinta);border:1px solid var(--linea);border-radius:var(--r);overflow:hidden;cursor:pointer;padding:0;transition:transform .2s,border-color .2s}
.tarjeta:hover{transform:translateY(-4px);border-color:var(--oro)}
.portada{aspect-ratio:16/10;display:flex;align-items:flex-end;padding:18px;background-size:cover;background-position:center;position:relative}
.portada b{font:800 24px/1.05 var(--display);letter-spacing:-.02em;max-width:11ch;text-shadow:0 2px 18px #0009}
.tarjeta .pie{padding:14px 16px 16px;display:flex;flex-direction:column;gap:10px;font-size:14px;color:var(--niebla)}
.cand{position:absolute;top:12px;right:12px;background:#0e1122cc;border:1px solid var(--linea);border-radius:999px;padding:4px 10px;font-size:12px;color:var(--marfil)}
.tarjeta.bloq .portada{filter:grayscale(.7) brightness(.7)}
.vacio{color:var(--niebla);padding:26px;border:1px dashed var(--linea);border-radius:var(--r)}

/* ---------- curso ---------- */
.curso{display:grid;grid-template-columns:minmax(0,1fr) 360px;gap:0;min-height:calc(100vh - 62px)}
.escena{padding:clamp(18px,3vw,36px)}
.vol{display:inline-block;color:var(--niebla);text-decoration:none;font-size:14px;margin-bottom:16px}
.vol:hover{color:var(--marfil)}
.video{aspect-ratio:16/9;background:#06070f;border-radius:var(--r);overflow:hidden;border:1px solid var(--linea);display:grid;place-items:center}
.video video,.video iframe{width:100%;height:100%;border:0;background:#000}
.video .sinv{color:var(--niebla);text-align:center;padding:24px}
.escena h1{font:700 clamp(24px,3vw,34px)/1.15 var(--display);letter-spacing:-.01em;margin:22px 0 8px}
.escena .desc{color:var(--niebla);max-width:70ch;white-space:pre-line}
.escena .acc{display:flex;gap:12px;margin-top:20px;flex-wrap:wrap}
.lateral{border-left:1px solid #ffffff0d;background:var(--tinta);padding:20px 0;overflow:auto;max-height:calc(100vh - 62px);position:sticky;top:62px}
.lateral .tabs{display:flex;gap:6px;padding:0 18px 14px}
.lateral .tabs button{background:none;border:1px solid transparent;color:var(--niebla);padding:7px 14px;border-radius:999px;cursor:pointer;font-weight:500}
.lateral .tabs button[aria-pressed=true]{color:var(--marfil);background:var(--tinta2);border-color:var(--linea)}
.mod{border-top:1px solid #ffffff0d}
.mod>h3{font:600 15px/1.3 var(--display);padding:14px 18px 6px;color:var(--oro-claro)}
.lec{display:flex;gap:12px;align-items:flex-start;width:100%;text-align:left;background:none;border:0;padding:10px 18px;cursor:pointer;color:var(--marfil)}
.lec:hover{background:var(--tinta2)}
.lec[aria-current=true]{background:var(--tinta2);box-shadow:inset 3px 0 var(--oro)}
.lec .pt{flex:none;width:20px;height:20px;border-radius:50%;border:1.5px solid var(--niebla);margin-top:2px;display:grid;place-items:center;font-size:12px}
.lec.hecha .pt{background:var(--ok);border-color:var(--ok);color:#0a2415}
.lec small{display:block;color:var(--niebla)}
.rec{padding:14px 18px;border-top:1px solid #ffffff0d}
.rec h4{font:600 15px var(--display);margin-bottom:6px}
.rec .tipo{font-size:12px;color:var(--oro-claro);margin-bottom:6px}
.rec pre{white-space:pre-wrap;background:var(--noche);border:1px solid var(--linea);border-radius:10px;padding:12px;font:13px/1.5 ui-monospace,Consolas,monospace;max-height:220px;overflow:auto;margin:8px 0}
.rec .mini{padding:7px 14px;font-size:13px}

dialog{background:var(--tinta);color:var(--marfil);border:1px solid var(--linea);border-radius:var(--r);padding:26px;max-width:440px;width:calc(100% - 32px)}
dialog::backdrop{background:#05060fcc}
dialog h3{font:700 22px var(--display);margin-bottom:10px}
dialog p{color:var(--niebla);margin-bottom:18px;white-space:pre-line}
dialog .acc{display:flex;gap:10px;flex-wrap:wrap}

@media (max-width:900px){
  .entrada{grid-template-columns:1fr}
  .entrada .marca{padding:28px 24px;min-height:210px}
  .entrada .marca h2{font-size:30px}
  .curso{grid-template-columns:1fr}
  .lateral{position:static;max-height:none;border-left:0;border-top:1px solid #ffffff0d}
  .barra .yo span{display:none}
}
@media (prefers-reduced-motion:reduce){*{animation:none!important;transition:none!important}}
