/* =========================================================
   EDUCA ? Tema educativo moderno (override AdminLTE)
   ========================================================= */

:root {
  --edu-primary: #0b6e99;
  --edu-primary-dark: #084d6e;
  --edu-primary-soft: #e6f4fa;
  --edu-accent: #e89a0c;
  --edu-accent-dark: #c47f06;
  --edu-success: #2a9d8f;
  --edu-danger: #e63946;
  --edu-warning: #f4a261;
  --edu-info: #4dabce;
  --edu-ink: #1a2b3c;
  --edu-muted: #5c6b7a;
  --edu-surface: #ffffff;
  --edu-bg: #eef5f8;
  --edu-bg-soft: #f7fbfd;
  --edu-sidebar: #0a3d5c;
  --edu-sidebar-2: #0c5278;
  --edu-border: rgba(11, 110, 153, 0.12);
  --edu-shadow: 0 10px 30px rgba(10, 61, 92, 0.08);
  --edu-shadow-sm: 0 4px 14px rgba(10, 61, 92, 0.06);
  --edu-radius: 14px;
  --edu-radius-sm: 10px;
  --edu-font: "Nunito", "Segoe UI", sans-serif;
  --edu-display: "Outfit", "Nunito", sans-serif;
  --primary: #0b6e99;
  --success: #2a9d8f;
  --info: #4dabce;
  --warning: #e89a0c;
  --danger: #e63946;
  --dark: #0a3d5c;
}

html, body {
  font-family: var(--edu-font);
  color: var(--edu-ink);
  background: var(--edu-bg);
}

body.light-mode {
  background:
    radial-gradient(1200px 500px at 10% -10%, rgba(11, 110, 153, 0.12), transparent 55%),
    radial-gradient(900px 400px at 100% 0%, rgba(232, 154, 12, 0.10), transparent 50%),
    linear-gradient(180deg, #f4fafc 0%, var(--edu-bg) 40%, #e8f1f5 100%);
}

h1, h2, h3, h4, h5, .brand-text, .timeline-header a {
  font-family: var(--edu-display);
  letter-spacing: -0.02em;
}

/* ---------- Sidebar ---------- */
.main-sidebar {
  background: linear-gradient(185deg, var(--edu-sidebar) 0%, var(--edu-sidebar-2) 55%, #0b6e99 100%) !important;
  box-shadow: 4px 0 24px rgba(10, 61, 92, 0.18);
  border-right: 0 !important;
}

.main-sidebar .brand-link {
  display: flex;
  align-items: center;
  gap: 0.55rem;
  background: rgba(255, 255, 255, 0.06) !important;
  border-bottom: 1px solid rgba(255, 255, 255, 0.1) !important;
  padding: 0.9rem 0.85rem !important;
  transition: background 0.25s ease, transform 0.25s ease;
}

.main-sidebar .brand-link:hover {
  background: rgba(255, 255, 255, 0.12) !important;
}

.main-sidebar .brand-link .brand-image {
  opacity: 1 !important;
  box-shadow: 0 4px 12px rgba(0, 0, 0, 0.2);
  background: #fff;
  object-fit: cover;
}

.main-sidebar .brand-text {
  font-family: var(--edu-display);
  font-weight: 700 !important;
  font-size: 1.05rem !important;
  letter-spacing: 0.04em;
  color: #fff !important;
  line-height: 1.15;
}

.main-sidebar .brand-link .brand-tagline {
  display: block;
  font-family: var(--edu-font);
  font-size: 0.68rem;
  font-weight: 600;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  color: rgba(255, 255, 255, 0.65);
  margin-top: 2px;
}

.main-sidebar .user-panel {
  border-bottom: 1px solid rgba(255, 255, 255, 0.12) !important;
  padding-bottom: 0.9rem !important;
}

.main-sidebar .user-panel .info a {
  font-weight: 700;
  font-size: 0.85rem;
}

.main-sidebar .nav-sidebar > .nav-item > .nav-link {
  border-radius: 10px;
  margin: 2px 0.45rem;
  color: rgba(255, 255, 255, 0.88) !important;
  transition: background 0.2s ease, transform 0.2s ease, color 0.2s ease;
}

.main-sidebar .nav-sidebar > .nav-item > .nav-link:hover {
  background: rgba(255, 255, 255, 0.12) !important;
  color: #fff !important;
  transform: translateX(2px);
}

.main-sidebar .nav-sidebar > .nav-item > .nav-link.active,
.main-sidebar .nav-sidebar > .nav-item > .nav-link.bg-danger,
.main-sidebar .nav-link.bg-danger {
  background: linear-gradient(90deg, var(--edu-accent), #f0b429) !important;
  color: #1a2b3c !important;
  font-weight: 800;
  box-shadow: 0 6px 16px rgba(232, 154, 12, 0.35);
}

.main-sidebar .nav-sidebar .nav-link.bg-danger p,
.main-sidebar .nav-sidebar .nav-link.bg-danger i {
  color: #1a2b3c !important;
}

.main-sidebar .nav-icon {
  color: rgba(255, 255, 255, 0.85) !important;
}

/* ===== Men?s con submen?s (estilo universidad) ===== */
.main-sidebar .nav-sidebar > .nav-item.has-treeview {
  margin: 0.2rem 0;
}

.main-sidebar .nav-sidebar > .nav-item.has-treeview > .nav-link,
.main-sidebar .nav-sidebar > .nav-item.has-treeview > .nav-link.bg-gray {
  position: relative;
  border-radius: 12px !important;
  margin: 2px 0.5rem !important;
  padding: 0.62rem 0.75rem !important;
  background: rgba(255, 255, 255, 0.07) !important;
  border: 1px solid rgba(255, 255, 255, 0.1) !important;
  color: #fff !important;
  font-weight: 700;
  letter-spacing: 0.02em;
  box-shadow: none !important;
}

.main-sidebar .nav-sidebar > .nav-item.has-treeview > .nav-link:hover,
.main-sidebar .nav-sidebar > .nav-item.has-treeview > .nav-link.bg-gray:hover {
  background: rgba(255, 255, 255, 0.14) !important;
  border-color: rgba(255, 255, 255, 0.2) !important;
  color: #fff !important;
  transform: translateX(2px);
}

.main-sidebar .nav-sidebar > .nav-item.has-treeview.menu-open > .nav-link,
.main-sidebar .nav-sidebar > .nav-item.has-treeview.menu-open > .nav-link.bg-gray {
  background: linear-gradient(135deg, rgba(232, 154, 12, 0.22) 0%, rgba(255, 255, 255, 0.1) 100%) !important;
  border-color: rgba(232, 154, 12, 0.45) !important;
  color: #fff !important;
  box-shadow: 0 4px 14px rgba(10, 61, 92, 0.2) !important;
}

.main-sidebar .nav-sidebar > .nav-item.has-treeview > .nav-link .nav-icon,
.main-sidebar .nav-sidebar > .nav-item.has-treeview > .nav-link.bg-gray .nav-icon {
  width: 1.55rem;
  height: 1.55rem;
  margin-right: 0.45rem !important;
  border-radius: 8px;
  display: inline-flex !important;
  align-items: center;
  justify-content: center;
  background: rgba(255, 255, 255, 0.12);
  color: #fcd34d !important;
  font-size: 0.85rem !important;
}

.main-sidebar .nav-sidebar > .nav-item.has-treeview > .nav-link p,
.main-sidebar .nav-sidebar > .nav-item.has-treeview > .nav-link.bg-gray p {
  font-family: var(--edu-display, Outfit, Nunito, sans-serif);
  font-size: 0.78rem !important;
  font-weight: 800 !important;
  letter-spacing: 0.04em;
  text-transform: uppercase;
  color: #fff !important;
}

.main-sidebar .nav-sidebar .nav-link .right,
.main-sidebar .nav-sidebar .nav-link .fa-angle-left,
.main-sidebar .nav-sidebar .nav-link .fa-angle-double-left {
  transition: transform 0.22s ease;
  color: rgba(255, 255, 255, 0.7) !important;
  font-size: 0.78rem !important;
}

.main-sidebar .nav-item.menu-open > .nav-link .right,
.main-sidebar .nav-item.menu-open > .nav-link .fa-angle-left,
.main-sidebar .nav-item.menu-open > .nav-link .fa-angle-double-left {
  transform: rotate(-90deg);
  color: #fcd34d !important;
}

/* Panel de submen?s */
.main-sidebar .nav-treeview {
  position: relative;
  margin: 0.25rem 0.55rem 0.55rem 0.7rem !important;
  padding: 0.35rem 0.2rem 0.4rem 0.55rem !important;
  border-radius: 12px;
  background: rgba(0, 0, 0, 0.18);
  border: 1px solid rgba(255, 255, 255, 0.08);
  border-left: 3px solid rgba(232, 154, 12, 0.65);
  box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.04);
}

.main-sidebar .nav-treeview > .nav-item {
  margin: 0;
}

.main-sidebar .nav-treeview > .nav-item > .nav-link {
  display: flex !important;
  align-items: center;
  gap: 0.35rem;
  color: rgba(255, 255, 255, 0.82) !important;
  border-radius: 9px !important;
  margin: 2px 0.25rem !important;
  padding: 0.48rem 0.65rem !important;
  background: transparent !important;
  border: 1px solid transparent;
  font-weight: 600;
  transition: background 0.18s ease, border-color 0.18s ease, transform 0.18s ease, color 0.18s ease;
}

.main-sidebar .nav-treeview > .nav-item > .nav-link:hover {
  background: rgba(255, 255, 255, 0.1) !important;
  border-color: rgba(255, 255, 255, 0.12);
  color: #fff !important;
  transform: translateX(3px);
}

.main-sidebar .nav-treeview > .nav-item > .nav-link.active {
  background: rgba(255, 255, 255, 0.14) !important;
  border-color: rgba(125, 211, 252, 0.35);
  color: #fff !important;
  font-weight: 800;
}

.main-sidebar .nav-treeview > .nav-item > .nav-link .nav-icon,
.main-sidebar .nav-treeview > .nav-item > .nav-link .fa-circle {
  width: 1.15rem !important;
  margin-right: 0.4rem !important;
  font-size: 0.55rem !important;
  text-align: center;
  opacity: 0.9;
}

.main-sidebar .nav-treeview > .nav-item > .nav-link p {
  font-size: 0.82rem !important;
  font-weight: 650 !important;
  letter-spacing: 0.01em;
  text-transform: none !important;
  color: inherit !important;
  margin: 0 !important;
}

/* Submen? de segundo nivel (ej. Matriculas) */
.main-sidebar .nav-treeview .nav-item.has-treeview > .nav-link,
.main-sidebar .nav-treeview .nav-item.has-treeview > .nav-link.bg-gray {
  background: rgba(255, 255, 255, 0.06) !important;
  border: 1px solid rgba(255, 255, 255, 0.08) !important;
  border-radius: 9px !important;
  margin: 4px 0.25rem !important;
  color: #fff !important;
}

.main-sidebar .nav-treeview .nav-item.has-treeview.menu-open > .nav-link,
.main-sidebar .nav-treeview .nav-item.has-treeview.menu-open > .nav-link.bg-gray {
  background: rgba(232, 154, 12, 0.16) !important;
  border-color: rgba(232, 154, 12, 0.35) !important;
}

.main-sidebar .nav-treeview .nav-treeview {
  margin: 0.2rem 0.2rem 0.45rem 0.55rem !important;
  padding: 0.25rem 0.15rem 0.3rem 0.4rem !important;
  border-left-color: rgba(125, 211, 252, 0.55);
  background: rgba(0, 0, 0, 0.14);
}

.main-sidebar .nav-treeview .nav-treeview > .nav-item > .nav-link {
  padding: 0.42rem 0.55rem !important;
  font-size: 0.8rem;
}

.main-sidebar .nav-treeview .nav-treeview > .nav-item > .nav-link p {
  font-size: 0.78rem !important;
}

/* Separadores de secci?n */
.main-sidebar .nav-header {
  color: rgba(255, 255, 255, 0.42) !important;
  font-size: 0.62rem !important;
  font-weight: 800 !important;
  letter-spacing: 0.12em;
  text-transform: uppercase;
  padding: 0.85rem 1rem 0.35rem !important;
  margin-top: 0.25rem;
  border-top: 1px solid rgba(255, 255, 255, 0.08);
  min-height: 0.5rem;
}

.main-sidebar .nav-header:empty {
  padding: 0.55rem 1rem 0.15rem !important;
  border-top: 1px solid rgba(255, 255, 255, 0.08);
  margin: 0.35rem 0.75rem 0.15rem;
}

/* Neutraliza grises AdminLTE en sidebar */
.main-sidebar .nav-link.bg-gray {
  background: rgba(255, 255, 255, 0.07) !important;
  color: #fff !important;
}

.main-sidebar .nav-treeview .text-yellow,
.main-sidebar .nav-treeview .text-info,
.main-sidebar .nav-treeview .text-success,
.main-sidebar .nav-treeview .text-danger {
  opacity: 1;
}

/* Cursos asignados (sidebar docente): estilo universitario LMS */
.main-sidebar .nav-header.edu-side-mat-head {
  display: flex !important;
  align-items: center;
  justify-content: space-between;
  gap: 0.5rem;
  color: rgba(255, 255, 255, 0.5) !important;
  font-size: 0.66rem !important;
  font-weight: 700 !important;
  letter-spacing: 0.1em;
  text-transform: uppercase;
  padding: 1rem 1rem 0.45rem !important;
  margin: 0.15rem 0 0;
  border-top: 1px solid rgba(255, 255, 255, 0.1);
}

.main-sidebar .edu-side-mat-head-label {
  color: rgba(255, 255, 255, 0.52);
}

.main-sidebar .edu-side-mat-head-year {
  font-variant-numeric: tabular-nums;
  color: rgba(255, 255, 255, 0.78);
  background: rgba(255, 255, 255, 0.1);
  border: 1px solid rgba(255, 255, 255, 0.12);
  border-radius: 999px;
  padding: 0.12rem 0.45rem;
  letter-spacing: 0.04em;
  font-size: 0.62rem;
  font-weight: 800;
}

.main-sidebar .edu-side-mat-item {
  margin: 0;
}

.main-sidebar .edu-side-mat-item > .edu-side-mat-link {
  position: relative;
  display: flex !important;
  align-items: center !important;
  gap: 0.65rem !important;
  margin: 0.28rem 0.55rem !important;
  padding: 0.55rem 0.6rem 0.55rem 0.55rem !important;
  min-height: 0 !important;
  border-radius: 12px !important;
  background: rgba(255, 255, 255, 0.06) !important;
  border: 1px solid rgba(255, 255, 255, 0.08) !important;
  box-shadow: none !important;
  overflow: hidden;
  transition: background 0.2s ease, border-color 0.2s ease, transform 0.2s ease, box-shadow 0.2s ease;
}

.main-sidebar .edu-side-mat-item > .edu-side-mat-link::before {
  content: "";
  position: absolute;
  left: 0;
  top: 0;
  bottom: 0;
  width: 3px;
  background: rgba(255, 255, 255, 0.28);
  border-radius: 12px 0 0 12px;
}

.main-sidebar .edu-side-mat-link--t1::before { background: #7dd3fc; }
.main-sidebar .edu-side-mat-link--t2::before { background: #86efac; }
.main-sidebar .edu-side-mat-link--t3::before { background: #fcd34d; }
.main-sidebar .edu-side-mat-link--t4::before { background: #c4b5fd; }

.main-sidebar .edu-side-mat-item > .edu-side-mat-link:hover {
  background: rgba(255, 255, 255, 0.12) !important;
  border-color: rgba(255, 255, 255, 0.16) !important;
  transform: translateX(2px);
  box-shadow: 0 8px 18px rgba(0, 0, 0, 0.16);
}

.main-sidebar .edu-side-mat-avatar {
  flex: 0 0 34px;
  width: 34px;
  height: 34px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  border-radius: 10px;
  font-size: 0.86rem;
  font-weight: 800;
  letter-spacing: 0.02em;
  color: #0a3d5c;
  background: #e8f4fa;
  border: 1px solid rgba(255, 255, 255, 0.35);
  box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.55);
}

.main-sidebar .edu-side-mat-link--t1 .edu-side-mat-avatar { background: #e0f2fe; color: #075985; }
.main-sidebar .edu-side-mat-link--t2 .edu-side-mat-avatar { background: #dcfce7; color: #166534; }
.main-sidebar .edu-side-mat-link--t3 .edu-side-mat-avatar { background: #fef3c7; color: #92400e; }
.main-sidebar .edu-side-mat-link--t4 .edu-side-mat-avatar { background: #ede9fe; color: #5b21b6; }

.main-sidebar .edu-side-mat-copy {
  display: flex !important;
  flex: 1 1 auto;
  flex-direction: column;
  align-items: flex-start;
  justify-content: center;
  gap: 0.28rem;
  min-width: 0;
  margin: 0 !important;
  padding: 0 !important;
  line-height: 1.2 !important;
  white-space: normal !important;
  width: auto !important;
}

.main-sidebar .edu-side-mat-name {
  display: block;
  max-width: 100%;
  font-size: 0.82rem;
  font-weight: 700;
  color: #fff;
  line-height: 1.25;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.main-sidebar .edu-side-mat-meta {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 0.28rem;
  max-width: 100%;
}

.main-sidebar .edu-side-chip {
  display: inline-flex;
  align-items: center;
  max-width: 100%;
  padding: 0.12rem 0.45rem;
  border-radius: 999px;
  font-size: 0.64rem;
  font-weight: 700;
  letter-spacing: 0.02em;
  line-height: 1.2;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}

.main-sidebar .edu-side-chip--aula {
  color: #0b3d57;
  background: rgba(255, 255, 255, 0.92);
  border: 1px solid rgba(255, 255, 255, 0.95);
}

.main-sidebar .edu-side-chip--nivel {
  color: rgba(255, 255, 255, 0.88);
  background: rgba(255, 255, 255, 0.12);
  border: 1px solid rgba(255, 255, 255, 0.14);
}

.main-sidebar .edu-side-mat-go {
  flex: 0 0 auto;
  margin-left: auto;
  font-size: 0.68rem !important;
  color: rgba(255, 255, 255, 0.35) !important;
  transition: color 0.2s ease, transform 0.2s ease;
}

.main-sidebar .edu-side-mat-item > .edu-side-mat-link:hover .edu-side-mat-go {
  color: rgba(255, 255, 255, 0.85) !important;
  transform: translateX(2px);
}

/* Evita que AdminLTE fuerce p/i en estos links */
.main-sidebar .edu-side-mat-link .nav-icon {
  display: none !important;
}

/* ---------- Navbar ---------- */
.main-header.navbar {
  background: rgba(255, 255, 255, 0.92) !important;
  backdrop-filter: blur(12px);
  border-bottom: 1px solid var(--edu-border) !important;
  box-shadow: var(--edu-shadow-sm);
  min-height: 56px;
}

.main-header.navbar .nav-link {
  color: var(--edu-ink) !important;
  font-weight: 700;
  border-radius: 10px;
  transition: background 0.2s ease, color 0.2s ease;
}

.main-header.navbar .nav-link:hover {
  background: var(--edu-primary-soft) !important;
  color: var(--edu-primary) !important;
}

.main-header .navbar-badge {
  font-size: 0.65rem;
  font-weight: 800;
}

.navbar-edu-brand {
  display: none;
  align-items: center;
  gap: 0.5rem;
  margin-left: 0.35rem;
  font-family: var(--edu-display);
  font-weight: 800;
  color: var(--edu-primary-dark);
  letter-spacing: 0.02em;
}

.navbar-edu-brand small {
  display: block;
  font-family: var(--edu-font);
  font-size: 0.65rem;
  font-weight: 700;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  color: var(--edu-muted);
}

@media (min-width: 768px) {
  .navbar-edu-brand {
    display: inline-flex;
  }
}

.user-menu .user-image {
  border: 2px solid var(--edu-primary-soft);
}

.dropdown-menu {
  border: 1px solid var(--edu-border);
  border-radius: var(--edu-radius-sm);
  box-shadow: var(--edu-shadow);
  overflow: hidden;
}

/* AdminLTE fija height:175px; con 2 small (tipo + grado) el texto se corta */
.navbar-nav > .user-menu > .dropdown-menu {
  width: min(300px, calc(100vw - 1.5rem));
}

.navbar-nav > .user-menu > .dropdown-menu > li.user-header,
.user-menu .dropdown-menu .user-header {
  height: auto !important;
  min-height: 0;
  padding: 1.1rem 1rem 1.25rem !important;
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: flex-start;
  background: linear-gradient(135deg, var(--edu-primary-dark), var(--edu-primary)) !important;
  color: #fff;
}

.navbar-nav > .user-menu > .dropdown-menu > li.user-header > img,
.user-menu .dropdown-menu .user-header > img {
  height: 72px !important;
  width: 72px !important;
  margin: 0 auto;
  flex-shrink: 0;
}

.navbar-nav > .user-menu > .dropdown-menu > li.user-header > p,
.user-menu .dropdown-menu .user-header > p {
  width: 100%;
  max-width: 100%;
  margin: 0.75rem 0 0 !important;
  padding: 0 0.25rem;
  font-size: 0.98rem !important;
  font-weight: 700;
  line-height: 1.3;
  color: #fff;
  word-break: break-word;
  overflow-wrap: anywhere;
  white-space: normal;
}

.navbar-nav > .user-menu > .dropdown-menu > li.user-header > p > small,
.user-menu .dropdown-menu .user-header > p > small {
  display: block;
  margin-top: 0.28rem;
  font-size: 0.75rem !important;
  font-weight: 600;
  line-height: 1.35;
  opacity: 0.92;
  white-space: normal;
}

.user-footer .btn-danger {
  background: var(--edu-danger) !important;
  border: 0;
  border-radius: 8px;
  font-weight: 700;
}

/* ---------- Content / cards ---------- */
.content-wrapper,
.content-wrapper-2 {
  background: transparent !important;
}

#contenido.content-wrapper {
  padding-top: 0.35rem;
}

.card {
  border: 1px solid var(--edu-border) !important;
  border-radius: var(--edu-radius) !important;
  box-shadow: var(--edu-shadow-sm) !important;
  background: var(--edu-surface);
  overflow: hidden;
}

.card-header {
  background: linear-gradient(180deg, #fff 0%, var(--edu-bg-soft) 100%) !important;
  border-bottom: 1px solid var(--edu-border) !important;
  font-family: var(--edu-display);
  font-weight: 700;
}

.card-primary:not(.card-outline) > .card-header,
.bg-primary {
  background: linear-gradient(135deg, var(--edu-primary-dark), var(--edu-primary)) !important;
  border: 0 !important;
}

.bg-success { background-color: var(--edu-success) !important; }
.bg-info { background-color: var(--edu-info) !important; }
.bg-warning { background-color: var(--edu-accent) !important; color: #1a2b3c !important; }
.bg-danger { background-color: var(--edu-danger) !important; }
.bg-dark { background: linear-gradient(135deg, var(--edu-sidebar), var(--edu-primary-dark)) !important; }

.btn-primary {
  background: linear-gradient(135deg, var(--edu-primary), var(--edu-primary-dark)) !important;
  border: 0 !important;
  border-radius: 10px !important;
  font-weight: 800;
  letter-spacing: 0.02em;
  box-shadow: 0 8px 18px rgba(11, 110, 153, 0.28);
  transition: transform 0.2s ease, box-shadow 0.2s ease;
}

.btn-primary:hover {
  transform: translateY(-1px);
  box-shadow: 0 10px 22px rgba(11, 110, 153, 0.35);
}

.btn-success {
  background: var(--edu-success) !important;
  border: 0 !important;
  border-radius: 10px !important;
  font-weight: 700;
}

.btn-danger {
  border-radius: 10px !important;
  font-weight: 700;
}

/* Estilo flat AdminLTE (como btn_alumno_agregar en ventapos) */
.btn.btn-flat,
.btn-flat {
  border-radius: 0 !important;
  border-width: 1px !important;
  box-shadow: none !important;
  transform: none !important;
}

.btn-primary.btn-flat,
.btn-primary.btn-flat:hover,
.btn-primary.btn-flat:focus {
  background: var(--edu-primary) !important;
  border: 1px solid var(--edu-primary-dark) !important;
  box-shadow: none !important;
  transform: none !important;
}

.btn-success.btn-flat,
.btn-success.btn-flat:hover {
  background: var(--edu-success) !important;
  border: 1px solid #238b7e !important;
  box-shadow: none !important;
  transform: none !important;
}

.btn-warning.btn-flat,
.btn-warning.btn-flat:hover {
  background: var(--edu-accent) !important;
  border: 1px solid var(--edu-accent-dark) !important;
  color: #1a2b3c !important;
  box-shadow: none !important;
  transform: none !important;
}

.btn-danger.btn-flat,
.btn-danger.btn-flat:hover {
  background: var(--edu-danger) !important;
  border: 1px solid #c62828 !important;
  box-shadow: none !important;
  transform: none !important;
}

.btn-info.btn-flat,
.btn-info.btn-flat:hover {
  background: var(--edu-info) !important;
  border: 1px solid #3a96b5 !important;
  box-shadow: none !important;
  transform: none !important;
}

.btn-default.btn-flat,
.btn-secondary.btn-flat,
.btn-default.btn-flat:hover,
.btn-secondary.btn-flat:hover {
  box-shadow: none !important;
  transform: none !important;
  border-radius: 0 !important;
}

/*
  Botones de acci?n (toda la app): icono centrado + separaci?n icono?texto.
  Aplica a #contenido, modales y botones sueltos (span/a/button.btn).
*/
#contenido .btn:not(.btn-file):not(.edu-file-browse):not(.dropdown-toggle),
.modal-body .btn:not(.btn-file):not(.edu-file-browse):not(.dropdown-toggle),
#contenido span.btn:not(.btn-file):not(.edu-file-browse),
.modal-body span.btn:not(.btn-file):not(.edu-file-browse),
#contenido a.btn:not(.btn-file):not(.edu-file-browse),
.modal-body a.btn:not(.btn-file):not(.edu-file-browse),
#contenido button.btn:not(.btn-file):not(.edu-file-browse),
.modal-body button.btn:not(.btn-file):not(.edu-file-browse) {
  display: inline-flex !important;
  align-items: center !important;
  justify-content: center !important;
  gap: 0.4rem;
  line-height: 1 !important;
  box-sizing: border-box !important;
  vertical-align: middle;
}

#contenido .btn > i,
#contenido .btn > .fa,
#contenido .btn > .fas,
#contenido .btn > .far,
#contenido .btn > .fab,
#contenido .btn > .glyphicon,
#contenido span.btn > i,
#contenido a.btn > i,
#contenido button.btn > i,
.modal-body .btn > i,
.modal-body .btn > .fa,
.modal-body .btn > .fas,
.modal-body .btn > .far,
.modal-body .btn > .fab,
.modal-body span.btn > i,
.modal-body a.btn > i,
.modal-body button.btn > i {
  display: inline-flex !important;
  align-items: center !important;
  justify-content: center !important;
  flex: 0 0 auto;
  margin: 0 !important;
  padding: 0 !important;
  line-height: 1 !important;
  width: auto !important;
  height: auto !important;
  position: static !important;
  top: auto !important;
  transform: none !important;
  vertical-align: middle !important;
}

#contenido .btn > i::before,
#contenido .btn > .fas::before,
#contenido .btn > .far::before,
#contenido .btn > .fa::before,
#contenido span.btn > i::before,
.modal-body .btn > i::before,
.modal-body .btn > .fas::before,
.modal-body .btn > .far::before,
.modal-body .btn > .fa::before {
  line-height: 1 !important;
  vertical-align: middle !important;
}

#contenido .btn > span,
#contenido span.btn > span,
#contenido a.btn > span,
.modal-body .btn > span,
.modal-body span.btn > span,
.modal-body a.btn > span {
  line-height: 1.15 !important;
  margin: 0 !important;
}

.form-control,
.form-control-sm,
.select2-container--default .select2-selection--single,
select.form-control,
textarea.form-control {
  border-radius: 10px !important;
  border-color: rgba(11, 110, 153, 0.22) !important;
  transition: border-color 0.2s ease, box-shadow 0.2s ease;
}

.form-control:not(textarea),
.form-control-sm:not(textarea),
select.form-control {
  min-height: 42px;
  height: 42px;
}

.form-control-sm:not(textarea),
select.form-control-sm {
  min-height: 36px;
  height: 36px;
}

textarea.form-control,
textarea.form-control-sm,
#contenido textarea.form-control,
#contenido textarea.form-control-sm,
.modal-body textarea.form-control,
.modal-body textarea.form-control-sm,
.modal-body .edu-form-body textarea {
  height: auto !important;
  min-height: 96px !important;
  padding: 0.65rem 0.8rem !important;
  line-height: 1.45 !important;
  resize: vertical;
  border-radius: 10px !important;
  border-color: rgba(11, 110, 153, 0.22) !important;
  background: #fff !important;
  color: var(--edu-ink) !important;
  font-family: var(--edu-font) !important;
  font-weight: 600;
}

.modal-body .edu-form-body textarea.form-control:focus,
#contenido .edu-form-body textarea.form-control:focus {
  border-color: var(--edu-primary) !important;
  box-shadow: 0 0 0 0.18rem rgba(11, 110, 153, 0.18) !important;
}

.form-control:focus,
.form-control-sm:focus {
  border-color: var(--edu-primary) !important;
  box-shadow: 0 0 0 0.18rem rgba(11, 110, 153, 0.18) !important;
}

/* =========================================================
   File inputs globales: alineados y fluidos al espacio padre
   ========================================================= */

input[type="file"],
input.edu-file-input {
  display: block !important;
  width: 100% !important;
  max-width: 100% !important;
  box-sizing: border-box !important;
  position: relative;
  z-index: 1;
  margin: 0 0 0.65rem !important;
  padding: 0.4rem 0.65rem !important;
  min-height: 38px !important;
  height: auto !important;
  border: 1px solid rgba(11, 110, 153, 0.22) !important;
  border-radius: 10px !important;
  background: #fff !important;
  color: var(--edu-ink);
  line-height: 1.35;
}

/* Widget bootstrap-fileinput: ocupa todo el ancho disponible */
.file-input,
div.file-input,
#contenido .file-input,
.modal-body .file-input {
  display: block !important;
  width: 100% !important;
  max-width: 100% !important;
  min-width: 0 !important;
  clear: both !important;
  position: relative !important;
  z-index: 1;
  margin: 0 0 0.65rem !important;
  float: none !important;
  box-sizing: border-box !important;
}

.file-input .input-group {
  display: flex !important;
  width: 100% !important;
  max-width: 100% !important;
  min-width: 0 !important;
  box-sizing: border-box !important;
}

/* Sin caption: el bot?n ocupa todo el ancho */
.file-input:not(.file-input-new) .btn-file,
.file-input .kv-fileinput-caption + .input-group-btn .btn-file {
  max-width: 100%;
}

.file-input .btn-file,
.file-input .edu-file-browse {
  position: relative;
  z-index: 1;
  width: 100% !important;
  max-width: 100% !important;
  min-width: 0 !important;
  box-sizing: border-box !important;
}

/* Con caption visible: el bot?n no debe forzar 100% del grupo */
.file-input .kv-fileinput-caption {
  flex: 1 1 auto;
  min-width: 0 !important;
  max-width: 100% !important;
}

.file-input .input-group:has(.kv-fileinput-caption) .input-group-btn,
.file-input .input-group:has(.kv-fileinput-caption) .btn-file {
  width: auto !important;
  flex: 0 0 auto;
}

.btn-file,
.edu-file-browse,
#contenido .btn-file,
#contenido .edu-file-browse,
.modal-body .btn-file,
.modal-body .edu-file-browse {
  position: relative !important;
  overflow: hidden !important;
  display: flex !important;
  align-items: center !important;
  justify-content: center !important;
  width: 100% !important;
  max-width: 100% !important;
  min-width: 0 !important;
  min-height: 38px !important;
  height: 38px !important;
  margin: 0 !important;
  padding: 0.35rem 0.75rem !important;
  border-radius: 10px !important;
  white-space: nowrap !important;
  text-overflow: ellipsis;
  box-sizing: border-box !important;
  font-size: 0.875rem !important;
  font-weight: 700 !important;
}

.btn-file input[type="file"],
.file-input input[type="file"] {
  position: absolute !important;
  top: 0 !important;
  right: 0 !important;
  left: 0 !important;
  bottom: 0 !important;
  margin: 0 !important;
  padding: 0 !important;
  min-width: 100% !important;
  min-height: 100% !important;
  width: 100% !important;
  height: 100% !important;
  border: 0 !important;
  background: transparent !important;
  opacity: 0 !important;
  cursor: pointer !important;
  z-index: 3 !important;
  font-size: 100px; /* agranda hit-area en algunos browsers */
}

.file-preview,
.file-preview-frame,
.file-drop-zone {
  float: none !important;
  display: block !important;
  width: 100% !important;
  max-width: 100% !important;
  margin: 0.5rem 0 0.65rem !important;
  position: relative;
  z-index: 1;
  clear: both;
}

form[enctype="multipart/form-data"],
form[enctype*="multipart"],
#formularioarchivo {
  display: block;
  width: 100%;
  max-width: 100%;
  clear: both;
  position: relative;
  z-index: 1;
  margin: 0.25rem 0 0.65rem;
  overflow: visible;
}

.form-group {
  clear: both;
  position: relative;
  z-index: 1;
  margin-bottom: 0.95rem;
}

.form-group input[type="file"],
.form-group .file-input,
.form-group .btn-file {
  margin-bottom: 0.35rem;
  width: 100% !important;
}

/* Columnas con file: se adaptan y alinean con campos vecinos */
#contenido [class*="col-"]:has(> input[type="file"]),
#contenido [class*="col-"]:has(> .file-input),
#contenido [class*="col-"]:has(.btn-file),
#contenido [class*="col-"]:has(.edu-file-input),
.modal-body [class*="col-"]:has(> input[type="file"]),
.modal-body [class*="col-"]:has(> .file-input),
.modal-body [class*="col-"]:has(.btn-file) {
  min-width: 0 !important;
  max-width: 100%;
  box-sizing: border-box;
}

/* Si la columna del file no tiene label, baja al nivel del input */
#contenido [class*="col-"]:has(> .file-input):not(:has(> label)):not(:has(label)),
#contenido [class*="col-"]:has(> input[type="file"]):not(:has(> label)):not(:has(label)),
.modal-body [class*="col-"]:has(> .file-input):not(:has(> label)):not(:has(label)),
.modal-body [class*="col-"]:has(> input[type="file"]):not(:has(> label)):not(:has(label)) {
  padding-top: calc(1.1rem + 0.35rem) !important;
  display: flex !important;
  align-items: flex-end !important;
}

#contenido [class*="col-"]:has(> label):has(.file-input),
#contenido [class*="col-"]:has(> label):has(input[type="file"]),
.modal-body [class*="col-"]:has(> label):has(.file-input),
.modal-body [class*="col-"]:has(> label):has(input[type="file"]) {
  padding-top: 0 !important;
  display: block !important;
}

/* Filas horizontales con file en columna: alinear por abajo */
#contenido .row:has(> [class*="col-"] > input[type="file"]),
#contenido .row:has(> [class*="col-"] > .file-input),
#contenido .row:has(> [class*="col-"] > .edu-file-input),
.modal-body .row:has(> [class*="col-"] > input[type="file"]),
.modal-body .row:has(> [class*="col-"] > .file-input),
#contenido .edu-upload-form > .row,
.modal-body .edu-upload-form > .row {
  display: flex !important;
  flex-wrap: wrap;
  align-items: flex-end !important;
}

.badge-primary { background: var(--edu-primary) !important; }
.badge-success { background: var(--edu-success) !important; }
.badge-warning { background: var(--edu-accent) !important; color: #1a2b3c !important; }
.badge-danger { background: var(--edu-danger) !important; }
.badge-info { background: var(--edu-info) !important; }

/* =========================================================
   Tablas de base de datos ? tipograf?a unificada (Nunito/Outfit)
   ========================================================= */
#contenido table,
#contenido .table,
#contenido table.table,
#contenido .dataTable,
#contenido table.dataTable,
.modal-body table,
.modal-body .table,
.modal-body .dataTable,
.dataTables_wrapper table,
table.table,
table.dataTable {
  font-family: var(--edu-font) !important;
  color: var(--edu-ink);
  font-size: 0.9rem;
}

#contenido table thead th,
#contenido .table thead th,
#contenido .dataTable thead th,
#contenido table.dataTable thead th,
.modal-body table thead th,
.modal-body .table thead th,
.modal-body .dataTable thead th,
.table thead th,
table.dataTable thead th {
  font-family: var(--edu-display) !important;
  background: var(--edu-primary-soft);
  color: var(--edu-primary-dark);
  border-bottom: 0 !important;
  font-weight: 800 !important;
  font-size: 0.78rem !important;
  text-transform: uppercase;
  letter-spacing: 0.03em;
  vertical-align: middle;
}

#contenido table tbody td,
#contenido .table tbody td,
#contenido .dataTable tbody td,
#contenido table.dataTable tbody td,
.modal-body table tbody td,
.modal-body .table tbody td,
.modal-body .dataTable tbody td,
.table tbody td,
table.dataTable tbody td {
  font-family: var(--edu-font) !important;
  font-weight: 600;
  font-size: 0.9rem !important;
  color: var(--edu-ink);
  vertical-align: middle;
}

#contenido table tbody td a,
#contenido .table tbody td a,
.modal-body table tbody td a {
  font-family: var(--edu-font) !important;
  font-weight: 700;
}

#contenido .dataTables_wrapper,
#contenido .dataTables_wrapper label,
#contenido .dataTables_info,
#contenido .dataTables_filter,
#contenido .dataTables_length,
#contenido .dataTables_paginate,
#contenido .dataTables_paginate .paginate_button,
.modal-body .dataTables_wrapper,
.modal-body .dataTables_info,
.modal-body .dataTables_filter,
.modal-body .dataTables_length,
.modal-body .dataTables_paginate {
  font-family: var(--edu-font) !important;
  font-weight: 600;
  color: var(--edu-muted);
  font-size: 0.85rem;
}

.table-striped tbody tr:nth-of-type(odd) {
  background-color: rgba(11, 110, 153, 0.03);
}

.page-item.active .page-link {
  background-color: var(--edu-primary);
  border-color: var(--edu-primary);
}

.page-link {
  color: var(--edu-primary);
}

/* ---------- Timeline / classroom widgets ---------- */
.timeline > div > .timeline-item {
  border-radius: var(--edu-radius-sm);
  box-shadow: var(--edu-shadow-sm);
  border: 1px solid var(--edu-border);
  background: #fff;
}

.timeline .time-label > span.bg-danger {
  background: linear-gradient(135deg, #e85d04, var(--edu-accent)) !important;
  color: #1a2b3c !important;
  font-weight: 800;
  border-radius: 999px;
  padding: 0.35rem 0.9rem;
}

.timeline .time-label > span.bg-primary {
  background: linear-gradient(135deg, var(--edu-primary-dark), var(--edu-primary)) !important;
  border-radius: 999px;
  padding: 0.35rem 0.9rem;
  font-weight: 700;
}

/* ---------- Footer ---------- */
.main-footer {
  background: rgba(255, 255, 255, 0.92) !important;
  border-top: 1px solid var(--edu-border) !important;
  color: var(--edu-muted) !important;
  font-size: 0.85rem;
}

.main-footer a,
.main-footer .text-white {
  color: var(--edu-primary) !important;
  font-weight: 800;
}

/* ---------- Welcome strip ---------- */
.edu-welcome {
  margin: 0 0 0.7rem 0;
  padding: 1.1rem 1.25rem;
  border-radius: var(--edu-radius);
  background:
    linear-gradient(120deg, rgba(11, 110, 153, 0.95), rgba(8, 77, 110, 0.92)),
    radial-gradient(circle at 90% 20%, rgba(232, 154, 12, 0.35), transparent 40%);
  color: #fff;
  box-shadow: var(--edu-shadow);
  position: relative;
  overflow: hidden;
  animation: eduFadeUp 0.55s ease both;
}

.edu-welcome::after {
  content: "";
  position: absolute;
  right: -40px;
  top: -40px;
  width: 160px;
  height: 160px;
  border-radius: 50%;
  background: rgba(255, 255, 255, 0.08);
}

.edu-welcome h2 {
  margin: 0;
  font-size: 1.35rem;
  font-weight: 800;
  position: relative;
  z-index: 1;
}

.edu-welcome p {
  margin: 0.25rem 0 0;
  opacity: 0.9;
  font-weight: 600;
  position: relative;
  z-index: 1;
}

@keyframes eduFadeUp {
  from { opacity: 0; }
  to { opacity: 1; }
}

@keyframes eduSoftPulse {
  0%, 100% { transform: scale(1); }
  50% { transform: scale(1.03); }
}

.edu-pulse {
  animation: eduSoftPulse 3.5s ease-in-out infinite;
}

/* ---------- Login ---------- */
html:has(body.edu-login-page) {
  height: 100%;
}

body.edu-login-page {
  min-height: 100vh;
  min-height: 100dvh;
  margin: 0 !important;
  padding: 1.5rem 1rem 4rem !important;
  font-family: var(--edu-font) !important;
  background:
    linear-gradient(125deg, rgba(8, 77, 110, 0.88), rgba(11, 110, 153, 0.72) 45%, rgba(232, 154, 12, 0.35)),
    url("../../bootstrap/images/bg1.jpg") center center / cover no-repeat fixed;
  display: flex !important;
  flex-direction: column !important;
  align-items: center !important;
  justify-content: center !important;
  position: relative;
  overflow-x: hidden;
  width: 100% !important;
  box-sizing: border-box !important;
}

body.edu-login-page::before {
  content: "";
  position: fixed;
  inset: 0;
  z-index: 0;
  background:
    radial-gradient(circle at 15% 20%, rgba(255, 255, 255, 0.12), transparent 35%),
    radial-gradient(circle at 85% 80%, rgba(232, 154, 12, 0.18), transparent 40%);
  pointer-events: none;
}

/* Capa particles: fondo absoluto, no empuja el formulario */
.edu-login-particles,
body.edu-login-page #particles-js.edu-login-particles,
body.edu-login-page > #particles-js {
  position: fixed !important;
  inset: 0 !important;
  width: 100% !important;
  height: 100% !important;
  z-index: 1 !important;
  pointer-events: none !important;
  background: transparent !important;
  background-image: none !important;
  margin: 0 !important;
  padding: 0 !important;
}

.edu-login-particles canvas,
body.edu-login-page #particles-js canvas {
  position: absolute !important;
  inset: 0 !important;
  width: 100% !important;
  height: 100% !important;
  display: block !important;
  pointer-events: none !important;
}

.edu-login-shell {
  position: relative;
  z-index: 2;
  width: 100%;
  max-width: 440px;
  margin: 0 auto;
  flex: 0 0 auto;
  animation: eduFadeUp 0.6s ease both;
}

.edu-login-card {
  background: rgba(255, 255, 255, 0.96);
  border-radius: 22px;
  box-shadow: 0 24px 60px rgba(8, 40, 60, 0.35);
  border: 1px solid rgba(255, 255, 255, 0.55);
  overflow: hidden;
  backdrop-filter: blur(8px);
}

.edu-login-hero {
  padding: 1.6rem 1.5rem 1.1rem;
  text-align: center;
  background:
    linear-gradient(160deg, rgba(11, 110, 153, 0.08), rgba(232, 154, 12, 0.08)),
    #fff;
  border-bottom: 1px solid var(--edu-border);
}

.edu-login-hero img {
  width: 92px;
  height: auto;
  margin-bottom: 0.75rem;
  filter: drop-shadow(0 8px 16px rgba(11, 110, 153, 0.2));
  animation: eduSoftPulse 4s ease-in-out infinite;
}

.edu-login-hero h1 {
  margin: 0;
  font-family: var(--edu-display);
  font-size: 1.55rem;
  font-weight: 800;
  color: var(--edu-primary-dark);
  letter-spacing: -0.02em;
}

.edu-login-hero p {
  margin: 0.35rem 0 0;
  color: var(--edu-muted);
  font-weight: 600;
  font-size: 0.95rem;
}

.edu-login-body {
  padding: 1.35rem 1.5rem 1.5rem;
}

.edu-login-body .form-control {
  min-height: 44px;
  font-size: 0.95rem;
  padding-left: 0.95rem;
}

.edu-login-body .btn-primary,
.edu-login-body #btn_ingresar,
.edu-login-body #btn_validar {
  min-height: 46px;
  display: flex;
  align-items: center;
  justify-content: center;
  border-radius: 12px !important;
  font-size: 1rem;
  cursor: pointer;
}

.edu-login-links {
  margin-top: 0.85rem;
  text-align: right;
}

.edu-login-links a {
  color: var(--edu-primary);
  font-weight: 700;
  font-size: 0.9rem;
}

.edu-login-footer {
  position: fixed;
  left: 0;
  right: 0;
  bottom: 0;
  z-index: 3;
  padding: 0.65rem 1rem;
  text-align: center;
  color: rgba(255, 255, 255, 0.92);
  background: rgba(8, 40, 60, 0.45);
  backdrop-filter: blur(6px);
  font-size: 0.82rem;
}

.edu-login-footer a {
  color: #ffe08a;
  font-weight: 800;
}

.edu-role-chips {
  display: flex;
  flex-wrap: wrap;
  gap: 0.4rem;
  justify-content: center;
  margin-top: 0.85rem;
}

.edu-role-chips span {
  font-size: 0.72rem;
  font-weight: 800;
  letter-spacing: 0.04em;
  text-transform: uppercase;
  padding: 0.28rem 0.55rem;
  border-radius: 999px;
  background: var(--edu-primary-soft);
  color: var(--edu-primary-dark);
}

/* Oculta widgets demo de particles (stats) si quedaran cargados */
body.edu-login-page #stats,
body.edu-login-page .count-particles {
  display: none !important;
}

/* ---------- Misc polish ---------- */
.breadcrumb {
  background: transparent;
}

.modal-content {
  border-radius: var(--edu-radius);
  border: 1px solid var(--edu-border);
  overflow: visible;
  background: #fff;
  box-shadow: 0 18px 48px rgba(8, 40, 60, 0.28);
}

.modal-header {
  background: linear-gradient(135deg, var(--edu-primary-dark), var(--edu-primary));
  color: #fff;
  border-bottom: 0;
  border-radius: var(--edu-radius) var(--edu-radius) 0 0;
}

/* modal-header inyectado dentro de modal-body (p.ej. venta vista) */
.modal-body > .modal-header,
.modal-body .edu-venta-vista-head {
  position: relative;
  z-index: 1;
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  justify-content: flex-start;
  gap: 0.35rem 0.85rem;
  width: 100%;
  max-width: 100%;
  box-sizing: border-box;
  margin: 0 0 1rem !important;
  padding: 0.9rem 1.1rem !important;
  border-radius: 12px !important;
  overflow: hidden;
  float: none !important;
  clear: both;
}

.modal-body > .modal-header .modal-title,
.modal-body .edu-venta-vista-head .modal-title {
  color: #fff !important;
  font-family: var(--edu-display);
  font-size: 1.1rem !important;
  font-weight: 800 !important;
  line-height: 1.3 !important;
  margin: 0 !important;
  flex: 0 1 auto;
}

.edu-venta-vista-head-main {
  display: flex;
  flex-direction: column;
  align-items: flex-start;
  gap: 0.2rem;
  min-width: 0;
  width: 100%;
}

.edu-venta-vista-meta {
  display: block;
  color: rgba(255, 255, 255, 0.92) !important;
  font-size: 0.8rem !important;
  font-weight: 700 !important;
  line-height: 1.35;
  word-break: break-word;
}

/* Cliente en venta vista: sin box-header ni fondo de color */
.div_venta_form_vista .edu-venta-cliente-box {
  border: 1px solid var(--edu-border);
  border-radius: 12px;
  overflow: hidden;
  box-shadow: var(--edu-shadow-sm);
  background: #fff;
}

.div_venta_form_vista .edu-venta-cliente-info {
  background: transparent !important;
  border: 0 !important;
  margin: 0;
  padding: 0.85rem 1rem 0.35rem;
}

.div_venta_form_vista .edu-venta-cliente-info .user-block {
  margin: 0;
}

.div_venta_form_vista .edu-venta-cliente-box > .box-body {
  background: transparent !important;
  padding: 0.5rem 1rem 1rem;
}

/* Evita que el modal quede atrapado / oscuro detr?s del backdrop */
.modal {
  z-index: 2000 !important;
}

.modal-backdrop {
  z-index: 1990 !important;
  background-color: rgba(10, 61, 92, 0.45) !important;
}

.modal-backdrop.show {
  opacity: 1 !important;
}

.modal-open .wrapper,
.modal-open .content-wrapper,
.modal-open #contenido {
  transform: none !important;
  filter: none !important;
  perspective: none !important;
}

.modal .modal-body {
  background: #fff;
  color: var(--edu-ink);
}

.nav-tabs .nav-link.active {
  color: var(--edu-primary) !important;
  font-weight: 800;
  border-top: 3px solid var(--edu-primary);
}

.info-box,
.small-box {
  border-radius: var(--edu-radius) !important;
  box-shadow: var(--edu-shadow-sm);
  overflow: hidden;
}

.small-box > .inner {
  font-family: var(--edu-display);
}

@media (max-width: 767.98px) {
  .edu-welcome {
    margin: 0 0 0.6rem 0;
    padding: 0.95rem 1rem;
  }

  .edu-welcome h2 {
    font-size: 1.15rem;
  }

  .edu-login-shell {
    max-width: 100%;
  }
}

/* =========================================================
   M?dulos del aula (#contenido) ? estilo unificado
   ========================================================= */

/* No animar #contenido con transform: rompe position:fixed de los modales */

/* Misma medida para cabecera, filtro y tabla en todos los m?dulos.
   No usar padding shorthand: pisa el padding-bottom de layout-footer-fixed
   y el contenido queda debajo del footer. */
#contenido.content-wrapper,
#contenido {
  --edu-module-x: 1rem;
  --edu-module-y: 0.7rem;
  --edu-module-gap: 0.7rem;
  padding-top: var(--edu-module-y) !important;
  padding-left: var(--edu-module-x) !important;
  padding-right: var(--edu-module-x) !important;
  box-sizing: border-box;
}

/* Espacio extra bajo el contenido para el footer fijo */
.layout-footer-fixed .wrapper #contenido.content-wrapper,
.layout-footer-fixed .wrapper #contenido {
  padding-bottom: calc(4.5rem + 1px) !important;
}

#contenido .edu-welcome {
  margin: 0 0 var(--edu-module-gap) 0;
  width: 100%;
  box-sizing: border-box;
}

#contenido .content-header {
  margin: 0 0 var(--edu-module-gap) 0;
  padding: 0.95rem 1.1rem;
  width: 100%;
  max-width: 100%;
  box-sizing: border-box;
  border-radius: var(--edu-radius);
  background:
    linear-gradient(135deg, rgba(255, 255, 255, 0.95), rgba(230, 244, 250, 0.95));
  border: 1px solid var(--edu-border);
  box-shadow: var(--edu-shadow-sm);
}

#contenido .content-header > .container-fluid {
  padding-left: 0 !important;
  padding-right: 0 !important;
  width: 100%;
  max-width: 100%;
}

#contenido .content-header .row {
  margin-left: 0;
  margin-right: 0;
}

#contenido .content-header h1 {
  margin: 0;
  font-family: var(--edu-display);
  font-size: 1.35rem;
  font-weight: 800;
  color: var(--edu-primary-dark);
  letter-spacing: -0.02em;
}

