/* ============================================================
   AULA · Estilos de la plataforma de estudiantes
   Hereda la identidad de Academia Al-Qurṭubiyya (landing-site)
   ============================================================ */

:root {
  --green-900:#0A2F23; --green-800:#0F3A2E; --green-700:#1A4A3C; --green-50:#E8F0EB;
  --cream-100:#F7F2E8; --cream-200:#EFE7D6; --cream-300:#E5DAC2;
  --gold-600:#B8924A; --gold-500:#C9A55E; --gold-100:#F3E9CF; --gold-700:#8B6E36;
  --ink-900:#1A1814; --ink-700:#3D3830; --ink-500:#6B6357; --ink-300:#B8B0A3;
  --success:#2D7D4F; --danger:#B23A3A; --whatsapp:#25D366;
  --primary:var(--green-800); --gold:var(--gold-600); --white:#FFFFFF;
  --border:var(--cream-300);
  --ff-display:'Inter', -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif;
  --ff-body:'Inter',-apple-system,BlinkMacSystemFont,'Segoe UI',sans-serif;
  --ff-arabic:'Amiri','Scheherazade New',serif;
  --ff-quran:'Amiri Quran','Amiri','Scheherazade New',serif;
  --ease:0.28s cubic-bezier(.4,0,.2,1);
  --r:10px; --rl:18px;
  --shadow-xs:0 1px 3px rgba(26,24,20,.06);
  --shadow-sm:0 1px 6px rgba(26,24,20,.08);
  --shadow-md:0 8px 30px rgba(26,24,20,.10);
  --shadow-lg:0 24px 60px rgba(26,24,20,.16);
}
*,*::before,*::after{box-sizing:border-box;margin:0;padding:0}
html{font-size:16px}
body{font-family:var(--ff-body);color:var(--ink-900);background:var(--cream-100);line-height:1.6;-webkit-font-smoothing:antialiased}
a{color:inherit;text-decoration:none}
img{max-width:100%;display:block}
.ar{font-family:var(--ff-arabic);direction:rtl}

