:root{
  --institucional:#0b3d91;
  --institucional-dark:#062a66;
  --accent:#c8102e;
  --sidebar-w:270px;
  --sidebar-bg:#4b2c7f;
  --sidebar-bg-deep:#3a1f66;
  --sidebar-active:#f07828;
  --sidebar-radius:28px;
}
*{box-sizing:border-box}body{margin:0;font-family:'Segoe UI',system-ui,sans-serif;background:#f0f4f8;color:#1a1a2e}
.auth-body{background:linear-gradient(135deg,var(--institucional),#1a5fbf);min-height:100vh}
.login-wrapper{min-height:100vh;display:flex;align-items:center;justify-content:center;padding:1.5rem}
.login-card{background:#fff;border-radius:16px;overflow:hidden;max-width:420px;width:100%;box-shadow:0 20px 60px rgba(0,0,0,.2)}
.login-header{background:linear-gradient(135deg,var(--institucional),var(--institucional-dark));color:#fff;padding:2rem;text-align:center}
.login-header.bg-danger-gradient{background:linear-gradient(135deg,var(--accent),#8a0b20)}
.login-header-brand{background:#fff;color:#1a1a2e;padding:1.5rem 1.25rem 1.1rem;border-bottom:1px solid #eef2f7}
.login-header-brand h4{font-size:1.25rem;line-height:1.25}
.login-logo{width:min(280px,82%);height:auto;display:block;margin:0 auto;object-fit:contain}
.logo-circle{width:72px;height:72px;margin:0 auto 1rem;background:rgba(255,255,255,.15);border-radius:50%;display:flex;align-items:center;justify-content:center}
.login-body{padding:2rem}
.mat-pasos{display:flex;gap:.45rem;margin-bottom:.85rem}
.mat-paso-ind{
  flex:1;text-align:center;font-size:.78rem;font-weight:700;
  padding:.45rem .35rem;border-radius:999px;background:#eef2f8;color:#5c6b80;
}
.mat-paso-ind.is-active{background:#0b3d91;color:#fff}
.mat-paso-ind.is-done{background:#d9e8ff;color:#0b3d91}
.mat-paso{margin-bottom:.35rem}
.estado-admision-card{max-width:520px}
.estado-admision-card .login-header{padding:1.15rem 1rem 1rem}
.estado-admision-card .logo-circle{width:52px;height:52px;margin-bottom:.55rem}
.estado-admision-card .login-header h4{font-size:1.15rem}
.estado-admision-card .login-body{padding:1.05rem 1.1rem 1.15rem}
.estado-alumno{border:1px solid #e6ebf2;border-radius:12px;padding:.85rem .9rem;margin-bottom:.75rem}
.estado-pasos{display:flex;gap:.3rem;margin:.7rem 0 .55rem}
.estado-paso{
  flex:1;text-align:center;font-size:.68rem;font-weight:700;line-height:1.2;
  padding:.32rem .15rem;border-radius:999px;background:#eef2f8;color:#5c6b80;
}
.estado-paso.is-active{background:#0b3d91;color:#fff}
.estado-paso.is-done{background:#d9e8ff;color:#0b3d91}
.estado-proceso-modal{border:0;border-radius:16px;overflow:hidden}
.estado-proceso-modal .modal-header{background:linear-gradient(135deg,#0b3d91,#1e5bb8);color:#fff;border:0}
.estado-proceso-modal .modal-title{font-weight:700}
.estado-proceso-modal .btn-close{filter:invert(1) grayscale(1)}
.doc-grilla{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:1rem;margin:.75rem 0 1.1rem}
.doc-tarjeta{display:flex;flex-direction:column;border:1px solid #e6ebf2;border-radius:14px;padding:0;margin:0;background:#fff;overflow:hidden;height:100%;min-width:0}
.doc-tarjeta.is-aprobado{border-color:#b7e4c7;background:#f6fff9}
.doc-miniatura{position:relative;width:100%;height:168px;border:0;border-radius:0;overflow:hidden;background:#eef2f7;padding:0;cursor:zoom-in}
.doc-miniatura img{width:100%;height:100%;object-fit:cover;display:block}
.doc-miniatura-hint{position:absolute;left:0;right:0;bottom:0;padding:.35rem .5rem;font-size:.72rem;font-weight:600;color:#fff;background:linear-gradient(transparent,rgba(11,61,145,.78));opacity:0;transition:opacity .15s}
.doc-miniatura:hover .doc-miniatura-hint,.doc-miniatura:focus .doc-miniatura-hint{opacity:1}
.doc-icono{width:100%;height:100%;display:flex;align-items:center;justify-content:center;font-size:2.2rem;color:#0b3d91}
.doc-tarjeta-cuerpo{min-width:0;padding:.75rem .85rem .9rem}
.doc-titulo{display:block;width:100%;border:0;background:none;padding:0;text-align:left;font-weight:700;font-size:.88rem;line-height:1.3;color:#123;cursor:zoom-in}
.doc-titulo:hover{color:#0b3d91;text-decoration:underline}
.doc-preview-modal .modal-dialog{max-width:min(1100px,94vw)}
.doc-preview-modal .modal-body{background:#111;min-height:240px}
.doc-preview-modal img,.doc-preview-modal iframe{width:100%;max-height:86vh;border:0;background:#111}
.doc-preview-modal img{object-fit:contain;height:86vh}
@media (max-width:767.98px){.doc-grilla{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media (max-width:479.98px){.doc-grilla{grid-template-columns:1fr}}
.agenda-nav{display:flex;align-items:center;justify-content:space-between;gap:.75rem;margin-bottom:.75rem}
.agenda-tabla{width:100%;border-collapse:separate;border-spacing:6px}
.agenda-tabla th{font-size:.8rem;text-align:center;color:#3d4a5c}
.agenda-tabla th .agenda-dia{text-transform:capitalize}
.agenda-dia-check{display:flex;flex-direction:column;align-items:center;gap:.3rem;margin:0}
.agenda-hora{text-align:left !important;white-space:nowrap;color:#66788a}
.agenda-celda{display:flex;align-items:center;justify-content:center;width:100%;min-height:46px;border:0;border-radius:8px;padding:.35rem;font-size:.72rem;font-weight:700;text-align:center}
button.agenda-celda{cursor:pointer}
.agenda-celda.is-disponible{background:#d8f3dc;color:#1b4332}
button.agenda-celda.is-disponible:hover{background:#b7e4c7}
.agenda-celda.is-ocupado{background:#f8d0d8;color:#9b2242}
.agenda-celda.is-propia{background:#dbe7ff;color:#0b3d91}
.agenda-celda.is-no_disponible,.agenda-muestra.is-no{background:#e9edf2;color:#8b95a5}
.agenda-leyenda{display:flex;flex-wrap:wrap;gap:1rem;margin-top:.35rem;font-size:.8rem;color:#4c5a6b}
.agenda-muestra{display:inline-block;width:14px;height:14px;border-radius:4px;margin-right:.35rem;vertical-align:-2px}
.agenda-muestra.is-disponible{background:#d8f3dc}
.agenda-muestra.is-ocupado{background:#f8d0d8}
.mat-nav{display:flex;gap:.75rem;margin-top:1.6rem}
.mat-nav .btn{flex:1}
.btn-google{display:flex;align-items:center;justify-content:center;gap:.75rem;padding:.75rem 1rem;border:1px solid #ddd;border-radius:8px;text-decoration:none;color:#333;font-weight:500;transition:.2s}
.btn-google:hover{background:#f8f9fa}
.btn-google img{width:22px;height:22px}
.btn-institucional{background:var(--institucional);color:#fff;border:none}
.btn-institucional:hover{background:var(--institucional-dark);color:#fff}
.login-or{display:flex;align-items:center;gap:.75rem;color:#6c757d;font-size:.8rem}
.login-or::before,.login-or::after{content:"";flex:1;height:1px;background:#e3e8ee}
.login-or span{text-transform:uppercase;letter-spacing:.06em}
.sidebar{
  position:fixed;
  left:0;top:0;bottom:0;
  width:var(--sidebar-w);
  background:linear-gradient(180deg,var(--sidebar-bg-deep),var(--sidebar-bg));
  color:#fff;
  z-index:1040;
  overflow-y:auto;
  overflow-x:hidden;
  transition:transform .3s;
  border-top-right-radius:var(--sidebar-radius);
  border-bottom-right-radius:var(--sidebar-radius);
  box-shadow:8px 0 28px rgba(58,31,102,.18);
}
.sidebar-brand{
  display:flex;
  align-items:center;
  gap:.75rem;
  padding:1.4rem 1.25rem 1.15rem;
  border-bottom:0;
}
.brand-icon{
  width:52px;height:52px;
  background:#fff;
  border-radius:14px;
  display:flex;align-items:center;justify-content:center;
  font-size:1.2rem;
  overflow:hidden;
  padding:3px;
  box-shadow:0 4px 12px rgba(0,0,0,.12);
}
.brand-icon .brand-logo,.brand-logo{
  width:100%;height:100%;
  object-fit:contain;
  background:#fff;
  border-radius:10px;
  padding:2px;
  display:block;
}
.sidebar-brand h6{margin:0;font-weight:700;font-size:.95rem;line-height:1.2;color:#fff}
.sidebar-brand small{opacity:.72;font-size:.7rem;color:#fff}
.sidebar-nav{
  padding:.35rem .7rem 1.25rem;
  gap:.15rem;
}
.sidebar-nav .nav-link{
  color:#fff;
  padding:.72rem 1rem;
  margin:.12rem 0;
  display:flex;
  align-items:center;
  gap:.75rem;
  font-size:.92rem;
  font-weight:600;
  border-left:0;
  border-radius:18px;
  text-decoration:none;
  transition:background .18s ease,color .18s ease,box-shadow .18s ease;
}
.sidebar-nav .nav-link i{
  width:1.15rem;
  text-align:center;
  font-size:1rem;
  color:inherit;
  opacity:1;
}
.sidebar-nav .nav-link:hover{
  color:#fff;
  background:rgba(255,255,255,.1);
}
.sidebar-nav .nav-link.active,
.sidebar-nav .nav-link.active:hover{
  color:var(--sidebar-active);
  background:#fff;
  box-shadow:0 6px 16px rgba(0,0,0,.12);
  font-weight:700;
}
.sidebar-nav .nav-link.active i{
  color:var(--sidebar-active);
}
.nav-section{
  padding:.85rem 1rem .35rem;
  font-size:.68rem;
  text-transform:uppercase;
  letter-spacing:.08em;
  opacity:.55;
  color:#fff;
}
.nav-group{
  border-bottom:0;
  margin:.15rem 0;
}
.nav-group-toggle{
  width:100%;
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:.5rem;
  padding:.72rem 1rem;
  margin:.12rem 0;
  background:transparent;
  border:0;
  border-radius:18px;
  color:#fff;
  font-size:.92rem;
  font-weight:600;
  cursor:pointer;
  text-align:left;
  transition:background .18s ease;
}
.nav-group-toggle:hover{
  background:rgba(255,255,255,.1);
  color:#fff;
}
.nav-group.open > .nav-group-toggle{
  background:rgba(255,255,255,.08);
}
.nav-group-label{display:flex;align-items:center;gap:.75rem}
.nav-group-label i{width:1.15rem;text-align:center;opacity:1;color:inherit}
.nav-caret{font-size:.7rem;opacity:.75;transition:transform .2s ease}
.nav-group.open .nav-caret{transform:rotate(180deg)}
.nav-submenu{display:none;padding:.1rem 0 .35rem}
.nav-group.open .nav-submenu{display:block}
.nav-submenu .nav-link{
  padding:.58rem 1rem .58rem 2.35rem;
  font-size:.86rem;
  font-weight:600;
  opacity:1;
  margin:.08rem 0;
}
.nav-submenu .nav-link i{font-size:.9rem;opacity:1}
.nav-link-logout{
  margin-top:.65rem;
  border-top:1px solid rgba(255,255,255,.12);
  border-radius:0 0 18px 18px;
  padding-top:.85rem !important;
}

.main-wrapper{margin-left:var(--sidebar-w);min-height:100vh;display:flex;flex-direction:column}
.topbar{background:#fff;padding:.75rem 1.5rem;display:flex;align-items:center;gap:1rem;box-shadow:0 1px 3px rgba(0,0,0,.06);position:sticky;top:0;z-index:100}
.page-title{font-size:1.15rem;font-weight:700;margin:0;flex:1}
.topbar-user{display:flex;align-items:center;gap:.5rem}
.avatar-sm{width:36px;height:36px;border-radius:50%;object-fit:cover}
.content{padding:1.5rem;flex:1}
.content:has(.panel-vidrio){
  background:
    radial-gradient(ellipse 70% 45% at 0% 0%, rgba(111,66,193,.28), transparent 58%),
    radial-gradient(ellipse 55% 40% at 100% 8%, rgba(240,120,40,.22), transparent 52%),
    radial-gradient(ellipse 65% 50% at 78% 100%, rgba(30,91,184,.18), transparent 55%),
    linear-gradient(165deg,#f6f3fb 0%,#eef3f8 48%,#f7f1ea 100%);
}
.panel-vidrio .card-round{
  background:linear-gradient(165deg,rgba(255,255,255,.55),rgba(255,255,255,.22)) !important;
  backdrop-filter:blur(22px) saturate(1.7);
  -webkit-backdrop-filter:blur(22px) saturate(1.7);
  border:1px solid rgba(255,255,255,.72);
  border-radius:22px;
  box-shadow:inset 0 1px 0 rgba(255,255,255,.9), 0 18px 40px rgba(58,31,102,.1);
}
.panel-vidrio .doc-tarjeta{
  background:linear-gradient(180deg,rgba(255,255,255,.5),rgba(255,255,255,.28));
  backdrop-filter:blur(14px) saturate(1.5);
  -webkit-backdrop-filter:blur(14px) saturate(1.5);
  border:1px solid rgba(255,255,255,.66);
  box-shadow:inset 0 1px 0 rgba(255,255,255,.75), 0 8px 20px rgba(58,31,102,.06);
}
.panel-vidrio .doc-tarjeta.is-aprobado{background:linear-gradient(180deg,rgba(246,255,249,.62),rgba(255,255,255,.3));border-color:rgba(183,228,199,.8)}
.panel-vidrio .form-control,.panel-vidrio .form-select{background:rgba(255,255,255,.72);border-color:rgba(255,255,255,.8)}
.panel-vidrio .perfil-banner{
  background:linear-gradient(120deg,rgba(6,42,102,.62),rgba(11,61,145,.46) 55%,rgba(26,95,191,.4));
  backdrop-filter:blur(22px) saturate(1.7);
  -webkit-backdrop-filter:blur(22px) saturate(1.7);
  border:1px solid rgba(255,255,255,.42);
  box-shadow:inset 0 1px 0 rgba(255,255,255,.38), 0 18px 40px rgba(11,61,145,.16);
}
.panel-vidrio .asist-panel{background:transparent;border:0;box-shadow:none;overflow:visible}
.panel-vidrio .asist-panel__head{
  background:linear-gradient(120deg,rgba(58,31,102,.58),rgba(75,44,127,.42) 60%,rgba(107,63,160,.36));
  backdrop-filter:blur(22px) saturate(1.7);
  -webkit-backdrop-filter:blur(22px) saturate(1.7);
  border:1px solid rgba(255,255,255,.4);
  border-radius:20px;
  box-shadow:inset 0 1px 0 rgba(255,255,255,.35), 0 18px 40px rgba(58,31,102,.14);
}
.panel-vidrio .stat-card,
.panel-vidrio .asist-panel__card{
  background:linear-gradient(165deg,rgba(255,255,255,.55),rgba(255,255,255,.22));
  backdrop-filter:blur(22px) saturate(1.7);
  -webkit-backdrop-filter:blur(22px) saturate(1.7);
  border:1px solid rgba(255,255,255,.72);
  border-radius:22px;
  box-shadow:inset 0 1px 0 rgba(255,255,255,.9), 0 18px 40px rgba(58,31,102,.1);
}
.panel-vidrio .asist-panel__card .bg-white{
  background:linear-gradient(165deg,rgba(255,255,255,.48),rgba(255,255,255,.22)) !important;
  border-color:rgba(255,255,255,.7) !important;
  backdrop-filter:blur(14px) saturate(1.5);
  -webkit-backdrop-filter:blur(14px) saturate(1.5);
}
.app-footer{padding:1rem 1.5rem;text-align:center;font-size:.8rem;color:#6c757d;border-top:1px solid #e9ecef}
.card-round{border-radius:12px;box-shadow:0 2px 8px rgba(0,0,0,.04)}
.stat-card{background:#fff;border-radius:12px;padding:1.25rem;display:flex;align-items:center;gap:1rem;box-shadow:0 2px 8px rgba(0,0,0,.04)}
.stat-icon{width:48px;height:48px;border-radius:12px;display:flex;align-items:center;justify-content:center;color:#fff;font-size:1.1rem;flex-shrink:0}
.stat-value{font-size:1.4rem;font-weight:700;line-height:1.2}.stat-label{font-size:.8rem;color:#6c757d}
.bg-grad-blue{background:linear-gradient(135deg,#0b3d91,#1a5fbf)}
.bg-grad-teal{background:linear-gradient(135deg,#0d9488,#14b8a6)}
.bg-grad-indigo{background:linear-gradient(135deg,#4338ca,#6366f1)}
.bg-grad-green{background:linear-gradient(135deg,#15803d,#22c55e)}
.bg-grad-orange{background:linear-gradient(135deg,#c2410c,#f97316)}
.bg-grad-red{background:linear-gradient(135deg,#b91c1c,#ef4444)}
.bg-grad-gray{background:linear-gradient(135deg,#4b5563,#9ca3af)}
.alert-auto{animation:fadeIn .3s}
@keyframes fadeIn{from{opacity:0;transform:translateY(-8px)}to{opacity:1;transform:none}}
.sidebar-backdrop{display:none}
@media(max-width:991px){
  .sidebar{transform:translateX(-100%)}
  .sidebar.open{transform:translateX(0)}
  .sidebar-backdrop{display:none;position:fixed;inset:0;background:rgba(0,0,0,.4);z-index:1030}
  .sidebar-backdrop.show{display:block}
  .main-wrapper{margin-left:0}
}
/* Grilla horario (estilo PDF semanal) */
.horario-grid{border-collapse:collapse;font-size:.78rem;min-width:920px}
.horario-compact-scroll{max-height:340px;overflow:auto;-webkit-overflow-scrolling:touch}
.horario-grid-compact{min-width:680px;font-size:.62rem}
.horario-grid-compact th,.horario-grid-compact td{padding:.22rem .12rem!important}
.horario-grid-compact .horario-grid-day{min-width:58px;font-size:.68rem}
.horario-grid-compact .horario-grid-hora{font-size:.55rem}
.horario-grid-compact .horario-grid-break-txt{font-size:.58rem}
.horario-grid-compact .horario-grid-materia{font-size:.62rem;font-weight:700}
.horario-grid th,.horario-grid td{border:1px solid #212529!important;vertical-align:middle;padding:.4rem .3rem}
.horario-grid thead th{background:#f8f9fa;font-weight:700}
.horario-grid-corner{min-width:72px;background:#fff}
.horario-grid-day{background:#f8f9fa;font-weight:700;white-space:nowrap;min-width:78px}
.horario-grid-label{font-weight:700;line-height:1.15}
.horario-grid-hora{font-size:.68rem;font-weight:500;color:#495057;margin-top:.1rem}
.horario-grid-break{background:#f1f3f5}
.horario-grid-break-txt{font-weight:700;font-size:.72rem;letter-spacing:.02em}
.horario-grid-materia{font-weight:700;line-height:1.2}
.horario-grid-docente{font-size:.65rem;color:#495057;margin-top:.15rem;line-height:1.15}
.horario-grid-header{line-height:1.35}
.horario-ahora-leyenda{display:inline-block;width:14px;height:14px;border-radius:3px;background:#fff3cd;border:2px solid #ffc107;flex-shrink:0}
.horario-ahora-row th.horario-ahora-day{background:#fff3cd;color:#856404}
.horario-ahora-col{background:#fff8e1!important}
.horario-ahora-celda{
  background:#ffe082!important;
  box-shadow:inset 0 0 0 2px #ffc107;
  font-weight:700;
}
.horario-ahora-celda .horario-grid-materia{color:#5c4400}
.horario-ahora-celda.horario-grid-break{background:#ffe082!important}
/* Grilla asistencia (círculo verde=asistió / rojo=faltó) */
.asist-badge{
  display:inline-flex;align-items:center;justify-content:center;
  width:1.55rem;height:1.55rem;border-radius:50%;
  font-size:.72rem;font-weight:800;line-height:1;
  border:2px solid transparent;margin-bottom:.2rem;
}
.asist-badge-sm{width:1.2rem;height:1.2rem;font-size:.65rem;margin:0 .25rem .15rem 0;vertical-align:middle}
.asist-badge-presente{background:#198754;border-color:#146c43;color:#fff!important}
.asist-badge-ausente{background:#dc3545;border-color:#b02a37;color:#fff!important}
.asist-badge-justificado{background:#0dcaf0;border-color:#0aa2c0;color:#063b46!important}
.asist-badge-sin{background:#e9ecef;border-color:#adb5bd;color:#6c757d!important}
.asist-dia-tomado{background:#d1e7dd!important;color:#0f5132}
.asist-dia-tomado .small{color:#0f5132!important}
.asist-dia-justificado{background:#cff4fc!important;color:#055160}
.asist-dia-justificado .small{color:#055160!important}
.asistencia-grid .asist-hora{font-weight:700;font-size:.78rem;line-height:1.15;margin-bottom:.15rem}
.asistencia-grid .asist-estado-txt{font-size:.65rem;font-weight:700;margin-top:.15rem;letter-spacing:.02em}
.asistencia-grid td.asist-celda-presente{background:#e8f5e9!important}
.asistencia-grid td.asist-celda-presente .asist-hora,
.asistencia-grid td.asist-celda-presente .horario-grid-materia{color:#0f5132!important}
.asistencia-grid td.asist-celda-presente .asist-estado-txt{color:#198754!important}
.asistencia-grid td.asist-celda-ausente{background:#fdecea!important}
.asistencia-grid td.asist-celda-ausente .asist-hora,
.asistencia-grid td.asist-celda-ausente .horario-grid-materia{color:#842029!important}
.asistencia-grid td.asist-celda-ausente .asist-estado-txt{color:#dc3545!important}
.asistencia-grid td.asist-celda-justificado{background:#e7f8fb!important}
.asistencia-grid td.asist-celda-justificado .asist-hora,
.asistencia-grid td.asist-celda-justificado .horario-grid-materia{color:#055160!important}
.asistencia-grid td.asist-celda-justificado .asist-estado-txt{color:#0aa2c0!important}
.asistencia-grid td.asist-celda-sin{background:#fff!important}
.asistencia-grid td.asist-celda-sin .asist-hora{color:#495057}

/* Agenda */
.agenda-grid td{vertical-align:top;min-width:110px;font-size:.78rem}
.agenda-grid th.horario-grid-break,
.agenda-grid td.horario-grid-break{
  width:1.85rem;
  min-width:1.85rem;
  max-width:1.85rem;
  padding:.35rem .08rem !important;
  vertical-align:middle;
}
.agenda-grid th.horario-grid-break .horario-grid-label,
.agenda-grid th.horario-grid-break .horario-grid-hora,
.agenda-grid td.horario-grid-break .horario-grid-break-txt{
  writing-mode:vertical-rl;
  transform:rotate(180deg);
  white-space:nowrap;
  display:inline-block;
  line-height:1;
  letter-spacing:.05em;
  font-size:.68rem;
}
.agenda-grid th.horario-grid-break .horario-grid-hora{
  display:none;
}
.agenda-celda-mia{background:#f0f7ff!important}
.agenda-dot{display:inline-block;width:.75rem;height:.75rem;border-radius:50%;border:1px solid rgba(0,0,0,.15)}
.agenda-dot.agenda-aviso,.agenda-chip.agenda-aviso,.agenda-badge.agenda-aviso{background:#198754;color:#fff}
.agenda-dot.agenda-actividad{background:#ffc107}
.agenda-chip.agenda-actividad,.agenda-badge.agenda-actividad{background:#ffc107;color:#212529}
.agenda-dot.agenda-leccion,.agenda-chip.agenda-leccion,.agenda-badge.agenda-leccion{background:#dc3545;color:#fff}
.agenda-chip{display:block;border-radius:6px;padding:.2rem .35rem;margin:.25rem 0 0;line-height:1.2;font-size:.68rem;text-align:left;position:relative}
button.agenda-chip{width:100%;border:0;cursor:pointer;font:inherit;color:inherit}
button.agenda-chip:hover,button.agenda-chip:focus-visible{filter:brightness(.94);outline:2px solid rgba(75,44,127,.45);outline-offset:1px}
.agenda-chip strong{display:block;font-size:.62rem;opacity:.9;text-transform:uppercase;letter-spacing:.02em}
.agenda-chip span{display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;word-break:break-word}
.agenda-chip .agenda-edit-btn{position:absolute;top:0;right:2px;color:inherit;opacity:.75}
.agenda-detalle-modal{border:0;border-radius:18px;overflow:hidden}
.agenda-detalle-modal .modal-title{font-weight:800;color:var(--sidebar-bg-deep);line-height:1.3}
.agenda-detalle-meta{display:grid;grid-template-columns:5.5rem 1fr;gap:.35rem .75rem;margin:0;font-size:.92rem}
.agenda-detalle-meta dt{margin:0;color:#6c757d;font-weight:600}
.agenda-detalle-meta dd{margin:0}
.agenda-detalle-desc{white-space:pre-wrap;word-break:break-word;background:#faf7ff;border-radius:12px;padding:.85rem 1rem;border:1px solid rgba(75,44,127,.08)}
.agenda-badge{display:inline-block;padding:.2rem .5rem;border-radius:999px;font-size:.75rem;font-weight:600}
.agenda-add-btn{font-size:.68rem;padding:.15rem .4rem;line-height:1.2}

/* Plataformas externas — tarjetas tipo Educalinks */
.plataformas-page{max-width:960px}
.plataformas-header{margin-bottom:1.35rem}
.plataformas-title{margin:0 0 .2rem;font-size:1.75rem;font-weight:800;color:#1a1a2e;letter-spacing:-.02em}
.plataformas-subtitle{margin:0;color:#6c757d;font-size:.95rem}
.plataformas-lista{
  display:flex;
  flex-direction:column;
  gap:1.1rem;
}
a.plataforma-card{
  display:flex !important;
  flex-direction:row !important;
  flex-wrap:nowrap !important;
  align-items:stretch;
  text-decoration:none !important;
  color:inherit;
  background:#fff;
  border-radius:16px;
  overflow:hidden;
  min-height:96px;
  box-shadow:0 6px 22px rgba(15,23,42,.09);
  border:1px solid rgba(15,23,42,.06);
  transition:transform .18s ease, box-shadow .18s ease;
}
a.plataforma-card:hover{
  transform:translateY(-3px);
  box-shadow:0 12px 28px rgba(15,23,42,.14);
  text-decoration:none !important;
  color:inherit;
}
.plataforma-logo{
  width:118px;
  flex:0 0 118px;
  display:flex;
  align-items:center;
  justify-content:center;
  background:#fff;
  padding:.85rem;
}
.plataforma-logo img{
  max-width:78px;
  max-height:58px;
  object-fit:contain;
  display:block;
}
.plataforma-icon-wrap{
  width:56px;
  height:56px;
  border-radius:14px;
  display:flex;
  align-items:center;
  justify-content:center;
  background:color-mix(in srgb, var(--plat-color, #0b3d91) 14%, #fff);
  color:var(--plat-color, #0b3d91);
  font-size:1.45rem;
}
.plataforma-nombre{
  flex:1 1 auto;
  min-width:0;
  display:flex;
  align-items:center;
  padding:1rem 1.35rem;
  background:var(--plat-color, #0b3d91);
  color:#fff !important;
  font-weight:800;
  font-size:clamp(1rem, 2.2vw, 1.35rem);
  letter-spacing:.03em;
  line-height:1.2;
  text-transform:uppercase;
}
.plataforma-nombre span{
  display:-webkit-box;
  -webkit-line-clamp:2;
  -webkit-box-orient:vertical;
  overflow:hidden;
}
.plataforma-accion{
  width:168px;
  flex:0 0 168px;
  display:flex;
  align-items:center;
  justify-content:center;
  background:#fff;
  padding:.85rem 1rem;
}
.plataforma-btn{
  display:inline-flex;
  align-items:center;
  gap:.5rem;
  background:#fff;
  border:1.5px solid #d8dee6;
  border-radius:999px;
  padding:.55rem 1.05rem;
  color:#1a1a2e;
  font-weight:700;
  font-size:.92rem;
  white-space:nowrap;
  box-shadow:0 1px 2px rgba(15,23,42,.04);
  transition:border-color .15s ease, color .15s ease, background .15s ease;
}
a.plataforma-card:hover .plataforma-btn{
  border-color:var(--plat-color, #0b3d91);
  color:var(--plat-color, #0b3d91);
  background:color-mix(in srgb, var(--plat-color, #0b3d91) 8%, #fff);
}
.plataforma-color-swatch{
  display:inline-block;
  width:1rem;
  height:1rem;
  border-radius:4px;
  vertical-align:middle;
  margin-right:.35rem;
  border:1px solid rgba(0,0,0,.1);
}
@media (max-width:700px){
  a.plataforma-card{
    flex-wrap:wrap !important;
    min-height:0;
  }
  .plataforma-logo{
    width:84px;
    flex-basis:84px;
    min-height:84px;
  }
  .plataforma-nombre{
    flex:1 1 calc(100% - 84px);
    min-height:84px;
    font-size:1.05rem;
    padding:.85rem 1rem;
  }
  .plataforma-accion{
    width:100%;
    flex-basis:100%;
    justify-content:flex-end;
    border-top:1px solid #eef2f7;
    padding:.7rem 1rem;
  }
}

/* Banner de perfil (dashboard docente) — estilos locales */
.perfil-banner{
  border-radius:20px;
  background:linear-gradient(120deg,var(--institucional-dark) 0%,var(--institucional) 55%,#1a5fbf 100%);
  color:#fff;
  box-shadow:0 10px 28px rgba(11,61,145,.22);
  overflow:hidden;
  position:relative;
}
.perfil-banner__inner{
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:1.25rem;
  padding:1.35rem 1.5rem;
  position:relative;
  z-index:1;
  min-width:0;
}
.perfil-banner__main{
  display:flex;
  align-items:center;
  gap:1.1rem;
  min-width:0;
  flex:1 1 auto;
}
.perfil-banner__avatar{
  width:88px;
  height:88px;
  border-radius:50%;
  object-fit:cover;
  border:3px solid rgba(255,255,255,.95);
  box-shadow:0 4px 14px rgba(0,0,0,.18);
  flex-shrink:0;
  background:#fff;
}
.perfil-banner__info{min-width:0}
.perfil-banner__nombre{
  font-size:clamp(1.25rem,2.4vw,1.75rem);
  font-weight:800;
  letter-spacing:.02em;
  line-height:1.15;
  margin:0;
  color:#fff;
  word-break:break-word;
}
.perfil-banner__rol{
  display:inline-block;
  background:#e67e22;
  color:#fff;
  font-size:.72rem;
  font-weight:700;
  letter-spacing:.04em;
  padding:.28rem .75rem;
  border-radius:999px;
  margin-bottom:.65rem;
}
.perfil-banner__meta{
  display:flex;
  flex-direction:column;
  gap:.35rem;
  font-size:.9rem;
  opacity:.96;
}
.perfil-banner__meta li{
  display:flex;
  align-items:flex-start;
  gap:.55rem;
  min-width:0;
  line-height:1.35;
}
.perfil-banner__meta i{
  width:1rem;
  margin-top:.15rem;
  flex-shrink:0;
  opacity:.9;
}
.perfil-banner__meta span{
  overflow-wrap:anywhere;
  word-break:break-word;
}
.perfil-banner__decor{
  position:relative;
  width:140px;
  height:100px;
  flex-shrink:0;
  pointer-events:none;
  opacity:.28;
}
.perfil-banner__decor i{
  position:absolute;
  font-size:1.65rem;
  color:#fff;
}
.perfil-banner__decor i:nth-child(1){top:8px;right:18px;font-size:2.1rem}
.perfil-banner__decor i:nth-child(2){bottom:10px;right:55px;font-size:1.7rem}
.perfil-banner__decor i:nth-child(3){top:36px;right:78px;font-size:1.35rem}
.perfil-banner__decor i:nth-child(4){bottom:28px;right:8px;font-size:1.25rem}
@media (max-width:991.98px){
  .perfil-banner__decor{width:110px;height:90px;opacity:.22}
}
@media (max-width:575.98px){
  .perfil-banner__inner{
    flex-direction:column;
    align-items:stretch;
    padding:1.15rem 1.1rem;
  }
  .perfil-banner__main{
    flex-direction:column;
    align-items:center;
    text-align:center;
  }
  .perfil-banner__meta li{justify-content:center}
  .perfil-banner__decor{
    display:none;
  }
  .perfil-banner__avatar{width:76px;height:76px}
}

/* Panel asistencia (formato visual alineado al menú) */
.asist-panel{
  border-radius:20px;
  overflow:hidden;
  background:#fff;
  box-shadow:0 8px 24px rgba(75,44,127,.1);
  border:1px solid rgba(75,44,127,.08);
}
.asist-panel__head{
  display:flex;
  flex-wrap:wrap;
  align-items:flex-start;
  justify-content:space-between;
  gap:1rem;
  padding:1.15rem 1.25rem;
  background:linear-gradient(120deg,var(--sidebar-bg-deep),var(--sidebar-bg) 60%,#6b3fa0);
  color:#fff;
}
.asist-panel__title-wrap{
  display:flex;
  align-items:flex-start;
  gap:.85rem;
  min-width:0;
}
.asist-panel__icon{
  width:42px;height:42px;
  border-radius:14px;
  background:#fff;
  color:var(--sidebar-active);
  display:inline-flex;align-items:center;justify-content:center;
  flex-shrink:0;
  box-shadow:0 4px 12px rgba(0,0,0,.12);
}
.asist-panel__title{
  font-size:clamp(1.1rem,2vw,1.45rem);
  font-weight:800;
  color:#fff;
  margin:0;
  line-height:1.2;
  word-break:break-word;
}
.asist-panel__subtitle{
  font-size:.82rem;
  opacity:.9;
  color:#fff;
}
.asist-panel__chips{
  display:flex;
  flex-wrap:wrap;
  gap:.4rem;
  align-items:center;
}
.asist-chip{
  display:inline-flex;
  align-items:center;
  padding:.28rem .65rem;
  border-radius:999px;
  font-size:.68rem;
  font-weight:700;
  background:rgba(255,255,255,.16);
  color:#fff;
  letter-spacing:.01em;
}
.asist-chip-ok{background:rgba(25,135,84,.95)}
.asist-chip-bad{background:rgba(220,53,69,.95)}
.asist-chip-info{background:rgba(13,202,240,.95);color:#063b46}
.asist-chip-muted{background:rgba(255,255,255,.22)}
.asist-panel__toolbar{
  padding:.85rem 1.25rem;
  background:linear-gradient(180deg,#faf7ff,#fff);
  border-top:1px solid rgba(75,44,127,.06);
}
.asist-panel__filters{
  display:flex;
  flex-wrap:wrap;
  gap:.75rem 1rem;
  align-items:flex-end;
}
.asist-panel__field{
  display:flex;
  flex-direction:column;
  gap:.25rem;
  margin:0;
  min-width:0;
}
.asist-panel__label{
  font-size:.7rem;
  font-weight:700;
  text-transform:uppercase;
  letter-spacing:.04em;
  color:var(--sidebar-bg);
  opacity:.8;
}
.asist-panel__control{
  border-radius:12px !important;
  border-color:rgba(75,44,127,.2) !important;
  min-width:150px;
}
.asist-panel__control:focus{
  border-color:var(--sidebar-bg) !important;
  box-shadow:0 0 0 .2rem rgba(75,44,127,.15) !important;
}
.asist-panel__card{
  background:#fff;
  border-radius:20px;
  padding:1.1rem 1.15rem 1.25rem;
  box-shadow:0 8px 24px rgba(75,44,127,.08);
  border:1px solid rgba(75,44,127,.08);
}
.asist-grilla-wrap{
  border-radius:16px;
  border:1px solid rgba(75,44,127,.1);
  overflow:auto;
}
.asistencia-grilla{
  --bs-table-bg:transparent;
  margin:0;
}
.asistencia-grilla thead th{
  background:linear-gradient(180deg,#f4effb,#ebe3f7);
  color:var(--sidebar-bg-deep);
  font-weight:700;
  font-size:.82rem;
  border-bottom:1px solid rgba(75,44,127,.12);
  padding:.7rem .65rem;
  white-space:nowrap;
  vertical-align:middle;
}
.asistencia-grilla tbody td{
  border-color:rgba(75,44,127,.08);
  padding:.65rem .55rem;
}
.asistencia-grilla tbody tr:hover{
  background:rgba(75,44,127,.035);
}
.asist-grilla-col{min-width:78px}
.asist-grilla-tag{
  font-size:.62rem;
  font-weight:700;
  line-height:1.1;
  margin-top:.2rem;
}
.asist-grilla-tag-edit{color:var(--sidebar-active)}
.asist-grilla-tag-ro{color:#8a7a9e}
.asist-grilla-alumno{color:#2a1a45}
.asist-btn-hist{
  border-radius:999px !important;
  border:1px solid rgba(75,44,127,.25) !important;
  color:var(--sidebar-bg) !important;
  background:#fff !important;
  width:2rem;height:2rem;
  padding:0 !important;
  display:inline-flex !important;
  align-items:center;justify-content:center;
}
.asist-btn-hist:hover{
  background:var(--sidebar-bg) !important;
  color:#fff !important;
  border-color:var(--sidebar-bg) !important;
}
.asist-grilla-legend{
  display:flex;
  flex-wrap:wrap;
  gap:.85rem 1.15rem;
  margin-top:1rem;
  font-size:.82rem;
  color:#5c4d73;
}
.asist-cell{
  display:inline-flex;align-items:center;justify-content:center;
  width:1.7rem;height:1.7rem;border-radius:10px;
  font-size:.75rem;font-weight:800;border:2px solid transparent;line-height:1;
  box-shadow:0 2px 6px rgba(0,0,0,.06);
}
button.asist-cell{padding:0;cursor:pointer;transition:transform .12s ease,box-shadow .12s ease}
button.asist-cell:hover{transform:translateY(-1px);box-shadow:0 4px 10px rgba(0,0,0,.12)}
button.asist-cell:disabled{opacity:.55;cursor:wait;transform:none}
.asist-presente{background:#198754!important;border-color:#146c43!important;color:#fff!important}
.asist-ausente{background:#dc3545!important;border-color:#b02a37!important;color:#fff!important}
.asist-just{background:#0dcaf0!important;border-color:#0aa2c0!important;color:#063b46!important;cursor:help}
.asist-atraso{background:#ffc107!important;border-color:#ffc107!important;color:#212529!important}
.asist-sin_registro{background:#f3eef9!important;border-color:#cbb9e3!important;color:#6b5a82!important}
.asist-ro{cursor:default;box-shadow:none}
.asist-legend{
  display:inline-flex;align-items:center;justify-content:center;
  width:1.2rem;height:1.2rem;border-radius:8px;font-size:.65rem;font-weight:800;
  border:1px solid transparent;vertical-align:middle;margin-right:.3rem;
}
.asist-toast{
  position:fixed;right:1.25rem;bottom:1.25rem;z-index:1080;
  background:#2a1a45;color:#fff;padding:.7rem 1.05rem;border-radius:14px;
  font-size:.9rem;box-shadow:0 8px 24px rgba(42,26,69,.28);
  opacity:0;transform:translateY(8px);transition:opacity .2s,transform .2s;
}
.asist-toast.show{opacity:1;transform:translateY(0)}
.asist-toast.ok{background:#198754}
.asist-toast.err{background:#dc3545}
@media (max-width:575.98px){
  .asist-panel__head{padding:1rem}
  .asist-panel__card{padding:.9rem}
  .asist-panel__chips{width:100%}
}

.text-purple-title{color:var(--sidebar-bg-deep)}
.asist-btn-action{
  border-radius:999px !important;
  border:1px solid rgba(75,44,127,.28) !important;
  color:var(--sidebar-bg) !important;
  background:#fff !important;
  font-weight:600;
}
.asist-btn-action:hover{
  background:var(--sidebar-bg) !important;
  color:#fff !important;
  border-color:var(--sidebar-bg) !important;
}
.asist-btn-action-ok{
  border-color:rgba(25,135,84,.35) !important;
  color:#146c43 !important;
}
.asist-btn-action-ok:hover{
  background:#198754 !important;
  border-color:#198754 !important;
  color:#fff !important;
}

/* CTA píldora teal (ej. Tomar asistencia) */
.btn-pill-cta{
  display:inline-flex;
  align-items:center;
  justify-content:center;
  gap:.45rem;
  border:0 !important;
  border-radius:999px !important;
  background:#14c9a7 !important;
  color:#fff !important;
  font-weight:800 !important;
  font-size:.82rem;
  letter-spacing:.04em;
  text-transform:uppercase;
  text-decoration:none !important;
  padding:.7rem 1.6rem !important;
  box-shadow:0 8px 18px rgba(20,201,167,.35);
  transition:transform .15s ease,box-shadow .15s ease,filter .15s ease;
  white-space:nowrap;
}
.btn-pill-cta:hover,
.btn-pill-cta:focus{
  background:#0fb894 !important;
  color:#fff !important;
  filter:brightness(1.02);
  transform:translateY(-1px);
  box-shadow:0 10px 22px rgba(20,201,167,.42);
}
.btn-pill-cta:active{
  transform:translateY(0);
  box-shadow:0 4px 12px rgba(20,201,167,.3);
}
.btn-pill-cta-sm{
  font-size:.72rem;
  padding:.55rem 1.15rem !important;
  box-shadow:0 5px 12px rgba(20,201,167,.3);
}
.btn-pill-cta-block{
  width:100%;
}
.curso-cta-card{
  background:#fff;
  border-radius:18px;
  padding:1.15rem 1.2rem 1.25rem;
  box-shadow:0 6px 18px rgba(75,44,127,.08);
  border:1px solid rgba(75,44,127,.08);
  height:100%;
  display:flex;
  flex-direction:column;
  gap:.65rem;
}
.curso-cta-card__title{
  font-weight:800;
  color:var(--sidebar-bg-deep);
  margin:0;
  font-size:1.05rem;
}
.curso-cta-card__date{
  color:#6c757d;
  font-size:.9rem;
  margin:0;
}
.curso-cta-card__sep{
  border:0;
  border-top:1px solid #e9ecef;
  margin:.15rem 0 .35rem;
}
.asist-btn-nav{
  border-radius:999px !important;
  width:2rem;height:2rem;
  padding:0 !important;
  display:inline-flex !important;
  align-items:center;justify-content:center;
  border:1px solid rgba(75,44,127,.25) !important;
  color:var(--sidebar-bg) !important;
  background:#fff !important;
}
.asist-btn-nav:hover{
  background:var(--sidebar-bg) !important;
  color:#fff !important;
}
.calif-grid thead th{
  background:linear-gradient(180deg,#f4effb,#ebe3f7);
  color:var(--sidebar-bg-deep);
  font-weight:700;
  border-color:rgba(75,44,127,.12);
}
.calif-grid tbody td{
  border-color:rgba(75,44,127,.1);
  vertical-align:middle;
}
.calif-prom-col{
  background:#f4effb !important;
}
.calif-nota-input{
  border-radius:10px !important;
  border-color:rgba(75,44,127,.2) !important;
  min-width:4.2rem;
  text-align:center;
}
.calif-nota-input:focus{
  border-color:var(--sidebar-bg) !important;
  box-shadow:0 0 0 .2rem rgba(75,44,127,.15) !important;
}
.agenda-celda-mia{
  background:#f7f2ff!important;
}
.agenda-grid thead th{
  background:linear-gradient(180deg,#f4effb,#ebe3f7);
  color:var(--sidebar-bg-deep);
}
.agenda-add-btn{
  border-radius:999px !important;
  border-color:rgba(75,44,127,.3) !important;
  color:var(--sidebar-bg) !important;
}
.agenda-add-btn:hover{
  background:var(--sidebar-active) !important;
  border-color:var(--sidebar-active) !important;
  color:#fff !important;
}

/* ——— Admin alumnos (lista + ficha) ——— */
.alu-page{max-width:100%;min-width:0}
.alu-page__head{
  display:flex;
  align-items:flex-start;
  justify-content:space-between;
  gap:1rem;
  margin-bottom:1.1rem;
  flex-wrap:wrap;
}
.alu-page__title-wrap{display:flex;align-items:flex-start;gap:.85rem}
.alu-page__icon{
  width:42px;height:42px;
  border-radius:12px;
  background:var(--sidebar-active);
  color:#fff;
  display:inline-flex;align-items:center;justify-content:center;
  font-size:1.1rem;
  flex-shrink:0;
}
.alu-page__title{margin:0;font-size:1.35rem;font-weight:800;color:#2b2b33}
.alu-page__sub{margin:0;color:#8a8f99;font-size:.92rem}
.alu-btn-new{
  background:var(--sidebar-active);
  color:#fff;
  border:0;
  border-radius:10px;
  font-weight:700;
}
.alu-btn-new:hover{background:#d86a1c;color:#fff}

.alu-search{padding:0;overflow:hidden;border:1px solid #eceff3}
.alu-search__head{
  width:100%;
  display:flex;align-items:center;justify-content:space-between;
  padding:.85rem 1.15rem;
  background:#fff;
  border:0;
  border-bottom:1px solid #f0f2f5;
  font-size:.95rem;
}
.alu-search__head i{color:#9aa1ab}
.alu-search__form{
  display:flex;
  flex-wrap:wrap;
  align-items:flex-end;
  gap:1rem;
  padding:1rem 1.15rem 1.15rem;
}
.alu-search__form label{display:flex;flex-direction:column;gap:.3rem;min-width:180px;flex:1}
.alu-search__form label span{font-size:.8rem;color:#6c757d;font-weight:600}
.alu-search__check{
  flex:0 0 auto !important;
  min-width:auto !important;
  flex-direction:row !important;
  align-items:center !important;
  gap:.45rem !important;
  padding-bottom:.35rem;
  font-size:.88rem;
  color:#495057;
}
.alu-search__curso{display:none !important}
.alu-search__curso.is-visible{display:flex !important}
.alu-search__btn{
  width:42px;height:42px;padding:0;
  border-radius:50%;
  background:var(--sidebar-bg);
  color:#fff;
  display:inline-flex;align-items:center;justify-content:center;
}
.alu-search__btn:hover{background:var(--sidebar-bg-deep);color:#fff}

.alu-bandeja{margin-top:1.15rem}
.alu-bandeja__head{
  display:flex;align-items:center;justify-content:space-between;
  gap:.75rem;flex-wrap:wrap;
  margin-bottom:.75rem;
}
.alu-bandeja__tools{display:flex;align-items:center;gap:1rem;flex-wrap:wrap}
.alu-bandeja__show,.alu-bandeja__filter{
  display:flex;align-items:center;gap:.45rem;
  font-size:.85rem;color:#6c757d;margin:0;
}
.alu-bandeja__show .form-select,.alu-bandeja__filter .form-control{width:auto;min-width:5rem}

.alu-item{margin-bottom:.85rem}
.alu-card{
  background:#fff;
  border:1px solid #e6eaef;
  border-radius:10px;
  padding:1rem 1.15rem 1rem;
  min-width:0;
  overflow:hidden;
}
.alu-card__name{
  margin:0 0 .35rem;
  font-size:1.02rem;
  font-weight:800;
  letter-spacing:.02em;
  text-transform:uppercase;
  color:var(--institucional);
}
.alu-card__meta{
  display:flex;flex-wrap:wrap;align-items:center;gap:.65rem 1.1rem;
  font-size:.88rem;color:#495057;margin-bottom:.75rem;
}
.alu-pill{
  display:inline-block;
  padding:.18rem .7rem;
  border-radius:999px;
  font-size:.72rem;
  font-weight:800;
  letter-spacing:.03em;
}
.alu-pill-admitido{background:#f6c445;color:#5a3d00}
.alu-pill-matriculado{background:#2e9e57;color:#fff}
.alu-pill-inactivo{background:#cfd4da;color:#495057}

.alu-grid{
  display:grid;
  grid-template-columns:repeat(4,minmax(0,1fr));
  border:1px solid #e6eaef;
  border-radius:10px;
  overflow:hidden;
}
.alu-action-form{margin:0;min-width:0;display:flex}
.alu-action,.alu-dato{
  display:flex;align-items:center;gap:.5rem;
  width:100%;min-width:0;min-height:2.75rem;
  background:#fff;border:0;
  border-right:1px solid #eef2f6;
  border-bottom:1px solid #eef2f6;
  padding:.55rem .8rem;
  color:#5c6370;font-size:.86rem;text-decoration:none;text-align:left;
  cursor:pointer;
}
.alu-action span,.alu-dato span{
  min-width:0;
  overflow:hidden;
  text-overflow:ellipsis;
  white-space:nowrap;
}
.alu-action i,.alu-dato i{width:1rem;text-align:center;color:#8b929c;flex-shrink:0}
.alu-action:hover{background:#faf7ff;color:var(--sidebar-bg)}
.alu-action:hover i{color:var(--sidebar-active)}
.alu-dato{cursor:default}
.alu-dato:hover{background:#fff;color:#5c6370}
.alu-dato:hover i{color:#8b929c}
.alu-dato--wide{grid-column:span 2}
.alu-pill-padre{background:#0b3d91;color:#fff}
.alu-pill-madre{background:#7a3e9d;color:#fff}
.alu-pill-tutor{background:#f6c445;color:#5a3d00}

.ficha-page{max-width:100%;min-width:0}
.ficha-fields{
  display:grid;
  grid-template-columns:repeat(2,minmax(0,1fr));
  border:1px solid #e6eaef;
  border-radius:10px;
  overflow:hidden;
}
.ficha-fields--3{grid-template-columns:repeat(3,minmax(0,1fr))}
.ficha-fields--1{grid-template-columns:minmax(0,1fr)}
.ficha-field{
  min-width:0;
  padding:.8rem .95rem .9rem;
  background:#fff;
  border-right:1px solid #eef2f6;
  border-bottom:1px solid #eef2f6;
}
.ficha-field .form-label{
  display:block;
  font-size:.78rem;
  font-weight:700;
  color:#6c757d;
  margin-bottom:.35rem;
}
.ficha-field .form-control,
.ficha-field .form-select{width:100%;min-width:0}
.ficha-head{
  display:flex;align-items:center;justify-content:space-between;
  gap:1rem;margin-bottom:1rem;flex-wrap:wrap;
}
.ficha-head__profile{display:flex;align-items:center;gap:1rem}
.ficha-avatar{
  width:72px;height:72px;border-radius:50%;
  background:#e9edf2;color:#9aa3ad;
  display:flex;align-items:center;justify-content:center;
  font-size:1.6rem;overflow:hidden;flex-shrink:0;
}
.ficha-avatar img{width:100%;height:100%;object-fit:cover}
.ficha-kicker{font-size:.8rem;color:#8a8f99;font-weight:600}
.ficha-name{margin:.1rem 0 0;font-size:1.25rem;font-weight:800;color:#2b2b33}
.ficha-sub{color:#8a8f99;font-size:.9rem}
.ficha-head__actions{display:flex;gap:.4rem}
.ficha-icon-btn{
  width:36px;height:36px;border-radius:8px;
  border:1px solid #e4e8ee;background:#fff;color:#6c757d;
  display:inline-flex;align-items:center;justify-content:center;
  text-decoration:none;
}
.ficha-icon-btn--save{background:var(--sidebar-bg);border-color:var(--sidebar-bg);color:#fff}
.ficha-icon-btn:hover{color:var(--sidebar-active);border-color:var(--sidebar-active)}
.ficha-icon-btn--save:hover{background:var(--sidebar-bg-deep);color:#fff}

.ficha-tabs{
  display:flex;flex-wrap:nowrap;gap:.4rem;
  margin-bottom:0;
  overflow-x:auto;
}
.ficha-tab{
  border:0;background:#eceff3;color:#5c6370;
  padding:.7rem 1rem;border-radius:10px 10px 0 0;
  font-weight:700;font-size:.88rem;
  white-space:nowrap;
  display:inline-flex;align-items:center;gap:.45rem;
}
.ficha-tab.is-active{
  background:var(--sidebar-active);color:#fff;
}
.ficha-body{
  border:1px solid #eceff3;
  border-radius:0 12px 12px 12px;
  padding:1.15rem;
}
.ficha-pane{display:none}
.ficha-pane.is-active{display:block}
.ficha-layout{display:grid;grid-template-columns:180px 1fr;gap:1.25rem;min-height:280px}
.ficha-side{display:flex;flex-direction:column;gap:.25rem;border-right:1px solid #f0f2f5;padding-right:.75rem}
.ficha-side-item{
  border:0;background:transparent;text-align:left;
  padding:.55rem .75rem;border-radius:8px;
  color:#5c6370;font-weight:600;font-size:.9rem;
}
.ficha-side-item.is-active{background:var(--sidebar-active);color:#fff}
.ficha-sec{display:none}
.ficha-sec.is-active{display:block}

@media (max-width:1100px){
  .alu-grid{grid-template-columns:repeat(3,minmax(0,1fr))}
}
@media (max-width:900px){
  .alu-grid{grid-template-columns:repeat(2,minmax(0,1fr))}
  .ficha-fields,
  .ficha-fields--3{grid-template-columns:minmax(0,1fr)}
  .ficha-layout{grid-template-columns:1fr}
  .ficha-side{flex-direction:row;flex-wrap:wrap;border-right:0;border-bottom:1px solid #f0f2f5;padding:0 0 .75rem}
}
@media (max-width:560px){
  .alu-grid{grid-template-columns:1fr}
  .alu-dato--wide{grid-column:auto}
}

.tipo-horario-tabs{
  display:flex;
  flex-wrap:wrap;
  gap:.5rem;
  align-items:center;
}
.tipo-horario-tab{
  display:inline-flex;
  align-items:center;
  gap:.4rem;
  padding:.45rem .95rem;
  border-radius:999px;
  border:1px solid #d7dee8;
  background:#fff;
  color:#1a1a2e;
  text-decoration:none;
  font-weight:600;
  font-size:.9rem;
}
.tipo-horario-tab:hover{border-color:var(--institucional);color:var(--institucional)}
.tipo-horario-tab.is-active{
  background:var(--institucional);
  border-color:var(--institucional);
  color:#fff;
}
.tipo-horario-count{
  background:rgba(0,0,0,.08);
  border-radius:999px;
  font-size:.72rem;
  min-width:1.35rem;
  text-align:center;
  padding:.05rem .4rem;
  font-weight:700;
}
.tipo-horario-tab.is-active .tipo-horario-count{
  background:rgba(255,255,255,.22);
  color:#fff;
}

.horario-cursos-chips{
  display:flex;
  flex-wrap:wrap;
  gap:.5rem;
}
.horario-curso-chip{
  display:flex;
  flex-direction:column;
  gap:.1rem;
  min-width:8.5rem;
  padding:.55rem .85rem;
  border-radius:12px;
  border:1px solid #d7dee8;
  background:#fff;
  color:#1a1a2e;
  text-decoration:none;
  font-size:.85rem;
}
.horario-curso-chip:hover{border-color:var(--institucional);color:#1a1a2e}
.horario-curso-chip.is-active{
  border-color:var(--institucional);
  box-shadow:0 0 0 2px rgba(11,61,145,.2);
}
.horario-curso-chip.has-horario{border-color:#198754;background:#f4fbf6}
.horario-curso-chip.has-cruce{border-color:#dc3545;background:#fff5f5}
.horario-curso-chip.is-active.has-horario{background:#e8f6ee}
.horario-curso-chip.is-active.has-cruce{background:#fdecec}
.horario-curso-chip__name{font-weight:700}
.horario-curso-chip__tipo{font-size:.72rem;color:#6c757d}
.horario-curso-chip__stat{font-size:.72rem;font-weight:600}
.horario-curso-chip.has-horario .horario-curso-chip__stat{color:#157347}
.horario-curso-chip.has-cruce .horario-curso-chip__stat{color:#b02a37}
.asignacion-curso-chip{max-width:18rem;cursor:default}
.asignacion-curso-chip .horario-curso-chip__stat{font-weight:500;white-space:normal;line-height:1.35}
.horario-grid-cruce{background:#f8d7da!important}
.horario-grid-cruce-tag{font-size:.62rem;font-weight:700;color:#842029;margin-top:.15rem;text-transform:uppercase;letter-spacing:.03em}
.horario-grid-drag{cursor:grab}
.horario-grid-drag.is-dragging{opacity:.45;cursor:grabbing}
.horario-grid-drop.is-drop-over{outline:2px solid var(--institucional);outline-offset:-2px;background:#e8f0fb!important}

.periodo-badge{
  display:inline-flex;align-items:center;
  margin-right:.15rem;
  padding:.28rem .7rem;
  border-radius:999px;
  background:#eef2ff;
  color:#3a1f66;
  font-size:.78rem;font-weight:700;
  text-decoration:none;white-space:nowrap;
}
a.periodo-badge:hover{background:#e0e7ff;color:#2a1450}