#contenido .content-header h1 small {
  display: inline-block;
  margin-left: 0.4rem;
  padding: 0.18rem 0.55rem;
  border-radius: 999px;
  background: var(--edu-primary-soft);
  color: var(--edu-primary);
  font-family: var(--edu-font);
  font-size: 0.72rem;
  font-weight: 800;
  letter-spacing: 0.04em;
  text-transform: uppercase;
  vertical-align: middle;
}

#contenido .content-header .breadcrumb {
  background: transparent;
  margin: 0;
  padding: 0;
  font-size: 0.82rem;
  font-weight: 700;
}

#contenido .content-header .breadcrumb-item + .breadcrumb-item::before {
  color: var(--edu-muted);
}

#contenido .content-header .breadcrumb-item.active {
  color: var(--edu-primary);
}

/* Bloques de filtro / tabla / toolbar: mismo ancho que la cabecera */
#contenido > .content,
#contenido section.content,
#contenido [id$="_filtro"] > section.content,
#contenido [id$="_tabla"] > section.content,
#contenido [id^="div_"] > section.content {
  padding: 0 !important;
  margin: 0 0 var(--edu-module-gap) 0 !important;
  width: 100% !important;
  max-width: 100% !important;
  box-sizing: border-box;
}

#contenido section.content > .container-fluid,
#contenido > .content > .container-fluid {
  padding-left: 0 !important;
  padding-right: 0 !important;
  width: 100% !important;
  max-width: 100% !important;
}

/* Quita el ?desfase? del row/col externo que envuelve cada card blanca */
#contenido section.content > .container-fluid > .row,
#contenido > .content > .container-fluid > .row {
  margin-left: 0 !important;
  margin-right: 0 !important;
  width: 100%;
}

#contenido section.content > .container-fluid > .row > [class*="col-"],
#contenido > .content > .container-fluid > .row > [class*="col-"] {
  padding-left: 0 !important;
  padding-right: 0 !important;
  max-width: 100%;
  flex: 0 0 100%;
}

/* Cards blancas (filtro, tabla, toolbar): misma medida */
#contenido section.content .card,
#contenido .edu-filter-card,
#contenido [id$="_filtro"] .card,
#contenido [id$="_tabla"] .card {
  width: 100% !important;
  max-width: 100% !important;
  margin: 0 0 var(--edu-module-gap) 0 !important;
  box-sizing: border-box;
}

#contenido section.content .card:last-child,
#contenido [id$="_filtro"] .card:last-child,
#contenido [id$="_tabla"] .card:last-child {
  margin-bottom: 0 !important;
}

/* Contenedores AJAX vac?os no empujan el layout */
#contenido > [id^="div_"] {
  width: 100%;
  max-width: 100%;
  box-sizing: border-box;
}

#contenido > [id^="div_"]:empty {
  display: none;
}

/* Filtros y toolbars */
#contenido .card > .card-header {
  padding: 0.95rem 1.1rem;
}

#contenido .card > .card-header label {
  display: block;
  font-size: 0.78rem;
  font-weight: 800;
  text-transform: uppercase;
  letter-spacing: 0.03em;
  color: var(--edu-muted);
  margin-bottom: 0.35rem;
  line-height: 1.2;
  min-height: 1.1rem;
}

/* Filas con inputs + botones (filtros y formularios): misma altura
   Incluye form anidado (card-header > form > .row) como informaciongeneral */
#contenido .card-header > .row,
#contenido .edu-filter-card .card-header > .row,
#contenido .edu-filter-card .card-header form > .row,
#contenido .edu-filter-card form > .row,
#contenido .edu-filter-card .row,
#contenido section.content .card-header > .row,
#contenido form[name^="for_fil"] > .row,
#contenido form[id^="for_fil"] > .row,
#contenido form[name^="for_fil"] .row,
#contenido form[id^="for_fil"] .row,
#contenido section#filter .row,
#contenido .form-group > .row,
#contenido .box-body > .row,
.modal-body .form-group > .row,
.modal-body .box-body > .row {
  display: flex !important;
  flex-wrap: wrap;
  align-items: flex-start !important;
  margin-left: -0.4rem;
  margin-right: -0.4rem;
}

#contenido .card-header > .row > [class*="col-"],
#contenido .edu-filter-card .card-header > .row > [class*="col-"],
#contenido .edu-filter-card .card-header form > .row > [class*="col-"],
#contenido .edu-filter-card form > .row > [class*="col-"],
#contenido .edu-filter-card .row > [class*="col-"],
#contenido section.content .card-header > .row > [class*="col-"],
#contenido form[name^="for_fil"] .row > [class*="col-"],
#contenido form[id^="for_fil"] .row > [class*="col-"],
#contenido section#filter .row > [class*="col-"],
#contenido .form-group > .row > [class*="col-"],
#contenido .box-body > .row > [class*="col-"],
.modal-body .form-group > .row > [class*="col-"],
.modal-body .box-body > .row > [class*="col-"] {
  padding-left: 0.4rem !important;
  padding-right: 0.4rem !important;
  margin-bottom: 0.35rem;
  float: none !important;
}

/* Quita el padding-top viejo que baja botones junto a inputs */
#contenido [style*="padding-top:30"],
#contenido [style*="padding-top: 30"],
.modal-body [style*="padding-top:30"],
.modal-body [style*="padding-top: 30"] {
  padding-top: 0 !important;
}

#contenido .card-header [style*="padding-top:30"],
#contenido .card-header [style*="padding-top: 30"],
#contenido .edu-filter-card [style*="padding-top:30"],
#contenido .edu-filter-card [style*="padding-top: 30"],
#contenido section.content .card-header [style*="padding-top:30"],
#contenido section.content .card-header [style*="padding-top: 30"],
#contenido .box-body [style*="padding-top:30"],
#contenido .box-body [style*="padding-top: 30"],
.modal-body [style*="padding-top:30"],
.modal-body [style*="padding-top: 30"] {
  display: flex !important;
  align-items: flex-end;
  flex-wrap: wrap;
  gap: 0.35rem;
  min-height: 42px;
}

#contenido .btn-default,
.modal-body .btn-default {
  border-radius: 10px !important;
  border: 1px solid var(--edu-border) !important;
  background: #fff !important;
  color: var(--edu-ink) !important;
  font-weight: 700;
}

#contenido .btn-default:hover,
.modal-body .btn-default:hover {
  background: var(--edu-primary-soft) !important;
  border-color: rgba(11, 110, 153, 0.28) !important;
  color: var(--edu-primary-dark) !important;
}

#contenido .btn-xs,
#contenido .btn-sm,
.modal-body .btn-xs,
.modal-body .btn-sm {
  border-radius: 8px !important;
  font-weight: 700;
}

/*
  Botones junto a inputs (filtro, formularios, input-group):
  mismo tama?o que Buscar / Restablecer.
  Excluye .btn-file / .edu-file-browse (deben ser width:100%).
*/
#contenido .card-header .btn:not(.btn-file):not(.edu-file-browse),
#contenido .edu-filter-card .btn:not(.btn-file):not(.edu-file-browse),
#contenido section.content .card-header .btn:not(.btn-file):not(.edu-file-browse),
#contenido .card-header .btn.btn-flat:not(.btn-file):not(.edu-file-browse),
#contenido .edu-filter-card .btn.btn-flat:not(.btn-file):not(.edu-file-browse),
#contenido .card-header .btn.btn-sm:not(.btn-file):not(.edu-file-browse),
#contenido .card-header .btn.btn-md:not(.btn-file):not(.edu-file-browse),
#contenido .card-header .btn.btn-xs:not(.btn-file):not(.edu-file-browse),
#contenido .edu-filter-card .card-header .btn:not(.btn-file):not(.edu-file-browse),
#contenido .edu-filter-card .card-header .btn.btn-sm:not(.btn-file):not(.edu-file-browse),
#contenido .form-group .btn:not(.btn-file):not(.edu-file-browse),
#contenido .box-body > .row .btn:not(.btn-file):not(.edu-file-browse),
#contenido .box-body > .form-group .btn:not(.btn-file):not(.edu-file-browse),
#contenido .box-body .form-group .btn:not(.btn-file):not(.edu-file-browse),
#contenido .input-group .btn:not(.btn-file):not(.edu-file-browse),
#contenido .input-group-addon.btn:not(.btn-file):not(.edu-file-browse),
#contenido .input-group-append .btn:not(.btn-file):not(.edu-file-browse),
#contenido .input-group-prepend .btn:not(.btn-file):not(.edu-file-browse),
#contenido .input-group-btn .btn:not(.btn-file):not(.edu-file-browse),
.modal-body .form-group .btn:not(.btn-file):not(.edu-file-browse),
.modal-body .box-body > .row .btn:not(.btn-file):not(.edu-file-browse),
.modal-body .box-body .form-group .btn:not(.btn-file):not(.edu-file-browse),
.modal-body .input-group .btn:not(.btn-file):not(.edu-file-browse),
.modal-body .input-group-addon.btn:not(.btn-file):not(.edu-file-browse),
.modal-body .input-group-append .btn:not(.btn-file):not(.edu-file-browse),
.modal-body .input-group-prepend .btn:not(.btn-file):not(.edu-file-browse),
.modal-body .input-group-btn .btn:not(.btn-file):not(.edu-file-browse),
.modal-body .card-header .btn:not(.btn-file):not(.edu-file-browse) {
  display: inline-flex !important;
  align-items: center;
  justify-content: center;
  width: auto !important;
  max-width: none !important;
  min-height: 42px !important;
  height: 42px !important;
  margin: 0 0.35rem 0 0 !important;
  padding: 0.375rem 0.9rem !important;
  font-size: 0.9rem !important;
  line-height: 1.2 !important;
  vertical-align: middle;
  white-space: nowrap;
  position: relative;
  top: 0 !important;
  border-radius: 10px !important;
  box-sizing: border-box;
}

/* btn-flat (ventapos / filtros): anula el radio redondeado de arriba */
#contenido .btn.btn-flat:not(.btn-file):not(.edu-file-browse),
.modal-body .btn.btn-flat:not(.btn-file):not(.edu-file-browse),
#contenido .edu-filter-card .btn.btn-flat,
#contenido .card-header .btn.btn-flat {
  border-radius: 0 !important;
  box-shadow: none !important;
  transform: none !important;
  border-width: 1px !important;
}

/* File browse: siempre fluido al ancho de su columna */
#contenido .btn-file,
#contenido .edu-file-browse,
#contenido .file-input .btn,
#contenido .file-input .btn-file,
#contenido .box-body .btn-file,
#contenido .box-body .edu-file-browse,
#contenido .box-body > .row .btn-file,
#contenido .box-body > .row .edu-file-browse,
.modal-body .btn-file,
.modal-body .edu-file-browse,
.modal-body .file-input .btn,
.modal-body .file-input .btn-file,
.modal-body .box-body .btn-file,
.modal-body .box-body .edu-file-browse,
.modal-body .box-body > .row .btn-file,
.modal-body .box-body > .row .edu-file-browse,
.modal-body .form-group .btn-file,
.modal-body .form-group .edu-file-browse {
  display: flex !important;
  align-items: center !important;
  justify-content: center !important;
  width: 100% !important;
  max-width: 100% !important;
  min-width: 0 !important;
  min-height: 38px !important;
  height: 38px !important;
  margin: 0 !important;
  padding: 0.35rem 0.75rem !important;
  font-size: 0.875rem !important;
  white-space: nowrap !important;
  overflow: hidden !important;
  text-overflow: ellipsis !important;
  box-sizing: border-box !important;
}

/* Filtros: botones al mismo nivel visual que Personal (38px + offset del label) */
#contenido .edu-filter-card .card-header .btn:not(.btn-file):not(.edu-file-browse),
#contenido .edu-filter-card .card-header .btn.btn-sm:not(.btn-file):not(.edu-file-browse),
#contenido .edu-filter-card .card-header .btn.btn-md:not(.btn-file):not(.edu-file-browse),
#contenido form.edu-filter-card .btn:not(.btn-file):not(.edu-file-browse),
#contenido section#filter .btn:not(.btn-file):not(.edu-file-browse) {
  min-height: 38px !important;
  height: 38px !important;
  padding: 0.35rem 0.85rem !important;
  font-size: 0.875rem !important;
}

/* Botones solo-?cono (buscar) mantienen cuadrado uniforme */
#contenido .card-header .btn-primary:not(.btn-block):not(.btn-file):not(.edu-file-browse),
#contenido .edu-filter-card .btn-primary:not(.btn-block):not(.btn-file):not(.edu-file-browse),
#contenido .form-group .btn-primary:not(.btn-block):not(.btn-file):not(.edu-file-browse),
#contenido .input-group .btn-primary:not(.btn-file):not(.edu-file-browse),
.modal-body .form-group .btn-primary:not(.btn-block):not(.btn-file):not(.edu-file-browse),
.modal-body .input-group .btn-primary:not(.btn-file):not(.edu-file-browse) {
  min-width: 42px;
}

#contenido .card-header .btn.btn-default:not(.btn-file):not(.edu-file-browse),
#contenido .edu-filter-card .btn.btn-default:not(.btn-file):not(.edu-file-browse),
#contenido .form-group .btn.btn-default:not(.btn-file):not(.edu-file-browse),
.modal-body .form-group .btn.btn-default:not(.btn-file):not(.edu-file-browse) {
  display: inline-flex !important;
  width: auto !important;
}

/* input-group: input y bot?n misma altura */
#contenido .input-group,
.modal-body .input-group {
  display: flex;
  align-items: stretch;
  width: 100%;
  flex-wrap: nowrap;
}

#contenido .input-group > .form-control,
.modal-body .input-group > .form-control {
  height: 42px;
  min-height: 42px;
  margin-bottom: 0;
}

#contenido .input-group > .btn,
#contenido .input-group > .input-group-addon,
#contenido .input-group > .input-group-append,
#contenido .input-group > .input-group-prepend,
#contenido .input-group > .input-group-btn,
.modal-body .input-group > .btn,
.modal-body .input-group > .input-group-addon,
.modal-body .input-group > .input-group-append,
.modal-body .input-group > .input-group-prepend,
.modal-body .input-group > .input-group-btn {
  margin: 0 !important;
  height: 42px;
  min-height: 42px;
}

#contenido .input-group-addon.btn,
.modal-body .input-group-addon.btn {
  border-radius: 0 !important;
  margin: 0 !important;
  box-shadow: none !important;
}

#contenido .input-group > .form-control:not(:last-child),
.modal-body .input-group > .form-control:not(:last-child) {
  border-top-right-radius: 0 !important;
  border-bottom-right-radius: 0 !important;
}

#contenido .card-header .form-control,
#contenido .edu-filter-card .form-control,
#contenido .card-header select.form-control,
#contenido .form-group .form-control,
#contenido .box-body .form-control,
.modal-body .form-group .form-control,
.modal-body .box-body .form-control {
  margin-bottom: 0;
}

/* Pie de modal (Cancelar/Guardar): mismo alto, alineados */
.modal-body .btn.cancel,
.modal-footer .btn,
.modal-body > .btn,
.modal-body .text-right > .btn,
.modal-body [style*="text-align"] > .btn {
  display: inline-flex !important;
  align-items: center;
  justify-content: center;
  min-height: 42px !important;
  height: 42px !important;
  padding: 0.375rem 1rem !important;
  border-radius: 10px !important;
  margin: 0 0.35rem 0.25rem 0 !important;
  font-size: 0.9rem !important;
}

/* Lista de materias (solo ?tems del listado, nunca botones de filtro) */
#contenido .card .col-lg-3 .btn.btn-default.btn-flat[onclick],
#contenido .card .d-sm-block .btn.btn-default.btn-flat[onclick] {
  display: block !important;
  width: 100% !important;
  height: auto !important;
  min-height: 0 !important;
  margin: 0 0 0.45rem !important;
  padding: 0.75rem 0.85rem !important;
  border-radius: 12px !important;
  border: 1px solid var(--edu-border) !important;
  background: #fff !important;
  box-shadow: none;
  font-size: inherit !important;
  transition: border-color 0.2s ease, background 0.2s ease;
}

/* =========================================================
   TODOS los botones en tablas de datos (todos los m?dulos)
   Estilo flat: cuadrados, sin sombra, color s?lido
   ========================================================= */
#contenido table .btn,
#contenido table span.btn,
#contenido table a.btn,
#contenido table button.btn,
#contenido table .btn.btn-sm,
#contenido table .btn.btn-xs,
#contenido table .btn.btn-md,
#contenido table .btn.btn-lg,
#contenido table .btn.btn-flat,
#contenido .table .btn,
#contenido .table span.btn,
#contenido .table a.btn,
#contenido .table button.btn,
#contenido .dataTable .btn,
#contenido .dataTable span.btn,
#contenido table.dataTable .btn,
#contenido .table-responsive .btn,
#contenido .table-responsive span.btn,
#contenido [id$="_tabla"] table .btn,
#contenido [id*="_tabla"] table .btn,
#contenido [id*="tabla"] table .btn,
.modal-body table .btn,
.modal-body table span.btn,
.modal-body table a.btn,
.modal-body table button.btn,
.modal-body .table .btn,
.modal-body .dataTable .btn,
.modal-body .table-responsive .btn,
table.table .btn,
table.table span.btn,
table.dataTable .btn {
  display: inline-flex !important;
  align-items: center !important;
  justify-content: center !important;
  height: 36px !important;
  min-height: 36px !important;
  max-height: 36px !important;
  min-width: 36px !important;
  width: 36px !important;
  padding: 0 !important;
  margin: 0 0.22rem 0.22rem 0 !important;
  border-radius: 0 !important;
  border-width: 1px !important;
  border-style: solid !important;
  box-shadow: none !important;
  text-shadow: none !important;
  transform: none !important;
  font-size: 0.88rem !important;
  font-weight: 700 !important;
  line-height: 1 !important;
  vertical-align: middle !important;
  white-space: nowrap !important;
  box-sizing: border-box !important;
  top: 0 !important;
  position: relative !important;
}

/* Bot?n con texto (no solo ?cono): ancho autom?tico, misma altura flat */
#contenido table .btn:not(:has(> i:only-child)):not(:has(> .fa:only-child)):not(:has(> .fas:only-child)):not(:has(> .far:only-child)):not(:has(> .fab:only-child)),
#contenido .table .btn:not(:has(> i:only-child)):not(:has(> .fas:only-child)),
.modal-body table .btn:not(:has(> i:only-child)):not(:has(> .fas:only-child)),
table.table .btn:not(:has(> i:only-child)):not(:has(> .fas:only-child)) {
  width: auto !important;
  min-width: 36px !important;
  padding: 0 0.65rem !important;
  gap: 0.4rem !important;
}

#contenido table .btn i,
#contenido table span.btn i,
#contenido .table .btn i,
#contenido .dataTable .btn i,
#contenido .table-responsive .btn i,
.modal-body table .btn i,
table.table .btn i {
  display: inline-flex !important;
  align-items: center !important;
  justify-content: center !important;
  margin: 0 !important;
  padding: 0 !important;
  font-size: 0.95rem !important;
  line-height: 1 !important;
  width: auto !important;
  height: auto !important;
  position: static !important;
  top: auto !important;
  transform: none !important;
  vertical-align: middle !important;
}

/* Colores s?lidos flat (anula degradados/sombras globales) */
#contenido table .btn-primary,
#contenido table span.btn-primary,
#contenido .table .btn-primary,
#contenido .dataTable .btn-primary,
#contenido .table-responsive .btn-primary,
.modal-body table .btn-primary,
table.table .btn-primary,
#contenido table .btn-primary:hover,
#contenido .table .btn-primary:hover,
.modal-body table .btn-primary:hover {
  background: var(--edu-primary) !important;
  background-image: none !important;
  border: 1px solid var(--edu-primary-dark) !important;
  color: #fff !important;
  box-shadow: none !important;
  transform: none !important;
}

#contenido table .btn-success,
#contenido table span.btn-success,
#contenido .table .btn-success,
#contenido .dataTable .btn-success,
.modal-body table .btn-success,
table.table .btn-success,
#contenido table .btn-success:hover,
.modal-body table .btn-success:hover {
  background: var(--edu-success) !important;
  background-image: none !important;
  border: 1px solid #238b7e !important;
  color: #fff !important;
  box-shadow: none !important;
  transform: none !important;
}

#contenido table .btn-danger,
#contenido table span.btn-danger,
#contenido .table .btn-danger,
#contenido .dataTable .btn-danger,
.modal-body table .btn-danger,
table.table .btn-danger,
#contenido table .btn-danger:hover,
.modal-body table .btn-danger:hover {
  background: var(--edu-danger) !important;
  background-image: none !important;
  border: 1px solid #c62828 !important;
  color: #fff !important;
  box-shadow: none !important;
  transform: none !important;
}

#contenido table .btn-warning,
#contenido table span.btn-warning,
#contenido .table .btn-warning,
.modal-body table .btn-warning,
#contenido table .btn-warning:hover {
  background: var(--edu-accent) !important;
  background-image: none !important;
  border: 1px solid var(--edu-accent-dark) !important;
  color: #1a2b3c !important;
  box-shadow: none !important;
  transform: none !important;
}

#contenido table .btn-info,
#contenido table span.btn-info,
#contenido .table .btn-info,
.modal-body table .btn-info,
#contenido table .btn-info:hover {
  background: var(--edu-info) !important;
  background-image: none !important;
  border: 1px solid #3a96b5 !important;
  color: #fff !important;
  box-shadow: none !important;
  transform: none !important;
}

#contenido table .btn-default,
#contenido table .btn-secondary,
#contenido .table .btn-default,
.modal-body table .btn-default {
  border-radius: 0 !important;
  box-shadow: none !important;
  background-image: none !important;
}

#contenido table .btn-outline-primary,
#contenido table .btn-outline-success,
#contenido table .btn-outline-danger,
#contenido table .btn-outline-warning,
#contenido table .btn-outline-info,
#contenido table span.btn-outline-success,
#contenido table span.btn-outline-danger,
#contenido .table .btn-outline-primary,
#contenido .table .btn-outline-success,
#contenido .table .btn-outline-danger,
.modal-body table .btn-outline-primary,
.modal-body table .btn-outline-success,
.modal-body table .btn-outline-danger {
  background: #fff !important;
  background-image: none !important;
  box-shadow: none !important;
  border-radius: 0 !important;
  border-width: 1px !important;
  transform: none !important;
}

#contenido table .btn:hover,
#contenido table span.btn:hover,
#contenido .table .btn:hover,
#contenido .dataTable .btn:hover,
#contenido .table-responsive .btn:hover,
table.table .btn:hover,
.modal-body table .btn:hover {
  transform: none !important;
  box-shadow: none !important;
  opacity: 0.92;
}

/* Anula border-radius de .btn-sm / .btn-xs dentro de tablas */
#contenido table .btn-sm,
#contenido table .btn-xs,
#contenido .table .btn-sm,
#contenido .table .btn-xs,
.modal-body table .btn-sm,
.modal-body table .btn-xs {
  border-radius: 0 !important;
}

/* Celda de acciones: botones en fila limpia */
#contenido table td:first-child .btn,
#contenido table td[nowrap] .btn,
#contenido table td[align="center"] .btn,
#contenido .table td .btn.edu-tbl-action,
.modal-body table td .btn.edu-tbl-action,
table.table td .btn.edu-tbl-action {
  cursor: pointer !important;
}

#contenido table .btn.edu-tbl-action,
.modal-body table .btn.edu-tbl-action,
table.table .btn.edu-tbl-action {
  display: inline-flex !important;
  align-items: center !important;
  justify-content: center !important;
  gap: 0.35rem !important;
  height: 36px !important;
  min-height: 36px !important;
  max-height: 36px !important;
  min-width: 36px !important;
  border-radius: 0 !important;
  border-width: 1px !important;
  box-shadow: none !important;
  transform: none !important;
  line-height: 1 !important;
  vertical-align: middle !important;
}

#contenido table .btn.edu-tbl-action--icon,
.modal-body table .btn.edu-tbl-action--icon,
table.table .btn.edu-tbl-action--icon {
  width: 36px !important;
  padding: 0 !important;
}

#contenido table .btn.edu-tbl-action:not(.edu-tbl-action--icon),
.modal-body table .btn.edu-tbl-action:not(.edu-tbl-action--icon),
table.table .btn.edu-tbl-action:not(.edu-tbl-action--icon) {
  width: auto !important;
  min-width: 36px !important;
  padding: 0 0.65rem !important;
}

#contenido table .btn.edu-tbl-action > i,
#contenido table .btn.edu-tbl-action > .fas,
#contenido table .btn.edu-tbl-action > .far,
.modal-body table .btn.edu-tbl-action > i {
  margin: 0 !important;
  line-height: 1 !important;
  position: static !important;
  top: auto !important;
  transform: none !important;
}

/* Tooltip bootstrap sobre acciones de tabla */
.tooltip {
  pointer-events: none;
}
#contenido table td:first-child,
#contenido .table td:first-child {
  white-space: nowrap;
  vertical-align: middle !important;
}

#contenido .card .col-lg-3 .btn.btn-default.btn-flat[onclick]:hover,
#contenido .card .d-sm-block .btn.btn-default.btn-flat[onclick]:hover {
  background: var(--edu-primary-soft) !important;
  border-color: var(--edu-primary) !important;
}

#contenido .card .col-lg-3 .btn.btn-default.btn-flat[onclick] a,
#contenido .card .col-lg-3 .btn.btn-default.btn-flat[onclick] i,
#contenido .card .d-sm-block .btn.btn-default.btn-flat[onclick] a,
#contenido .card .d-sm-block .btn.btn-default.btn-flat[onclick] i {
  color: var(--edu-primary-dark) !important;
}

/* Composer / publicaciones: file y selects en bloque */
#contenido .edu-composer-card .card-header > [class*="col-"],
#contenido .edu-composer-card .card-header .row > [class*="col-"] {
  margin-bottom: 0.55rem;
}

