/* =========================================================
   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;
}

.edu-modo-chip {
  display: inline-block;
  margin: 0.55rem 0.75rem 0;
  padding: 0.28rem 0.55rem;
  border-radius: 6px;
  font-size: 0.62rem;
  font-weight: 800;
  letter-spacing: 0.06em;
  line-height: 1;
}
.edu-modo-chip.is-instituto {
  background: #0ea5e9;
  color: #082f49;
  box-shadow: 0 0 0 1px rgba(14, 165, 233, 0.35);
}
.edu-modo-chip.is-colegio {
  background: rgba(255, 255, 255, 0.14);
  color: rgba(255, 255, 255, 0.85);
}

.edu-dash-eyebrow .edu-modo-inline {
  display: inline-block;
  margin-left: 0.45rem;
  padding: 0.15rem 0.45rem;
  border-radius: 999px;
  font-size: 0.68rem;
  font-weight: 800;
  letter-spacing: 0.04em;
  vertical-align: middle;
}
.edu-dash-eyebrow .edu-modo-inline.is-instituto {
  background: #e0f2fe;
  color: #0369a1;
}
.edu-dash-eyebrow .edu-modo-inline.is-colegio {
  background: #f1f5f9;
  color: #475569;
}

.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;
}

.main-sidebar .nav-treeview > .nav-item > .nav-link {
  color: rgba(255, 255, 255, 0.75) !important;
  border-radius: 8px;
  margin: 1px 0.65rem 1px 1rem;
}

.main-sidebar .nav-treeview > .nav-item > .nav-link:hover,
.main-sidebar .nav-treeview > .nav-item > .nav-link.active {
  background: rgba(255, 255, 255, 0.1) !important;
  color: #fff !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;
}

.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;
}

.edu-path-switch {
  display: flex;
  flex-wrap: wrap;
  gap: 0.55rem;
  margin-top: 0.85rem;
  position: relative;
  z-index: 1;
}

.edu-path-link {
  display: flex;
  flex-direction: column;
  justify-content: center;
  min-width: 10.5rem;
  max-width: 18rem;
  padding: 0.55rem 0.8rem;
  border-radius: 0.45rem;
  border: 1px solid rgba(255, 255, 255, 0.35);
  background: rgba(255, 255, 255, 0.1);
  color: #fff !important;
  text-decoration: none !important;
  transition: background 0.2s ease, border-color 0.2s ease, transform 0.2s ease;
}

.edu-path-link:hover {
  background: rgba(255, 255, 255, 0.2);
  border-color: rgba(255, 255, 255, 0.55);
  transform: translateY(-1px);
}

.edu-path-link.is-active {
  background: rgba(255, 255, 255, 0.22);
  border-color: rgba(255, 255, 255, 0.7);
}

.edu-path-link span {
  font-size: 0.92rem;
  font-weight: 800;
  letter-spacing: 0.01em;
}

.edu-path-link em {
  margin-top: 0.15rem;
  font-style: normal;
  font-size: 0.72rem;
  font-weight: 500;
  opacity: 0.85;
  line-height: 1.25;
}

@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;
}

#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 {
  margin: 0 !important;
  font-size: 0.95rem !important;
  line-height: 1 !important;
  width: auto !important;
  height: auto !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,
#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-info {
  width: 100%;
  min-width: 0;
  flex: 1 1 auto;
  display: flex;
  flex-direction: column;
  align-items: stretch;
}

.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 {
  width: 100%;
  align-self: stretch;
  margin-top: 0 !important;
}

.edu-horario-card .edu-incidencia-meta li {
  width: 100%;
  box-sizing: border-box;
}

.edu-horario-card .edu-incidencia-meta li span {
  flex: 1 1 auto;
  min-width: 0;
  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 {
  flex: 1 1 auto;
  min-width: 0;
  justify-content: center;
  white-space: nowrap !important;
  line-height: 1.2;
  height: 32px !important;
  min-height: 32px !important;
  max-height: 32px !important;
  padding: 0.3rem 0.45rem !important;
  font-size: 0.68rem !important;
  font-weight: 800 !important;
  border-radius: 8px !important;
  overflow: hidden;
  text-overflow: ellipsis;
}

.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.2rem;
}

.edu-archivo-actions .btn i,
.edu-archivo-actions .btn .fas,
.edu-archivo-actions .btn .far {
  font-size: 0.95rem;
}

.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;
  }
}

/* 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;
}

.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:not(.edu-alu-card-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,
  #contenido .edu-mat-wrap .edu-mat-media-grid > .edu-alu-card-col,
  #contenido .edu-mat-wrap .edu-incidencia-grid > .edu-alu-card-col {
    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 (excepto grilla alumno 4 cols) */
#contenido .edu-mat-wrap .edu-incidencia-grid > .edu-incidencia-col:not(.edu-alu-card-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;
}

.edu-plan-badges {
  display: flex;
  flex-wrap: wrap;
  gap: 0.4rem;
  margin-top: 0.65rem;
}

.edu-plan-badge {
  display: inline-flex;
  align-items: center;
  padding: 0.2rem 0.55rem;
  border-radius: 0.35rem;
  font-size: 0.72rem;
  font-weight: 700;
  background: rgba(11, 110, 153, 0.1);
  color: #0b6e99;
  border: 1px solid rgba(11, 110, 153, 0.18);
}

.edu-plan-badge--ver {
  background: rgba(232, 154, 12, 0.12);
  color: #9a6700;
  border-color: rgba(232, 154, 12, 0.28);
}