/* ── Botones (marca) ────────────────────────────────────── */
.btn{display:inline-flex;align-items:center;justify-content:center;gap:9px;padding:13px 26px;border-radius:999px;font-family:var(--ff-body);font-size:14px;font-weight:600;cursor:pointer;border:1.5px solid transparent;transition:var(--ease);white-space:nowrap;line-height:1}
.btn:disabled{opacity:.55;cursor:not-allowed}
.btn-primary{background:var(--green-800);color:#fff;border-color:var(--green-800)}
.btn-primary:hover:not(:disabled){background:var(--green-900);transform:translateY(-2px);box-shadow:0 12px 28px rgba(15,58,46,.26)}
.btn-gold{background:linear-gradient(135deg,var(--gold-600),var(--gold-700));color:#fff}
.btn-gold:hover:not(:disabled){transform:translateY(-2px);box-shadow:0 10px 28px rgba(184,146,74,.36)}
.btn-outline{border-color:var(--green-800);color:var(--green-800);background:transparent}
.btn-outline:hover:not(:disabled){background:var(--green-800);color:#fff}
.btn-sm{padding:9px 16px;font-size:13px}
.btn-block{width:100%}
.btn-disabled{background:var(--cream-200);color:var(--ink-300);border:1.5px solid var(--border);cursor:not-allowed;pointer-events:none}

/* ── Cabecera display ───────────────────────────────────── */
.display{font-family:var(--ff-display);font-weight:500;letter-spacing:-.012em;line-height:1.12}
.display em{font-style:italic;color:var(--gold-600)}
.overline{font-family:var(--ff-body);font-size:11px;font-weight:600;letter-spacing:.1em;text-transform:uppercase;color:var(--gold-600)}

/* Utilidades tipográficas */
.num{font-family:var(--ff-body);font-weight:600;font-variant-numeric:tabular-nums}
.num-bold{font-weight:700}
.ovl{font-family:var(--ff-body);font-size:11px;font-weight:600;text-transform:uppercase;letter-spacing:.09em;color:var(--ink-500)}
.note-sm{font-family:var(--ff-body);font-size:13px;color:var(--ink-500)}
.display.display-lg{font-size:2rem}

/* ════════════════════════════════════════════════════════
   APP BAR (barra superior fija)
   ════════════════════════════════════════════════════════ */
.appbar{position:fixed;top:0;left:0;right:0;z-index:60;height:88px;background:var(--green-800);
  display:flex;align-items:center;gap:18px;padding:0 22px;box-shadow:0 2px 20px rgba(10,47,35,.25)}
.appbar .brand{display:flex;align-items:center;gap:12px;flex-shrink:0}
.appbar .brand img{height:64px;width:auto;display:block}
@media(max-width:720px){.appbar .brand img{height:52px}}
.appbar .brand-txt{display:flex;flex-direction:column;line-height:1.1}
.appbar .brand-ar{font-family:var(--ff-arabic);font-size:14px;color:var(--gold-500)}
.appbar .brand-es{font-family:var(--ff-display);font-size:12px;color:rgba(255,255,255,.7);font-style:italic}
.appbar .spacer{flex:1}
.appbar .user{color:rgba(255,255,255,.72);font-size:13px}
.appbar .icon-btn{display:inline-flex;align-items:center;gap:8px;background:rgba(255,255,255,.1);color:#fff;border:none;cursor:pointer;
  padding:9px 15px;border-radius:999px;font-size:13px;font-family:var(--ff-body);font-weight:600;transition:var(--ease)}
.appbar .icon-btn:hover{background:rgba(255,255,255,.2)}

/* ── Menú de usuario (icono persona → desplegable) ──────── */
.user-menu-wrap{position:relative;flex-shrink:0}
.user-btn{display:inline-flex;align-items:center;gap:5px;background:rgba(255,255,255,.1);border:none;cursor:pointer;
  padding:5px 9px 5px 5px;border-radius:999px;transition:var(--ease)}
.user-btn:hover{background:rgba(255,255,255,.2)}
.user-av{width:34px;height:34px;border-radius:50%;background:var(--gold-600);color:#fff;display:flex;align-items:center;justify-content:center;
  font-family:var(--ff-body);font-weight:700;font-size:15px;flex-shrink:0}
.user-caret{color:rgba(255,255,255,.85)}
.user-menu{position:absolute;right:0;top:calc(100% + 8px);z-index:80;width:272px;background:#fff;border:1px solid var(--border);
  border-radius:16px;box-shadow:var(--shadow-lg);padding:8px}
.user-menu[hidden]{display:none}
.um-head{display:flex;align-items:center;gap:12px;padding:12px 12px 14px;border-bottom:1px solid var(--cream-200);margin-bottom:6px}
.um-av{width:44px;height:44px;border-radius:50%;background:var(--green-800);color:#fff;display:flex;align-items:center;justify-content:center;
  font-family:var(--ff-body);font-weight:700;font-size:1.3rem;flex-shrink:0}
.um-id{display:flex;flex-direction:column;min-width:0;gap:1px}
.um-id strong{font-family:var(--ff-body);font-weight:600;font-size:14px;color:var(--ink-900);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.um-mail{font-size:12px;color:var(--ink-500);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.um-role{align-self:flex-start;margin-top:5px;font-family:var(--ff-body);font-size:10px;font-weight:600;letter-spacing:.08em;text-transform:uppercase;
  color:var(--gold-700);background:var(--gold-100);padding:2px 9px;border-radius:999px}
.um-opt{display:flex;align-items:center;gap:11px;width:100%;text-align:left;padding:10px 12px;border:none;background:none;
  border-radius:10px;cursor:pointer;font-family:var(--ff-body);font-size:14px;font-weight:600;color:var(--ink-700);transition:var(--ease)}
.um-opt:hover{background:var(--cream-100);color:var(--green-800)}
.um-opt svg{color:var(--ink-500);flex-shrink:0}
.um-opt:hover svg{color:var(--green-800)}
.um-out{color:#a23b2d}
.um-out:hover{background:#fbeceb;color:#8a2b2b}
.um-out svg,.um-out:hover svg{color:currentColor}

/* ── Página «Mi cuenta» ──────────────────────────────────── */
.account{max-width:560px;margin:0 auto}
.back-link{display:inline-flex;align-items:center;gap:4px;font-family:var(--ff-body);font-size:13px;font-weight:600;color:var(--green-700);margin-bottom:14px}
.back-link:hover{color:var(--green-900)}
.acc-title{font-family:var(--ff-display);font-weight:600;font-size:2rem;color:var(--ink-900);line-height:1.1}
.acc-sub{color:var(--ink-500);font-size:.95rem;margin:4px 0 26px}
.acc-card{background:#fff;border:1px solid var(--border);border-radius:var(--rl);padding:24px;margin-bottom:20px;
  box-shadow:0 1px 2px rgba(15,29,24,.04),0 6px 18px rgba(15,29,24,.05)}
.acc-card h2{display:flex;align-items:center;gap:9px;font-family:var(--ff-display);font-weight:600;font-size:1.3rem;color:var(--green-800);margin-bottom:18px}
.acc-card h2 svg{color:var(--gold-600);flex-shrink:0}
.acc-form{display:flex;flex-direction:column;gap:16px}
.acc-form .field{display:flex;flex-direction:column;gap:6px}
.acc-form .field>span{font-size:13px;font-weight:600;color:var(--ink-700)}
.acc-form .field input,.acc-form .field select,.acc-form .field textarea{width:100%;box-sizing:border-box;height:46px;padding:12px 14px;border:1.5px solid var(--border);border-radius:var(--r);
  font-family:var(--ff-body);font-size:15px;color:var(--ink-700);background:#fff;transition:var(--ease);line-height:1.3}
.acc-form .field textarea{height:auto;min-height:92px;resize:vertical}
/* Desplegables con el MISMO aspecto que los campos de texto (sin estilo nativo) + flecha propia en oro */
.acc-form .field select{-webkit-appearance:none;appearance:none;cursor:pointer;padding-right:40px;
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='14' height='14' viewBox='0 0 24 24' fill='none' stroke='%23B8924A' stroke-width='2.2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolyline points='6 9 12 15 18 9'/%3E%3C/svg%3E");
  background-repeat:no-repeat;background-position:right 14px center}
.acc-form .field input:focus,.acc-form .field select:focus,.acc-form .field textarea:focus{outline:none;border-color:var(--gold-600);box-shadow:0 0 0 3px rgba(184,146,74,.12)}
.acc-form .field input:disabled,.acc-form .field select:disabled{background:var(--cream-100);color:var(--ink-500);cursor:not-allowed}
.acc-form .field small{font-size:12px;color:var(--ink-500);line-height:1.5}
.acc-form .btn{align-self:flex-start;margin-top:4px}
.intake-2col{display:grid;grid-template-columns:1fr 1fr;gap:0 16px}
@media(max-width:520px){.intake-2col{grid-template-columns:1fr}}

/* ── Barra de progreso del programa (en la appbar) ──────── */
.prog-pill{display:flex;align-items:center;gap:10px;min-width:0}
.prog-pill .pp-label{font-size:12px;color:rgba(255,255,255,.65);white-space:nowrap}
.prog-pill .pp-bar{width:140px;height:6px;background:rgba(255,255,255,.18);border-radius:999px;overflow:hidden}
.prog-pill .pp-fill{height:100%;background:var(--gold-500);border-radius:999px;transition:width .5s var(--ease)}
@media(max-width:720px){.prog-pill .pp-bar{width:80px}.appbar .brand-txt{display:none}}

/* ════════════════════════════════════════════════════════
   PÁGINA DE LECCIÓN
   ════════════════════════════════════════════════════════ */
.lesson-wrap{max-width:1180px;margin:0 auto;padding:104px 22px 64px}
.crumbs{display:flex;align-items:center;gap:8px;font-size:13px;color:var(--ink-500);margin-bottom:14px;flex-wrap:wrap}
.crumbs a{color:var(--green-700);font-weight:500}
.crumbs a:hover{text-decoration:underline}
.crumbs .sep{color:var(--ink-300)}

.lesson-head{display:flex;align-items:flex-end;justify-content:space-between;gap:16px;margin-bottom:20px;flex-wrap:wrap}
.lesson-head .unit-tag{display:inline-block;font-family:var(--ff-body);font-size:11px;font-weight:600;letter-spacing:.09em;text-transform:uppercase;color:var(--gold-700);background:var(--gold-100);padding:4px 12px;border-radius:999px;margin-bottom:10px}
.lesson-head h1{font-family:var(--ff-display);font-weight:500;font-size:clamp(1.6rem,3.2vw,2.3rem);color:var(--ink-900);line-height:1.15}
.lesson-head .order-chip{font-family:var(--ff-body);font-weight:600;font-variant-numeric:tabular-nums;font-size:13px;color:var(--ink-500)}

/* ── Rejilla vídeo + notas ── */
.lesson-grid{display:grid;grid-template-columns:minmax(0,1.7fr) 320px;gap:24px;align-items:start}
@media(max-width:920px){.lesson-grid{grid-template-columns:1fr}}

.video-card{background:#000;border-radius:var(--rl);overflow:hidden;box-shadow:var(--shadow-md)}
.video-frame{position:relative;padding-bottom:56.25%;height:0}
.video-frame iframe{position:absolute;inset:0;width:100%;height:100%;border:0}
.video-locked{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:14px;
  background:var(--green-900);color:#fff;text-align:center;padding:30px}
.video-locked .lock-ico{font-size:2.4rem}
.video-locked p{max-width:340px;color:rgba(255,255,255,.7);font-size:.92rem}

/* ── Barra de acciones (completar + pestañas) ── */
.action-bar{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin-top:18px}
.action-bar .tabs{display:flex;gap:4px;margin-left:auto;flex-wrap:wrap}
.tab-btn{padding:10px 18px;border:1px solid var(--border);background:#fff;border-radius:999px;cursor:pointer;
  font-family:var(--ff-body);font-size:13px;font-weight:600;color:var(--ink-500);transition:var(--ease);display:inline-flex;align-items:center;gap:7px}
.tab-btn:hover{border-color:var(--green-700);color:var(--green-800)}
.tab-btn.active{background:var(--green-800);color:#fff;border-color:var(--green-800)}
.tab-btn .badge{background:var(--gold-600);color:#fff;border-radius:999px;font-family:var(--ff-body);font-weight:700;font-variant-numeric:tabular-nums;font-size:11px;padding:0 7px}
/* "Pestaña" Test que es un <a> a test.html — se ve como tab pero navega */
.tab-link{text-decoration:none;color:inherit;font-family:var(--ff-body);font-weight:600;display:inline-flex;align-items:center;gap:6px}
.tab-link:hover{text-decoration:none}
/* Contenedor central de la página de test (test.html) */
.test-main{max-width:760px;margin:0 auto;padding:8px 0 16px}
.test-main .quiz-intro{margin-bottom:24px}

.btn-complete.done{background:var(--success);border-color:var(--success);color:#fff;pointer-events:none}

/* ── CTA de tutoría al terminar la unidad ── */
.unit-cta:not(:empty){margin-top:16px;padding:18px;background:var(--green-50);border:1px solid var(--cream-300);border-radius:var(--rl);text-align:center;display:flex;flex-direction:column;align-items:center;gap:8px}
.unit-cta .uc-note{font-size:13px;color:var(--ink-500)}

/* ── Panel de notas ── */
.notes-panel{background:#fff;border:1px solid var(--border);border-radius:var(--rl);padding:18px;position:sticky;top:100px}
.notes-panel h3{font-family:var(--ff-display);font-size:1.2rem;font-weight:600;color:var(--green-800);display:flex;align-items:center;gap:8px;margin-bottom:12px}
.notes-panel textarea{width:100%;min-height:180px;resize:vertical;border:1px solid var(--border);border-radius:var(--r);
  padding:12px;font-family:var(--ff-body);font-size:14px;line-height:1.6;color:var(--ink-900);background:var(--cream-100)}
.notes-panel textarea:focus{outline:none;border-color:var(--gold-600);background:#fff}
.notes-foot{display:flex;align-items:center;justify-content:space-between;margin-top:10px}
.notes-hint{font-size:12px;color:var(--ink-500)}
.notes-hint.saved{color:var(--success)}
.notes-help{font-size:12px;color:var(--ink-500);line-height:1.6;margin-top:12px;padding-top:12px;border-top:1px dashed var(--border)}

/* ── Contenido de pestañas ── */
.tab-pane{display:none;background:#fff;border:1px solid var(--border);border-radius:var(--rl);padding:28px;margin-top:22px}
.tab-pane.active{display:block}
.tab-pane h2{font-family:var(--ff-display);font-size:1.4rem;font-weight:600;color:var(--green-800);margin-bottom:14px}
.empty{text-align:center;padding:48px 20px;color:var(--ink-500)}
.empty .em-ico{font-size:2.6rem;margin-bottom:12px}
.empty h4{font-family:var(--ff-display);font-weight:500;font-size:1.2rem;color:var(--green-800);margin-bottom:6px}

/* Material */
.mat-row{display:flex;align-items:center;gap:14px;padding:14px 16px;border:1px solid var(--border);border-radius:var(--r);margin-bottom:10px;transition:var(--ease)}
.mat-row:hover{border-color:var(--green-700);box-shadow:var(--shadow-sm)}
.mat-ico{font-size:1.5rem}
.mat-info{flex:1;min-width:0}
.mat-info strong{display:block;font-size:14px;color:var(--ink-900)}
.mat-info span{font-family:var(--ff-body);font-variant-numeric:tabular-nums;font-size:12px;color:var(--ink-500)}
.mat-dl{color:var(--green-700);font-weight:600;font-size:13px;white-space:nowrap}

/* ── Test / Quiz ── */
.quiz-intro{background:var(--green-50);border:1px solid var(--cream-300);border-radius:var(--r);padding:14px 18px;margin-bottom:24px;font-family:var(--ff-body);font-variant-numeric:tabular-nums;font-size:14px;color:var(--ink-700)}
.quiz-intro strong{color:var(--green-800)}
.quiz-q{padding:20px 0;border-bottom:1px solid var(--border)}
.quiz-q:last-of-type{border-bottom:none}
.q-num{font-family:var(--ff-body);font-size:11px;font-weight:600;letter-spacing:.09em;text-transform:uppercase;color:var(--gold-700);font-variant-numeric:tabular-nums;margin-bottom:6px}
.q-text{font-size:15px;font-weight:600;color:var(--ink-900);margin-bottom:12px}
.q-opts{display:flex;flex-direction:column;gap:8px}
.q-opt{display:flex;align-items:center;gap:11px;padding:11px 15px;border:1.5px solid var(--border);border-radius:var(--r);cursor:pointer;font-size:14px;transition:var(--ease)}
.q-opt:hover{border-color:var(--green-700);background:var(--green-50)}
.q-opt input{accent-color:var(--green-800);flex-shrink:0}
.q-opt.ok{border-color:var(--success);background:#EAF5EE;color:#1d5a37;font-weight:600}
.q-opt.bad{border-color:var(--danger);background:#FBECEC;color:#8a2b2b}
.q-opt.reveal{border-color:var(--success);background:#EAF5EE}
.quiz-result{text-align:center;padding:34px 24px;border-radius:var(--rl);margin-top:8px;border:1px solid var(--border)}
.quiz-result.pass{background:#EAF5EE;border-color:#bfe0cd}
.quiz-result.fail{background:#FBECEC;border-color:#eccaca}
.quiz-score{font-family:var(--ff-body);font-weight:700;font-variant-numeric:tabular-nums;letter-spacing:-.01em;font-size:3.4rem;line-height:1}
.quiz-result.pass .quiz-score{color:var(--success)}
.quiz-result.fail .quiz-score{color:var(--danger)}
.quiz-msg{font-family:var(--ff-body);font-variant-numeric:tabular-nums;font-size:15px;color:var(--ink-700);margin:8px 0 18px}
.quiz-result-actions{display:flex;gap:10px;justify-content:center;flex-wrap:wrap;margin-top:10px}

/* ── Q&A ── */
.qa-form{display:flex;flex-direction:column;gap:10px;margin-bottom:26px}
.qa-form textarea{width:100%;min-height:80px;resize:vertical;border:1px solid var(--border);border-radius:var(--r);padding:12px;font-family:var(--ff-body);font-size:14px}
.qa-form textarea:focus{outline:none;border-color:var(--gold-600)}
.qa-thread{border:1px solid var(--border);border-radius:var(--rl);padding:18px;margin-bottom:14px;background:var(--cream-100)}
.qa-msg{display:flex;gap:12px}
.qa-av{width:38px;height:38px;border-radius:50%;flex-shrink:0;display:flex;align-items:center;justify-content:center;font-weight:700;color:#fff;background:var(--green-700);font-size:14px}
.qa-av.teacher{background:var(--gold-600)}
.qa-body{flex:1;min-width:0}
.qa-meta{display:flex;align-items:center;gap:8px;margin-bottom:4px;flex-wrap:wrap}
.qa-author{font-weight:600;font-size:14px;color:var(--ink-900)}
.qa-role{font-family:var(--ff-body);font-size:10px;font-weight:600;letter-spacing:.08em;text-transform:uppercase;padding:2px 8px;border-radius:999px}
.qa-role.teacher{background:var(--gold-100);color:var(--gold-700)}
.qa-role.student{background:var(--green-50);color:var(--green-700)}
.qa-time{font-family:var(--ff-body);font-variant-numeric:tabular-nums;font-size:12px;color:var(--ink-500)}
.qa-text{font-size:14px;color:var(--ink-700);line-height:1.6;white-space:pre-wrap}
.qa-replies{margin-top:14px;padding-top:14px;border-top:1px dashed var(--border);display:flex;flex-direction:column;gap:14px}
.qa-replies .qa-msg{padding-left:8px;border-left:2px solid var(--gold-100)}
.qa-reply-toggle{font-size:13px;color:var(--green-700);font-weight:600;cursor:pointer;margin-top:10px;display:inline-block}
.qa-del{font-size:12px;color:#c0392b;font-weight:600;cursor:pointer;margin-left:14px;display:inline-block}
.qa-del:hover{text-decoration:underline}
.qa-reply-form{margin-top:10px;display:flex;gap:8px}
.qa-reply-form input{flex:1;border:1px solid var(--border);border-radius:999px;padding:9px 14px;font-family:var(--ff-body);font-size:14px}
.qa-reply-form input:focus{outline:none;border-color:var(--gold-600)}

/* ── Navegación prev/next ── */
.lesson-nav{display:flex;justify-content:space-between;gap:12px;margin-top:34px;padding-top:24px;border-top:1px solid var(--border)}
.lesson-nav a{display:inline-flex;align-items:center;gap:8px;padding:11px 18px;border:1px solid var(--border);border-radius:999px;font-size:14px;font-weight:600;color:var(--green-800);background:#fff;transition:var(--ease)}
.lesson-nav a:hover{border-color:var(--green-700);box-shadow:var(--shadow-sm)}
.lesson-nav a.disabled{opacity:.4;pointer-events:none}

/* ════════════════════════════════════════════════════════
   DRAWER · Lista de lecciones (menú lateral deslizable)
   ════════════════════════════════════════════════════════ */
.drawer-overlay{position:fixed;inset:0;background:rgba(10,47,35,.45);z-index:80;opacity:0;visibility:hidden;transition:var(--ease)}
.drawer-overlay.open{opacity:1;visibility:visible}
.drawer{position:fixed;top:0;right:0;bottom:0;width:400px;max-width:92vw;background:var(--cream-100);z-index:90;
  transform:translateX(100%);transition:transform .32s var(--ease);display:flex;flex-direction:column;box-shadow:var(--shadow-lg)}
.drawer.open{transform:none}
.drawer-head{display:flex;align-items:center;justify-content:space-between;padding:18px 20px;border-bottom:1px solid var(--border);background:#fff}
.drawer-head h3{font-family:var(--ff-display);font-weight:600;font-size:1.3rem;color:var(--green-800);font-variant-numeric:tabular-nums}
.drawer-head .count{font-family:var(--ff-body);font-variant-numeric:tabular-nums;font-size:12px;color:var(--ink-500)}
.drawer-close{background:none;border:none;font-size:1.5rem;cursor:pointer;color:var(--ink-500);line-height:1}
.drawer-list{overflow-y:auto;padding:10px;flex:1}
.dl-item{display:flex;align-items:center;gap:13px;padding:13px 14px;border-radius:var(--r);margin-bottom:6px;transition:var(--ease);cursor:pointer;border:1px solid transparent}
.dl-item:hover{background:#fff;border-color:var(--border)}
.dl-item.current{background:#fff;border-color:var(--gold-600);box-shadow:var(--shadow-sm)}
.dl-item.locked{cursor:not-allowed;opacity:.65}
.dl-state{width:30px;height:30px;border-radius:50%;flex-shrink:0;display:flex;align-items:center;justify-content:center;font-family:var(--ff-body);font-size:14px;font-weight:700;font-variant-numeric:tabular-nums}
.dl-state.completed{background:var(--success);color:#fff}
.dl-state.current{background:var(--green-800);color:#fff}
.dl-state.available{background:var(--cream-300);color:var(--ink-700)}
.dl-state.locked{background:var(--cream-200);color:var(--ink-300)}
.dl-num{font-family:var(--ff-body);font-weight:600;font-variant-numeric:tabular-nums;font-size:12px;color:var(--ink-300);width:22px;text-align:center;flex-shrink:0}
.dl-info{flex:1;min-width:0}
.dl-title{font-size:14px;font-weight:600;color:var(--ink-900);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.dl-sub{font-family:var(--ff-body);font-variant-numeric:tabular-nums;font-size:12px;color:var(--ink-500)}

/* ════════════════════════════════════════════════════════
   LOGIN
   ════════════════════════════════════════════════════════ */
.login-page{min-height:100vh;display:grid;grid-template-columns:1fr 1fr}
@media(max-width:860px){.login-page{grid-template-columns:1fr}.login-aside{display:none}}
.login-aside{background:var(--green-800);color:#fff;padding:56px 48px;display:flex;flex-direction:column;justify-content:center;position:relative;overflow:hidden}
.login-aside::before{content:'';position:absolute;inset:0;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='60' height='60'%3E%3Cg fill='none' stroke='%23C9A55E' stroke-opacity='0.12' stroke-width='1.6'%3E%3Cpath d='M15 15H45V45H15Z'/%3E%3Cpath d='M30 8L52 30L30 52L8 30Z'/%3E%3C/g%3E%3Cg fill='none' stroke='%230F3A2E' stroke-width='3.4'%3E%3Cpath d='M15 20.5V25.5M15 34.5V39.5M45 20.5V25.5M45 34.5V39.5'/%3E%3Cpath d='M25.5 12.5L20.5 17.5M34.5 12.5L39.5 17.5M20.5 42.5L25.5 47.5M34.5 47.5L39.5 42.5'/%3E%3C/g%3E%3C/svg%3E")}
.login-aside>*{position:relative;z-index:1}
.login-aside img{width:min(300px,82%);height:auto;margin-bottom:20px}
.login-aside .la-ar{font-family:var(--ff-arabic);font-size:1.5rem;color:var(--gold-500);margin-bottom:6px}
.login-aside h2{font-family:var(--ff-display);font-weight:500;font-size:2rem;margin-bottom:14px}
.login-aside p{color:rgba(255,255,255,.72);font-size:.96rem;max-width:380px;margin-bottom:26px}
.login-aside ul{list-style:none;display:flex;flex-direction:column;gap:12px}
.login-aside li{display:flex;align-items:center;gap:11px;color:rgba(255,255,255,.85);font-size:.92rem}
.login-aside li::before{content:'✦';color:var(--gold-500)}
.login-main{display:flex;align-items:center;justify-content:center;padding:40px 24px}
.login-box{width:100%;max-width:400px}
.login-box .overline{display:block;margin-bottom:10px}
.login-box h1{font-family:var(--ff-display);font-weight:500;font-size:2rem;color:var(--ink-900);margin-bottom:6px}
.login-box .sub{color:var(--ink-500);font-size:.95rem;margin-bottom:28px}
.field{margin-bottom:18px}
.field label{display:block;font-size:13px;font-weight:600;color:var(--ink-700);margin-bottom:7px}
.field input{width:100%;padding:13px 15px;border:1.5px solid var(--border);border-radius:var(--r);font-family:var(--ff-body);font-size:15px;background:#fff;transition:var(--ease)}
.field input:focus{outline:none;border-color:var(--gold-600);box-shadow:0 0 0 3px rgba(184,146,74,.12)}
.field input.err{border-color:var(--danger)}
.field .msg{font-family:var(--ff-body);font-size:12px;color:var(--danger);margin-top:6px;display:none}
.field .msg.show{display:block}
.alert{padding:12px 16px;border-radius:var(--r);font-family:var(--ff-body);font-size:13px;margin-bottom:18px;display:none}
.alert.show{display:block}
.alert.error{background:#FBECEC;color:#8a2b2b;border:1px solid #eccaca}
.alert.ok{background:#EAF5EE;color:#1d5a37;border:1px solid #bfe0cd}
.demo-hint{margin-top:22px;padding:14px 16px;background:var(--cream-200);border:1px dashed var(--gold-600);border-radius:var(--r);font-family:var(--ff-body);font-size:12px;color:var(--ink-700);line-height:1.7}
.demo-hint strong{color:var(--green-800)}

/* ════════════════════════════════════════════════════════
   PANEL (dashboard)
   ════════════════════════════════════════════════════════ */
.panel-wrap{max-width:1120px;margin:0 auto;padding:108px 22px 64px}
.panel-hero{margin-bottom:34px}
.panel-hero{margin-bottom:32px}
.panel-hero .bism{font-family:var(--ff-quran);font-size:clamp(1.5rem,3.2vw,2.2rem);color:var(--gold-600);margin-bottom:8px;line-height:1.6}
.panel-hero h1{font-family:var(--ff-display);font-weight:500;font-size:clamp(1.8rem,3.5vw,2.6rem);color:var(--ink-900);line-height:1.1}
/* Hadiz motivador (pull-quote con filete dorado) */
.hero-hadith{display:block;margin-top:16px;max-width:60ch;padding-left:18px;border-left:3px solid var(--gold-500)}
.hero-hadith .hh-ar{display:block;font-family:var(--ff-arabic);font-size:1.35rem;line-height:1.95;color:var(--green-800);direction:rtl}
.hero-hadith .hh-es{display:block;margin-top:6px;font-size:.95rem;color:var(--ink-500);line-height:1.55;font-style:italic}
.hero-hadith .hh-es em{color:var(--gold-700);font-style:normal;font-weight:600}
.prog-cards{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:18px;margin-bottom:44px}
.pcard{background:#fff;border:1px solid var(--border);border-radius:var(--rl);padding:24px;
  box-shadow:0 1px 2px rgba(15,29,24,.04),0 6px 18px rgba(15,29,24,.05);
  display:flex;flex-direction:column;align-items:flex-start;justify-content:center;gap:11px;min-height:150px}
.pcard .pc-icon{color:var(--gold-600);line-height:0}
.pcard .pc-icon svg{width:24px;height:24px;display:block}
.pcard h4{font-size:11px;font-weight:600;color:var(--ink-500);text-transform:uppercase;letter-spacing:.09em;margin:0}
.pcard .pc-val{font-family:var(--ff-display);font-weight:500;font-size:2.3rem;line-height:1;color:var(--green-800)}
.pcard .pc-stat{font-family:var(--ff-body);font-weight:700;font-size:2.2rem;line-height:1;color:var(--green-800);font-variant-numeric:tabular-nums;letter-spacing:-.01em}
.pcard .pc-den{font-family:var(--ff-body);font-weight:600;font-variant-numeric:tabular-nums;font-size:1.15rem;color:var(--ink-300);margin-left:3px}
/* Tarjeta con aro de progreso circular */
.pcard-ring{flex-direction:row;align-items:center;gap:16px}
.pcard-ring h4{align-self:center}
.pc-ring{position:relative;width:76px;height:76px;flex-shrink:0}
.pc-ring svg{transform:rotate(-90deg)}
.pc-ring .pr-track{fill:none;stroke:var(--cream-200);stroke-width:6}
.pc-ring .pr-fill{fill:none;stroke:var(--gold-600);stroke-width:6;stroke-linecap:round;transition:stroke-dashoffset .6s ease}
.pc-ring .pc-ring-num{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;
  font-family:var(--ff-body);font-weight:700;font-size:1.15rem;color:var(--green-800);font-variant-numeric:tabular-nums}

.prog-section h2{font-family:var(--ff-display);font-weight:500;font-size:1.7rem;color:var(--ink-900);margin-bottom:6px}
.prog-section .sec-sub{color:var(--ink-500);font-size:.95rem;margin-bottom:22px}
.program-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(300px,1fr));gap:20px}
.program-card{background:#fff;border:1px solid var(--border);border-radius:var(--rl);overflow:hidden;transition:var(--ease);display:flex;flex-direction:column}
.program-card:hover{transform:translateY(-3px);box-shadow:var(--shadow-md)}
.program-card.disabled{opacity:.72}
.pc-top{background:var(--green-800);color:#fff;padding:26px 24px;position:relative}
.pc-top .pc-ar{font-family:var(--ff-arabic);font-size:1.6rem;color:var(--gold-500);margin-bottom:4px}
.pc-top h3{font-family:var(--ff-display);font-weight:500;font-size:1.6rem}
.pc-top .pc-tag{font-size:.85rem;color:rgba(255,255,255,.7);font-style:italic;font-family:var(--ff-display)}
.pc-soon{position:absolute;top:16px;right:16px;background:var(--gold-600);color:#fff;font-family:var(--ff-body);font-size:11px;font-weight:600;letter-spacing:.08em;text-transform:uppercase;padding:4px 11px;border-radius:999px}
.pc-badge{position:absolute;top:14px;right:14px;font-family:var(--ff-body);font-size:11px;font-weight:600;letter-spacing:.08em;text-transform:uppercase;padding:4px 10px;border-radius:999px;z-index:1}
.pc-badge.done{background:var(--success);color:#fff}
.pc-badge.lock{background:rgba(255,255,255,.16);color:#fff;border:1px solid rgba(255,255,255,.32)}
.program-card.locked{opacity:.78}
.pc-actions{display:flex;gap:8px}
.optional-note{display:flex;align-items:center;justify-content:space-between;gap:16px;flex-wrap:wrap;margin-top:18px;padding:16px 20px;background:var(--cream-200);border:1px dashed var(--gold-600);border-radius:var(--rl)}
.optional-note .on-txt{display:flex;flex-direction:column;gap:3px}
.optional-note .on-txt strong{font-size:14px;color:var(--green-800)}
.optional-note .on-txt span{font-size:13px;color:var(--ink-700)}
.pc-body{padding:22px 24px;display:flex;flex-direction:column;gap:16px;flex:1}
.pc-body p{font-size:14px;color:var(--ink-700);line-height:1.6;flex:1}
.pc-prog{display:flex;align-items:center;gap:12px}
.pc-prog .bar{flex:1;height:7px;background:var(--cream-200);border-radius:999px;overflow:hidden}
.pc-prog .fill{height:100%;background:var(--gold-600);border-radius:999px;transition:width .5s var(--ease)}
.pc-prog .fill.full{background:var(--success)}
.pc-prog .txt{font-family:var(--ff-body);font-weight:600;font-variant-numeric:tabular-nums;font-size:12px;color:var(--ink-500);white-space:nowrap}
.pc-badge.info{background:var(--gold-600);color:#fff}

/* ── Tarjetas de lectura (sección "Lectura") ── */
.reading-card .pc-body{gap:14px}
.rd-credits{font-size:13px;color:var(--ink-500);font-style:italic;margin:0;flex:1}
/* Libro aún no añadido: atenuado, con sello "Por añadir". */
.reading-card.dimmed{opacity:.82;filter:saturate(.55)}
.reading-card.dimmed:hover{opacity:1;filter:saturate(1)}
.reading-card.dimmed .pc-top{background:var(--green-700)}
.pc-badge.dim{background:rgba(255,255,255,.16);color:#fff;border:1px solid rgba(255,255,255,.32)}
/* Modal de ritmo de lectura. */
.reading-modal{max-width:460px}
.reading-modal .rm-sub{font-size:14px;color:var(--ink-700);margin:0 0 16px}
.reading-modal .rf-preview{margin:6px 0 18px}

/* ── Banner de comunidad privada en Telegram (plan Híbrido) ── */
.tg-banner{display:flex;align-items:center;gap:16px;background:var(--green-800);color:#fff;border:1px solid rgba(184,146,74,.4);border-radius:var(--rl);padding:18px 22px;margin-bottom:18px}
.tg-banner .tg-ico{flex:0 0 auto;width:44px;height:44px;display:flex;align-items:center;justify-content:center;background:rgba(184,146,74,.18);color:var(--gold-500);border-radius:50%}
.tg-banner .tg-txt{flex:1;min-width:0}
.tg-banner .tg-txt h4{font-family:var(--ff-display);font-weight:500;font-size:1.15rem;color:#fff;margin:0 0 4px}
.tg-banner .tg-txt p{font-size:.9rem;color:rgba(255,255,255,.78);line-height:1.5;margin:0}
.tg-banner .btn{flex:0 0 auto}
.tg-banner .tg-actions{flex:0 0 auto;display:flex;flex-direction:column;align-items:center;gap:8px}
.tg-banner .tg-dismiss{background:none;border:0;color:rgba(255,255,255,.72);font:inherit;font-size:.82rem;cursor:pointer;padding:2px 4px;text-decoration:underline;text-underline-offset:2px}
.tg-banner .tg-dismiss:hover{color:#fff}
.tg-restore{font-size:.85rem;color:var(--ink-500);margin:0 0 18px}
.tg-restore a{color:var(--gold-600);font-weight:600;text-decoration:underline;text-underline-offset:2px;cursor:pointer}
@media(max-width:640px){.tg-banner{flex-direction:column;align-items:flex-start}.tg-banner .tg-actions{width:100%}.tg-banner .btn{width:100%;text-align:center}}

/* ── Barra de secciones del panel del alumno (pestañas) ── */
.sect-tabs{position:sticky;top:88px;z-index:50;display:flex;gap:2px;margin:0 0 32px;
  background:var(--cream-100);border-bottom:1px solid var(--border);
  overflow-x:auto;-webkit-overflow-scrolling:touch;scrollbar-width:none}
.sect-tabs::-webkit-scrollbar{display:none}
/* Degradado de "hay más" en el borde derecho: pista de scroll horizontal.
   Es un pseudo sticky pegado al borde visible (no bloquea clics) que se
   funde con el fondo crema. */
.sect-tabs::after{content:'';position:sticky;right:0;flex:0 0 auto;align-self:stretch;
  width:34px;margin-left:-34px;pointer-events:none;
  background:linear-gradient(to right,rgba(247,242,232,0),var(--cream-100) 80%)}
.sect-tab{position:relative;flex:0 0 auto;display:inline-flex;align-items:center;gap:8px;padding:14px 13px;
  border:none;background:none;cursor:pointer;font-family:var(--ff-body);font-weight:600;font-size:13.5px;
  color:var(--ink-500);border-bottom:3px solid transparent;white-space:nowrap;transition:var(--ease)}
.sect-tab svg{width:20px;height:20px;flex-shrink:0}
.sect-tab:hover{color:var(--green-800)}
.sect-tab.active{color:var(--green-800);border-bottom-color:var(--gold-600)}
/* Contador de anuncios no leídos: misma geometría que .notif-badge pero rojo,
   adosado al texto en desktop. */
.sect-badge{display:inline-flex;align-items:center;justify-content:center;min-width:18px;height:18px;
  padding:0 5px;box-sizing:border-box;border-radius:999px;background:var(--danger);color:#fff;
  font-family:var(--ff-body);font-size:11px;font-weight:700;line-height:1;font-variant-numeric:tabular-nums}
.sect-badge[hidden]{display:none}

/* Placeholder "próximamente" de una sección aún sin construir */
.soon-pane{text-align:center;padding:60px 22px;background:#fff;border:1px solid var(--border);
  border-radius:var(--rl);box-shadow:var(--shadow-xs)}
.soon-ico{color:var(--gold-500);margin-bottom:14px;display:flex;justify-content:center;line-height:0}
.soon-ico svg{width:48px;height:48px}
.soon-pane h2{font-family:var(--ff-display);font-weight:500;font-size:1.7rem;color:var(--ink-900);margin-bottom:6px}
.soon-pane p{color:var(--ink-500);font-size:.95rem;max-width:44ch;margin:0 auto}

/* ── Mis notas ── */
.notes-top{display:flex;align-items:flex-start;justify-content:space-between;gap:16px;flex-wrap:wrap;margin-bottom:24px}
.notes-actions{display:flex;gap:8px;flex-wrap:wrap}
.notes-group{margin-bottom:28px}
.notes-group-h{font-family:var(--ff-display);font-weight:600;font-size:1.05rem;color:var(--green-800);border-left:3px solid var(--gold-500);padding-left:10px;margin-bottom:12px}
.note-card{background:#fff;border:1px solid var(--border);border-radius:var(--r);padding:14px 16px;margin-bottom:10px;box-shadow:var(--shadow-xs)}
.note-head{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-bottom:8px}
.note-head strong{font-size:14px;color:var(--ink-900)}
.note-edit{display:inline-flex;align-items:center;gap:5px;border:none;background:none;color:var(--green-700);font-family:var(--ff-body);font-weight:600;font-size:12.5px;cursor:pointer;flex-shrink:0}
.note-edit:hover{color:var(--green-900)}
.note-edit svg{width:15px;height:15px}
.note-body{white-space:pre-wrap;word-wrap:break-word;font-size:14px;color:var(--ink-700);line-height:1.6}
.note-ta{width:100%;border:1px solid var(--border);border-radius:var(--r);padding:10px 12px;font-family:var(--ff-body);font-size:14px;color:var(--ink-900);resize:vertical}
.note-edit-actions{display:flex;justify-content:flex-end;gap:8px;margin-top:8px}
.notes-empty{text-align:center;padding:54px 22px;background:#fff;border:1px solid var(--border);border-radius:var(--rl);box-shadow:var(--shadow-xs)}
.notes-empty .ne-ico{color:var(--gold-500);display:flex;justify-content:center;margin-bottom:12px;line-height:0}
.notes-empty h3{font-family:var(--ff-display);font-weight:500;font-size:1.4rem;color:var(--ink-900);margin-bottom:6px}
.notes-empty p{color:var(--ink-500);font-size:.95rem;max-width:46ch;margin:0 auto}

/* ── Panel profesor: preguntas recientes ── */
.q-item{display:flex;align-items:center;gap:14px;padding:14px 16px;border:1px solid var(--border);border-radius:var(--r);margin-bottom:8px;background:#fff;transition:var(--ease)}
.q-item:hover{border-color:var(--green-700);box-shadow:var(--shadow-sm)}
.q-dot{width:9px;height:9px;border-radius:50%;background:var(--success);flex-shrink:0}
.q-item.pending .q-dot{background:var(--gold-600)}
.q-main{flex:1;min-width:0;display:flex;flex-direction:column;gap:3px}
.q-main strong{font-size:14px;color:var(--ink-900);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.q-main span{font-family:var(--ff-body);font-variant-numeric:tabular-nums;font-size:12px;color:var(--ink-500)}
.q-flag{font-family:var(--ff-body);font-weight:600;font-size:12px;color:var(--green-700);white-space:nowrap}
.q-item.pending .q-flag{color:var(--gold-700)}

/* ── Disponibilidad semanal (rejilla editable del profesor) ── */
.wcal-head{display:flex;align-items:flex-start;justify-content:space-between;gap:14px;flex-wrap:wrap;
  position:sticky;top:88px;z-index:5;background:#fff;border-radius:var(--rl) var(--rl) 0 0}  /* V1 · «Guardar» sticky en la rejilla larga */
.wcal-body{padding:18px 20px}
/* U1 · botón «Guardar» resaltado cuando hay cambios sin guardar (scope y disponibilidad) */
.btn-dirty{background:linear-gradient(135deg,var(--gold-600),var(--gold-700));border-color:var(--gold-700);color:#fff;
  box-shadow:0 0 0 3px rgba(201,165,94,.28);animation:dirtyPulse 1.8s ease-in-out infinite}
@keyframes dirtyPulse{0%,100%{box-shadow:0 0 0 3px rgba(201,165,94,.22)}50%{box-shadow:0 0 0 5px rgba(201,165,94,.12)}}
/* U5 · barra de herramientas: copiar un día a otros */
.wcal-tools{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin-bottom:14px;
  font-family:var(--ff-body);font-size:13px;color:var(--ink-500)}
.wcal-tool-lbl{display:inline-flex;align-items:center;gap:8px;font-weight:600;color:var(--ink-700)}
.wcal-sel{font:inherit;padding:6px 10px;border:1.5px solid var(--border);border-radius:var(--r);background:#fff;color:var(--ink-900);cursor:pointer}
/* U6 · cabecera de día clicable */
.wcal-wd-btn{appearance:none;border:0;cursor:pointer;width:100%;font:inherit}
.wcal-wd-btn:hover{background:var(--green-700)}
/* U3 · estado vacío */
.wcal-empty{margin:14px 0 0;font-family:var(--ff-body);font-size:13.5px;color:var(--gold-700);
  background:var(--gold-100);border:1px solid var(--gold-500);border-radius:var(--r);padding:10px 14px}
.wcal-wrap{overflow:auto;max-height:520px;border:1px solid var(--border);border-radius:var(--rl);background:var(--cream-200)}
.wcal{display:grid;grid-template-columns:54px repeat(7,minmax(34px,1fr));gap:1px}
.wcal-corner,.wcal-wd{position:sticky;top:0;z-index:2;background:var(--green-800);color:#fff;
  font-family:var(--ff-body);font-size:11px;font-weight:600;letter-spacing:.08em;text-transform:uppercase;text-align:center;padding:8px 4px}
.wcal-corner{left:0;z-index:3}
.wcal-hour{position:sticky;left:0;z-index:1;background:#fff;font-family:var(--ff-body);font-size:11px;color:var(--ink-300);
  text-align:right;padding:2px 8px;font-variant-numeric:tabular-nums;display:flex;align-items:center;justify-content:flex-end}
.wcal-cell{appearance:none;border:none;background:#fff;cursor:pointer;height:24px;padding:0;transition:background .12s ease;touch-action:none}
.wcal-cell:hover{background:var(--cream-100)}
.wcal-cell.is-own{background:var(--green-50);box-shadow:inset 0 0 0 1px var(--green-700)}
.wcal-cell.is-own:hover{background:#dcefe3}
/* 3er estado: hueco RESERVADO (tutoría agendada). Rayado dorado, no se borra. */
.wcal-cell.is-booked{
  background-color:var(--gold-100);
  background-image:repeating-linear-gradient(45deg,transparent 0 4px,rgba(184,146,74,.35) 4px 6px);
  box-shadow:inset 0 0 0 1px var(--gold-500);cursor:not-allowed
}
.wcal-cell.is-booked:hover{background-color:var(--gold-100)}
.wcal-cell.has-peer{position:relative}
.wcal-cell.has-peer::after{content:'';position:absolute;top:3px;right:3px;width:6px;height:6px;border-radius:50%;background:var(--gold-500)}
.wcal.dragging{cursor:cell}
.wcal.dragging .wcal-cell{cursor:cell}
/* Mapa de demanda (futuro): inerte hasta que SHOW_DEMAND=true en panel.js */
.wcal-cell.has-demand{box-shadow:inset 0 0 0 999px rgba(184,146,74,calc(var(--d,0)*0.12))}
.wcal-legend{display:flex;gap:16px;flex-wrap:wrap;margin-top:12px;font-size:11.5px;color:var(--ink-500)}
.wcal-legend span{display:inline-flex;align-items:center;gap:6px}
.wcal-legend i{width:14px;height:14px;border-radius:4px;flex-shrink:0}
.wcal-legend i.own{background:var(--green-50);box-shadow:inset 0 0 0 1px var(--green-700)}
.wcal-legend i.booked{background-color:var(--gold-100);background-image:repeating-linear-gradient(45deg,transparent 0 4px,rgba(184,146,74,.35) 4px 6px);box-shadow:inset 0 0 0 1px var(--gold-500)}
.wcal-legend i.peer{position:relative;background:#fff;border:1px solid var(--cream-300)}
.wcal-legend i.peer::after{content:'';position:absolute;top:2px;right:2px;width:6px;height:6px;border-radius:50%;background:var(--gold-500)}
.wcal-legend i.demand{background:var(--gold-100)}
@media(max-width:760px){
  .wcal{grid-template-columns:42px repeat(7,minmax(30px,1fr))}
  .wcal-cell{height:22px}
  .wcal-hour{font-size:10px;padding:2px 5px}
  /* La appbar mide 64px + notch en móvil → ajusta el sticky de la cabecera. */
  .wcal-head{top:calc(64px + env(safe-area-inset-top))}
}

/* ── Banner fino "Estamos en directo" (aviso automático, opción A) ──
   Fijo abajo para no chocar con el layout de ninguna página del aula. */
.live-bar{position:fixed;left:50%;bottom:18px;transform:translateX(-50%);z-index:90;
  display:flex;align-items:center;gap:12px;max-width:min(640px,calc(100vw - 28px));
  background:var(--green-800);color:#fff;border:1px solid rgba(184,146,74,.45);
  border-radius:999px;padding:9px 14px 9px 18px;box-shadow:0 10px 30px rgba(10,47,35,.32);
  font-family:var(--ff-body);font-size:14px;animation:lbIn .28s ease}
@keyframes lbIn{from{opacity:0;transform:translate(-50%,12px)}to{opacity:1;transform:translate(-50%,0)}}
.live-bar .lb-dot{flex:0 0 auto;width:10px;height:10px;border-radius:50%;background:#e5484d;
  box-shadow:0 0 0 0 rgba(229,72,77,.6);animation:lbPulse 1.6s infinite}
@keyframes lbPulse{0%{box-shadow:0 0 0 0 rgba(229,72,77,.55)}70%{box-shadow:0 0 0 7px rgba(229,72,77,0)}100%{box-shadow:0 0 0 0 rgba(229,72,77,0)}}
.live-bar .lb-txt{flex:1 1 auto;min-width:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.live-bar .lb-txt strong{font-weight:700;color:#fff}
.live-bar .lb-cta{flex:0 0 auto;background:var(--gold-600);color:#fff;font-weight:600;font-size:13px;
  text-decoration:none;padding:6px 13px;border-radius:999px;white-space:nowrap}
.live-bar .lb-cta:hover{background:var(--gold-700)}
.live-bar .lb-x{flex:0 0 auto;background:none;border:0;color:rgba(255,255,255,.7);
  font-size:15px;line-height:1;cursor:pointer;padding:4px 6px;border-radius:50%}
.live-bar .lb-x:hover{color:#fff;background:rgba(255,255,255,.12)}
@media(max-width:560px){
  .live-bar{bottom:0;left:0;right:0;transform:none;max-width:100%;border-radius:0;
    padding:9px 12px;padding-bottom:calc(9px + env(safe-area-inset-bottom));animation:none}
  .live-bar .lb-txt{white-space:normal;font-size:13px}
}

/* ── Reservas de tutoría ── */
.booking-row{display:flex;align-items:center;gap:14px;padding:13px 16px;border:1px solid var(--border);border-radius:var(--r);margin-bottom:8px;background:#fff}
.bk-date{font-family:var(--ff-body);font-weight:600;font-variant-numeric:tabular-nums;font-size:14px;color:var(--green-800);white-space:nowrap}
.bk-who{flex:1;min-width:0;font-family:var(--ff-body);font-variant-numeric:tabular-nums;font-size:13px;color:var(--ink-700)}

/* ── Tutoría: huecos disponibles ── */
.slots-day{margin-bottom:22px}
.slots-day h4{font-family:var(--ff-display);font-size:1.2rem;color:var(--green-800);margin-bottom:10px;text-transform:capitalize}
.slots-grid{display:flex;flex-wrap:wrap;gap:8px}
.slot-btn{padding:9px 16px;border:1.5px solid var(--border);border-radius:999px;background:#fff;cursor:pointer;font-family:var(--ff-body);font-size:14px;font-weight:600;color:var(--green-800);font-variant-numeric:tabular-nums;transition:var(--ease)}
.slot-btn:hover{border-color:var(--green-700);background:var(--green-50);transform:translateY(-1px)}
.slot-btn.locked{cursor:not-allowed;opacity:.6;border-style:dashed}
.slot-btn.locked:hover{transform:none;background:#fff;border-color:var(--border)}
.slots-locked .slots-day{opacity:.55;filter:grayscale(.6)}

/* ── Upsell (subir de plan) ── */
.lock-chip{display:inline-flex;align-items:center;gap:7px;background:var(--gold-100);color:var(--gold-700);font-family:var(--ff-body);font-size:12px;font-weight:600;letter-spacing:.08em;text-transform:uppercase;padding:5px 12px;border-radius:999px;margin-bottom:14px}
.upsell{background:linear-gradient(135deg,var(--green-800),var(--green-700));color:#fff;border-radius:var(--rl);padding:30px 32px;margin-bottom:26px;position:relative;overflow:hidden;box-shadow:var(--shadow-md)}
.upsell::before{content:'';position:absolute;inset:0;pointer-events:none;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='90' height='90'%3E%3Cg fill='none' stroke='%23fff' stroke-opacity='0.07' stroke-width='1.3'%3E%3Cpolygon points='27,0 63,0 90,27 90,63 63,90 27,90 0,63 0,27'/%3E%3C/g%3E%3C/svg%3E")}
.upsell>*{position:relative;z-index:1}
.upsell .up-ar{font-family:var(--ff-arabic);color:var(--gold-500);font-size:1.15rem;margin-bottom:6px}
.upsell h3{font-family:var(--ff-display);font-weight:500;font-size:clamp(1.4rem,3vw,1.9rem);margin-bottom:10px;line-height:1.15}
.upsell h3 em{font-style:italic;color:var(--gold-500)}
.upsell p{color:rgba(255,255,255,.82);font-size:.95rem;max-width:580px;margin-bottom:18px;line-height:1.65}
.upsell ul{list-style:none;display:flex;flex-wrap:wrap;gap:9px 22px;margin-bottom:22px}
.upsell li{display:flex;align-items:center;gap:8px;font-size:.9rem;color:rgba(255,255,255,.92)}
.upsell li::before{content:'✦';color:var(--gold-500)}

/* ── Asistente de reserva (wizard) ── */
.wiz-steps{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin-bottom:22px;font-size:13px}
.wiz-step{padding:6px 14px;border-radius:999px;background:var(--cream-200);font-family:var(--ff-body);font-weight:600;font-variant-numeric:tabular-nums;color:var(--ink-500)}
.wiz-step.on{background:var(--green-800);color:#fff}
.wiz-step.done{background:var(--green-50);color:var(--green-700)}
.wiz-sep{color:var(--ink-300)}
.wiz-back{background:none;border:none;color:var(--green-700);font-weight:600;font-size:14px;cursor:pointer;font-family:var(--ff-body);padding:0;margin-bottom:6px}
.wiz-back:hover{text-decoration:underline}
.wiz-list{display:flex;flex-direction:column;gap:10px;max-width:560px}
.wiz-card{display:flex;align-items:center;gap:14px;padding:16px 18px;border:1.5px solid var(--border);border-radius:var(--rl);background:#fff;cursor:pointer;text-align:left;transition:var(--ease);font-family:var(--ff-body)}
.wiz-card:hover{border-color:var(--green-700);box-shadow:var(--shadow-sm);transform:translateY(-1px)}
.wiz-card-ico{font-size:1.6rem}
.wiz-card-main{flex:1;min-width:0;display:flex;flex-direction:column}
.wiz-card-main strong{font-size:15px;color:var(--ink-900)}
.wiz-card-main span{font-family:var(--ff-body);font-variant-numeric:tabular-nums;font-size:13px;color:var(--ink-500)}
.wiz-card-go{font-size:13px;font-weight:600;color:var(--green-700);white-space:nowrap}
.wiz-av{width:42px;height:42px;border-radius:50%;display:flex;align-items:center;justify-content:center;font-weight:700;color:#fff;background:var(--green-700);flex-shrink:0}
.wiz-av.female{background:var(--gold-600)}
.wiz-summary{display:flex;flex-wrap:wrap;gap:10px 20px;margin:14px 0 20px;font-family:var(--ff-body);font-weight:600;font-variant-numeric:tabular-nums;font-size:13px;color:var(--ink-700)}

/* ── Horario semanal de tutorías ── */
.schedule-wrap{overflow-x:auto;border:1px solid var(--border);border-radius:var(--rl);background:#fff}
.schedule{border-collapse:collapse;width:100%;min-width:780px}
.schedule th{background:var(--green-800);color:#fff;font-family:var(--ff-body);font-weight:600;font-size:12px;text-transform:uppercase;letter-spacing:.08em;padding:12px 10px;text-align:center;border-right:1px solid rgba(255,255,255,.12)}
.schedule th:last-child{border-right:none}
.schedule td{vertical-align:top;padding:12px 10px;border-right:1px solid var(--border);border-top:1px solid var(--border);width:14.28%;text-align:center}
.schedule td:last-child{border-right:none}
.schedule .slot-btn{display:flex;flex-direction:column;align-items:center;gap:1px;width:100%;margin-bottom:8px;padding:8px 6px;line-height:1.2}
.schedule .slot-d{font-family:var(--ff-body);font-size:11px;font-weight:600;color:var(--ink-500);font-variant-numeric:tabular-nums}
.no-slots{display:block;font-size:12px;color:var(--ink-300);padding:10px 4px;line-height:1.4}

/* ════════════════════════════════════════════════════════
   TABLERO DE ESTUDIO (calendario · sesión del día · continuar)
   ════════════════════════════════════════════════════════ */
.study-cal{display:block}
.dash{background:#fff;border:1px solid var(--border);border-radius:var(--rl);
  box-shadow:0 1px 2px rgba(15,29,24,.04),0 6px 18px rgba(15,29,24,.05)}
.dash-head{padding:16px 22px;border-bottom:1px solid var(--cream-200)}
.dash-title{font-family:var(--ff-display);font-weight:600;font-size:1.4rem;color:var(--ink-900)}
.dash-grid{display:grid;grid-template-columns:1.3fr 1fr 1fr}
.dash-col{padding:18px 20px;min-width:0}
.dash-col + .dash-col{border-left:1px solid var(--cream-200)}
.dash-col-title{font-family:var(--ff-display);font-size:1.15rem;font-weight:600;color:var(--green-800);margin-bottom:2px}
.dash-col-sub{font-family:var(--ff-body);font-weight:400;font-variant-numeric:tabular-nums;font-size:12px;color:var(--ink-500);margin-bottom:14px;text-transform:capitalize}
.dash-empty{font-size:13px;color:var(--ink-500);line-height:1.7;padding:18px 0;text-align:center}
.dash-tag{display:block;font-family:var(--ff-body);font-size:11px;font-weight:600;letter-spacing:.09em;text-transform:uppercase;color:var(--ink-500);margin:16px 0 9px}
.dash-tag.done{color:var(--success)}
@media(max-width:900px){
  .dash-grid{grid-template-columns:1fr}
  .dash-col + .dash-col{border-left:none;border-top:1px solid var(--cream-200)}
}
/* Variante de 2 columnas (tablero del profesor) */
.dash-grid.dash-grid-2{grid-template-columns:1fr 1fr}
@media(max-width:760px){.dash-grid.dash-grid-2{grid-template-columns:1fr}}
/* Filas dentro del tablero: estilo ligero (filete) como las del alumno */
.dash-col .q-item,
.dash-col .booking-row{border:none;border-top:1px solid var(--cream-200);border-radius:0;padding:11px 4px;margin:0;background:none;flex-wrap:wrap}
.dash-col .q-item:first-child,
.dash-col .booking-row:first-child{border-top:none}
.dash-col .q-item:hover{box-shadow:none}
.dash-col .q-item:hover .q-main strong{color:var(--green-800)}
.dash-col .empty{padding:26px 12px}

/* Navegación + conmutador del calendario */
.cal-nav{display:flex;align-items:center;gap:8px;margin-bottom:12px}
.cal-arrow{width:32px;height:32px;border-radius:50%;border:1px solid var(--border);background:#fff;cursor:pointer;font-size:1.1rem;line-height:1;color:var(--green-800);flex-shrink:0}
.cal-arrow:hover{background:var(--green-50);border-color:var(--green-700)}
.cal-period{font-family:var(--ff-display);font-weight:600;font-size:1.2rem;color:var(--ink-900);font-variant-numeric:tabular-nums;text-transform:capitalize;flex:1;text-align:center}
.cal-toolbar{display:flex;align-items:center;gap:8px;margin-bottom:12px;flex-wrap:wrap}
.cal-view{display:flex;gap:3px;background:var(--cream-200);padding:3px;border-radius:999px}
.cal-view-btn{padding:5px 14px;border:none;background:none;border-radius:999px;cursor:pointer;font-family:var(--ff-body);font-size:12px;font-weight:600;color:var(--ink-500);transition:var(--ease)}
.cal-view-btn.on{background:#fff;color:var(--green-800);box-shadow:var(--shadow-xs)}
.cal-today{margin-left:auto;padding:6px 14px;border:1px solid var(--green-800);background:#fff;color:var(--green-800);border-radius:999px;cursor:pointer;font-family:var(--ff-body);font-size:12px;font-weight:600}
.cal-today:hover{background:var(--green-800);color:#fff}

/* Rejilla en círculos */
.cal-grid .cal-row{display:grid;grid-template-columns:repeat(7,1fr);gap:2px}
.cal-wd span{text-align:center;font-family:var(--ff-body);font-size:11px;font-weight:600;letter-spacing:.08em;text-transform:uppercase;color:var(--ink-300);padding:4px 0}
.cal-cell{appearance:none;border:none;background:none;cursor:pointer;padding:4px 0;display:flex;align-items:center;justify-content:center}
.cal-grid.week .cal-cell{padding:10px 0}
.cal-cell.dim{visibility:hidden}
.cal-cell .cal-num{width:36px;height:36px;border-radius:50%;display:flex;align-items:center;justify-content:center;
  font-family:var(--ff-body);font-weight:600;font-variant-numeric:tabular-nums;font-size:13px;color:var(--ink-900);border:2px solid transparent;box-sizing:border-box;transition:var(--ease)}
.cal-cell:hover .cal-num{background:var(--cream-100)}
.cal-cell.has-sugg .cal-num{border-color:var(--gold-500)}
.cal-cell.has-done .cal-num{border-color:var(--success)}
.cal-cell.overdue .cal-num{border-color:#C25B4A}
.cal-cell.sel .cal-num{box-shadow:0 0 0 3px rgba(15,58,46,.12)}
.cal-cell.today .cal-num{background:var(--green-800);color:#fff;border-color:var(--green-800)}
.cal-cell.today:hover .cal-num{background:var(--green-900)}

/* Leyenda */
.cal-legend{display:flex;gap:14px;flex-wrap:wrap;margin-top:14px;font-family:var(--ff-body);font-size:11px;color:var(--ink-500)}
.cal-legend span{display:inline-flex;align-items:center;gap:5px}
.cal-legend i{width:12px;height:12px;border-radius:50%;border:2px solid transparent;box-sizing:border-box;flex-shrink:0}
.cal-legend i.today{background:var(--green-800)}
.cal-legend i.sugg{border-color:var(--gold-500)}
.cal-legend i.done{border-color:var(--success)}

/* «Continúa donde lo dejaste» */
.watch-item{display:flex;align-items:center;gap:11px;padding:11px 4px;border-top:1px solid var(--cream-200);transition:var(--ease)}
.watch-item:first-of-type{border-top:none}
.watch-thumb{width:46px;height:46px;border-radius:50%;background:var(--green-800);color:#fff;display:flex;align-items:center;justify-content:center;font-size:.9rem;flex-shrink:0;overflow:hidden}
.watch-thumb img{width:100%;height:100%;object-fit:cover}
.watch-info{flex:1;min-width:0}
.watch-info strong{display:block;font-family:var(--ff-body);font-weight:600;font-size:13px;color:var(--ink-900);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;transition:var(--ease)}
.watch-item:hover .watch-info strong{color:var(--green-800)}
.watch-info span{font-size:12px;color:var(--ink-500)}
.watch-go{color:var(--green-700);font-size:1.4rem;line-height:1;flex-shrink:0;transition:var(--ease)}
.watch-item:hover .watch-go{transform:translateX(3px)}

/* Clases en directo (Zoom) en el calendario */
.cal-cell.has-live{position:relative}
.cal-cell.has-live::after{content:'';position:absolute;top:6px;right:8px;width:7px;height:7px;border-radius:50%;background:#C0392B;box-shadow:0 0 0 2px #fff}
.cal-legend i.live{background:#C0392B}
.dash-tag.live{color:#C0392B}
.live-row{display:flex;align-items:center;gap:11px;padding:9px;border:1px solid #f0d0cb;background:#fdf3f2;border-radius:var(--r);margin-bottom:8px;transition:var(--ease)}
.live-row:hover{border-color:#C0392B;box-shadow:var(--shadow-xs)}
.live-thumb{position:relative;overflow:visible;width:58px;height:38px;border-radius:6px;background:#C0392B;color:#fff;display:flex;align-items:center;justify-content:center;flex-shrink:0;font-family:var(--ff-body);font-weight:700;font-variant-numeric:tabular-nums;font-size:13px;letter-spacing:.02em}
.live-info{flex:1;min-width:0}
.live-info strong{display:block;font-family:var(--ff-body);font-weight:600;font-size:13px;color:var(--ink-900);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.live-info span{display:block;font-size:12px;color:#C0392B;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.live-go{color:#C0392B;font-size:1.05rem;line-height:1;font-weight:700;flex-shrink:0;transition:var(--ease)}
.live-row:hover .live-go{transform:translate(2px,-2px)}

/* Badge de estado "EN VIVO / PRONTO / HOY" pegado al thumb */
.live-badge{position:absolute;left:50%;top:-9px;transform:translateX(-50%);padding:1px 6px;border-radius:999px;background:#C0392B;color:#fff;font-family:var(--ff-body);font-weight:700;font-size:9px;letter-spacing:.06em;line-height:1.4;white-space:nowrap;box-shadow:0 0 0 2px #fff}
.live-row.live-soon  .live-badge{background:#B7791F}
.live-row.live-later .live-badge{background:#C0392B;opacity:.85}
.live-row.live-now   .live-badge{animation:live-pulse-bg 1.4s ease-in-out infinite}
.live-row.live-now{border-color:#C0392B;box-shadow:0 0 0 1px #C0392B inset}
@keyframes live-pulse-bg{
  0%,100%{box-shadow:0 0 0 2px #fff, 0 0 0 0 rgba(192,57,43,.6)}
  50%    {box-shadow:0 0 0 2px #fff, 0 0 0 5px rgba(192,57,43,0)}
}
@media (prefers-reduced-motion:reduce){
  .live-row.live-now .live-badge{animation:none}
}
/* Clases de OTRO día: badge oculto (la fila queda "silenciada", solo color rojo) */
.live-row:not(.is-today) .live-badge{display:none}

/* Utilidad sr-only (texto solo para lectores de pantalla) */
.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;border:0}

/* Menú ⋮ del calendario (ritmo · recalcular) */
.cal-menu-wrap{position:relative}
.cal-menu-btn{width:32px;height:32px;border-radius:50%;border:1px solid var(--border);background:#fff;cursor:pointer;
  font-size:1.2rem;line-height:1;color:var(--ink-700);display:flex;align-items:center;justify-content:center}
.cal-menu-btn:hover{background:var(--cream-100);border-color:var(--green-700)}
.cal-menu{position:absolute;right:0;top:38px;z-index:30;width:240px;background:#fff;border:1px solid var(--border);
  border-radius:14px;box-shadow:var(--shadow-lg);padding:10px}
.cal-menu[hidden]{display:none}
.cal-menu-group{padding:8px 6px;border-bottom:1px solid var(--cream-200)}
.cal-menu-group:last-child{border-bottom:none}
.cal-menu-lbl{display:block;font-family:var(--ff-body);font-size:11px;font-weight:600;letter-spacing:.09em;text-transform:uppercase;color:var(--ink-500);margin:0 0 7px 4px}
.cal-menu-opt{display:flex;align-items:center;gap:8px;width:100%;text-align:left;padding:8px 10px;border:none;background:none;
  border-radius:9px;cursor:pointer;font-family:var(--ff-body);font-size:14px;font-weight:600;color:var(--ink-700)}
.cal-menu-opt:hover{background:var(--cream-100)}
.cal-menu-opt.on{color:var(--green-800)}
.cal-menu-opt .ar{font-family:var(--ff-arabic);color:var(--gold-700);font-size:16px}
.cal-menu-opt .ck{margin-left:auto;color:var(--success);font-weight:700}
.cal-menu-action{display:block;width:100%;text-align:left;padding:9px 10px;border:none;background:var(--green-50);
  border-radius:9px;cursor:pointer;font-family:var(--ff-body);font-size:14px;font-weight:600;color:var(--green-800)}
.cal-menu-action:hover{background:var(--green-100,#dceee3)}
.cal-menu-hint{display:block;font-family:var(--ff-body);font-size:11px;color:var(--ink-500);line-height:1.45;margin:6px 4px 0}

/* Lección en la columna «sesión del día» */
.cal-lesson{display:flex;align-items:center;gap:11px;padding:9px;border:1px solid var(--border);border-radius:var(--r);margin-bottom:8px;transition:var(--ease)}
.cal-lesson:hover{border-color:var(--green-700);box-shadow:var(--shadow-xs)}
.cal-lesson.done{background:var(--green-50);border-color:#bfe0cd}
.cal-thumb{position:relative;width:58px;height:38px;border-radius:6px;background:var(--green-800);color:#fff;display:flex;align-items:center;justify-content:center;font-size:.95rem;flex-shrink:0;overflow:hidden}
.cal-thumb img{width:100%;height:100%;object-fit:cover}
.cal-check{position:absolute;inset:0;background:rgba(45,125,79,.82);color:#fff;display:flex;align-items:center;justify-content:center;font-size:1.2rem;font-weight:700}
.cal-lesson-info{min-width:0}
.cal-lesson-info strong{display:block;font-family:var(--ff-body);font-weight:600;font-size:13px;color:var(--ink-900);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.cal-lesson-info span{font-size:12px;color:var(--ink-500)}

/* ── Onboarding (elegir punto de partida) ── */
.onboard{max-width:780px}
.onboard-opts{display:grid;grid-template-columns:1fr 1fr;gap:16px}
@media(max-width:680px){.onboard-opts{grid-template-columns:1fr}}
.onboard-card{text-align:left;background:#fff;border:1.5px solid var(--border);border-radius:var(--rl);padding:26px;cursor:pointer;transition:var(--ease);font-family:var(--ff-body)}
.onboard-card:hover{border-color:var(--green-700);box-shadow:var(--shadow-md);transform:translateY(-2px)}
.onboard-card .ob-ar{font-family:var(--ff-arabic);font-size:1.8rem;color:var(--gold-600);margin-bottom:10px}
.onboard-card h3{font-family:var(--ff-display);font-size:1.35rem;font-weight:600;color:var(--green-800);margin-bottom:8px}
.onboard-card p{font-family:var(--ff-body);font-size:13px;color:var(--ink-700);line-height:1.6}

/* ════════════════════════════════════════════════════════
   ADMINISTRACIÓN
   ════════════════════════════════════════════════════════ */
.admin-cta{display:flex;align-items:center;justify-content:space-between;gap:16px;flex-wrap:wrap;padding:20px 24px;background:var(--green-800);color:#fff;border-radius:var(--rl)}
.admin-cta strong{display:block;font-family:var(--ff-display);font-size:1.3rem;font-weight:600}
.admin-cta span{font-family:var(--ff-body);font-size:13px;color:rgba(255,255,255,.75)}
.adm-sec-head{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap;margin-bottom:6px}
.adm-table-wrap{overflow-x:auto;border:1px solid var(--border);border-radius:var(--rl);background:#fff}
.adm-table{border-collapse:collapse;width:100%;min-width:720px}
.adm-table th{background:var(--cream-200);text-align:left;font-family:var(--ff-body);font-size:12px;font-weight:600;text-transform:uppercase;letter-spacing:.08em;color:var(--ink-500);padding:11px 14px}
.adm-table td{padding:11px 14px;border-top:1px solid var(--border);font-family:var(--ff-body);font-variant-numeric:tabular-nums;font-size:13px;vertical-align:middle}
.adm-table tr.is-inactive{opacity:.55}
.adm-mail{font-size:12px;color:var(--ink-500)}
.adm-sel{border:1px solid var(--border);border-radius:8px;padding:6px 8px;font-family:var(--ff-body);font-size:13px;background:#fff}
.adm-status{font-family:var(--ff-body);font-size:11px;font-weight:600;text-transform:uppercase;letter-spacing:.08em;padding:3px 10px;border-radius:999px}
.adm-status.on{background:#EAF5EE;color:#1d5a37}
.adm-status.off{background:#FBECEC;color:#8a2b2b}
.adm-actions{display:flex;gap:6px;flex-wrap:wrap}
.adm-create{background:#fff;border:1px solid var(--border);border-radius:var(--rl);padding:20px;margin-top:14px;display:flex;flex-direction:column;gap:16px}
.adm-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(210px,1fr));gap:14px}
.adm-grid label{display:flex;flex-direction:column;gap:5px;font-family:var(--ff-body);font-size:12px;font-weight:600;color:var(--ink-700);min-width:0}
.adm-grid input,.adm-grid select{width:100%;min-width:0;box-sizing:border-box;border:1px solid var(--border);border-radius:8px;padding:9px 11px;font-family:var(--ff-body);font-size:14px}
.adm-create>button[type=submit]{align-self:flex-start}
.adm-pass{display:flex;gap:6px;min-width:0}
.adm-pass input{flex:1 1 auto;min-width:0}
.adm-pass .btn{flex:0 0 auto;white-space:nowrap}

/* ── Gestor de contenido (admin) ── */
.cm-prog{border:1px solid var(--border);border-radius:var(--rl);background:#fff;margin-bottom:14px;overflow:hidden}
.cm-row{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:12px 16px}
.cm-prog-row{background:var(--green-50);border-bottom:1px solid var(--cream-200)}
.cm-title{font-family:var(--ff-display);font-weight:600;font-size:1.05rem;color:var(--ink-900);min-width:0}
.cm-meta{font-family:var(--ff-body);font-weight:600;font-size:11px;color:var(--ink-500);letter-spacing:.02em}
.cm-actions{display:flex;gap:6px;flex-wrap:wrap;flex-shrink:0}
.cm-btn{border:1px solid var(--border);background:#fff;border-radius:999px;padding:4px 11px;font-family:var(--ff-body);font-size:12px;font-weight:600;color:var(--green-800);cursor:pointer;transition:var(--ease)}
.cm-btn:hover{border-color:var(--green-700);background:var(--green-50)}
.cm-btn.cm-del{color:#a23b2d}
.cm-btn.cm-del:hover{background:#fbeceb;border-color:#e6b8b1}
.cm-children{padding:6px 10px 10px}
.cm-level{border:1px solid var(--cream-200);border-radius:var(--r);margin:8px 0;background:var(--cream-100)}
.cm-unit{border:1px solid var(--cream-200);border-radius:var(--r);margin:8px;background:#fff}
.cm-lessons{padding:4px 8px 8px}
.cm-lesson{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:7px 10px;border-top:1px solid var(--cream-200)}
.cm-lesson:first-child{border-top:none}
.cm-lesson-t{font-size:13.5px;color:var(--ink-900);min-width:0;overflow:hidden;text-overflow:ellipsis}
.cm-form{max-width:520px;max-height:88vh;overflow:auto}
.cm-field{display:flex;flex-direction:column;gap:5px;margin-bottom:12px}
.cm-field>span{font-size:12.5px;font-weight:600;color:var(--ink-700)}
.cm-field input,.cm-field select,.cm-field textarea{width:100%;box-sizing:border-box;border:1.5px solid var(--border);border-radius:var(--r);padding:9px 11px;font-family:var(--ff-body);font-size:14px;background:#fff}
.cm-field textarea{font-family:ui-monospace,Menlo,monospace;font-size:12.5px;line-height:1.5;resize:vertical}
.cm-field input:focus,.cm-field select:focus,.cm-field textarea:focus{outline:none;border-color:var(--gold-600)}
.cm-field input:disabled{background:var(--cream-100);color:var(--ink-500)}
.cm-field.cm-check{flex-direction:row;align-items:center;gap:8px}
.cm-field.cm-check input{width:auto}

/* ── Toast ── */
.toast{position:fixed;bottom:24px;left:50%;transform:translateX(-50%) translateY(20px);background:var(--green-900);color:#fff;
  padding:13px 22px;border-radius:999px;font-size:14px;font-weight:500;box-shadow:var(--shadow-lg);z-index:120;opacity:0;transition:var(--ease);pointer-events:none}
.toast.show{opacity:1;transform:translateX(-50%) translateY(0)}
.toast.ok{background:var(--success)} .toast.err{background:var(--danger)}

/* ── Barra de "vídeo visto" + requisitos de avance ── */
.watch-bar{display:flex;align-items:center;justify-content:space-between;gap:14px;flex-wrap:wrap;
  margin-top:12px;padding:12px 16px;background:var(--cream,#F7F2E8);border:1px solid rgba(15,58,46,.12);border-radius:12px}
.watch-reqs{display:flex;gap:16px;flex-wrap:wrap;font-family:var(--ff-body);font-weight:600;font-variant-numeric:tabular-nums;font-size:14px;color:var(--ink-500)}
.watch-reqs .wreq{display:inline-flex;align-items:center;gap:6px}
.watch-reqs .wreq.ok{color:var(--success,#2e7d32)}
.watch-done{font-size:14px;font-weight:600;color:var(--success,#2e7d32)}

/* ── Pista de resultado del test ── */
.quiz-hint{margin:10px auto 0;max-width:520px;font-family:var(--ff-body);font-variant-numeric:tabular-nums;font-size:14px;color:var(--green-800);
  background:rgba(184,146,74,.14);border:1px solid rgba(184,146,74,.35);border-radius:10px;padding:10px 14px;text-align:center}

/* ── Modal de confirmación ── */
.modal-overlay{position:fixed;inset:0;background:rgba(15,29,24,.55);display:flex;align-items:center;justify-content:center;
  z-index:140;padding:20px;opacity:0;transition:opacity .15s ease}
.modal-overlay.open{opacity:1}
.modal-box{background:#fff;border-radius:16px;max-width:420px;width:100%;padding:26px 24px;box-shadow:var(--shadow-lg);
  transform:translateY(8px);transition:transform .15s ease}
.modal-overlay.open .modal-box{transform:translateY(0)}
.modal-box h3{font-family:var(--ff-display);font-weight:600;font-size:1.3rem;color:var(--green-900,#0c2c22);margin:0 0 8px}
.modal-box p{color:var(--ink-700,#444);font-size:15px;margin:0 0 20px;line-height:1.5}
.modal-actions{display:flex;justify-content:flex-end;gap:10px;flex-wrap:wrap}

/* ── Reglas de componente tipográficas ── */
.pc-tag .num{font-style:normal}
.uc-done-title{font-family:var(--ff-display);font-weight:600;font-size:1.2rem;color:var(--green-800)}
.video-locked h3{font-family:var(--ff-display);font-weight:600}

/* ═══════════════════════════════════════════════════════════════
   MÓVIL — bundle de fixes objetivos (auditoría 17-jun)
   - mata el zoom de iOS al tocar inputs (font-size:16px)
   - respeta safe-area en la appbar (notch)
   - tamaños táctiles >= 40x40 en CTAs secundarios
   - corrige overflow del menú ⋮ del calendario
   - notas de lección dejan de ser sticky en móvil
   - tabs de lección scrollables sin envolver
   - modal de admin con acciones apiladas + primario full-width
   - inputs siempre 16px en móvil (regla más específica, gana por orden)
   ═══════════════════════════════════════════════════════════════ */
@media(max-width:560px){
  /* iOS no hace zoom si el input >=16px */
  .acc-form input,.acc-form select,.acc-form textarea,
  .field input,.field select,.field textarea,
  .qa-form textarea,.qa-reply-form input,
  .notes-panel textarea,.cm-field input,.cm-field select,.cm-field textarea{font-size:16px}

  /* APPBAR — respeta el notch y reduce altura */
  .appbar{height:calc(64px + env(safe-area-inset-top));
          padding-top:env(safe-area-inset-top);
          padding-left:max(14px,env(safe-area-inset-left));
          padding-right:max(14px,env(safe-area-inset-right));
          gap:10px}
  .appbar .brand img{height:44px}
  /* El padding-top del wrap se calcula desde la altura real del appbar
     (64 + safe-area) para que el contenido NO quede bajo la appbar en
     iPhones con notch. */
  .panel-wrap{padding-top:calc(84px + env(safe-area-inset-top))}
  .lesson-wrap{padding-top:calc(80px + env(safe-area-inset-top))}

  /* Barra de secciones: SOLO iconos en móvil, anclada bajo la appbar reducida */
  .sect-tabs{top:calc(64px + env(safe-area-inset-top));gap:0;margin-bottom:22px}
  .sect-tab{flex:1 0 auto;justify-content:center;padding:13px 10px}
  .sect-tab .lbl{display:none}
  .sect-tab svg{width:23px;height:23px}
  /* Sin texto en móvil: el contador se reduce a un punto rojo arriba-derecha
     del botón (no número adosado). El fade de scroll (::after) se hereda. */
  .sect-badge{position:absolute;top:6px;right:6px;min-width:0;width:9px;height:9px;
    padding:0;font-size:0;line-height:0;box-shadow:0 0 0 2px var(--cream-100)}

  /* Reserva de tutoría: el "con quién" baja a su propia línea (no se parte palabra a palabra) */
  .booking-row{align-items:center;row-gap:6px}
  .bk-who{flex-basis:100%;order:1;font-size:13.5px}

  /* Botón ☰ Lecciones → solo icono en móvil (especificidad .appbar .icon-btn para ganar a la regla base) */
  .appbar .icon-btn{padding:0;width:40px;height:40px;gap:0;font-size:0;display:inline-flex;align-items:center;justify-content:center;flex-shrink:0;overflow:hidden}
  .appbar .icon-btn::before{content:'☰';font-size:18px;font-weight:700;line-height:1}
  .prog-pill .pp-label:first-child{display:none}
  .prog-pill .pp-bar{width:60px}

  /* Tamaños táctiles >= 40x40 en CTAs secundarios */
  .btn-sm{min-height:40px;padding:10px 18px}
  .cal-arrow{width:40px;height:40px}
  .cal-menu-btn{width:40px;height:40px}
  .cal-view-btn{padding:9px 14px;min-height:40px}
  .cal-today{padding:9px 14px;min-height:40px}
  .drawer-close{width:44px;height:44px;display:inline-flex;align-items:center;justify-content:center;font-size:1.6rem;line-height:1}
  .qa-reply-toggle{display:inline-block;padding:10px 4px;min-height:40px}

  /* Menú ⋮ del calendario — anclado al viewport, no a la derecha del wrap */
  .cal-menu{width:min(260px,calc(100vw - 32px));
            right:auto;left:50%;transform:translateX(-50%)}

  /* Notas de lección: deja de ser sticky en móvil (rebotaba) */
  .notes-panel{position:static;top:auto}

  /* Tabs de lección: scroll horizontal en vez de envolver */
  .action-bar{flex-direction:column;align-items:stretch;gap:12px}
  .action-bar .tabs{margin-left:0;display:flex;overflow-x:auto;
                    -webkit-overflow-scrolling:touch;scrollbar-width:none;gap:6px}
  .action-bar .tabs::-webkit-scrollbar{display:none}
  .tab-btn{flex:0 0 auto;padding:10px 14px;font-size:12.5px}
  .btn-complete{width:100%}

  /* Modal admin live: acciones apiladas, primario debajo a ancho completo */
  .modal-overlay{padding:10px}
  .modal-box{padding:18px 16px;border-radius:14px}
  .modal-actions{flex-direction:column-reverse;align-items:stretch;gap:8px}
  .modal-actions .btn{width:100%;justify-content:center}
  .modal-box .cm-form{max-height:calc(100vh - 80px)}

  /* Calendario .cal-cell: aprieta menos los círculos */
  .cal-cell .cal-num{width:32px;height:32px;font-size:12px;border-width:1.5px}
  .cal-cell.has-live::after{top:3px;right:4px;width:6px;height:6px}
  .cal-wd span{font-size:12px}

  /* Toast respeta safe-area inferior */
  .toast{bottom:max(24px, env(safe-area-inset-bottom));z-index:150}

  /* Tabla .schedule (reservar tutoría) → lista vertical por día en móvil.
     Se elimina el scroll horizontal forzado y cada día se ve como una sección
     apilada con su nombre como cabecera. Cada <td> lleva data-day del JS. */
  .schedule-wrap{overflow:visible}
  .schedule{min-width:0;display:block;border-collapse:separate;border-spacing:0}
  .schedule thead{display:none}
  .schedule tbody,.schedule tr{display:block;width:100%}
  .schedule td{display:block;width:100%;border:0;border-bottom:1px solid var(--cream-300);padding:14px 4px;text-align:left}
  .schedule tr:last-child td:last-child{border-bottom:0}
  .schedule td::before{content:attr(data-day);display:block;
                       font-family:var(--ff-display);font-weight:600;font-size:1rem;
                       color:var(--green-800);margin-bottom:8px;letter-spacing:.005em}
  .schedule .slot-btn{display:inline-flex;flex-direction:row;align-items:center;gap:8px;
                      width:auto;margin:4px 8px 4px 0;padding:10px 14px;min-height:40px}
  .schedule .slot-d{font-size:12px}
  .schedule .no-slots{display:inline-block;font-size:13px;color:var(--ink-500);font-style:italic}
}

/* ── Modal de reserva de tutoría (3 pasos) ── */
.modal-box.tut-modal{max-width:540px;width:100%;max-height:88vh;overflow:auto;text-align:left;position:relative;padding:24px 24px 26px}
.tut-x{position:absolute;top:12px;right:14px;width:36px;height:36px;border:none;background:none;font-size:1.5rem;line-height:1;color:var(--ink-500);cursor:pointer;border-radius:50%}
.tut-x:hover{background:var(--cream-100);color:var(--ink-900)}
.tut-title{font-family:var(--ff-display);font-weight:600;font-size:1.5rem;color:var(--ink-900);margin:0 0 14px;padding-right:36px}
.tut-steps{display:flex;align-items:center;flex-wrap:wrap;gap:6px;margin-bottom:18px}
.tut-sub{color:var(--ink-500);font-size:.95rem;margin-bottom:14px}
.tut-note{font-size:.85rem;color:var(--gold-700);background:var(--gold-100);border-radius:var(--r);padding:9px 12px;margin-bottom:14px;line-height:1.5}
.tut-summary{display:flex;flex-wrap:wrap;gap:8px 16px;font-size:.9rem;color:var(--ink-700);margin:6px 0 16px;padding-bottom:14px;border-bottom:1px solid var(--cream-200)}
.tut-days{display:flex;flex-direction:column;gap:14px}
.tut-day-h{font-family:var(--ff-display);font-weight:600;font-size:1rem;color:var(--green-800);margin-bottom:8px}
.tut-day-x{font-family:var(--ff-body);font-weight:400;font-size:.78rem;color:var(--ink-500);font-style:italic}
.tut-times{display:flex;flex-wrap:wrap;gap:8px}
.tut-slot{font-family:var(--ff-body);font-weight:600;font-variant-numeric:tabular-nums;font-size:14px;color:var(--green-800);background:#fff;border:1.5px solid var(--border);border-radius:999px;padding:9px 16px;min-height:40px;cursor:pointer;transition:var(--ease)}
.tut-slot:hover{border-color:var(--green-700);background:var(--green-50)}
.tut-day.taken{opacity:.6}
.tut-day.taken .tut-slot{cursor:not-allowed;background:var(--cream-100);color:var(--ink-300);border-color:var(--cream-300)}
@media(max-width:560px){.modal-box.tut-modal{padding:18px 14px 18px}}

/* ── Popup de detalle de notificación (tutoría: confirmación / cancelación) ── */
.nd-rows{display:flex;flex-direction:column;gap:10px;margin:4px 0 2px}
.nd-row{display:flex;gap:12px;align-items:baseline}
.nd-lbl{flex:0 0 64px;font-size:.78rem;font-weight:600;text-transform:uppercase;letter-spacing:.04em;color:var(--ink-500)}
.nd-val{flex:1;font-size:.97rem;color:var(--ink-900)}
.nd-reason{margin-top:16px;padding:14px 16px;background:var(--cream-100);border:1px solid var(--cream-200);border-left:3px solid var(--gold-500);border-radius:var(--r)}
.nd-reason .nd-lbl{display:block;flex:none;margin-bottom:6px}
.nd-reason p{margin:0;font-size:.97rem;line-height:1.55;color:var(--ink-700);white-space:pre-wrap}

/* ── Campana de notificaciones (appbar) ── */
.notif-wrap{position:relative;flex-shrink:0;margin-right:6px}
.notif-btn{position:relative;display:inline-flex;align-items:center;justify-content:center;width:42px;height:42px;border:none;border-radius:50%;cursor:pointer;color:#fff;background:rgba(255,255,255,.1)}
.notif-btn:hover{background:rgba(255,255,255,.2)}
.notif-badge{position:absolute;top:3px;right:3px;min-width:18px;height:18px;padding:0 4px;box-sizing:border-box;border-radius:999px;background:var(--gold-600);color:#fff;font-family:var(--ff-body);font-size:11px;font-weight:700;line-height:18px;text-align:center;border:2px solid var(--green-800)}
.notif-panel{position:absolute;top:52px;right:0;width:340px;max-width:88vw;background:#fff;border:1px solid var(--border);border-radius:var(--rl);box-shadow:0 18px 44px rgba(15,58,46,.22);z-index:80;overflow:hidden}
.notif-head{display:flex;align-items:center;justify-content:space-between;padding:12px 16px;border-bottom:1px solid var(--border)}
.notif-head strong{font-family:var(--ff-display);color:var(--green-800);font-size:15px}
.notif-readall{background:none;border:none;cursor:pointer;color:var(--gold-700);font-family:var(--ff-body);font-size:12px;font-weight:600}
.notif-readall:hover{text-decoration:underline}
.notif-list{max-height:60vh;overflow-y:auto}
.notif-empty{padding:28px 16px;text-align:center;color:var(--ink-500);font-size:13px}
.notif-item{display:flex;gap:10px;padding:12px 16px;border-bottom:1px solid var(--cream-200);text-decoration:none;color:inherit}
.notif-item:last-child{border-bottom:none}
.notif-item:hover{background:var(--cream-100)}
.notif-item .notif-dot{width:8px;height:8px;border-radius:50%;margin-top:6px;flex-shrink:0;background:transparent}
.notif-item.unread{background:rgba(184,146,74,.07)}
.notif-item.unread .notif-dot{background:var(--gold-600)}
.notif-txt{display:flex;flex-direction:column;gap:2px;min-width:0}
.notif-txt strong{font-size:13.5px;color:var(--green-800);font-weight:600}
.notif-txt>span{font-size:12.5px;color:var(--ink-700)}
.notif-time{font-size:11px;color:var(--ink-500)}
@media(max-width:720px){.notif-panel{position:fixed;top:calc(64px + env(safe-area-inset-top,0px));left:8px;right:8px;width:auto;max-width:none}}

/* Textarea de motivo de cancelación de tutoría */
.cancel-reason{width:100%;box-sizing:border-box;font-family:var(--ff-body);font-size:16px;padding:10px 12px;border:1.5px solid var(--border);border-radius:var(--r);resize:vertical;color:var(--ink-900);background:#fff;line-height:1.5}
.cancel-reason:focus{outline:none;border-color:var(--green-700)}

/* Responder preguntas desde el panel del profesor (inline) */
.q-actions{display:flex;align-items:center;gap:14px;margin-top:6px}
.q-reply-btn{background:none;border:none;padding:0;cursor:pointer;font-family:var(--ff-body);font-size:12.5px;font-weight:600;color:var(--green-700)}
.q-reply-btn:hover{text-decoration:underline}
.q-open{font-size:12px;color:var(--ink-500);text-decoration:none}
.q-open:hover{color:var(--green-700);text-decoration:underline}
.q-reply-form{flex-direction:column;gap:8px;margin-top:10px}
.q-reply-form textarea{width:100%;box-sizing:border-box;font-family:var(--ff-body);font-size:16px;padding:9px 11px;border:1.5px solid var(--border);border-radius:var(--r);resize:vertical;color:var(--ink-900);background:#fff;line-height:1.5}
.q-reply-form textarea:focus{outline:none;border-color:var(--green-700)}
.q-reply-form button{align-self:flex-start}

/* ════════════════════════════════════════════════════════
   PIE DE PÁGINA DEL AULA (logo + redes + enlaces + contacto)
   ════════════════════════════════════════════════════════ */
.aula-footer{background:var(--green-900);color:rgba(255,255,255,.82);margin-top:56px}
.af-inner{max-width:1120px;margin:0 auto;padding:44px 22px 30px;display:grid;grid-template-columns:1.7fr 1fr 1fr 1fr;gap:34px}
.af-brand img{height:74px;width:auto;margin-bottom:14px}
.af-tag{font-family:var(--ff-display);font-style:italic;color:rgba(255,255,255,.6);font-size:.95rem;max-width:30ch;margin-bottom:18px}
.af-social{display:flex;gap:10px}
.af-social a{width:40px;height:40px;border-radius:50%;background:rgba(255,255,255,.1);display:flex;align-items:center;justify-content:center;color:#fff;transition:var(--ease)}
.af-social a:hover{background:var(--gold-600);color:#fff}
.af-col h4{font-family:var(--ff-display);font-weight:600;font-size:.78rem;letter-spacing:.09em;text-transform:uppercase;color:var(--gold-500);margin-bottom:14px}
.af-col a{display:block;color:rgba(255,255,255,.78);font-size:.92rem;margin-bottom:10px;transition:var(--ease)}
.af-col a:hover{color:#fff;padding-left:3px}
.af-bar{border-top:1px solid rgba(255,255,255,.12);text-align:center;padding:16px 22px;font-size:.82rem;color:rgba(255,255,255,.55)}
@media(max-width:760px){
  .af-inner{grid-template-columns:1fr 1fr;gap:18px 18px;padding:24px 18px 14px}
  .af-brand{grid-column:1 / -1}
  .af-brand img{height:52px;margin-bottom:8px}
  .af-tag{margin-bottom:12px;font-size:.9rem}
  .af-social a{width:36px;height:36px}
  .af-col h4{margin-bottom:9px}
  .af-col a{margin-bottom:7px;font-size:.9rem}
  .af-bar{padding:13px 18px;font-size:.76rem}
}

/* ── Explorador de preguntas (pestaña Preguntas) ── */
.qbrowse-filters{display:flex;flex-wrap:wrap;gap:10px;margin:6px 0 22px}
.qf,.qf-search{font-family:var(--ff-body);font-size:14px;color:var(--ink-900);background:#fff;border:1.5px solid var(--border);border-radius:var(--r);padding:9px 12px;min-height:42px}
.qf{cursor:pointer}
.qf-search{flex:1;min-width:200px}
.qf:focus,.qf-search:focus{outline:none;border-color:var(--green-700)}
.qb-count{font-size:13px;color:var(--ink-500);margin-bottom:14px}
.qb-item{background:#fff;border:1px solid var(--border);border-left:3px solid var(--success);border-radius:var(--r);padding:16px 18px;margin-bottom:12px;box-shadow:var(--shadow-xs)}
.qb-item.pending{border-left-color:var(--gold-600)}
.qb-crumb{font-family:var(--ff-body);font-size:11.5px;font-weight:600;letter-spacing:.02em;color:var(--gold-700);margin-bottom:7px}
.qb-q{font-family:var(--ff-display);font-weight:600;font-size:1.05rem;color:var(--ink-900);line-height:1.4;margin-bottom:8px}
.qb-meta{display:flex;justify-content:space-between;gap:10px;flex-wrap:wrap;font-family:var(--ff-body);font-size:12.5px;color:var(--ink-500)}
.qb-flag{font-weight:600;color:var(--success)}
.qb-item.pending .qb-flag{color:var(--gold-700)}
.qb-del{margin-top:12px;background:transparent;border:1px solid rgba(192,57,43,.35);color:#c0392b;font-family:var(--ff-body);font-size:12px;font-weight:600;padding:5px 12px;border-radius:999px;cursor:pointer}
.qb-del:hover:not(:disabled){background:rgba(192,57,43,.08)}
.qb-del:disabled{opacity:.5;cursor:default}
.qb-answers{margin-top:12px;display:flex;flex-direction:column;gap:8px}
.qb-answer{background:var(--cream-100);border-radius:var(--r);padding:10px 13px}
.qb-answer.staff{background:var(--green-50);border-left:3px solid var(--green-700)}
.qb-answer-who{font-size:12px;font-weight:600;color:var(--green-800);margin-bottom:4px}
.qb-answer-who span{font-weight:400;color:var(--ink-500)}
.qb-answer p{font-size:14px;color:var(--ink-700);line-height:1.55;white-space:pre-wrap;margin:0}
@media(max-width:560px){ .qf,.qf-search{flex:1 1 100%} }

/* ── Anuncios (pestaña alumno + gestor del staff) ── */
.ann-list{display:flex;flex-direction:column;gap:14px}
.ann-card{background:#fff;border:1px solid var(--border);border-left:3px solid var(--gold-500);border-radius:var(--r);padding:18px 20px;box-shadow:var(--shadow-xs)}
.ann-head{display:flex;align-items:baseline;justify-content:space-between;gap:12px;flex-wrap:wrap;margin-bottom:8px}
.ann-head h3{font-family:var(--ff-display);font-weight:600;font-size:1.15rem;color:var(--green-800);line-height:1.3}
.ann-head time{font-family:var(--ff-body);font-size:12px;color:var(--ink-500);white-space:nowrap;flex-shrink:0}
.ann-body{font-size:14px;color:var(--ink-700);line-height:1.65;white-space:pre-wrap;margin:0}
.ann-by{margin-top:10px;font-size:12.5px;font-style:italic;color:var(--ink-500)}
.ann-form{display:flex;flex-direction:column;gap:10px;margin-bottom:18px}
.ann-form input,.ann-form textarea,.ann-form select{font-family:var(--ff-body);font-size:14px;color:var(--ink-900);background:#fff;border:1.5px solid var(--border);border-radius:var(--r);padding:10px 12px}
.ann-form input:focus,.ann-form textarea:focus,.ann-form select:focus{outline:none;border-color:var(--green-700)}
.ann-form textarea{resize:vertical;line-height:1.55}
.ann-form-row{display:flex;gap:10px;align-items:center;flex-wrap:wrap}
.ann-form-row select{flex:1;min-width:160px;cursor:pointer}
.ann-manage{display:flex;flex-direction:column;gap:8px;border-top:1px solid var(--cream-200);padding-top:14px}
.ann-row{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:8px 0}
.ann-row-main{display:flex;flex-direction:column;gap:2px;min-width:0}
.ann-row-main strong{font-size:14px;color:var(--ink-900);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.ann-row-main span{font-size:12px;color:var(--ink-500)}
/* Reacciones bajo cada anuncio (set cerrado: ✅ 🤲 ❤️ 📖) */
.ann-react{display:flex;flex-wrap:wrap;gap:8px;margin-top:14px;padding-top:12px;border-top:1px solid var(--cream-200)}
.ann-react-btn{display:inline-flex;align-items:center;gap:6px;font-family:var(--ff-body);font-size:14px;line-height:1;cursor:pointer;background:var(--cream-50,#faf7f0);border:1.5px solid var(--border);border-radius:999px;padding:6px 11px;color:var(--ink-700);transition:border-color .12s,background .12s,transform .06s}
.ann-react-btn:hover{border-color:var(--green-700);background:#fff}
.ann-react-btn:active{transform:scale(.96)}
.ann-react-btn.is-on{border-color:var(--green-700);background:var(--green-50,#eef4f1);color:var(--green-800);font-weight:600}
.ann-react-emo{font-size:16px}
.ann-react-n{font-size:12.5px;font-variant-numeric:tabular-nums;min-width:8px;text-align:center}
@media(max-width:560px){
  .ann-form input,.ann-form textarea,.ann-form select{font-size:16px}
  .ann-form-row{flex-direction:column;align-items:stretch}
  .ann-form-row .btn{width:100%;justify-content:center}
}

/* ============================================================
   LECTURA · programas de lectura de libros gratuitos
   ============================================================ */

/* Calendario: día con lectura programada (punto dorado, abajo-derecha) */
.cal-cell.has-reading{position:relative}
.cal-cell.has-reading::before{content:'';position:absolute;bottom:6px;right:8px;width:7px;height:7px;border-radius:50%;background:var(--gold-600);box-shadow:0 0 0 2px #fff}
.cal-legend i.reading{background:var(--gold-600)}

/* Fila de "día de lectura" en la columna del día (clon de .cal-lesson) */
.cal-lesson.reading .cal-thumb.reading{background:var(--gold-600)}
.cal-lesson.reading.done{background:var(--gold-100);border-color:var(--gold-500)}

/* Página lectura.html: rejilla visor + lateral */
.reading-grid{display:grid;grid-template-columns:minmax(0,1.7fr) 300px;gap:24px;align-items:start;margin-top:8px}
@media(max-width:920px){.reading-grid{grid-template-columns:1fr}}
.reading-viewer{background:#f4f1ea;border:1px solid var(--border);border-radius:var(--rl);padding:14px;min-height:50vh;max-height:80vh;display:flex;flex-direction:column;align-items:center;gap:14px;overflow:auto;-webkit-overflow-scrolling:touch}
.reading-page{max-width:100%;height:auto;box-shadow:0 6px 20px rgba(26,24,20,.12);border-radius:4px;background:#fff}
.reading-nav{display:flex;align-items:center;justify-content:center;gap:14px;margin-top:12px;flex-wrap:wrap}
.reading-nav .rd-ind{font-size:13px;color:var(--ink-500);min-width:200px;text-align:center}
.reading-nav button[disabled]{opacity:.4;cursor:default}
.reading-legal{margin-top:18px;font-size:12px;color:var(--ink-500);line-height:1.6;border-top:1px solid var(--cream-200);padding-top:12px}
.reading-legal a{color:var(--green-800);font-weight:600}
.reading-loading{color:var(--ink-500);margin:auto;font-size:.95rem}
.reading-error{margin:auto;text-align:center;color:var(--ink-500);max-width:380px}
.reading-error .rd-hint{font-size:12px;margin-top:10px;color:var(--ink-300)}
.reading-actions{display:flex;align-items:center;gap:12px;flex-wrap:wrap;margin-top:16px}
.reading-dl{display:flex;gap:8px;margin-left:auto;flex-wrap:wrap}
.reading-upsell{margin-top:10px;font-size:13px;color:var(--ink-500);background:var(--gold-100);border:1px solid var(--gold-500);border-radius:var(--r);padding:10px 12px}
.reading-upsell a{color:var(--green-800);font-weight:600}

/* Lateral: índice de días */
.reading-side{background:#fff;border:1px solid var(--border);border-radius:var(--rl);padding:18px;position:sticky;top:100px}
.reading-side h3{font-family:var(--ff-display);font-size:1.2rem;font-weight:600;color:var(--green-800);margin-bottom:8px}
.reading-meta{display:flex;flex-direction:column;gap:2px;margin-bottom:14px;font-size:13px;color:var(--ink-900)}
.reading-meta .rm-sub{font-size:12px;color:var(--ink-500)}
.reading-days{display:flex;flex-direction:column;gap:6px;max-height:50vh;overflow:auto}
.rd-item{display:flex;align-items:center;gap:10px;padding:8px;border:1px solid var(--border);border-radius:var(--r);transition:var(--ease)}
.rd-item:hover{border-color:var(--green-700)}
.rd-item.cur{border-color:var(--gold-600);background:var(--gold-100)}
.rd-item.done .rd-n{background:var(--success);color:#fff;border-color:var(--success)}
.rd-n{width:28px;height:28px;border-radius:50%;border:2px solid var(--border);display:flex;align-items:center;justify-content:center;font-size:13px;font-weight:600;color:var(--green-800);flex-shrink:0}
.rd-info{min-width:0}
.rd-info strong{display:block;font-size:13px;color:var(--ink-900)}
.rd-info span{font-size:12px;color:var(--ink-500)}

/* Formulario "añadir libro" en el panel */
.reading-add{margin-top:8px}
.reading-form{display:flex;flex-direction:column;gap:14px;max-width:560px}
.rf-field{display:flex;flex-direction:column;gap:5px}
.rf-field span{font-size:13px;font-weight:600;color:var(--ink-700)}
.rf-field select,.rf-field input{border:1px solid var(--border);border-radius:var(--r);padding:10px 12px;font-family:var(--ff-body);font-size:14px;background:#fff;color:var(--ink-900)}
.rf-field select:focus,.rf-field input:focus{outline:none;border-color:var(--gold-600)}
.rf-row{display:flex;gap:14px;flex-wrap:wrap}
.rf-row .rf-field{flex:1;min-width:180px}
.rf-preview{font-size:13px;color:var(--ink-700);background:var(--green-50);border-radius:var(--r);padding:10px 12px;margin:0}
.rf-hint{font-size:12px;color:var(--ink-500)}
.reading-url{margin-top:22px;border-top:1px solid var(--cream-200);padding-top:14px}
.reading-url summary{cursor:pointer;font-weight:600;font-size:14px;color:var(--green-800)}
.reading-url .reading-form{margin-top:14px}
@media(max-width:560px){
  .reading-form select,.reading-form input{font-size:16px}
}