#contenido .edu-composer-card form[enctype*="multipart"],
#contenido .edu-composer-card #formularioarchivo {
  margin: 0.25rem 0 0.65rem;
}

#contenido .edu-composer-card .btn-file,
#contenido .edu-composer-card .file-input {
  margin-bottom: 0.5rem !important;
}

/* Modales: mismos inputs/file ordenados */
.modal-body input[type="file"],
.modal-body .file-input,
.modal-body .btn-file,
input.edu-file-input,
.modal-body input.edu-file-input {
  max-width: 100%;
  clear: both;
}

.modal-body .form-group + .form-group {
  clear: both;
}

/* =========================================================
   Aplicaci?n global a TODOS los m?dulos (filtros + forms)
   ========================================================= */

.edu-filter-card,
#contenido .edu-filter-card,
#contenido .box.edu-filter-card,
#contenido section#filter .box,
#contenido section.content > .row > .col-12 > .box,
#contenido form[name^="for_fil"],
#contenido form[id^="for_fil"],
#contenido form[id^="for_fil_"],
#contenido form[name^="for_fil_"] {
  width: 100% !important;
  max-width: 100% !important;
  box-sizing: border-box;
}

/* Filtros legacy (AdminLTE box) y forms sueltos: misma tarjeta blanca */
#contenido section#filter .box,
#contenido section.content .box,
#contenido form[name^="for_fil"],
#contenido form[id^="for_fil"] {
  background: #fff;
  border: 1px solid var(--edu-border) !important;
  border-radius: var(--edu-radius) !important;
  box-shadow: var(--edu-shadow-sm);
  margin: 0 0 var(--edu-module-gap, 0.7rem) 0 !important;
  overflow: hidden;
}

#contenido section#filter .box-body,
#contenido section.content .box > .box-body {
  padding: 0.95rem 1.1rem !important;
}

#contenido form[name^="for_fil"],
#contenido form[id^="for_fil"] {
  padding: 0.95rem 1.1rem;
}

#contenido section#filter {
  padding: 0 !important;
  margin: 0 0 var(--edu-module-gap, 0.7rem) 0 !important;
  min-height: 0 !important;
}

/*
  Columnas SOLO de botones (Buscar/Restablecer):
  - al nivel del input (offset del label)
  - botones SIEMPRE en fila (no uno debajo del otro)
  - la columna crece para adaptar el espacio (evita col-lg-2 estrecho)
*/
.edu-filter-actions:not(:has(label)):not(:has(.form-control)):not(:has(select)),
#contenido .edu-filter-actions:not(:has(label)):not(:has(.form-control)):not(:has(select)),
#contenido .edu-filter-card .edu-filter-actions,
#contenido .edu-filter-card .card-header .row > [class*="col-"]:has(> .btn):not(:has(label)):not(:has(.form-control)):not(:has(select)),
#contenido .edu-filter-card .card-header .row > [class*="col-"]:has(> button):not(:has(label)):not(:has(.form-control)):not(:has(select)),
#contenido .edu-filter-card .card-header .row > [class*="col-"]:has(> span.btn):not(:has(label)):not(:has(.form-control)):not(:has(select)),
#contenido .edu-filter-card form .row > [class*="col-"]:has(> .btn):not(:has(label)):not(:has(.form-control)):not(:has(select)),
#contenido .edu-filter-card form .row > [class*="col-"]:has(> span.btn):not(:has(label)):not(:has(.form-control)):not(:has(select)),
#contenido form.edu-filter-card .row > [class*="col-"]:has(> .btn):not(:has(label)):not(:has(.form-control)):not(:has(select)),
#contenido section#filter .row > [class*="col-"]:has(> .btn):not(:has(label)):not(:has(.form-control)):not(:has(select)),
#contenido form[name^="for_fil"] .row > [class*="col-"]:has(> .btn):not(:has(label)):not(:has(.form-control)):not(:has(select)),
#contenido form[id^="for_fil"] .row > [class*="col-"]:has(> .btn):not(:has(label)):not(:has(.form-control)):not(:has(select)) {
  display: flex !important;
  flex-direction: row !important;
  flex-wrap: nowrap !important;
  align-items: center !important;
  justify-content: flex-start !important;
  gap: 0.35rem;
  /* label (min-height 1.1rem) + margin-bottom 0.35rem = alinea con el input */
  padding-top: calc(1.1rem + 0.35rem) !important;
  min-height: 0 !important;
  align-self: flex-start !important;
  /* Adaptarse al contenido: no quedar atrapado en col-2 angosto */
  flex: 1 1 auto !important;
  width: auto !important;
  max-width: 100% !important;
  min-width: max-content !important;
  white-space: nowrap !important;
}

/* Si edu-filter-actions se puso en una columna con inputs, no alterar */
.edu-filter-actions:has(label),
.edu-filter-actions:has(.form-control),
.edu-filter-actions:has(select),
#contenido .edu-filter-actions:has(label),
#contenido .edu-filter-actions:has(.form-control),
#contenido .edu-filter-actions:has(select) {
  display: block !important;
  padding-top: 0 !important;
  align-items: initial !important;
  min-height: 0 !important;
}

.edu-filter-actions .btn,
#contenido .edu-filter-actions .btn,
#contenido .edu-filter-actions > .btn,
#contenido .edu-filter-actions > span.btn,
#contenido .edu-filter-actions > button,
#contenido .edu-filter-card .card-header .row > [class*="col-"]:has(> .btn):not(:has(label)) > .btn,
#contenido .edu-filter-card .card-header .row > [class*="col-"]:has(> button):not(:has(label)) > .btn,
#contenido .edu-filter-card .card-header .row > [class*="col-"]:has(> span.btn):not(:has(label)) > .btn,
#contenido .edu-filter-card .card-header .row > [class*="col-"]:has(> span.btn):not(:has(label)) > span.btn,
#contenido .edu-filter-card form .row > .edu-filter-actions > .btn,
#contenido .edu-filter-card form .row > .edu-filter-actions > span.btn,
#contenido section#filter .btn,
#contenido form[name^="for_fil"] .edu-filter-actions .btn,
#contenido form[id^="for_fil"] .edu-filter-actions .btn,
#contenido form[name^="for_fil"] .row > [class*="col-"]:has(> .btn):not(:has(label)) > .btn,
#contenido form[id^="for_fil"] .row > [class*="col-"]:has(> .btn):not(:has(label)) > .btn,
#contenido form.edu-filter-card .btn,
#contenido .edu-filter-card .edu-filter-actions .btn:not(.btn-file):not(.edu-file-browse) {
  display: inline-flex !important;
  align-items: center;
  justify-content: center;
  flex: 0 0 auto !important;
  width: auto !important;
  max-width: none !important;
  min-height: 38px !important;
  height: 38px !important;
  margin: 0 !important;
  padding: 0.35rem 0.85rem !important;
  /* Flat como btn_alumno_agregar: sin radio ni sombra */
  border-radius: 0 !important;
  border-width: 1px !important;
  box-shadow: none !important;
  transform: none !important;
  font-size: 0.875rem !important;
  white-space: nowrap !important;
  top: 0 !important;
}

/* Icono buscar en filtros: cuadrado compacto */
#contenido .edu-filter-actions .btn-primary:not(.btn-block),
#contenido .edu-filter-card .edu-filter-actions .btn-primary:not(.btn-block),
#contenido form[name^="for_fil"] .edu-filter-actions .btn-primary:not(.btn-block),
#contenido form[id^="for_fil"] .edu-filter-actions .btn-primary:not(.btn-block) {
  min-width: 38px !important;
  width: 38px !important;
  padding: 0 !important;
}

/* Si la fila usa align-items-end, no sumar offset de label */
#contenido .row.align-items-end > .edu-filter-actions,
#contenido .row.align-items-end > .edu-input-actions,
.modal-body .row.align-items-end > .edu-filter-actions,
.modal-body .row.align-items-end > .edu-input-actions {
  padding-top: 0 !important;
  align-self: flex-end !important;
}

/* =========================================================
   Botones al lado de inputs (escolaridad y formularios)
   ========================================================= */
#contenido .edu-inline-fields .row,
.modal-body .edu-inline-fields .row,
#contenido .edu-form-body .row.align-items-end,
.modal-body .edu-form-body .row.align-items-end {
  display: flex !important;
  flex-wrap: wrap;
  align-items: flex-end !important;
}

#contenido .edu-input-actions,
.modal-body .edu-input-actions,
#contenido .edu-inline-fields .edu-input-actions,
.modal-body .edu-inline-fields .edu-input-actions {
  display: flex !important;
  flex-direction: row !important;
  flex-wrap: nowrap !important;
  align-items: center !important;
  justify-content: flex-start !important;
  gap: 0.35rem;
  padding-top: calc(1.1rem + 0.35rem) !important;
  min-width: max-content !important;
  width: auto !important;
  max-width: 100% !important;
  float: none !important;
}

#contenido .row.align-items-end > .edu-input-actions,
.modal-body .row.align-items-end > .edu-input-actions {
  padding-top: 0 !important;
}

#contenido .edu-input-actions .btn,
.modal-body .edu-input-actions .btn,
#contenido .edu-input-actions > span.btn,
.modal-body .edu-input-actions > span.btn {
  display: inline-flex !important;
  align-items: center !important;
  justify-content: center !important;
  flex: 0 0 auto !important;
  width: auto !important;
  min-width: 38px !important;
  height: 38px !important;
  min-height: 38px !important;
  max-height: 38px !important;
  padding: 0.35rem 0.85rem !important;
  margin: 0 !important;
  border-radius: 0 !important;
  box-shadow: none !important;
  transform: none !important;
  font-size: 0.875rem !important;
  white-space: nowrap !important;
}

/* Icono solo (buscar / agregar): cuadrado flat 38px */
#contenido .edu-input-actions .btn:has(> i:only-child),
#contenido .edu-input-actions .btn:has(> .fa:only-child),
#contenido .edu-input-actions .btn:has(> .fas:only-child),
#contenido .edu-input-actions .btn:has(> .far:only-child),
.modal-body .edu-input-actions .btn:has(> i:only-child),
.modal-body .edu-input-actions .btn:has(> .fa:only-child),
.modal-body .edu-input-actions .btn:has(> .fas:only-child),
.modal-body .edu-input-actions .btn:has(> .far:only-child) {
  width: 38px !important;
  min-width: 38px !important;
  padding: 0 !important;
}

/* =========================================================
   Formularios: columnas solo-bot?n junto a inputs
   (alineaci?n + flat, sin depender de class en cada PHP)
   ========================================================= */
#contenido .box-body .row > [class*="col-"]:has(> .btn):not(:has(label)):not(:has(.form-control)):not(:has(select)):not(:has(textarea)),
#contenido .edu-form-body .row > [class*="col-"]:has(> .btn):not(:has(label)):not(:has(.form-control)):not(:has(select)):not(:has(textarea)),
#contenido form .row > [class*="col-"]:has(> .btn):not(:has(label)):not(:has(.form-control)):not(:has(select)):not(:has(textarea)):not(.box-footer),
.modal-body .box-body .row > [class*="col-"]:has(> .btn):not(:has(label)):not(:has(.form-control)):not(:has(select)):not(:has(textarea)),
.modal-body .edu-form-body .row > [class*="col-"]:has(> .btn):not(:has(label)):not(:has(.form-control)):not(:has(select)):not(:has(textarea)),
.modal-body form .row > [class*="col-"]:has(> .btn):not(:has(label)):not(:has(.form-control)):not(:has(select)):not(:has(textarea)) {
  display: flex !important;
  flex-direction: row !important;
  flex-wrap: nowrap !important;
  align-items: center !important;
  justify-content: flex-start !important;
  gap: 0.35rem;
  padding-top: calc(1.1rem + 0.35rem) !important;
  min-width: max-content !important;
  float: none !important;
}

#contenido .row.align-items-end > [class*="col-"]:has(> .btn):not(:has(label)):not(:has(.form-control)),
.modal-body .row.align-items-end > [class*="col-"]:has(> .btn):not(:has(label)):not(:has(.form-control)) {
  padding-top: 0 !important;
  align-self: flex-end !important;
}

#contenido .box-body .row > [class*="col-"]:has(> .btn):not(:has(label)):not(:has(.form-control)) > .btn,
#contenido .box-body .row > [class*="col-"]:has(> .btn):not(:has(label)):not(:has(.form-control)) > span.btn,
#contenido .box-body .row > [class*="col-"]:has(> .btn):not(:has(label)):not(:has(.form-control)) > button.btn,
#contenido .edu-form-body .row > [class*="col-"]:has(> .btn):not(:has(label)):not(:has(.form-control)) > .btn,
#contenido .edu-form-body .row > [class*="col-"]:has(> .btn):not(:has(label)):not(:has(.form-control)) > span.btn,
#contenido form .row > [class*="col-"]:has(> .btn):not(:has(label)):not(:has(.form-control)) > .btn,
#contenido form .row > [class*="col-"]:has(> .btn):not(:has(label)):not(:has(.form-control)) > span.btn,
.modal-body .box-body .row > [class*="col-"]:has(> .btn):not(:has(label)):not(:has(.form-control)) > .btn,
.modal-body .box-body .row > [class*="col-"]:has(> .btn):not(:has(label)):not(:has(.form-control)) > span.btn,
.modal-body .edu-form-body .row > [class*="col-"]:has(> .btn):not(:has(label)):not(:has(.form-control)) > .btn,
.modal-body form .row > [class*="col-"]:has(> .btn):not(:has(label)):not(:has(.form-control)) > .btn,
.modal-body form .row > [class*="col-"]:has(> .btn):not(:has(label)):not(:has(.form-control)) > span.btn {
  display: inline-flex !important;
  align-items: center !important;
  justify-content: center !important;
  flex: 0 0 auto !important;
  width: auto !important;
  min-width: 38px !important;
  height: 38px !important;
  min-height: 38px !important;
  max-height: 38px !important;
  padding: 0.35rem 0.85rem !important;
  margin: 0 !important;
  border-radius: 0 !important;
  box-shadow: none !important;
  transform: none !important;
  font-size: 0.875rem !important;
  white-space: nowrap !important;
}

/* Solo ?cono real (sin etiqueta <span>). El texto suelto no cuenta en :only-child
   y dejaba botones como "AGREGAR PAGO" en 38px con el texto cortado. */
#contenido .box-body .row > [class*="col-"]:has(> .btn):not(:has(label)):not(:has(.form-control)) > .btn:has(> i:only-child):not(:has(> span)),
#contenido .box-body .row > [class*="col-"]:has(> .btn):not(:has(label)):not(:has(.form-control)) > .btn:has(> .fa:only-child):not(:has(> span)),
#contenido .box-body .row > [class*="col-"]:has(> .btn):not(:has(label)):not(:has(.form-control)) > .btn:has(> .fas:only-child):not(:has(> span)),
#contenido .edu-form-body .row > [class*="col-"]:has(> .btn):not(:has(label)):not(:has(.form-control)) > .btn:has(> i:only-child):not(:has(> span)),
#contenido form .row > [class*="col-"]:has(> .btn):not(:has(label)):not(:has(.form-control)) > .btn:has(> i:only-child):not(:has(> span)),
#contenido form .row > [class*="col-"]:has(> .btn):not(:has(label)):not(:has(.form-control)) > .btn:has(> .fas:only-child):not(:has(> span)),
.modal-body .box-body .row > [class*="col-"]:has(> .btn):not(:has(label)):not(:has(.form-control)) > .btn:has(> i:only-child):not(:has(> span)),
.modal-body .box-body .row > [class*="col-"]:has(> .btn):not(:has(label)):not(:has(.form-control)) > .btn:has(> .fas:only-child):not(:has(> span)),
.modal-body form .row > [class*="col-"]:has(> .btn):not(:has(label)):not(:has(.form-control)) > .btn:has(> i:only-child):not(:has(> span)),
.modal-body form .row > [class*="col-"]:has(> .btn):not(:has(label)):not(:has(.form-control)) > .btn:has(> .fas:only-child):not(:has(> span)) {
  width: 38px !important;
  min-width: 38px !important;
  padding: 0 !important;
}

#contenido .box-body .row > [class*="col-"] > .btn:has(> span),
#contenido .box-body .row > [class*="col-"] > span.btn:has(> span),
#contenido .edu-form-body .row > [class*="col-"] > .btn:has(> span),
#contenido .edu-action-btn-col > .btn,
#contenido .edu-action-btn-col > span.btn,
.modal-body .box-body .row > [class*="col-"] > .btn:has(> span),
.modal-body .edu-action-btn-col > .btn,
.modal-body .edu-action-btn-col > span.btn {
  width: auto !important;
  min-width: auto !important;
  max-width: none !important;
  height: auto !important;
  min-height: 38px !important;
  max-height: none !important;
  padding: 0.4rem 0.95rem !important;
  gap: 0.4rem;
  overflow: visible !important;
  white-space: nowrap !important;
}

/* input-group: botones pegados al input ? flat */
#contenido .input-group > .btn:not(.btn-file):not(.edu-file-browse),
#contenido .input-group-addon.btn:not(.btn-file):not(.edu-file-browse),
#contenido .input-group-append .btn:not(.btn-file):not(.edu-file-browse),
#contenido .input-group-prepend .btn:not(.btn-file):not(.edu-file-browse),
#contenido .input-group-btn .btn:not(.btn-file):not(.edu-file-browse),
.modal-body .input-group > .btn:not(.btn-file):not(.edu-file-browse),
.modal-body .input-group-addon.btn:not(.btn-file):not(.edu-file-browse),
.modal-body .input-group-append .btn:not(.btn-file):not(.edu-file-browse),
.modal-body .input-group-prepend .btn:not(.btn-file):not(.edu-file-browse),
.modal-body .input-group-btn .btn:not(.btn-file):not(.edu-file-browse) {
  border-radius: 0 !important;
  box-shadow: none !important;
  transform: none !important;
  min-height: 38px !important;
  height: 38px !important;
}

/* Filtro escolaridad: form.edu-filter-card suelto */
#contenido form.edu-filter-card#for_fil_esc,
#contenido form#for_fil_esc.edu-filter-card {
  padding: 0.95rem 1.1rem;
  background: #fff;
  border: 1px solid var(--edu-border) !important;
  border-radius: var(--edu-radius) !important;
  box-shadow: var(--edu-shadow-sm);
  margin: 0 0 var(--edu-module-gap, 0.7rem) 0 !important;
}

#contenido form#for_fil_esc .row.align-items-end {
  align-items: flex-end !important;
}

#contenido form#for_fil_esc .edu-filter-actions {
  padding-top: 0 !important;
  align-self: flex-end !important;
}

/* Escolaridad detalle editar: botones chicos + flat */
#contenido #tabla_escolaridaddetalle .btn,
#contenido #tabla_escolaridaddetalle td .btn,
#contenido #tabla_escolaridaddetalle .edu-esc-det-btn,
#contenido #tabla_escolaridaddetalle .btn.btn-xs,
.modal-body #tabla_escolaridaddetalle .btn,
.modal-body #tabla_escolaridaddetalle .edu-esc-det-btn {
  display: inline-flex !important;
  align-items: center !important;
  justify-content: center !important;
  width: 24px !important;
  min-width: 24px !important;
  max-width: 24px !important;
  height: 24px !important;
  min-height: 24px !important;
  max-height: 24px !important;
  padding: 0 !important;
  margin: 0 0.15rem 0 0 !important;
  border-radius: 0 !important;
  border-width: 1px !important;
  box-shadow: none !important;
  transform: none !important;
  font-size: 0.72rem !important;
  line-height: 1 !important;
}

#contenido #tabla_escolaridaddetalle .btn i,
#contenido #tabla_escolaridaddetalle .edu-esc-det-btn i,
.modal-body #tabla_escolaridaddetalle .btn i {
  font-size: 0.72rem !important;
  margin: 0 !important;
  line-height: 1 !important;
}

#contenido #tabla_escolaridaddetalle .btn-primary,
#contenido #tabla_escolaridaddetalle .edu-esc-det-btn.btn-primary {
  background: var(--edu-primary) !important;
  border: 1px solid var(--edu-primary-dark) !important;
}

#contenido #tabla_escolaridaddetalle .btn-success,
#contenido #tabla_escolaridaddetalle .edu-esc-det-btn.btn-success {
  background: var(--edu-success) !important;
  border: 1px solid #238b7e !important;
}

#contenido #tabla_escolaridaddetalle .btn-danger,
#contenido #tabla_escolaridaddetalle .edu-esc-det-btn.btn-danger {
  background: var(--edu-danger) !important;
  border: 1px solid #c62828 !important;
}

/* Filtros: colores s?lidos (sin degradado), estilo flat */
#contenido .edu-filter-card .btn-primary,
#contenido .edu-filter-actions .btn-primary,
#contenido section#filter .btn-primary,
#contenido form[name^="for_fil"] .btn-primary,
#contenido form[id^="for_fil"] .btn-primary,
#contenido form.edu-filter-card .btn-primary {
  background: var(--edu-primary) !important;
  border: 1px solid var(--edu-primary-dark) !important;
  box-shadow: none !important;
  transform: none !important;
}

#contenido .edu-filter-card .btn-success,
#contenido .edu-filter-actions .btn-success,
#contenido section#filter .btn-success,
#contenido form[name^="for_fil"] .btn-success,
#contenido form[id^="for_fil"] .btn-success {
  background: var(--edu-success) !important;
  border: 1px solid #238b7e !important;
  box-shadow: none !important;
}

#contenido .edu-filter-card .btn-warning,
#contenido .edu-filter-actions .btn-warning,
#contenido section#filter .btn-warning,
#contenido form[name^="for_fil"] .btn-warning,
#contenido form[id^="for_fil"] .btn-warning {
  background: var(--edu-accent) !important;
  border: 1px solid var(--edu-accent-dark) !important;
  color: #1a2b3c !important;
  box-shadow: none !important;
}

#contenido .edu-filter-card .btn-danger,
#contenido .edu-filter-actions .btn-danger,
#contenido section#filter .btn-danger,
#contenido form[name^="for_fil"] .btn-danger,
#contenido form[id^="for_fil"] .btn-danger {
  background: var(--edu-danger) !important;
  border: 1px solid #c62828 !important;
  box-shadow: none !important;
}

#contenido .edu-filter-card .btn-info,
#contenido .edu-filter-actions .btn-info,
#contenido section#filter .btn-info,
#contenido form[name^="for_fil"] .btn-info,
#contenido form[id^="for_fil"] .btn-info {
  background: var(--edu-info) !important;
  border: 1px solid #3a96b5 !important;
  box-shadow: none !important;
}

#contenido .edu-filter-card .btn-default,
#contenido .edu-filter-actions .btn-default,
#contenido section#filter .btn-default,
#contenido form[name^="for_fil"] .btn-default,
#contenido form[id^="for_fil"] .btn-default {
  border-radius: 0 !important;
  box-shadow: none !important;
}

/* Quita padding-top viejo solo en columnas de acci?n de filtros/forms */
#contenido .edu-filter-card [style*="padding-top:"],
#contenido .edu-filter-actions[style*="padding-top:"],
#contenido section#filter [style*="padding-top:"],
#contenido form[name^="for_fil"] [style*="padding-top:"],
#contenido form[id^="for_fil"] [style*="padding-top:"],
#contenido .box-body > .row > [class*="col-"][style*="padding-top:"],
.modal-body .box-body > .row > [class*="col-"][style*="padding-top:"],
.modal-body .form-group [style*="padding-top:"] {
  padding-top: 0 !important;
}

.edu-form-body,
.modal-body .edu-form-body,
.modal-body .box-body,
#contenido .box-body {
  padding: 0.85rem 0.35rem 0.5rem;
}

.edu-form-body .form-control,
.edu-form-body select.form-control,
.modal-body .form-control,
.modal-body select.form-control,
#contenido .box-body .form-control,
#contenido .box-body select.form-control {
  min-height: 42px;
  border-radius: 10px !important;
}

.edu-form-body textarea.form-control,
.modal-body textarea.form-control,
#contenido .box-body textarea.form-control {
  min-height: 88px;
  height: auto;
}

.edu-form-body label,
.modal-body .box-body label,
#contenido .box-body label {
  font-weight: 700;
  color: var(--edu-muted);
  font-size: 0.82rem;
  margin-bottom: 0.3rem;
}

.edu-file-input,
input.edu-file-input {
  display: block !important;
  width: 100% !important;
  max-width: 100% !important;
  margin: 0 0 0.65rem !important;
  padding: 0.4rem 0.65rem !important;
  min-height: 38px !important;
  border: 1px solid rgba(11, 110, 153, 0.22) !important;
  border-radius: 10px !important;
  background: #fff !important;
  position: relative !important;
  z-index: 1 !important;
  clear: both !important;
  box-sizing: border-box !important;
}

/* Asegura filas de formulario alineadas en todos los m?dulos */
#contenido .edu-filter-card .card-header > .row,
#contenido section.content .edu-filter-card .card-header > .row,
#contenido form.edu-filter-card > .row {
  display: flex !important;
  flex-wrap: wrap;
  align-items: flex-start !important;
}

/* Inputs de filtro al mismo tama?o que Personal (form-control-sm visual) */
#contenido .edu-filter-card .form-control,
#contenido .edu-filter-card select.form-control,
#contenido form.edu-filter-card .form-control,
#contenido section#filter .form-control {
  min-height: 38px !important;
  height: 38px !important;
}

/* Upload forms: Archivo / Archivo UGEL */
#contenido .edu-upload-card .card-header,
#contenido .edu-upload-form {
  width: 100%;
}

#contenido .edu-upload-form > .row {
  display: flex !important;
  flex-wrap: wrap;
  align-items: flex-end !important;
  margin-left: -0.4rem;
  margin-right: -0.4rem;
}

#contenido .edu-upload-form > .row > [class*="col-"] {
  padding-left: 0.4rem !important;
  padding-right: 0.4rem !important;
  margin-bottom: 0.45rem;
  float: none !important;
}

#contenido .edu-upload-form label {
  display: block;
  font-size: 0.78rem;
  font-weight: 800;
  text-transform: uppercase;
  letter-spacing: 0.03em;
  color: var(--edu-muted);
  margin-bottom: 0.35rem;
  line-height: 1.2;
  min-height: 1.1rem;
}

#contenido .edu-upload-file .file-input,
#contenido .edu-upload-file .btn-file,
#contenido .edu-upload-file .edu-file-browse,
#contenido .edu-upload-file input[type="file"] {
  display: block !important;
  width: 100% !important;
  max-width: 100% !important;
  margin: 0 !important;
  clear: both;
  position: relative;
  z-index: 1;
}

#contenido .edu-upload-file .btn-file,
#contenido .edu-upload-file .edu-file-browse,
#contenido .edu-upload-file .btn {
  min-height: 38px !important;
  height: 38px !important;
  padding: 0.35rem 0.85rem !important;
  border-radius: 10px !important;
  font-size: 0.875rem !important;
  font-weight: 700;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}

#contenido .edu-upload-actions {
  padding-top: 0 !important;
  display: flex !important;
  align-items: flex-end !important;
  min-height: calc(1.1rem + 0.35rem + 38px) !important;
}

#contenido .edu-upload-actions .btn,
#contenido .edu-upload-actions #btn_subir,
.modal-body .edu-upload-actions .btn,
.modal-body .edu-upload-actions #btn_subir {
  min-height: 38px !important;
  height: 38px !important;
  width: 100%;
  margin: 0 !important;
  justify-content: center;
}

/* Preview de imagen junto a file (personal, etc.) */
#contenido .edu-upload-preview,
.modal-body .edu-upload-preview {
  min-width: 0;
}

#contenido .edu-upload-preview img,
.modal-body .edu-upload-preview img {
  max-width: 100%;
  height: auto;
}

/* Upload file tambi?n en modales */
.modal-body .edu-upload-file .file-input,
.modal-body .edu-upload-file .btn-file,
.modal-body .edu-upload-file .edu-file-browse,
.modal-body .edu-upload-file input[type="file"],
#contenido .edu-upload-file .file-input,
#contenido .edu-upload-file .btn-file,
#contenido .edu-upload-file .edu-file-browse {
  width: 100% !important;
  max-width: 100% !important;
  margin: 0 !important;
}

#contenido .edu-upload-form .form-control,
#contenido .edu-upload-form select.form-control {
  min-height: 38px !important;
  height: 38px !important;
  margin-bottom: 0;
}

/* Botones de acci?n al pie de cualquier form/modal */
.modal-body .btn-primary,
.modal-body .btn-default.cancel,
.modal-body #btn_evatra_save,
.modal-body #btn_sesion_save,
.modal-body #btn_asi_save,
.modal-body [id$="_save"],
.modal-body button.btn-primary,
.modal-body button.btn-default {
  display: inline-flex !important;
  align-items: center;
  justify-content: center;
  min-height: 42px !important;
  height: 42px !important;
  padding: 0.375rem 1rem !important;
  border-radius: 10px !important;
  margin: 0.25rem 0.35rem 0.25rem 0 !important;
  font-size: 0.9rem !important;
}

/* Tabs del aula (sesiones, clase virtual, etc.) */
#contenido .nav-tabs-custom,
#contenido #tabcliente {
  background: #fff;
  border: 1px solid var(--edu-border);
  border-radius: var(--edu-radius);
  box-shadow: var(--edu-shadow-sm);
  overflow: hidden;
  padding: 0.35rem;
}

#contenido .nav-tabs {
  border-bottom: 1px solid var(--edu-border);
  gap: 0.2rem;
  flex-wrap: wrap;
}

#contenido .nav-tabs .nav-link {
  border: 0 !important;
  border-radius: 10px !important;
  margin: 0.15rem;
  color: var(--edu-muted) !important;
  font-weight: 800 !important;
  font-size: 0.82rem;
  letter-spacing: 0.02em;
  padding: 0.55rem 0.85rem !important;
  transition: background 0.2s ease, color 0.2s ease;
}

#contenido .nav-tabs .nav-link:hover {
  background: var(--edu-primary-soft) !important;
  color: var(--edu-primary-dark) !important;
}

#contenido .nav-tabs .nav-link.active {
  background: linear-gradient(135deg, var(--edu-primary), var(--edu-primary-dark)) !important;
  color: #fff !important;
  box-shadow: 0 6px 14px rgba(11, 110, 153, 0.28);
}

#contenido .nav-tabs .nav-link.active span,
#contenido .nav-tabs .nav-link span {
  color: inherit !important;
}

#contenido .tab-content {
  padding: 0.85rem 0.55rem 0.35rem;
}

#contenido .tab-pane > .btn-primary {
  margin-bottom: 0.75rem;
}

/* Widgets de archivo / trabajo / profesor */
#contenido .widget-user,
#contenido .card-widget {
  border-radius: var(--edu-radius) !important;
  border: 1px solid var(--edu-border) !important;
  box-shadow: var(--edu-shadow-sm) !important;
  overflow: hidden;
  transition: transform 0.2s ease, box-shadow 0.2s ease;
}

#contenido .widget-user:hover,
#contenido .card-widget:hover {
  transform: translateY(-2px);
  box-shadow: var(--edu-shadow) !important;
}

#contenido .widget-user-header,
#contenido .card-widget .widget-user-header {
  background: linear-gradient(135deg, var(--edu-primary-dark), var(--edu-primary)) !important;
}

#contenido .widget-user-username,
#contenido .widget-user-desc {
  color: #fff !important;
}

/* Formularios legacy box-* dentro de modales */
.modal-body .box-header,
#contenido .box-header {
  background: linear-gradient(135deg, var(--edu-primary-dark), var(--edu-primary));
  color: #fff;
  border-radius: var(--edu-radius-sm);
  padding: 0.85rem 1rem;
  margin: 0 0 0.85rem;
}

.modal-body .box-title,
#contenido .box-title {
  font-family: var(--edu-display);
  font-weight: 800;
  font-size: 1.05rem;
  margin: 0;
}

.modal-body .box-body,
#contenido .box-body {
  padding: 0.35rem 0.15rem 0.5rem;
}

/* Horario semanal */
.edu-horario-wrap .edu-incidencia-head {
  margin-bottom: 1rem;
}

.edu-horario-week,
#tabla_mihorario.edu-horario-week {
  display: grid;
  grid-template-columns: repeat(7, minmax(240px, 1fr));
  gap: 0.85rem;
  overflow-x: auto;
  padding-bottom: 0.35rem;
  -webkit-overflow-scrolling: touch;
}

.edu-horario-day {
  min-width: 240px;
  background: var(--edu-bg-soft);
  border: 1px solid var(--edu-border);
  border-radius: var(--edu-radius);
  box-shadow: var(--edu-shadow-sm);
  overflow: hidden;
  display: flex;
  flex-direction: column;
  min-height: 220px;
}

.edu-horario-day-head {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 0.35rem 0.5rem;
  padding: 0.75rem 0.85rem;
  background: linear-gradient(180deg, #fff, var(--edu-bg-soft));
  border-bottom: 1px solid var(--edu-border);
}

.edu-horario-day-head strong {
  font-family: var(--edu-display);
  font-size: 0.95rem;
  font-weight: 800;
  color: var(--edu-primary-dark);
  letter-spacing: -0.01em;
}

.edu-horario-day-head small {
  margin-left: auto;
  font-size: 0.72rem;
  font-weight: 800;
  color: var(--edu-muted);
  letter-spacing: 0.04em;
  text-transform: uppercase;
}

.edu-horario-today-pill {
  display: inline-flex;
  align-items: center;
  padding: 0.15rem 0.5rem;
  border-radius: 999px;
  background: rgba(255, 255, 255, 0.22);
  color: #fff;
  font-size: 0.68rem;
  font-weight: 800;
  letter-spacing: 0.06em;
  text-transform: uppercase;
}

.edu-horario-day.edu-day-today {
  border-color: rgba(11, 110, 153, 0.45);
  box-shadow: 0 12px 28px rgba(10, 61, 92, 0.14);
}

.edu-horario-day.edu-day-today .edu-horario-day-head {
  background: linear-gradient(135deg, var(--edu-primary-dark), var(--edu-primary));
  border-bottom-color: transparent;
}

.edu-horario-day.edu-day-today .edu-horario-day-head strong,
.edu-horario-day.edu-day-today .edu-horario-day-head small {
  color: #fff;
}

.edu-horario-day-body {
  padding: 0.65rem;
  display: flex;
  flex-direction: column;
  gap: 0.55rem;
  flex: 1;
}

.edu-horario-empty {
  margin: auto 0;
  text-align: center;
  padding: 1.25rem 0.5rem;
  color: var(--edu-muted);
  font-size: 0.82rem;
  font-weight: 700;
}

.edu-horario-card {
  --edu-inc-accent: var(--edu-primary);
  height: auto !important;
  min-height: 0 !important;
  cursor: default;
  color: #1a2b3c !important;
  background: #fff !important;
  overflow: visible !important;
}

.edu-horario-card:hover {
  transform: translateY(-2px);
}

.edu-horario-card .edu-incidencia-badge {
  color: #0b6e99 !important;
  background: #e6f4fa !important;
}

.edu-horario-card .edu-incidencia-detail,
.edu-horario-card .edu-prof-name,
.edu-horario-card .edu-incidencia-meta li span {
  color: #1a2b3c !important;
}

.edu-horario-card .edu-prof-role,
.edu-horario-card .edu-incidencia-meta li {
  color: #5c6b7a !important;
}

.edu-horario-card .edu-prof-avatar-wrap {
  width: 44px;
  height: 44px;
}

.edu-horario-card .edu-prof-avatar {
  display: flex !important;
  align-items: center;
  justify-content: center;
  font-size: 1rem;
  color: #0b6e99 !important;
  background: #fff !important;
}

.edu-horario-card .edu-prof-body {
  align-items: flex-start !important;
  gap: 0.7rem !important;
}

.edu-horario-card .edu-prof-name {
  font-size: 0.98rem !important;
  line-height: 1.3 !important;
  white-space: normal !important;
  word-break: break-word;
  overflow-wrap: anywhere;
}

.edu-horario-card .edu-incidencia-badge {
  white-space: normal !important;
  line-height: 1.25;
  text-align: left;
}

.edu-horario-card .edu-incidencia-meta li span {
  white-space: normal !important;
  word-break: break-word;
  overflow-wrap: anywhere;
}

@media (max-width: 1399.98px) {
  .edu-horario-week,
  #tabla_mihorario.edu-horario-week {
    grid-template-columns: repeat(7, minmax(220px, 1fr));
  }

  .edu-horario-day {
    min-width: 220px;
  }
}

@media (max-width: 1199.98px) {
  .edu-horario-week,
  #tabla_mihorario.edu-horario-week {
    grid-template-columns: repeat(7, minmax(250px, 1fr));
  }

  .edu-horario-day {
    min-width: 250px;
  }
}

@media (max-width: 767.98px) {
  .edu-horario-week,
  #tabla_mihorario.edu-horario-week {
    grid-template-columns: 1fr;
  }

  .edu-horario-day {
    min-width: 0;
  }
}


/* =========================================================
   Portal docente ? Mis archivos
   ========================================================= */

.edu-archivo-card {
  --edu-inc-accent: var(--edu-primary);
  height: 100% !important;
  min-height: 0 !important;
  cursor: default;
  color: #1a2b3c !important;
  background: #fff !important;
  overflow: hidden !important;
  display: flex !important;
  flex-direction: column !important;
}

.edu-archivo-card:hover {
  transform: translateY(-2px);
}