.edu-plan-badge--tot {
  background: rgba(42, 157, 143, 0.12);
  color: #1b6b61;
  border-color: rgba(42, 157, 143, 0.25);
}

.edu-plan-badge--est-borrador {
  background: rgba(102, 112, 133, 0.12);
  color: #475467;
  border-color: rgba(102, 112, 133, 0.22);
}

.edu-plan-badge--est-publicado,
.edu-plan-badge--est-aprobado {
  background: rgba(18, 140, 80, 0.12);
  color: #0f6b3d;
  border-color: rgba(18, 140, 80, 0.25);
}

.edu-plan-readonly-ses li {
  margin-bottom: 0.45rem;
}

.edu-plan-readonly-ses li.is-done strong {
  color: #0f6b3d;
}

/* 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;
}

/* =========================================================
   Campus alumno Â· curso (miprofesor â†’ sesiones / trabajos)
   ========================================================= */

.edu-alu-curso-wrap {
  padding-top: 0.25rem;
}

.edu-alu-curso-panel {
  background: var(--edu-surface, #fff);
  border: 1px solid var(--edu-border, #e6ebf0);
  border-radius: var(--edu-radius, 16px);
  box-shadow: var(--edu-shadow-sm, 0 8px 24px rgba(26, 43, 60, 0.05));
  padding: 1rem 1.1rem 1.25rem;
}

.edu-alu-curso-head {
  margin-bottom: 0.85rem;
  padding-bottom: 0.75rem;
  border-bottom: 1px solid var(--edu-border, #e6ebf0);
}

.edu-alu-curso-title {
  margin: 0;
  font-family: var(--edu-display, inherit);
  font-size: 1.25rem;
  font-weight: 800;
  color: var(--edu-ink, #1a2b3c);
  line-height: 1.25;
}

.edu-alu-curso-meta {
  margin: 0.25rem 0 0;
  font-size: 0.8rem;
  font-weight: 600;
  color: var(--edu-muted, #5c6b7a);
}

/* PestaÃ±as alumno: fila limpia, sin iconos, alineadas */
#contenido .edu-alu-curso-wrap .edu-alu-curso-tabs {
  margin: 0;
  background: transparent;
  box-shadow: none;
  border: 0;
}

#contenido .edu-alu-curso-wrap .edu-alu-curso-tabs > .nav.nav-tabs {
  display: flex !important;
  flex-wrap: wrap;
  align-items: center;
  gap: 0.4rem;
  border: 0 !important;
  margin: 0 0 1rem !important;
  padding: 0 0 0.85rem !important;
  border-bottom: 1px solid var(--edu-border, #e6ebf0) !important;
}

#contenido .edu-alu-curso-wrap .edu-alu-curso-tabs > .nav.nav-tabs > .nav-link {
  display: inline-flex !important;
  align-items: center !important;
  justify-content: center !important;
  gap: 0;
  border: 1px solid var(--edu-border, #e6ebf0) !important;
  border-radius: 999px !important;
  margin: 0 !important;
  padding: 0.5rem 1rem !important;
  min-height: 38px;
  line-height: 1 !important;
  font-size: 0.8rem !important;
  font-weight: 800 !important;
  letter-spacing: 0.02em;
  text-transform: none !important;
  color: var(--edu-muted, #5c6b7a) !important;
  background: var(--edu-bg-soft, #f4f7fa) !important;
  white-space: nowrap;
}

#contenido .edu-alu-curso-wrap .edu-alu-curso-tabs > .nav.nav-tabs > .nav-link i {
  display: none !important;
}

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

/* 4 columnas en pantallas grandes (sesiones + trabajos) */
#contenido .edu-alu-curso-wrap .edu-alu-card-grid > .edu-alu-card-col,
#contenido .edu-alu-curso-wrap .edu-mat-media-grid > .edu-alu-card-col,
#contenido .edu-alu-trabajo-wrap .edu-mat-media-grid > .edu-alu-card-col {
  flex: 0 0 100% !important;
  max-width: 100% !important;
  width: 100% !important;
}

@media (min-width: 576px) {
  #contenido .edu-alu-curso-wrap .edu-alu-card-grid > .edu-alu-card-col,
  #contenido .edu-alu-curso-wrap .edu-mat-media-grid > .edu-alu-card-col,
  #contenido .edu-alu-trabajo-wrap .edu-mat-media-grid > .edu-alu-card-col {
    flex: 0 0 50% !important;
    max-width: 50% !important;
    width: 50% !important;
  }
}

@media (min-width: 992px) {
  #contenido .edu-alu-curso-wrap .edu-alu-card-grid > .edu-alu-card-col,
  #contenido .edu-alu-curso-wrap .edu-mat-media-grid > .edu-alu-card-col,
  #contenido .edu-alu-trabajo-wrap .edu-mat-media-grid > .edu-alu-card-col,
  #contenido .edu-alu-curso-wrap .edu-incidencia-grid > .edu-alu-card-col,
  #contenido .edu-alu-trabajo-wrap .edu-incidencia-grid > .edu-alu-card-col {
    flex: 0 0 25% !important;
    max-width: 25% !important;
    width: 25% !important;
  }
}

.edu-alu-session-card {
  height: 100% !important;
  min-height: 0 !important;
  cursor: pointer;
}

.edu-alu-session-card:hover,
.edu-alu-session-card:focus {
  outline: none;
  border-color: rgba(11, 110, 153, 0.35);
  box-shadow: 0 10px 24px rgba(26, 43, 60, 0.08);
  transform: translateY(-1px);
}

.edu-alu-session-card-title {
  margin: 0 0 0.55rem !important;
  font-size: 0.98rem !important;
  font-weight: 800 !important;
  color: var(--edu-primary-dark, #0a4f6e) !important;
  line-height: 1.3 !important;
}

.edu-alu-list-head {
  display: flex;
  align-items: flex-end;
  justify-content: space-between;
  gap: 0.75rem;
  margin-bottom: 0.95rem;
}

.edu-alu-list-eyebrow {
  margin: 0;
  font-size: 0.72rem;
  font-weight: 800;
  letter-spacing: 0.06em;
  text-transform: uppercase;
  color: var(--edu-muted, #5c6b7a);
}

.edu-alu-list-title {
  margin: 0.15rem 0 0;
  font-family: var(--edu-display, inherit);
  font-size: 1.2rem;
  font-weight: 800;
  color: var(--edu-ink, #1a2b3c);
  line-height: 1.2;
}

.edu-alu-list-count {
  flex-shrink: 0;
  padding: 0.35rem 0.7rem;
  border-radius: 999px;
  background: var(--edu-bg-soft, #f4f7fa);
  border: 1px solid var(--edu-border, #e6ebf0);
  font-size: 0.75rem;
  font-weight: 800;
  color: var(--edu-muted, #5c6b7a);
}

.edu-alu-session-list {
  display: flex;
  flex-direction: column;
  gap: 0.65rem;
}

.edu-alu-session-item {
  display: flex;
  align-items: center;
  gap: 0.85rem;
  padding: 0.95rem 1rem;
  border: 1px solid var(--edu-border, #e6ebf0);
  border-radius: 14px;
  background: linear-gradient(180deg, #fff 0%, var(--edu-bg-soft, #f7fafc) 100%);
  cursor: pointer;
  transition: border-color 0.2s ease, box-shadow 0.2s ease, transform 0.2s ease;
  animation: edu-alu-fade-up 0.35s ease both;
  animation-delay: var(--edu-alu-delay, 0s);
}

.edu-alu-session-item:hover,
.edu-alu-session-item:focus {
  outline: none;
  border-color: rgba(11, 110, 153, 0.35);
  box-shadow: 0 10px 24px rgba(26, 43, 60, 0.07);
  transform: translateY(-1px);
}

.edu-alu-session-icon {
  flex-shrink: 0;
  width: 46px;
  height: 46px;
  border-radius: 12px;
  display: flex;
  align-items: center;
  justify-content: center;
  background: linear-gradient(145deg, #0b6e99 0%, #2a9d8f 100%);
  color: #fff;
  font-size: 1.05rem;
}

.edu-alu-session-body {
  flex: 1;
  min-width: 0;
}

.edu-alu-session-body strong {
  display: block;
  font-size: 0.98rem;
  font-weight: 800;
  color: var(--edu-primary-dark, #0a4f6e);
  line-height: 1.3;
}

.edu-alu-session-meta {
  list-style: none;
  margin: 0.35rem 0 0;
  padding: 0;
  display: flex;
  flex-wrap: wrap;
  gap: 0.55rem 0.9rem;
}

.edu-alu-session-meta li {
  display: inline-flex;
  align-items: center;
  gap: 0.35rem;
  font-size: 0.76rem;
  font-weight: 700;
  color: var(--edu-muted, #5c6b7a);
}

.edu-alu-session-meta i {
  opacity: 0.85;
}

.edu-alu-session-cta {
  flex-shrink: 0;
  display: inline-flex;
  align-items: center;
  gap: 0.35rem;
  font-size: 0.78rem;
  font-weight: 800;
  color: var(--edu-primary, #0b6e99);
  white-space: nowrap;
}

.edu-alu-session-item:hover .edu-alu-session-cta {
  gap: 0.5rem;
}

.edu-alu-status {
  display: inline-flex;
  align-items: center;
  gap: 0.3rem;
  padding: 0.28rem 0.55rem;
  border-radius: 999px;
  font-size: 0.7rem;
  font-weight: 800;
  letter-spacing: 0.02em;
}

.edu-alu-status--ok {
  background: rgba(42, 157, 143, 0.12);
  color: #1b7a6e;
  border: 1px solid rgba(42, 157, 143, 0.22);
}

.edu-alu-status--pending {
  background: rgba(232, 154, 12, 0.12);
  color: #a66a00;
  border: 1px solid rgba(232, 154, 12, 0.22);
}

.edu-alu-trabajo-card {
  height: auto !important;
}

.edu-alu-trabajo-actions {
  display: flex;
  flex-wrap: wrap;
  gap: 0.45rem;
  margin-top: 0.75rem;
}

.edu-alu-trabajo-btn {
  display: inline-flex;
  align-items: center;
  gap: 0.35rem;
  padding: 0.4rem 0.7rem;
  border-radius: 10px;
  border: 1px solid var(--edu-border, #e6ebf0);
  background: #fff;
  color: var(--edu-ink, #1a2b3c);
  font-size: 0.75rem;
  font-weight: 800;
  text-decoration: none !important;
  transition: background 0.15s ease, border-color 0.15s ease, color 0.15s ease;
}

.edu-alu-trabajo-btn:hover {
  border-color: rgba(11, 110, 153, 0.35);
  color: var(--edu-primary, #0b6e99);
}

.edu-alu-trabajo-btn--primary {
  background: linear-gradient(135deg, #0a4f6e, #0b6e99);
  border-color: transparent;
  color: #fff !important;
}

.edu-alu-trabajo-btn--primary:hover {
  filter: brightness(1.05);
  color: #fff !important;
}

@keyframes edu-alu-fade-up {
  from {
    opacity: 0;
    transform: translateY(6px);
  }
  to {
    opacity: 1;
    transform: translateY(0);
  }
}

@media (max-width: 575.98px) {
  .edu-alu-session-item {
    align-items: flex-start;
  }
  .edu-alu-session-cta {
    display: none;
  }
}

/* =========================================================
   Botones soft (Carrera / Escolaridad) â€” ancho auto, limpio
   ========================================================= */
.edu-btn-soft {
  display: inline-flex !important;
  align-items: center;
  justify-content: center;
  gap: 0.4rem;
  width: auto !important;
  min-width: 0;
  height: auto !important;
  min-height: 2rem;
  margin: 0;
  padding: 0.4rem 0.85rem !important;
  border: 1px solid transparent !important;
  border-radius: 999px !important;
  background: #f1f5f9 !important;
  color: #334155 !important;
  font-family: var(--edu-font);
  font-size: 0.8rem !important;
  font-weight: 650 !important;
  letter-spacing: 0.01em;
  line-height: 1.2 !important;
  white-space: nowrap;
  box-shadow: none !important;
  transition: background 0.15s ease, color 0.15s ease, border-color 0.15s ease, transform 0.12s ease;
  cursor: pointer;
}
.edu-btn-soft i {
  font-size: 0.78rem;
  opacity: 0.92;
}
.edu-btn-soft:hover,
.edu-btn-soft:focus {
  background: #e2e8f0 !important;
  color: #0f172a !important;
  border-color: #cbd5e1 !important;
  outline: none;
  transform: translateY(-1px);
}
.edu-btn-soft:active {
  transform: translateY(0);
}
.edu-btn-soft.is-primary {
  background: #e6f4fa !important;
  color: #0b6e99 !important;
  border-color: rgba(11, 110, 153, 0.22) !important;
}
.edu-btn-soft.is-primary:hover,
.edu-btn-soft.is-primary:focus {
  background: #d5eef8 !important;
  color: #084d6e !important;
}
.edu-btn-soft.is-success {
  background: #e8f7f5 !important;
  color: #1f7a70 !important;
  border-color: rgba(42, 157, 143, 0.25) !important;
}
.edu-btn-soft.is-success:hover,
.edu-btn-soft.is-success:focus {
  background: #d7f1ed !important;
  color: #16665d !important;
}
.edu-btn-soft.is-info {
  background: #eef6fb !important;
  color: #2b6f8a !important;
  border-color: rgba(77, 171, 206, 0.28) !important;
}
.edu-btn-soft.is-info:hover,
.edu-btn-soft.is-info:focus {
  background: #e0f0f8 !important;
  color: #1f5670 !important;
}
.edu-btn-soft.is-danger {
  background: #fef2f2 !important;
  color: #b91c1c !important;
  border-color: rgba(230, 57, 70, 0.22) !important;
}
.edu-btn-soft.is-danger:hover,
.edu-btn-soft.is-danger:focus {
  background: #fee2e2 !important;
  color: #991b1b !important;
}
.edu-btn-soft.is-icon {
  padding: 0.4rem 0.55rem !important;
}
.edu-btn-soft .edu-btn-count {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-width: 1.15rem;
  height: 1.15rem;
  padding: 0 0.3rem;
  border-radius: 999px;
  background: rgba(15, 23, 42, 0.08);
  font-size: 0.68rem;
  font-weight: 700;
  line-height: 1;
}

.edu-gra-actions {
  display: inline-flex;
  flex-wrap: nowrap;
  align-items: center;
  justify-content: flex-end;
  gap: 0.45rem;
  vertical-align: middle;
}
.edu-gra-tree td.edu-gra-td-actions {
  width: 1%;
  min-width: 0;
  max-width: none;
  white-space: nowrap;
  text-align: right;
  vertical-align: middle !important;
  padding-top: 0.55rem !important;
  padding-bottom: 0.55rem !important;
}
.edu-gra-actions .btn.btn-sm {
  width: auto !important;
  min-width: 0 !important;
  height: auto !important;
  display: inline-flex !important;
  flex-direction: row;
  align-items: center;
  justify-content: center;
  gap: 0.5rem !important;
  padding: 0.4rem 0.75rem !important;
  border-radius: 0.35rem !important;
  font-size: 0.8rem !important;
  font-weight: 600 !important;
  line-height: 1.25 !important;
  white-space: nowrap;
  box-shadow: none !important;
}
.edu-gra-actions .btn.btn-sm i {
  font-size: 0.78rem;
  margin: 0 !important;
  flex-shrink: 0;
}
.edu-gra-actions .btn.btn-sm > span {
  display: inline-block;
  margin: 0;
  line-height: 1.25;
}
.edu-gra-actions .edu-gra-count {
  margin-left: 0.2rem;
  font-weight: 700;
}

.edu-malla-toolbar {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 0.55rem 0.75rem;
  margin-bottom: 0.5rem;
}
.edu-malla-toolbar strong {
  font-size: 0.82rem;
  font-weight: 700;
  color: #334155;
}
.edu-malla-toolbar .edu-malla-hint {
  font-size: 0.78rem;
  color: #64748b;
  margin: 0;
}


/* ===== Campus alumno: detalle entrega (mitrabajo_tabla) — cards campus ===== */
.edu-campus-board {
  --c-ink: #0a3d5c;
  --c-mid: #0c5278;
  --c-cyan: #0b6e99;
  --c-soft: #e6f4fa;
  --c-bg: #e8f1f5;
  --c-accent: #e89a0c;
  --c-ok: #2a9d8f;
  position: relative;
  padding: 0.2rem 0 2rem;
  animation: eduCampusIn .5s cubic-bezier(.2,.7,.2,1) both;
}
@keyframes eduCampusIn {
  from { opacity: 0; transform: translateY(14px) scale(.985); }
  to { opacity: 1; transform: none; }
}
.edu-campus-board-bg {
  position: absolute;
  inset: -0.5rem -0.25rem auto;
  height: 220px;
  border-radius: 24px;
  background:
    radial-gradient(600px 180px at 12% 20%, rgba(11,110,153,.16), transparent 60%),
    radial-gradient(500px 160px at 88% 10%, rgba(232,154,12,.14), transparent 55%),
    linear-gradient(180deg, rgba(255,255,255,.55), transparent);
  pointer-events: none;
  z-index: 0;
}
.edu-campus-board > .container-fluid {
  position: relative;
  z-index: 1;
}
.edu-campus-card {
  background: #fff;
  border: 1px solid rgba(11,110,153,.1);
  border-radius: 22px;
  box-shadow:
    0 1px 0 rgba(255,255,255,.8) inset,
    0 14px 34px rgba(10,61,92,.08);
  overflow: hidden;
}
.edu-campus-card--hero {
  position: relative;
  margin-bottom: 1rem;
  padding: 1.45rem 1.45rem 1.55rem;
  color: #fff;
  border: 0;
  background:
    linear-gradient(135deg, rgba(255,255,255,.08) 0%, transparent 40%),
    linear-gradient(135deg, #083d56 0%, #0b6e99 55%, #1486b5 100%);
  box-shadow: 0 22px 48px rgba(10,61,92,.28);
}
.edu-campus-board--practica .edu-campus-card--hero {
  background:
    linear-gradient(135deg, rgba(255,255,255,.08) 0%, transparent 40%),
    linear-gradient(135deg, #0a4a45 0%, #12786f 52%, #2a9d8f 100%);
}
.edu-campus-board--evaluacion .edu-campus-card--hero {
  background:
    linear-gradient(135deg, rgba(255,255,255,.08) 0%, transparent 40%),
    linear-gradient(135deg, #0a3d5c 0%, #0b6e99 48%, #3aa0c8 100%);
}
.edu-campus-hero-art {
  position: absolute;
  inset: 0;
  pointer-events: none;
  overflow: hidden;
}
.edu-campus-hero-orb {
  position: absolute;
  width: 260px;
  height: 260px;
  right: -40px;
  top: -70px;
  border-radius: 50%;
  background: radial-gradient(circle, rgba(255,255,255,.18), transparent 68%);
}
.edu-campus-hero-orb--2 {
  width: 180px;
  height: 180px;
  right: 120px;
  bottom: -90px;
  top: auto;
  background: radial-gradient(circle, rgba(232,154,12,.28), transparent 70%);
}
.edu-campus-hero-seal {
  position: absolute;
  right: 1.4rem;
  bottom: 1.2rem;
  width: 3.4rem;
  height: 3.4rem;
  border-radius: 16px;
  display: none;
  align-items: center;
  justify-content: center;
  background: rgba(255,255,255,.12);
  border: 1px solid rgba(255,255,255,.2);
  font-size: 1.35rem;
}
@media (min-width: 992px) {
  .edu-campus-hero-seal { display: inline-flex; }
}
.edu-campus-hero-grid {
  position: relative;
  z-index: 1;
  display: grid;
  grid-template-columns: minmax(0, 1fr) auto;
  gap: 1.2rem;
  align-items: center;
}
.edu-campus-bread {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 0.35rem;
  margin-bottom: 0.75rem;
  font-size: 0.72rem;
  font-weight: 700;
  letter-spacing: .04em;
  text-transform: uppercase;
  opacity: .85;
}
.edu-campus-bread strong { opacity: 1; font-weight: 800; }
.edu-campus-hero-type {
  display: flex;
  flex-wrap: wrap;
  gap: 0.45rem;
  margin-bottom: 0.65rem;
}
.edu-campus-type-badge,
.edu-campus-pill {
  display: inline-flex;
  align-items: center;
  gap: 0.35rem;
  padding: 0.35rem 0.75rem;
  border-radius: 999px;
  font-size: 0.74rem;
  font-weight: 800;
  background: rgba(255,255,255,.14);
  border: 1px solid rgba(255,255,255,.2);
}
.edu-campus-pill--ok { background: rgba(42,157,143,.28); }
.edu-campus-pill--warn { background: rgba(232,154,12,.28); }
.edu-campus-hero-title {
  margin: 0 0 0.55rem;
  font-family: var(--edu-display, Outfit, sans-serif);
  font-size: clamp(1.55rem, 3vw, 2.15rem);
  font-weight: 800;
  line-height: 1.15;
  letter-spacing: -.03em;
  color: #fff;
  max-width: 38rem;
}
.edu-campus-hero-course {
  margin: 0;
  display: inline-flex;
  align-items: center;
  gap: 0.45rem;
  font-size: 0.95rem;
  font-weight: 700;
  opacity: .92;
}
.edu-campus-scorecard {
  min-width: 132px;
  padding: 1rem 1.1rem;
  border-radius: 18px;
  text-align: center;
  background: rgba(255,255,255,.12);
  border: 1px solid rgba(255,255,255,.22);
  backdrop-filter: blur(8px);
  box-shadow: inset 0 1px 0 rgba(255,255,255,.15);
}
.edu-campus-scorecard-lbl {
  display: block;
  font-size: 0.68rem;
  font-weight: 800;
  letter-spacing: .06em;
  text-transform: uppercase;
  opacity: .8;
}
.edu-campus-scorecard-val {
  display: block;
  margin: 0.2rem 0;
  font-family: var(--edu-display, Outfit, sans-serif);
  font-size: 2.2rem;
  font-weight: 800;
  line-height: 1;
  letter-spacing: -.04em;
}
.edu-campus-scorecard-sub {
  display: block;
  font-size: 0.78rem;
  font-weight: 700;
  opacity: .9;
}
.edu-campus-metrics {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 0.85rem;
  margin-bottom: 1rem;
}
.edu-campus-metric {
  display: flex;
  align-items: center;
  gap: 0.85rem;
  padding: 1.05rem 1.1rem;
  transition: transform .2s ease, box-shadow .2s ease;
}
.edu-campus-metric:hover {
  transform: translateY(-3px);
  box-shadow: 0 18px 36px rgba(10,61,92,.12);
}
.edu-campus-metric-ico {
  width: 3rem;
  height: 3rem;
  border-radius: 15px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  background: var(--c-soft);
  color: var(--c-cyan);
  font-size: 1.15rem;
  flex-shrink: 0;
}
.edu-campus-metric--due .edu-campus-metric-ico {
  background: rgba(232,154,12,.15);
  color: #c47f06;
}
.edu-campus-metric--time .edu-campus-metric-ico {
  background: rgba(42,157,143,.15);
  color: #1b7a6e;
}
.edu-campus-metric-body span {
  display: block;
  font-size: 0.7rem;
  font-weight: 800;
  letter-spacing: .05em;
  text-transform: uppercase;
  color: #7a8b99;
  margin-bottom: 0.15rem;
}
.edu-campus-metric-body strong {
  display: block;
  font-size: 1.05rem;
  font-weight: 800;
  color: var(--c-ink);
  line-height: 1.2;
}
.edu-campus-layout {
  display: grid;
  grid-template-columns: minmax(0, 1.05fr) minmax(0, .95fr);
  gap: 1rem;
  align-items: start;
}
.edu-campus-col {
  display: grid;
  gap: 1rem;
}
.edu-campus-card-head {
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: 0.75rem;
  padding: 1.15rem 1.2rem 0.85rem;
}
.edu-campus-eyebrow {
  margin: 0 0 0.2rem;
  font-size: 0.7rem;
  font-weight: 800;
  letter-spacing: .06em;
  text-transform: uppercase;
  color: #7a8b99;
}
.edu-campus-card-head h3 {
  margin: 0;
  font-size: 1.12rem;
  font-weight: 800;
  color: var(--c-ink);
  letter-spacing: -.01em;
}
.edu-campus-card-ico {
  width: 2.7rem;
  height: 2.7rem;
  border-radius: 14px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  background: var(--c-soft);
  color: var(--c-cyan);
  flex-shrink: 0;
}
.edu-campus-card-ico.is-ok {
  background: rgba(42,157,143,.16);
  color: #1b7a6e;
}
.edu-campus-doccard { padding-bottom: 1.15rem; }
.edu-campus-doc {
  margin: 0 1.15rem;
  display: flex;
  align-items: center;
  gap: 0.9rem;
  padding: 1rem;
  border-radius: 18px;
  text-decoration: none !important;
  color: inherit;
  background: linear-gradient(145deg, #f4fafc, #eaf5fa);
  border: 1px solid rgba(11,110,153,.12);
  transition: transform .18s ease, box-shadow .18s ease;
}
.edu-campus-doc:hover {
  transform: translateY(-2px);
  box-shadow: 0 14px 28px rgba(10,61,92,.12);
}
.edu-campus-doc--empty {
  opacity: .9;
  background: #f7fbfd;
}
.edu-campus-doc-preview {
  width: 4.2rem;
  height: 4.8rem;
  border-radius: 14px;
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  gap: 0.2rem;
  background: linear-gradient(160deg, #0a3d5c, #0b6e99);
  color: #fff;
  flex-shrink: 0;
  box-shadow: 0 12px 22px rgba(10,61,92,.22);
  font-size: 1.45rem;
  position: relative;
}
.edu-campus-doc-preview em {
  font-style: normal;
  font-size: 0.62rem;
  font-weight: 800;
  letter-spacing: .08em;
  opacity: .85;
}
.edu-campus-doc-preview.is-empty {
  background: #d7e4ec;
  color: #7a8b99;
  box-shadow: none;
}
.edu-campus-doccard--pdf .edu-campus-doc-preview { background: linear-gradient(160deg, #8b1e1e, #c62828); }
.edu-campus-doccard--word .edu-campus-doc-preview { background: linear-gradient(160deg, #0d47a1, #1565c0); }
.edu-campus-doccard--xls .edu-campus-doc-preview { background: linear-gradient(160deg, #1b5e20, #2e7d32); }
.edu-campus-doccard--ppt .edu-campus-doc-preview { background: linear-gradient(160deg, #bf360c, #e65100); }
.edu-campus-doc-info {
  min-width: 0;
  flex: 1;
}
.edu-campus-doc-info strong {
  display: block;
  font-size: 0.98rem;
  color: var(--c-ink);
}
.edu-campus-doc-info small {
  color: #6b7c8a;
  font-size: 0.78rem;
}
.edu-campus-doc-cta {
  width: 2.2rem;
  height: 2.2rem;
  border-radius: 999px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  background: #fff;
  color: var(--c-cyan);
  border: 1px solid rgba(11,110,153,.15);
  flex-shrink: 0;
}
.edu-campus-brief-body {
  padding: 0 1.15rem 1.25rem;
}
.edu-campus-brief-body p {
  margin: 0;
  padding: 1.05rem 1.1rem;
  border-radius: 16px;
  background: #f7fbfd;
  border: 1px solid rgba(11,110,153,.08);
  font-size: 0.94rem;
  line-height: 1.65;
  color: #1a2b3c;
  white-space: pre-wrap;
  min-height: 7rem;
}
.edu-campus-empty {
  display: flex;
  align-items: center;
  gap: 0.7rem;
  padding: 1.1rem;
  border-radius: 16px;
  background: #f7fbfd;
  border: 1px dashed rgba(11,110,153,.2);
  color: #6b7c8a;
  font-weight: 700;
  font-size: 0.88rem;
}
.edu-campus-submit {
  position: relative;
}
.edu-campus-submit::before {
  content: "";
  position: absolute;
  left: 0;
  right: 0;
  top: 0;
  height: 5px;
  background: linear-gradient(90deg, #e89a0c, #f0b429);
}
.edu-campus-submit.is-done::before {
  background: linear-gradient(90deg, #2a9d8f, #4dabce);
}
.edu-campus-submit.is-open {
  background:
    radial-gradient(120% 70% at 100% 0%, rgba(232,154,12,.1), transparent 50%),
    #fff;
}
.edu-campus-steps {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 0.5rem;
  margin: 0 1.15rem 1rem;
}
.edu-campus-step {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 0.3rem;
  padding: 0.7rem 0.4rem;
  border-radius: 14px;
  background: #f7fbfd;
  border: 1px solid rgba(11,110,153,.08);
  color: #7a8b99;
}
.edu-campus-step span {
  width: 1.55rem;
  height: 1.55rem;
  border-radius: 999px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  font-size: 0.72rem;
  font-weight: 800;
  background: #dce8ef;
  color: #547083;
}
.edu-campus-step em {
  font-style: normal;
  font-size: 0.7rem;
  font-weight: 800;
  text-transform: uppercase;
  letter-spacing: .04em;
}
.edu-campus-step.is-on {
  background: rgba(11,110,153,.08);
  border-color: rgba(11,110,153,.18);
  color: var(--c-ink);
}
.edu-campus-step.is-on span {
  background: var(--c-cyan);
  color: #fff;
}
.edu-campus-form,
.edu-campus-done-grid {
  display: grid;
  gap: 0.9rem;
  padding: 0 1.15rem 1.25rem;
}
.edu-campus-done-grid {
  grid-template-columns: 140px minmax(0, 1fr);
  align-items: stretch;
}
.edu-campus-grade-card {
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  gap: 0.55rem;
  padding: 1rem 0.7rem;
  border-radius: 18px;
  background: #f4fafc;
  border: 1px solid rgba(11,110,153,.1);
}
.edu-campus-grade-ring {
  width: 5.2rem;
  height: 5.2rem;
  border-radius: 50%;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  background: #fff;
  border: 5px solid rgba(11,110,153,.18);
  box-shadow: 0 10px 22px rgba(10,61,92,.08);
}
.edu-campus-grade-card.is-ok .edu-campus-grade-ring { border-color: rgba(42,157,143,.5); }
.edu-campus-grade-card.is-low .edu-campus-grade-ring { border-color: rgba(230,57,70,.45); }
.edu-campus-grade-ring strong {
  font-family: var(--edu-display, Outfit, sans-serif);
  font-size: 1.85rem;
  font-weight: 800;
  color: var(--c-ink);
  letter-spacing: -.03em;
}
.edu-campus-grade-card.is-ok .edu-campus-grade-ring strong { color: #1b7a6e; }
.edu-campus-grade-card.is-low .edu-campus-grade-ring strong { color: #c62828; }
.edu-campus-grade-card.is-wait .edu-campus-grade-ring strong { color: #94a8b6; }
.edu-campus-grade-card em {
  font-style: normal;
  font-size: 0.68rem;
  font-weight: 800;
  text-transform: uppercase;
  letter-spacing: .05em;
  color: #6b7c8a;
  text-align: center;
}
.edu-campus-info-card {
  padding: 1rem;
  border-radius: 18px;
  background: #fff;
  border: 1px solid rgba(11,110,153,.1);
  display: grid;
  gap: 0.85rem;
}
.edu-campus-info-row {
  display: flex;
  align-items: center;
  gap: 0.7rem;
}
.edu-campus-info-ico {
  width: 2.4rem;
  height: 2.4rem;
  border-radius: 12px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  background: rgba(42,157,143,.14);
  color: #1b7a6e;
  flex-shrink: 0;
}
.edu-campus-info-row em,
.edu-campus-info-msg em {
  display: block;
  font-style: normal;
  font-size: 0.68rem;
  font-weight: 800;
  text-transform: uppercase;
  letter-spacing: .05em;
  color: #7a8b99;
}
.edu-campus-info-row strong {
  display: block;
  font-size: 0.92rem;
  color: var(--c-ink);
}
.edu-campus-info-msg p {
  margin: 0.25rem 0 0;
  font-size: 0.88rem;
  line-height: 1.5;
  color: #334155;
  white-space: pre-wrap;
}
.edu-campus-dropcard {
  display: flex;
  flex-direction: column;
  align-items: center;
  text-align: center;
  gap: 0.35rem;
  padding: 1.5rem 1rem 1.35rem;
  border-radius: 20px;
  border: 1.5px dashed rgba(11,110,153,.3);
  background:
    radial-gradient(120% 90% at 50% 0%, rgba(11,110,153,.1), transparent 55%),
    #f4fafc;
  cursor: pointer;
  transition: transform .18s ease, box-shadow .18s ease, border-color .18s ease;
}
.edu-campus-dropcard:hover,
.edu-campus-dropcard.has-file {
  transform: translateY(-2px);
  border-color: var(--c-cyan);
  box-shadow: 0 16px 32px rgba(10,61,92,.12);
}
.edu-campus-dropcard-visual {
  position: relative;
  width: 4.6rem;
  height: 4.6rem;
  margin-bottom: 0.25rem;
}
.edu-campus-dropcard-pulse {
  position: absolute;
  inset: 0;
  border-radius: 50%;
  background: rgba(11,110,153,.14);
  animation: eduCampusPulse 2s ease-in-out infinite;
}
@keyframes eduCampusPulse {
  0%,100% { transform: scale(1); opacity: .65; }
  50% { transform: scale(1.14); opacity: 1; }
}
.edu-campus-dropcard-ico {
  position: absolute;
  inset: .5rem;
  border-radius: 50%;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  background: linear-gradient(145deg, #0a3d5c, #0b6e99);
  color: #fff;
  font-size: 1.25rem;
  box-shadow: 0 12px 20px rgba(10,61,92,.25);
}
.edu-campus-dropcard strong {
  font-size: 1rem;
  color: var(--c-ink);
}
.edu-campus-dropcard small {
  font-size: 0.78rem;
  color: #6b7c8a;
  max-width: 16rem;
}
.edu-campus-dropcard-btn {
  margin-top: 0.55rem;
  display: inline-flex;
  padding: 0.45rem 1rem;
  border-radius: 999px;
  background: linear-gradient(135deg, #0a3d5c, #0b6e99);
  color: #fff;
  font-size: 0.76rem;
  font-weight: 800;
  box-shadow: 0 10px 18px rgba(11,110,153,.28);
}
.edu-campus-fileinput {
  position: absolute;
  width: 1px;
  height: 1px;
  opacity: 0;
  overflow: hidden;
  clip: rect(0 0 0 0);
}
.edu-campus-fieldcard {
  padding: 0.95rem 1rem;
  border-radius: 16px;
  background: #f7fbfd;
  border: 1px solid rgba(11,110,153,.1);
}
.edu-campus-fieldcard label {
  display: block;
  margin-bottom: 0.4rem;
  font-size: 0.8rem;
  font-weight: 800;
  color: var(--c-ink);
}
.edu-campus-fieldcard label span {
  font-weight: 600;
  color: #7a8b99;
}
.edu-campus-fieldcard textarea {
  border-radius: 12px !important;
  border-color: rgba(11,110,153,.16) !important;
  background: #fff !important;
  min-height: 100px;
  resize: vertical;
}
.edu-campus-btn {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 0.65rem;
  width: 100%;
  padding: 0.95rem 1.1rem;
  border: 0;
  border-radius: 16px;
  cursor: pointer;
  font-weight: 800;
  transition: transform .18s ease, box-shadow .18s ease;
}
.edu-campus-btn--primary {
  background: linear-gradient(135deg, #0a3d5c 0%, #0b6e99 100%);
  color: #fff;
  font-size: 1rem;
  box-shadow: 0 14px 28px rgba(10,61,92,.25);
}
.edu-campus-btn--primary:hover {
  transform: translateY(-2px);
  box-shadow: 0 18px 34px rgba(10,61,92,.32);
}
.edu-campus-btn--light {
  justify-content: flex-start;
  text-align: left;
  background: #fff;
  color: var(--c-ink);
  border: 1px solid rgba(11,110,153,.12);
  box-shadow: 0 10px 22px rgba(10,61,92,.08);
  margin: 0 1.15rem 1.25rem;
  width: calc(100% - 2.3rem);
}
.edu-campus-btn--light:hover {
  transform: translateY(-2px);
  box-shadow: 0 14px 28px rgba(10,61,92,.12);
}
.edu-campus-btn-ico {
  width: 2.6rem;
  height: 2.6rem;
  border-radius: 12px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  background: var(--c-soft);
  color: var(--c-cyan);
  flex-shrink: 0;
}
.edu-campus-btn-ico--pdf { background: rgba(198,40,40,.12); color: #c62828; }
.edu-campus-btn-ico--word { background: rgba(21,101,192,.12); color: #1565c0; }
.edu-campus-btn-txt {
  display: flex;
  flex-direction: column;
  min-width: 0;
  flex: 1;
}
.edu-campus-btn-txt strong { font-size: 0.92rem; }
.edu-campus-btn-txt small { font-size: 0.72rem; color: #6b7c8a; font-weight: 700; }
.edu-campus-btn--light > .fa-chevron-right { color: #94a8b6; }
@media (max-width: 991.98px) {
  .edu-campus-hero-grid,
  .edu-campus-metrics,
  .edu-campus-layout,
  .edu-campus-done-grid {
    grid-template-columns: 1fr;
  }
  .edu-campus-scorecard { min-width: 0; }
}
