/* =========================================================================
   Portal INEDIG · Sistema de diseño
   ========================================================================= */
:root{
  --primary:#0E4A7B; --primary-600:#0B3B63; --primary-50:#EAF2FA;
  --accent:#13A89E; --accent-50:#E6F7F5; --gold:#F29E38; --gold-50:#FEF3E2;
  --exito:#16A34A; --exito-50:#E8F7EE; --peligro:#DC2626; --peligro-50:#FDECEC; --aviso:#D97706; --aviso-50:#FEF4E6;
  --bg:#F4F7FB; --panel:#FFFFFF; --panel-2:#F8FAFC; --texto:#0F1B2D; --muted:#64748B; --borde:#E3E8EF; --track:#E8EDF3;
  --sidebar:#0A2540; --sidebar-2:#0E3355; --sidebar-texto:#C9D6E5;
  --radio:16px; --sombra:0 1px 2px rgba(15,27,45,.04),0 4px 16px rgba(15,27,45,.06);
  --sombra-hover:0 4px 10px rgba(15,27,45,.06),0 14px 34px rgba(15,27,45,.10);
  --fuente:"Plus Jakarta Sans","Inter","Segoe UI",system-ui,-apple-system,Roboto,Arial,sans-serif;
}
:root[data-tema="oscuro"]{
  --primary:#5AA9E6; --primary-600:#7BBBEE; --primary-50:#13253D; --accent:#2DD4BF; --accent-50:#0F2E31;
  --gold-50:#33261A; --exito-50:#0F2A1C; --peligro-50:#341818; --aviso-50:#33250F;
  --bg:#0A111E; --panel:#111B2C; --panel-2:#0E1727; --texto:#E5ECF5; --muted:#93A3B8; --borde:#1F2C42; --track:#1F2C42;
  --sidebar:#070D18; --sidebar-2:#0D1A2C; --sombra:0 1px 2px rgba(0,0,0,.3),0 6px 20px rgba(0,0,0,.25); --sombra-hover:0 10px 30px rgba(0,0,0,.4);
}
*{box-sizing:border-box}
html{scroll-behavior:smooth}
body{margin:0;font-family:var(--fuente);color:var(--texto);background:var(--bg);font-size:15px;line-height:1.55;-webkit-font-smoothing:antialiased}
a{color:var(--primary);text-decoration:none}a:hover{text-decoration:underline}
h1,h2,h3,h4{margin:0 0 .4em;line-height:1.25;letter-spacing:-.01em}
h1{font-size:1.65rem;font-weight:800}h2{font-size:1.2rem;font-weight:700}h3{font-size:1.02rem;font-weight:700}
.ico{flex:none;vertical-align:middle}
.muted{color:var(--muted)}.small{font-size:.85rem}.nowrap{white-space:nowrap}.center{text-align:center}.right{text-align:right}
.oculto{display:none!important}