.edu-archivo-card--imprimir { --edu-inc-accent: #ad1457; }
.edu-archivo-card--ugel { --edu-inc-accent: #0b6e99; }
.edu-archivo-card--obs { --edu-inc-accent: #e89a0c; }

.edu-archivo-card .edu-incidencia-card-top {
  flex-wrap: wrap;
  align-items: flex-start;
  gap: 0.4rem;
  padding: 0.8rem 0.9rem 0.55rem 1.25rem !important;
}

.edu-archivo-card .edu-incidencia-badge {
  color: var(--edu-inc-accent) !important;
  background: var(--edu-bg-soft) !important;
  max-width: 100%;
  white-space: normal;
  line-height: 1.25;
  font-size: 0.68rem !important;
  padding: 0.32rem 0.7rem 0.32rem 0.75rem !important;
}

.edu-archivo-card .edu-archivo-imp {
  padding: 0.28rem 0.65rem !important;
  margin-left: 0.1rem;
}

.edu-archivo-card .edu-archivo-card-title,
.edu-archivo-card .edu-archivo-card-user,
.edu-archivo-card .edu-archivo-card-meta,
.edu-archivo-card .edu-archivo-obs-box,
.edu-archivo-card .edu-archivo-obs-view,
.edu-archivo-card .edu-archivo-actions,
.edu-archivo-card .edu-archivo-status {
  padding-left: 0.1rem;
}

.edu-archivo-card .edu-archivo-card-meta li {
  padding: 0.15rem 0.15rem 0.15rem 0.05rem;
}

.edu-archivo-card-body {
  display: flex !important;
  flex-direction: column !important;
  gap: 0.65rem !important;
  flex: 1 1 auto !important;
  padding: 0.4rem 0.9rem 1.25rem 1.25rem !important;
  min-width: 0 !important;
}

.edu-archivo-card-main {
  display: flex;
  align-items: flex-start;
  gap: 0.65rem;
  min-width: 0;
}

.edu-archivo-card .edu-prof-body {
  align-items: flex-start !important;
  gap: 0.75rem !important;
  padding: 0 !important;
  margin: 0 !important;
}

.edu-archivo-card .edu-prof-avatar-wrap {
  width: 36px;
  height: 36px;
  background: linear-gradient(145deg, #0b6e99 0%, #4fb3d9 100%);
  box-shadow: 0 4px 10px rgba(11, 110, 153, 0.22);
}

.edu-archivo-card--imprimir .edu-prof-avatar-wrap {
  background: linear-gradient(145deg, #ad1457 0%, #e573a0 100%);
  box-shadow: 0 4px 10px rgba(173, 20, 87, 0.22);
}

.edu-archivo-card--ugel .edu-prof-avatar-wrap {
  background: linear-gradient(145deg, #0b6e99 0%, #4fb3d9 100%);
  box-shadow: 0 4px 10px rgba(11, 110, 153, 0.22);
}

.edu-archivo-card--obs .edu-prof-avatar-wrap {
  background: linear-gradient(145deg, #c47f06 0%, #e8b84a 100%);
  box-shadow: 0 4px 10px rgba(196, 127, 6, 0.22);
}

.edu-archivo-card .edu-prof-avatar {
  display: inline-flex !important;
  align-items: center;
  justify-content: center;
  font-size: 0.9rem;
  color: var(--edu-inc-accent, #0b6e99) !important;
  background: #fff !important;
  border-width: 2px;
}

.edu-archivo-card .edu-prof-avatar i,
.edu-archivo-card .edu-prof-avatar .fas,
.edu-archivo-card .edu-prof-avatar .far {
  color: inherit !important;
}

.edu-archivo-card--imprimir .edu-prof-avatar {
  color: #ad1457 !important;
}

.edu-archivo-card--ugel .edu-prof-avatar {
  color: #0b6e99 !important;
}

.edu-archivo-card--obs .edu-prof-avatar {
  color: #c47f06 !important;
}

.edu-archivo-card .edu-prof-name {
  margin: 0 0 0.15rem !important;
  font-family: var(--edu-display);
  font-size: 0.98rem !important;
  font-weight: 800 !important;
  line-height: 1.3 !important;
  color: #1a2b3c !important;
  word-break: break-word;
  overflow-wrap: anywhere;
}

.edu-archivo-card .edu-prof-role {
  display: block;
  margin-bottom: 0.45rem;
  font-size: 0.74rem;
  font-weight: 700;
  letter-spacing: 0.02em;
  text-transform: none;
  color: #5c6b7a !important;
  word-break: break-word;
}

.edu-archivo-card .edu-incidencia-meta {
  gap: 0.35rem;
}

.edu-archivo-card .edu-incidencia-meta li {
  padding: 0.38rem 0.55rem;
  font-size: 0.78rem;
}

.edu-archivo-card .edu-incidencia-meta li i {
  color: var(--edu-inc-accent, #0b6e99) !important;
}

.edu-archivo-card--imprimir .edu-incidencia-meta li i {
  color: #ad1457 !important;
}

.edu-archivo-card--ugel .edu-incidencia-meta li i {
  color: #0b6e99 !important;
}

.edu-archivo-card--obs .edu-incidencia-meta li i {
  color: #c47f06 !important;
}

.edu-archivo-card .edu-incidencia-meta li span {
  color: #1a2b3c !important;
  word-break: break-word;
  overflow-wrap: anywhere;
}

.edu-archivo-icon {
  flex: 0 0 40px;
  width: 40px;
  height: 40px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  border-radius: 10px;
  background: rgba(11, 110, 153, 0.12);
  border: 1px solid rgba(11, 110, 153, 0.22);
  color: var(--edu-inc-accent, #0b6e99) !important;
  font-size: 1.05rem;
}

.edu-archivo-card--imprimir .edu-archivo-icon {
  background: rgba(173, 20, 87, 0.12);
  border-color: rgba(173, 20, 87, 0.28);
  color: #ad1457 !important;
}

.edu-archivo-card--ugel .edu-archivo-icon {
  background: rgba(11, 110, 153, 0.12);
  border-color: rgba(11, 110, 153, 0.28);
  color: #0b6e99 !important;
}

.edu-archivo-card--obs .edu-archivo-icon {
  background: rgba(232, 154, 12, 0.14);
  border-color: rgba(232, 154, 12, 0.3);
  color: #c47f06 !important;
}

.edu-archivo-card-copy {
  min-width: 0;
  flex: 1 1 auto;
}

.edu-archivo-card-title {
  display: flex;
  align-items: flex-start;
  gap: 0.5rem;
  margin: 0 0 0.2rem !important;
  font-family: var(--edu-display);
  font-size: 0.95rem !important;
  font-weight: 800 !important;
  line-height: 1.3 !important;
  color: #1a2b3c !important;
  word-break: break-word;
  overflow-wrap: anywhere;
}

.edu-archivo-card-title .edu-archivo-icon {
  flex: 0 0 auto;
}

.edu-archivo-card-user {
  display: block;
  font-size: 0.78rem;
  font-weight: 700;
  color: #5c6b7a !important;
  line-height: 1.3;
  word-break: break-word;
}

.edu-archivo-card-meta {
  list-style: none;
  margin: 0.45rem 0 0 !important;
  padding: 0 !important;
  display: flex;
  flex-direction: column;
  gap: 0.28rem;
}

.edu-archivo-card-meta li {
  display: flex;
  align-items: flex-start;
  gap: 0.4rem;
  margin: 0;
  font-size: 0.75rem;
  font-weight: 700;
  color: #5c6b7a !important;
  line-height: 1.3;
  min-width: 0;
}

.edu-archivo-card-meta li i {
  flex: 0 0 auto;
  margin-top: 0.12rem;
  width: 1rem;
  text-align: center;
  color: var(--edu-inc-accent, #0b6e99) !important;
}

.edu-archivo-card--imprimir .edu-archivo-card-meta li i {
  color: #ad1457 !important;
}

.edu-archivo-card--ugel .edu-archivo-card-meta li i {
  color: #0b6e99 !important;
}

.edu-archivo-card--obs .edu-archivo-card-meta li i {
  color: #c47f06 !important;
}

.edu-archivo-card-meta li span {
  min-width: 0;
  word-break: break-word;
  overflow-wrap: anywhere;
  color: #1a2b3c !important;
}

.edu-archivo-actions {
  display: flex;
  flex-wrap: nowrap;
  align-items: center;
  gap: 0.3rem;
  margin-top: auto;
  padding-top: 0.45rem;
  padding-bottom: 0.15rem;
  margin-bottom: 0.15rem;
  width: 100%;
  min-width: 0;
}

.edu-archivo-actions .btn {
  display: inline-flex !important;
  align-items: center !important;
  justify-content: center !important;
  flex: 1 1 auto;
  min-width: 0;
  gap: 0.4rem !important;
  white-space: nowrap !important;
  line-height: 1 !important;
  height: 34px !important;
  min-height: 34px !important;
  max-height: 34px !important;
  padding: 0 0.55rem !important;
  font-size: 0.68rem !important;
  font-weight: 800 !important;
  border-radius: 8px !important;
  overflow: hidden;
  text-overflow: ellipsis;
  box-sizing: border-box !important;
  vertical-align: middle;
}

.edu-archivo-actions .edu-archivo-btn-pdf,
.edu-archivo-actions .btn-danger:not(.btn-flat),
.edu-archivo-actions > .btn-danger {
  flex: 0 0 34px !important;
  width: 34px !important;
  min-width: 34px !important;
  max-width: 34px !important;
  padding: 0 !important;
}

.edu-archivo-actions .btn > span {
  margin-left: 0 !important;
  line-height: 1;
}

.edu-archivo-actions .btn i,
.edu-archivo-actions .btn .fas,
.edu-archivo-actions .btn .far {
  display: inline-flex !important;
  align-items: center !important;
  justify-content: center !important;
  margin: 0 !important;
  padding: 0 !important;
  line-height: 1 !important;
  font-size: 0.9rem !important;
  width: auto !important;
  height: auto !important;
  position: static !important;
  top: auto !important;
  transform: none !important;
  vertical-align: middle;
}

.edu-archivo-actions .btn-primary i,
.edu-archivo-actions .btn-primary .fas,
.edu-archivo-actions .btn-primary .far,
.edu-archivo-actions .btn-success i,
.edu-archivo-actions .btn-success .fas,
.edu-archivo-actions .btn-danger i,
.edu-archivo-actions .btn-danger .fas,
.edu-archivo-actions .btn-warning i,
.edu-archivo-actions .btn-warning .fas {
  color: #fff !important;
}

/* PDF: icono rojo visible */
.edu-archivo-actions .edu-archivo-btn-pdf,
#div_archivo_tabla .edu-archivo-actions .edu-archivo-btn-pdf {
  background: #fff !important;
  border: 1px solid rgba(198, 40, 40, 0.35) !important;
  color: #c62828 !important;
}

.edu-archivo-actions .edu-archivo-btn-pdf i,
.edu-archivo-actions .edu-archivo-btn-pdf .fa-file-pdf,
#div_archivo_tabla .edu-archivo-actions .edu-archivo-btn-pdf i {
  color: #c62828 !important;
}

.edu-archivo-actions .edu-archivo-btn-pdf:hover,
#div_archivo_tabla .edu-archivo-actions .edu-archivo-btn-pdf:hover {
  background: rgba(198, 40, 40, 0.08) !important;
  border-color: #c62828 !important;
}

.edu-archivo-icon i,
.edu-archivo-icon .fas,
.edu-archivo-icon .far {
  background: transparent !important;
  border: none !important;
  box-shadow: none !important;
  width: auto !important;
  height: auto !important;
  margin: 0 !important;
  padding: 0 !important;
  color: inherit !important;
  font-size: inherit !important;
  line-height: 1 !important;
}

#div_archivo_tabla .edu-archivo-icon i,
#div_archivosugel_tabla .edu-archivo-icon i {
  color: inherit !important;
}

#div_archivo_tabla .edu-archivo-card--imprimir .edu-archivo-icon i,
#div_archivosugel_tabla .edu-archivo-card--imprimir .edu-archivo-icon i {
  color: #ad1457 !important;
}

#div_archivo_tabla .edu-archivo-card--ugel .edu-archivo-icon i,
#div_archivosugel_tabla .edu-archivo-card--ugel .edu-archivo-icon i {
  color: #0b6e99 !important;
}

.edu-archivo-imp {
  display: inline-flex;
  align-items: center;
  padding: 0.2rem 0.55rem;
  border-radius: 999px;
  font-size: 0.7rem;
  font-weight: 800;
  letter-spacing: 0.03em;
  text-transform: uppercase;
  background: var(--edu-bg-soft);
  color: var(--edu-muted);
}

.edu-archivo-imp--no {
  background: rgba(230, 57, 70, 0.12);
  color: #9b1c1c;
}

.edu-archivo-imp--si {
  background: rgba(42, 157, 143, 0.14);
  color: #1f6f66;
}

.edu-archivo-imp--done {
  background: rgba(11, 110, 153, 0.12);
  color: var(--edu-primary-dark);
}

.edu-archivo-obs-box {
  margin-top: 0;
  padding: 0.55rem 0.65rem;
  border-radius: var(--edu-radius-sm);
  background: var(--edu-bg-soft);
  border: 1px solid var(--edu-border);
  min-width: 0;
}

.edu-archivo-obs-box label {
  display: block;
  margin-bottom: 0.3rem;
  font-size: 0.68rem;
  font-weight: 800;
  text-transform: uppercase;
  letter-spacing: 0.04em;
  color: var(--edu-muted);
}

.edu-archivo-obs-box textarea.form-control {
  width: 100% !important;
  max-width: 100% !important;
  min-height: 64px !important;
  resize: vertical;
  box-sizing: border-box !important;
}

.edu-archivo-obs-actions {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 0.4rem;
  margin-top: 0.45rem;
}

.edu-archivo-obs-actions > .btn {
  width: auto;
  flex: 1 1 auto;
  min-width: 0;
  margin-top: 0;
  justify-content: center;
}

.edu-archivo-obs-actions .edu-archivo-status {
  flex: 1 1 auto;
  margin: 0;
}

.edu-archivo-obs-box textarea {
  margin-bottom: 0.5rem;
}

.edu-archivo-obs-view {
  margin-top: 0.65rem;
  padding: 0.65rem 0.75rem;
  border-radius: var(--edu-radius-sm);
  background: rgba(206, 147, 216, 0.16);
  border: 1px solid rgba(173, 20, 87, 0.18);
}

.edu-archivo-obs-view strong {
  display: block;
  margin-bottom: 0.25rem;
  font-size: 0.72rem;
  font-weight: 800;
  letter-spacing: 0.04em;
  text-transform: uppercase;
  color: #ad1457;
}

.edu-archivo-obs-view p {
  margin: 0;
  font-size: 0.88rem;
  font-weight: 700;
  color: var(--edu-ink);
  line-height: 1.35;
}

.edu-archivo-status {
  display: inline-flex;
  align-items: center;
  flex: 1 1 100%;
  gap: 0.35rem;
  padding: 0.35rem 0.5rem;
  border-radius: 10px;
  font-size: 0.72rem;
  font-weight: 800;
  line-height: 1.25;
  word-break: break-word;
}

.edu-archivo-status .btn {
  flex: 0 0 auto !important;
  min-width: 32px !important;
  width: 32px !important;
  padding: 0 !important;
}

.edu-archivo-status--warn {
  background: rgba(173, 20, 87, 0.1);
  color: #ad1457;
}

.edu-archivo-status--ok {
  background: rgba(0, 121, 107, 0.12);
  color: #00796b;
}

.edu-archivo-upload {
  margin-top: 0.65rem;
  padding: 0.65rem 0.75rem;
  border-radius: var(--edu-radius-sm);
  background: rgba(232, 154, 12, 0.1);
  border: 1px dashed rgba(232, 154, 12, 0.45);
}

.edu-archivo-upload-hint {
  margin: 0 0 0.55rem;
  font-size: 0.82rem;
  font-weight: 700;
  color: #c47f06;
  display: flex;
  align-items: center;
  gap: 0.4rem;
}

/* Archivos admin: CSS Grid (evita pelea con flex/col Bootstrap) */
#contenido .edu-archivo-grid,
#div_archivo_tabla .edu-archivo-grid,
.edu-archivo-wrap .edu-archivo-grid {
  display: grid !important;
  grid-template-columns: 1fr !important;
  gap: 0.85rem !important;
  width: 100% !important;
  max-width: 100% !important;
  margin: 0 !important;
  padding: 0 !important;
  box-sizing: border-box !important;
}

@media (min-width: 768px) {
  #contenido .edu-archivo-grid,
  #div_archivo_tabla .edu-archivo-grid,
  .edu-archivo-wrap .edu-archivo-grid {
    grid-template-columns: repeat(2, minmax(0, 1fr)) !important;
  }
}

@media (min-width: 992px) {
  #contenido .edu-archivo-grid,
  #div_archivo_tabla .edu-archivo-grid,
  .edu-archivo-wrap .edu-archivo-grid {
    grid-template-columns: repeat(4, minmax(0, 1fr)) !important;
  }
}

#contenido .edu-archivo-grid > .edu-archivo-item,
#div_archivo_tabla .edu-archivo-grid > .edu-archivo-item,
.edu-archivo-wrap .edu-archivo-grid > .edu-archivo-item {
  width: auto !important;
  max-width: none !important;
  min-width: 0 !important;
  flex: none !important;
  float: none !important;
  padding: 0 !important;
  margin: 0 !important;
  box-sizing: border-box !important;
  animation: eduIncFadeUp 0.45s ease both;
  animation-delay: var(--edu-inc-delay, 0s);
}

#contenido .edu-archivo-grid > .edu-archivo-item,
#div_archivo_tabla .edu-archivo-grid > .edu-archivo-item {
  display: flex !important;
  flex-direction: column !important;
  min-width: 0 !important;
}

#contenido .edu-archivo-grid > .edu-archivo-item > .edu-archivo-card,
#div_archivo_tabla .edu-archivo-grid > .edu-archivo-item > .edu-archivo-card {
  height: 100% !important;
  width: 100% !important;
  max-width: 100% !important;
}


/* =========================================================
   Portal docente ? Mis trabajos
   ========================================================= */

.edu-trabajo-wrap .edu-incidencia-head {
  margin-bottom: 1rem;
}

.edu-trabajo-session {
  margin-bottom: 1.25rem;
}

.edu-trabajo-session-head {
  margin-bottom: 0.75rem;
}

.edu-trabajo-card {
  height: auto !important;
  min-height: 0 !important;
  color: #1a2b3c !important;
  background: #fff !important;
  overflow: visible !important;
}

.edu-trabajo-card .edu-incidencia-detail,
.edu-trabajo-card .edu-prof-name,
.edu-trabajo-card .edu-incidencia-meta li span {
  color: #1a2b3c !important;
}

.edu-trabajo-card .edu-prof-role,
.edu-trabajo-card .edu-incidencia-meta li {
  color: #5c6b7a !important;
}

.edu-trabajo-card .edu-prof-avatar {
  display: flex !important;
  align-items: center;
  justify-content: center;
  font-size: 1.15rem;
  color: var(--edu-inc-accent, #0b6e99) !important;
  background: #fff !important;
}

#contenido .edu-trabajo-wrap .edu-incidencia-grid > .edu-incidencia-col {
  flex: 0 0 100% !important;
  max-width: 100% !important;
  width: 100% !important;
  padding-left: 0.5rem !important;
  padding-right: 0.5rem !important;
  box-sizing: border-box !important;
}

@media (min-width: 768px) {
  #contenido .edu-trabajo-wrap .edu-incidencia-grid > .edu-incidencia-col {
    flex: 0 0 50% !important;
    max-width: 50% !important;
    width: 50% !important;
  }
}

@media (min-width: 1200px) {
  #contenido .edu-trabajo-wrap .edu-incidencia-grid > .edu-incidencia-col {
    flex: 0 0 33.333333% !important;
    max-width: 33.333333% !important;
    width: 33.333333% !important;
  }
}

/* Portal alumno ? detalle / listado Mit trabajo */
.edu-alu-mitrabajo-des{
  margin: 0 1rem 1rem;
  padding: 0.75rem 0.9rem;
  background: #f4f8fb;
  border-radius: 10px;
  font-size: 0.88rem;
  color: #334155;
  line-height: 1.45;
}
.edu-alu-mitrabajo-form{ padding: 0.85rem 1rem 1rem; }
.edu-alu-mitrabajo-upload{ margin-bottom: 0.85rem; }
.edu-alu-mitrabajo-filelbl{
  display: flex;
  align-items: center;
  gap: 0.85rem;
  cursor: pointer;
  padding: 0.65rem 0.75rem;
  border: 1px dashed rgba(11,110,153,0.35);
  border-radius: 12px;
  background: rgba(11,110,153,0.04);
  margin: 0;
  transition: border-color .2s ease, background .2s ease;
}
.edu-alu-mitrabajo-filelbl:hover{
  border-color: rgba(11,110,153,0.55);
  background: rgba(11,110,153,0.08);
}
.edu-alu-mitrabajo-filelbl .edu-prof-avatar-wrap{
  width: 56px;
  height: 56px;
}
.edu-alu-mitrabajo-filetxt{
  display: flex;
  flex-direction: column;
  gap: 0.15rem;
}
.edu-alu-mitrabajo-filetxt strong{
  font-size: 0.95rem;
  color: #1a2b3c;
}
.edu-alu-mitrabajo-filetxt small{ color: #6c7a89; }
.edu-alu-nota-ok{ color: #0D47A1; font-size: 1.15rem; }
.edu-alu-nota-bajo{ color: #D50000; font-size: 1.15rem; }
.edu-alu-mitrabajo--ok{ --edu-inc-accent: #2e7d32; }
.edu-alu-mitrabajo--pend{ --edu-inc-accent: #c62828; }

/* Notas */
#contenido table td[style*="#0D47A1"],
#contenido table span[style*="#0D47A1"] {
  color: var(--edu-primary-dark) !important;
}

#contenido table th[style*="#CCFF90"],
#contenido table td[style*="#CCFF90"] {
  background: rgba(42, 157, 143, 0.18) !important;
  color: var(--edu-ink) !important;
}

/* Facebook Page plugin (inicio) */
#contenido .edu-fb-wrap {
  margin-top: 0.85rem;
  border-radius: var(--edu-radius-sm);
  overflow: hidden;
}

#contenido .edu-fb-wrap .card-header {
  background: linear-gradient(135deg, #1877f2, #0b5fcc);
  color: #fff;
  border-bottom: 0;
}

#contenido .edu-fb-wrap .card-title {
  font-family: var(--edu-display);
  font-weight: 800;
  font-size: 0.95rem;
  color: #fff;
}

#contenido .edu-fb-wrap .card-body {
  min-height: 120px;
  background: #fff;
}

#contenido .edu-fb-wrap .fb-page,
#contenido .edu-fb-wrap .fb-page > span,
#contenido .edu-fb-wrap iframe {
  width: 100% !important;
  max-width: 100%;
}

/* Feed / publicaciones */
#contenido #div_contenedor_publicidad > .card,
#contenido .card.card-widget {
  margin-bottom: 0.9rem;
}

#contenido .user-block .username,
#contenido .user-block .username a,
#contenido .edu-post-author {
  font-family: var(--edu-display);
  font-weight: 800 !important;
  color: var(--edu-primary-dark) !important;
}

#contenido .edu-composer-card > .card-header,
#contenido .edu-filter-card > .card-header {
  background: linear-gradient(180deg, #fff, var(--edu-bg-soft)) !important;
}

#contenido .edu-filter-card {
  margin-bottom: 0.65rem;
}

#contenido .edu-aula-tabs {
  margin-top: 0.25rem;
}

#contenido .user-block .description {
  color: var(--edu-muted) !important;
  font-weight: 600;
}

/* Cuenta cobrar ? cabecera cliente + filtros */
#contenido .edu-cuecob-deudas-card > .card-header {
  padding: 1rem 1.1rem 0.85rem !important;
  background: #fff !important;
  border-bottom: 1px solid var(--edu-border);
}

#contenido .edu-cuecob-cliente {
  display: flex;
  align-items: center;
  gap: 0.85rem;
  width: 100%;
  max-width: 100%;
  margin: 0 0 0.9rem;
  padding: 0.75rem 0.9rem;
  border: 1px solid rgba(11, 110, 153, 0.14);
  border-radius: 12px;
  background: linear-gradient(135deg, rgba(11, 110, 153, 0.06) 0%, #fff 55%);
  box-shadow: none;
  float: none !important;
  clear: both;
}

#contenido .edu-cuecob-cliente-avatar {
  flex: 0 0 48px;
  width: 48px;
  height: 48px;
  border-radius: 12px;
  overflow: hidden;
  background: var(--edu-primary-soft);
  border: 1px solid rgba(11, 110, 153, 0.16);
}

#contenido .edu-cuecob-cliente-avatar img {
  display: block;
  width: 100%;
  height: 100%;
  object-fit: cover;
  float: none !important;
  margin: 0;
  border-radius: 0;
}

#contenido .edu-cuecob-cliente-text {
  display: flex;
  flex-direction: column;
  gap: 0.15rem;
  min-width: 0;
  flex: 1 1 auto;
}

#contenido .edu-cuecob-cliente-eyebrow {
  font-size: 0.68rem;
  font-weight: 800;
  letter-spacing: 0.06em;
  text-transform: uppercase;
  color: var(--edu-muted);
  line-height: 1.2;
}

#contenido .edu-cuecob-cliente-name {
  font-family: var(--edu-display);
  font-size: 1.05rem;
  font-weight: 800;
  color: var(--edu-primary-dark);
  line-height: 1.25;
  word-break: break-word;
}

#contenido .edu-cuecob-cliente-doc {
  display: inline-flex;
  align-items: center;
  gap: 0.35rem;
  width: fit-content;
  margin-top: 0.15rem;
  padding: 0.18rem 0.55rem;
  border-radius: 999px;
  font-size: 0.75rem;
  font-weight: 800;
  color: #9b1c1c;
  background: rgba(230, 57, 70, 0.1);
  line-height: 1.3;
}

#contenido .edu-cuecob-filters {
  margin-top: 0.15rem;
}

#contenido .edu-cuecob-filters .edu-filter-actions {
  display: flex !important;
  align-items: flex-end;
  padding-bottom: 0.35rem;
}

#contenido textarea#txt_publicacion {
  min-height: 88px;
  border-radius: 12px !important;
  resize: vertical;
}

/* Chat flotante */
#chat_ventana,
#chat_ventana .direct-chat,
.direct-chat.direct-chat-primary,
.edu-chat-window {
  font-family: var(--edu-font) !important;
}

#chat_ventana .direct-chat,
.direct-chat.direct-chat-primary,
.edu-chat-window {
  border-radius: 16px !important;
  overflow: hidden;
  box-shadow: 0 18px 40px rgba(8, 40, 60, 0.28);
  border: 1px solid rgba(255, 255, 255, 0.35);
}

#chat_ventana .direct-chat .card-header,
.direct-chat.direct-chat-primary > .card-header,
.edu-chat-window > .card-header {
  background: linear-gradient(135deg, var(--edu-primary-dark), var(--edu-primary)) !important;
  color: #fff !important;
  border-bottom: 0 !important;
}

#chat_ventana .direct-chat .card-title,
.direct-chat.direct-chat-primary .card-title,
.edu-chat-window .card-title {
  font-family: var(--edu-display) !important;
  font-weight: 800;
  letter-spacing: -0.01em;
}

#chat_ventana .direct-chat-messages,
.direct-chat .direct-chat-messages {
  background:
    radial-gradient(circle at 10% 0%, rgba(11, 110, 153, 0.06), transparent 40%),
    #f4fafc;
  font-family: var(--edu-font) !important;
}

.direct-chat-name {
  font-family: var(--edu-display) !important;
  font-weight: 800 !important;
  font-size: 0.82rem !important;
}

.direct-chat-timestamp {
  font-family: var(--edu-font) !important;
  font-weight: 700 !important;
  font-size: 0.72rem !important;
  color: var(--edu-muted) !important;
}

.direct-chat-text {
  border-radius: 12px !important;
  box-shadow: var(--edu-shadow-sm);
  font-family: var(--edu-font) !important;
  font-weight: 600;
  font-size: 0.9rem !important;
  line-height: 1.4;
}

.direct-chat-primary .right > .direct-chat-text {
  background: var(--edu-primary) !important;
  border-color: var(--edu-primary) !important;
  color: #fff !important;
}

#chat_ventana .card-footer,
.direct-chat .card-footer {
  background: #fff;
  border-top: 1px solid var(--edu-border);
}

#chat_ventana .card-footer .form-control {
  border-radius: 999px 0 0 999px !important;
  font-family: var(--edu-font) !important;
  font-weight: 600;
}

#chat_ventana .card-footer .btn,
#chat_ventana .card-footer #btn_send {
  border-radius: 0 999px 999px 0 !important;
}

/* =========================================================
   Contactos del chat (aside / control-sidebar)
   ========================================================= */
#controlsidebar_chat,
#controlsidebar_chat .control-sidebar-content,
#controlsidebar_chat .os-content,
#div_chatamigo,
.edu-chat-aside {
  font-family: var(--edu-font) !important;
}

#controlsidebar_chat.control-sidebar-dark {
  background:
    radial-gradient(circle at 20% 0%, rgba(232, 154, 12, 0.18), transparent 45%),
    linear-gradient(185deg, var(--edu-sidebar) 0%, var(--edu-sidebar-2) 55%, #0b6e99 100%) !important;
  border-left: 1px solid rgba(255, 255, 255, 0.12);
  box-shadow: -8px 0 28px rgba(8, 40, 60, 0.28);
}

#div_chatamigo .card-header,
.edu-chat-aside .card-header {
  background: rgba(255, 255, 255, 0.08) !important;
  border: 1px solid rgba(255, 255, 255, 0.12) !important;
  border-radius: 12px !important;
  margin-bottom: 0.75rem;
  padding: 0.7rem 0.85rem !important;
  color: #fff !important;
}

#div_chatamigo .card-title,
.edu-chat-aside .card-title {
  font-family: var(--edu-display) !important;
  font-weight: 800 !important;
  font-size: 1rem !important;
  letter-spacing: -0.01em;
  color: #fff !important;
}

#div_chatamigo .contacts-list,
.edu-chat-aside .contacts-list,
#controlsidebar_chat .contacts-list {
  padding-left: 0;
  list-style: none;
  margin: 0;
}

#div_chatamigo .contacts-list > li,
.edu-chat-aside .contacts-list > li,
#controlsidebar_chat .contacts-list > li {
  border-bottom: 1px solid rgba(255, 255, 255, 0.08);
}

#div_chatamigo .contacts-list > li > a,
.edu-chat-aside .contacts-list > li > a,
#controlsidebar_chat .contacts-list > li > a,
.div_amigo {
  display: block;
  padding: 0.65rem 0.55rem;
  border-radius: 12px;
  color: #fff !important;
  background: transparent;
  cursor: pointer;
  transition: background 0.2s ease, transform 0.2s ease;
  font-family: var(--edu-font) !important;
}

#div_chatamigo .contacts-list > li > a:hover,
.edu-chat-aside .contacts-list > li > a:hover,
#controlsidebar_chat .contacts-list > li > a:hover,
.div_amigo:hover {
  background: rgba(255, 255, 255, 0.12) !important;
  transform: translateX(-2px);
  text-decoration: none;
}

#controlsidebar_chat .contacts-list-img,
#div_chatamigo .contacts-list-img {
  border: 2px solid rgba(255, 255, 255, 0.35);
  box-shadow: 0 4px 12px rgba(0, 0, 0, 0.2);
}

#controlsidebar_chat .contacts-list-name,
#div_chatamigo .contacts-list-name,
.control-sidebar .contacts-list-name {
  font-family: var(--edu-display) !important;
  font-weight: 800 !important;
  font-size: 0.92rem !important;
  letter-spacing: -0.01em;
  color: #fff !important;
}

#controlsidebar_chat .contacts-list-msg,
#div_chatamigo .contacts-list-msg,
.control-sidebar .contacts-list-msg {
  font-family: var(--edu-font) !important;
  font-weight: 600;
  font-size: 0.78rem !important;
  color: rgba(255, 255, 255, 0.72) !important;
  line-height: 1.3;
}

#controlsidebar_chat .contacts-list-date,
#div_chatamigo .contacts-list-date,
.control-sidebar .contacts-list-date {
  font-family: var(--edu-font) !important;
  font-weight: 700;
  font-size: 0.68rem !important;
  color: rgba(255, 255, 255, 0.55) !important;
  text-transform: uppercase;
  letter-spacing: 0.04em;
}

/* Nav pills alumno (materias) */
#contenido .nav-pills .nav-link {
  border-radius: 10px;
  font-weight: 700;
  color: var(--edu-muted);
}

#contenido .nav-pills .nav-link.active {
  background: linear-gradient(135deg, var(--edu-primary), var(--edu-primary-dark));
  box-shadow: 0 6px 14px rgba(11, 110, 153, 0.28);
}

/* DataTables dentro de m?dulos */
#contenido .dataTables_wrapper,
.modal-body .dataTables_wrapper {
  font-family: var(--edu-font) !important;
}

#contenido .dataTables_wrapper .dataTables_filter input,
#contenido .dataTables_wrapper .dataTables_length select,
.modal-body .dataTables_wrapper .dataTables_filter input,
.modal-body .dataTables_wrapper .dataTables_length select {
  border-radius: 10px;
  border: 1px solid rgba(11, 110, 153, 0.22);
  font-family: var(--edu-font) !important;
  font-weight: 600;
}

#contenido .dataTables_wrapper .dataTables_paginate .paginate_button,
.modal-body .dataTables_wrapper .dataTables_paginate .paginate_button {
  font-family: var(--edu-font) !important;
  font-weight: 700 !important;
}

#contenido .dataTables_wrapper .dataTables_paginate .paginate_button.current {
  background: var(--edu-primary) !important;
  border-color: var(--edu-primary) !important;
  color: #fff !important;
  border-radius: 8px;
}

/* Empty / loading states */
#contenido .ui-state-disabled {
  opacity: 0.72;
  filter: saturate(0.85);
}

#contenido .spinner-border {
  color: var(--edu-primary);
}

@media (max-width: 767.98px) {
  #contenido.content-wrapper,
  #contenido {
    --edu-module-x: 0.65rem;
    --edu-module-y: 0.55rem;
    --edu-module-gap: 0.55rem;
  }

  #contenido .content-header {
    margin: 0 0 var(--edu-module-gap) 0;
    padding: 0.85rem 0.9rem;
  }

  #contenido .content-header h1 {
    font-size: 1.2rem;
  }

  #contenido .nav-tabs .nav-link {
    font-size: 0.75rem;
    padding: 0.45rem 0.6rem !important;
  }
}

/* =========================================================
   OVERRIDE FINAL ? botones flat en tablas de datos
   (gana a .btn-primary redondeado / con sombra)
   Incluye escolaridad_tabla (#tabla_escolaridad)
   ========================================================= */
#contenido #tabla_escolaridad .btn,
#contenido #tabla_escolaridad span.btn,
#contenido #tabla_escolaridad .btn.btn-sm,
#contenido #tabla_escolaridad .btn.btn-primary,
#contenido #tabla_escolaridad .btn.btn-danger,
#contenido #tabla_escolaridad .btn.btn-success,
#contenido #tabla_escolaridad .btn.btn-flat,
#contenido table.table .btn,
#contenido table.table span.btn,
#contenido table.table .btn.btn-sm,
#contenido table.table .btn.btn-xs,
#contenido table.table .btn.btn-primary,
#contenido table.table .btn.btn-success,
#contenido table.table .btn.btn-danger,
#contenido table.table .btn.btn-warning,
#contenido table.table .btn.btn-info,
#contenido table.table .btn.btn-default,
#contenido table.dataTable .btn,
#contenido table.dataTable span.btn,
#contenido table.dataTable .btn.btn-sm,
#contenido .dataTables_wrapper table .btn,
#contenido .dataTables_wrapper table span.btn,
.modal-body table.table .btn,
.modal-body table.table span.btn,
.modal-body table.dataTable .btn {
  border-radius: 0 !important;
  box-shadow: none !important;
  text-shadow: none !important;
  transform: none !important;
  background-image: none !important;
}

#contenido #tabla_escolaridad td .btn,
#contenido #tabla_escolaridad td span.btn,
#contenido table.table td .btn,
#contenido table.table td span.btn,
#contenido table.dataTable td .btn,
#contenido .dataTables_wrapper table td .btn,
.modal-body table.table td .btn {
  display: inline-flex !important;
  align-items: center !important;
  justify-content: center !important;
  width: 36px !important;
  min-width: 36px !important;
  height: 36px !important;
  min-height: 36px !important;
  max-height: 36px !important;
  padding: 0 !important;
  margin: 0 0.2rem 0.2rem 0 !important;
  border-radius: 0 !important;
  border-width: 1px !important;
  border-style: solid !important;
  box-shadow: none !important;
  background-image: none !important;
}

#contenido #tabla_escolaridad td .btn-primary,
#contenido #tabla_escolaridad td .btn-primary.btn-flat,
#contenido table.table td .btn-primary,
#contenido table.table td .btn-primary.btn-flat,
#contenido table.dataTable td .btn-primary,
#contenido .dataTables_wrapper table td .btn-primary {
  background: var(--edu-primary) !important;
  background-image: none !important;
  border-color: var(--edu-primary-dark) !important;
  color: #fff !important;
  box-shadow: none !important;
  border-radius: 0 !important;
}

#contenido #tabla_escolaridad td .btn-danger,
#contenido table.table td .btn-danger,
#contenido table.dataTable td .btn-danger,
#contenido .dataTables_wrapper table td .btn-danger {
  background: var(--edu-danger) !important;
  background-image: none !important;
  border-color: #c62828 !important;
  color: #fff !important;
  box-shadow: none !important;
  border-radius: 0 !important;
}

#contenido #tabla_escolaridad td .btn-success,
#contenido table.table td .btn-success,
#contenido table.dataTable td .btn-success {
  background: var(--edu-success) !important;
  background-image: none !important;
  border-color: #238b7e !important;
  color: #fff !important;
  box-shadow: none !important;
  border-radius: 0 !important;
}

/* Bot?n "Copiar informacion" encima de la tabla escolaridad */
#contenido .table-responsive + span.btn,
#contenido span.btn.btn-success.btn-flat[onclick*="copiarhorario"],
#contenido > .col-lg-12 > span.btn.btn-success,
#contenido .col-lg-12 > span.btn.btn-success.btn-flat {
  border-radius: 0 !important;
  box-shadow: none !important;
  background-image: none !important;
  background: var(--edu-success) !important;
  border: 1px solid #238b7e !important;
}


/* =========================================================
   Portal alumno ? Mis incidencias
   ========================================================= */
.edu-incidencia-wrap {
  padding: 0.25rem 0 1.25rem;
}

.edu-incidencia-head {
  display: flex;
  align-items: flex-end;
  justify-content: space-between;
  gap: 1rem;
  margin-bottom: 1.25rem;
  padding: 1.1rem 1.25rem;
  background:
    linear-gradient(135deg, rgba(11, 110, 153, 0.08) 0%, rgba(232, 154, 12, 0.06) 100%),
    var(--edu-surface);
  border: 1px solid var(--edu-border);
  border-radius: var(--edu-radius);
  box-shadow: var(--edu-shadow-sm);
}

.edu-incidencia-eyebrow {
  margin: 0 0 0.2rem;
  font-size: 0.72rem;
  font-weight: 800;
  letter-spacing: 0.12em;
  text-transform: uppercase;
  color: var(--edu-primary);
}

.edu-incidencia-title {
  margin: 0;
  font-family: var(--edu-display);
  font-size: 1.55rem;
  font-weight: 800;
  color: var(--edu-ink);
  letter-spacing: -0.03em;
  line-height: 1.15;
}

.edu-incidencia-sub {
  margin: 0.35rem 0 0;
  color: var(--edu-muted);
  font-size: 0.95rem;
  max-width: 36rem;
}

.edu-incidencia-count {
  flex: 0 0 auto;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-height: 2rem;
  padding: 0.35rem 0.85rem;
  border-radius: 999px;
  background: var(--edu-primary-soft);
  color: var(--edu-primary-dark);
  font-size: 0.8rem;
  font-weight: 800;
  white-space: nowrap;
}

