/* Nastia Soller v24 · Diseño original y navegación móvil accesible */
:root, :root[data-theme="light"] {
  --bg:#f8f5f0;--surface:#fff;--panel:#fff;--border:#e9e0d5;--text:#352f29;--muted:#80766d;
  --primary:#906c4d;--primary-text:#fff;--accent:#f4ede3;--error:#a74f65;--success:#417862;
  --shadow:0 5px 24px rgba(64,45,27,.045);--hero-start:#e5d7c5;--hero-mid:#f3e8da;--hero-end:#faf5ee;
  --rose:#a96d5a;--gold:#a47a39;--mint:#e8f4ec;
}
:root[data-theme="dark"] {
  --bg:#18191d;--surface:#25252a;--panel:#25252a;--border:#3d3839;--text:#f6eee6;--muted:#b5a8a1;
  --primary:#dfb893;--primary-text:#211c1a;--accent:#38302e;--error:#f0abba;--success:#8fd5b6;
  --shadow:0 5px 24px rgba(0,0,0,.18);--hero-start:#504039;--hero-mid:#3a3234;--hero-end:#343039;
  --rose:#f0abba;--gold:#f0ca89;--mint:#283c36;
}
*{box-sizing:border-box}
body{font-family:'DM Sans',sans-serif;font-size:14px;background:var(--bg);color:var(--text)}
h1,h2,h3,.brand,.stat-number{font-family:'Manrope',sans-serif}
h1{font-weight:800;font-size:27px}h2{font-weight:800;font-size:19px}h3{font-weight:800}
body.authenticated>header{display:none}
body.authenticated>.container{max-width:none;padding:0;margin:0}
body.authenticated #app-view>.layout{display:grid;grid-template-columns:245px minmax(0,1fr);gap:0;align-items:stretch;min-height:100vh}
body.authenticated #app-view .app-sidebar{position:sticky;top:0;height:100vh;overflow:auto;background:var(--surface);border-right:1px solid var(--border);border-radius:0;padding:28px 17px;display:flex;flex-direction:column;gap:0;z-index:2}
.sidebar-brand{display:flex;align-items:center;gap:11px;padding:0 10px 30px}
.sidebar-brand strong{display:block;font:800 16px/1.2 'Manrope',sans-serif;letter-spacing:-.2px}
.sidebar-brand small{display:block;font-size:10px;letter-spacing:1.2px;color:var(--muted);text-transform:uppercase;margin-top:4px}
.brand-mark{background:var(--accent);color:var(--primary);border-radius:14px;width:40px;height:40px;display:grid;place-items:center;font-size:24px;flex-shrink:0}
.nav-caption{color:var(--muted);opacity:.8;font-size:10px;font-weight:800;letter-spacing:1.5px;padding:10px 15px;margin:6px 0}
body.authenticated #app-view .nav-list{display:flex;flex-direction:column;gap:5px;overflow:visible}
.nav-list .nav-btn{display:flex;align-items:center;gap:11px;text-align:left;width:100%;padding:12px 13px;border:0;border-radius:11px;background:transparent;color:var(--muted);font-weight:700;min-width:0}
.nav-list .nav-btn:hover{background:var(--accent)}
.nav-list .nav-btn.active{background:var(--accent);color:var(--primary);border:0}
.nav-icon{width:19px;height:19px;flex-shrink:0;display:flex;align-items:center;justify-content:center}
.sidebar-bottom{margin-top:auto;border-top:1px solid var(--border);padding:17px 8px 0}
.workspace{min-width:0}
.app-topbar{height:78px;display:flex;justify-content:space-between;align-items:center;background:var(--surface);border-bottom:1px solid var(--border);padding:0 36px;gap:18px}
.top-crumb{font-size:13px;color:var(--muted)}.top-intro .small{font-size:11px;margin-top:4px}
.app-content{max-width:1420px;margin:0 auto;padding:30px 36px 70px}
.page-welcome{display:none}
.btn{font-family:'DM Sans',sans-serif;font-weight:700;font-size:12px;min-height:37px;border-radius:10px;padding:9px 14px}
.btn.primary{background:var(--primary);border-color:var(--primary);color:var(--primary-text)}
.pill,.tag{background:var(--accent);color:var(--primary);font-weight:700}
.card{background:var(--surface);border:1px solid var(--border);border-radius:18px;box-shadow:var(--shadow);padding:22px}
.grid{gap:16px}.item{background:var(--surface);border:1px solid var(--border);border-radius:13px;padding:17px}
.field input,.field select,.field textarea,.change-group-form select{background:var(--surface);color:var(--text);border-color:var(--border)}
.field label{font-size:12px;font-weight:700}.field input:focus,.field select:focus,.field textarea:focus{box-shadow:0 0 0 3px color-mix(in srgb,var(--primary) 16%,transparent)}
.course-block{background:var(--surface);border-radius:18px;border:1px solid var(--border);overflow:hidden;padding:0;box-shadow:var(--shadow)}
.course-header{display:block;margin-bottom:0;padding:22px 23px 12px}.course-header h3{font:800 18px/1.4 'Manrope',sans-serif}
.course-header .tag{margin:0 0 7px}.course-block .lesson-tiles{padding:10px 20px 21px}
.lesson-tile{border:0;border-bottom:1px solid var(--border);border-radius:0;background:transparent;padding:11px 0}.lesson-tile:last-child{border:0}.lesson-tile.locked{background:transparent}
.lesson-tile-index{font:800 17px 'Manrope',sans-serif;width:38px;height:38px;display:grid;place-items:center;border-radius:11px;background:var(--accent);font-size:13px;flex-shrink:0}
.lesson-tile.locked .lesson-tile-index{color:var(--muted)}
.lesson-tile-text{font-size:13px}.lesson-state{font-size:11px}
.lesson-screen{max-width:1100px;background:var(--surface)}
.lesson-hero h1{font:800 clamp(25px,3vw,33px)/1.25 'Manrope',sans-serif}
/* Prototipo: banner de bienvenida, indicadores, tarjetas y accesos rápidos */
.hero{background:linear-gradient(113deg,var(--hero-start),var(--hero-mid) 55%,var(--hero-end));border-radius:23px;padding:32px 36px;min-height:178px;display:flex;justify-content:space-between;gap:20px;align-items:center;margin-bottom:27px;overflow:hidden}
.hero .eyebrow{font-size:11px;letter-spacing:1.3px}.hero h1{font:800 29px/1.25 'Manrope',sans-serif;margin:6px 0 9px;color:var(--text)}.hero p{color:var(--muted);max-width:520px;margin:0;font-size:13px}.hero-symbol{font-size:98px;line-height:1;color:var(--primary);opacity:.6;transform:rotate(-10deg);padding-right:26px}
.section-head{display:flex;align-items:center;justify-content:space-between;gap:12px;margin:25px 0 15px}.section-head h2{margin:0;font:800 17px 'Manrope',sans-serif}
.dashboard-stats{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:16px}
.stat-card{padding:21px}.stat-icon{display:grid;place-items:center;background:var(--accent);color:var(--primary);width:42px;height:42px;border-radius:12px;font-size:21px}.stat-card .muted{font-size:12px;margin:15px 0 7px}.stat-number{font-size:25px;font-weight:800}.stat-note{font-size:11px;margin-top:6px;color:var(--muted)}
.quicklinks{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:11px}.quicklink{background:var(--surface);border:1px solid var(--border);border-radius:13px;padding:19px 13px;text-align:center;color:var(--primary);font-weight:700;font-size:12px;min-height:94px}.quicklink:hover{background:var(--accent)}.quicklink .glyph{font-size:23px;display:block;margin-bottom:7px}
.dashboard-two{display:grid;grid-template-columns:1.5fr 1fr;gap:20px}.dashboard-two .card+.card{margin-top:0}
.course-showcase{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px}
.course-showcase-card{border:1px solid var(--border);border-radius:18px;overflow:hidden;background:var(--surface);box-shadow:var(--shadow)}
.course-showcase-banner{height:110px;padding:18px 22px;display:flex;justify-content:space-between;align-items:center;background:linear-gradient(115deg,#e7d7c2,#d7bda2);color:#634b38}
.course-showcase-card:nth-child(3n+2) .course-showcase-banner{background:linear-gradient(115deg,#f3dfd6,#e7c8b9)}
.course-showcase-card:nth-child(3n) .course-showcase-banner{background:linear-gradient(115deg,#e5e9d9,#bfd5c7)}
:root[data-theme="dark"] .course-showcase-banner{background:linear-gradient(115deg,#564539,#725748);color:#fff3e7}
:root[data-theme="dark"] .course-showcase-card:nth-child(3n+2) .course-showcase-banner{background:linear-gradient(115deg,#65434a,#76545b)}
:root[data-theme="dark"] .course-showcase-card:nth-child(3n) .course-showcase-banner{background:linear-gradient(115deg,#34534c,#42665c)}
.course-showcase-banner span{font-size:10px;letter-spacing:1.2px;font-weight:800;border-radius:99px;background:#ffffff70;padding:6px 10px}.course-showcase-banner b{font-size:64px;font-weight:400;opacity:.75}
.course-showcase-body{padding:19px 21px}.course-showcase-body h3{font-size:16px;margin:0 0 7px}.course-showcase-body p{color:var(--muted);font-size:12px;min-height:34px}
.progress-track{height:6px;border-radius:10px;background:var(--accent);overflow:hidden}.progress-fill{height:100%;border-radius:10px;background:var(--primary)}.progress-label{display:flex;justify-content:space-between;gap:10px;font-size:11px;color:var(--muted);margin:8px 0 10px}
/* New real-data screens */
.page-heading{display:flex;justify-content:space-between;align-items:flex-start;gap:18px;flex-wrap:wrap;margin:0 0 25px}.page-heading h1{margin-bottom:6px}.page-heading p{color:var(--muted);margin:0}
.data-table{overflow-x:auto;border:1px solid var(--border);border-radius:16px;background:var(--surface)}
.data-table table{width:100%;border-collapse:collapse;text-align:left;min-width:620px}
.data-table th{padding:15px 17px;font-size:11px;font-weight:800;color:var(--muted);background:var(--accent);white-space:nowrap}
.data-table td{padding:15px 17px;font-size:12px;border-top:1px solid var(--border);vertical-align:middle}
.status{font-size:10px;font-weight:800;padding:6px 10px;border-radius:99px;background:var(--accent);color:var(--primary);display:inline-block}.status.approved,.status.paid{background:var(--mint);color:var(--success)}.status.rework,.status.overdue{background:color-mix(in srgb,var(--error) 12%,var(--surface));color:var(--error)}
.task-row{padding:16px;border-bottom:1px solid var(--border)}.task-row:last-child{border:0}.task-row h3{margin-bottom:5px}.task-meta{display:flex;align-items:center;gap:12px;flex-wrap:wrap;font-size:12px;color:var(--muted);margin:6px 0 10px}
.stats-mini{display:flex;gap:16px;flex-wrap:wrap}.stats-mini strong{font-size:17px}.stats-mini span{color:var(--muted);font-size:11px}
.task-form,.payment-form,.points-form,.announcement-form{margin-top:14px}.form-actions{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin-top:7px}
.rank-row{display:flex;gap:14px;align-items:center;padding:15px 2px;border-bottom:1px solid var(--border)}.rank-row:last-child{border:0}.rank-num{font-weight:800;color:var(--muted);width:25px;text-align:center}.rank-name{flex:1;font-size:13px;font-weight:700}.rank-score{font:800 17px 'Manrope',sans-serif;color:var(--primary)}
.calendar-month{font:800 17px 'Manrope',sans-serif}.calendar-grid{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:1px;background:var(--border);border-radius:14px;overflow:hidden;border:1px solid var(--border)}.calendar-dayname{background:var(--accent);padding:11px 4px;text-align:center;font-size:11px;color:var(--muted);font-weight:800}.calendar-day{background:var(--surface);min-height:99px;padding:9px 6px;font-size:11px;min-width:0}.calendar-day.other{opacity:.58}.calendar-event{display:block;padding:5px 6px;margin-top:5px;background:var(--accent);color:var(--primary);border-radius:6px;font-size:10px;overflow-wrap:anywhere}
/* Homework private media */
.homework-preview{margin-top:12px}.homework-preview video,.homework-preview audio{max-width:100%;width:100%}.form-note{font-size:11px;color:var(--muted)}
:root[data-theme="dark"] .course-showcase-banner span{background:#ffffff20}
@media(max-width:1180px){.dashboard-stats{grid-template-columns:repeat(2,minmax(0,1fr))}.dashboard-two{grid-template-columns:1fr}}

@media(max-width:560px){.dashboard-stats,.course-showcase,.quicklinks{grid-template-columns:1fr 1fr}.hero h1{font-size:23px}.hero-symbol{display:none}.app-topbar{flex-wrap:wrap}.calendar-day{min-height:72px;padding:5px 3px}.calendar-event{font-size:8px;padding:3px}.calendar-dayname{font-size:9px}.course-showcase-body{padding:14px}.course-showcase-banner{height:75px}.course-showcase-banner b{font-size:43px}}

.calendar-event:has([data-type="deadline"]){background:var(--accent)}

/* v24 · Mobile menu: vertical drawer, no horizontal navigation */
.mobile-menu-toggle,.mobile-menu-close,.mobile-menu-backdrop{display:none}
body.authenticated .workspace,body.authenticated .app-content,body.authenticated #content{min-width:0}
body.authenticated .card,body.authenticated .item{min-width:0;overflow-wrap:anywhere}
@media(max-width:850px){
 body.authenticated{overflow-x:clip}
 body.authenticated #app-view>.layout{display:block;min-height:100dvh}
 body.authenticated #app-view .app-sidebar{
  position:fixed;top:0;bottom:0;left:0;z-index:105;
  width:min(318px,calc(100% - 48px));max-width:100%;height:100dvh;
  padding:20px 16px 24px;overflow-y:auto;overflow-x:hidden;overscroll-behavior:contain;
  border-radius:0;border-right:1px solid var(--border);
  transform:translateX(-105%);transition:transform .22s ease;
  box-shadow:12px 0 40px rgba(0,0,0,.1);
  visibility:hidden;
 }
 body.authenticated.mobile-menu-open #app-view .app-sidebar{transform:translateX(0);visibility:visible}
 body.authenticated #app-view .app-sidebar .sidebar-brand{padding:0 3px 17px;gap:9px}
 body.authenticated #app-view .app-sidebar .nav-caption{display:block;padding:9px 12px}
 body.authenticated #app-view .app-sidebar .sidebar-bottom{display:block}
 body.authenticated #app-view .nav-list{
  display:flex;flex-direction:column;gap:5px;overflow:visible;
  width:100%;padding:0;
 }
 body.authenticated #app-view .nav-list .nav-btn{
  display:flex;flex:0 0 auto;width:100%;white-space:normal;
  padding:13px 12px;text-align:left;font-size:14px;min-height:45px;
 }
 .mobile-menu-toggle{display:inline-flex;align-items:center;justify-content:center;gap:9px;flex:0 0 auto;background:var(--accent);border:1px solid var(--border);border-radius:10px;padding:9px 12px;min-height:42px;color:var(--text);font-size:13px;font-weight:800}
 .mobile-menu-toggle span:first-child{font-size:18px;line-height:1}
 .mobile-menu-close{display:inline-flex;align-items:center;justify-content:center;flex-shrink:0;margin-left:auto;width:37px;height:37px;border:1px solid var(--border);border-radius:10px;background:var(--accent);color:var(--text);font-size:24px}
 .mobile-menu-backdrop{display:block;position:fixed;inset:0;z-index:104;background:rgba(20,15,20,.52);border:0;padding:0;opacity:0;visibility:hidden;pointer-events:none;transition:opacity .22s ease,visibility .22s}
 body.authenticated.mobile-menu-open .mobile-menu-backdrop{opacity:1;visibility:visible;pointer-events:auto}
 body.authenticated.mobile-menu-open{overflow:hidden}
 .app-topbar{padding:10px 15px;height:auto;min-height:65px;gap:10px;flex-wrap:wrap}
 .app-topbar .top-intro{flex:1;min-width:0}
 .app-topbar .top-crumb{overflow-wrap:anywhere}
 .app-topbar .header-right{margin-left:auto;min-width:0;justify-content:flex-end}
 .app-content{width:100%;max-width:100%;min-width:0;padding:20px 15px 48px}
 .hero{padding:24px}.hero-symbol{opacity:.23}
 .app-content .grid, .app-content .dashboard-two, .app-content .course-showcase{min-width:0}
 .app-content .data-table{max-width:100%}
}
@media(max-width:650px){
 .app-topbar .header-right{flex:0 0 100%;justify-content:space-between;gap:8px}
 .app-topbar .header-right .btn{padding:8px 10px;font-size:12px;min-height:37px}
 .dashboard-stats,.course-showcase,.quicklinks{grid-template-columns:1fr;gap:12px}
 .page-heading{margin-bottom:18px}
 .page-heading h1{font-size:23px}
 .hero{min-height:0;padding:22px 18px}
 .hero h1{font-size:23px}
 .hero-symbol{display:none}
 .app-content .grid{grid-template-columns:1fr}
 .app-content .form-actions{align-items:stretch}
 .app-content .form-actions .btn{max-width:100%}
 .app-content .row{flex-wrap:wrap;align-items:start}
 .app-content .card{padding:16px}
 .app-content .lesson-screen{padding:17px}
 .app-content .lesson-tile{padding:10px 0}
 .app-content .lesson-tile .btn{margin-left:auto}
 .app-content .field input,.app-content .field select,.app-content .field textarea{max-width:100%;min-width:0}
 .app-content .data-table{border:0;background:transparent;overflow:visible}
 .app-content .data-table table{display:block;min-width:0;width:100%}
 .app-content .data-table thead{position:absolute;clip-path:inset(50%);height:1px;width:1px;overflow:hidden;white-space:nowrap}
 .app-content .data-table tbody{display:grid;gap:12px;min-width:0}
 .app-content .data-table tr{display:block;min-width:0;padding:9px 13px;border-radius:13px;border:1px solid var(--border);background:var(--surface)}
 .app-content .data-table td{display:flex;justify-content:space-between;align-items:flex-start;gap:12px;min-width:0;width:100%;padding:9px 2px;border-top:0;border-bottom:1px solid var(--border);overflow-wrap:anywhere;word-break:normal}
 .app-content .data-table td:last-child{border-bottom:0}
 .app-content .data-table td::before{content:attr(data-label);display:block;flex:0 0 34%;font-size:11px;font-weight:800;color:var(--muted);overflow-wrap:anywhere}
 .app-content .data-table td[data-label=""]::before,.app-content .data-table td[colspan]::before{display:none}
 .app-content .data-table td[colspan]{display:block}
 .app-content .data-table td .btn{white-space:normal}
 .calendar-day{min-width:0;overflow:hidden}
 .calendar-event{overflow:hidden;word-break:break-word}
 .material-player,.material-pdf,.homework-preview>*{max-width:100%}
}
@media(prefers-reduced-motion:reduce){body.authenticated #app-view .app-sidebar,.mobile-menu-backdrop{transition:none}}
/* v25 · Pagos sencillos: selector de servicio, historial y recepción de abonos. */
.payment-buttons{display:flex;flex-wrap:wrap;gap:7px;align-items:center}
.payment-form .hidden{display:none!important}
#payment-receipt-box{scroll-margin-top:18px}
@media(max-width:650px){.payment-buttons{flex-direction:column;align-items:stretch}.payment-buttons .btn{width:100%}}

/* v27: páginas de tareas adaptables y archivos de respuesta */
.v27-lesson-tasks{margin-top:28px;padding-top:22px;border-top:1px solid var(--border)}
.v27-task-list{display:grid;gap:11px}.v27-task-tile{border:1px solid var(--border);border-radius:13px;padding:15px;display:flex;align-items:center;gap:12px;flex-wrap:wrap;background:var(--surface)}
.v27-task-main{flex:1 1 245px;min-width:0;display:grid;gap:5px}.v27-task-main strong{font:800 14px 'Manrope',sans-serif;overflow-wrap:anywhere}.v27-task-main small{font-size:12px;color:var(--muted);overflow-wrap:anywhere}.v27-task-tile .status{white-space:nowrap}.v27-task-tile .btn{white-space:nowrap}
.v27-task-detail{max-width:900px;margin:auto}.v27-task-detail h1{font-size:clamp(23px,4vw,32px);margin:12px 0}.v27-task-meta{display:flex;align-items:center;gap:12px;flex-wrap:wrap;margin-bottom:18px;font-size:12px}.v27-task-detail .lesson-intro{white-space:pre-wrap;line-height:1.6;font-size:15px;margin:10px 0 22px}
.v27-task-card{max-width:900px;margin:16px auto}.v27-submission{margin:15px 0;padding:17px;border:1px solid var(--border);border-radius:13px;background:var(--bg)}.v27-submission .row{display:flex;gap:10px;align-items:start;justify-content:space-between;flex-wrap:wrap}
.v27-response,.v27-feedback{white-space:pre-wrap;overflow-wrap:anywhere;background:var(--surface);padding:13px;border-radius:10px;margin:12px 0;border:1px solid var(--border)}.v27-response p,.v27-feedback p{margin:9px 0;line-height:1.6}.v27-file-list{margin:12px 0}.v27-file-list h4{margin:8px 0}.v27-file-row{display:flex;align-items:center;justify-content:space-between;gap:10px;flex-wrap:wrap;padding:10px 0;border-bottom:1px solid var(--border)}.v27-file-row span{font-size:13px}.v27-preview{min-width:0;max-width:100%;margin:6px 0 12px}.v27-check{display:flex;align-items:center;gap:8px;font-size:13px}.v27-check input{width:18px;height:18px}
.v27-review .grid{grid-template-columns:repeat(2,minmax(0,1fr))}
@media(max-width:650px){.v27-task-tile{align-items:flex-start}.v27-task-tile .btn{width:100%;text-align:center}.v27-task-meta{align-items:flex-start}.v27-review .grid{grid-template-columns:1fr}.v27-submission{padding:12px}.v27-task-card{padding:17px}}

/* v29 · Programación de cada grupo: formularios verticales y adaptables */
.v29-schedule-heading,.v29-lesson-schedule{max-width:1000px;margin:16px auto}
.v29-schedule-heading h1{margin:16px 0 4px}.v29-schedule-heading h2{margin:3px 0 12px}
.v29-schedule-heading p{line-height:1.55}.v29-schedule-heading .field{max-width:520px;margin:14px 0}
.v29-status{padding:11px 15px;background:var(--bg);border:1px solid var(--border);border-radius:10px;margin:16px 0;font-weight:700;font-size:13px}
.v29-status.v29-active{border-color:var(--primary);color:var(--primary)}
.v29-lesson-schedule{display:grid;gap:12px}.v29-lesson-schedule h3{margin:0;font-size:18px}.v29-lesson-schedule h4{font-size:14px;margin:9px 0 0}
.v29-line,.v29-task-line{display:flex;align-items:end;gap:12px;flex-wrap:wrap;border:1px solid var(--border);border-radius:12px;padding:13px;background:var(--bg)}
.v29-task-line strong{flex:1 1 100%;font-weight:800}.v29-line .field,.v29-task-line .field{flex:1 1 180px;min-width:0}
.v29-line .btn,.v29-task-line .btn{min-width:125px}.v29-upcoming{display:grid;gap:7px;padding:14px;border:1px dashed var(--border);border-radius:12px;background:var(--bg);font-size:13px}.v29-upcoming span{color:var(--muted)}
.v29-legacy{padding:12px;border-radius:8px;background:var(--bg);font-size:12px;color:var(--muted)}
.schedule-course-action{display:flex;flex-wrap:wrap;align-items:center;gap:10px;padding:12px 15px;border-top:1px solid var(--border)}
@media(max-width:650px){.v29-line,.v29-task-line{display:grid;grid-template-columns:1fr}.v29-line .field,.v29-task-line .field{width:100%}.v29-line .btn,.v29-task-line .btn{width:100%}.schedule-course-action{align-items:stretch;flex-direction:column}}

/* v31 — Cursos de profesora: índice únicamente de nombres, detalle por página */
.v31-course-list-page,.v31-detail{max-width:1100px}
.v31-course-list-page>.toolbar{align-items:flex-start}
.v31-course-list-page h1,.v31-detail h1{font:800 clamp(23px,3vw,30px)/1.3 Manrope,sans-serif;margin:0 0 9px}
.v31-new-course{position:relative;min-width:170px}
.v31-new-course>summary,.v31-new-lesson>summary{list-style:none;cursor:pointer;display:inline-flex;align-items:center;justify-content:center}
.v31-new-course>summary::-webkit-details-marker,.v31-new-lesson>summary::-webkit-details-marker{display:none}
.v31-new-course[open]{width:min(480px,100%)}
.v31-course-list-page .toolbar:has(.v31-new-course[open]){align-items:flex-start}
.v31-add-form{margin-top:15px;border:1px solid var(--border);border-radius:13px;padding:17px;background:var(--surface)}
.v31-new-course .v31-add-form{width:100%}
.v31-course-name-list{display:flex;flex-direction:column;border:1px solid var(--border);border-radius:14px;overflow:hidden;background:var(--surface)}
.v31-course-name{display:flex;align-items:center;justify-content:space-between;gap:20px;min-height:61px;padding:15px 20px;color:var(--text);font:700 15px/1.45 Manrope,sans-serif;text-decoration:none;border-bottom:1px solid var(--border)}
.v31-course-name:last-child{border-bottom:0}
.v31-course-name:hover,.v31-course-name:focus-visible{background:var(--accent);color:var(--text)}
.v31-chevron{font-size:25px;font-weight:500;line-height:1;color:var(--primary);flex-shrink:0}
.v31-detail-header{margin:24px 0 18px}.v31-description{max-width:800px;white-space:pre-wrap;overflow-wrap:anywhere}
.v31-detail .course-back{display:inline-flex;margin-bottom:14px}
.v31-course-action-row{display:flex;align-items:flex-start;gap:11px;flex-wrap:wrap;padding-bottom:21px;border-bottom:1px solid var(--border);margin-bottom:21px}
.v31-new-lesson[open]{flex:1 1 400px}
.v31-new-lesson .v31-add-form{max-width:660px}
.v31-lesson-list{display:flex;flex-direction:column;border:1px solid var(--border);border-radius:14px;overflow:hidden}
.v31-lesson-row{display:flex;align-items:center;gap:12px;padding:9px 15px;border-bottom:1px solid var(--border)}
.v31-lesson-row:last-child{border-bottom:0}
.v31-lesson-name{display:flex;align-items:center;gap:13px;flex:1;min-width:0;text-decoration:none;color:var(--text);padding:6px 2px;font-weight:700;font-size:13px;overflow-wrap:anywhere}
.v31-lesson-name .v31-chevron{margin-left:auto}
.v31-lesson-name:hover{color:var(--primary)}
.v31-empty-course{padding:24px;color:var(--muted);font-size:13px}
.v31-groups-note{margin-top:16px}
@media(max-width:650px){
 .v31-course-list-page>.toolbar{display:block}
 .v31-new-course{margin:12px 0 18px;max-width:100%}
 .v31-new-course[open]{width:100%}
 .v31-course-name{padding:15px 12px;font-size:13px;min-height:56px}
 .v31-course-action-row{display:flex;flex-direction:column;align-items:stretch}
 .v31-new-lesson[open]{flex:auto}
 .v31-lesson-row{gap:7px;padding:10px 8px}
 .v31-lesson-name{font-size:12px;gap:9px}
 .v31-lesson-row .btn{flex-shrink:0}
 .v31-detail{padding:17px}
}

/* v32 — Resumen compacto y homogéneo de cursos (profesora y alumno) */
.v32-course-summary-list{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,310px),1fr));gap:14px}
.v32-course-summary{min-width:0;display:flex;flex-direction:column;justify-content:space-between;gap:17px;padding:22px;background:var(--panel);border:1px solid var(--border);border-radius:15px;color:var(--text);text-decoration:none;transition:border-color .12s,transform .12s}
.v32-course-summary:hover{border-color:var(--primary);transform:translateY(-1px)}
.v32-course-summary:focus-visible{outline:2px solid var(--primary);outline-offset:3px}
.v32-course-text h3{font:800 17px/1.4 Manrope,system-ui,sans-serif;margin:0 0 8px;overflow-wrap:anywhere}
.v32-course-text p{font-size:13px;line-height:1.65;color:var(--muted);margin:0 0 13px;white-space:pre-line;overflow-wrap:anywhere;display:-webkit-box;-webkit-line-clamp:4;-webkit-box-orient:vertical;overflow:hidden}
.v32-lesson-count{display:inline-flex;align-items:center;gap:5px;background:var(--accent);padding:6px 10px;border-radius:100px;font-size:12px;font-weight:700;color:var(--text)}
.v32-course-open-label{display:flex;align-items:center;justify-content:space-between;gap:8px;font-size:13px;font-weight:700;color:var(--primary);border-top:1px solid var(--border);padding-top:12px}
.v32-student-detail{max-width:1100px}
.v32-student-intro{margin:22px 0 28px;padding-bottom:18px;border-bottom:1px solid var(--border)}
.v32-student-intro h1{font:800 clamp(23px,3.3vw,30px)/1.25 Manrope,system-ui,sans-serif}
.v32-student-intro .v31-description{font-size:14px;line-height:1.75;margin-bottom:17px}
.v32-student-lessons .course-block{border:0;background:transparent;padding:0}
.v32-student-lessons .course-header,.v32-student-lessons .course-showcase-banner{display:none}
.v32-student-lessons .lesson-tiles{margin-top:16px}
@media(max-width:650px){.v32-course-summary-list{grid-template-columns:1fr}.v32-course-summary{padding:16px}.v32-course-text h3{font-size:16px}.v32-student-detail{padding:17px}}

/* v33 — Listas jerárquicas de grupos, sin desplazamiento horizontal */
.v33-course-grid,.v33-group-list,.v33-member-list{display:grid;gap:12px}
.v33-course-item,.v33-group-item{min-width:0;display:flex;align-items:center;justify-content:space-between;gap:14px;background:var(--panel);border:1px solid var(--border);border-radius:13px;padding:15px 18px}
.v33-course-item{text-decoration:none;color:var(--text)}
.v33-course-item:hover,.v33-group-item:hover{border-color:var(--primary)}
.v33-course-item h3{margin:0 0 5px;font-size:16px;overflow-wrap:anywhere}
.v33-course-item .muted,.v33-group-item .muted{display:block;margin-top:5px}
.v33-chevron{font-size:26px;color:var(--primary);margin-left:auto}
.v33-section-heading{margin:20px 0 22px}
.v33-section-heading h1{margin:0 0 7px;overflow-wrap:anywhere}
.v33-group-item-link{display:flex;justify-content:space-between;align-items:center;gap:10px;min-width:0;flex:1;text-decoration:none;color:var(--text)}
.v33-group-item-link strong{font-size:15px;overflow-wrap:anywhere}
.v33-group-order{display:flex;gap:4px;flex-shrink:0}
.v33-group-order .btn{min-width:34px;min-height:34px;padding:4px 8px}
.v33-group-course>.group-back,.v33-group-detail>.group-back{margin-bottom:6px;text-decoration:none}
.v33-member{border-bottom:1px solid var(--border);padding:16px 0;display:grid;grid-template-columns:minmax(0,1fr) minmax(225px,1fr);align-items:center;gap:18px}
.v33-member:last-child{border:0}.v33-member>.danger-btn{justify-self:end}.v33-member strong{overflow-wrap:anywhere}.v33-member .muted{overflow-wrap:anywhere;margin-top:5px}
.v33-move-student{display:flex;align-items:flex-end;gap:10px;min-width:0}.v33-move-student .field{flex:1;min-width:0}.v33-move-student select{width:100%;max-width:100%;min-width:0}
.v33-editor{margin:15px 0 28px}.v33-editor>summary{display:inline-flex;list-style:none;cursor:pointer}.v33-editor form{margin-top:16px;max-width:500px}
.v33-delete-zone{border-top:1px solid var(--border);margin-top:25px;padding-top:18px;display:flex;justify-content:space-between;align-items:center;gap:15px}
.v33-delete-zone p{max-width:570px;line-height:1.6}.v33-delete-zone .btn:disabled{opacity:.48}
.v33-archived{border-top:1px solid var(--border);margin-top:25px;padding-top:15px}.v33-archived summary{cursor:pointer;font-weight:700;color:var(--primary)}
.v33-archive-item{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:9px 0}
.v33-my-group{display:block;font-size:12px;color:var(--primary);font-weight:600;margin-top:12px}
.v33-my-group strong{font-weight:800;color:var(--text)}
@media(max-width:720px){.v33-member{grid-template-columns:1fr;gap:6px}.v33-move-student{align-items:stretch;flex-direction:column}.v33-move-student .btn{align-self:flex-start}.v33-delete-zone{align-items:stretch;flex-direction:column}.v33-delete-zone .btn{align-self:flex-start}}
@media(max-width:380px){.v33-group-item{padding:12px 9px;gap:7px}.v33-group-order .btn{padding:3px 5px;min-width:29px}.v33-course-item{padding:13px}}

/* v34 — Calendario de clases y agenda adaptable */
.v34-calendar-section,.v34-agenda,.v34-editor,.v34-detail{margin-bottom:17px}
.v34-calendar-controls{display:grid;gap:18px;margin-bottom:18px}
.v34-month-controls{display:flex;gap:9px;align-items:center;flex-wrap:wrap}
.v34-month-controls .calendar-month{min-width:185px;text-align:center;text-transform:capitalize}
.v34-filters{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;max-width:650px}
.v34-filters .field{min-width:0}.v34-filters select{width:100%;max-width:100%}
.v34-day{min-height:107px}.v34-day.v34-today{background:var(--accent)}.v34-day.v34-selected{outline:2px solid var(--primary);outline-offset:-2px}
.v34-day-button{background:transparent;border:0;color:var(--text);cursor:pointer;font:800 12px Manrope,sans-serif;display:flex;align-items:center;gap:6px;padding:3px;max-width:100%;border-radius:6px}
.v34-day-button:hover,.v34-day-button:focus-visible{outline:2px solid var(--primary)}
.v34-day-count{background:var(--primary);color:var(--primary-text);border-radius:99px;font-size:9px;padding:1px 5px}
.v34-day-events{display:grid;gap:3px;margin-top:4px;min-width:0}.v34-calendar-event{display:block;padding:5px 6px;font-size:10px;border-radius:6px;background:var(--accent);color:var(--text);line-height:1.45;text-decoration:none;overflow-wrap:anywhere}.v34-calendar-event[href]:hover{text-decoration:underline}
.v34-individual{border-left:3px solid var(--rose,#b97681)}.v34-group{border-left:3px solid var(--primary)}.v34-deadline{border-left:3px solid var(--gold,#b78b4e)}.v34-cancelled{opacity:.6;text-decoration:line-through}
.v34-more{border:0;background:transparent;color:var(--primary);font-size:10px;text-align:left;cursor:pointer;padding:2px}.v34-timezone{margin-top:12px}
.v34-agenda-list{display:grid;gap:2px}.v34-agenda-row{display:flex;align-items:center;gap:16px;border-bottom:1px solid var(--border);padding:13px 2px;min-width:0}.v34-agenda-row:last-child{border:0}
.v34-agenda-time{flex:0 0 84px;display:grid;gap:3px}.v34-agenda-time strong{font:800 17px Manrope,sans-serif}.v34-agenda-time span{font-size:11px;color:var(--muted)}
.v34-agenda-description{flex:1;min-width:0;display:grid;gap:5px}.v34-agenda-description strong{font-size:13px;overflow-wrap:anywhere}.v34-agenda-description span{overflow-wrap:anywhere}
.v34-empty{color:var(--muted);padding:23px 0}.v34-detail-heading{display:flex;justify-content:space-between;align-items:flex-start;gap:20px;margin:24px 0}.v34-detail-heading h1{font:800 clamp(21px,4vw,29px) Manrope,sans-serif}.v34-detail-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}.v34-detail-grid .item{display:grid;gap:7px}.v34-detail-grid strong{overflow-wrap:anywhere}.v34-detail .field{max-width:100%}
@media(max-width:650px){.v34-calendar-section,.v34-agenda,.v34-editor,.v34-detail{padding:16px}.v34-month-controls .calendar-month{min-width:125px;font-size:14px}.v34-filters{grid-template-columns:1fr}.v34-day{min-height:56px;padding:3px 2px}.v34-day-button{font-size:11px;gap:2px}.v34-day-events{display:none}.v34-day-count{font-size:8px;padding:0 4px}.v34-agenda-row{align-items:flex-start;flex-wrap:wrap;gap:9px}.v34-agenda-time{flex-basis:62px}.v34-agenda-row>.btn{margin-left:71px}.v34-detail-grid{grid-template-columns:1fr}.v34-detail-heading{flex-direction:column;gap:10px}}

/* v35: planificador semanal de clases */
.v35-calendar-card{margin-bottom:22px;min-width:0}
.v35-topbar{display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:14px;margin-bottom:16px}
.v35-week-nav{display:flex;align-items:center;flex-wrap:wrap;gap:8px}
.v35-week-nav strong{font-size:14px;min-width:200px;text-align:center}
.v35-preferences{display:grid;grid-template-columns:100px 100px minmax(170px,1.6fr) minmax(120px,1fr) minmax(130px,1.2fr);gap:9px;margin-bottom:20px}
.v35-preferences .field{padding:0;margin:0;min-width:0}.v35-preferences .field label{font-size:11px}.v35-preferences select{min-width:0;width:100%;max-width:100%}
.v35-weekly-desktop{border:1px solid var(--border);border-radius:12px;overflow:hidden}
.v35-week-headers,.v35-week-body{display:grid;grid-template-columns:57px repeat(7,minmax(0,1fr))}
.v35-week-headers{background:var(--accent);border-bottom:1px solid var(--border)}
.v35-day-header{padding:9px 4px;display:flex;align-items:center;justify-content:center;gap:6px;border-left:1px solid var(--border);font-weight:700;font-size:11px;text-align:center}
.v35-head-plus{border:1px solid var(--border);background:var(--panel);color:var(--primary);width:23px;height:23px;flex:0 0 23px;border-radius:7px;font-weight:800;cursor:pointer}
.v35-hours{position:relative;font-size:10px;color:var(--muted);border-right:1px solid var(--border)}
.v35-hours span{position:absolute;right:6px;transform:translateY(0);line-height:16px}
.v35-column{border-right:1px solid var(--border);min-width:0}.v35-column:last-child{border-right:0}
.v35-day-track{position:relative;background:repeating-linear-gradient(to bottom,transparent 0px,transparent 63px,var(--border) 63px,var(--border) 64px)}
.v35-slot{position:absolute;left:0;width:100%;background:transparent;border:0;color:transparent;display:flex;align-items:flex-start;justify-content:flex-end;padding:3px 6px;cursor:pointer;z-index:1;font-weight:800;font-size:16px}
.v35-slot:hover,.v35-slot:focus-visible{color:var(--primary);background:rgba(140,110,84,.08);outline:2px dashed var(--primary);outline-offset:-2px}
.v35-position{position:absolute;left:2px;right:2px;z-index:2;min-width:0;pointer-events:none}
.v35-event{display:block;height:100%;width:100%;min-width:0;overflow:hidden;background:var(--accent);color:var(--text);border:1px solid var(--primary);border-left:3px solid var(--primary);border-radius:7px;padding:5px;font-size:10px;line-height:1.4;text-decoration:none;overflow-wrap:anywhere;pointer-events:auto}
.v35-event:hover,.v35-event:focus-visible{outline:2px solid var(--primary);outline-offset:-2px}
.v35-event strong{font-weight:800}.v35-event small{display:block;font-size:9px;margin-top:2px}
.v35-event.v35-individual{border-color:var(--rose,#bd8892);background:var(--pink,#fcebef)}
.v35-event.v35-inactive{opacity:.6;text-decoration:line-through}
.v35-help{margin:14px 0 0}
.v35-weekly-mobile{display:none}
.v35-modal-backdrop{position:fixed;inset:0;z-index:110;background:rgba(20,16,20,.63);display:flex;align-items:center;justify-content:center;padding:16px}
.v35-modal{width:min(690px,100%);max-height:94dvh;overflow-y:auto;margin:0;box-shadow:0 22px 80px rgba(0,0,0,.28)}
.v35-modal-header{display:flex;align-items:center;justify-content:space-between;gap:14px}.v35-modal-header h2{margin:0}
.v35-modal-actions,.v35-detail-actions{display:flex;align-items:center;justify-content:flex-end;gap:10px;flex-wrap:wrap}
.v35-upcoming{max-width:860px}.v35-upcoming-row{display:flex;align-items:flex-start;gap:22px;border-bottom:1px solid var(--border);padding:17px 4px}
.v35-upcoming-row:last-child{border-bottom:0}.v35-upcoming-date{flex:0 0 155px}.v35-upcoming-title{display:grid;gap:7px;min-width:0}
.v35-upcoming-date,.v35-upcoming-title{overflow-wrap:anywhere}.v35-upcoming-date span{display:block;color:var(--muted);font-size:12px;margin-top:5px}
.v35-session-heading{display:flex;align-items:flex-start;justify-content:space-between;gap:16px;margin:10px 0 22px}
.v35-session-heading h1{font-family:Manrope,sans-serif;font-size:clamp(22px,3vw,30px);line-height:1.25}
@media(max-width:1120px){.v35-preferences{grid-template-columns:repeat(3,minmax(0,1fr))}.v35-week-nav strong{min-width:auto}.v35-day-header{flex-wrap:wrap;font-size:10px}.v35-week-body,.v35-week-headers{grid-template-columns:47px repeat(7,minmax(0,1fr))}.v35-event{font-size:9px;padding:3px}}
@media(max-width:760px){.v35-preferences{grid-template-columns:repeat(2,minmax(0,1fr))}.v35-tz-field{grid-column:1 / -1}.v35-weekly-desktop{display:none}.v35-weekly-mobile{display:grid;gap:13px}.v35-mobile-day{border:1px solid var(--border);border-radius:12px;padding:13px;min-width:0}.v35-mobile-day-head{display:flex;align-items:center;justify-content:space-between;gap:9px;margin-bottom:9px}.v35-mobile-day-head strong{font-size:13px;text-transform:capitalize}.v35-mobile-event{margin:7px 0}.v35-mobile-event .v35-event{min-height:57px;font-size:12px;padding:10px}.v35-mobile-event .v35-event small{font-size:11px}.v35-week-nav{width:100%;justify-content:center}.v35-topbar>.btn{width:100%}.v35-modal{padding:18px}.v35-upcoming-row{flex-direction:column;gap:6px}.v35-upcoming-date{flex-basis:auto}}
@media(max-width:400px){.v35-week-nav strong{font-size:12px}.v35-week-nav .btn{padding:5px 8px}}

/* v36 · Controles accesibles de refresco para próximas clases */
.v36-upcoming-header{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap;margin-bottom:14px}.v36-upcoming-header h2{margin:0}.v36-upcoming-header .btn{white-space:normal}

/* v37 — Administración de alumnos */
.v37-students-list,.v37-student-detail{max-width:100%}.v37-student-items,.v37-assignment-list{display:grid;gap:12px;margin-top:16px}
.v37-student-row,.v37-assignment{background:var(--surface);border:1px solid var(--border);border-radius:13px;padding:17px;display:flex;align-items:center;justify-content:space-between;gap:16px;flex-wrap:wrap}
.v37-student-info{display:flex;align-items:center;gap:8px 14px;flex-wrap:wrap;min-width:0}.v37-student-info strong,.v37-assignment strong{font-size:15px}.v37-student-info .small{overflow-wrap:anywhere}
.v37-student-actions,.v37-student-action-row{display:flex;gap:9px;align-items:center;flex-wrap:wrap}.v37-status{font-weight:750;font-size:11px;border-radius:24px;padding:5px 10px;color:#a26722;background:#fff0d8}.v37-status-active{background:#e5f4ea;color:#29784d}
:root[data-theme="dark"] .v37-status{background:#443727;color:#e4b875}:root[data-theme="dark"] .v37-status-active{background:#273f32;color:#b2ecc5}
.v37-invite-panel,.v37-enroll-panel{margin:17px 0 25px}.v37-invite-panel>summary,.v37-enroll-panel>summary{display:inline-flex}.v37-invite-form,.v37-enroll-panel form{padding:18px 0 0}.v37-student-heading{display:flex;justify-content:space-between;align-items:flex-start;gap:15px;margin:24px 0}.v37-student-heading h1{margin:4px 0}.v37-transfer{width:100%;border-top:1px solid var(--border);padding-top:14px}.v37-assignment>div:first-child{flex:1;min-width:190px}.v37-delete-student{margin-top:16px;border-color:var(--error)}.v37-delete-student p{max-width:740px}.v37-access{display:block;color:var(--muted);font-size:12px;margin-top:6px}.v37-access strong{color:var(--text)}.v37-package-access{margin-top:17px}
@media(max-width:630px){.v37-student-info{display:grid;gap:4px}.v37-student-row,.v37-assignment{align-items:stretch;flex-direction:column}.v37-student-actions,.v37-student-action-row{justify-content:flex-start}.v37-student-actions .btn{width:100%}.v37-student-heading{flex-wrap:wrap}}

/* v38: acceso pausado, control visible solo para la profesora. */
.v38-pause-card{display:flex;justify-content:space-between;align-items:center;gap:16px;flex-wrap:wrap;margin:18px 0 22px;padding:18px;border:1px solid var(--border);border-radius:14px;background:var(--surface)}
.v38-pause-card h2{font-size:17px;margin:0 0 5px}.v38-pause-card p{margin:0;max-width:630px}
.v38-pause-on{background:color-mix(in srgb,var(--accent) 52%,var(--surface));border-color:var(--primary)}
.v38-pause-button{border-color:var(--primary);color:var(--primary)}
.v38-status-paused{background:color-mix(in srgb,#d98f5f 20%,var(--surface));color:var(--text)}
.v37-enroll-panel[data-v38-disabled="true"]{display:none}
@media(max-width:650px){.v38-pause-card{align-items:stretch}.v38-pause-card button{width:100%}}

/* v39 · Invitaciones y restablecimiento de contraseña */
.auth-recover{margin-top:21px;padding-top:15px;border-top:1px solid var(--line,var(--border))}
.auth-recover summary{cursor:pointer;color:var(--primary);font-weight:700;list-style-position:inside}
.auth-recover p{margin-top:13px}
.auth-recover .stack{margin-top:14px}
.auth-setup-mark{height:49px;width:49px;background:var(--accent);color:var(--primary);display:grid;place-items:center;font-size:27px;border-radius:14px;margin-bottom:17px}
.auth-setup-email{font-size:13px;color:var(--muted);overflow-wrap:anywhere;margin-bottom:18px}
