/*
 * PUESTO DE MANDO · CAPA MODERNA (03/10/2026)
 * -------------------------------------------
 * Va DESPUÉS del estilo original de estudio.html y solo lo pule: cristal,
 * luz, profundidad y movimiento. Si se quita esta hoja, la app sigue igual
 * que antes. Los colores de la casa (verde y oro) no cambian.
 */
:root{
  --r:18px;
  --glass:rgba(22,48,32,.62);
  --glass2:rgba(30,62,41,.72);
  --edge:rgba(230,199,102,.18);
  --edge2:rgba(243,234,208,.07);
  --glow:0 0 0 1px rgba(230,199,102,.10),0 18px 50px -18px rgba(0,0,0,.65);
  --lift:0 0 0 1px rgba(230,199,102,.28),0 26px 60px -20px rgba(0,0,0,.75),0 0 40px -12px rgba(201,162,39,.35);
  --ease:cubic-bezier(.2,.8,.2,1);
  --spring:cubic-bezier(.34,1.56,.64,1);
}

/* ---------- Fondo vivo: aurora lenta detrás de todo ---------- */
body{background:#07130C}
body::before,body::after{content:"";position:fixed;inset:-20vmax;z-index:-1;pointer-events:none}
body::before{
  background:
    radial-gradient(40vmax 40vmax at 15% 20%,rgba(79,179,126,.18),transparent 60%),
    radial-gradient(38vmax 38vmax at 85% 10%,rgba(201,162,39,.16),transparent 60%),
    radial-gradient(45vmax 45vmax at 70% 90%,rgba(46,110,70,.22),transparent 60%),
    radial-gradient(30vmax 30vmax at 10% 85%,rgba(230,199,102,.08),transparent 60%);
  filter:blur(10px);animation:obAurora 26s ease-in-out infinite alternate}
body::after{ /* rejilla táctica muy tenue */
  inset:0;background-image:linear-gradient(rgba(243,234,208,.025) 1px,transparent 1px),linear-gradient(90deg,rgba(243,234,208,.025) 1px,transparent 1px);
  background-size:44px 44px;mask-image:radial-gradient(ellipse at 50% 30%,#000 30%,transparent 75%)}
@keyframes obAurora{0%{transform:translate3d(0,0,0) rotate(0)}50%{transform:translate3d(3vmax,-2vmax,0) rotate(8deg)}100%{transform:translate3d(-2vmax,3vmax,0) rotate(-6deg)}}

/* ---------- Barra lateral de cristal ---------- */
.side{background:linear-gradient(180deg,rgba(13,32,21,.82),rgba(7,19,12,.9));backdrop-filter:blur(18px) saturate(140%);-webkit-backdrop-filter:blur(18px) saturate(140%);border-right:1px solid var(--edge)}
.brand img{filter:drop-shadow(0 6px 18px rgba(201,162,39,.35));transition:transform .6s var(--spring)}
.brand:hover img{transform:rotate(-8deg) scale(1.08)}
.nav button{position:relative;border-radius:12px;transition:background .25s var(--ease),color .25s,transform .25s var(--ease)}
.nav button:hover{background:rgba(243,234,208,.05);transform:translateX(3px)}
.nav button.on{background:linear-gradient(90deg,rgba(201,162,39,.20),rgba(201,162,39,.04));color:var(--gold2);box-shadow:inset 3px 0 0 var(--gold),0 8px 24px -14px rgba(201,162,39,.6)}
.nav button.on svg{filter:drop-shadow(0 0 8px rgba(230,199,102,.7))}

/* ---------- Tarjetas de cristal ---------- */
.card,.tcard,.titem{background:var(--glass);border:1px solid var(--edge2);border-radius:var(--r);box-shadow:var(--glow);backdrop-filter:blur(14px) saturate(130%);-webkit-backdrop-filter:blur(14px) saturate(130%);transition:transform .35s var(--ease),box-shadow .35s var(--ease),border-color .35s}
.card{position:relative;overflow:hidden}
.card::before{ /* filo de luz en el borde superior */
  content:"";position:absolute;inset:0;border-radius:inherit;padding:1px;pointer-events:none;
  background:linear-gradient(140deg,rgba(230,199,102,.35),transparent 35%,transparent 70%,rgba(79,179,126,.25));
  -webkit-mask:linear-gradient(#000 0 0) content-box,linear-gradient(#000 0 0);-webkit-mask-composite:xor;mask-composite:exclude;opacity:.55}
.tcard:hover,.titem:hover,.card.hov:hover{transform:translateY(-4px);box-shadow:var(--lift);border-color:var(--edge)}
.count{background:radial-gradient(120% 140% at 100% 0%,rgba(52,110,68,.85) 0%,rgba(18,42,27,.75) 55%),var(--glass)}
.count .big{background:linear-gradient(180deg,#FFF3C4,#E6C766 45%,#B88A12);-webkit-background-clip:text;background-clip:text;color:transparent;filter:drop-shadow(0 8px 26px rgba(201,162,39,.35))}

/* ---------- Títulos ---------- */
h1.t{background:linear-gradient(100deg,#FFF6D8 0%,#F3EAD0 40%,#E6C766 70%,#F3EAD0 100%);background-size:200% 100%;-webkit-background-clip:text;background-clip:text;color:transparent;animation:obBrillo 8s linear infinite}
@keyframes obBrillo{to{background-position:-200% 0}}
.eyebrow{display:inline-flex;align-items:center;gap:8px}
.eyebrow::before{content:"";width:18px;height:2px;border-radius:2px;background:linear-gradient(90deg,var(--gold),transparent)}

/* ---------- Botones ---------- */
.btn{border-radius:999px;position:relative;overflow:hidden;transition:transform .2s var(--spring),box-shadow .25s,background .25s,border-color .25s,color .25s}
.btn:active{transform:scale(.96)}
.btn.gold{background:linear-gradient(135deg,#F2D774,#C9A227 55%,#A8840F);border-color:transparent;box-shadow:0 10px 26px -10px rgba(201,162,39,.75),inset 0 1px 0 rgba(255,255,255,.35)}
.btn.gold:hover{background:linear-gradient(135deg,#FFE58A,#D8B135 55%,#B8921A);transform:translateY(-2px);box-shadow:0 16px 34px -12px rgba(201,162,39,.9),inset 0 1px 0 rgba(255,255,255,.45)}
.btn.gold::after{content:"";position:absolute;top:0;left:-60%;width:40%;height:100%;background:linear-gradient(100deg,transparent,rgba(255,255,255,.55),transparent);transform:skewX(-20deg);animation:obBarrido 4.5s ease-in-out infinite}
@keyframes obBarrido{0%,70%{left:-60%}100%{left:130%}}
.chip{backdrop-filter:blur(6px);background:rgba(243,234,208,.04)}
.optrow button{border-radius:999px;transition:all .25s var(--ease)}
.optrow button.on{box-shadow:0 0 0 1px var(--gold),0 8px 20px -10px rgba(201,162,39,.7)}

/* ---------- Entrada de pantallas y escalonado ---------- */
.view.ob-entra{animation:obEntra .55s var(--ease) both}
.view.ob-entra>*{animation:obSube .6s var(--ease) both}
.view.ob-entra>*:nth-child(2){animation-delay:.05s}.view.ob-entra>*:nth-child(3){animation-delay:.1s}
.view.ob-entra>*:nth-child(4){animation-delay:.15s}.view.ob-entra>*:nth-child(5){animation-delay:.2s}
.view.ob-entra>*:nth-child(n+6){animation-delay:.25s}
@keyframes obEntra{from{opacity:0}to{opacity:1}}
@keyframes obSube{from{opacity:0;transform:translateY(18px) scale(.985);filter:blur(4px)}to{opacity:1;transform:none;filter:none}}
.ob-aparece{opacity:0;transform:translateY(16px)}
.ob-aparece.ob-visto{opacity:1;transform:none;transition:opacity .6s var(--ease),transform .6s var(--ease)}

/* ---------- Anillos y barras con vida ---------- */
.rings svg circle:last-child,.ring svg circle:last-child{transition:stroke-dashoffset 1.2s var(--ease)}
.bar{border-radius:999px;overflow:hidden}
.bar i{background:linear-gradient(90deg,#B88A12,#E6C766,#FFF0B0);box-shadow:0 0 16px rgba(230,199,102,.55);transition:width 1.1s var(--ease)}

/* ---------- Test tipo examen: más limpio ---------- */
.scard,.exres{border-radius:20px}
.exhead{border-radius:16px;background:linear-gradient(90deg,rgba(20,48,31,.95),rgba(28,66,42,.95));backdrop-filter:blur(10px)}
.exop{border-radius:14px;transition:transform .18s var(--spring),box-shadow .2s,border-color .2s,background .2s}
.exop:hover:not([disabled]){transform:translateX(4px);border-color:#C9A227;box-shadow:0 6px 16px -8px rgba(0,0,0,.25)}
.exop.sel{animation:obPulso .35s var(--spring)}
@keyframes obPulso{50%{transform:scale(1.02)}}

/* ---------- Barra inferior del móvil ---------- */
#tabbar{backdrop-filter:blur(18px) saturate(150%);-webkit-backdrop-filter:blur(18px) saturate(150%);background:rgba(7,19,12,.78)!important;border-top:1px solid var(--edge)}
#tabbar button.on{color:var(--gold2)}
#tabbar button.on svg{filter:drop-shadow(0 0 8px rgba(230,199,102,.8));transform:translateY(-2px);transition:transform .3s var(--spring)}

/* ---------- Barra de desplazamiento ---------- */
*{scrollbar-width:thin;scrollbar-color:rgba(201,162,39,.35) transparent}
::-webkit-scrollbar{width:10px;height:10px}::-webkit-scrollbar-thumb{background:rgba(201,162,39,.3);border-radius:10px;border:3px solid transparent;background-clip:content-box}

/* ============================================================
   TEST INFINITO
   ============================================================ */
.inf-cta{position:relative;display:grid;grid-template-columns:auto 1fr auto;gap:18px;align-items:center;padding:22px 24px;border-radius:22px;cursor:pointer;
  background:radial-gradient(120% 160% at 0% 0%,rgba(230,199,102,.28),transparent 55%),linear-gradient(135deg,rgba(36,80,47,.92),rgba(13,32,21,.92));
  border:1px solid rgba(230,199,102,.35);box-shadow:0 24px 60px -24px rgba(201,162,39,.55);overflow:hidden;text-align:left;width:100%;color:var(--text)}
.inf-cta::after{content:"";position:absolute;inset:0;background:linear-gradient(110deg,transparent 30%,rgba(255,255,255,.08) 50%,transparent 70%);background-size:250% 100%;animation:obBrillo 5s linear infinite;pointer-events:none}
.inf-cta:hover{transform:translateY(-3px)}
.inf-cta .ico{width:64px;height:64px;border-radius:18px;display:grid;place-items:center;font-size:34px;background:rgba(7,19,12,.6);border:1px solid rgba(230,199,102,.3);box-shadow:inset 0 0 24px rgba(201,162,39,.25)}
.inf-cta .ico span{animation:obInf 3s ease-in-out infinite;display:block}
@keyframes obInf{50%{transform:scale(1.15) rotate(8deg)}}
.inf-cta b{display:block;font:400 32px/1 var(--f-disp);letter-spacing:1px;color:var(--cream)}
.inf-cta small{display:block;margin-top:6px;color:#C9D3C3;font-size:14px;line-height:1.45}
.inf-cta .go{font:700 13px var(--f-cond);letter-spacing:2px;text-transform:uppercase;padding:12px 18px;border-radius:999px;background:linear-gradient(135deg,#F2D774,#C9A227);color:#13230F;box-shadow:0 10px 26px -10px rgba(201,162,39,.8)}
@media (max-width:640px){.inf-cta{grid-template-columns:auto 1fr}.inf-cta .go{grid-column:1/-1;text-align:center}}

.inf{display:flex;flex-direction:column;gap:16px;max-width:860px;width:100%;margin:0 auto}
.inf-top{display:flex;align-items:center;gap:12px;flex-wrap:wrap;padding:12px 14px;border-radius:18px;background:rgba(13,32,21,.85);border:1px solid var(--edge);position:sticky;top:8px;z-index:5;backdrop-filter:blur(12px)}
.inf-top .ttl{flex:1;min-width:150px;font:700 13px var(--f-cond);letter-spacing:1.4px;text-transform:uppercase;color:var(--cream)}
.inf-top .ttl small{display:block;font:500 12px var(--f-body);letter-spacing:0;text-transform:none;color:var(--muted)}
.inf-stat{display:flex;flex-direction:column;align-items:center;min-width:58px}
.inf-stat b{font:400 26px/1 var(--f-disp);letter-spacing:.5px;color:var(--cream)}
.inf-stat small{font:700 10px var(--f-cond);letter-spacing:1.4px;text-transform:uppercase;color:var(--muted)}
.inf-stat.racha b{color:var(--gold2);text-shadow:0 0 18px rgba(230,199,102,.6)}
.inf-stat.racha.sube b{animation:obPop .5s var(--spring)}
@keyframes obPop{40%{transform:scale(1.5)}}
.inf-q{position:relative;background:#FBF8EF;color:#16261B;border-radius:22px;padding:22px 22px 18px;box-shadow:0 30px 70px -28px rgba(0,0,0,.8);animation:obQ .45s var(--ease) both}
@keyframes obQ{from{opacity:0;transform:translateY(24px) rotateX(8deg)}to{opacity:1;transform:none}}
.inf-q.mal{animation:obTiembla .45s ease}
@keyframes obTiembla{20%,60%{transform:translateX(-8px)}40%,80%{transform:translateX(8px)}}
.inf-q.bien{box-shadow:0 0 0 3px #4FB37E,0 30px 70px -28px rgba(0,0,0,.8)}
.inf-q .meta{display:flex;gap:8px;flex-wrap:wrap;margin-bottom:10px}
.inf-q .tag{font:700 11px var(--f-cond);letter-spacing:1.3px;text-transform:uppercase;padding:4px 10px;border-radius:999px;background:#EDE6CF;color:#3D5229}
.inf-q .tag.gen{background:#E3EEF7;color:#1F4E79}
.inf-q .enun{font:17px/1.5 var(--f-body);margin:0 0 12px}
.inf-q .enun b{color:#14301F}
.inf-q .st{margin:0 0 10px;padding:10px 12px;border-radius:12px;background:#F3EEDD;font-size:15px}
.inf-op{display:flex;gap:12px;align-items:flex-start;width:100%;text-align:left;border:1.5px solid #E6DFC9;background:#fff;border-radius:16px;padding:12px 14px;margin:8px 0;font:16px/1.4 var(--f-body);color:#16261B;transition:transform .18s var(--spring),border-color .2s,background .2s,box-shadow .2s}
.inf-op .l{flex:none;width:30px;height:30px;border-radius:10px;display:grid;place-items:center;font:700 14px var(--f-cond);background:#F1ECDC;color:#3D5229;text-transform:uppercase}
.inf-op:hover:not([disabled]){transform:translateX(5px);border-color:#C9A227;box-shadow:0 10px 22px -14px rgba(0,0,0,.45)}
.inf-op.ok{border-color:#2E9E62;background:#E9F7EF}.inf-op.ok .l{background:#2E9E62;color:#fff}
.inf-op.ko{border-color:#D9574F;background:#FDECEA}.inf-op.ko .l{background:#D9574F;color:#fff}
.inf-op[disabled]{cursor:default}
.inf-op.ok{animation:obPulso .4s var(--spring)}
.inf-exp{border-radius:22px;padding:4px;background:linear-gradient(135deg,rgba(217,87,79,.55),rgba(230,199,102,.45));animation:obSube .5s var(--ease) both}
.inf-exp.verde{background:linear-gradient(135deg,rgba(79,179,126,.6),rgba(230,199,102,.35))}
.inf-exp>div{background:rgba(9,22,14,.96);border-radius:19px;padding:18px 20px;display:flex;flex-direction:column;gap:12px}
.inf-exp h4{margin:0;font:400 28px/1 var(--f-disp);letter-spacing:1px;color:var(--cream)}
.inf-exp .fila{display:grid;grid-template-columns:34px 1fr;gap:10px;align-items:start}
.inf-exp .fila .e{width:34px;height:34px;border-radius:11px;display:grid;place-items:center;font-size:18px;background:rgba(243,234,208,.07)}
.inf-exp .fila .k{font:700 11.5px var(--f-cond);letter-spacing:1.6px;text-transform:uppercase;color:var(--gold2);margin-bottom:2px}
.inf-exp .fila p{margin:0;color:#E4E9DF;font-size:15.5px;line-height:1.5}
.inf-exp .fila.truco{background:rgba(201,162,39,.10);border:1px dashed rgba(230,199,102,.45);border-radius:14px;padding:10px}
.inf-exp .fila.truco p{font:600 17px/1.4 var(--f-body);color:#FFF3C4}
.inf-acts{display:flex;gap:10px;flex-wrap:wrap;justify-content:flex-end}
.inf-hint{color:var(--muted);font-size:13px;text-align:center}
.inf-confeti{position:fixed;inset:0;pointer-events:none;z-index:200}
.inf-toast{position:fixed;left:50%;top:18%;transform:translateX(-50%);z-index:201;padding:14px 22px;border-radius:999px;background:linear-gradient(135deg,#F2D774,#C9A227);color:#13230F;font:400 26px/1 var(--f-disp);letter-spacing:1px;box-shadow:0 20px 50px -14px rgba(201,162,39,.9);animation:obToast 1.6s var(--ease) both}
@keyframes obToast{0%{opacity:0;transform:translate(-50%,20px) scale(.8)}15%{opacity:1;transform:translate(-50%,0) scale(1.05)}80%{opacity:1}100%{opacity:0;transform:translate(-50%,-20px)}}

@media (prefers-reduced-motion:reduce){
  *,*::before,*::after{animation-duration:.001ms!important;animation-iteration-count:1!important;transition-duration:.001ms!important}
}

/* ---------- PLAN PERSONAL (estudio-plan.js) ---------- */
.pl-ov{position:fixed;inset:0;z-index:9000;background:rgba(5,12,8,.72);backdrop-filter:blur(6px);display:grid;place-items:center;padding:16px;animation:plFade .25s ease}
.pl-ov[hidden]{display:none}
body.pl-abierto{overflow:hidden}
.pl-caja{width:min(640px,100%);max-height:calc(100dvh - 32px);display:flex;flex-direction:column;background:var(--panel);border:1px solid var(--line);border-radius:18px;box-shadow:0 30px 80px rgba(0,0,0,.45);overflow:hidden;animation:plSube .35s cubic-bezier(.2,.8,.2,1)}
.pl-barra{height:4px;background:var(--panel3)}
.pl-barra i{display:block;height:100%;background:linear-gradient(90deg,var(--ok),var(--gold));transition:width .35s ease}
.pl-cab{display:flex;justify-content:space-between;align-items:center;padding:14px 20px 0;font:600 12px var(--f-cond);letter-spacing:.08em;text-transform:uppercase;color:var(--muted)}
.pl-x{background:none;border:0;color:var(--muted);font:inherit;cursor:pointer;padding:6px}
.pl-x:hover{color:var(--text)}
.pl-cuerpo{padding:10px 20px 6px;overflow:auto}
.pl-cuerpo h2{font:400 32px/1.05 var(--f-disp);letter-spacing:.02em;color:var(--cream);margin:6px 0 6px}
.pl-cuerpo h3{font:600 15px var(--f-body);color:var(--text);margin:18px 0 8px}
.pl-cuerpo>p{color:var(--muted);margin:0 0 14px;line-height:1.5}
.pl-ops{display:grid;gap:10px}
.pl-op{display:flex;flex-direction:column;align-items:flex-start;gap:3px;text-align:left;padding:14px 16px;border-radius:12px;border:1px solid var(--line2);background:var(--panel2);color:var(--text);font:inherit;cursor:pointer;transition:border-color .15s,transform .15s,background .15s}
.pl-op b{font-size:16px}
.pl-op small{color:var(--muted);font-size:13.5px}
.pl-op:hover{border-color:var(--gold);transform:translateY(-1px)}
.pl-op.on{border-color:var(--ok);background:color-mix(in srgb,var(--ok) 14%,var(--panel2))}
.pl-op:focus-visible,.pl-mas:focus-visible{outline:2px solid var(--gold2);outline-offset:2px}
.pl-campo{display:flex;flex-direction:column;gap:6px;font-weight:600}
.pl-campo input{padding:12px;border-radius:10px;border:1px solid var(--line);background:var(--panel2);color:var(--text);font:inherit;color-scheme:inherit}
.pl-horas{display:grid;gap:8px}
.pl-dia{display:grid;grid-template-columns:1fr 40px 120px 40px;align-items:center;gap:8px;padding:6px 10px;border-radius:10px;background:var(--panel2)}
.pl-dia b{text-align:center;font-variant-numeric:tabular-nums}
.pl-mas{height:36px;border-radius:9px;border:1px solid var(--line);background:var(--panel3);color:var(--text);font-size:20px;cursor:pointer}
.pl-mas:hover{border-color:var(--gold)}
.pl-total{margin:12px 0 8px;color:var(--muted)}
.pl-total b{color:var(--text)}
.pl-aviso{padding:10px 12px;border-radius:10px;line-height:1.45;font-size:14.5px}
.pl-aviso.bien{background:color-mix(in srgb,var(--ok) 15%,transparent);border:1px solid color-mix(in srgb,var(--ok) 40%,transparent)}
.pl-aviso.mal{background:color-mix(in srgb,var(--warn) 14%,transparent);border:1px solid color-mix(in srgb,var(--warn) 40%,transparent)}
.pl-pie{display:flex;justify-content:space-between;gap:10px;padding:14px 20px 18px;border-top:1px solid var(--line2)}
.pl-pie .btn[disabled]{opacity:.45;cursor:not-allowed}
.pl-sello{display:inline-block;padding:4px 10px;border-radius:99px;background:color-mix(in srgb,var(--gold) 18%,transparent);color:var(--gold2);font:600 12px var(--f-cond);letter-spacing:.1em;text-transform:uppercase}
.pl-barras{display:grid;grid-template-columns:repeat(7,1fr);gap:8px;align-items:end;height:120px;margin:10px 0 12px}
.pl-barras>div{display:flex;flex-direction:column;align-items:center;justify-content:flex-end;height:100%;gap:4px}
.pl-barras i{display:block;width:100%;max-width:34px;min-height:3px;border-radius:6px 6px 2px 2px;background:linear-gradient(180deg,var(--gold2),var(--ok));animation:plCrece .6s cubic-bezier(.2,.8,.2,1) both}
.pl-barras small{font-size:11.5px;color:var(--muted);white-space:nowrap}
.pl-barras b{font:600 13px var(--f-cond)}
.pl-guia ol{list-style:none;margin:0;padding:0;display:grid;gap:8px;counter-reset:pl}
.pl-guia li{display:grid;grid-template-columns:76px 1fr;gap:10px;align-items:start;padding:10px 12px;border-radius:10px;background:var(--panel2);border-left:3px solid var(--ok)}
.pl-guia li b{display:block}
.pl-guia li small{color:var(--muted);line-height:1.4}
.pl-min{font:600 15px var(--f-cond);color:var(--gold2);font-variant-numeric:tabular-nums}
.pl-nota{color:var(--muted);font-size:13.5px;line-height:1.5;margin:10px 0 0}
.pl-tarjeta{display:flex;justify-content:space-between;align-items:center;gap:16px;flex-wrap:wrap}
.pl-resumen{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1.2fr);gap:22px;align-items:start}
.pl-res-b h3{margin:0 0 10px;font:600 15px var(--f-body)}
@media (max-width:760px){.pl-resumen{grid-template-columns:1fr}.pl-dia{grid-template-columns:1fr 38px 100px 38px}.pl-cuerpo h2{font-size:27px}}
@keyframes plFade{from{opacity:0}}
@keyframes plSube{from{opacity:0;transform:translateY(18px) scale(.98)}}
@keyframes plCrece{from{transform:scaleY(0);transform-origin:bottom}}
@media (prefers-reduced-motion:reduce){.pl-ov,.pl-caja,.pl-barras i{animation:none}}

/* Elige tu ritmo: tres planes y otras opciones (estudio-plan.js) */
.pl-ritmos{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px;margin:14px 0 10px}
.pl-ritmos.uno{grid-template-columns:1fr}
.pl-ritmo{display:flex;flex-direction:column;align-items:flex-start;gap:5px;text-align:left;padding:16px;border-radius:14px;border:1px solid var(--line2);background:var(--panel2);color:var(--text);font:inherit;cursor:pointer;position:relative;transition:border-color .15s,transform .15s}
.pl-ritmo:hover{transform:translateY(-1px);border-color:var(--gold)}
.pl-ritmo.on{border-color:var(--ok);box-shadow:0 0 0 2px color-mix(in srgb,var(--ok) 40%,transparent)}
.pl-ritmo.rec{border-color:color-mix(in srgb,var(--gold) 60%,var(--line2))}
.pl-ritmo-sello{font-size:11px;font-weight:700;letter-spacing:.08em;text-transform:uppercase;color:#fff;background:var(--gold);padding:3px 8px;border-radius:99px}
.pl-ritmo-nom{font-size:11px;font-weight:700;letter-spacing:.08em;text-transform:uppercase;color:var(--muted)}
.pl-ritmo-h{font-size:28px;line-height:1.05}
.pl-ritmo-h small{font-size:14px;font-weight:600;color:var(--muted)}
.pl-ritmo-sem{font-size:13px;color:var(--muted)}
.pl-ritmo-fin{font-size:13px;font-weight:600;padding:4px 8px;border-radius:8px}
.pl-ritmo-fin.bien{color:var(--ok);background:color-mix(in srgb,var(--ok) 12%,transparent)}
.pl-ritmo-fin.mal{color:var(--warn);background:color-mix(in srgb,var(--warn) 14%,transparent)}
.pl-ritmo-pq{font-size:13px;color:var(--muted);line-height:1.45}
.pl-otras{display:flex;flex-wrap:wrap;align-items:center;gap:8px;margin:6px 0 4px}
.pl-otras span{font-size:13.5px;color:var(--muted);margin-right:4px}
.pl-otra{border:1px solid var(--line2);background:var(--panel2);color:var(--text);border-radius:99px;padding:7px 13px;font:600 13px/1 inherit;cursor:pointer}
.pl-otra.on{border-color:var(--ok);color:var(--ok)}
@media (max-width:720px){.pl-ritmos{grid-template-columns:1fr}}

/* Hoja de ruta por fases (estudio-plan.js) */
.pl-ritmo-1{font-size:12.5px;color:var(--muted)}
.pl-ruta{margin:12px 0 4px}
.pl-ruta-cab{display:flex;justify-content:space-between;align-items:baseline;gap:10px;flex-wrap:wrap;margin-bottom:8px}
.pl-ruta-cab small{color:var(--muted);font-size:12.5px}
.pl-ruta ol{list-style:none;margin:0;padding:0;display:grid;gap:6px}
.pl-ruta li{display:grid;grid-template-columns:28px 1fr auto;gap:10px;align-items:center;padding:9px 10px;border-radius:12px;border:1px solid var(--line2);background:var(--panel2)}
.pl-ruta li b{display:block;font-size:14px}
.pl-ruta li small{display:block;color:var(--muted);font-size:12.5px;line-height:1.35}
.pl-ruta-n{width:26px;height:26px;border-radius:50%;display:grid;place-items:center;font-weight:700;font-size:13px;background:var(--line2)}
.pl-ruta-f{font-size:12.5px;font-weight:600;white-space:nowrap;color:var(--muted)}
.pl-ruta li.ahora{border-color:var(--ok);background:color-mix(in srgb,var(--ok) 9%,var(--panel2))}
.pl-ruta li.ahora .pl-ruta-n{background:var(--ok);color:#fff}
.pl-ruta li.hecha{opacity:.6}
.pl-tarjeta-ruta{margin-bottom:16px}
@media (max-width:620px){.pl-ruta li{grid-template-columns:26px 1fr}.pl-ruta-f{grid-column:2}}
.cu-crm{display:flex;align-items:center;justify-content:space-between;gap:18px;flex-wrap:wrap;border:1px solid rgba(201,162,39,.45)}
.cu-crm p{margin:4px 0 0;max-width:620px}

/* ---------- Clases (estudio-clases.js) ---------- */
.cl-tema{display:inline-flex;align-items:center;gap:6px;font:700 11.5px var(--f-cond);letter-spacing:1px;text-transform:uppercase;color:#fff;background:var(--c);padding:3px 10px;border-radius:999px}
.cl-bloque{margin-top:22px}
.cl-cab{display:flex;align-items:center;gap:10px;margin-bottom:12px;flex-wrap:wrap}
.cl-cab h2{margin:0}
.cl-filtros{margin-left:auto;display:flex;gap:8px;flex-wrap:wrap}
.cl-filtros select,.cl-filtros input{max-width:260px;border:1px solid var(--line);background:var(--panel2);color:var(--text);border-radius:10px;padding:8px 10px;font:inherit;font-size:14px}
.cl-lista{display:flex;flex-direction:column;gap:12px}
.cl-prox{display:flex;gap:18px;align-items:flex-start}
.cl-dia{flex:none;width:78px;text-align:center;border-radius:14px;background:var(--panel2);border:1px solid var(--line);padding:10px 6px}
.cl-dia b{display:block;font:800 30px/1 var(--f-cond)}
.cl-dia span{display:block;font:700 12px var(--f-cond);letter-spacing:1.5px;text-transform:uppercase;color:var(--gold)}
.cl-dia small{display:block;margin-top:6px;font-weight:700}
.cl-info{min-width:0;flex:1}
.cl-info h3{margin:8px 0 4px;font-size:18px}
.cl-info p{margin:0}
.cl-desc{margin:8px 0 0!important;white-space:pre-wrap}
.cl-acc{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin-top:12px}
.cl-nota{font-size:12.5px}
.cl-directo{border:1px solid rgba(217,87,79,.5);background:linear-gradient(135deg,rgba(217,87,79,.14),transparent 60%),var(--panel);margin-bottom:6px}
.cl-directo h2{margin:10px 0 4px;font-size:22px}
.cl-vivo{display:inline-flex;align-items:center;gap:8px;margin-right:10px;font:800 12px var(--f-cond);letter-spacing:2px;text-transform:uppercase;color:#E5564B;margin-bottom:8px}
.cl-vivo i{width:9px;height:9px;border-radius:50%;background:#E5564B;box-shadow:0 0 0 0 rgba(229,86,75,.6);animation:clLatido 1.6s infinite}
@keyframes clLatido{70%{box-shadow:0 0 0 9px rgba(229,86,75,0)}100%{box-shadow:0 0 0 0 rgba(229,86,75,0)}}
.cl-rejilla{display:grid;grid-template-columns:repeat(auto-fill,minmax(230px,1fr));gap:14px}
.cl-grab{display:flex;flex-direction:column;text-align:left;border:1px solid var(--line2);background:var(--panel);border-radius:var(--r);overflow:hidden;padding:0;color:var(--text);cursor:pointer;transition:transform .15s,border-color .15s}
.cl-grab:hover{transform:translateY(-2px);border-color:var(--line)}
.cl-port{position:relative;aspect-ratio:16/9;background:linear-gradient(135deg,var(--c),rgba(0,0,0,.55));display:grid;place-items:center;color:#fff}
.cl-port span{position:absolute;left:12px;top:10px;font:800 13px var(--f-cond);letter-spacing:1.5px;text-transform:uppercase;opacity:.9}
.cl-port svg{width:44px;height:44px;padding:10px;border-radius:50%;background:rgba(255,255,255,.18);backdrop-filter:blur(4px)}
.cl-port i{position:absolute;left:0;bottom:0;height:4px;background:var(--gold)}
.cl-gtxt{padding:12px 14px}
.cl-gtxt b{display:block;font-size:15px;line-height:1.3}
.cl-gtxt small{display:block;color:var(--muted);margin-top:4px}
.cl-vacio{text-align:center;padding:40px 20px}
.cl-vacio svg{width:46px;height:46px;color:var(--gold)}
.cl-pend{margin-top:12px}
.cl-modal .cl-pane{width:min(980px,100%)}
.cl-h2{margin:8px 0 2px;font-size:20px}
.cl-player{border-radius:14px;overflow:hidden;background:#000;aspect-ratio:16/9;display:grid;place-items:center}
.cl-player video,.cl-player iframe{width:100%;height:100%;border:0;display:block;background:#000}
.cl-acc select{border:1px solid var(--line);background:var(--panel2);color:var(--text);border-radius:8px;padding:5px 8px;margin-left:6px}
.cl-aviso{margin:0 0 16px}
.cl-aviso.vivo{border:1px solid rgba(217,87,79,.5)}
.cl-aviso-c{display:flex;align-items:center;justify-content:space-between;gap:14px;flex-wrap:wrap;margin-top:8px}
.cl-aviso-c b{display:block;font-size:16px;margin-top:6px}
.cl-aviso-c small{display:block;margin-top:2px}
@media (max-width:640px){.cl-prox{flex-direction:column}.cl-dia{display:flex;align-items:baseline;gap:8px;width:auto;padding:8px 12px}.cl-dia small{margin:0 0 0 auto}.cl-filtros{margin-left:0;width:100%}}