.edu-incidencia-grid {
  display: flex !important;
  flex-wrap: wrap !important;
  margin-left: -0.5rem !important;
  margin-right: -0.5rem !important;
  width: auto !important;
}

/* Anula el force 100% de #contenido section.content > .container-fluid > .row > col-* */
#contenido .edu-incidencia-wrap .edu-incidencia-grid > .edu-incidencia-col,
#contenido section.content.edu-incidencia-wrap > .container-fluid > .row.edu-incidencia-grid > [class*="col-"].edu-incidencia-col,
#contenido section.content > .container-fluid > .row.edu-incidencia-grid > .edu-incidencia-col {
  flex: 0 0 100% !important;
  max-width: 100% !important;
  width: 100% !important;
  padding-left: 0.5rem !important;
  padding-right: 0.5rem !important;
  box-sizing: border-box !important;
  animation: eduIncFadeUp 0.45s ease both;
  animation-delay: var(--edu-inc-delay, 0s);
}

/* Laptop / PC: incidencias/profesores en 3 columnas (pagos/archivos/trabajos tienen su grid) */
@media (min-width: 992px) {
  #contenido .edu-incidencia-wrap:not(.edu-pago-wrap):not(.edu-archivo-wrap):not(.edu-trabajo-wrap) .edu-incidencia-grid > .edu-incidencia-col,
  #contenido section.content.edu-incidencia-wrap:not(.edu-pago-wrap):not(.edu-archivo-wrap):not(.edu-trabajo-wrap) > .container-fluid > .row.edu-incidencia-grid > [class*="col-"].edu-incidencia-col,
  #contenido section.content.edu-incidencia-wrap:not(.edu-pago-wrap):not(.edu-archivo-wrap):not(.edu-trabajo-wrap) > .container-fluid > .row.edu-incidencia-grid > .edu-incidencia-col {
    flex: 0 0 33.333333% !important;
    max-width: 33.333333% !important;
    width: 33.333333% !important;
  }
}

@keyframes eduIncFadeUp {
  from {
    opacity: 0;
    transform: translateY(12px);
  }
  to {
    opacity: 1;
    transform: translateY(0);
  }
}

.edu-incidencia-card {
  position: relative;
  height: 100%;
  display: flex;
  flex-direction: column;
  background: var(--edu-surface);
  border: 1px solid var(--edu-border);
  border-radius: var(--edu-radius);
  box-shadow: var(--edu-shadow-sm);
  overflow: hidden;
  transition: transform 0.22s ease, box-shadow 0.22s ease, border-color 0.22s ease;
}

.edu-incidencia-card::before {
  content: "";
  position: absolute;
  left: 0;
  top: 0;
  bottom: 0;
  width: 4px;
  background: var(--edu-inc-accent, var(--edu-danger));
}

.edu-incidencia-card:hover {
  transform: translateY(-3px);
  box-shadow: var(--edu-shadow);
  border-color: rgba(11, 110, 153, 0.22);
}