/* ---------- Estructura de la aplicación ---------- */
.app{display:grid;grid-template-columns:268px 1fr;min-height:100vh;background:linear-gradient(90deg,var(--sidebar-2) 268px,transparent 268px)}
.sidebar{background:linear-gradient(180deg,var(--sidebar),var(--sidebar-2));color:var(--sidebar-texto);padding:20px 14px;position:sticky;top:0;height:100vh;display:flex;flex-direction:column;gap:6px;overflow-y:auto;z-index:40}
.sidebar .marca{display:flex;align-items:center;gap:10px;padding:4px 8px 18px;color:#fff;text-decoration:none}
.sidebar .marca img{width:40px;height:40px}.sidebar .marca b{font-size:1.15rem;letter-spacing:.5px;display:block;color:#fff}.sidebar .marca small{font-size:.68rem;color:#8FB3D6;line-height:1.2;display:block}
.nav-titulo{font-size:.7rem;text-transform:uppercase;letter-spacing:.09em;color:#6F8BAA;padding:14px 12px 4px;font-weight:700}
.nav-item{display:flex;align-items:center;gap:12px;padding:10px 12px;border-radius:12px;color:var(--sidebar-texto);font-weight:600;font-size:.93rem;transition:.15s}
.nav-item:hover{background:rgba(255,255,255,.07);color:#fff;text-decoration:none}
.nav-item.activo{background:linear-gradient(90deg,rgba(19,168,158,.28),rgba(19,168,158,.08));color:#fff;box-shadow:inset 3px 0 0 var(--accent)}
.sidebar .pie{margin-top:auto;padding:14px 10px 0;border-top:1px solid rgba(255,255,255,.08);font-size:.78rem;color:#6F8BAA}
.principal{min-width:0;display:flex;flex-direction:column}
.topbar{position:sticky;top:0;z-index:30;display:flex;align-items:center;gap:14px;padding:14px 28px;background:color-mix(in srgb,var(--bg) 82%,transparent);backdrop-filter:blur(10px);border-bottom:1px solid var(--borde)}
.topbar .saludo{font-weight:700}.topbar .espacio{flex:1}
.btn-icono{display:inline-grid;place-items:center;width:40px;height:40px;border-radius:12px;border:1px solid var(--borde);background:var(--panel);color:var(--texto);cursor:pointer;position:relative;transition:.15s}
.btn-icono:hover{border-color:var(--primary);color:var(--primary)}
.btn-icono .punto{position:absolute;top:8px;right:9px;width:8px;height:8px;border-radius:50%;background:var(--gold);border:2px solid var(--panel)}
.perfil{display:flex;align-items:center;gap:10px;padding:4px 6px 4px 4px;border-radius:14px;border:1px solid var(--borde);background:var(--panel);cursor:pointer;position:relative}
.avatar{width:34px;height:34px;border-radius:10px;display:grid;place-items:center;font-weight:800;font-size:.8rem;color:#fff;background:linear-gradient(135deg,var(--primary),var(--accent));flex:none}
.avatar.grande{width:72px;height:72px;border-radius:20px;font-size:1.5rem}
.menu-perfil{position:absolute;right:0;top:calc(100% + 8px);min-width:220px;background:var(--panel);border:1px solid var(--borde);border-radius:14px;box-shadow:var(--sombra-hover);padding:8px;display:none}
.perfil.abierto .menu-perfil{display:block}
.menu-perfil a,.menu-perfil button{display:flex;gap:10px;align-items:center;width:100%;padding:9px 10px;border-radius:10px;color:var(--texto);background:none;border:0;font:inherit;cursor:pointer;text-align:left}
.menu-perfil a:hover,.menu-perfil button:hover{background:var(--panel-2);text-decoration:none}
.contenido{padding:26px 28px 60px;max-width:1320px;width:100%;margin:0 auto}
.btn-menu{display:none}

/* ---------- Encabezados de página ---------- */
.cabecera{display:flex;align-items:flex-end;justify-content:space-between;gap:16px;flex-wrap:wrap;margin-bottom:22px}
.cabecera p{margin:.2em 0 0;color:var(--muted)}
.seccion-materias{font-size:1.05rem;margin:26px 0 12px;padding-left:10px;border-left:4px solid var(--acento,#FFC72C)}
.seccion-materias:first-of-type{margin-top:0}
.migas{display:flex;align-items:center;gap:6px;font-size:.85rem;color:var(--muted);margin-bottom:8px}
.hero{position:relative;overflow:hidden;border-radius:22px;padding:28px 30px;color:#fff;background:radial-gradient(1200px 300px at 100% 0,rgba(45,212,191,.35),transparent 60%),linear-gradient(120deg,#0A2E4D,#0E4A7B 55%,#0E7C86);box-shadow:var(--sombra);margin-bottom:22px}
.hero::after{content:"";position:absolute;right:-60px;bottom:-80px;width:320px;height:320px;border-radius:50%;background:radial-gradient(circle,rgba(255,200,87,.35),transparent 65%)}
.hero h1{color:#fff}.hero p{color:#D6E6F5;margin:.2em 0 0}.hero .muted{color:#A9C4DE}
.hero-grid{display:flex;align-items:center;justify-content:space-between;gap:24px;flex-wrap:wrap;position:relative;z-index:1}
.hero .anillo span{color:#fff}.hero .anillo circle:first-child{stroke:rgba(255,255,255,.18)}

/* ---------- Tarjetas y rejillas ---------- */
.grid{display:grid;gap:18px}.g-2{grid-template-columns:repeat(2,minmax(0,1fr))}.g-3{grid-template-columns:repeat(3,minmax(0,1fr))}.g-4{grid-template-columns:repeat(4,minmax(0,1fr))}
.g-main{grid-template-columns:minmax(0,2fr) minmax(0,1fr)}
.card{background:var(--panel);border:1px solid var(--borde);border-radius:var(--radio);box-shadow:var(--sombra);padding:20px;min-width:0}
.card.plano{box-shadow:none}.card.hover{transition:.2s}.card.hover:hover{transform:translateY(-2px);box-shadow:var(--sombra-hover)}
.card-cab{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-bottom:14px}
.card-cab h2,.card-cab h3{margin:0;display:flex;align-items:center;gap:8px}
.stat{display:flex;gap:14px;align-items:center}
.stat .icono-caja{width:48px;height:48px;border-radius:14px;display:grid;place-items:center;flex:none}
.stat>div{min-width:0}.stat .valor{font-size:1.6rem;font-weight:800;line-height:1.1;overflow-wrap:anywhere}.stat .etq{color:var(--muted);font-size:.85rem}
.tono-primary{background:var(--primary-50);color:var(--primary)}.tono-accent{background:var(--accent-50);color:var(--accent)}
.tono-gold{background:var(--gold-50);color:var(--gold)}.tono-exito{background:var(--exito-50);color:var(--exito)}
.tono-peligro{background:var(--peligro-50);color:var(--peligro)}.tono-aviso{background:var(--aviso-50);color:var(--aviso)}

/* ---------- Botones e insignias ---------- */
.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;padding:10px 16px;border-radius:12px;border:1px solid transparent;font:inherit;font-weight:700;font-size:.92rem;cursor:pointer;background:var(--primary);color:#fff;transition:.15s;text-decoration:none!important;white-space:nowrap}
.btn:hover{filter:brightness(1.08);transform:translateY(-1px)}
.btn.sec{background:var(--panel);color:var(--primary);border-color:var(--borde)}.btn.sec:hover{border-color:var(--primary)}
.btn.acento{background:linear-gradient(135deg,var(--accent),#0E8C84)}.btn.oro{background:linear-gradient(135deg,#FFB547,var(--gold));color:#3A2400}
.btn.peligro{background:var(--peligro)}.btn.chico{padding:6px 11px;font-size:.82rem;border-radius:10px}.btn.bloque{width:100%}
.btn:disabled{opacity:.5;cursor:not-allowed;transform:none}
.badge{display:inline-flex;align-items:center;gap:5px;padding:3px 10px;border-radius:999px;font-size:.76rem;font-weight:700;background:var(--panel-2);color:var(--muted);border:1px solid var(--borde);white-space:nowrap}
.badge.exito,.badge.aprobada,.badge.pagado{background:var(--exito-50);color:var(--exito);border-color:transparent}
.badge.peligro,.badge.reprobada,.badge.vencido{background:var(--peligro-50);color:var(--peligro);border-color:transparent}
.badge.aviso,.badge.cursando,.badge.pendiente{background:var(--aviso-50);color:var(--aviso);border-color:transparent}
.badge.info{background:var(--primary-50);color:var(--primary);border-color:transparent}
.badge.acento{background:var(--accent-50);color:var(--accent);border-color:transparent}

/* ---------- Progreso ---------- */
.barra{height:8px;background:var(--track);border-radius:999px;overflow:hidden}
.barra>span{display:block;height:100%;border-radius:999px;background:linear-gradient(90deg,var(--accent),#2DD4BF);width:0;transition:width 1s cubic-bezier(.2,.8,.2,1)}
.barra.oro>span{background:linear-gradient(90deg,#FFB547,var(--gold))}.barra.gruesa{height:12px}
.anillo{position:relative;display:inline-grid;place-items:center;flex:none}
.anillo svg{position:absolute;inset:0}.anillo span{font-weight:800;font-size:1.15rem;position:relative}
.anillo-valor{transition:stroke-dashoffset 1.2s cubic-bezier(.2,.8,.2,1)}

/* ---------- Tablas ---------- */
.tabla-caja{overflow-x:auto;border-radius:12px;border:1px solid var(--borde)}
table.tabla{border-collapse:separate;border-spacing:0;width:100%;font-size:.9rem}
.tabla th{background:var(--panel-2);color:var(--muted);font-weight:700;font-size:.74rem;text-transform:uppercase;letter-spacing:.05em;text-align:left;padding:11px 14px;border-bottom:1px solid var(--borde);white-space:nowrap}
.tabla td{padding:12px 14px;border-bottom:1px solid var(--borde);vertical-align:middle}
.tabla tr:last-child td{border-bottom:0}.tabla tbody tr{transition:background .12s}.tabla tbody tr:hover{background:var(--panel-2)}
.persona{display:flex;align-items:center;gap:10px}.persona b{display:block}.persona small{color:var(--muted)}

/* ---------- Formularios ---------- */
input,select,textarea{font:inherit;color:var(--texto);background:var(--panel);border:1px solid var(--borde);border-radius:12px;padding:10px 12px;outline:none;transition:.15s;max-width:100%}
input:focus,select:focus,textarea:focus{border-color:var(--primary);box-shadow:0 0 0 4px color-mix(in srgb,var(--primary) 15%,transparent)}
label{font-weight:600;font-size:.9rem}
.campo{display:flex;flex-direction:column;gap:6px;margin-bottom:14px}.campo input,.campo select,.campo textarea{width:100%}
.buscador{position:relative}.buscador .ico{position:absolute;left:12px;top:50%;transform:translateY(-50%);color:var(--muted)}.buscador input{padding-left:38px;width:100%}
.errorlist{color:var(--peligro);font-size:.85rem;padding:0;list-style:none;margin:4px 0}

/* ---------- Avisos (toasts) ---------- */
.toasts{position:fixed;right:20px;bottom:20px;display:flex;flex-direction:column;gap:10px;z-index:100;max-width:380px}
.toast{display:flex;gap:10px;align-items:flex-start;padding:14px 16px;border-radius:14px;background:var(--panel);border:1px solid var(--borde);box-shadow:var(--sombra-hover);animation:entra .35s ease;border-left:4px solid var(--primary)}
.toast.success{border-left-color:var(--exito)}.toast.error{border-left-color:var(--peligro)}.toast.warning{border-left-color:var(--aviso)}
.toast.sale{animation:sale .3s ease forwards}
@keyframes entra{from{opacity:0;transform:translateY(12px)}to{opacity:1;transform:none}}
@keyframes sale{to{opacity:0;transform:translateX(30px)}}
.alerta{display:flex;gap:12px;align-items:center;padding:14px 16px;border-radius:14px;margin-bottom:18px;background:var(--aviso-50);color:var(--texto);border:1px solid color-mix(in srgb,var(--aviso) 30%,transparent)}
.alerta.info{background:var(--primary-50);border-color:color-mix(in srgb,var(--primary) 25%,transparent)}

/* ---------- Línea de tiempo de módulos ---------- */
.modulos{display:grid;grid-auto-flow:column;grid-auto-columns:minmax(200px,1fr);gap:14px;overflow-x:auto;padding-bottom:4px}
.modulo{position:relative;padding:16px;border-radius:16px;border:1px solid var(--borde);background:var(--panel);transition:.2s;display:flex;flex-direction:column;gap:8px}
.modulo:hover{box-shadow:var(--sombra-hover);transform:translateY(-2px);text-decoration:none}
.modulo .num{font-size:.72rem;font-weight:800;letter-spacing:.08em;text-transform:uppercase;color:var(--muted)}
.modulo h3{margin:0;color:var(--texto);font-size:.98rem}
.modulo.actual{border-color:var(--accent);box-shadow:0 0 0 3px color-mix(in srgb,var(--accent) 20%,transparent)}
.modulo.actual .num{color:var(--accent)}.modulo.terminado{opacity:.85}.modulo.proximo{background:var(--panel-2)}

/* ---------- Tarjetas de curso ---------- */
.curso{overflow:hidden;padding:0;display:flex;flex-direction:column}
.curso .portada{height:96px;position:relative;padding:14px 16px;color:#fff;display:flex;align-items:flex-end}
.curso .portada .clave{position:absolute;top:12px;left:14px;font-weight:800;font-size:.75rem;background:rgba(255,255,255,.18);padding:3px 9px;border-radius:999px;backdrop-filter:blur(4px)}
.curso .portada svg.deco{position:absolute;right:-10px;bottom:-16px;opacity:.22;width:110px;height:110px}
.curso .cuerpo{padding:16px;display:flex;flex-direction:column;gap:10px;flex:1}
.portada-0{background:linear-gradient(135deg,#0E4A7B,#13A89E)}.portada-1{background:linear-gradient(135deg,#7C3AED,#0E4A7B)}
.portada-2{background:linear-gradient(135deg,#F29E38,#E2553D)}.portada-3{background:linear-gradient(135deg,#0E7C86,#16A34A)}
.portada-4{background:linear-gradient(135deg,#BE185D,#7C3AED)}.portada-5{background:linear-gradient(135deg,#0A2E4D,#2563EB)}

/* ---------- Aula: unidades y recursos ---------- */
.unidad{border:1px solid var(--borde);border-radius:16px;background:var(--panel);margin-bottom:14px;overflow:hidden;box-shadow:var(--sombra)}
.unidad>summary{list-style:none;cursor:pointer;display:flex;align-items:center;gap:14px;padding:16px 18px}
.unidad>summary::-webkit-details-marker{display:none}
.unidad>summary .n{width:42px;height:42px;border-radius:12px;display:grid;place-items:center;font-weight:800;background:var(--primary-50);color:var(--primary);flex:none}
.unidad>summary .flecha{margin-left:auto;transition:.2s;color:var(--muted)}.unidad[open]>summary .flecha{transform:rotate(90deg)}
.unidad .lista{border-top:1px solid var(--borde);padding:6px}
.recurso{display:flex;align-items:center;gap:14px;padding:11px 12px;border-radius:12px;color:var(--texto)}
.recurso:hover{background:var(--panel-2);text-decoration:none}
.recurso .tipo{width:38px;height:38px;border-radius:11px;display:grid;place-items:center;flex:none}
.recurso .info{flex:1;min-width:0}.recurso .info b{display:block;font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.recurso .estado{color:var(--exito)}.recurso .pendiente{width:20px;height:20px;border:2px solid var(--borde);border-radius:50%}
.t-lectura{background:var(--primary-50);color:var(--primary)}.t-video{background:#FDECF3;color:#BE185D}.t-material{background:var(--panel-2);color:var(--muted)}
.t-ejercicio,.t-proyecto{background:var(--gold-50);color:var(--gold)}.t-cuestionario,.t-examen{background:#F1EBFE;color:#7C3AED}
.t-asesoria,.t-foro{background:var(--accent-50);color:var(--accent)}
:root[data-tema="oscuro"] .t-video{background:#3A1527}:root[data-tema="oscuro"] .t-cuestionario,:root[data-tema="oscuro"] .t-examen{background:#251A40}

.lectura{max-width:760px;font-size:1.04rem;line-height:1.8}
.lectura p{margin:0 0 1.05em}.lectura strong{color:var(--primary)}
.video-caja{aspect-ratio:16/9;border-radius:16px;overflow:hidden;background:#000;margin-bottom:16px}.video-caja iframe{width:100%;height:100%;border:0}

/* ---------- Cuestionario interactivo ---------- */
.quiz-paso{display:none;animation:entra .3s ease}.quiz-paso.activo{display:block}
.opcion{display:flex;gap:12px;align-items:center;padding:14px 16px;border:2px solid var(--borde);border-radius:14px;margin-bottom:10px;cursor:pointer;transition:.15s;font-weight:500}
.opcion:hover{border-color:var(--primary);background:var(--primary-50)}
.opcion input{display:none}.opcion .letra{width:30px;height:30px;border-radius:9px;display:grid;place-items:center;font-weight:800;background:var(--panel-2);border:1px solid var(--borde);flex:none}
.opcion.elegida{border-color:var(--primary);background:var(--primary-50)}.opcion.elegida .letra{background:var(--primary);color:#fff;border-color:var(--primary)}
.resultado-quiz{text-align:center;padding:30px}

/* ---------- Mapa curricular ---------- */
.mapa{display:grid;grid-auto-flow:column;grid-auto-columns:minmax(150px,1fr);gap:12px;overflow-x:auto;padding-bottom:8px}
.mapa .col h4{font-size:.75rem;text-transform:uppercase;letter-spacing:.08em;color:var(--muted);text-align:center;margin-bottom:8px}
.materia{border-radius:12px;padding:10px 11px;margin-bottom:8px;font-size:.8rem;border:1px solid var(--borde);background:var(--panel);position:relative;min-height:72px}
.materia b{display:block;font-size:.7rem;color:var(--muted)}.materia .cal{position:absolute;right:8px;top:8px;font-weight:800;font-size:.85rem}
.materia.aprobada{background:var(--exito-50);border-color:color-mix(in srgb,var(--exito) 35%,transparent)}
.materia.cursando{background:var(--aviso-50);border-color:color-mix(in srgb,var(--aviso) 45%,transparent);box-shadow:0 0 0 3px color-mix(in srgb,var(--aviso) 15%,transparent)}
.materia.reprobada{background:var(--peligro-50);border-color:color-mix(in srgb,var(--peligro) 35%,transparent)}
.leyenda{display:flex;gap:16px;flex-wrap:wrap;font-size:.82rem;color:var(--muted)}.leyenda i{display:inline-block;width:12px;height:12px;border-radius:4px;margin-right:6px;vertical-align:-1px}

/* ---------- Captura de calificaciones ---------- */
input.cal{width:76px;text-align:center;font-weight:800;font-size:1rem;padding:8px}
input.cal.exito{border-color:var(--exito);background:var(--exito-50)}input.cal.aviso{border-color:var(--aviso);background:var(--aviso-50)}
input.cal.peligro{border-color:var(--peligro);background:var(--peligro-50)}input.cal.error{border-color:var(--peligro);animation:tiembla .3s}
@keyframes tiembla{25%{transform:translateX(-3px)}75%{transform:translateX(3px)}}
.barra-acciones{position:sticky;bottom:16px;display:flex;align-items:center;gap:12px;flex-wrap:wrap;padding:14px 16px;border-radius:16px;background:var(--panel);border:1px solid var(--borde);box-shadow:var(--sombra-hover);margin-top:18px}

/* ---------- Lista de pendientes / agenda ---------- */
.lista-simple{list-style:none;margin:0;padding:0}
.lista-simple li{display:flex;align-items:center;gap:12px;padding:11px 0;border-bottom:1px dashed var(--borde)}.lista-simple li:last-child{border-bottom:0}
.fecha-caja{width:48px;text-align:center;border-radius:12px;background:var(--primary-50);color:var(--primary);padding:5px 0;flex:none;line-height:1.1}
.fecha-caja b{display:block;font-size:1.15rem}.fecha-caja small{font-size:.68rem;text-transform:uppercase;font-weight:700}
.vacio{text-align:center;padding:28px;color:var(--muted)}.vacio .ico{width:40px;height:40px;opacity:.5;margin-bottom:6px}

/* ---------- Pestañas ---------- */
.tabs{display:flex;gap:4px;border-bottom:1px solid var(--borde);margin-bottom:18px;overflow-x:auto}
.tab{padding:10px 14px;font-weight:700;color:var(--muted);border:0;background:none;cursor:pointer;border-bottom:2px solid transparent;font:inherit;font-weight:700;white-space:nowrap}
.tab.activo{color:var(--primary);border-color:var(--primary)}.panel-tab{display:none}.panel-tab.activo{display:block;animation:entra .25s}

/* ---------- Documentos oficiales imprimibles ---------- */
.doc-oficial{background:#fff;color:#111;padding:40px;max-width:900px;margin:auto;border-radius:16px;box-shadow:var(--sombra)}
.doc-oficial .enc{display:flex;align-items:center;gap:16px;border-bottom:3px solid #0E4A7B;padding-bottom:14px;margin-bottom:18px}
.doc-oficial .enc img{width:70px}.doc-oficial .enc h2{margin:0;color:#0E4A7B}.doc-oficial table{width:100%;border-collapse:collapse;font-size:.88rem}
.doc-oficial th,.doc-oficial td{border:1px solid #d5dbe3;padding:6px 8px;text-align:left}.doc-oficial th{background:#EEF3F8}
.firmas{display:flex;justify-content:space-around;margin-top:70px;text-align:center}.firmas div{border-top:1px solid #000;padding-top:6px;width:40%}

/* ---------- Páginas públicas ---------- */
.publico{background:var(--bg)}
.pub-nav{display:flex;align-items:center;gap:20px;padding:16px 6vw;position:sticky;top:0;z-index:20;background:color-mix(in srgb,var(--bg) 85%,transparent);backdrop-filter:blur(10px)}
.pub-nav img{height:46px}.pub-nav .links{display:flex;gap:22px;margin-left:auto;align-items:center}.pub-nav .links a{color:var(--texto);font-weight:600}
.pub-hero{padding:60px 6vw 80px;display:grid;grid-template-columns:1.1fr .9fr;gap:40px;align-items:center;background:radial-gradient(800px 400px at 90% 10%,rgba(19,168,158,.15),transparent 60%),radial-gradient(600px 300px at 10% 90%,rgba(242,158,56,.12),transparent 60%)}
.pub-hero h1{font-size:clamp(2rem,4.2vw,3.4rem);line-height:1.08;font-weight:800}
.pub-hero h1 em{font-style:normal;background:linear-gradient(90deg,var(--accent),var(--primary));-webkit-background-clip:text;background-clip:text;color:transparent}
.pub-hero p.lead{font-size:1.15rem;color:var(--muted);max-width:560px}
.pub-sec{padding:60px 6vw}.pub-sec h2{font-size:1.9rem;text-align:center}.pub-sec .sub{text-align:center;color:var(--muted);max-width:640px;margin:0 auto 34px}
.maqueta{background:var(--panel);border-radius:24px;box-shadow:0 30px 80px rgba(14,74,123,.18);padding:18px;border:1px solid var(--borde);transform:rotate(-1.5deg)}
.pub-pie{padding:30px 6vw;background:#0A2540;color:#A9C4DE;display:flex;justify-content:space-between;flex-wrap:wrap;gap:20px}
.login-pagina{min-height:100vh;display:grid;grid-template-columns:1fr 1fr}
.login-arte{background:radial-gradient(600px 400px at 80% 20%,rgba(45,212,191,.35),transparent 60%),linear-gradient(140deg,#0A2540,#0E4A7B 60%,#0E7C86);color:#fff;padding:48px;display:flex;flex-direction:column;justify-content:space-between}
.login-arte h2{font-size:2.1rem;line-height:1.15;max-width:460px}
.login-form{display:grid;place-items:center;padding:30px}.login-form .card{width:100%;max-width:420px;padding:34px}

/* ---------- Responsivo ---------- */
@media (max-width:1100px){.g-4{grid-template-columns:repeat(2,minmax(0,1fr))}.g-main{grid-template-columns:1fr}}
@media (max-width:900px){
  .app{grid-template-columns:1fr;background:none}
  .sidebar{position:fixed;left:0;top:0;width:280px;transform:translateX(-100%);transition:transform .25s;box-shadow:var(--sombra-hover)}
  body.menu-abierto .sidebar{transform:none}
  body.menu-abierto::after{content:"";position:fixed;inset:0;background:rgba(0,0,0,.4);z-index:35}
  .btn-menu{display:inline-grid}.topbar{padding:12px 16px}.contenido{padding:18px 16px 50px}
  .g-2,.g-3{grid-template-columns:1fr}.pub-hero,.login-pagina{grid-template-columns:1fr}.login-arte{display:none}
  .pub-nav .links a:not(.btn){display:none}.topbar .saludo small{display:none}
}
@media (max-width:560px){
  .g-4{grid-template-columns:1fr 1fr;gap:12px}.hero{padding:22px}.card{padding:15px}
  .stat{flex-direction:column;align-items:flex-start;gap:8px}.stat .icono-caja{width:38px;height:38px;border-radius:11px}
  .stat .valor{font-size:1.15rem}.perfil .small{display:none}.saludo small{display:none}
  .lista-simple li{flex-wrap:wrap}.lista-simple li .recurso{display:none}.hero .anillo{margin:auto}
  .tabla-caja{border-radius:10px}.cabecera h1{font-size:1.35rem}
}
@media print{
  .sidebar,.topbar,.no-print,.toasts{display:none!important}.app{display:block}body{background:#fff}
  .contenido{padding:0;max-width:none}.doc-oficial{box-shadow:none;padding:0}
}
.card.curso.bloqueada,.modulo.bloqueada{opacity:.62;cursor:not-allowed;filter:grayscale(.35)}
.aviso-vista-previa{margin-bottom:16px}
@media (max-width:640px){.aviso-vista-previa{flex-wrap:wrap}.aviso-vista-previa .btn{width:100%;justify-content:center}}
.sidebar .pie a{color:inherit;text-decoration:underline}
.derechos-material{margin:22px auto 0;max-width:72ch;font-size:.78rem;line-height:1.5}

/* ---------- Foros, mensajes y avisos ---------- */
.sr-only{position:absolute!important;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}
.aportacion{margin-bottom:12px}.aportacion-cab{display:flex;gap:10px;align-items:center;margin-bottom:8px}
.aportacion-texto{line-height:1.6;overflow-wrap:anywhere}
.respuesta-foro{margin:10px 0 0 22px;padding:10px 12px;border-left:3px solid var(--borde);background:var(--panel-2);border-radius:0 10px 10px 0;overflow-wrap:anywhere}
.respuesta-foro.del-asesor{border-left-color:var(--primary)}
.responder-foro{display:flex;gap:8px;align-items:flex-end;margin:10px 0 0 22px}.responder-foro textarea{flex:1;min-height:44px}
.mensajeria{display:grid;grid-template-columns:320px 1fr;gap:18px;align-items:start}
.lista-conv{padding:12px;max-height:620px;overflow:auto}
.conv{display:flex;gap:10px;align-items:center;padding:10px;border-radius:12px;color:inherit;text-decoration:none}
.conv:hover,.conv.activo{background:var(--primary-50)}.conv-info{display:flex;flex-direction:column;min-width:0;flex:1}
.conv-info .small{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.contador{min-width:22px;height:22px;border-radius:999px;background:var(--peligro);color:#fff;font-size:.75rem;font-weight:800;display:inline-grid;place-items:center;padding:0 6px}
.conversacion{display:flex;flex-direction:column;min-height:420px}
.hilo{flex:1;display:flex;flex-direction:column;gap:10px;max-height:480px;overflow:auto;padding:4px 2px 10px}
.burbuja{max-width:78%;padding:10px 14px;border-radius:14px 14px 14px 4px;background:var(--panel-2);overflow-wrap:anywhere}
.burbuja.mia{align-self:flex-end;background:var(--primary-50);border-radius:14px 14px 4px 14px}
.burbuja .small{display:block;margin-top:4px;color:var(--muted)}
.enviar-mensaje{display:flex;gap:10px;align-items:flex-end;border-top:1px solid var(--borde);padding-top:12px}.enviar-mensaje textarea{flex:1}
.nav-item .contador{margin-left:auto}
@media (max-width:860px){.mensajeria{grid-template-columns:1fr}.lista-conv{max-height:none}.burbuja{max-width:92%}
  .responder-foro,.enviar-mensaje{flex-direction:column;align-items:stretch}.respuesta-foro,.responder-foro{margin-left:8px}}
.lista-simple li.pasada{opacity:.55}
.faq-uso{border-bottom:1px dashed var(--borde);padding:10px 0}.faq-uso:last-child{border-bottom:0}.faq-uso summary{cursor:pointer}
.escala{border:0;padding:12px 0;margin:0;border-bottom:1px dashed var(--borde)}.escala legend{font-weight:700;padding:0;margin-bottom:8px}
.opciones-escala{display:flex;gap:8px;flex-wrap:wrap}.opciones-escala label{display:flex;align-items:center;gap:6px;padding:8px 14px;border:1px solid var(--borde);border-radius:10px;cursor:pointer}
.opciones-escala label:has(input:checked){border-color:var(--primary);background:var(--primary-50)}.opciones-escala input{width:auto;margin:0}
.doc-oficial .enc h1.titulo-doc{margin:0;color:#0E4A7B;font-size:1.5em;font-weight:700}
.card-cab h1.h2{margin:0;display:flex;align-items:center;gap:8px;font-size:1.5em;font-weight:700}