.edu-incidencia-card--fisico { --edu-inc-accent: #c62828; }
.edu-incidencia-card--sexual { --edu-inc-accent: #ad1457; }
.edu-incidencia-card--verbal { --edu-inc-accent: #ef6c00; }
.edu-incidencia-card--bullying { --edu-inc-accent: #6d4c41; }
.edu-incidencia-card--ciber { --edu-inc-accent: #0277bd; }
.edu-incidencia-card--otro { --edu-inc-accent: #546e7a; }

.edu-incidencia-card-top {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 0.65rem;
  padding: 0.95rem 1rem 0.55rem 1.15rem;
}

.edu-incidencia-badge {
  display: inline-flex;
  align-items: center;
  gap: 0.4rem;
  padding: 0.28rem 0.65rem;
  border-radius: 999px;
  background: var(--edu-bg-soft);
  border: 1px solid rgba(26, 43, 60, 0.08);
  color: var(--edu-inc-accent);
  font-size: 0.75rem;
  font-weight: 800;
  letter-spacing: 0.02em;
  text-transform: uppercase;
}

.edu-incidencia-badge i {
  font-size: 0.8rem;
}

.edu-incidencia-date {
  display: inline-flex;
  align-items: center;
  gap: 0.35rem;
  color: var(--edu-muted);
  font-size: 0.78rem;
  font-weight: 700;
  white-space: nowrap;
}

.edu-incidencia-body {
  padding: 0.35rem 1rem 1.05rem 1.15rem;
  display: flex;
  flex-direction: column;
  gap: 0.85rem;
  flex: 1;
}

.edu-incidencia-detail {
  margin: 0;
  font-family: var(--edu-display);
  font-size: 1.05rem;
  font-weight: 700;
  line-height: 1.35;
  color: var(--edu-ink);
  letter-spacing: -0.015em;
}

.edu-incidencia-meta {
  list-style: none;
  margin: 0;
  padding: 0;
  display: flex;
  flex-direction: column;
  gap: 0.4rem;
}

.edu-incidencia-meta li {
  display: flex;
  align-items: flex-start;
  gap: 0.5rem;
  padding: 0.45rem 0.6rem;
  border-radius: var(--edu-radius-sm);
  background: var(--edu-bg-soft);
  color: var(--edu-muted);
  font-size: 0.84rem;
  font-weight: 700;
}

.edu-incidencia-meta li i {
  margin-top: 0.12rem;
  color: var(--edu-primary);
  width: 1rem;
  text-align: center;
}

.edu-incidencia-meta li span {
  color: var(--edu-ink);
}

.edu-incidencia-empty {
  text-align: center;
  padding: 2.5rem 1.25rem;
  background: var(--edu-surface);
  border: 1px dashed rgba(11, 110, 153, 0.25);
  border-radius: var(--edu-radius);
  box-shadow: var(--edu-shadow-sm);
}

.edu-incidencia-empty-icon {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 3.4rem;
  height: 3.4rem;
  margin-bottom: 0.85rem;
  border-radius: 50%;
  background: var(--edu-primary-soft);
  color: var(--edu-primary);
  font-size: 1.35rem;
}

.edu-incidencia-empty strong {
  display: block;
  font-family: var(--edu-display);
  font-size: 1.2rem;
  color: var(--edu-ink);
  margin-bottom: 0.35rem;
}

.edu-incidencia-empty p {
  margin: 0 auto;
  max-width: 26rem;
  color: var(--edu-muted);
}

@media (max-width: 767.98px) {
  .edu-incidencia-head {
    flex-direction: column;
    align-items: flex-start;
  }

  .edu-incidencia-title {
    font-size: 1.35rem;
  }

  .edu-incidencia-card-top {
    flex-wrap: wrap;
  }
}


/* =========================================================
   Portal alumno ? Mis pagos (reusa grid de incidencias)
   ========================================================= */

/* Pagos: 4 columnas en laptop/PC */
@media (min-width: 992px) {
  #contenido .edu-pago-wrap .edu-incidencia-grid > .edu-incidencia-col,
  #contenido section.content.edu-pago-wrap > .container-fluid > .row.edu-incidencia-grid > .edu-incidencia-col,
  #contenido section.content.edu-incidencia-wrap.edu-pago-wrap > .container-fluid > .row.edu-incidencia-grid > [class*="col-"].edu-incidencia-col,
  #contenido section.content.edu-incidencia-wrap.edu-pago-wrap > .container-fluid > .row.edu-incidencia-grid > .edu-incidencia-col {
    flex: 0 0 25% !important;
    max-width: 25% !important;
    width: 25% !important;
  }
}

.edu-pago-card--pagado { --edu-inc-accent: var(--edu-success); }
.edu-pago-card--vencido { --edu-inc-accent: var(--edu-danger); }
.edu-pago-card--pendiente { --edu-inc-accent: var(--edu-info); }
.edu-pago-card--revision { --edu-inc-accent: var(--edu-accent); }

.edu-pago-list {
  gap: 0.55rem !important;
}

.edu-pago-item {
  flex-direction: column !important;
  align-items: stretch !important;
  gap: 0.35rem !important;
}

.edu-pago-item-main,
.edu-pago-item-side {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 0.65rem;
}

.edu-pago-item-main strong {
  color: var(--edu-ink);
  font-size: 0.9rem;
}

.edu-pago-item-main span,
.edu-pago-doc {
  color: var(--edu-muted);
  font-size: 0.8rem;
  font-weight: 700;
}

.edu-pago-monto {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-height: 1.7rem;
  padding: 0.2rem 0.6rem;
  border-radius: 999px;
  font-size: 0.85rem;
  font-weight: 800;
}

/* Fallback sin color-mix */
.edu-pago-card--pagado .edu-pago-monto {
  background: rgba(42, 157, 143, 0.12);
  color: var(--edu-success);
}
.edu-pago-card--vencido .edu-pago-monto {
  background: rgba(230, 57, 70, 0.12);
  color: var(--edu-danger);
}
.edu-pago-card--pendiente .edu-pago-monto {
  background: rgba(77, 171, 206, 0.14);
  color: var(--edu-info);
}


/* =========================================================
   Portal alumno ? Mis profesores
   ========================================================= */

.edu-prof-card {
  --edu-inc-accent: var(--edu-primary);
  cursor: pointer;
  transition: transform 0.28s ease, box-shadow 0.28s ease, border-color 0.28s ease;
}

.edu-prof-card:hover,
.edu-prof-card:focus {
  outline: none;
  transform: translateY(-4px);
  box-shadow: 0 16px 36px rgba(10, 61, 92, 0.14);
  border-color: rgba(11, 110, 153, 0.28);
}

.edu-prof-cta {
  display: inline-flex;
  align-items: center;
  gap: 0.35rem;
  font-size: 0.78rem;
  font-weight: 700;
  letter-spacing: 0.02em;
  color: var(--edu-primary);
  opacity: 0.75;
  transition: opacity 0.2s ease, transform 0.2s ease;
}

.edu-prof-card:hover .edu-prof-cta {
  opacity: 1;
  transform: translateX(2px);
}

.edu-prof-body {
  display: flex !important;
  flex-direction: row !important;
  align-items: center;
  gap: 1rem !important;
}

.edu-prof-avatar-wrap {
  flex: 0 0 auto;
  width: 72px;
  height: 72px;
  border-radius: 50%;
  padding: 3px;
  background: linear-gradient(145deg, var(--edu-primary) 0%, var(--edu-accent) 100%);
  box-shadow: 0 8px 18px rgba(11, 110, 153, 0.22);
}

.edu-prof-avatar {
  display: block;
  width: 100%;
  height: 100%;
  object-fit: cover;
  border-radius: 50%;
  border: 3px solid var(--edu-surface);
  background: var(--edu-bg-soft);
}

.edu-prof-info {
  min-width: 0;
  flex: 1 1 auto;
}

.edu-prof-name {
  margin-bottom: 0.15rem !important;
  font-size: 1.05rem !important;
  line-height: 1.25 !important;
}

.edu-prof-role {
  display: inline-block;
  margin-bottom: 0.55rem;
  font-size: 0.72rem;
  font-weight: 800;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  color: var(--edu-muted);
}

.edu-prof-info .edu-incidencia-meta {
  margin-top: 0 !important;
}

@media (max-width: 575.98px) {
  .edu-prof-body {
    flex-direction: column !important;
    align-items: flex-start;
    text-align: left;
  }

  .edu-prof-avatar-wrap {
    width: 64px;
    height: 64px;
  }
}


/* =========================================================
   Portal docente ? Mis materias (edu-mat)
   ========================================================= */

.edu-mat-wrap .edu-incidencia-head {
  margin-bottom: 1rem;
}

.edu-mat-layout {
  display: grid;
  grid-template-columns: minmax(240px, 300px) minmax(0, 1fr);
  gap: 1rem;
  align-items: start;
}

.edu-mat-subjects {
  display: flex;
  flex-direction: column;
  gap: 0.65rem;
  max-height: calc(100vh - 220px);
  overflow: auto;
  padding-right: 0.15rem;
}

.edu-mat-subjects-mobile {
  display: none;
  gap: 0.65rem;
  overflow-x: auto;
  padding-bottom: 0.35rem;
  margin-bottom: 0.75rem;
  -webkit-overflow-scrolling: touch;
}

.edu-mat-subjects-mobile .edu-mat-subject-card {
  flex: 0 0 220px;
  max-width: 220px;
}

.edu-mat-subject-card {
  --edu-inc-accent: var(--edu-primary);
  cursor: pointer;
  margin: 0;
  /* Anula height:100% de .edu-incidencia-card: estiraba cada item
     al alto del sidebar y el texto quedaba fuera de vista */
  height: auto !important;
  min-height: 0 !important;
  flex: 0 0 auto !important;
  color: #1a2b3c !important;
  background: #fff !important;
  overflow: visible !important;
}

.edu-mat-subject-card.is-active {
  border-color: rgba(11, 110, 153, 0.45);
  box-shadow: 0 12px 28px rgba(10, 61, 92, 0.14);
  transform: translateY(-2px);
}

.edu-mat-subject-card .edu-incidencia-badge,
.edu-mat-subject-card .edu-prof-cta,
.edu-mat-subject-card .edu-incidencia-detail,
.edu-mat-subject-card .edu-prof-name,
.edu-mat-subject-card .edu-prof-role,
.edu-mat-subject-card .edu-incidencia-meta,
.edu-mat-subject-card .edu-incidencia-meta li,
.edu-mat-subject-card .edu-incidencia-meta li span {
  color: #1a2b3c !important;
  opacity: 1 !important;
  visibility: visible !important;
}

.edu-mat-subject-card .edu-incidencia-badge {
  color: #0b6e99 !important;
  background: #e6f4fa !important;
}

.edu-mat-subject-card .edu-prof-cta {
  color: #0b6e99 !important;
}

.edu-mat-subject-card .edu-prof-role,
.edu-mat-subject-card .edu-incidencia-meta li {
  color: #5c6b7a !important;
}

.edu-mat-subject-card .edu-incidencia-meta li i {
  color: #0b6e99 !important;
}

.edu-mat-subject-card .edu-prof-avatar-wrap {
  width: 56px;
  height: 56px;
  background: linear-gradient(145deg, var(--edu-primary) 0%, var(--edu-info) 100%);
}

.edu-mat-subject-card .edu-prof-avatar,
.edu-mat-trabajo-card .edu-prof-avatar {
  display: flex !important;
  align-items: center;
  justify-content: center;
  font-size: 1.25rem;
  color: #0b6e99 !important;
  background: #fff !important;
}

.edu-mat-subject-card .edu-prof-body {
  align-items: flex-start !important;
}

.edu-mat-trabajo-card--trabajo { --edu-inc-accent: #e63946; }
.edu-mat-trabajo-card--practica { --edu-inc-accent: #e89a0c; }
.edu-mat-trabajo-card--evaluacion { --edu-inc-accent: #0b6e99; }

.edu-mat-trabajo-card .edu-incidencia-meta a {
  display: inline-flex;
  align-items: center;
  gap: 0.45rem;
  color: var(--edu-primary);
  font-weight: 700;
}

/* ===== Informacion general ? listado universitario de trabajos ===== */
.edu-ig-trabajo-shell{
  margin: 0;
}
.edu-ig-trabajo-list{
  margin-left: -0.5rem;
  margin-right: -0.5rem;
}
.edu-ig-trabajo-col{
  padding-left: 0.5rem;
  padding-right: 0.5rem;
  margin-bottom: 1rem;
  display: flex;
}
.edu-ig-trabajo-card{
  display: flex;
  gap: 0;
  width: 100%;
  height: 100%;
  background: #fff;
  border: 1px solid rgba(11,110,153,.14);
  border-radius: 14px;
  box-shadow: 0 4px 14px rgba(10,61,92,.04);
  overflow: hidden;
}
.edu-ig-trabajo-accent{
  flex: 0 0 5px;
  background: var(--edu-inc-accent, #0b6e99);
}
.edu-ig-trabajo-card.is-quiz .edu-ig-trabajo-accent{
  background: linear-gradient(180deg, #0b6e99 0%, #2a9d8f 100%);
}
.edu-ig-trabajo-main{
  flex: 1 1 auto;
  min-width: 0;
  padding: .85rem .9rem .95rem;
  display: flex;
  flex-direction: column;
}
.edu-ig-trabajo-head{
  display: flex;
  flex-wrap: wrap;
  align-items: flex-start;
  gap: .65rem;
  margin-bottom: .5rem;
}
.edu-ig-trabajo-ico{
  width: 2.35rem;
  height: 2.35rem;
  border-radius: 11px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  background: rgba(11,110,153,.08);
  color: var(--edu-inc-accent, #0b6e99);
  font-size: 1rem;
  flex: 0 0 auto;
}
.edu-ig-trabajo-titles{
  flex: 1 1 140px;
  min-width: 0;
}
.edu-ig-trabajo-kicker{
  margin: 0 0 .12rem;
  font-size: .66rem;
  font-weight: 800;
  letter-spacing: .05em;
  text-transform: uppercase;
  color: #0b6e99;
}
.edu-ig-trabajo-title{
  margin: 0;
  font-family: var(--edu-display);
  font-size: 1rem;
  font-weight: 800;
  line-height: 1.3;
  color: #0a3d5c;
}
.edu-ig-trabajo-ses{
  margin: .2rem 0 0;
  font-size: .74rem;
  color: #5c6b7a;
  font-weight: 600;
  line-height: 1.35;
}
.edu-ig-trabajo-ses i{ margin-right: .4rem; color: #0b6e99; }
.edu-ig-trabajo-tags{
  display: flex;
  flex-wrap: wrap;
  gap: .3rem;
  margin: .1rem 0 .45rem;
}
.edu-ig-trabajo-tags .edu-quiz-pill{
  font-size: .68rem;
  max-width: 100%;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.edu-ig-trabajo-tags .edu-quiz-pill i{
  margin-right: 0;
}
.edu-ig-trabajo-des{
  margin: 0 0 .45rem;
  padding: .45rem .55rem;
  border-radius: 10px;
  background: #f7fbfd;
  border: 1px solid rgba(11,110,153,.1);
  color: #1a2b3c;
  font-size: .8rem;
  line-height: 1.35;
}
.edu-ig-trabajo-meta{
  list-style: none;
  margin: 0 0 .55rem;
  padding: 0;
  display: flex;
  flex-direction: column;
  gap: .28rem;
}
.edu-ig-trabajo-meta li{
  display: inline-flex;
  align-items: flex-start;
  gap: .5rem;
  font-size: .76rem;
  font-weight: 600;
  color: #5c6b7a;
  line-height: 1.35;
}
.edu-ig-trabajo-meta i{
  color: #0b6e99;
  width: 1rem;
  text-align: center;
  margin-top: .12rem;
  flex: 0 0 auto;
}
.edu-ig-trabajo-actions{
  display: flex;
  flex-wrap: wrap;
  gap: .4rem;
  margin-top: auto;
  padding-top: .45rem;
  border-top: 1px dashed rgba(11,110,153,.12);
}
.edu-ig-trabajo-actions .edu-quiz-btn{
  flex: 1 1 auto;
  justify-content: center;
}
.edu-ig-trabajo-actions a.edu-quiz-btn,
.edu-ig-trabajo-actions a.edu-quiz-btn:hover,
.edu-ig-trabajo-actions a.edu-quiz-btn:focus,
.edu-ig-trabajo-actions a.edu-quiz-btn:active,
.edu-ig-trabajo-actions a.edu-quiz-btn:visited{
  text-decoration: none !important;
}
.edu-ig-trabajo-actions a.edu-quiz-btn--primary,
.edu-ig-trabajo-actions a.edu-quiz-btn--primary:hover,
.edu-ig-trabajo-actions a.edu-quiz-btn--primary:focus{
  color: #fff !important;
}
.edu-ig-trabajo-actions a.edu-quiz-btn--ghost,
.edu-ig-trabajo-actions a.edu-quiz-btn--ghost:hover,
.edu-ig-trabajo-actions a.edu-quiz-btn--ghost:focus{
  color: #0a3d5c !important;
}
@media (max-width: 576px){
  .edu-ig-trabajo-actions .edu-quiz-btn{ width: 100%; }
}
.edu-ig-trabajo-card.is-warn{
  border-color: rgba(232,154,12,.45);
  box-shadow: 0 0 0 1px rgba(230,168,23,.12), 0 4px 14px rgba(10,61,92,.04);
}
.edu-mat-trab-shell{ margin: 0; }
.edu-mat-trab-del{
  border: 0;
  width: 2rem;
  height: 2rem;
  border-radius: 8px;
  background: #fff3cd;
  color: #8a5a00;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  cursor: pointer;
  flex: 0 0 auto;
}
.edu-mat-trab-del:hover{ background: #ffe08a; }
.edu-mat-evatra-form{ margin: 0; }
.edu-mat-evatra-toggle{
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: .55rem;
  padding: .55rem .65rem;
  border-radius: 10px;
  background: #f7fbfd;
  border: 1px solid rgba(11,110,153,.1);
}
.edu-mat-evatra-toggle-lbl{
  font-size: .84rem;
  font-weight: 700;
  color: #1a2b3c;
}
.edu-mat-evatra-foot{
  display: flex;
  justify-content: flex-end;
  flex-wrap: wrap;
  gap: .45rem;
  margin-top: .25rem;
  padding-top: .75rem;
  border-top: 1px dashed rgba(11,110,153,.14);
}

/* Mimateria ? Asistencias / Videos / Archivos */
.edu-mat-asis-shell,
.edu-mat-media-shell,
.edu-mat-asis-form{ margin: 0; }
.edu-mat-asis-list{
  display: flex;
  flex-direction: column;
  gap: .65rem;
}
.edu-mat-asis-card{
  display: flex;
  flex-wrap: wrap;
  gap: .75rem;
  align-items: center;
  padding: .85rem 1rem;
  border-radius: 14px;
  background: #fff;
  border: 1px solid rgba(11,110,153,.14);
  box-shadow: 0 4px 12px rgba(10,61,92,.03);
}
.edu-mat-asis-ico{
  width: 2.5rem;
  height: 2.5rem;
  border-radius: 12px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  background: #e6f4fa;
  color: #0b6e99;
  flex: 0 0 auto;
}
.edu-mat-asis-main{ flex: 1 1 200px; min-width: 0; }
.edu-mat-asis-kicker{
  margin: 0 0 .15rem;
  font-size: .72rem;
  font-weight: 700;
  color: #5c6b7a;
}
.edu-mat-asis-tit{
  display: block;
  font-family: var(--edu-display);
  font-size: 1rem;
  font-weight: 800;
  color: #0a3d5c;
  line-height: 1.3;
}
.edu-mat-asis-tags{
  display: flex;
  flex-wrap: wrap;
  gap: .3rem;
  margin-top: .35rem;
}
.edu-mat-asis-side{ margin-left: auto; }
.edu-mat-asis-bulk{
  display: flex;
  flex-wrap: wrap;
  gap: .4rem;
  margin-bottom: .75rem;
}
.edu-mat-asis-bulk--f{ color: #c62828 !important; border-color: rgba(198,40,40,.25) !important; background: #fff5f5 !important; }
.edu-mat-asis-bulk--t{ color: #8a5a00 !important; border-color: rgba(232,154,12,.3) !important; background: #fff8e8 !important; }
.edu-mat-asis-bulk--a{ color: #1b7a6e !important; border-color: rgba(42,157,143,.3) !important; background: #eef8f4 !important; }
.edu-mat-asis-alu-list{
  display: flex;
  flex-direction: column;
  gap: .45rem;
  max-height: 420px;
  overflow: auto;
  padding-right: .15rem;
}
.edu-mat-asis-alu-row{
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  justify-content: space-between;
  gap: .55rem;
  padding: .55rem .65rem;
  border-radius: 12px;
  background: #f7fbfd;
  border: 1px solid rgba(11,110,153,.1);
}
.edu-mat-asis-alu-name{
  display: flex;
  align-items: center;
  gap: .5rem;
  min-width: 0;
}
.edu-mat-asis-alu-name .edu-quiz-attempt-avatar{
  width: 2rem;
  height: 2rem;
  font-size: .85rem;
}
.edu-mat-asis-alu-name strong{
  font-size: .88rem;
  color: #0a3d5c;
}
.edu-mat-asis-alu-opts{
  display: flex;
  flex-wrap: wrap;
  gap: .55rem 1rem;
  align-items: center;
}
.edu-mat-yt-grid .edu-mat-file-card--yt{
  grid-template-columns: 1fr;
}
@media (max-width: 576px){
  .edu-mat-asis-side{ width: 100%; margin-left: 0; }
  .edu-mat-asis-side .edu-quiz-btn{ width: 100%; justify-content: center; }
}

/* ===== Informacion general ? sesiones universitarias ===== */
.edu-ig-sesion-shell{ margin: 0; }
.edu-ig-sesion-list{
  margin-left: -0.5rem;
  margin-right: -0.5rem;
}
.edu-ig-sesion-col{
  padding-left: 0.5rem;
  padding-right: 0.5rem;
  margin-bottom: 1rem;
  display: flex;
}
.edu-ig-sesion-card{
  display: flex;
  width: 100%;
  height: 100%;
  background: #fff;
  border: 1px solid rgba(11,110,153,.14);
  border-radius: 14px;
  box-shadow: 0 4px 14px rgba(10,61,92,.04);
  overflow: hidden;
  transition: transform .15s ease, box-shadow .15s ease;
}
.edu-ig-sesion-card:hover{
  transform: translateY(-2px);
  box-shadow: 0 8px 20px rgba(10,61,92,.08);
}
.edu-ig-sesion-accent{
  flex: 0 0 5px;
  background: #0b6e99;
}
.edu-ig-sesion-card.is-hoy .edu-ig-sesion-accent{ background: #2a9d8f; }
.edu-ig-sesion-card.is-pasada .edu-ig-sesion-accent{ background: #8a97a5; }
.edu-ig-sesion-card.is-prox .edu-ig-sesion-accent{ background: #0b6e99; }
.edu-ig-sesion-main{
  flex: 1 1 auto;
  min-width: 0;
  padding: .85rem .9rem .95rem;
  display: flex;
  flex-direction: column;
}
.edu-ig-sesion-head{
  display: flex;
  gap: .65rem;
  align-items: flex-start;
  margin-bottom: .5rem;
}
.edu-ig-sesion-ico{
  width: 2.35rem;
  height: 2.35rem;
  border-radius: 11px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  background: rgba(11,110,153,.08);
  color: #0b6e99;
  flex: 0 0 auto;
}
.edu-ig-sesion-titles{ flex: 1 1 auto; min-width: 0; }
.edu-ig-sesion-kicker{
  margin: 0 0 .12rem;
  font-size: .66rem;
  font-weight: 800;
  letter-spacing: .04em;
  text-transform: uppercase;
  color: #0b6e99;
  display: inline-flex;
  align-items: center;
  gap: .4rem;
  flex-wrap: wrap;
}
.edu-ig-sesion-kicker > i{
  margin-right: 0;
  flex: 0 0 auto;
}
.edu-ig-sesion-title{
  margin: 0;
  font-family: var(--edu-display);
  font-size: 1rem;
  font-weight: 800;
  line-height: 1.3;
  color: #0a3d5c;
}
.edu-ig-sesion-mat{
  margin: .2rem 0 0;
  font-size: .78rem;
  font-weight: 700;
  color: #5c6b7a;
  display: inline-flex;
  align-items: center;
  gap: .4rem;
}
.edu-ig-sesion-mat i{ margin-right: 0; color: #0b6e99; flex: 0 0 auto; }
.edu-ig-sesion-doc{
  margin: .15rem 0 0;
  font-size: .76rem;
  font-weight: 700;
  color: #5c6b7a;
  display: inline-flex;
  align-items: center;
  gap: .4rem;
}
.edu-ig-sesion-doc i{ margin-right: 0; color: #0b6e99; flex: 0 0 auto; }
.edu-ig-sesion-doc--empty{
  color: #8a97a5;
  font-weight: 600;
}
.edu-ig-sesion-tags{
  display: flex;
  flex-wrap: wrap;
  gap: .3rem;
  margin: 0 0 .45rem;
}
.edu-ig-sesion-tags .edu-quiz-pill{
  font-size: .68rem;
  max-width: 100%;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.edu-ig-sesion-planbox{
  margin: 0 0 .45rem;
  padding: .5rem .6rem;
  border-radius: 10px;
  background: #eef8f4;
  border: 1px solid rgba(42,157,143,.2);
}
.edu-ig-sesion-planbox strong{
  display: block;
  font-size: .82rem;
  color: #0a3d5c;
  line-height: 1.3;
}
.edu-ig-sesion-planbox em{
  display: block;
  margin-top: .15rem;
  font-style: normal;
  font-size: .78rem;
  font-weight: 600;
  color: #1b7a6e;
  line-height: 1.35;
}
.edu-ig-sesion-des{
  margin: 0 0 .45rem;
  padding: .45rem .55rem;
  border-radius: 10px;
  background: #f7fbfd;
  border: 1px solid rgba(11,110,153,.1);
  color: #1a2b3c;
  font-size: .8rem;
  line-height: 1.35;
}
.edu-ig-sesion-meta{
  list-style: none;
  margin: 0 0 .55rem;
  padding: 0;
  display: flex;
  flex-direction: column;
  gap: .28rem;
}
.edu-ig-sesion-meta li{
  display: inline-flex;
  align-items: flex-start;
  gap: .5rem;
  font-size: .76rem;
  font-weight: 600;
  color: #5c6b7a;
  line-height: 1.35;
}
.edu-ig-sesion-meta i{
  color: #0b6e99;
  width: 1rem;
  text-align: center;
  margin-top: .12rem;
  flex: 0 0 auto;
}
.edu-ig-sesion-actions{
  display: flex;
  flex-wrap: wrap;
  gap: .4rem;
  margin-top: auto;
  padding-top: .45rem;
  border-top: 1px dashed rgba(11,110,153,.12);
}
.edu-ig-sesion-actions .edu-quiz-btn{
  flex: 1 1 auto;
  justify-content: center;
}

/* Modal detalle sesi?n ? informaci?n general */
.edu-ig-sesion-detail{ margin: 0; }
.edu-ig-sesion-detail-stats{
  margin: 0 0 .85rem;
}
.edu-ig-sesion-detail-tags{
  display: flex;
  flex-wrap: wrap;
  gap: .35rem;
  margin: 0 0 .85rem;
}
.edu-ig-sesion-detail-grid{ margin: 0; }
.edu-ig-sesion-panel{
  background: #fff;
  border: 1px solid rgba(11,110,153,.12);
  border-radius: 12px;
  padding: .8rem .9rem;
  margin-bottom: .75rem;
  box-shadow: 0 3px 10px rgba(10,61,92,.03);
}
.edu-ig-sesion-panel--plan{
  background: #eef8f4;
  border-color: rgba(42,157,143,.22);
}
.edu-ig-sesion-panel--warn{
  background: #fffaf0;
  border-color: rgba(232,154,12,.25);
}
.edu-ig-sesion-panel .edu-pre-lbl{
  margin-bottom: .45rem;
}
.edu-ig-sesion-panel .edu-pre-lbl i{ margin-right: .45rem; }
.edu-ig-sesion-panel-tit{
  display: block;
  font-size: .95rem;
  color: #0a3d5c;
  line-height: 1.35;
}
.edu-ig-sesion-panel-sub{
  display: block;
  margin-top: .2rem;
  font-style: normal;
  font-size: .84rem;
  font-weight: 700;
  color: #1b7a6e;
  line-height: 1.35;
}
.edu-ig-sesion-panel-des{
  margin: .45rem 0 0;
  font-size: .86rem;
  color: #1a2b3c;
  line-height: 1.45;
}
.edu-ig-sesion-panel-des--box{
  padding: .6rem .7rem;
  border-radius: 10px;
  background: #f7fbfd;
  border: 1px solid rgba(11,110,153,.1);
}
.edu-ig-sesion-detail-meta{
  list-style: none;
  margin: 0;
  padding: 0;
  display: flex;
  flex-direction: column;
  gap: .4rem;
}
.edu-ig-sesion-detail-meta li{
  display: flex;
  align-items: flex-start;
  gap: .55rem;
  font-size: .86rem;
  color: #5c6b7a;
  line-height: 1.4;
}
.edu-ig-sesion-detail-meta i{
  color: #0b6e99;
  width: 1rem;
  text-align: center;
  margin-top: .15rem;
  flex: 0 0 auto;
}
.edu-ig-sesion-detail-meta em{
  font-style: normal;
  color: #8a97a5;
}
.edu-ig-sesion-linkcode{
  display: block;
  margin-top: .55rem;
  padding: .45rem .55rem;
  border-radius: 8px;
  background: #f4f7f9;
  font-size: .72rem;
  word-break: break-all;
  color: #5c6b7a;
}
.edu-ig-sesion-tra-list{
  display: flex;
  flex-direction: column;
  gap: .45rem;
}
.edu-ig-sesion-tra-item{
  display: flex;
  gap: .55rem;
  align-items: flex-start;
  padding: .45rem .5rem;
  border-radius: 10px;
  background: #f7fbfd;
  border: 1px solid rgba(11,110,153,.1);
}
.edu-ig-sesion-tra-ico{
  width: 1.9rem;
  height: 1.9rem;
  border-radius: 8px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  background: #e6f4fa;
  color: #0b6e99;
  flex: 0 0 auto;
}
.edu-ig-sesion-tra-item strong{
  display: block;
  font-size: .86rem;
  color: #0a3d5c;
  line-height: 1.3;
}
.edu-ig-sesion-tra-item em{
  display: block;
  margin-top: .1rem;
  font-style: normal;
  font-size: .72rem;
  font-weight: 600;
  color: #5c6b7a;
  line-height: 1.35;
}
.edu-ig-sesion-video iframe,
.edu-ig-sesion-video video{
  width: 100%;
  max-width: 100%;
  border-radius: 10px;
}
.edu-ig-sesion-file-list{
  display: flex;
  flex-direction: column;
  gap: .5rem;
}
.edu-ig-sesion-file-item video,
.edu-ig-sesion-file-item img{
  width: 100%;
  border-radius: 10px;
  display: block;
}
.edu-ig-sesion-file-item span{
  display: block;
  margin-top: .3rem;
  font-size: .78rem;
  color: #5c6b7a;
  font-weight: 600;
}
.edu-ig-sesion-file-doc{
  display: flex;
  align-items: center;
  gap: .55rem;
  padding: .5rem .55rem;
  border-radius: 10px;
  background: #f7fbfd;
  border: 1px solid rgba(11,110,153,.12);
  text-decoration: none !important;
  color: inherit;
}
.edu-ig-sesion-file-doc:hover{
  border-color: rgba(11,110,153,.28);
  background: #eef7fb;
}
.edu-ig-sesion-file-doc img{
  width: 2rem;
  height: 2rem;
  object-fit: contain;
  flex: 0 0 auto;
}
.edu-ig-sesion-file-doc strong{
  display: block;
  font-size: .84rem;
  color: #0a3d5c;
}
.edu-ig-sesion-file-doc em{
  display: block;
  font-style: normal;
  font-size: .72rem;
  color: #5c6b7a;
  font-weight: 600;
}
.edu-ig-sesion-detail-foot{
  display: flex;
  justify-content: flex-end;
  gap: .5rem;
  margin-top: .35rem;
  padding-top: .75rem;
  border-top: 1px dashed rgba(11,110,153,.14);
}

/* Mimateria ? detalle editable de sesi?n (panel derecho) */
.edu-mat-sesdet{
  margin: 0;
  padding: .85rem .9rem 1rem;
}
.edu-mat-sesdet-head{
  margin-bottom: .75rem;
}
.edu-mat-sesdet-input{
  border-radius: 10px !important;
  border-color: rgba(11,110,153,.18) !important;
}
.edu-mat-sesdet-input:focus{
  border-color: #0b6e99 !important;
  box-shadow: 0 0 0 .15rem rgba(11,110,153,.12);
}
.edu-mat-sesdet-actions{
  display: flex;
  justify-content: flex-end;
  margin-top: .35rem;
  padding-top: .55rem;
  border-top: 1px dashed rgba(11,110,153,.12);
}
.edu-mat-sesdet-add{
  padding: .55rem .6rem;
  border-radius: 10px;
  background: #f7fbfd;
  border: 1px solid rgba(11,110,153,.1);
}
.edu-mat-sesdet-empty{
  font-size: .86rem;
  font-weight: 600;
  color: #8a97a5;
}
.edu-mat-sesdet-media{
  position: relative;
  border-radius: 12px;
  overflow: hidden;
  background: #fff;
  border: 1px solid rgba(11,110,153,.12);
  padding: .45rem;
}
.edu-mat-sesdet-media video,
.edu-mat-sesdet-media img{
  width: 100%;
  display: block;
  border-radius: 8px;
}
.edu-mat-sesdet-media--doc{
  display: flex;
  align-items: stretch;
  gap: .35rem;
}
.edu-mat-sesdet-media--doc .edu-ig-sesion-file-doc{
  flex: 1 1 auto;
  margin: 0;
}
.edu-mat-sesdet-del{
  position: absolute;
  top: .45rem;
  right: .45rem;
  z-index: 2;
  border: 0;
  border-radius: 8px;
  width: 2rem;
  height: 2rem;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  background: #fff3cd;
  color: #8a5a00;
  cursor: pointer;
  box-shadow: 0 2px 8px rgba(0,0,0,.08);
}
.edu-mat-sesdet-del:hover{
  background: #ffe08a;
}
.edu-mat-sesdet-del--inline{
  position: static;
  flex: 0 0 auto;
  align-self: center;
  margin-right: .35rem;
}
.edu-mat-sesdet-cap{
  margin: .4rem 0 0;
  font-size: .78rem;
  font-weight: 700;
  color: #5c6b7a;
}

/* Listado moderno de archivos de sesi?n (mimateria detalle) */
.edu-mat-sesdet-empty-box{
  display: flex;
  align-items: center;
  justify-content: center;
  gap: .55rem;
  padding: 1.1rem .85rem;
  border-radius: 12px;
  border: 1px dashed rgba(11,110,153,.22);
  background: #f8fbfd;
  color: #8a97a5;
  font-size: .88rem;
  font-weight: 700;
}
.edu-mat-sesdet-empty-box i{ color: #0b6e99; opacity: .7; }
.edu-mat-sesdet-file-grid,
.edu-mat-yt-grid{
  display: grid;
  grid-template-columns: 1fr;
  gap: .75rem;
  width: 100%;
  max-width: 100%;
  box-sizing: border-box;
}
@media (min-width: 768px){
  .edu-mat-sesdet-file-grid,
  .edu-mat-yt-grid{
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }
}
@media (min-width: 992px){
  .edu-mat-sesdet-file-grid,
  .edu-mat-yt-grid{
    grid-template-columns: repeat(3, minmax(0, 1fr));
  }
}
/* Cards en grilla: preview arriba, datos abajo (igual archivos y YouTube) */
@media (min-width: 768px){
  .edu-mat-sesdet-file-grid .edu-mat-file-card,
  .edu-mat-yt-grid .edu-mat-file-card,
  .edu-mat-yt-grid .edu-mat-file-card--yt{
    grid-template-columns: 1fr;
  }
  .edu-mat-sesdet-file-grid .edu-mat-file-preview,
  .edu-mat-yt-grid .edu-mat-file-preview{
    min-height: 140px;
  }
  .edu-mat-sesdet-file-grid .edu-mat-file-preview video,
  .edu-mat-sesdet-file-grid .edu-mat-file-thumb,
  .edu-mat-sesdet-file-grid .edu-mat-file-thumb img,
  .edu-mat-yt-grid .edu-mat-file-preview,
  .edu-mat-yt-grid .edu-mat-yt-embed,
  .edu-mat-yt-grid .edu-mat-yt-embed iframe{
    min-height: 140px;
  }
}
.edu-mat-file-card{
  display: grid;
  grid-template-columns: 112px 1fr;
  gap: 0;
  min-height: 108px;
  border-radius: 14px;
  overflow: hidden;
  background: #fff;
  border: 1px solid rgba(11,110,153,.14);
  box-shadow: 0 4px 12px rgba(10,61,92,.04);
  transition: border-color .15s ease, box-shadow .15s ease, transform .15s ease;
}
.edu-mat-file-card:hover{
  border-color: rgba(11,110,153,.28);
  box-shadow: 0 8px 18px rgba(10,61,92,.08);
  transform: translateY(-1px);
}
.edu-mat-file-preview{
  background: linear-gradient(160deg, #eef6fa 0%, #e7f1f6 100%);
  display: flex;
  align-items: stretch;
  justify-content: center;
  min-height: 108px;
  overflow: hidden;
}
.edu-mat-file-card--pdf .edu-mat-file-preview{ background: linear-gradient(160deg, #fff1f0 0%, #ffe4e1 100%); }
.edu-mat-file-card--doc .edu-mat-file-preview{ background: linear-gradient(160deg, #eef4ff 0%, #dfeaff 100%); }
.edu-mat-file-card--img .edu-mat-file-preview{ background: #0a3d5c; }
.edu-mat-file-card--vid .edu-mat-file-preview{ background: #102a43; }
.edu-mat-file-preview video{
  width: 100%;
  height: 100%;
  min-height: 108px;
  object-fit: cover;
  display: block;
  background: #000;
}
.edu-mat-file-thumb{
  display: block;
  width: 100%;
  height: 100%;
  min-height: 108px;
}
.edu-mat-file-thumb img{
  width: 100%;
  height: 100%;
  min-height: 108px;
  object-fit: cover;
  display: block;
}
.edu-mat-file-iconwrap{
  display: flex;
  align-items: center;
  justify-content: center;
  width: 100%;
  text-decoration: none !important;
}
.edu-mat-file-icon{
  width: 3rem;
  height: 3rem;
  border-radius: 12px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  background: rgba(255,255,255,.85);
  color: #0b6e99;
  font-size: 1.25rem;
  box-shadow: 0 4px 12px rgba(10,61,92,.08);
}
.edu-mat-file-card--pdf .edu-mat-file-icon{ color: #c62828; }
.edu-mat-file-card--doc .edu-mat-file-icon{ color: #1565c0; }
.edu-mat-file-body{
  padding: .7rem .75rem .65rem;
  display: flex;
  flex-direction: column;
  min-width: 0;
}
.edu-mat-file-top{
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: .4rem;
  margin-bottom: .25rem;
}
.edu-mat-file-type{
  font-size: .64rem;
  font-weight: 800;
  letter-spacing: .05em;
  text-transform: uppercase;
  color: #0b6e99;
}
.edu-mat-file-ext{
  font-size: .62rem;
  font-weight: 800;
  padding: .12rem .4rem;
  border-radius: 999px;
  background: #eef4f8;
  color: #5c6b7a;
}
.edu-mat-file-name{
  display: block;
  font-family: var(--edu-display);
  font-size: .92rem;
  font-weight: 800;
  color: #0a3d5c;
  line-height: 1.25;
  margin-bottom: .2rem;
}
.edu-mat-file-des{
  margin: 0 0 .5rem;
  font-size: .78rem;
  font-weight: 600;
  color: #5c6b7a;
  line-height: 1.35;
  flex: 1 1 auto;
}
.edu-mat-file-des--empty{
  color: #a0adb8;
  font-weight: 500;
  font-style: italic;
}
.edu-mat-file-actions{
  display: flex;
  flex-wrap: wrap;
  gap: .35rem;
  margin-top: auto;
}
.edu-mat-file-actions .edu-quiz-btn{
  flex: 1 1 auto;
  justify-content: center;
  min-width: 0;
}
.edu-mat-file-del{
  color: #8a5a00 !important;
  border-color: rgba(232,154,12,.28) !important;
  background: #fff8e8 !important;
}
.edu-mat-file-del:hover{
  background: #ffefc7 !important;
}
@media (max-width: 520px){
  .edu-mat-file-card{
    grid-template-columns: 1fr;
  }
  .edu-mat-file-preview{
    min-height: 140px;
  }
  .edu-mat-file-preview video,
  .edu-mat-file-thumb,
  .edu-mat-file-thumb img{
    min-height: 140px;
  }
}

/* YouTube cards ? mismo lenguaje visual que archivos */
.edu-mat-file-card--yt{
  grid-template-columns: 1fr;
  min-width: 0;
}
.edu-mat-yt-grid > .edu-mat-file-card,
.edu-mat-sesdet-file-grid > .edu-mat-file-card{
  min-width: 0;
  width: 100%;
  max-width: 100%;
}
.edu-mat-file-card--yt .edu-mat-file-preview{
  background: #111827;
  min-height: 150px;
}
.edu-mat-yt-preview{
  position: relative;
  min-height: 150px;
  aspect-ratio: 16 / 9;
}
.edu-mat-yt-embed,
.edu-mat-yt-embed iframe,
.edu-mat-yt-embed object,
.edu-mat-yt-embed embed{
  width: 100% !important;
  max-width: 100% !important;
  height: 100% !important;
  min-height: 150px;
  border: 0;
  display: block;
}
.edu-mat-yt-embed{
  position: absolute;
  inset: 0;
}
.edu-mat-file-card--yt .edu-mat-file-type{
  color: #c62828;
}
.edu-mat-file-card--yt .edu-mat-file-type i{
  margin-right: .2rem;
}
@media (max-width: 700px){
  .edu-mat-file-card--yt .edu-mat-file-preview,
  .edu-mat-yt-embed,
  .edu-mat-yt-embed iframe{
    min-height: 170px;
  }
}

/* Portal alumno ? sesiones / trabajos en Mis profesores */
.edu-alu-sesion-card { --edu-inc-accent: #0b6e99; }
.edu-alu-sesion-card .edu-prof-avatar,
.edu-alu-trabajo-card .edu-prof-avatar {
  display: flex !important;
  align-items: center;
  justify-content: center;
  font-size: 1.2rem;
  color: #0b6e99 !important;
  background: #fff !important;
}
.edu-alu-sesion-card .edu-prof-avatar i,
.edu-alu-trabajo-card .edu-prof-avatar i {
  color: inherit !important;
}
.edu-alu-trabajo-link {
  color: inherit !important;
  text-decoration: none !important;
}
.edu-alu-trabajo-link:hover {
  color: var(--edu-primary) !important;
  text-decoration: underline !important;
}
.edu-alu-trabajo-est--bloqueado {
  color: #c62828 !important;
}
.edu-alu-materia-wrap .edu-aula-tabs > .nav.nav-tabs > .nav-link {
  font-weight: 700;
}

.edu-mat-panel {
  min-height: 420px;
  background: var(--edu-surface);
  border: 1px solid var(--edu-border);
  border-radius: var(--edu-radius);
  box-shadow: var(--edu-shadow-sm);
  padding: 1rem 1.1rem 1.25rem;
}

.edu-mat-panel-empty {
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  text-align: center;
  min-height: 360px;
  color: var(--edu-muted);
  gap: 0.45rem;
}

.edu-mat-panel-empty i {
  font-size: 2rem;
  color: var(--edu-primary);
  opacity: 0.7;
  margin-bottom: 0.35rem;
}

.edu-mat-panel-empty strong {
  font-family: var(--edu-display);
  font-size: 1.1rem;
  color: var(--edu-ink);
}

#contenido .edu-mat-wrap .edu-aula-tabs {
  margin: 0;
  background: transparent;
  box-shadow: none;
  border: 0;
}

#contenido .edu-mat-wrap .edu-aula-tabs > .nav.nav-tabs {
  display: flex;
  flex-wrap: wrap;
  gap: 0.4rem;
  border: 0 !important;
  margin-bottom: 1rem;
  padding-bottom: 0.75rem;
  border-bottom: 1px solid var(--edu-border) !important;
}

#contenido .edu-mat-wrap .edu-aula-tabs > .nav.nav-tabs > .nav-link {
  border: 1px solid transparent !important;
  border-radius: 999px !important;
  margin: 0 !important;
  padding: 0.45rem 0.9rem !important;
  font-size: 0.78rem !important;
  font-weight: 800 !important;
  letter-spacing: 0.03em;
  text-transform: uppercase;
  color: var(--edu-muted) !important;
  background: var(--edu-bg-soft) !important;
}

#contenido .edu-mat-wrap .edu-aula-tabs > .nav.nav-tabs > .nav-link.active,
#contenido .edu-mat-wrap .edu-aula-tabs > .nav.nav-tabs > .nav-link:hover {
  color: #fff !important;
  background: linear-gradient(135deg, var(--edu-primary-dark), var(--edu-primary)) !important;
  border-color: transparent !important;
}

#contenido .edu-mat-wrap .edu-aula-tabs > .nav.nav-tabs > .nav-link.edu-mat-tab-title {
  text-transform: none;
  letter-spacing: 0;
  font-weight: 700 !important;
  background: transparent !important;
  color: var(--edu-ink) !important;
  border: 0 !important;
  padding-left: 0 !important;
  pointer-events: none;
}

#contenido .edu-mat-wrap .edu-aula-tabs > .nav.nav-tabs > .nav-link.edu-mat-tab-title span {
  font-weight: 800;
}

#contenido .edu-mat-wrap .edu-aula-tabs .tab-content {
  padding: 0;
}

.edu-mat-toolbar {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 0.5rem;
  margin-bottom: 0.9rem;
}

.edu-mat-toolbar .btn {
  border-radius: 10px !important;
  font-weight: 800 !important;
  letter-spacing: 0.02em;
}

.edu-mat-session-layout {
  display: grid;
  grid-template-columns: minmax(220px, 32%) minmax(0, 1fr);
  gap: 0.9rem;
  align-items: start;
}

.edu-mat-session-list {
  display: flex;
  flex-direction: column;
  gap: 0.55rem;
  max-height: calc(100vh - 320px);
  overflow: auto;
  padding-right: 0.15rem;
}

.edu-mat-session-item {
  position: relative;
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: 0.5rem;
  padding: 0.85rem 0.9rem;
  border: 1px solid var(--edu-border);
  border-radius: var(--edu-radius-sm);
  background: var(--edu-bg-soft);
  cursor: pointer;
  transition: border-color 0.2s ease, box-shadow 0.2s ease, transform 0.2s ease;
}

.edu-mat-session-item:hover {
  border-color: rgba(11, 110, 153, 0.35);
  box-shadow: var(--edu-shadow-sm);
  transform: translateY(-1px);
}

.edu-mat-session-item strong {
  display: block;
  font-size: 0.92rem;
  color: var(--edu-primary-dark);
  line-height: 1.3;
}

.edu-mat-session-item span.edu-mat-session-date {
  display: block;
  margin-top: 0.2rem;
  font-size: 0.75rem;
  font-weight: 700;
  color: var(--edu-muted);
}

.edu-mat-session-plan {
  display: block;
  margin-top: 0.35rem;
  padding: 0.28rem 0.5rem;
  border-radius: 8px;
  background: rgba(11, 110, 153, 0.08);
  border: 1px solid rgba(11, 110, 153, 0.14);
  color: #0b6e99;
  font-size: 0.72rem;
  font-weight: 700;
  line-height: 1.35;
  word-break: break-word;
}

.edu-mat-session-plan i {
  margin-right: 0.2rem;
}

.edu-mat-session-plan--empty {
  background: rgba(92, 107, 122, 0.08);
  border-color: rgba(92, 107, 122, 0.14);
  color: #5c6b7a;
  font-weight: 600;
}

.edu-plan-link-box {
  margin: 0 0 0.85rem;
  padding: 0.85rem 1rem;
  border-radius: 14px;
  background: #fff;
  border: 1px solid rgba(11, 110, 153, 0.16);
  box-shadow: 0 6px 18px rgba(26, 43, 60, 0.04);
  position: relative;
  overflow: hidden;
}

.edu-plan-link-box::before {
  content: "";
  position: absolute;
  left: 0;
  top: 0;
  bottom: 0;
  width: 4px;
  background: #0b6e99;
}

.edu-plan-link-box--empty {
  background: var(--edu-bg-soft);
  border-style: dashed;
  border-color: rgba(92, 107, 122, 0.28);
  box-shadow: none;
}

.edu-plan-link-box--empty::before {
  background: #5c6b7a;
}

.edu-plan-link-box-top {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 0.4rem;
  margin-bottom: 0.55rem;
}

.edu-plan-link-title {
  display: flex;
  align-items: flex-start;
  gap: 0.5rem;
  margin: 0 0 0.35rem !important;
  font-family: var(--edu-display);
  font-size: 0.98rem !important;
  font-weight: 800 !important;
  line-height: 1.3 !important;
  color: #1a2b3c !important;
}

.edu-plan-link-box .edu-archivo-icon {
  flex: 0 0 36px;
  width: 36px;
  height: 36px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  border-radius: 10px;
  background: rgba(11, 110, 153, 0.12);
  border: 1px solid rgba(11, 110, 153, 0.24);
  color: #0b6e99;
  font-size: 0.95rem;
}

.edu-plan-link-box--empty p {
  margin: 0.45rem 0 0;
  font-size: 0.84rem;
  color: #5c6b7a;
}

.edu-mat-detail {
  min-height: 280px;
  border: 1px solid var(--edu-border);
  border-radius: var(--edu-radius-sm);
  background: #fff;
  padding: 1rem;
}

.edu-mat-detail-hint {
  display: flex;
  align-items: center;
  justify-content: center;
  min-height: 240px;
  text-align: center;
  color: var(--edu-muted);
  font-weight: 700;
}

.edu-mat-section-label {
  display: inline-flex;
  align-items: center;
  gap: 0.4rem;
  margin: 0.35rem 0 0.85rem;
  padding: 0.35rem 0.75rem;
  border-radius: 999px;
  font-size: 0.75rem;
  font-weight: 800;
  letter-spacing: 0.04em;
  text-transform: uppercase;
  background: var(--edu-primary-soft);
  color: var(--edu-primary-dark);
}

.edu-mat-section-label--success {
  background: rgba(42, 157, 143, 0.14);
  color: var(--edu-success);
}

.edu-mat-section-label--warning {
  background: rgba(232, 154, 12, 0.16);
  color: var(--edu-accent-dark);
}

.edu-mat-aula {
  max-width: 720px;
  margin: 0 auto;
  text-align: center;
  padding: 1rem 0.5rem 1.5rem;
}

.edu-mat-aula h3 {
  font-family: var(--edu-display);
  font-size: 1.25rem;
  font-weight: 800;
  color: var(--edu-ink);
  margin-bottom: 0.35rem;
}

.edu-mat-aula p {
  color: var(--edu-muted);
  font-weight: 600;
  margin-bottom: 1rem;
}

.edu-mat-aula .form-control {
  text-align: left;
}

.edu-mat-aula-link {
  display: inline-block;
  margin-top: 1rem;
  border-radius: var(--edu-radius);
  overflow: hidden;
  box-shadow: var(--edu-shadow);
  border: 1px solid var(--edu-border);
}

.edu-mat-aula-link img {
  display: block;
  max-width: 320px;
  width: 100%;
  height: auto;
}

.edu-mat-media-grid {
  display: flex;
  flex-wrap: wrap;
  margin-left: -0.5rem !important;
  margin-right: -0.5rem !important;
}

#contenido .edu-mat-wrap .edu-mat-media-grid > [class*="col-"],
#contenido .edu-mat-media-grid > [class*="col-"] {
  flex: 0 0 100% !important;
  max-width: 100% !important;
  width: 100% !important;
  padding-left: 0.5rem !important;
  padding-right: 0.5rem !important;
  box-sizing: border-box !important;
  margin-bottom: 1rem;
}

@media (min-width: 768px) {
  #contenido .edu-mat-wrap .edu-mat-media-grid > [class*="col-md-"],
  #contenido .edu-mat-media-grid > .col-md-4,
  #contenido .edu-mat-wrap .edu-mat-media-grid > .col-md-3,
  #contenido .edu-mat-media-grid > .col-md-4,
  #contenido .edu-mat-media-grid > .col-md-3 {
    flex: 0 0 50% !important;
    max-width: 50% !important;
    width: 50% !important;
  }
}

@media (min-width: 992px) {
  #contenido .edu-mat-wrap .edu-mat-media-grid > .col-lg-4,
  #contenido .edu-mat-media-grid > .col-lg-4,
  #contenido .edu-mat-wrap .edu-incidencia-grid > .edu-incidencia-col {
    flex: 0 0 33.333333% !important;
    max-width: 33.333333% !important;
    width: 33.333333% !important;
  }

  #contenido .edu-mat-wrap .edu-mat-media-grid > .col-lg-3,
  #contenido .edu-mat-media-grid > .col-lg-3 {
    flex: 0 0 25% !important;
    max-width: 25% !important;
    width: 25% !important;
  }
}

.edu-mat-video-card,
.edu-mat-file-card {
  height: 100%;
  border: 1px solid var(--edu-border);
  border-radius: var(--edu-radius);
  background: #fff;
  box-shadow: var(--edu-shadow-sm);
  overflow: hidden;
  padding: 0.75rem;
}

.edu-mat-video-card .edu-mat-video-date {
  display: inline-flex;
  margin-bottom: 0.55rem;
  padding: 0.2rem 0.55rem;
  border-radius: 999px;
  background: var(--edu-primary-soft);
  color: var(--edu-primary-dark);
  font-size: 0.72rem;
  font-weight: 800;
}

.edu-mat-video-card iframe,
.edu-mat-video-card video,
.edu-mat-file-card img {
  width: 100% !important;
  max-width: 100%;
  border-radius: 10px;
}

/* Listas tipo amigo dentro de mimateria */
#contenido .edu-mat-wrap .edu-incidencia-grid > .edu-incidencia-col {
  flex: 0 0 100% !important;
  max-width: 100% !important;
  width: 100% !important;
  padding-left: 0.5rem !important;
  padding-right: 0.5rem !important;
  box-sizing: border-box !important;
}

/* Asistencia: tabla limpia */
#contenido .edu-mat-wrap .edu-mat-table-wrap {
  border: 1px solid var(--edu-border);
  border-radius: var(--edu-radius-sm);
  overflow: hidden;
  background: #fff;
}

#contenido .edu-mat-wrap .edu-mat-table-wrap .table {
  margin-bottom: 0 !important;
}

/* Widget-user legacy ? look tarjeta EDUCA (m?dulo + modales) */
#contenido .edu-mat-wrap .widget-user,
#contenido .edu-mat-panel .widget-user,
.div_mitrabajopresentacion_form .widget-user,
.div_mimateria_form .widget-user,
.div_mimateriatrabajofile_form .widget-user {
  border: 1px solid var(--edu-border) !important;
  border-radius: var(--edu-radius) !important;
  box-shadow: var(--edu-shadow-sm) !important;
  overflow: hidden;
  transition: transform 0.25s ease, box-shadow 0.25s ease;
}

#contenido .edu-mat-wrap .widget-user:hover,
#contenido .edu-mat-panel .widget-user:hover,
.div_mitrabajopresentacion_form .widget-user:hover {
  transform: translateY(-3px);
  box-shadow: 0 14px 30px rgba(10, 61, 92, 0.12) !important;
}

#contenido .edu-mat-wrap .widget-user-header,
#contenido .edu-mat-panel .widget-user-header,
.div_mitrabajopresentacion_form .widget-user-header,
.div_mimateria_form .widget-user-header {
  background: linear-gradient(180deg, #fff, var(--edu-bg-soft)) !important;
  border-bottom: 1px solid var(--edu-border) !important;
  padding: 1rem 1rem 2.2rem !important;
}

#contenido .edu-mat-wrap .widget-user-username,
#contenido .edu-mat-panel .widget-user-username,
.div_mitrabajopresentacion_form .widget-user-username,
.div_mimateria_form .widget-user-username {
  font-family: var(--edu-display) !important;
  font-size: 1rem !important;
  font-weight: 800 !important;
  color: var(--edu-primary-dark) !important;
}

#contenido .edu-mat-wrap .widget-user-image > img,
#contenido .edu-mat-panel .widget-user-image > img,
.div_mitrabajopresentacion_form .widget-user-image > img,
.div_mimateria_form .widget-user-image > img {
  border: 3px solid #fff !important;
  box-shadow: 0 8px 18px rgba(11, 110, 153, 0.18);
  background: #fff;
}

#contenido .edu-mat-wrap .card-footer,
#contenido .edu-mat-panel .widget-user .card-footer,
.div_mitrabajopresentacion_form .widget-user .card-footer {
  background: #fff !important;
  border-top: 1px solid var(--edu-border) !important;
}

#contenido .edu-mat-wrap .description-header,
#contenido .edu-mat-panel .description-header,
.div_mitrabajopresentacion_form .description-header {
  font-family: var(--edu-display);
  font-weight: 800;
  color: var(--edu-ink);
}

#contenido .edu-mat-wrap .description-text,
#contenido .edu-mat-panel .description-text,
.div_mitrabajopresentacion_form .description-text {
  color: var(--edu-muted) !important;
  font-weight: 700 !important;
  letter-spacing: 0.04em;
}

.div_mitrabajopresentacion_form .box-header,
.div_mimateria_form .box-header,
.div_mimateriaasistencia_form .box-header {
  border-bottom: 1px solid var(--edu-border);
  margin-bottom: 0.75rem;
  padding-bottom: 0.65rem;
}

.div_mitrabajopresentacion_form .box-title,
.div_mimateria_form .box-title,
.div_mimateriaasistencia_form .box-title {
  font-family: var(--edu-display);
  font-weight: 800;
  color: var(--edu-primary-dark);
}

@media (max-width: 991.98px) {
  .edu-mat-layout {
    grid-template-columns: 1fr;
  }

  .edu-mat-subjects {
    display: none;
  }

  .edu-mat-subjects-mobile {
    display: flex;
  }

  .edu-mat-session-layout {
    grid-template-columns: 1fr;
  }

  .edu-mat-session-list {
    max-height: none;
    flex-direction: row;
    overflow-x: auto;
  }

  .edu-mat-session-item {
    flex: 0 0 240px;
  }
}

/* =========================================================
   Informaci?n general ? sesiones (timeline)
   ========================================================= */

.edu-infogen-timeline .time-label > span {
  border-radius: 999px !important;
  font-weight: 800 !important;
  letter-spacing: 0.03em;
  padding: 0.4rem 0.95rem !important;
}

.edu-infogen-timeline .timeline > div > .fas.fa-newspaper {
  box-shadow: 0 4px 12px rgba(42, 157, 143, 0.28);
}

.edu-infogen-timeline .timeline-item {
  background: transparent !important;
  border: 0 !important;
  box-shadow: none !important;
  margin-right: 0 !important;
}

.edu-infogen-session-col {
  margin-bottom: 0.85rem;
}

.edu-infogen-session-date {
  display: inline-flex !important;
  align-items: center;
  gap: 0.35rem;
  margin: 0 0 0.35rem !important;
  padding: 0.22rem 0.6rem !important;
  border-radius: 999px;
  font-size: 0.75rem !important;
  font-weight: 800 !important;
  color: var(--edu-primary-dark) !important;
  background: rgba(11, 110, 153, 0.1);
  float: none !important;
}

.edu-infogen-session-title {
  display: block !important;
  margin: 0 0 0.55rem !important;
  padding: 0 !important;
  font-family: var(--edu-display);
  font-size: 1rem !important;
  font-weight: 800 !important;
  line-height: 1.3;
  color: var(--edu-primary-dark) !important;
  cursor: pointer;
}

.edu-infogen-session-title:hover {
  color: var(--edu-primary) !important;
  text-decoration: underline;
}

.edu-infogen-session-card.card.card-widget {
  margin: 0 !important;
  border: 1px solid rgba(11, 110, 153, 0.14) !important;
  border-radius: 14px !important;
  overflow: hidden;
  background: linear-gradient(180deg, #ffffff 0%, #f7fbfd 100%) !important;
  box-shadow: 0 8px 22px rgba(10, 61, 92, 0.07) !important;
  transition: border-color 0.2s ease, box-shadow 0.2s ease, transform 0.2s ease;
}

.edu-infogen-session-card.card.card-widget:hover {
  border-color: rgba(11, 110, 153, 0.3) !important;
  box-shadow: 0 14px 28px rgba(10, 61, 92, 0.12) !important;
  transform: translateY(-2px);
}

.edu-infogen-session-card > .card-footer {
  padding: 0.65rem !important;
  background: transparent !important;
  border-top: 0 !important;
}

.edu-infogen-session-card .border-right {
  border-right: 0 !important;
}

.edu-infogen-session-card .row > [class*="col-"] {
  padding: 0.3rem !important;
}

.edu-infogen-session-card .description-block {
  display: flex;
  flex-direction: column-reverse;
  align-items: flex-start;
  justify-content: center;
  gap: 0.2rem;
  min-height: 68px;
  margin: 0 !important;
  padding: 0.7rem 0.75rem !important;
  border: 1px solid rgba(11, 110, 153, 0.1);
  border-radius: 12px;
  background: #fff;
  box-shadow: 0 2px 8px rgba(10, 61, 92, 0.04);
  text-align: left !important;
}

.edu-infogen-session-card .description-block .description-text {
  margin: 0 !important;
  font-size: 0.66rem !important;
  font-weight: 800 !important;
  letter-spacing: 0.045em;
  text-transform: uppercase;
  color: var(--edu-muted) !important;
}

.edu-infogen-session-card .description-block .description-header {
  margin: 0 !important;
  font-family: var(--edu-display);
  font-size: 0.9rem !important;
  font-weight: 800 !important;
  line-height: 1.25;
  color: var(--edu-ink) !important;
  background: transparent !important;
  word-break: break-word;
}

.edu-infogen-session-card .description-block .description-header.bg-yellow {
  color: var(--edu-accent-dark) !important;
  background: transparent !important;
}

.edu-infogen-session-card .row:first-child .col-sm-6:first-child .description-block {
  background: linear-gradient(180deg, rgba(11, 110, 153, 0.08) 0%, #fff 100%);
  border-color: rgba(11, 110, 153, 0.16);
}

.edu-infogen-session-card .row:first-child .col-sm-6:last-child .description-block {
  background: linear-gradient(180deg, rgba(77, 171, 206, 0.12) 0%, #fff 100%);
  border-color: rgba(77, 171, 206, 0.22);
}

.edu-infogen-session-card .row:last-child .col-sm-6:first-child .description-block {
  background: linear-gradient(180deg, rgba(232, 154, 12, 0.14) 0%, #fff 100%);
  border-color: rgba(232, 154, 12, 0.28);
}

.edu-infogen-session-card .row:last-child .col-sm-6:last-child .description-block {
  background: linear-gradient(180deg, rgba(42, 157, 143, 0.12) 0%, #fff 100%);
  border-color: rgba(42, 157, 143, 0.24);
}

.edu-infogen-session-card .row:last-child .col-sm-6:last-child .description-header {
  color: #1f6f66 !important;
}

/* =========================================================
   Plan curricular (mimateria)
   ========================================================= */

.edu-plan-wrap {
  padding: 0.35rem 0.15rem 1rem;
}

/* Botones al mismo nivel del input (plan curricular) */
#contenido .edu-plan-wrap .row.align-items-end,
.edu-plan-wrap .row.align-items-end,
.modal-body .edu-form-body .row.align-items-end {
  display: flex !important;
  flex-wrap: wrap !important;
  align-items: flex-end !important;
}

#contenido .edu-plan-wrap .row.align-items-end > .edu-filter-actions,
#contenido .edu-plan-wrap .row.align-items-end > [class*="col-"].edu-filter-actions,
.edu-plan-wrap .row.align-items-end > .edu-filter-actions,
.modal-body .row.align-items-end > .edu-filter-actions {
  padding-top: 0 !important;
  margin-top: 0 !important;
  display: flex !important;
  align-items: center !important;
  align-self: flex-end !important;
  min-height: 0 !important;
}

#contenido .edu-plan-wrap .edu-filter-actions .btn,
#contenido .edu-plan-wrap .edu-filter-actions .btn.btn-sm,
#contenido .edu-plan-wrap .edu-filter-actions .btn.btn-block,
.edu-plan-wrap .edu-filter-actions .btn,
.edu-plan-wrap .edu-filter-actions .btn.btn-block,
.modal-body .edu-form-body .edu-filter-actions .btn {
  height: 38px !important;
  min-height: 38px !important;
  margin-top: 0 !important;
  display: inline-flex !important;
  align-items: center !important;
  justify-content: center !important;
}

#contenido .edu-plan-wrap .form-control-sm,
.edu-plan-wrap .form-control-sm {
  min-height: 38px !important;
  height: 38px !important;
}

#contenido .edu-plan-wrap textarea.form-control-sm,
.edu-plan-wrap textarea.form-control-sm,
.modal-body .edu-form-body textarea.form-control-sm {
  height: auto !important;
  min-height: 72px !important;
}

.edu-plan-head {
  display: flex;
  flex-wrap: wrap;
  align-items: flex-start;
  justify-content: space-between;
  gap: 1rem;
  margin-bottom: 1rem;
}

.edu-plan-eyebrow {
  margin: 0 0 0.2rem;
  font-size: 0.72rem;
  font-weight: 800;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  color: var(--edu-muted);
}

.edu-plan-title {
  margin: 0 0 0.25rem;
  font-family: var(--edu-display);
  font-size: 1.2rem;
  font-weight: 800;
  color: #1a2b3c;
}

.edu-plan-sub {
  margin: 0;
  max-width: 36rem;
  font-size: 0.86rem;
  color: #5c6b7a;
}

.edu-plan-progress {
  min-width: 160px;
  text-align: right;
}

.edu-plan-progress strong {
  display: block;
  font-size: 1.05rem;
  color: #1a2b3c;
}

.edu-plan-progress small {
  color: var(--edu-muted);
  font-weight: 700;
}

.edu-plan-progress-bar {
  height: 8px;
  border-radius: 999px;
  background: var(--edu-bg-soft);
  overflow: hidden;
  margin-bottom: 0.35rem;
}

.edu-plan-progress-bar span {
  display: block;
  height: 100%;
  background: linear-gradient(90deg, #0b6e99, #2a9d8f);
  border-radius: 999px;
}

.edu-plan-meta {
  margin-bottom: 0.85rem;
  border: 1px solid var(--edu-border);
  box-shadow: none;
}

.edu-plan-toolbar {
  margin-bottom: 0.75rem;
}

.edu-plan-form-unidad,
.edu-plan-form-sesion {
  margin-bottom: 0.85rem;
  padding: 0.75rem 0.85rem;
  border: 1px dashed rgba(11, 110, 153, 0.35);
  border-radius: var(--edu-radius-sm);
  background: rgba(11, 110, 153, 0.04);
}

.edu-plan-form-actions {
  margin-top: 0.65rem;
  display: flex;
  gap: 0.4rem;
  justify-content: flex-end;
}

.edu-plan-unit {
  --edu-inc-accent: #0b6e99;
  margin-bottom: 0 !important;
  width: 100% !important;
  max-width: 100% !important;
  cursor: default !important;
}

.edu-plan-unit:hover {
  transform: translateY(-2px);
}

.edu-plan-units {
  display: flex;
  flex-direction: column;
  gap: 0.95rem;
}

.edu-plan-unit > .edu-incidencia-card-top.edu-plan-unit-head,
.edu-plan-unit .edu-plan-unit-head.edu-incidencia-card-top {
  display: flex !important;
  flex-wrap: wrap;
  align-items: center !important;
  justify-content: flex-start;
  gap: 0.45rem;
  padding: 0.8rem 0.95rem 0.55rem 1.25rem !important;
  background: transparent !important;
  border-bottom: none !important;
}

.edu-plan-unit .edu-incidencia-badge {
  color: #0b6e99 !important;
  background: rgba(11, 110, 153, 0.1) !important;
}

.edu-plan-unit .edu-plan-unit-actions {
  display: flex;
  gap: 0.3rem;
  margin-left: auto;
  flex-shrink: 0;
}

.edu-plan-unit .edu-archivo-card-body.edu-plan-unit-body {
  padding-top: 0.15rem !important;
  gap: 0.85rem !important;
}

.edu-plan-unit .edu-archivo-card-title {
  display: flex;
  align-items: flex-start;
  gap: 0.5rem;
}

.edu-plan-unit .edu-archivo-icon {
  background: rgba(11, 110, 153, 0.12) !important;
  border-color: rgba(11, 110, 153, 0.28) !important;
  color: #0b6e99 !important;
}

.edu-plan-unit .edu-archivo-icon i {
  color: inherit !important;
  background: transparent !important;
}

.edu-plan-unit .edu-archivo-card-meta li i {
  color: #0b6e99 !important;
}

.edu-plan-unit-track {
  height: 6px;
  border-radius: 999px;
  background: rgba(11, 110, 153, 0.1);
  overflow: hidden;
  margin-top: 0.55rem;
}

.edu-plan-unit-track span {
  display: block;
  height: 100%;
  border-radius: 999px;
  background: linear-gradient(90deg, #0b6e99, #2a9d8f);
}

.edu-plan-sessions {
  margin-top: 0.15rem;
  padding: 0.85rem 0.2rem 0.35rem;
  border-top: 1px solid rgba(26, 43, 60, 0.06);
  background: transparent;
}

.edu-plan-sessions-toolbar {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 0.5rem;
  margin-bottom: 0.75rem;
  padding: 0 0.15rem;
}

.edu-plan-sessions-toolbar strong {
  font-size: 0.76rem;
  letter-spacing: 0.04em;
  text-transform: uppercase;
  color: #5c6b7a;
  font-weight: 800;
}

.edu-plan-sessions-toolbar strong i {
  color: #0b6e99;
  margin-right: 0.25rem;
}

.edu-plan-empty-ses {
  display: flex;
  align-items: center;
  gap: 0.75rem;
  margin: 0;
  padding: 1rem 1.05rem;
  border-radius: 14px;
  border: 1px dashed rgba(11, 110, 153, 0.28);
  background:
    linear-gradient(135deg, rgba(11, 110, 153, 0.05) 0%, rgba(255, 255, 255, 0.9) 55%, #fff 100%);
  color: #5c6b7a;
}

.edu-plan-empty-ses-icon {
  flex: 0 0 42px;
  width: 42px;
  height: 42px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  border-radius: 12px;
  background: rgba(11, 110, 153, 0.1);
  border: 1px solid rgba(11, 110, 153, 0.2);
  color: #0b6e99;
  font-size: 1.05rem;
}

.edu-plan-empty-ses strong {
  display: block;
  font-size: 0.9rem;
  font-weight: 800;
  color: #1a2b3c;
  line-height: 1.25;
}

.edu-plan-empty-ses span {
  display: block;
  font-size: 0.8rem;
  line-height: 1.35;
}

.edu-plan-session-list,
#div_plan .edu-plan-session-list,
#contenido #div_plan .edu-plan-session-list {
  display: grid !important;
  grid-template-columns: 1fr !important;
  gap: 0.75rem !important;
  width: 100% !important;
  max-width: 100% !important;
  align-items: stretch !important;
  box-sizing: border-box !important;
  margin: 0 !important;
  padding: 0 !important;
}

@media (min-width: 768px) {
  .edu-plan-session-list,
  #div_plan .edu-plan-session-list,
  #contenido #div_plan .edu-plan-session-list {
    grid-template-columns: repeat(2, minmax(0, 1fr)) !important;
  }
}

@media (min-width: 992px) {
  .edu-plan-session-list,
  #div_plan .edu-plan-session-list,
  #contenido #div_plan .edu-plan-session-list {
    grid-template-columns: repeat(3, minmax(0, 1fr)) !important;
  }
}

.edu-plan-sesion-item,
#div_plan .edu-plan-session-list > .edu-plan-sesion-item,
#div_plan .edu-plan-session-list > .edu-archivo-item {
  display: flex !important;
  flex-direction: column !important;
  width: auto !important;
  max-width: none !important;
  min-width: 0 !important;
  flex: none !important;
  float: none !important;
  margin: 0 !important;
  padding: 0 !important;
  box-sizing: border-box !important;
}

.edu-plan-sesion-card,
#div_plan .edu-plan-session-list .edu-plan-sesion-card,
#div_plan .edu-plan-session-list .edu-archivo-card {
  width: 100% !important;
  max-width: 100% !important;
  height: 100% !important;
  min-width: 0 !important;
  margin: 0 !important;
  cursor: default !important;
}

.edu-plan-sesion-card .edu-incidencia-card-top {
  padding-left: 1.3rem !important;
  padding-right: 0.95rem !important;
}

.edu-plan-sesion-card .edu-archivo-card-body {
  padding-bottom: 1rem !important;
  padding-left: 1.3rem !important;
  padding-right: 0.95rem !important;
}

.edu-plan-sesion-card .edu-archivo-icon {
  flex: 0 0 40px !important;
  width: 40px !important;
  height: 40px !important;
  display: inline-flex !important;
  align-items: center !important;
  justify-content: center !important;
  border-radius: 10px !important;
  background: rgba(232, 154, 12, 0.14) !important;
  border: 1px solid rgba(232, 154, 12, 0.3) !important;
  color: #c47f06 !important;
  font-size: 1.05rem !important;
}

.edu-plan-sesion-card .edu-archivo-icon i,
.edu-plan-sesion-card .edu-archivo-icon .fas,
.edu-plan-sesion-card .edu-archivo-icon .far {
  background: transparent !important;
  border: none !important;
  box-shadow: none !important;
  width: auto !important;
  height: auto !important;
  margin: 0 !important;
  padding: 0 !important;
  color: inherit !important;
  font-size: inherit !important;
  line-height: 1 !important;
}

.edu-plan-sesion-card .edu-archivo-card-meta li i {
  flex: 0 0 auto !important;
  background: transparent !important;
  border: none !important;
  box-shadow: none !important;
  width: 1rem !important;
  height: auto !important;
  margin-top: 0.12rem !important;
  padding: 0 !important;
  font-size: 0.85rem !important;
  line-height: 1 !important;
  text-align: center !important;
  color: #c47f06 !important;
}

.edu-plan-sesion-card .edu-archivo-card-meta li span {
  color: #1a2b3c !important;
}

.edu-plan-sesion-card .edu-archivo-actions {
  display: flex !important;
  flex-wrap: nowrap !important;
  align-items: center !important;
  gap: 0.3rem !important;
  padding-bottom: 0.15rem !important;
  margin-bottom: 0 !important;
}

.edu-plan-sesion-card .edu-archivo-actions .btn {
  flex: 1 1 auto !important;
  white-space: nowrap !important;
  max-width: none !important;
}

.edu-plan-sesion-card .edu-archivo-actions > .btn-danger {
  flex: 0 0 34px !important;
  width: 34px !important;
  min-width: 34px !important;
  max-width: 34px !important;
  padding: 0 !important;
}

.edu-archivo-card--ses-ok {
  --edu-inc-accent: #2a9d8f;
}

.edu-archivo-card--ses-ok .edu-incidencia-badge {
  color: #1f6f66 !important;
  background: rgba(42, 157, 143, 0.12) !important;
}

.edu-archivo-card--ses-ok .edu-archivo-icon {
  background: rgba(42, 157, 143, 0.12) !important;
  border-color: rgba(42, 157, 143, 0.28) !important;
  color: #1f6f66 !important;
}

.edu-archivo-card--ses-ok .edu-archivo-card-meta li i {
  color: #2a9d8f !important;
}

@media (max-width: 767.98px) {
  .edu-plan-head {
    flex-direction: column;
  }
  .edu-plan-progress {
    text-align: left;
    width: 100%;
  }
  .edu-plan-unit .edu-plan-unit-actions {
    width: 100%;
    margin-left: 0;
    justify-content: flex-end;
  }
  .edu-plan-sesion-card .edu-archivo-actions {
    flex-wrap: wrap !important;
  }
}

/* R?bricas */
.edu-rubrica-hint {
  display: inline-block;
  margin-left: 0.5rem;
  font-size: 0.8rem;
  color: #5c6b7a;
  font-weight: 600;
}

.edu-rubrica-grid {
  display: grid;
  grid-template-columns: 1fr;
  gap: 0.85rem;
}

@media (min-width: 768px) {
  .edu-rubrica-grid {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }
}

@media (min-width: 1200px) {
  .edu-rubrica-grid {
    grid-template-columns: repeat(3, minmax(0, 1fr));
  }
}

.edu-rubrica-card {
  height: 100% !important;
  margin: 0 !important;
}

.edu-rubrica-meta li em {
  font-style: normal;
  color: #0b6e99;
  font-weight: 800;
}

.edu-rubrica-criterios-head {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 0.5rem;
  margin: 1rem 0 0.55rem;
}

.edu-rubrica-criterios-head strong {
  font-size: 0.8rem;
  text-transform: uppercase;
  letter-spacing: 0.04em;
  color: #5c6b7a;
}

.edu-rubrica-cri-row {
  margin-bottom: 0.55rem;
  padding-bottom: 0.45rem;
  border-bottom: 1px dashed rgba(26, 43, 60, 0.08);
}

.edu-rubrica-peso-sum {
  margin: 0.35rem 0 0;
  font-size: 0.82rem;
  color: #5c6b7a;
}

.edu-rubrica-cal-banner {
  margin: 0 0 0.85rem;
  padding: 0.7rem 0.9rem;
  border-radius: 12px;
  background: rgba(11, 110, 153, 0.06);
  border: 1px solid rgba(11, 110, 153, 0.16);
  color: #1a2b3c;
  font-size: 0.86rem;
}

.edu-rubrica-cal-banner strong {
  color: #0b6e99;
  margin-right: 0.35rem;
}

.edu-rubrica-cal-banner em {
  display: block;
  margin-top: 0.2rem;
  font-style: normal;
  color: #5c6b7a;
  font-size: 0.78rem;
}

.edu-rubrica-final {
  font-size: 2rem;
  font-weight: 800;
  text-align: center;
  line-height: 1.1;
  min-height: 2.4rem;
}

.edu-rubrica-matrix {
  margin: 0.35rem 0 0.55rem;
  padding: 0.65rem 0.7rem;
  border-radius: 12px;
  background: #f8fafb;
  border: 1px solid rgba(26, 43, 60, 0.08);
}

.edu-rubrica-matrix-row {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 0.55rem;
  margin-bottom: 0.45rem;
}

.edu-rubrica-matrix-row label {
  margin: 0;
  flex: 1 1 auto;
  font-size: 0.8rem;
  font-weight: 700;
  color: #1a2b3c;
  line-height: 1.25;
}

.edu-rubrica-matrix-row label em {
  display: inline-block;
  margin-left: 0.25rem;
  font-style: normal;
  color: #0b6e99;
  font-size: 0.72rem;
}

.edu-rubrica-matrix-row .txt_rub_cri {
  flex: 0 0 72px;
  text-align: center;
  font-weight: 800;
}

/* ===== Agenda / calendario institucional ===== */
.edu-agenda-toolbar {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  justify-content: space-between;
  gap: 0.75rem;
  margin-bottom: 0.85rem;
}
.edu-agenda-nav {
  display: flex;
  align-items: center;
  gap: 0.45rem;
}
.edu-agenda-mes-tit {
  font-family: var(--edu-display);
  font-size: 1.15rem;
  min-width: 10rem;
  text-align: center;
  color: var(--edu-ink);
}
.edu-agenda-filters {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 0.45rem;
}
.edu-agenda-legend {
  display: flex;
  flex-wrap: wrap;
  gap: 0.4rem;
  margin-bottom: 0.9rem;
}
.edu-agenda-chip {
  display: inline-flex;
  align-items: center;
  padding: 0.15rem 0.55rem;
  border-radius: 999px;
  font-size: 0.72rem;
  font-weight: 700;
  background: #eef5f8;
  color: var(--edu-ink);
  border: 1px solid var(--edu-border);
}
.edu-agenda-chip.tip-examen,
.edu-agenda-item.tip-examen { --ag-c: #e63946; background: #fdecee; border-color: #f5b7bd; color: #e63946; }
.edu-agenda-chip.tip-reunion,
.edu-agenda-item.tip-reunion { --ag-c: #0b6e99; background: #e6f4fa; border-color: #9fd0e6; color: #0b6e99; }
.edu-agenda-chip.tip-feriado,
.edu-agenda-item.tip-feriado { --ag-c: #e89a0c; background: #fff6e5; border-color: #f0d19a; color: #c47f06; }
.edu-agenda-chip.tip-entrega,
.edu-agenda-item.tip-entrega { --ag-c: #2a9d8f; background: #e7f6f4; border-color: #9ed4cd; color: #2a9d8f; }
.edu-agenda-chip.tip-actividad,
.edu-agenda-item.tip-actividad { --ag-c: #4dabce; background: #eaf6fb; border-color: #a8d7e9; color: #2f8fb0; }
.edu-agenda-chip.tip-otro,
.edu-agenda-item.tip-otro { --ag-c: #5c6b7a; background: #f1f3f5; border-color: #c5ccd3; color: #5c6b7a; }
.edu-agenda-item.tip-examen,
.edu-agenda-item.tip-reunion,
.edu-agenda-item.tip-feriado,
.edu-agenda-item.tip-entrega,
.edu-agenda-item.tip-actividad,
.edu-agenda-item.tip-otro {
  border-left-color: var(--ag-c);
  color: inherit;
}
.edu-agenda-cal {
  background: linear-gradient(180deg, #fff 0%, #f7fbfd 100%);
  border: 1px solid var(--edu-border);
  border-radius: var(--edu-radius);
  box-shadow: var(--edu-shadow-sm);
  padding: 0.75rem;
  margin-bottom: 1rem;
}
.edu-agenda-cal-head,
.edu-agenda-cal-grid {
  display: grid;
  grid-template-columns: repeat(7, minmax(0, 1fr));
  gap: 0.35rem;
}
.edu-agenda-cal-head {
  margin-bottom: 0.35rem;
}
.edu-agenda-cal-head span {
  text-align: center;
  font-size: 0.72rem;
  font-weight: 800;
  color: var(--edu-muted);
  text-transform: uppercase;
  letter-spacing: 0.04em;
}
.edu-agenda-day {
  min-height: 4.4rem;
  border: 1px solid transparent;
  border-radius: 10px;
  background: rgba(255,255,255,0.85);
  padding: 0.35rem;
  text-align: left;
  cursor: pointer;
  transition: border-color .15s ease, background .15s ease, transform .15s ease;
}
.edu-agenda-day:hover {
  border-color: rgba(11,110,153,0.25);
  background: var(--edu-primary-soft);
  transform: translateY(-1px);
}
.edu-agenda-day.is-empty {
  background: transparent;
  cursor: default;
  pointer-events: none;
}
.edu-agenda-day.is-today {
  box-shadow: inset 0 0 0 1.5px rgba(11,110,153,0.45);
}
.edu-agenda-day.is-selected {
  border-color: var(--edu-primary);
  background: linear-gradient(160deg, var(--edu-primary-soft), #fff);
}
.edu-agenda-day-num {
  display: block;
  font-weight: 800;
  font-size: 0.85rem;
  color: var(--edu-ink);
}
.edu-agenda-day-dots {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 0.2rem;
  margin-top: 0.35rem;
}
.edu-agenda-day-dots i {
  width: 0.45rem;
  height: 0.45rem;
  border-radius: 50%;
  display: inline-block;
  background: var(--edu-muted);
}
.edu-agenda-day-dots i.tip-examen { background: #e63946; }
.edu-agenda-day-dots i.tip-reunion { background: #0b6e99; }
.edu-agenda-day-dots i.tip-feriado { background: #e89a0c; }
.edu-agenda-day-dots i.tip-entrega { background: #2a9d8f; }
.edu-agenda-day-dots i.tip-actividad { background: #4dabce; }
.edu-agenda-day-dots i.tip-otro { background: #5c6b7a; }
.edu-agenda-day-dots em {
  font-style: normal;
  font-size: 0.65rem;
  font-weight: 800;
  color: var(--edu-muted);
}
.edu-agenda-daypanel,
.edu-agenda-monthlist {
  border: 1px solid var(--edu-border);
  border-radius: var(--edu-radius);
  background: #fff;
  padding: 0.85rem 0.95rem;
  margin-bottom: 0.85rem;
  box-shadow: var(--edu-shadow-sm);
}
.edu-agenda-daypanel-head {
  display: flex;
  align-items: center;
  justify-content: space-between;
  margin-bottom: 0.65rem;
}
.edu-agenda-list,
.edu-agenda-minilist {
  list-style: none;
  margin: 0;
  padding: 0;
}
.edu-agenda-item {
  border-left: 3px solid var(--ag-c, var(--edu-primary));
  background: color-mix(in srgb, var(--ag-c, var(--edu-primary)) 8%, #fff);
  border-radius: 0 10px 10px 0;
  padding: 0.55rem 0.7rem;
  margin-bottom: 0.55rem;
}
.edu-agenda-item-meta {
  display: flex;
  justify-content: space-between;
  gap: 0.5rem;
  font-size: 0.72rem;
  color: var(--edu-muted);
  margin-bottom: 0.2rem;
}
.edu-agenda-item-tip {
  font-weight: 800;
  color: var(--ag-c, var(--edu-primary));
}
.edu-agenda-item-tit {
  display: block;
  font-size: 0.92rem;
  color: var(--edu-ink);
}
.edu-agenda-item-alc {
  font-size: 0.75rem;
  color: var(--edu-muted);
  margin-top: 0.15rem;
}
.edu-agenda-item-des {
  margin: 0.35rem 0 0;
  font-size: 0.8rem;
  color: #334155;
}
.edu-agenda-item-actions {
  margin-top: 0.45rem;
  display: flex;
  gap: 0.35rem;
}
.edu-agenda-minilist li {
  display: flex;
  align-items: flex-start;
  gap: 0.45rem;
  padding: 0.3rem 0;
  font-size: 0.82rem;
  border-bottom: 1px dashed rgba(11,110,153,0.12);
}
.edu-agenda-minilist li:last-child { border-bottom: 0; }

@media (max-width: 767.98px) {
  .edu-agenda-day { min-height: 3.4rem; padding: 0.25rem; }
  .edu-agenda-day-num { font-size: 0.78rem; }
  .edu-agenda-mes-tit { min-width: 8rem; font-size: 1rem; }
}

/* ===== Vouchers / mora ===== */
.edu-pago-actions {
  margin-top: 0.65rem;
}
.edu-voucher-badge {
  display: inline-flex;
  align-items: center;
  padding: 0.15rem 0.55rem;
  border-radius: 999px;
  font-size: 0.72rem;
  font-weight: 800;
}
.edu-voucher-badge.pendiente { background: #fff6e5; color: #c47f06; }
.edu-voucher-badge.aprobado { background: #e7f6f4; color: #2a9d8f; }
.edu-voucher-badge.rechazado { background: #fdecee; color: #e63946; }
.edu-voucher-preview {
  border: 1px solid var(--edu-border);
  border-radius: var(--edu-radius-sm);
  background: #f7fbfd;
  min-height: 180px;
  display: flex;
  align-items: center;
  justify-content: center;
  padding: 0.75rem;
}
.edu-voucher-preview img {
  max-width: 100%;
  max-height: 320px;
  border-radius: 8px;
}
.edu-voucher-meta {
  list-style: none;
  margin: 0;
  padding: 0;
}
.edu-voucher-meta li {
  padding: 0.35rem 0;
  border-bottom: 1px dashed rgba(11,110,153,0.12);
  font-size: 0.88rem;
}
.edu-voucher-table th {
  font-size: 0.75rem;
  text-transform: uppercase;
  letter-spacing: 0.03em;
  color: var(--edu-muted);
}
.edu-voucher-rechazo {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 0.25rem;
}

/* Selector de archivo (voucher y formacion) */
.edu-voucher-form .edu-voucher-pick,
.edu-file-pick {
  position: relative;
  display: flex;
  align-items: center;
  gap: 0.85rem;
  width: 100%;
  margin: 0.1rem 0 0.25rem;
  padding: 0.7rem 0.85rem;
  border: 1px solid rgba(11, 110, 153, 0.16);
  border-radius: 12px;
  background: #fff;
  box-shadow: 0 1px 2px rgba(10, 61, 92, 0.04);
  cursor: pointer;
  transition: border-color .18s ease, box-shadow .18s ease, background .18s ease, transform .15s ease;
  user-select: none;
}
.edu-voucher-form .edu-voucher-pick:hover,
.edu-file-pick:hover {
  border-color: rgba(11, 110, 153, 0.4);
  box-shadow: 0 6px 18px rgba(10, 61, 92, 0.08);
  transform: translateY(-1px);
}
.edu-voucher-form .edu-voucher-pick:focus-within,
.edu-file-pick:focus-within {
  border-color: var(--edu-primary);
  box-shadow: 0 0 0 3px rgba(11, 110, 153, 0.14);
}
.edu-voucher-form .edu-voucher-pick.has-file,
.edu-file-pick.has-file {
  border-color: rgba(42, 157, 143, 0.45);
  background: linear-gradient(90deg, #f3fbf9 0%, #ffffff 55%);
}
.edu-voucher-form .edu-voucher-file,
.edu-file-pick .edu-voucher-file {
  position: absolute !important;
  width: 1px !important;
  height: 1px !important;
  padding: 0 !important;
  margin: -1px !important;
  overflow: hidden !important;
  clip: rect(0, 0, 0, 0) !important;
  border: 0 !important;
  opacity: 0 !important;
  min-height: 0 !important;
  z-index: -1 !important;
}
.edu-voucher-form .edu-voucher-pick-icon,
.edu-file-pick .edu-voucher-pick-icon {
  flex: 0 0 auto;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 2.55rem;
  height: 2.55rem;
  border-radius: 10px;
  background: linear-gradient(160deg, #e8f4fa 0%, #d7eef7 100%);
  color: var(--edu-primary);
  font-size: 1rem;
  transition: background .18s ease, color .18s ease;
}
.edu-voucher-form .edu-voucher-pick.has-file .edu-voucher-pick-icon,
.edu-file-pick.has-file .edu-voucher-pick-icon {
  background: linear-gradient(160deg, #dff5f1 0%, #c8ebe5 100%);
  color: #1f7a70;
}
.edu-voucher-form .edu-voucher-pick-copy,
.edu-file-pick .edu-voucher-pick-copy {
  flex: 1 1 auto;
  min-width: 0;
  display: flex;
  flex-direction: column;
  gap: 0.12rem;
}
.edu-voucher-form .edu-voucher-pick-title,
.edu-file-pick .edu-voucher-pick-title {
  font-family: var(--edu-display);
  font-size: 0.95rem;
  font-weight: 700;
  color: var(--edu-ink);
  line-height: 1.25;
}
.edu-voucher-form .edu-voucher-pick-meta,
.edu-file-pick .edu-voucher-pick-meta {
  font-size: 0.78rem;
  font-weight: 600;
  color: var(--edu-muted);
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
  max-width: 100%;
}
.edu-voucher-form .edu-voucher-pick.has-file .edu-voucher-pick-meta,
.edu-file-pick.has-file .edu-voucher-pick-meta {
  color: #2a6f66;
}
.edu-voucher-form .edu-voucher-pick-cta,
.edu-file-pick .edu-voucher-pick-cta {
  flex: 0 0 auto;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-width: 4.4rem;
  height: 2.1rem;
  padding: 0 0.85rem;
  border-radius: 999px;
  background: var(--edu-primary);
  color: #fff;
  font-size: 0.78rem;
  font-weight: 800;
  letter-spacing: 0.01em;
  box-shadow: 0 4px 12px rgba(11, 110, 153, 0.22);
  transition: background .15s ease, transform .15s ease;
}
.edu-voucher-form .edu-voucher-pick:hover .edu-voucher-pick-cta,
.edu-file-pick:hover .edu-voucher-pick-cta {
  background: var(--edu-primary-dark);
}
.edu-voucher-form .edu-voucher-pick.has-file .edu-voucher-pick-cta,
.edu-file-pick.has-file .edu-voucher-pick-cta {
  background: #2a9d8f;
  box-shadow: 0 4px 12px rgba(42, 157, 143, 0.22);
}

@media (max-width: 575.98px) {
  .edu-voucher-form .edu-voucher-pick,
  .edu-file-pick {
    padding: 0.65rem 0.7rem;
    gap: 0.65rem;
  }
  .edu-voucher-form .edu-voucher-pick-icon,
  .edu-file-pick .edu-voucher-pick-icon {
    width: 2.25rem;
    height: 2.25rem;
  }
  .edu-voucher-form .edu-voucher-pick-cta,
  .edu-file-pick .edu-voucher-pick-cta {
    min-width: 3.8rem;
    height: 1.95rem;
    padding: 0 0.7rem;
  }
}

/* ===== Panel director ===== */
.edu-dash {
  margin: 0 0 1.25rem;
}
.edu-dash-head {
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: 1rem;
  margin-bottom: 0.9rem;
}
.edu-dash-eyebrow {
  margin: 0;
  font-size: 0.72rem;
  font-weight: 800;
  letter-spacing: 0.06em;
  text-transform: uppercase;
  color: var(--edu-muted);
}
.edu-dash-title {
  margin: 0.15rem 0;
  font-family: var(--edu-display);
  font-size: 1.45rem;
  font-weight: 800;
  color: var(--edu-ink);
}
.edu-dash-sub {
  margin: 0;
  font-size: 0.88rem;
  color: var(--edu-muted);
}
.edu-dash-date {
  flex: 0 0 auto;
  padding: 0.35rem 0.7rem;
  border-radius: 999px;
  background: #fff;
  border: 1px solid var(--edu-border);
  font-size: 0.8rem;
  font-weight: 800;
  color: var(--edu-primary);
}
.edu-dash-kpis {
  margin-bottom: 0.35rem;
}
.edu-dash-kpi {
  display: flex;
  align-items: center;
  gap: 0.85rem;
  margin-bottom: 0.85rem;
  padding: 0.95rem 1rem;
  border-radius: var(--edu-radius);
  background: #fff;
  border: 1px solid var(--edu-border);
  box-shadow: var(--edu-shadow-sm);
  text-decoration: none !important;
  color: inherit;
  transition: transform .15s ease, box-shadow .15s ease, border-color .15s ease;
}
.edu-dash-kpi:hover {
  transform: translateY(-2px);
  box-shadow: var(--edu-shadow);
  border-color: rgba(11, 110, 153, 0.28);
}
.edu-dash-kpi.is-alert {
  border-color: rgba(230, 57, 70, 0.35);
  background: linear-gradient(120deg, #fff5f6 0%, #fff 60%);
}
.edu-dash-kpi.is-warn {
  border-color: rgba(232, 154, 12, 0.4);
  background: linear-gradient(120deg, #fff8eb 0%, #fff 60%);
}
.edu-dash-kpi-icon {
  width: 2.7rem;
  height: 2.7rem;
  border-radius: 12px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  background: var(--edu-primary-soft);
  color: var(--edu-primary);
  font-size: 1.1rem;
}
.edu-dash-kpi.is-alert .edu-dash-kpi-icon {
  background: #fdecee;
  color: #e63946;
}
.edu-dash-kpi.is-warn .edu-dash-kpi-icon {
  background: #fff1d6;
  color: #c47f06;
}
.edu-dash-kpi-body {
  display: flex;
  flex-direction: column;
  min-width: 0;
}
.edu-dash-kpi-body strong {
  font-family: var(--edu-display);
  font-size: 1.55rem;
  line-height: 1.1;
  color: var(--edu-ink);
}
.edu-dash-kpi-body em {
  font-style: normal;
  font-size: 0.8rem;
  font-weight: 700;
  color: var(--edu-muted);
}
.edu-dash-panel {
  background: #fff;
  border: 1px solid var(--edu-border);
  border-radius: var(--edu-radius);
  box-shadow: var(--edu-shadow-sm);
  padding: 0.95rem 1rem;
  margin-bottom: 0.85rem;
  min-height: 12rem;
}
.edu-dash-panel-head {
  display: flex;
  align-items: center;
  justify-content: space-between;
  margin-bottom: 0.75rem;
}
.edu-dash-panel-head strong {
  font-family: var(--edu-display);
  font-size: 1.02rem;
}
.edu-dash-empty {
  margin: 0;
  color: var(--edu-muted);
  font-size: 0.9rem;
}
.edu-dash-list {
  list-style: none;
  margin: 0;
  padding: 0;
}
.edu-dash-list li {
  display: flex;
  gap: 0.65rem;
  align-items: flex-start;
  padding: 0.45rem 0;
  border-bottom: 1px dashed rgba(11,110,153,0.12);
}
.edu-dash-list li:last-child { border-bottom: 0; }
.edu-dash-list strong {
  display: block;
  font-size: 0.9rem;
  color: var(--edu-ink);
}
.edu-dash-list small {
  color: var(--edu-muted);
  font-size: 0.75rem;
}
.edu-dash-actions {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 0.5rem;
}
.edu-dash-action {
  display: flex;
  align-items: center;
  gap: 0.45rem;
  padding: 0.65rem 0.7rem;
  border-radius: 10px;
  background: #f7fbfd;
  border: 1px solid var(--edu-border);
  color: var(--edu-ink);
  font-size: 0.82rem;
  font-weight: 700;
  text-decoration: none !important;
  transition: background .15s ease, border-color .15s ease;
}
.edu-dash-action:hover {
  background: var(--edu-primary-soft);
  border-color: rgba(11,110,153,0.28);
  color: var(--edu-primary-dark);
}
.edu-dash-action i { color: var(--edu-primary); }

/* ===== Mis asistencias alumno ===== */
.edu-asis-toolbar {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 0.45rem;
  margin-bottom: 0.85rem;
}
.edu-asis-toolbar strong {
  min-width: 9rem;
  text-align: center;
  font-family: var(--edu-display);
}
.edu-asis-summary { margin-bottom: 0.5rem; }
.edu-asis-stat {
  display: flex;
  flex-direction: column;
  align-items: flex-start;
  padding: 0.75rem 0.9rem;
  border-radius: 12px;
  margin-bottom: 0.65rem;
  background: #fff;
  border: 1px solid var(--edu-border);
}
.edu-asis-stat strong {
  font-family: var(--edu-display);
  font-size: 1.4rem;
  line-height: 1;
}
.edu-asis-stat span {
  font-size: 0.78rem;
  font-weight: 700;
  color: var(--edu-muted);
}
.edu-asis-stat.asistio { border-color: rgba(42,157,143,0.35); background: #f2fbf9; }
.edu-asis-stat.asistio strong { color: #2a9d8f; }
.edu-asis-stat.tardanza { border-color: rgba(232,154,12,0.4); background: #fff8eb; }
.edu-asis-stat.tardanza strong { color: #c47f06; }
.edu-asis-stat.falta { border-color: rgba(230,57,70,0.35); background: #fff5f6; }
.edu-asis-stat.falta strong { color: #e63946; }
.edu-asis-card--asistio { --edu-inc-accent: var(--edu-success); }
.edu-asis-card--tardanza { --edu-inc-accent: var(--edu-accent); }
.edu-asis-card--falta { --edu-inc-accent: var(--edu-danger); }

/* ===== Formacion (cursos / cohortes) ===== */
.edu-formacion-badge {
  display: inline-block;
  padding: 0.15rem 0.5rem;
  border-radius: 6px;
  font-size: 0.72rem;
  font-weight: 700;
  letter-spacing: 0.01em;
  vertical-align: middle;
}
.edu-formacion-badge.borrador { background: #f1f3f5; color: #5c6b7a; }
.edu-formacion-badge.abierta { background: #e7f6f4; color: #2a9d8f; }
.edu-formacion-badge.curso { background: #e6f4fa; color: #0b6e99; }
.edu-formacion-badge.cerrada { background: #fdecee; color: #e63946; }
.edu-formacion-cohorte {
  border: 1px solid var(--edu-border, #dbe3ea);
  border-radius: 12px;
  padding: 0.9rem 1rem;
  margin-bottom: 0.85rem;
  background: #fff;
}
.edu-formacion-cohorte-head {
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: 0.75rem;
  margin-bottom: 0.75rem;
}
.edu-formacion-cohorte-meta {
  font-size: 0.8rem;
  color: var(--edu-muted, #6b7c8a);
  margin-top: 0.2rem;
}
.edu-formacion-modlist,
.edu-formacion-alulist {
  list-style: none;
  margin: 0.35rem 0 0;
  padding: 0;
}
.edu-formacion-modlist li,
.edu-formacion-alulist li {
  display: flex;
  align-items: center;
  gap: 0.5rem;
  padding: 0.4rem 0;
  border-bottom: 1px solid #eef2f5;
  font-size: 0.88rem;
}
.edu-formacion-modlist li:last-child,
.edu-formacion-alulist li:last-child { border-bottom: 0; }
.edu-formacion-modlist li > div { flex: 1; min-width: 0; }
.edu-formacion-modlist li > div small {
  display: block;
  color: var(--edu-muted, #6b7c8a);
}
.edu-formacion-alulist li > span { flex: 1; min-width: 0; }
.edu-formacion-ord {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 1.5rem;
  height: 1.5rem;
  border-radius: 6px;
  background: #e6f4fa;
  color: #0b6e99;
  font-size: 0.75rem;
  font-weight: 800;
  flex: 0 0 auto;
}
.edu-formacion-inscribe { max-width: 100%; }
.edu-formacion-inscribe .input-group { max-width: 22rem; }

/* Bot?n con texto dentro de tablas (el tema fuerza 36x36 a .btn) */
#contenido table.table td .btn.edu-btn-label,
#contenido .table td .btn.edu-btn-label,
#contenido .table-responsive .btn.edu-btn-label,
.modal-body table.table td .btn.edu-btn-label,
.edu-formacion-alumno table .btn.edu-btn-label {
  width: auto !important;
  min-width: auto !important;
  max-width: none !important;
  height: auto !important;
  min-height: 2rem !important;
  max-height: none !important;
  padding: 0.35rem 0.75rem !important;
  border-radius: 8px !important;
  white-space: nowrap !important;
  gap: 0.35rem !important;
  line-height: 1.2 !important;
}
#contenido table.table td .btn.edu-btn-label i,
.edu-formacion-alumno table .btn.edu-btn-label i {
  margin: 0 !important;
  font-size: 0.85rem !important;
}
.edu-formacion-reclist {
  list-style: none;
  margin: 0;
  padding: 0;
}
.edu-formacion-reclist li {
  display: flex;
  align-items: center;
  gap: 0.65rem;
  padding: 0.55rem 0;
  border-bottom: 1px solid #eef2f5;
}
.edu-formacion-reclist li:last-child { border-bottom: 0; }
.edu-formacion-rec-body { flex: 1; min-width: 0; }
.edu-formacion-rec-body small {
  display: block;
  color: var(--edu-muted, #6b7c8a);
}
.edu-formacion-rec-icon {
  width: 2rem;
  height: 2rem;
  border-radius: 8px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  flex: 0 0 auto;
  background: #e6f4fa;
  color: #0b6e99;
}
.edu-formacion-rec-icon.tip-youtube { background: #fdecee; color: #c4302b; }
.edu-formacion-rec-icon.tip-archivo { background: #fff6e5; color: #c47f06; }
.edu-formacion-rec-icon.tip-imagen { background: #e7f6f4; color: #2a9d8f; }
.edu-formacion-rec-icon.tip-video { background: #eef0ff; color: #4c5bd4; }
.edu-formacion-rec-icon.tip-enlace { background: #f1f3f5; color: #5c6b7a; }
.edu-formacion-aula-head {
  display: flex;
  align-items: flex-start;
  gap: 0.85rem;
  margin-bottom: 1rem;
}
.edu-formacion-aula-mod {
  border: 1px solid var(--edu-border, #dbe3ea);
  border-radius: 12px;
  padding: 0.9rem 1rem;
  margin-bottom: 0.9rem;
  background: #fff;
}
.edu-formacion-aula-mod-head {
  display: flex;
  align-items: flex-start;
  gap: 0.65rem;
  margin-bottom: 0.75rem;
}
.edu-formacion-aula-rec {
  border-top: 1px solid #eef2f5;
  padding: 0.85rem 0 0.35rem;
  margin-top: 0.55rem;
}
.edu-formacion-aula-rec header {
  display: flex;
  align-items: center;
  gap: 0.55rem;
  margin-bottom: 0.55rem;
}
.edu-formacion-aula-rec header small {
  display: block;
  color: var(--edu-muted, #6b7c8a);
}
.edu-formacion-aula-texto {
  white-space: pre-wrap;
  font-size: 0.92rem;
  line-height: 1.5;
}
.edu-formacion-aula-embed {
  position: relative;
  padding-bottom: 56.25%;
  height: 0;
  overflow: hidden;
  border-radius: 10px;
  background: #111;
}
.edu-formacion-aula-embed iframe {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  border: 0;
}
.edu-formacion-aula-img img {
  max-width: 100%;
  height: auto;
  border-radius: 10px;
  border: 1px solid #eef2f5;
}
.edu-formacion-aula-video video {
  width: 100%;
  max-height: 420px;
  border-radius: 10px;
  background: #111;
}

/* ========== Quiz / examen en l?nea (estilo acad?mico) ========== */
.edu-quiz-shell{
  --quiz-ink: #1a2b3c;
  --quiz-muted: #5c6b7a;
  --quiz-line: rgba(11,110,153,.14);
  --quiz-paper: #fbfcfd;
  --quiz-accent: #0b6e99;
  --quiz-accent-soft: #e6f4fa;
  font-family: var(--edu-font);
  color: var(--quiz-ink);
  background:
    linear-gradient(180deg, #f4fafc 0%, #eef5f8 100%);
  border: 1px solid var(--quiz-line);
  border-radius: 16px;
  padding: 1rem 1.05rem 1.15rem;
  box-shadow: 0 10px 28px rgba(10,61,92,.06);
}
.edu-quiz-kicker{
  margin: 0 0 .2rem;
  font-size: .72rem;
  font-weight: 800;
  letter-spacing: .06em;
  text-transform: uppercase;
  color: var(--quiz-accent);
}
.edu-quiz-kicker i{ margin-right: .45rem; }
.edu-quiz-title{
  margin: 0;
  font-family: var(--edu-display);
  font-size: 1.35rem;
  font-weight: 800;
  line-height: 1.25;
  color: var(--edu-primary-dark);
}
.edu-quiz-title--sm{ font-size: 1.1rem; }
.edu-quiz-lead{
  margin: .35rem 0 0;
  font-size: .88rem;
  color: var(--quiz-muted);
  max-width: 42rem;
}
.edu-quiz-head{
  display: flex;
  flex-wrap: wrap;
  gap: 1rem;
  justify-content: space-between;
  align-items: flex-start;
  margin-bottom: 1rem;
  padding-bottom: .9rem;
  border-bottom: 1px dashed var(--quiz-line);
}
.edu-quiz-stats{
  display: flex;
  gap: .55rem;
}
.edu-quiz-stat{
  min-width: 4.2rem;
  text-align: center;
  padding: .55rem .65rem;
  border-radius: 12px;
  background: #fff;
  border: 1px solid var(--quiz-line);
}
.edu-quiz-stat-val{
  display: block;
  font-family: var(--edu-display);
  font-weight: 800;
  font-size: 1.05rem;
  color: var(--quiz-accent);
  line-height: 1.1;
}
.edu-quiz-stat-lbl{
  display: block;
  margin-top: .15rem;
  font-size: .65rem;
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: .04em;
  color: var(--quiz-muted);
}
.edu-quiz-note{
  margin: 0 0 .85rem;
  padding: .65rem .85rem;
  border-radius: 10px;
  font-size: .86rem;
  border: 1px solid transparent;
}
.edu-quiz-note--info{
  background: var(--quiz-accent-soft);
  border-color: rgba(11,110,153,.18);
  color: #0a4d6e;
}
.edu-quiz-note--warn{
  background: #fff6e8;
  border-color: rgba(232,154,12,.28);
  color: #8a5a00;
}
.edu-quiz-note em{
  font-style: normal;
  font-weight: 800;
}
.edu-quiz-actions{
  display: flex;
  flex-wrap: wrap;
  gap: .55rem;
  align-items: center;
  margin-top: .35rem;
}
.edu-quiz-actions--sticky{
  position: sticky;
  bottom: 0;
  z-index: 2;
  margin-top: 1rem;
  padding: .75rem .2rem .15rem;
  background: linear-gradient(180deg, rgba(238,245,248,0) 0%, #eef5f8 28%, #eef5f8 100%);
}
.edu-quiz-btn{
  appearance: none;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  border: 1px solid transparent;
  border-radius: 10px;
  padding: .55rem 1rem;
  font-weight: 800;
  font-size: .88rem;
  cursor: pointer;
  text-decoration: none !important;
  transition: background .15s ease, border-color .15s ease, color .15s ease, transform .12s ease;
}
.edu-quiz-btn i{ margin-right: .35rem; }
a.edu-quiz-btn,
a.edu-quiz-btn:visited{
  text-decoration: none !important;
}
.edu-quiz-btn--primary,
a.edu-quiz-btn--primary,
a.edu-quiz-btn--primary:visited{
  background: linear-gradient(180deg, #0d7fb0 0%, #0b6e99 100%);
  color: #fff !important;
  box-shadow: 0 6px 16px rgba(11,110,153,.22);
}
.edu-quiz-btn--primary:hover,
.edu-quiz-btn--primary:focus,
a.edu-quiz-btn--primary:hover,
a.edu-quiz-btn--primary:focus,
a.edu-quiz-btn--primary:active{
  background: var(--edu-primary-dark, #085578);
  color: #fff !important;
  transform: translateY(-1px);
  text-decoration: none !important;
}
.edu-quiz-btn--ghost,
a.edu-quiz-btn--ghost,
a.edu-quiz-btn--ghost:visited{
  background: #fff;
  border-color: var(--quiz-line, rgba(11,110,153,.22));
  color: var(--quiz-ink, #0a3d5c) !important;
}
.edu-quiz-btn--ghost:hover,
.edu-quiz-btn--ghost:focus,
a.edu-quiz-btn--ghost:hover,
a.edu-quiz-btn--ghost:focus,
a.edu-quiz-btn--ghost:active{
  border-color: rgba(11,110,153,.35);
  background: var(--quiz-accent-soft, #eef6fa);
  color: #0a3d5c !important;
  text-decoration: none !important;
}
.edu-quiz-exam-bar{
  display: flex;
  flex-wrap: wrap;
  justify-content: space-between;
  align-items: center;
  gap: .75rem;
  margin-bottom: 1rem;
  padding: .75rem .9rem;
  border-radius: 12px;
  background: #fff;
  border: 1px solid var(--quiz-line);
  box-shadow: 0 4px 14px rgba(10,61,92,.04);
}
.edu-quiz-timer{
  min-width: 4.5rem;
  text-align: center;
  padding: .45rem .7rem;
  border-radius: 999px;
  font-family: var(--edu-display);
  font-weight: 800;
  font-size: 1rem;
  letter-spacing: .04em;
  color: #fff;
  background: linear-gradient(180deg, #e85d4c 0%, #c93a3a 100%);
  box-shadow: 0 4px 12px rgba(201,58,58,.25);
}
.edu-quiz-timer--free{
  background: #fff;
  color: var(--quiz-muted);
  border: 1px solid var(--quiz-line);
  box-shadow: none;
  font-size: .8rem;
}
.edu-quiz-form{ display: block; }
.edu-quiz-q{
  position: relative;
  margin: 0 0 .85rem;
  padding: 1rem 1rem 1rem 1.05rem;
  background: #fff;
  border: 1px solid var(--quiz-line);
  border-radius: 14px;
  box-shadow: 0 4px 14px rgba(10,61,92,.03);
  overflow: hidden;
}
.edu-quiz-q::before{
  content: "";
  position: absolute;
  left: 0; top: 0; bottom: 0;
  width: 4px;
  background: linear-gradient(180deg, #0b6e99, #2a9d8f);
}
.edu-quiz-q-head{
  display: flex;
  align-items: center;
  gap: .65rem;
  margin-bottom: .55rem;
}
.edu-quiz-q-num{
  flex: 0 0 auto;
  width: 2rem;
  height: 2rem;
  border-radius: 50%;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  font-family: var(--edu-display);
  font-weight: 800;
  font-size: .9rem;
  color: #fff;
  background: var(--quiz-accent);
}
.edu-quiz-q-meta{
  display: flex;
  flex-wrap: wrap;
  gap: .35rem;
}
.edu-quiz-q-type,
.edu-quiz-q-pts{
  font-size: .68rem;
  font-weight: 800;
  letter-spacing: .03em;
  text-transform: uppercase;
  padding: .22rem .5rem;
  border-radius: 999px;
}
.edu-quiz-q-type{
  background: var(--quiz-accent-soft);
  color: #0a4d6e;
}
.edu-quiz-q-pts{
  background: #fff6e8;
  color: #8a5a00;
}
.edu-quiz-q-text{
  margin: 0 0 .85rem;
  font-size: 1rem;
  font-weight: 700;
  line-height: 1.45;
  color: var(--quiz-ink);
}
.edu-quiz-opt{
  position: relative;
  display: flex;
  align-items: flex-start;
  gap: .7rem;
  margin: 0 0 .45rem;
  padding: .7rem .85rem;
  border-radius: 12px;
  border: 1.5px solid rgba(11,110,153,.16);
  background: var(--quiz-paper);
  cursor: pointer;
  transition: border-color .15s ease, background .15s ease, box-shadow .15s ease;
  user-select: none;
}
.edu-quiz-opt:hover{
  border-color: rgba(11,110,153,.4);
  background: #f3fafd;
}
.edu-quiz-opt.is-checked{
  border-color: #0b6e99;
  background: linear-gradient(180deg, #eef8fc 0%, #e6f4fa 100%);
  box-shadow: 0 0 0 3px rgba(11,110,153,.12);
}
.edu-quiz-opt-input{
  position: absolute;
  opacity: 0;
  pointer-events: none;
}
.edu-quiz-opt-letter{
  flex: 0 0 auto;
  width: 1.7rem;
  height: 1.7rem;
  border-radius: 50%;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  font-family: var(--edu-display);
  font-weight: 800;
  font-size: .82rem;
  color: var(--quiz-accent);
  background: #fff;
  border: 1.5px solid rgba(11,110,153,.28);
}
.edu-quiz-opt.is-checked .edu-quiz-opt-letter{
  color: #fff;
  background: var(--quiz-accent);
  border-color: var(--quiz-accent);
}
.edu-quiz-opt-text{
  flex: 1 1 auto;
  padding-top: .15rem;
  font-size: .94rem;
  font-weight: 600;
  line-height: 1.4;
  color: var(--quiz-ink);
}
.edu-quiz-opt-mark{
  flex: 0 0 auto;
  width: 1.15rem;
  height: 1.15rem;
  margin-top: .25rem;
  border-radius: 50%;
  border: 2px solid rgba(11,110,153,.35);
  background: #fff;
  position: relative;
}
.edu-quiz-opt.is-checked .edu-quiz-opt-mark{
  border-color: var(--quiz-accent);
  background: var(--quiz-accent);
}
.edu-quiz-opt.is-checked .edu-quiz-opt-mark::after{
  content: "";
  position: absolute;
  left: 50%;
  top: 50%;
  width: .42rem;
  height: .42rem;
  margin: -.21rem 0 0 -.21rem;
  border-radius: 50%;
  background: #fff;
}
.edu-quiz-field{ margin-top: .15rem; }
.edu-quiz-field-lbl{
  display: block;
  margin-bottom: .35rem;
  font-size: .72rem;
  font-weight: 800;
  letter-spacing: .04em;
  text-transform: uppercase;
  color: var(--quiz-muted);
}
.edu-quiz-input,
.edu-quiz-textarea{
  width: 100%;
  border: 1.5px solid rgba(11,110,153,.2);
  border-radius: 12px;
  background: #fff;
  color: var(--quiz-ink);
  font-family: var(--edu-font);
  font-size: .95rem;
  font-weight: 600;
  padding: .7rem .85rem;
  transition: border-color .15s ease, box-shadow .15s ease;
}
.edu-quiz-textarea{
  min-height: 7rem;
  resize: vertical;
  line-height: 1.5;
}
.edu-quiz-input:focus,
.edu-quiz-textarea:focus{
  outline: none;
  border-color: #0b6e99;
  box-shadow: 0 0 0 3px rgba(11,110,153,.14);
  background: #fcfeff;
}
.edu-quiz-input::placeholder,
.edu-quiz-textarea::placeholder{
  color: #8a9aab;
  font-weight: 500;
}
.edu-quiz-msg{
  margin: .55rem 0 0;
  min-height: 1.1rem;
  font-size: .8rem;
  color: var(--quiz-muted);
}
@media (max-width: 576px){
  .edu-quiz-shell{ padding: .85rem; border-radius: 12px; }
  .edu-quiz-stats{ width: 100%; }
  .edu-quiz-stat{ flex: 1 1 0; }
  .edu-quiz-title{ font-size: 1.15rem; }
}

/* ========== Quiz revisi?n docente ========== */
.edu-quiz-btn--sm{
  padding: .4rem .75rem;
  font-size: .8rem;
}
.edu-quiz-review-bar{
  display: flex;
  flex-wrap: wrap;
  gap: .85rem;
  align-items: flex-start;
  justify-content: space-between;
  margin-bottom: 1rem;
  padding-bottom: .9rem;
  border-bottom: 1px dashed rgba(11,110,153,.14);
}
.edu-quiz-review-bar-main{ flex: 1 1 220px; min-width: 0; }
.edu-quiz-review-score{
  min-width: 7.5rem;
  text-align: center;
  padding: .7rem .85rem;
  border-radius: 14px;
  background: #fff;
  border: 1px solid rgba(11,110,153,.16);
  box-shadow: 0 4px 14px rgba(10,61,92,.04);
}
.edu-quiz-review-score-lbl{
  display: block;
  font-size: .65rem;
  font-weight: 800;
  letter-spacing: .05em;
  text-transform: uppercase;
  color: #5c6b7a;
}
.edu-quiz-review-score-val{
  display: block;
  font-family: var(--edu-display);
  font-size: 1.6rem;
  font-weight: 800;
  color: #0b6e99;
  line-height: 1.1;
}
.edu-quiz-review-score-sub{
  display: block;
  margin: .15rem 0 .4rem;
  font-size: .75rem;
  font-weight: 700;
  color: #5c6b7a;
}
.edu-quiz-pill{
  display: inline-flex;
  align-items: center;
  gap: .4rem;
  padding: .2rem .55rem;
  border-radius: 999px;
  font-size: .68rem;
  font-weight: 800;
  letter-spacing: .02em;
  text-transform: uppercase;
}
.edu-quiz-pill > i{
  margin-right: 0;
  flex: 0 0 auto;
  line-height: 1;
}
.edu-quiz-pill--ok{ background: #e7f6f3; color: #1b7a6e; }
.edu-quiz-pill--warn{ background: #fff6e8; color: #8a5a00; }
.edu-quiz-pill--info{ background: #e6f4fa; color: #0a4d6e; }
.edu-quiz-pill--neutral{ background: #f1f4f7; color: #5c6b7a; }
.edu-quiz-q-auto,
.edu-quiz-q-manual{
  font-size: .68rem;
  font-weight: 800;
  letter-spacing: .03em;
  text-transform: uppercase;
  padding: .22rem .5rem;
  border-radius: 999px;
}
.edu-quiz-q-auto{ background: #e7f6f3; color: #1b7a6e; }
.edu-quiz-q-manual{ background: #fff6e8; color: #8a5a00; }
.edu-quiz-opt--readonly{ cursor: default; }
.edu-quiz-opt--readonly:hover{
  border-color: rgba(11,110,153,.16);
  background: var(--quiz-paper, #fbfcfd);
}
.edu-quiz-opt.is-key{
  border-style: dashed;
  border-color: rgba(42,157,143,.45);
  background: #f3fbf9;
}
.edu-quiz-opt.is-correct{
  border-color: #2a9d8f;
  background: linear-gradient(180deg, #f0faf8 0%, #e7f6f3 100%);
  box-shadow: 0 0 0 3px rgba(42,157,143,.12);
}
.edu-quiz-opt.is-wrong{
  border-color: #e63946;
  background: linear-gradient(180deg, #fff5f5 0%, #fdecec 100%);
  box-shadow: 0 0 0 3px rgba(230,57,70,.1);
}
.edu-quiz-opt.is-correct .edu-quiz-opt-letter,
.edu-quiz-opt.is-wrong .edu-quiz-opt-letter{
  color: #fff;
  border-color: transparent;
}
.edu-quiz-opt.is-correct .edu-quiz-opt-letter{ background: #2a9d8f; }
.edu-quiz-opt.is-wrong .edu-quiz-opt-letter{ background: #e63946; }
.edu-quiz-opt-tag{
  margin-left: auto;
  align-self: center;
  font-size: .65rem;
  font-weight: 800;
  text-transform: uppercase;
  letter-spacing: .03em;
  padding: .18rem .45rem;
  border-radius: 999px;
  white-space: nowrap;
}
.edu-quiz-opt-tag--ok{ background: #e7f6f3; color: #1b7a6e; }
.edu-quiz-opt-tag--pick{ background: #e6f4fa; color: #0a4d6e; }
.edu-quiz-answer-box{
  margin-top: .15rem;
  padding: .75rem .85rem;
  border-radius: 12px;
  background: #f7fbfd;
  border: 1px solid rgba(11,110,153,.12);
}
.edu-quiz-answer-body{
  font-size: .92rem;
  font-weight: 600;
  line-height: 1.5;
  color: #1a2b3c;
  white-space: pre-wrap;
}
.edu-quiz-answer-key{
  margin: .55rem 0 0;
  font-size: .78rem;
  color: #5c6b7a;
}
.edu-quiz-grade-box{
  margin-top: .75rem;
  padding-top: .75rem;
  border-top: 1px dashed rgba(11,110,153,.14);
}
.edu-quiz-grade-row{
  display: flex;
  flex-wrap: wrap;
  gap: .5rem;
  align-items: center;
}
.edu-quiz-input--pts{
  max-width: 7rem;
  text-align: center;
  font-family: var(--edu-display);
  font-weight: 800;
}
.edu-quiz-attempt-list{
  display: flex;
  flex-direction: column;
  gap: .65rem;
}
.edu-quiz-attempt-card{
  display: flex;
  flex-wrap: wrap;
  gap: .85rem;
  align-items: center;
  padding: .85rem 1rem;
  border-radius: 14px;
  background: #fff;
  border: 1px solid rgba(11,110,153,.14);
  box-shadow: 0 4px 14px rgba(10,61,92,.03);
}
.edu-quiz-attempt-avatar{
  width: 2.6rem;
  height: 2.6rem;
  border-radius: 50%;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  background: #e6f4fa;
  color: #0b6e99;
  font-size: 1.05rem;
  flex: 0 0 auto;
}
.edu-quiz-attempt-main{ flex: 1 1 200px; min-width: 0; }
.edu-quiz-attempt-name{
  margin: 0;
  font-family: var(--edu-display);
  font-weight: 800;
  font-size: 1rem;
  color: #0a3d5c;
}
.edu-quiz-attempt-meta{
  margin: .15rem 0 .4rem;
  font-size: .78rem;
  color: #5c6b7a;
  font-weight: 600;
}
.edu-quiz-attempt-tags{
  display: flex;
  flex-wrap: wrap;
  gap: .35rem;
}
.edu-quiz-attempt-side{
  display: flex;
  flex-wrap: wrap;
  gap: .65rem;
  align-items: center;
  margin-left: auto;
}
.edu-quiz-attempt-nota{
  text-align: center;
  min-width: 3.5rem;
}
.edu-quiz-attempt-nota span{
  display: block;
  font-size: .62rem;
  font-weight: 800;
  letter-spacing: .04em;
  text-transform: uppercase;
  color: #5c6b7a;
}
.edu-quiz-attempt-nota strong{
  display: block;
  font-family: var(--edu-display);
  font-size: 1.25rem;
  font-weight: 800;
  color: #0b6e99;
  line-height: 1.1;
}
@media (max-width: 576px){
  .edu-quiz-attempt-side{ width: 100%; margin-left: 0; justify-content: space-between; }
  .edu-quiz-review-score{ width: 100%; }
}

/* ===== Presentaciones docente (mimateria) ? estilo universitario ===== */
.edu-pre-shell{
  margin: 0;
}
.edu-pre-body{
  min-height: 4rem;
}
.edu-pre-stats{
  margin-left: auto;
}
.edu-pre-rubrica-note{
  margin-bottom: .85rem;
}
.edu-pre-rubrica-note em{
  display: block;
  margin-top: .2rem;
  font-style: normal;
  color: var(--quiz-muted, #5c6b7a);
  font-size: .78rem;
}
.edu-pre-list{
  display: flex;
  flex-direction: column;
  gap: .7rem;
}
.edu-pre-card{
  background: #fff;
  border: 1px solid rgba(11,110,153,.14);
  border-radius: 14px;
  box-shadow: 0 4px 14px rgba(10,61,92,.03);
  overflow: hidden;
}
.edu-pre-card--empty{
  opacity: .92;
  background: linear-gradient(180deg, #fbfcfd 0%, #f4f7f9 100%);
}
.edu-pre-card-head{
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: .75rem;
  padding: .85rem 1rem;
  border-bottom: 1px dashed rgba(11,110,153,.12);
}
.edu-pre-card-who{
  flex: 1 1 180px;
  min-width: 0;
}
.edu-pre-file-btn{
  display: inline-flex;
  align-items: center;
  gap: .4rem;
}
.edu-pre-file-ico{
  width: 1.35rem;
  height: 1.35rem;
  object-fit: contain;
}
.edu-pre-card-body{
  padding: .85rem 1rem 1rem;
}
.edu-pre-grade-row{
  display: flex;
  flex-wrap: wrap;
  gap: .85rem;
  align-items: flex-start;
}
.edu-pre-obs-wrap{
  flex: 1 1 220px;
  min-width: 0;
}
.edu-pre-nota-wrap{
  flex: 0 0 110px;
  text-align: center;
}
.edu-pre-lbl{
  display: block;
  margin-bottom: .3rem;
  font-size: .68rem;
  font-weight: 800;
  letter-spacing: .04em;
  text-transform: uppercase;
  color: #5c6b7a;
}
.edu-pre-lbl > i{
  margin-right: .45rem;
}
.edu-pre-obs{
  border-radius: 10px !important;
  border-color: rgba(11,110,153,.18) !important;
  font-size: .88rem;
  resize: vertical;
  min-height: 2.6rem;
}
.edu-pre-obs:focus{
  border-color: #0b6e99 !important;
  box-shadow: 0 0 0 .15rem rgba(11,110,153,.12);
}
.edu-pre-nota-input{
  font-family: var(--edu-display, Georgia, serif);
  font-size: 1.45rem !important;
  font-weight: 800;
  text-align: center;
  height: 2.8rem !important;
  border-radius: 12px !important;
  border: 1px solid rgba(11,110,153,.22) !important;
  background: #f7fbfd;
}
.edu-pre-nota-input:focus{
  border-color: #0b6e99 !important;
  box-shadow: 0 0 0 .15rem rgba(11,110,153,.12);
  background: #fff;
}
.edu-pre-nota-final{
  font-size: 1.55rem !important;
  min-height: 2.8rem;
  display: flex;
  align-items: center;
  justify-content: center;
  border-radius: 12px;
  background: #f7fbfd;
  border: 1px solid rgba(11,110,153,.14);
}
.edu-pre-hint{
  display: block;
  margin-top: .25rem;
  font-size: .68rem;
  color: #8a97a5;
  font-weight: 600;
}
.edu-pre-rubrica{
  margin-top: .75rem;
}
.edu-pre-rubrica .edu-quiz-btn{
  width: 100%;
  justify-content: center;
  margin-top: .25rem;
}
.edu-pre-card-empty{
  display: flex;
  align-items: center;
  justify-content: center;
  gap: .55rem;
  padding: .9rem 1rem 1.05rem;
  color: #8a5a00;
  font-size: .88rem;
  font-weight: 700;
  background: #fffaf0;
}
.edu-pre-card-empty i{
  font-size: 1.1rem;
  opacity: .85;
}
.edu-pre-card-empty--inline{
  margin: 0;
  border-radius: 0;
  background: transparent;
  color: #8a5a00;
  justify-content: flex-start;
  padding: .15rem 0 0;
}
.edu-pre-entrega{
  padding: .75rem 1rem .35rem;
  border-bottom: 1px dashed rgba(11,110,153,.12);
  background: linear-gradient(180deg, #f7fbfd 0%, #fff 100%);
}
.edu-pre-entrega-tit{
  margin: 0 0 .55rem;
  font-size: .72rem;
  font-weight: 800;
  letter-spacing: .05em;
  text-transform: uppercase;
  color: #0b6e99;
}
.edu-pre-entrega-tit i{ margin-right: .35rem; }
.edu-pre-entrega-grid{
  display: grid;
  grid-template-columns: minmax(160px, 220px) 1fr;
  gap: .75rem 1rem;
}
.edu-pre-entrega-item--msg{ min-width: 0; }
.edu-pre-entrega-val{
  margin: 0 0 .4rem;
  font-size: .88rem;
  font-weight: 700;
}
.edu-pre-entrega-val i{ margin-right: .3rem; }
.edu-pre-entrega-val--ok{ color: #1b7a6e; }
.edu-pre-entrega-val--warn{ color: #8a5a00; }
.edu-pre-msg{
  margin: 0;
  padding: .65rem .75rem;
  border-radius: 10px;
  background: #fff;
  border: 1px solid rgba(11,110,153,.14);
  color: #1a2b3c;
  font-size: .9rem;
  line-height: 1.45;
  white-space: pre-wrap;
  word-break: break-word;
}
@media (max-width: 768px){
  .edu-pre-entrega-grid{ grid-template-columns: 1fr; }
}
@media (max-width: 576px){
  .edu-pre-nota-wrap{ flex: 1 1 100%; }
  .edu-pre-file-btn{ width: 100%; justify-content: center; }
}

/* ===== Home campus / feed publicaciones ===== */
.edu-home-hero{
  margin: 0 0 .85rem;
}
.edu-home-hero .edu-quiz-head{
  margin-bottom: 0;
}
.edu-composer-shell{
  margin: 0 0 1rem;
}
.edu-composer-head{
  margin-bottom: .75rem;
}
.edu-composer-body{
  display: flex;
  flex-direction: column;
  gap: .7rem;
}
.edu-composer-textarea,
#contenido textarea#txt_publicacion.edu-composer-textarea{
  min-height: 96px;
  border-radius: 12px !important;
  border: 1px solid rgba(11,110,153,.18) !important;
  padding: .75rem .9rem !important;
  font-weight: 600;
  resize: vertical;
  background: #f8fbfd !important;
}
.edu-composer-textarea:focus{
  background: #fff !important;
  border-color: rgba(11,110,153,.4) !important;
  box-shadow: 0 0 0 3px rgba(11,110,153,.12) !important;
}
.edu-composer-upload{
  margin: 0;
}
.edu-composer-toolbar{
  display: flex;
  flex-wrap: wrap;
  align-items: flex-end;
  gap: .55rem;
}
.edu-composer-audience,
.edu-composer-toolbar > div[id^='div_']{
  flex: 1 1 120px;
  min-width: 110px;
}
.edu-composer-submit{
  margin-left: auto;
}
.edu-home-feed-shell{
  display: flex;
  flex-direction: column;
  gap: .85rem;
}
.edu-home-feed-head{
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: .6rem;
  margin-bottom: .15rem;
}
.edu-home-feed-title{
  display: block;
  font-family: var(--edu-display);
  font-size: 1.05rem;
  font-weight: 800;
  color: #0a3d5c;
}
.edu-feed-card{
  background: #fff;
  border: 1px solid rgba(11,110,153,.14);
  border-radius: 14px;
  box-shadow: 0 4px 14px rgba(10,61,92,.05);
  overflow: hidden;
}
.edu-feed-card-head{
  display: flex;
  align-items: center;
  gap: .7rem;
  padding: .85rem .95rem .65rem;
  border-bottom: 1px solid rgba(11,110,153,.08);
  background: linear-gradient(180deg, #f8fbfd 0%, #fff 100%);
}
.edu-feed-avatar{
  width: 42px;
  height: 42px;
  border-radius: 12px;
  object-fit: cover;
  border: 2px solid rgba(11,110,153,.15);
  background: #eef6fa;
  flex: 0 0 auto;
}
.edu-feed-avatar--sm{
  width: 32px;
  height: 32px;
  border-radius: 10px;
  border-width: 1px;
}
.edu-feed-author{
  flex: 1 1 auto;
  min-width: 0;
  display: flex;
  flex-direction: column;
  gap: .1rem;
}
.edu-feed-name{
  font-family: var(--edu-display);
  font-size: .95rem;
  font-weight: 800;
  color: #0a3d5c;
  line-height: 1.25;
}
.edu-feed-meta{
  font-size: .74rem;
  font-weight: 600;
  color: #5c6b7a;
}
.edu-feed-head-actions{
  display: flex;
  align-items: center;
  gap: .35rem;
  flex: 0 0 auto;
}
.edu-feed-more{
  appearance: none;
  border: 0;
  background: transparent;
  color: #5c6b7a;
  width: 2rem;
  height: 2rem;
  border-radius: 8px;
  cursor: pointer;
}
.edu-feed-more:hover{
  background: rgba(11,110,153,.08);
  color: #0a3d5c;
}
.edu-feed-body{
  padding: .85rem .95rem;
}
.edu-feed-text{
  margin: 0;
  font-size: .98rem;
  font-weight: 600;
  color: #1a2b3c;
  line-height: 1.45;
  word-break: break-word;
}
.edu-feed-files{
  display: flex;
  flex-direction: column;
  gap: .55rem;
  margin-top: .75rem;
}
.edu-feed-img{
  display: block;
  width: 100%;
  max-height: 420px;
  object-fit: cover;
  border-radius: 12px;
  border: 1px solid rgba(11,110,153,.1);
}
.edu-feed-doc{
  display: inline-flex;
  align-items: center;
  gap: .55rem;
  padding: .55rem .7rem;
  border-radius: 12px;
  border: 1px solid rgba(11,110,153,.14);
  background: #f7fbfd;
  text-decoration: none !important;
  color: #0a3d5c !important;
  font-weight: 700;
}
.edu-feed-doc:hover{
  background: #eef6fa;
  border-color: rgba(11,110,153,.28);
}
.edu-feed-doc img{
  width: 28px;
  height: 28px;
  object-fit: contain;
}
.edu-feed-compose{
  display: flex;
  align-items: center;
  gap: .55rem;
  padding: .65rem .95rem;
  border-top: 1px solid rgba(11,110,153,.08);
  background: #fafcfd;
}
.edu-feed-comment-input{
  border-radius: 999px !important;
  background: #fff !important;
}
.edu-feed-comments{
  padding: 0 .95rem .85rem;
}
.edu-feed-comments-lbl{
  margin: .35rem 0 .55rem;
  font-size: .72rem;
  font-weight: 800;
  letter-spacing: .04em;
  text-transform: uppercase;
  color: #5c6b7a;
  display: inline-flex;
  align-items: center;
  gap: .4rem;
}
.edu-feed-comment{
  display: flex;
  align-items: flex-start;
  gap: .55rem;
  margin-bottom: .55rem;
}
.edu-feed-comment-body{
  flex: 1 1 auto;
  min-width: 0;
  padding: .45rem .65rem;
  border-radius: 12px;
  background: #f4f8fb;
  border: 1px solid rgba(11,110,153,.08);
}
.edu-feed-comment-top{
  display: flex;
  align-items: center;
  gap: .45rem;
  flex-wrap: wrap;
  margin-bottom: .15rem;
}
.edu-feed-comment-top strong{
  font-size: .82rem;
  color: #0a3d5c;
}
.edu-feed-comment-top span{
  font-size: .7rem;
  font-weight: 600;
  color: #8a97a5;
}
.edu-feed-comment-body p{
  margin: 0;
  font-size: .84rem;
  font-weight: 600;
  color: #1a2b3c;
  line-height: 1.4;
}
.edu-feed-comment-del{
  appearance: none;
  border: 0;
  background: transparent;
  color: #8a97a5;
  margin-left: auto;
  cursor: pointer;
  padding: .1rem .25rem;
  border-radius: 6px;
}
.edu-feed-comment-del:hover{
  color: #c62828;
  background: rgba(198,40,40,.08);
}

/* Aside timelines en home admin */
.edu-home-aside .edu-home-timeline{
  margin-bottom: 1rem;
}
.edu-home-aside-badge,
.edu-home-aside-date{
  display: inline-flex !important;
  align-items: center;
  gap: .4rem;
  border-radius: 999px !important;
  padding: .35rem .75rem !important;
  font-size: .72rem !important;
  font-weight: 800 !important;
  letter-spacing: .04em;
  text-transform: uppercase;
}
.edu-home-aside-badge{
  background: linear-gradient(135deg, #0b6e99, #0a3d5c) !important;
  color: #fff !important;
}
.edu-home-aside-date{
  background: #e6f4fa !important;
  color: #0a4d6e !important;
}
.edu-home-aside .timeline-item{
  border-radius: 12px !important;
  border: 1px solid rgba(11,110,153,.12);
  box-shadow: 0 3px 10px rgba(10,61,92,.04);
  overflow: hidden;
}
@media (max-width: 768px){
  .edu-composer-submit{ width: 100%; margin-left: 0; justify-content: center; }
}

/* Feed: embeds YouTube en publicaciones */
.edu-feed-rich{
  margin: 0;
  border-radius: 12px;
  overflow: hidden;
  background: #111827;
}
.edu-feed-rich iframe,
.edu-feed-rich object,
.edu-feed-rich embed,
.edu-feed-rich .edu-ig-sesion-video iframe{
  width: 100% !important;
  max-width: 100% !important;
  min-height: 220px;
  height: 240px;
  border: 0;
  display: block;
  border-radius: 12px;
}

/* Home aside panels */
.edu-home-aside-panel{
  margin: 0 0 .85rem;
  padding: .85rem !important;
}
.edu-home-aside-head{
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: .35rem .55rem;
  margin-bottom: .7rem;
}
.edu-home-aside-head strong{
  font-family: var(--edu-display);
  font-size: 1rem;
  font-weight: 800;
  color: #0a3d5c;
  width: 100%;
}
.edu-home-aside-head .edu-home-aside-date{
  margin-left: auto;
}
.edu-home-aside-empty{
  padding: .85rem;
  border-radius: 12px;
  background: #f7fbfd;
  border: 1px dashed rgba(11,110,153,.2);
  color: #5c6b7a;
  font-size: .84rem;
  font-weight: 600;
  text-align: center;
}
.edu-home-aside-list{
  display: flex;
  flex-direction: column;
  gap: .65rem;
}
.edu-home-aside-card{
  grid-template-columns: 1fr !important;
}
.edu-home-aside-card .edu-mat-file-preview{
  min-height: 120px;
}
.edu-home-aside-trab{
  min-height: 0;
}
.edu-home-aside-trab .edu-ig-trabajo-title{
  font-size: .9rem;
}
.edu-home-aside-trab .edu-ig-trabajo-main{
  padding: .7rem .75rem .8rem;
}

/* Profesores con clase ? home */
.edu-home-prof-list{
  gap: .55rem;
}
.edu-home-prof-card{
  display: flex;
  align-items: flex-start;
  gap: .7rem;
  padding: .7rem .75rem;
  border-radius: 12px;
  background: #fff;
  border: 1px solid rgba(11,110,153,.14);
  box-shadow: 0 3px 10px rgba(10,61,92,.04);
  animation: eduFadeUp .4s ease both;
  animation-delay: var(--edu-inc-delay, 0s);
}
.edu-home-prof-avatar{
  width: 44px;
  height: 44px;
  border-radius: 12px;
  object-fit: cover;
  flex: 0 0 auto;
  border: 2px solid rgba(11,110,153,.16);
  background: #eef6fa;
}
.edu-home-prof-info{
  flex: 1 1 auto;
  min-width: 0;
}
.edu-home-prof-name{
  display: block;
  font-family: var(--edu-display);
  font-size: .9rem;
  font-weight: 800;
  color: #0a3d5c;
  line-height: 1.25;
  margin-bottom: .3rem;
}
.edu-home-prof-tags{
  display: flex;
  flex-wrap: wrap;
  gap: .3rem;
  margin-bottom: .3rem;
}
.edu-home-prof-mat,
.edu-home-prof-aula{
  margin: .15rem 0 0;
  font-size: .74rem;
  font-weight: 600;
  color: #5c6b7a;
  line-height: 1.35;
  display: flex;
  align-items: flex-start;
  gap: .4rem;
}
.edu-home-prof-mat i,
.edu-home-prof-aula i{
  color: #0b6e99;
  margin-top: .12rem;
  flex: 0 0 auto;
}

/* Mis clases ? home docente */
.edu-home-clase-ico{
  width: 44px;
  height: 44px;
  border-radius: 12px;
  flex: 0 0 auto;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  background: linear-gradient(145deg, #e8f4fa 0%, #d4ebf5 100%);
  color: #0b6e99;
  border: 2px solid rgba(11,110,153,.16);
  font-size: 1rem;
}
.edu-home-aside-right .edu-home-aside-panel{
  margin-bottom: .85rem;
}
.edu-home-aside-right .edu-home-aside-card .edu-mat-yt-embed,
.edu-home-aside-right .edu-home-aside-card .edu-ig-sesion-video{
  position: relative;
  width: 100%;
  padding-bottom: 56.25%;
  height: 0;
  overflow: hidden;
  border-radius: 10px;
  background: #0a3d5c;
}
.edu-home-aside-right .edu-home-aside-card .edu-mat-yt-embed iframe,
.edu-home-aside-right .edu-home-aside-card .edu-ig-sesion-video iframe{
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  border: 0;
}

/* ===== M?dulo Personal (CRUD + tablas) ===== */
.edu-personal-hero{
  margin: .75rem 1rem 0;
}
.edu-quiz-head-actions{
  display: flex;
  flex-wrap: wrap;
  gap: .45rem;
  align-items: center;
  margin-left: auto;
}
.edu-personal-filter-wrap{
  padding-top: .35rem;
}
.edu-filter-head{
  display: flex;
  flex-direction: column;
  gap: .1rem;
  margin-bottom: .65rem;
}
.edu-filter-head strong{
  font-family: var(--edu-display);
  font-size: 1rem;
  color: #0a3d5c;
}
.edu-personal-wrap{
  padding-top: .25rem;
}
.edu-personal-table-shell{
  padding: .75rem;
}
.edu-personal-table-wrap{
  border: 1px solid rgba(11,110,153,.14);
  border-radius: 12px;
  overflow: hidden;
  background: #fff;
}
.edu-personal-table{
  margin-bottom: 0 !important;
}
.edu-personal-table thead th{
  background: linear-gradient(180deg, #f4fafc, #e8f3f8);
  color: #0a3d5c;
  font-size: .72rem;
  font-weight: 800;
  text-transform: uppercase;
  letter-spacing: .03em;
  border-bottom: 1px solid rgba(11,110,153,.16) !important;
  white-space: nowrap;
}
.edu-personal-table tbody td{
  vertical-align: middle !important;
  font-size: .86rem;
}
.edu-personal-name{
  color: #0a3d5c;
  font-weight: 800;
  display: block;
  flex: 1 1 auto;
  min-width: 0;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
  line-height: 1.25;
}
.edu-personal-namecell{
  display: flex;
  align-items: center;
  gap: .55rem;
  width: 100%;
  max-width: 100%;
  min-width: 0;
}
.edu-personal-table td.edu-personal-name-td{
  max-width: 240px;
  width: 220px;
  overflow: hidden;
}
.edu-personal-avatar{
  width: 36px;
  height: 36px;
  border-radius: 10px;
  object-fit: cover;
  flex: 0 0 auto;
  border: 2px solid rgba(11,110,153,.16);
  background: #eef6fa;
}
.edu-personal-row--inactive{
  background: rgba(255, 193, 7, .12) !important;
}
.edu-personal-table-shell{
  padding: .85rem;
  background: linear-gradient(180deg, #fff 0%, #f7fbfd 100%);
}
.edu-personal-table thead th{
  background: linear-gradient(180deg, #f4fafc, #e8f3f8);
  color: #0a3d5c;
  font-size: .72rem;
  font-weight: 800;
  text-transform: uppercase;
  letter-spacing: .03em;
  border-bottom: 1px solid rgba(11,110,153,.16) !important;
  white-space: nowrap;
}
.edu-personal-wrap .edu-incidencia-head{
  margin-bottom: .85rem;
}
.edu-personal-actions{
  white-space: nowrap;
}
.edu-personal-form-head{
  padding: .85rem 1rem .35rem;
  margin-bottom: .25rem;
}
.edu-personal-form-footer{
  padding: .75rem 1rem 1rem;
  display: flex;
  gap: .45rem;
  justify-content: flex-end;
}
.edu-personal-nested{
  margin-top: .35rem;
}
.edu-personal-summary{
  display: flex;
  flex-wrap: wrap;
  gap: .65rem;
  margin-top: .85rem;
}
.edu-personal-summary-item{
  flex: 1 1 140px;
  min-width: 120px;
  padding: .7rem .85rem;
  border-radius: 12px;
  background: #f4fafc;
  border: 1px solid rgba(11,110,153,.14);
}
.edu-personal-summary-item span{
  display: block;
  font-size: .72rem;
  font-weight: 700;
  color: #5c6b7a;
  text-transform: uppercase;
  letter-spacing: .03em;
  margin-bottom: .2rem;
}
.edu-personal-summary-item strong{
  font-family: var(--edu-display);
  font-size: 1.15rem;
  color: #0a3d5c;
}
.edu-personal-summary-item--cred{
  background: #fff5f5;
  border-color: rgba(220,53,69,.2);
}
.edu-personal-summary-item--cred strong{
  color: #c62828;
}
.edu-personal-tfoot td{
  background: #f4fafc;
}
.edu-personal-asis{
  padding: .5rem 0;
}
.edu-personal-asis-legend{
  display: flex;
  flex-wrap: wrap;
  gap: .35rem;
  margin-bottom: .65rem;
}
.edu-personal-asis-grid > [class*="col-"] > div:first-child{
  border-radius: 10px !important;
  padding: .45rem .2rem !important;
  font-weight: 800;
  box-shadow: 0 2px 8px rgba(10,61,92,.08);
}
@media (max-width: 768px){
  .edu-personal-hero{
    margin: .5rem .5rem 0;
  }
  .edu-quiz-head-actions{
    margin-left: 0;
    width: 100%;
  }
}

/* =========================================================
   POS Ventas (ventapos)
   ========================================================= */
.edu-pos-wrap{
  padding-top: 0;
}
.edu-pos-toolbar{
  margin-bottom: .7rem !important;
  border: 1px solid var(--edu-border, #d7e6ee);
  box-shadow: var(--edu-shadow-sm, 0 1px 3px rgba(10,61,92,.06));
}
.edu-pos-toolbar .card-header{
  display: flex;
  align-items: center;
  gap: .75rem;
  flex-wrap: wrap;
}
.edu-pos-punven{
  margin-left: auto;
  font-size: .86rem;
  font-weight: 700;
  color: #0a3d5c;
  background: #eef6fa;
  border: 1px solid rgba(11,110,153,.18);
  padding: .35rem .7rem;
  border-radius: 8px;
}
.edu-pos-form-shell{
  background: #fff;
  border: 1px solid var(--edu-border, #d7e6ee);
  border-radius: 12px;
  box-shadow: var(--edu-shadow-sm, 0 1px 3px rgba(10,61,92,.06));
  padding: 1rem 1.1rem 1.2rem;
  margin-bottom: 1rem;
}
.edu-pos-form-head{
  margin-bottom: .85rem;
  padding-bottom: .65rem;
  border-bottom: 1px solid #e8f1f6;
}
.edu-pos-form-head strong{
  display: block;
  color: #0a3d5c;
  font-size: 1.15rem;
  font-weight: 800;
}
.edu-pos-card{
  background: #f8fbfd;
  border: 1px solid #e4eef4;
  border-radius: 10px;
  padding: .65rem .75rem .85rem;
  margin-bottom: .75rem;
}
.edu-pos-tabs.nav-tabs{
  border-bottom: 1px solid #d7e6ee;
  margin-bottom: .75rem;
}
.edu-pos-tabs .nav-link{
  color: #4a6575 !important;
  font-weight: 700;
  font-size: .9rem;
  border: none !important;
  border-bottom: 2px solid transparent !important;
  border-radius: 0 !important;
  padding: .45rem .7rem;
}
.edu-pos-tabs .nav-link i{
  margin-right: .35rem;
  opacity: .85;
}
.edu-pos-tabs .nav-link.active{
  color: #0b6e99 !important;
  background: transparent !important;
  border-bottom-color: #0b6e99 !important;
}
.edu-pos-productos{
  overflow-y: auto;
  max-height: 320px;
  border: 1px solid #e4eef4;
  border-radius: 10px;
  background: #fff;
  padding: .35rem;
}
.edu-pos-detalle{
  background: linear-gradient(180deg, #fff 0%, #f7fbfd 100%);
  border: 1px solid #e4eef4;
  border-radius: 10px;
  padding: .75rem;
  min-height: 280px;
}
.edu-pos-cart-item{
  border: 1px solid #e8f1f6;
  border-radius: 8px;
  padding: .45rem .5rem;
  margin-bottom: .45rem;
  background: #fff;
}
.edu-pos-cart-item-name{
  display: flex;
  flex-wrap: wrap;
  gap: .35rem;
  align-items: baseline;
  margin-bottom: .25rem;
}
.edu-pos-cart-item-name strong{
  color: #0a3d5c;
  font-size: .9rem;
}
.edu-pos-cart-item-name span{
  color: #6a8494;
  font-size: .78rem;
  font-weight: 600;
}
.edu-pos-cart-table{
  width: 100%;
  margin: 0;
}
.edu-pos-cart-empty{
  color: #6a8494;
  font-size: .9rem;
  padding: .75rem .25rem;
  text-align: center;
}
.edu-pos-cart-empty i{
  display: block;
  font-size: 1.4rem;
  margin-bottom: .35rem;
  color: #0b6e99;
  opacity: .7;
}
.edu-pos-cart-count{
  font-size: .82rem;
  font-weight: 700;
  color: #0a3d5c;
  margin-top: .35rem;
}
.edu-pos-totals label{
  font-size: .78rem;
  font-weight: 700;
  color: #4a6575;
  margin-bottom: .2rem;
}
.edu-pos-total{
  color: #0b6e99 !important;
}
.edu-pos-actions{
  display: flex;
  flex-wrap: wrap;
  gap: .5rem;
  justify-content: flex-end;
  width: 100%;
}
.edu-pos-actions .btn{
  border-radius: 0;
  min-height: 44px;
  font-weight: 800;
  letter-spacing: .02em;
}
@media (max-width: 768px){
  .edu-pos-punven{
    margin-left: 0;
    width: 100%;
  }
  .edu-pos-form-shell{
    padding: .85rem;
  }
}
