/* =============================================================
   NOVUM SYSTEM THEME - Chamilo 2.0.3
   V6 - Login + zona autenticada
   ============================================================= */

:root {
  --novum-red: #ed1c24;
  --novum-red-dark: #b51018;
  --novum-red-deep: #8f0b12;
  --novum-red-soft: #fff1f2;
  --novum-bg: #f5f7fa;
  --novum-card: #ffffff;
  --novum-text: #1f2937;
  --novum-muted: #6b7280;
  --novum-border: #e5e7eb;
  --novum-shadow: 0 10px 30px rgba(31, 41, 55, .08);
}

html, body {
  background: var(--novum-bg);
  color: var(--novum-text);
}

body {
  color: var(--novum-text) !important;
}

body a {
  color: var(--novum-red-dark);
}

/* =============================================================
   LOGIN NOVUM - SOLO CUANDO JS ACTIVA .novum-login-page
   ============================================================= */
html.novum-login-page,
body.novum-login-page {
  margin: 0 !important;
  padding: 0 !important;
  min-height: 100vh !important;
  background: #a90912 !important;
  overflow-x: hidden !important;
}

body.novum-login-page {
  color: #fff !important;
}

body.novum-login-page #app,
body.novum-login-page main,
body.novum-login-page [role="main"] {
  min-height: 100vh !important;
  margin: 0 !important;
  padding: 0 !important;
  background:
    linear-gradient(145deg, rgba(125,0,8,.96) 0%, rgba(219,8,22,.95) 47%, rgba(144,0,9,.98) 100%) !important;
  position: relative;
}

body.novum-login-page #app::before,
body.novum-login-page main::before {
  content: "";
  position: fixed;
  inset: 0;
  z-index: 0;
  pointer-events: none;
  background:
    linear-gradient(25deg, transparent 0 31%, rgba(100,0,8,.35) 31% 49%, transparent 49% 100%),
    linear-gradient(135deg, rgba(255,255,255,.06) 0 1px, transparent 1px 100%);
  background-size: 100% 100%, 12px 12px;
}

/* Ocultar navegación y elementos de página pública durante login */
body.novum-login-page header,
body.novum-login-page nav,
body.novum-login-page .topbar,
body.novum-login-page .navbar,
body.novum-login-page .app-topbar,
body.novum-login-page .app-header,
body.novum-login-page .main-header,
body.novum-login-page .header-main,
body.novum-login-page [class*="topbar"],
body.novum-login-page [class*="Topbar"],
body.novum-login-page .welcome,
body.novum-login-page .welcome-block,
body.novum-login-page [class*="welcome-message"],
body.novum-login-page [class*="WelcomeMessage"],
body.novum-login-page .novum-auth-hide {
  display: none !important;
}

/* Evitar que contenedores padre creen una columna extra */
body.novum-login-page .login-section {
  position: relative !important;
  z-index: 10 !important;
  width: min(92vw, 455px) !important;
  min-height: 100vh !important;
  margin: 0 auto !important;
  padding: 42px 28px 26px !important;
  display: flex !important;
  flex-direction: column !important;
  align-items: center !important;
  justify-content: flex-start !important;
  background: transparent !important;
  color: #fff !important;
}

body.novum-login-page .login-section::before {
  content: "";
  display: block;
  width: 150px;
  height: 150px;
  margin: 0 auto 18px;
  background: url('/novum-theme/logo-novum-original.jpg') center/cover no-repeat;
  border-radius: 2px;
  box-shadow: 0 15px 30px rgba(62,0,4,.35);
  flex: 0 0 auto;
}

body.novum-login-page .login-section__title {
  margin: 0 !important;
  font-size: 0 !important;
  text-align: center !important;
  color: #fff !important;
}

body.novum-login-page .login-section__title::before {
  content: "Bienvenido";
  display: block;
  color: #fff;
  font-size: 38px;
  line-height: 1.1;
  font-weight: 800;
  margin-bottom: 5px;
}

body.novum-login-page .login-section__title::after {
  content: "a tu plataforma de aprendizaje";
  display: block;
  color: #fff;
  font-size: 17px;
  line-height: 1.4;
  font-weight: 400;
  margin-bottom: 24px;
}

body.novum-login-page .login-section__form {
  width: 100% !important;
  box-sizing: border-box !important;
  padding: 17px 16px 16px !important;
  margin: 0 !important;
  background: rgba(255,255,255,.985) !important;
  border: 0 !important;
  border-radius: 5px !important;
  box-shadow: 0 10px 28px rgba(61,0,5,.30) !important;
  color: var(--novum-text) !important;
}

body.novum-login-page .login-section__form .field {
  width: 100% !important;
  margin-bottom: 9px !important;
}

body.novum-login-page .login-section__form input,
body.novum-login-page .login-section__form .p-inputtext {
  width: 100% !important;
  min-height: 53px !important;
  box-sizing: border-box !important;
  background: #fff !important;
  color: #26323f !important;
  border: 1px solid #d6dde4 !important;
  border-radius: 5px !important;
  padding: 0 15px !important;
  font-size: 15px !important;
  box-shadow: none !important;
}

body.novum-login-page .login-section__form input::placeholder {
  color: #8cb4d4 !important;
  opacity: 1 !important;
}

body.novum-login-page .login-section__form input:focus,
body.novum-login-page .login-section__form .p-inputtext:focus {
  border-color: var(--novum-red) !important;
  box-shadow: 0 0 0 2px rgba(237,28,36,.12) !important;
  outline: none !important;
}

body.novum-login-page .p-password,
body.novum-login-page .p-password-input {
  width: 100% !important;
}

body.novum-login-page .login-section__remember-me {
  display: flex !important;
  align-items: center !important;
  justify-content: center !important;
  gap: 8px !important;
  color: #256aa3 !important;
  font-size: 13px !important;
}

body.novum-login-page .login-section__buttons {
  display: flex !important;
  flex-direction: column !important;
  gap: 8px !important;
  margin-top: 12px !important;
}

body.novum-login-page .login-section__buttons .p-button,
body.novum-login-page .login-section__buttons button[type="submit"] {
  width: 100% !important;
  min-height: 51px !important;
  justify-content: center !important;
  background: linear-gradient(180deg, #f5222d 0%, #e21620 100%) !important;
  border: 0 !important;
  border-radius: 4px !important;
  color: #fff !important;
  font-size: 16px !important;
  font-weight: 700 !important;
  box-shadow: 0 4px 9px rgba(220,0,15,.18) !important;
}

body.novum-login-page .login-section__buttons .p-button:hover,
body.novum-login-page .login-section__buttons button[type="submit"]:hover {
  background: var(--novum-red-dark) !important;
}

/* Boton REGISTRAR visible debajo de INGRESAR */
body.novum-login-page .login-section__buttons a[href*="registration"],
body.novum-login-page .login-section__buttons a[href*="register"],
body.novum-login-page .login-section__buttons a[href*="inscription"] {
  display: flex !important;
  width: 100% !important;
  min-height: 47px !important;
  align-items: center !important;
  justify-content: center !important;
  box-sizing: border-box !important;
  background: #ffffff !important;
  border: 2px solid var(--novum-red) !important;
  border-radius: 4px !important;
  color: var(--novum-red) !important;
  font-size: 15px !important;
  font-weight: 800 !important;
  text-decoration: none !important;
  text-transform: uppercase !important;
  box-shadow: none !important;
}

body.novum-login-page .login-section__buttons a[href*="registration"]:hover,
body.novum-login-page .login-section__buttons a[href*="register"]:hover,
body.novum-login-page .login-section__buttons a[href*="inscription"]:hover {
  background: var(--novum-red-soft) !important;
  color: var(--novum-red-dark) !important;
  border-color: var(--novum-red-dark) !important;
}

body.novum-login-page #forgot {
  color: #30363d !important;
  font-size: 14px !important;
  font-weight: 500 !important;
  text-decoration: underline !important;
}

body.novum-login-page .login-section::after {
  content: "NOVUM SYSTEM\A Tecnología que impulsa tu futuro";
  white-space: pre;
  display: block;
  margin-top: auto;
  padding-top: 34px;
  color: #fff;
  text-align: center;
  font-size: 13px;
  line-height: 1.35;
  letter-spacing: .2px;
}

/* Oculta residuos de contenido de la homepage si conviven con el login */
body.novum-login-page .login-section ~ *,
body.novum-login-page .novum-hide-on-login {
  /* JS marca elementos específicos; no ocultamos a ciegas todo el DOM */
}

/* =============================================================
   ZONA AUTENTICADA - NOVUM SYSTEM
   ============================================================= */
body:not(.novum-login-page) {
  background: var(--novum-bg) !important;
  color: var(--novum-text) !important;
}

body:not(.novum-login-page) header,
body:not(.novum-login-page) .topbar,
body:not(.novum-login-page) .app-topbar,
body:not(.novum-login-page) .main-header,
body:not(.novum-login-page) [class*="topbar"] {
  background: linear-gradient(90deg, var(--novum-red-dark), var(--novum-red)) !important;
  border-bottom: 0 !important;
  box-shadow: 0 3px 16px rgba(134, 10, 17, .18) !important;
}

/* Marca Novum inyectada por JS */
.novum-brand {
  display: inline-flex !important;
  align-items: center !important;
  gap: 10px !important;
  min-width: 210px;
  height: 56px;
  padding: 7px 14px !important;
  text-decoration: none !important;
  color: #fff !important;
  flex: 0 0 auto;
}

.novum-brand__logo {
  width: 42px !important;
  height: 42px !important;
  object-fit: cover !important;
  border-radius: 2px;
  box-shadow: 0 3px 10px rgba(0,0,0,.16);
}

.novum-brand__text {
  color: #fff !important;
  font-size: 17px !important;
  font-weight: 800 !important;
  letter-spacing: .8px;
  white-space: nowrap;
}

/* Oculta solo el logo Chamilo dentro de la cabecera */
body:not(.novum-login-page) .novum-hide-chamilo-logo {
  display: none !important;
}

/* Cabecera: iconos y controles visibles */
body:not(.novum-login-page) header a,
body:not(.novum-login-page) header button,
body:not(.novum-login-page) .topbar a,
body:not(.novum-login-page) .topbar button,
body:not(.novum-login-page) [class*="topbar"] a,
body:not(.novum-login-page) [class*="topbar"] button {
  color: #fff !important;
}

/* Sidebar */
body:not(.novum-login-page) aside,
body:not(.novum-login-page) .sidebar,
body:not(.novum-login-page) [class*="sidebar"]:not([class*="tox-"]) {
  background: #fff !important;
  color: var(--novum-text) !important;
  border-right: 1px solid var(--novum-border) !important;
}

body:not(.novum-login-page) aside a,
body:not(.novum-login-page) .sidebar a,
body:not(.novum-login-page) [class*="sidebar"]:not([class*="tox-"]) a {
  color: #334155 !important;
}

body:not(.novum-login-page) aside a:hover,
body:not(.novum-login-page) .sidebar a:hover,
body:not(.novum-login-page) [class*="sidebar"]:not([class*="tox-"]) a:hover {
  color: var(--novum-red-dark) !important;
  background: var(--novum-red-soft) !important;
}

body:not(.novum-login-page) aside .active,
body:not(.novum-login-page) .sidebar .active,
body:not(.novum-login-page) [class*="sidebar"]:not([class*="tox-"]) .active {
  color: var(--novum-red-dark) !important;
  background: #ffe7e9 !important;
  border-left-color: var(--novum-red) !important;
}

/* Fondo del contenido: nunca rojo */
body:not(.novum-login-page) main,
body:not(.novum-login-page) [role="main"],
body:not(.novum-login-page) .main-content,
body:not(.novum-login-page) .page-content,
body:not(.novum-login-page) #app {
  background: var(--novum-bg) !important;
  color: var(--novum-text) !important;
}

/* texto general oscuro */
body:not(.novum-login-page) main,
body:not(.novum-login-page) main p,
body:not(.novum-login-page) main span,
body:not(.novum-login-page) main div,
body:not(.novum-login-page) main h1,
body:not(.novum-login-page) main h2,
body:not(.novum-login-page) main h3,
body:not(.novum-login-page) main h4,
body:not(.novum-login-page) .page-content,
body:not(.novum-login-page) .page-content p,
body:not(.novum-login-page) .page-content span,
body:not(.novum-login-page) .page-content div,
body:not(.novum-login-page) .page-content h1,
body:not(.novum-login-page) .page-content h2,
body:not(.novum-login-page) .page-content h3 {
  color: var(--novum-text);
}

/* Tarjetas/paneles */
body:not(.novum-login-page) .card,
body:not(.novum-login-page) .panel,
body:not(.novum-login-page) [class*="card"],
body:not(.novum-login-page) [class*="panel"] {
  background: #fff !important;
  border-color: var(--novum-border) !important;
  border-radius: 10px !important;
  box-shadow: var(--novum-shadow) !important;
}

body:not(.novum-login-page) .btn--primary,
body:not(.novum-login-page) .p-button,
body:not(.novum-login-page) button[type="submit"] {
  border-color: var(--novum-red) !important;
}

body:not(.novum-login-page) .btn--primary:not(.p-button-outlined),
body:not(.novum-login-page) .p-button:not(.p-button-outlined):not(.p-button-text) {
  background: var(--novum-red) !important;
  color: #fff !important;
}

body:not(.novum-login-page) .btn--primary:hover,
body:not(.novum-login-page) .p-button:hover {
  background: var(--novum-red-dark) !important;
}

/* Selección de texto para que no confunda con estilos */
::selection {
  background: rgba(237,28,36,.25);
  color: inherit;
}

@media (max-width: 700px) {
  body.novum-login-page .login-section {
    width: 100% !important;
    max-width: 430px !important;
    padding: 26px 22px 22px !important;
  }
  body.novum-login-page .login-section::before {
    width: 125px;
    height: 125px;
  }
  body.novum-login-page .login-section__title::before {
    font-size: 31px;
  }
  body.novum-login-page .login-section__title::after {
    font-size: 15px;
  }
  .novum-brand__text {
    display: none;
  }
  .novum-brand {
    min-width: auto;
  }
}

/* =============================================================
   NOVUM SYSTEM - PATCH HEADER V6.1
   Solo zona autenticada. NO modifica el login.
   ============================================================= */
body:not(.novum-login-page) .novum-brand {
  min-width: 250px !important;
  height: 58px !important;
  padding: 6px 14px !important;
  gap: 10px !important;
}
body:not(.novum-login-page) .novum-brand__logo {
  width: 48px !important;
  height: 48px !important;
  object-fit: cover !important;
  border-radius: 2px !important;
}
body:not(.novum-login-page) .novum-brand__text {
  display: inline-block !important;
  color: #fff !important;
  font-size: 17px !important;
  font-weight: 800 !important;
  letter-spacing: .8px !important;
}
/* Botones de la derecha: elimina fondos/cuadros blancos sin ocultar iconos */
body:not(.novum-login-page) header button,
body:not(.novum-login-page) header a,
body:not(.novum-login-page) .topbar button,
body:not(.novum-login-page) .topbar a,
body:not(.novum-login-page) [class*="topbar"] button,
body:not(.novum-login-page) [class*="topbar"] a {
  background-color: transparent !important;
  box-shadow: none !important;
}
body:not(.novum-login-page) header button:hover,
body:not(.novum-login-page) header a:hover,
body:not(.novum-login-page) .topbar button:hover,
body:not(.novum-login-page) .topbar a:hover,
body:not(.novum-login-page) [class*="topbar"] button:hover,
body:not(.novum-login-page) [class*="topbar"] a:hover {
  background-color: rgba(255,255,255,.12) !important;
}

/* =============================================================
   NOVUM SYSTEM - DASHBOARD PATCH V6.2
   IMPORTANTE: solo zona autenticada. Login V6 permanece intacto.
   ============================================================= */
body:not(.novum-login-page) {
  background: #f5f7fa !important;
  color: #1f2937 !important;
}

/* Sidebar: limpio, sin tarjetas/sombras por cada opcion */
body:not(.novum-login-page) aside,
body:not(.novum-login-page) .sidebar,
body:not(.novum-login-page) [class*="sidebar"]:not([class*="tox-"]) {
  background: #fff !important;
  box-shadow: 1px 0 0 #e5e7eb !important;
}
body:not(.novum-login-page) aside nav a,
body:not(.novum-login-page) .sidebar nav a,
body:not(.novum-login-page) [class*="sidebar"]:not([class*="tox-"]) a {
  border-radius: 6px !important;
  box-shadow: none !important;
  border: 0 !important;
  background: transparent !important;
  margin: 2px 10px !important;
  color: #334155 !important;
}
body:not(.novum-login-page) aside nav a:hover,
body:not(.novum-login-page) .sidebar nav a:hover,
body:not(.novum-login-page) [class*="sidebar"]:not([class*="tox-"]) a:hover {
  background: #fff1f2 !important;
  color: #c8102e !important;
}
body:not(.novum-login-page) aside nav a.router-link-active,
body:not(.novum-login-page) aside nav a[aria-current="page"],
body:not(.novum-login-page) .sidebar a.router-link-active,
body:not(.novum-login-page) .sidebar a[aria-current="page"] {
  background: #fde8eb !important;
  color: #b5121b !important;
  font-weight: 700 !important;
}

/* Contenido: elimina efecto de tarjetas flotantes exageradas */
body:not(.novum-login-page) main,
body:not(.novum-login-page) .main-content,
body:not(.novum-login-page) [class*="main-content"] {
  background: #f5f7fa !important;
  color: #1f2937 !important;
}
body:not(.novum-login-page) main .card,
body:not(.novum-login-page) main .panel,
body:not(.novum-login-page) main [class*="card"],
body:not(.novum-login-page) main [class*="panel"] {
  border: 1px solid #e5e7eb !important;
  border-radius: 10px !important;
  box-shadow: 0 2px 8px rgba(15,23,42,.05) !important;
  background: #fff !important;
  color: #1f2937 !important;
}
body:not(.novum-login-page) main p,
body:not(.novum-login-page) main h1,
body:not(.novum-login-page) main h2,
body:not(.novum-login-page) main h3,
body:not(.novum-login-page) main h4,
body:not(.novum-login-page) main span:not(.p-badge),
body:not(.novum-login-page) main label {
  color: inherit;
}
body:not(.novum-login-page) main a {
  color: #b5121b;
}

/* Menu de usuario: blanco y profesional, no bloque rojo completo */
body:not(.novum-login-page) .dropdown-menu,
body:not(.novum-login-page) [role="menu"] {
  background: #fff !important;
  color: #1f2937 !important;
  border: 1px solid #e5e7eb !important;
  border-radius: 10px !important;
  box-shadow: 0 12px 30px rgba(15,23,42,.14) !important;
}
body:not(.novum-login-page) .dropdown-menu a,
body:not(.novum-login-page) [role="menu"] a {
  color: #334155 !important;
  background: transparent !important;
}
body:not(.novum-login-page) .dropdown-menu a:hover,
body:not(.novum-login-page) [role="menu"] a:hover {
  color: #b5121b !important;
  background: #fff1f2 !important;
}

/* Footer/branding auxiliar */
body:not(.novum-login-page) .novum-footer-brand {
  color: #64748b !important;
  font-size: 12px !important;
  font-weight: 600 !important;
}

/* Header mas compacto y equilibrado */
body:not(.novum-login-page) .novum-brand {
  min-width: 230px !important;
  height: 54px !important;
  padding: 5px 12px !important;
}
body:not(.novum-login-page) .novum-brand__logo {
  width: 44px !important;
  height: 44px !important;
}
body:not(.novum-login-page) .novum-brand__text {
  font-size: 16px !important;
  letter-spacing: .65px !important;
}

/* =============================================================
   NOVUM SYSTEM - AUTH DASHBOARD V6.3
   SOLO ZONA AUTENTICADA. NO MODIFICA EL LOGIN V6.
   ============================================================= */
body:not(.novum-login-page).novum-auth-page {
  --novum-auth-header-h: 58px;
  --novum-auth-sidebar-w: 198px;
  background: #f6f7f9 !important;
  color: #182230 !important;
}

/* Header tipo Canvas / Novum */
body:not(.novum-login-page).novum-auth-page header,
body:not(.novum-login-page).novum-auth-page .topbar,
body:not(.novum-login-page).novum-auth-page .app-topbar,
body:not(.novum-login-page).novum-auth-page .main-header,
body:not(.novum-login-page).novum-auth-page [class*="topbar"] {
  min-height: var(--novum-auth-header-h) !important;
  height: var(--novum-auth-header-h) !important;
  background: linear-gradient(90deg,#bf0d17 0%,#e41b24 55%,#be1018 100%) !important;
  box-shadow: 0 2px 10px rgba(122,10,16,.16) !important;
  display: flex !important;
  align-items: center !important;
  gap: 12px !important;
  padding: 0 16px !important;
  border: 0 !important;
}
body:not(.novum-login-page).novum-auth-page .novum-brand {
  min-width: 235px !important;
  height: 58px !important;
  padding: 6px 8px 6px 4px !important;
  gap: 9px !important;
}
body:not(.novum-login-page).novum-auth-page .novum-brand__logo {
  width: 44px !important;
  height: 44px !important;
  object-fit: cover !important;
  border-radius: 3px !important;
  box-shadow: 0 2px 8px rgba(0,0,0,.18) !important;
}
body:not(.novum-login-page).novum-auth-page .novum-brand__text {
  font-size: 16px !important;
  font-weight: 800 !important;
  letter-spacing: .6px !important;
}

.novum-auth-hamburger {
  width: 34px;
  height: 34px;
  border: 0;
  border-radius: 5px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  background: transparent;
  color: #fff;
  font-size: 22px;
  cursor: pointer;
  order: -2;
}
.novum-auth-hamburger:hover { background: rgba(255,255,255,.12); }
.novum-auth-search {
  margin-left: auto;
  margin-right: auto;
  width: min(36vw, 420px);
  height: 34px;
  border-radius: 5px;
  border: 1px solid rgba(255,255,255,.52);
  background: #fff;
  color: #334155;
  font-size: 13px;
  padding: 0 14px;
  outline: none;
  box-shadow: none;
}
.novum-auth-search::placeholder { color: #64748b; }

/* Sidebar limpio */
body:not(.novum-login-page).novum-auth-page aside,
body:not(.novum-login-page).novum-auth-page .sidebar,
body:not(.novum-login-page).novum-auth-page [class*="sidebar"]:not([class*="tox-"]) {
  width: var(--novum-auth-sidebar-w) !important;
  min-width: var(--novum-auth-sidebar-w) !important;
  background: #f3f4f6 !important;
  border-right: 1px solid #e5e7eb !important;
  box-shadow: none !important;
}
body:not(.novum-login-page).novum-auth-page aside a,
body:not(.novum-login-page).novum-auth-page .sidebar a,
body:not(.novum-login-page).novum-auth-page [class*="sidebar"]:not([class*="tox-"]) a {
  min-height: 42px !important;
  display: flex !important;
  align-items: center !important;
  margin: 2px 8px !important;
  padding: 9px 12px !important;
  border-radius: 6px !important;
  border: 0 !important;
  box-shadow: none !important;
  background: transparent !important;
  color: #263445 !important;
  font-size: 14px !important;
  font-weight: 500 !important;
}
body:not(.novum-login-page).novum-auth-page aside a:hover,
body:not(.novum-login-page).novum-auth-page .sidebar a:hover,
body:not(.novum-login-page).novum-auth-page [class*="sidebar"]:not([class*="tox-"]) a:hover {
  background: #fce7e9 !important;
  color: #bf1018 !important;
}
body:not(.novum-login-page).novum-auth-page aside a.router-link-active,
body:not(.novum-login-page).novum-auth-page aside a[aria-current="page"],
body:not(.novum-login-page).novum-auth-page .sidebar a.router-link-active,
body:not(.novum-login-page).novum-auth-page .sidebar a[aria-current="page"] {
  background: #f8dfe2 !important;
  color: #b80f18 !important;
  font-weight: 700 !important;
}

/* Main limpio */
body:not(.novum-login-page).novum-auth-page main,
body:not(.novum-login-page).novum-auth-page .main-content,
body:not(.novum-login-page).novum-auth-page [class*="main-content"],
body:not(.novum-login-page).novum-auth-page .page-content {
  background: #f8f9fb !important;
  color: #182230 !important;
}

/* Dashboard inyectado */
.novum-dashboard {
  max-width: 1240px;
  margin: 0 auto;
  padding: 24px 28px 28px;
  color: #17212e;
}
.novum-dashboard__head {
  display: flex;
  justify-content: space-between;
  gap: 24px;
  align-items: flex-start;
  margin-bottom: 24px;
}
.novum-dashboard__title {
  margin: 0;
  font-size: 28px;
  line-height: 1.15;
  font-weight: 800;
  color: #17212e;
}
.novum-dashboard__subtitle {
  margin: 4px 0 0;
  font-size: 15px;
  color: #485569;
}
.novum-dashboard__quote {
  max-width: 260px;
  margin: 4px 0 0;
  font-size: 13px;
  line-height: 1.5;
  text-align: right;
  color: #334155;
  position: relative;
  padding-bottom: 12px;
}
.novum-dashboard__quote::after {
  content: "";
  position: absolute;
  width: 52px;
  height: 2px;
  right: 0;
  bottom: 0;
  background: #e51b24;
}
.novum-dashboard__stats {
  display: grid;
  grid-template-columns: repeat(4,minmax(0,1fr));
  gap: 16px;
  margin-bottom: 24px;
}
.novum-stat-card {
  min-height: 118px;
  background: #fff;
  border: 1px solid #e3e7ec;
  border-radius: 6px;
  box-shadow: 0 2px 8px rgba(15,23,42,.04);
  padding: 16px 16px 13px;
  display: flex;
  flex-direction: column;
  justify-content: space-between;
}
.novum-stat-card__top {
  display: flex;
  gap: 13px;
  align-items: center;
}
.novum-stat-card__icon {
  color: #e51b24;
  font-size: 32px;
  line-height: 1;
  width: 38px;
  text-align: center;
}
.novum-stat-card__value {
  font-size: 25px;
  font-weight: 800;
  color: #151f2b;
  line-height: 1;
}
.novum-stat-card__label { font-size: 12px; color: #485569; margin-top: 4px; }
.novum-stat-card__link { font-size: 13px; color: #d71922 !important; text-decoration: none !important; font-weight: 600; }
.novum-stat-card__link:hover { text-decoration: underline !important; }

.novum-dashboard__section-head {
  display: flex;
  align-items: center;
  justify-content: space-between;
  margin: 0 0 12px;
}
.novum-dashboard__section-title {
  margin: 0;
  font-size: 21px;
  font-weight: 800;
  color: #17212e;
}
.novum-dashboard__section-action {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-height: 34px;
  padding: 0 14px;
  border-radius: 5px;
  background: #c5121c;
  color: #fff !important;
  font-size: 13px;
  font-weight: 700;
  text-decoration: none !important;
}
.novum-course-grid {
  display: grid;
  grid-template-columns: repeat(4,minmax(0,1fr));
  gap: 16px;
}
.novum-course-card {
  background: #fff;
  border: 1px solid #e0e5ea;
  border-radius: 6px;
  overflow: hidden;
  box-shadow: 0 2px 8px rgba(15,23,42,.04);
  min-height: 148px;
  text-decoration: none !important;
}
.novum-course-card__visual {
  height: 74px;
  background: linear-gradient(135deg,#16344e 0%,#0f5274 58%,#0b2437 100%);
  display: flex;
  align-items: center;
  justify-content: center;
  color: rgba(255,255,255,.92);
  font-size: 33px;
  font-weight: 800;
}
.novum-course-card:nth-child(2) .novum-course-card__visual { background: linear-gradient(135deg,#0b4a35,#087b53); }
.novum-course-card:nth-child(3) .novum-course-card__visual { background: linear-gradient(135deg,#071b35,#0e4a78); }
.novum-course-card:nth-child(4) .novum-course-card__visual { background: linear-gradient(135deg,#0c2238,#174667); }
.novum-course-card__body { padding: 10px 11px 11px; }
.novum-course-card__name { color: #17212e; font-size: 13px; font-weight: 700; margin-bottom: 8px; }
.novum-course-card__bar { height: 6px; background: #e7ebef; border-radius: 999px; overflow: hidden; }
.novum-course-card__bar > span { display:block; width: 38%; height: 100%; background: #e51b24; border-radius: 999px; }

/* esconder SOLO el contenido de bienvenida original cuando el dashboard Novum esta activo */
body:not(.novum-login-page).novum-auth-page.novum-dashboard-active .novum-original-home-hidden {
  display: none !important;
}

/* dropdown usuario coherente */
body:not(.novum-login-page).novum-auth-page .dropdown-menu,
body:not(.novum-login-page).novum-auth-page [role="menu"] {
  background: #fff !important;
  color: #263445 !important;
  border: 1px solid #e0e5ea !important;
  border-radius: 7px !important;
  box-shadow: 0 14px 30px rgba(15,23,42,.16) !important;
}
body:not(.novum-login-page).novum-auth-page .dropdown-menu a,
body:not(.novum-login-page).novum-auth-page [role="menu"] a {
  color: #263445 !important;
  background: transparent !important;
}
body:not(.novum-login-page).novum-auth-page .dropdown-menu a:hover,
body:not(.novum-login-page).novum-auth-page [role="menu"] a:hover {
  background: #fff0f1 !important;
  color: #bf1018 !important;
}

@media (max-width: 1000px) {
  .novum-dashboard__stats,
  .novum-course-grid { grid-template-columns: repeat(2,minmax(0,1fr)); }
  .novum-auth-search { width: min(34vw,300px); }
}
@media (max-width: 700px) {
  body:not(.novum-login-page).novum-auth-page { --novum-auth-sidebar-w: 0px; }
  .novum-auth-search { display: none; }
  .novum-dashboard { padding: 18px 14px 22px; }
  .novum-dashboard__head { flex-direction: column; }
  .novum-dashboard__quote { display:none; }
  .novum-dashboard__stats,
  .novum-course-grid { grid-template-columns: 1fr; }
  .novum-brand__text { display:inline-block !important; font-size:14px !important; }
}

/* =============================================================
   NOVUM SYSTEM - HEADER/SIDEBAR CONTROLS V6.4
   Solo zona autenticada. Login V6 SIN CAMBIOS.
   ============================================================= */
body:not(.novum-login-page).novum-auth-page .novum-auth-hamburger {
  box-sizing: border-box !important;
  width: 36px !important;
  min-width: 36px !important;
  max-width: 36px !important;
  height: 36px !important;
  min-height: 36px !important;
  padding: 0 !important;
  margin: 0 4px 0 0 !important;
  border: 0 !important;
  border-radius: 6px !important;
  background: transparent !important;
  color: #fff !important;
  display: inline-flex !important;
  align-items: center !important;
  justify-content: center !important;
  flex: 0 0 36px !important;
  font-size: 23px !important;
  line-height: 1 !important;
  cursor: pointer !important;
  box-shadow: none !important;
  position: relative !important;
  z-index: 50 !important;
}
body:not(.novum-login-page).novum-auth-page .novum-auth-hamburger:hover,
body:not(.novum-login-page).novum-auth-page .novum-auth-hamburger:focus-visible {
  background: rgba(255,255,255,.14) !important;
  outline: none !important;
}

/* Sidebar objetivo y transición real del botón hamburguesa */
body:not(.novum-login-page).novum-auth-page .novum-sidebar-target {
  transition: width .22s ease, min-width .22s ease, max-width .22s ease, opacity .18s ease, transform .22s ease !important;
  overflow-x: hidden !important;
}
body:not(.novum-login-page).novum-auth-page.novum-sidebar-hidden .novum-sidebar-target {
  width: 0 !important;
  min-width: 0 !important;
  max-width: 0 !important;
  flex-basis: 0 !important;
  opacity: 0 !important;
  transform: translateX(-100%) !important;
  border-right-width: 0 !important;
  pointer-events: none !important;
}

/* En layouts flex/grid, permite que el contenido use el espacio liberado */
body:not(.novum-login-page).novum-auth-page.novum-sidebar-hidden main,
body:not(.novum-login-page).novum-auth-page.novum-sidebar-hidden .main-content,
body:not(.novum-login-page).novum-auth-page.novum-sidebar-hidden [class*="main-content"],
body:not(.novum-login-page).novum-auth-page.novum-sidebar-hidden .page-content {
  margin-left: 0 !important;
  width: auto !important;
  max-width: none !important;
  flex: 1 1 auto !important;
}

/* Quita el control X redundante de la barra superior. El cierre de sesión
   permanece disponible dentro del menú de perfil. */
body:not(.novum-login-page).novum-auth-page .novum-redundant-close {
  display: none !important;
}

/* ==========================================================
   NOVUM SYSTEM V6.5 - FULL WIDTH AL COLAPSAR SIDEBAR
   Solo zona autenticada. NO modifica el login.
   ========================================================== */

/* El toggle lateral de PrimeVue queda redundante: el hamburger superior
   es ahora el unico control para mostrar/ocultar el menu. */
body:not(.novum-login-page).novum-auth-page .p-togglebutton,
body:not(.novum-login-page).novum-auth-page .p-togglebutton-content,
body:not(.novum-login-page).novum-auth-page [class*="p-togglebutton-content"] {
  display: none !important;
}

/* Al ocultar el sidebar, eliminamos cualquier reserva de ancho del layout. */
body:not(.novum-login-page).novum-auth-page.novum-sidebar-hidden {
  --novum-sidebar-width: 0px !important;
}

body:not(.novum-login-page).novum-auth-page.novum-sidebar-hidden .novum-sidebar-target {
  display: none !important;
  width: 0 !important;
  min-width: 0 !important;
  max-width: 0 !important;
  flex: 0 0 0 !important;
  margin: 0 !important;
  padding: 0 !important;
}

/* Expande los wrappers habituales de Chamilo/Vue al 100% del viewport. */
body:not(.novum-login-page).novum-auth-page.novum-sidebar-hidden main,
body:not(.novum-login-page).novum-auth-page.novum-sidebar-hidden .main-content,
body:not(.novum-login-page).novum-auth-page.novum-sidebar-hidden .page-content,
body:not(.novum-login-page).novum-auth-page.novum-sidebar-hidden .content-wrapper,
body:not(.novum-login-page).novum-auth-page.novum-sidebar-hidden [class*="main-content"],
body:not(.novum-login-page).novum-auth-page.novum-sidebar-hidden [class*="content-wrapper"] {
  margin-left: 0 !important;
  left: 0 !important;
  width: 100% !important;
  max-width: 100% !important;
  flex: 1 1 100% !important;
}

body:not(.novum-login-page).novum-auth-page.novum-sidebar-hidden main > .container,
body:not(.novum-login-page).novum-auth-page.novum-sidebar-hidden main > .container-fluid,
body:not(.novum-login-page).novum-auth-page.novum-sidebar-hidden .main-content > .container,
body:not(.novum-login-page).novum-auth-page.novum-sidebar-hidden .main-content > .container-fluid,
body:not(.novum-login-page).novum-auth-page.novum-sidebar-hidden .page-content > .container,
body:not(.novum-login-page).novum-auth-page.novum-sidebar-hidden .page-content > .container-fluid {
  width: 100% !important;
  max-width: 100% !important;
}

body:not(.novum-login-page).novum-auth-page.novum-sidebar-hidden .novum-fullwidth-content {
  width: 100% !important;
  max-width: 100% !important;
  flex: 1 1 100% !important;
  margin-left: 0 !important;
  grid-column: 1 / -1 !important;
}

/* ==========================================================
   NOVUM SYSTEM V6.6 - ACTIVE SIDEBAR + USER SUBMENU
   Solo zona autenticada. NO modifica el login.
   ========================================================== */

/* Item activo del sidebar: elegante, plano y con acento lateral. */
body:not(.novum-login-page).novum-auth-page aside a.router-link-active,
body:not(.novum-login-page).novum-auth-page aside a[aria-current="page"],
body:not(.novum-login-page).novum-auth-page aside li.active > a,
body:not(.novum-login-page).novum-auth-page aside .active > a,
body:not(.novum-login-page).novum-auth-page .sidebar a.router-link-active,
body:not(.novum-login-page).novum-auth-page .sidebar a[aria-current="page"],
body:not(.novum-login-page).novum-auth-page .sidebar li.active > a,
body:not(.novum-login-page).novum-auth-page .sidebar .active > a,
body:not(.novum-login-page).novum-auth-page [class*="sidebar"]:not([class*="tox-"]) a.router-link-active,
body:not(.novum-login-page).novum-auth-page [class*="sidebar"]:not([class*="tox-"]) a[aria-current="page"] {
  position: relative !important;
  background: linear-gradient(90deg, #fff3f4 0%, #fff 100%) !important;
  color: #a90f17 !important;
  font-weight: 700 !important;
  text-decoration: none !important;
  border-radius: 8px !important;
  box-shadow: inset 0 0 0 1px rgba(229,27,36,.08) !important;
}

body:not(.novum-login-page).novum-auth-page aside a.router-link-active::before,
body:not(.novum-login-page).novum-auth-page aside a[aria-current="page"]::before,
body:not(.novum-login-page).novum-auth-page aside li.active > a::before,
body:not(.novum-login-page).novum-auth-page aside .active > a::before,
body:not(.novum-login-page).novum-auth-page .sidebar a.router-link-active::before,
body:not(.novum-login-page).novum-auth-page .sidebar a[aria-current="page"]::before,
body:not(.novum-login-page).novum-auth-page .sidebar li.active > a::before,
body:not(.novum-login-page).novum-auth-page .sidebar .active > a::before {
  content: "";
  position: absolute;
  left: 0;
  top: 8px;
  bottom: 8px;
  width: 4px;
  border-radius: 0 4px 4px 0;
  background: #e51b24;
}

body:not(.novum-login-page).novum-auth-page aside a.router-link-active *,
body:not(.novum-login-page).novum-auth-page aside a[aria-current="page"] *,
body:not(.novum-login-page).novum-auth-page aside li.active > a *,
body:not(.novum-login-page).novum-auth-page .sidebar a.router-link-active *,
body:not(.novum-login-page).novum-auth-page .sidebar a[aria-current="page"] * {
  color: inherit !important;
  text-decoration: none !important;
}

/* Hover coherente y sobrio. */
body:not(.novum-login-page).novum-auth-page aside a:hover,
body:not(.novum-login-page).novum-auth-page .sidebar a:hover,
body:not(.novum-login-page).novum-auth-page [class*="sidebar"]:not([class*="tox-"]) a:hover {
  background: #fff7f8 !important;
  color: #b3131b !important;
  text-decoration: none !important;
}

/* Submenú del usuario: alineado justo debajo del header/avatar. */
body:not(.novum-login-page).novum-auth-page .user-submenu_list {
  position: fixed !important;
  top: 84px !important;
  right: 20px !important;
  left: auto !important;
  z-index: 9999 !important;
  width: 245px !important;
  min-width: 245px !important;
  max-width: calc(100vw - 32px) !important;
  margin: 0 !important;
  padding: 10px !important;
  background: #ffffff !important;
  color: #243243 !important;
  border: 1px solid #e6e9ee !important;
  border-radius: 10px !important;
  box-shadow: 0 16px 36px rgba(15, 23, 42, .18) !important;
  overflow: hidden !important;
}

body:not(.novum-login-page).novum-auth-page .user-submenu_list::before {
  content: "";
  position: absolute;
  top: -7px;
  right: 24px;
  width: 14px;
  height: 14px;
  background: #fff;
  border-left: 1px solid #e6e9ee;
  border-top: 1px solid #e6e9ee;
  transform: rotate(45deg);
}

body:not(.novum-login-page).novum-auth-page .user-submenu_list a,
body:not(.novum-login-page).novum-auth-page .user-submenu_list button,
body:not(.novum-login-page).novum-auth-page .user-submenu_list [role="menuitem"] {
  display: flex !important;
  align-items: center !important;
  gap: 9px !important;
  min-height: 40px !important;
  padding: 9px 10px !important;
  margin: 1px 0 !important;
  border-radius: 7px !important;
  color: #2d3948 !important;
  background: transparent !important;
  text-decoration: none !important;
  font-weight: 500 !important;
}

body:not(.novum-login-page).novum-auth-page .user-submenu_list a:hover,
body:not(.novum-login-page).novum-auth-page .user-submenu_list button:hover,
body:not(.novum-login-page).novum-auth-page .user-submenu_list [role="menuitem"]:hover {
  background: #fff2f3 !important;
  color: #b3131b !important;
}

/* Primera línea/nombre del usuario dentro del menú. */
body:not(.novum-login-page).novum-auth-page .user-submenu_list > :first-child {
  margin-bottom: 5px !important;
}

/* Evita que reglas genéricas de dropdown desplacen el menú. */
body:not(.novum-login-page).novum-auth-page .user-submenu_list.dropdown-menu,
body:not(.novum-login-page).novum-auth-page .user-submenu_list[role="menu"] {
  transform: none !important;
  inset: auto 20px auto auto !important;
}

@media (max-width: 700px) {
  body:not(.novum-login-page).novum-auth-page .user-submenu_list {
    top: 76px !important;
    right: 10px !important;
    width: min(245px, calc(100vw - 20px)) !important;
  }
}

/* ==========================================================
   NOVUM SYSTEM V6.7 - ACTIVE MENU ITEM + USER SUBMENU ALIGNMENT
   SOLO ZONA AUTENTICADA. NO MODIFICA EL LOGIN.
   ========================================================== */

/* El estado activo ocupa TODO el item del sidebar. */
body:not(.novum-login-page).novum-auth-page aside li.novum-active-menu-item,
body:not(.novum-login-page).novum-auth-page .sidebar li.novum-active-menu-item,
body:not(.novum-login-page).novum-auth-page [class*="sidebar"]:not([class*="tox-"]) li.novum-active-menu-item {
  position: relative !important;
  display: block !important;
  width: 100% !important;
  margin: 2px 0 !important;
  padding: 0 !important;
  background: linear-gradient(90deg, #fff1f2 0%, #fff7f7 100%) !important;
  border: 1px solid rgba(229, 27, 36, .11) !important;
  border-left: 4px solid #e51b24 !important;
  border-radius: 8px !important;
  box-shadow: none !important;
  overflow: hidden !important;
}

body:not(.novum-login-page).novum-auth-page aside li.novum-active-menu-item > a,
body:not(.novum-login-page).novum-auth-page .sidebar li.novum-active-menu-item > a,
body:not(.novum-login-page).novum-auth-page [class*="sidebar"]:not([class*="tox-"]) li.novum-active-menu-item > a {
  display: flex !important;
  align-items: center !important;
  width: 100% !important;
  min-height: 48px !important;
  margin: 0 !important;
  padding: 10px 14px !important;
  background: transparent !important;
  color: #a90f17 !important;
  font-weight: 700 !important;
  text-decoration: none !important;
  border: 0 !important;
  border-radius: 0 !important;
  box-shadow: none !important;
}

/* Anula el pseudoindicador antiguo del enlace activo: ahora lo lleva el LI completo. */
body:not(.novum-login-page).novum-auth-page aside a.router-link-active::before,
body:not(.novum-login-page).novum-auth-page aside a[aria-current="page"]::before,
body:not(.novum-login-page).novum-auth-page aside li.active > a::before,
body:not(.novum-login-page).novum-auth-page aside .active > a::before,
body:not(.novum-login-page).novum-auth-page .sidebar a.router-link-active::before,
body:not(.novum-login-page).novum-auth-page .sidebar a[aria-current="page"]::before,
body:not(.novum-login-page).novum-auth-page .sidebar li.active > a::before,
body:not(.novum-login-page).novum-auth-page .sidebar .active > a::before {
  display: none !important;
  content: none !important;
}

body:not(.novum-login-page).novum-auth-page aside a.router-link-active,
body:not(.novum-login-page).novum-auth-page aside a[aria-current="page"],
body:not(.novum-login-page).novum-auth-page .sidebar a.router-link-active,
body:not(.novum-login-page).novum-auth-page .sidebar a[aria-current="page"] {
  width: 100% !important;
  background: transparent !important;
  box-shadow: none !important;
  border-radius: 0 !important;
  text-decoration: none !important;
}

/* User submenu: la posicion final la calcula JS respecto al borde inferior del header. */
body:not(.novum-login-page).novum-auth-page .user-submenu_list {
  position: fixed !important;
  top: var(--novum-user-menu-top, 92px) !important;
  right: var(--novum-user-menu-right, 20px) !important;
  left: auto !important;
  transform: none !important;
  margin: 0 !important;
  z-index: 10050 !important;
  width: 240px !important;
  min-width: 240px !important;
  max-width: calc(100vw - 24px) !important;
  padding: 8px !important;
  background: #fff !important;
  border: 1px solid #e5e7eb !important;
  border-radius: 10px !important;
  box-shadow: 0 14px 34px rgba(15, 23, 42, .16) !important;
}

body:not(.novum-login-page).novum-auth-page .user-submenu_list::before {
  top: -7px !important;
  right: var(--novum-user-menu-arrow-right, 24px) !important;
}

@media (max-width: 700px) {
  body:not(.novum-login-page).novum-auth-page .user-submenu_list {
    right: 10px !important;
    width: min(240px, calc(100vw - 20px)) !important;
  }
}

/* ==========================================================
   NOVUM SYSTEM V6.8 - ACTIVE MENU SHELL + USER SUBMENU FIX
   SOLO ZONA AUTENTICADA. NO MODIFICA EL LOGIN.
   ========================================================== */

/* El contenedor real del item activo toma exactamente el mismo tamano
   que el resto de items del sidebar. */
body:not(.novum-login-page).novum-auth-page .novum-active-menu-shell {
  position: relative !important;
  display: block !important;
  width: 100% !important;
  min-width: 0 !important;
  margin: 0 !important;
  padding: 0 !important;
  background: #fff1f2 !important;
  border: 1px solid rgba(229, 27, 36, .12) !important;
  border-radius: 10px !important;
  box-shadow: 0 4px 12px rgba(15, 23, 42, .06) !important;
  overflow: hidden !important;
}

body:not(.novum-login-page).novum-auth-page .novum-active-menu-shell::before {
  content: "" !important;
  position: absolute !important;
  left: 0 !important;
  top: 0 !important;
  bottom: 0 !important;
  width: 4px !important;
  background: #e51b24 !important;
  border-radius: 0 !important;
  z-index: 2 !important;
}

/* El router-link activo llena todo el shell, sin una segunda caja interna. */
body:not(.novum-login-page).novum-auth-page .novum-active-menu-shell > a.router-link-active,
body:not(.novum-login-page).novum-auth-page .novum-active-menu-shell > a[aria-current="page"],
body:not(.novum-login-page).novum-auth-page .novum-active-menu-shell a.router-link-active,
body:not(.novum-login-page).novum-auth-page .novum-active-menu-shell a[aria-current="page"] {
  display: flex !important;
  align-items: center !important;
  box-sizing: border-box !important;
  width: 100% !important;
  min-height: 56px !important;
  margin: 0 !important;
  padding: 12px 20px 12px 24px !important;
  background: transparent !important;
  border: 0 !important;
  border-radius: 0 !important;
  box-shadow: none !important;
  color: #a90f17 !important;
  font-weight: 700 !important;
  text-decoration: none !important;
}

body:not(.novum-login-page).novum-auth-page .novum-active-menu-shell a.router-link-active::before,
body:not(.novum-login-page).novum-auth-page .novum-active-menu-shell a[aria-current="page"]::before {
  display: none !important;
  content: none !important;
}

body:not(.novum-login-page).novum-auth-page .novum-active-menu-shell a.router-link-active *,
body:not(.novum-login-page).novum-auth-page .novum-active-menu-shell a[aria-current="page"] * {
  color: inherit !important;
  text-decoration: none !important;
}

/* Quita decoraciones de versiones anteriores sobre padres activos. */
body:not(.novum-login-page).novum-auth-page .novum-active-menu-item:not(.novum-active-menu-shell) {
  background: transparent !important;
  border: 0 !important;
  box-shadow: none !important;
}

/* Submenu del usuario: posicion absoluta calculada por JS y forzada inline.
   Estas reglas anulan top/inset/transform del componente original. */
body:not(.novum-login-page).novum-auth-page .user-submenu_list {
  position: fixed !important;
  top: 96px !important;
  right: 18px !important;
  bottom: auto !important;
  left: auto !important;
  inset: auto 18px auto auto !important;
  transform: none !important;
  margin: 0 !important;
  width: 240px !important;
  min-width: 240px !important;
  max-width: calc(100vw - 24px) !important;
  z-index: 20000 !important;
}

@media (max-width: 700px) {
  body:not(.novum-login-page).novum-auth-page .user-submenu_list {
    top: 82px !important;
    right: 10px !important;
    inset: auto 10px auto auto !important;
    width: min(240px, calc(100vw - 20px)) !important;
  }
}


/* ==========================================================
   NOVUM SYSTEM V6.9 - USER MENU ANCHORED TO CLICKED USER ITEM
   + ACTIVE SIDEBAR ITEM NORMALIZED
   SOLO AUTENTICADO. NO MODIFICA EL LOGIN.
   ========================================================== */

/* El dropdown se ancla por JS al control del usuario. No usar top/right fijos. */
body:not(.novum-login-page).novum-auth-page .user-submenu_list {
  position: fixed !important;
  top: auto !important;
  right: auto !important;
  bottom: auto !important;
  left: auto !important;
  transform: none !important;
  margin: 0 !important;
  width: 240px !important;
  min-width: 240px !important;
  max-width: calc(100vw - 20px) !important;
  z-index: 30000 !important;
  padding: 8px !important;
  background: #ffffff !important;
  border: 1px solid #e6e9ee !important;
  border-radius: 10px !important;
  box-shadow: 0 14px 32px rgba(15, 23, 42, .16) !important;
}

/* Evitar que reglas antiguas del dropdown vuelvan a desplazarlo. */
body:not(.novum-login-page).novum-auth-page .user-submenu_list[data-novum-anchored="1"] {
  transform: none !important;
  margin: 0 !important;
}

/* Item activo: exactamente una sola superficie del tamaño del item. */
body:not(.novum-login-page).novum-auth-page .novum-active-menu-shell {
  box-sizing: border-box !important;
  position: relative !important;
  width: 100% !important;
  min-height: 52px !important;
  margin: 0 !important;
  padding: 0 !important;
  overflow: hidden !important;
  background: #fff4f5 !important;
  border: 1px solid #f2d6d9 !important;
  border-left: 4px solid #e31c26 !important;
  border-radius: 9px !important;
  box-shadow: none !important;
}

body:not(.novum-login-page).novum-auth-page .novum-active-menu-shell > a,
body:not(.novum-login-page).novum-auth-page .novum-active-menu-shell a.router-link-active,
body:not(.novum-login-page).novum-auth-page .novum-active-menu-shell a[aria-current="page"] {
  box-sizing: border-box !important;
  display: flex !important;
  align-items: center !important;
  width: 100% !important;
  height: 100% !important;
  min-height: 52px !important;
  margin: 0 !important;
  padding: 11px 16px !important;
  background: transparent !important;
  border: 0 !important;
  border-radius: 0 !important;
  box-shadow: none !important;
  color: #b4141d !important;
  font-weight: 700 !important;
  text-decoration: none !important;
}

body:not(.novum-login-page).novum-auth-page .novum-active-menu-shell::before,
body:not(.novum-login-page).novum-auth-page .novum-active-menu-shell a::before {
  display: none !important;
  content: none !important;
}

/* ==========================================================
   NOVUM SYSTEM V6.10 - USER SUBMENU REAL ANCHOR
   SOLO ZONA AUTENTICADA. NO MODIFICA EL LOGIN.
   ========================================================== */
body:not(.novum-login-page).novum-auth-page .user-submenu_list {
  position: fixed !important;
  top: var(--novum-user-menu-top, 88px) !important;
  left: var(--novum-user-menu-left, auto) !important;
  right: auto !important;
  bottom: auto !important;
  inset: auto !important;
  width: var(--novum-user-menu-width, 240px) !important;
  min-width: 228px !important;
  max-width: min(320px, calc(100vw - 20px)) !important;
  transform: none !important;
  margin: 0 !important;
  z-index: 50000 !important;
  box-sizing: border-box !important;
}

body:not(.novum-login-page).novum-auth-page .user-submenu_list[data-novum-positioned="1"] {
  top: var(--novum-user-menu-top) !important;
  left: var(--novum-user-menu-left) !important;
  right: auto !important;
  inset: auto !important;
}

/* ==========================================================
   NOVUM SYSTEM V6.12 - USER SUBMENU FIX EXACTO
   IMPORTANTE:
   - NO modifica login.
   - NO modifica el comportamiento de sidebar/full-width.
   - Elimina cualquier altura calculada del submenu.
   - La posicion queda fija tal como fue solicitada.
   ========================================================== */
html body:not(.novum-login-page).novum-auth-page .user-submenu_list,
html body:not(.novum-login-page).novum-auth-page ul.user-submenu_list,
html body:not(.novum-login-page).novum-auth-page div.user-submenu_list {
  position: fixed !important;
  inset-inline-start: 1288.8px !important;
  left: 1288.8px !important;
  right: auto !important;
  top: 115px !important;
  bottom: auto !important;
  inset-block-start: 115px !important;
  inset-block-end: auto !important;

  padding: 1px 1px !important;
  margin: 0 !important;

  height: auto !important;
  min-height: 0 !important;
  max-height: none !important;

  overflow: visible !important;
  overflow-y: visible !important;
  overflow-x: visible !important;

  transform: none !important;
  translate: none !important;

  width: max-content !important;
  min-width: 220px !important;
  max-width: 320px !important;

  z-index: 50000 !important;
  box-sizing: border-box !important;
}

/* Quitar variables y atributos usados por versiones anteriores. */
html body:not(.novum-login-page).novum-auth-page .user-submenu_list[data-novum-positioned="1"],
html body:not(.novum-login-page).novum-auth-page .user-submenu_list[data-novum-anchored="1"] {
  top: 115px !important;
  left: 1288.8px !important;
  right: auto !important;
  bottom: auto !important;
  transform: none !important;
  height: auto !important;
  max-height: none !important;
}

/* Ningun hijo puede forzar la altura del dropdown. */
html body:not(.novum-login-page).novum-auth-page .user-submenu_list > *,
html body:not(.novum-login-page).novum-auth-page .user-submenu_list ul,
html body:not(.novum-login-page).novum-auth-page .user-submenu_list li {
  height: auto !important;
  min-height: 0 !important;
  max-height: none !important;
}

/* Mantener items compactos y legibles. */
html body:not(.novum-login-page).novum-auth-page .user-submenu_list a,
html body:not(.novum-login-page).novum-auth-page .user-submenu_list button,
html body:not(.novum-login-page).novum-auth-page .user-submenu_list [role="menuitem"] {
  min-height: 40px !important;
  height: auto !important;
  padding: 8px 14px !important;
  box-sizing: border-box !important;
}

/* ==========================================================
   NOVUM SYSTEM V6.13 - USER SUBMENU PORTAL / ANCHOR REAL
   SOLO ZONA AUTENTICADA. NO MODIFICA LOGIN NI SIDEBAR.
   - #user-submenu se saca visualmente del flujo del topbar.
   - Sin height calculado/estatico.
   - Se posiciona debajo del boton de usuario.
   - Al hacer scroll del contenido permanece fijo.
   ========================================================== */
html body:not(.novum-login-page).novum-auth-page #user-submenu,
html body:not(.novum-login-page).novum-auth-page .user-submenu_list#user-submenu {
  position: fixed !important;
  top: var(--novum-user-submenu-top, 70px) !important;
  left: var(--novum-user-submenu-left, auto) !important;
  right: auto !important;
  bottom: auto !important;
  inset: auto !important;
  inset-inline-start: var(--novum-user-submenu-left, auto) !important;
  inset-inline-end: auto !important;

  width: var(--novum-user-submenu-width, 250px) !important;
  min-width: 220px !important;
  max-width: min(320px, calc(100vw - 24px)) !important;

  height: auto !important;
  min-height: 0 !important;
  max-height: none !important;

  margin: 0 !important;
  padding: 1px !important;
  overflow: visible !important;
  overflow-x: visible !important;
  overflow-y: visible !important;

  transform: none !important;
  translate: none !important;
  box-sizing: border-box !important;
  z-index: 100000 !important;
}

html body:not(.novum-login-page).novum-auth-page #user-submenu > *,
html body:not(.novum-login-page).novum-auth-page #user-submenu ul,
html body:not(.novum-login-page).novum-auth-page #user-submenu li {
  height: auto !important;
  min-height: 0 !important;
  max-height: none !important;
}

html body:not(.novum-login-page).novum-auth-page #user-submenu a,
html body:not(.novum-login-page).novum-auth-page #user-submenu button,
html body:not(.novum-login-page).novum-auth-page #user-submenu [role="menuitem"] {
  box-sizing: border-box !important;
  height: auto !important;
  min-height: 40px !important;
  max-height: none !important;
  padding: 8px 14px !important;
}

/* Si Chamilo deja estilos inline antiguos, esta clase los neutraliza. */
html body:not(.novum-login-page).novum-auth-page #user-submenu.novum-user-submenu-ready {
  top: var(--novum-user-submenu-top) !important;
  left: var(--novum-user-submenu-left) !important;
  height: auto !important;
  max-height: none !important;
  transform: none !important;
}

/* ==========================================================
   NOVUM SYSTEM V6.14 - AJUSTE FINAL USER SUBMENU
   Solo zona autenticada. No modifica login, sidebar ni full-width.
   ========================================================== */
html body:not(.novum-login-page).novum-auth-page #user-submenu,
html body:not(.novum-login-page).novum-auth-page .user-submenu_list#user-submenu {
  margin: 0 !important;
  padding: 0 !important;
  background: #ffffff !important;
  border: 1px solid #e5e7eb !important;
  border-radius: 8px !important;
  box-shadow: 0 12px 28px rgba(15, 23, 42, .16) !important;
  overflow: hidden !important;
  height: auto !important;
  min-height: 0 !important;
  max-height: none !important;
}

/* Eliminar flecha/pseudo-elementos y cualquier franja heredada. */
html body:not(.novum-login-page).novum-auth-page #user-submenu::before,
html body:not(.novum-login-page).novum-auth-page #user-submenu::after,
html body:not(.novum-login-page).novum-auth-page .user-submenu_list#user-submenu::before,
html body:not(.novum-login-page).novum-auth-page .user-submenu_list#user-submenu::after {
  content: none !important;
  display: none !important;
}

/* Todo el interior debe ocupar exactamente el ancho blanco del dropdown. */
html body:not(.novum-login-page).novum-auth-page #user-submenu > *,
html body:not(.novum-login-page).novum-auth-page #user-submenu ul,
html body:not(.novum-login-page).novum-auth-page #user-submenu li {
  box-sizing: border-box !important;
  width: 100% !important;
  max-width: 100% !important;
  margin-left: 0 !important;
  margin-right: 0 !important;
  background-color: #ffffff !important;
}

html body:not(.novum-login-page).novum-auth-page #user-submenu a,
html body:not(.novum-login-page).novum-auth-page #user-submenu button,
html body:not(.novum-login-page).novum-auth-page #user-submenu [role="menuitem"] {
  width: 100% !important;
  margin: 0 !important;
  padding: 9px 14px !important;
  border-radius: 0 !important;
}

html body:not(.novum-login-page).novum-auth-page #user-submenu a:hover,
html body:not(.novum-login-page).novum-auth-page #user-submenu button:hover,
html body:not(.novum-login-page).novum-auth-page #user-submenu [role="menuitem"]:hover {
  background: #fff3f4 !important;
}

/* ==========================================================
   NOVUM SYSTEM V6.15 - SOCIAL / PROFILE CARD WIDTH
   Solo afecta al card lateral que contiene .user-profile-card.
   No modifica login, topbar, sidebar principal ni menu hamburguesa.
   ========================================================== */

/* Ensancha exclusivamente la columna lateral del perfil social. */
@media (min-width: 768px) {
    body:not(.novum-login-page).novum-auth-page .sidebar:has(.user-profile-card) {
        flex: 0 0 clamp(300px, 22vw, 360px) !important;
        width: clamp(300px, 22vw, 360px) !important;
        min-width: 300px !important;
        max-width: 360px !important;
        overflow: visible !important;
    }

    /* El contenido principal usa todo el espacio restante. */
    body:not(.novum-login-page).novum-auth-page .sidebar:has(.user-profile-card) + * {
        flex: 1 1 auto !important;
        width: auto !important;
        min-width: 0 !important;
        max-width: none !important;
    }
}

/* El PrimeVue Card ocupa toda la nueva columna. */
body:not(.novum-login-page).novum-auth-page .sidebar:has(.user-profile-card) > .p-card,
body:not(.novum-login-page).novum-auth-page .sidebar:has(.user-profile-card) .p-card[data-pc-name="card"] {
    width: 100% !important;
    min-width: 0 !important;
    max-width: none !important;
    overflow: visible !important;
    border-radius: 16px !important;
}

body:not(.novum-login-page).novum-auth-page .sidebar:has(.user-profile-card) .p-card-body,
body:not(.novum-login-page).novum-auth-page .sidebar:has(.user-profile-card) .p-card-content,
body:not(.novum-login-page).novum-auth-page .sidebar:has(.user-profile-card) .user-profile-card {
    width: 100% !important;
    max-width: none !important;
    box-sizing: border-box !important;
}

/* Evita que los botones del perfil queden comprimidos. */
body:not(.novum-login-page).novum-auth-page .user-profile-card .max-w-xs {
    max-width: none !important;
    width: 100% !important;
}

body:not(.novum-login-page).novum-auth-page .user-profile-card button,
body:not(.novum-login-page).novum-auth-page .user-profile-card a {
    box-sizing: border-box !important;
}

body:not(.novum-login-page).novum-auth-page .user-profile-card button > span.flex-1 {
    white-space: normal !important;
    overflow: visible !important;
    text-overflow: clip !important;
}

/* En movil se conserva el comportamiento responsive original. */
@media (max-width: 767px) {
    body:not(.novum-login-page).novum-auth-page .sidebar:has(.user-profile-card) {
        width: 100% !important;
        min-width: 0 !important;
        max-width: none !important;
    }
}

/* ==========================================================
   NOVUM SYSTEM V6.16 - PrimeVue Card subtitle spacing
   Only adjusts horizontal spacing of card subtitles.
   ========================================================== */
body:not(.novum-login-page).novum-auth-page .p-card-subtitle {
    padding-inline: 4px !important;
    box-sizing: border-box !important;
}

/* ==========================================================
   NOVUM SYSTEM V6.17 - Login background corporativo
   Solo modifica la pantalla de login. No altera zona autenticada.
   ========================================================== */
html.novum-login-page,
body.novum-login-page {
    background: #8f0b12 url('/novum-theme/login-background-novum.jpg') center center / cover no-repeat fixed !important;
}

body.novum-login-page #app,
body.novum-login-page main,
body.novum-login-page [role="main"] {
    background: transparent !important;
}

/* Desactiva las figuras CSS antiguas para que destaque la nueva imagen de fondo. */
body.novum-login-page #app::before,
body.novum-login-page main::before {
    background: linear-gradient(90deg, rgba(70, 0, 6, .10), rgba(150, 0, 10, .02)) !important;
}

/* Logo con relieve/sombra similar al mockup original. */
body.novum-login-page .login-section::before {
    box-shadow:
        0 18px 34px rgba(50, 0, 4, .45),
        0 5px 12px rgba(0, 0, 0, .22) !important;
}

/* Mejora el contraste del bloque central sobre el edificio. */
body.novum-login-page .login-section__title::before,
body.novum-login-page .login-section__title::after,
body.novum-login-page .login-section::after {
    text-shadow: 0 2px 10px rgba(60, 0, 5, .38) !important;
}

@media (max-width: 900px) {
    html.novum-login-page,
    body.novum-login-page {
        background-position: 62% center !important;
    }
}

/* ==========================================================
   NOVUM SYSTEM V6.20 - MOBILE DRAWER PORTAL
   En movil el sidebar se saca del layout y se monta directamente
   bajo <body>. Asi ni el sidebar ni el contenido se desplazan juntos.
   No modifica login ni escritorio.
   ========================================================== */
@media (max-width: 767px) {
  html,
  body:not(.novum-login-page).novum-auth-page {
    overflow-x: hidden !important;
    width: 100% !important;
    max-width: 100% !important;
  }

  /* En movil anulamos cualquier estado desktop de colapso. */
  body:not(.novum-login-page).novum-auth-page.novum-sidebar-hidden,
  html.novum-sidebar-hidden body:not(.novum-login-page).novum-auth-page {
    --novum-sidebar-width: 0px !important;
  }

  /* El contenido queda siempre en su sitio y usa todo el ancho disponible. */
  body:not(.novum-login-page).novum-auth-page main,
  body:not(.novum-login-page).novum-auth-page .main-content,
  body:not(.novum-login-page).novum-auth-page .page-content,
  body:not(.novum-login-page).novum-auth-page .content-wrapper,
  body:not(.novum-login-page).novum-auth-page [class*="main-content"],
  body:not(.novum-login-page).novum-auth-page [class*="content-wrapper"],
  body:not(.novum-login-page).novum-auth-page .novum-fullwidth-content {
    position: relative !important;
    left: auto !important;
    right: auto !important;
    transform: none !important;
    translate: none !important;
    margin-left: 0 !important;
    margin-right: 0 !important;
    width: 100% !important;
    max-width: 100% !important;
    min-width: 0 !important;
    flex: 1 1 100% !important;
  }

  /* Sidebar portal: ya es hijo directo de body, no participa del layout. */
  body:not(.novum-login-page).novum-auth-page > .novum-mobile-sidebar-portal {
    display: block !important;
    position: fixed !important;
    top: var(--novum-mobile-header-height, 72px) !important;
    left: 0 !important;
    right: auto !important;
    bottom: 0 !important;
    width: min(86vw, 320px) !important;
    min-width: min(86vw, 320px) !important;
    max-width: min(86vw, 320px) !important;
    height: calc(100dvh - var(--novum-mobile-header-height, 72px)) !important;
    min-height: 0 !important;
    max-height: calc(100dvh - var(--novum-mobile-header-height, 72px)) !important;
    margin: 0 !important;
    padding: 0 !important;
    flex: none !important;
    opacity: 1 !important;
    visibility: visible !important;
    transform: translate3d(-102%, 0, 0) !important;
    pointer-events: none !important;
    overflow-y: auto !important;
    overflow-x: hidden !important;
    overscroll-behavior: contain !important;
    background: #fff !important;
    border: 0 !important;
    border-right: 1px solid #e5e7eb !important;
    box-shadow: 14px 0 32px rgba(15,23,42,.20) !important;
    z-index: 100020 !important;
    transition: transform .22s ease !important;
  }

  body:not(.novum-login-page).novum-auth-page.novum-mobile-drawer-open > .novum-mobile-sidebar-portal {
    transform: translate3d(0,0,0) !important;
    pointer-events: auto !important;
  }

  .novum-mobile-drawer-backdrop {
    position: fixed !important;
    top: var(--novum-mobile-header-height, 72px) !important;
    left: 0 !important;
    right: 0 !important;
    bottom: 0 !important;
    background: rgba(15,23,42,.30) !important;
    opacity: 0 !important;
    visibility: hidden !important;
    pointer-events: none !important;
    z-index: 100010 !important;
    transition: opacity .18s ease, visibility .18s ease !important;
  }

  body:not(.novum-login-page).novum-auth-page.novum-mobile-drawer-open > .novum-mobile-drawer-backdrop {
    opacity: 1 !important;
    visibility: visible !important;
    pointer-events: auto !important;
  }

  /* El header nunca se mueve y siempre queda por encima del drawer. */
  body:not(.novum-login-page).novum-auth-page header,
  body:not(.novum-login-page).novum-auth-page .topbar,
  body:not(.novum-login-page).novum-auth-page .app-topbar,
  body:not(.novum-login-page).novum-auth-page .main-header,
  body:not(.novum-login-page).novum-auth-page [class*="topbar"] {
    transform: none !important;
    translate: none !important;
    z-index: 100030 !important;
  }
}

/* ==========================================================
   NOVUM SYSTEM V6.22 - MOBILE DRAWER CONTENT VISIBILITY FIX
   Mantiene el drawer portal de V6.20 (que no desplaza el content)
   y fuerza visibles solo los wrappers responsive del menu que
   Chamilo oculta en viewport movil con "hidden md:block/flex/grid".
   No afecta login ni escritorio.
   ========================================================== */
@media (max-width: 767px) {
  body:not(.novum-login-page).novum-auth-page > .novum-mobile-sidebar-portal {
    display: flex !important;
    flex-direction: column !important;
    color: #1f2937 !important;
  }

  /* El area central del menu debe poder crecer y hacer scroll. */
  body:not(.novum-login-page).novum-auth-page > .novum-mobile-sidebar-portal .novum-mobile-responsive-visible {
    visibility: visible !important;
    opacity: 1 !important;
  }

  body:not(.novum-login-page).novum-auth-page > .novum-mobile-sidebar-portal .novum-mobile-responsive-block {
    display: block !important;
  }

  body:not(.novum-login-page).novum-auth-page > .novum-mobile-sidebar-portal .novum-mobile-responsive-flex {
    display: flex !important;
  }

  body:not(.novum-login-page).novum-auth-page > .novum-mobile-sidebar-portal .novum-mobile-responsive-grid {
    display: grid !important;
  }

  /* Los enlaces/items reales deben conservar dimensiones y ser visibles. */
  body:not(.novum-login-page).novum-auth-page > .novum-mobile-sidebar-portal a,
  body:not(.novum-login-page).novum-auth-page > .novum-mobile-sidebar-portal button,
  body:not(.novum-login-page).novum-auth-page > .novum-mobile-sidebar-portal li {
    visibility: visible !important;
    opacity: 1 !important;
  }

  /* Evita que el footer tape los items cuando el menu es largo. */
  body:not(.novum-login-page).novum-auth-page > .novum-mobile-sidebar-portal {
    padding-bottom: max(16px, env(safe-area-inset-bottom)) !important;
  }
}

/* ==========================================================
   NOVUM SYSTEM V6.23 - MOBILE MENU ITEMS FALLBACK
   SOLO MOVIL. Si Chamilo mantiene ocultos los items originales,
   se muestra una lista funcional construida desde sus propios enlaces.
   No altera login ni escritorio.
   ========================================================== */
@media (max-width: 767px) {
  body:not(.novum-login-page).novum-auth-page > .novum-mobile-sidebar-portal .novum-mobile-menu-mirror {
    display: flex !important;
    flex-direction: column !important;
    gap: 6px !important;
    width: 100% !important;
    padding: 10px 10px 18px !important;
    margin: 0 !important;
    box-sizing: border-box !important;
    visibility: visible !important;
    opacity: 1 !important;
  }

  body:not(.novum-login-page).novum-auth-page > .novum-mobile-sidebar-portal .novum-mobile-menu-mirror__title {
    display: block !important;
    margin: 4px 6px 8px !important;
    padding: 0 4px !important;
    color: #182230 !important;
    font-size: 20px !important;
    line-height: 1.25 !important;
    font-weight: 800 !important;
  }

  body:not(.novum-login-page).novum-auth-page > .novum-mobile-sidebar-portal .novum-mobile-menu-mirror a {
    display: flex !important;
    align-items: center !important;
    gap: 10px !important;
    width: 100% !important;
    min-height: 48px !important;
    margin: 0 !important;
    padding: 11px 14px !important;
    box-sizing: border-box !important;
    border: 1px solid #e7e9ee !important;
    border-radius: 10px !important;
    background: #ffffff !important;
    color: #253247 !important;
    text-decoration: none !important;
    font-size: 15px !important;
    font-weight: 600 !important;
    line-height: 1.25 !important;
    box-shadow: 0 3px 10px rgba(15,23,42,.05) !important;
    visibility: visible !important;
    opacity: 1 !important;
  }

  body:not(.novum-login-page).novum-auth-page > .novum-mobile-sidebar-portal .novum-mobile-menu-mirror a:hover,
  body:not(.novum-login-page).novum-auth-page > .novum-mobile-sidebar-portal .novum-mobile-menu-mirror a:focus {
    background: #fff1f2 !important;
    border-color: rgba(229,27,36,.22) !important;
    color: #b3121a !important;
  }

  body:not(.novum-login-page).novum-auth-page > .novum-mobile-sidebar-portal .novum-mobile-menu-mirror a.is-active {
    position: relative !important;
    background: #fff1f2 !important;
    border-color: rgba(229,27,36,.18) !important;
    color: #ab1118 !important;
    font-weight: 700 !important;
    padding-left: 18px !important;
  }

  body:not(.novum-login-page).novum-auth-page > .novum-mobile-sidebar-portal .novum-mobile-menu-mirror a.is-active::before {
    content: "" !important;
    position: absolute !important;
    left: 0 !important;
    top: 7px !important;
    bottom: 7px !important;
    width: 4px !important;
    border-radius: 0 4px 4px 0 !important;
    background: #e51b24 !important;
  }

  body:not(.novum-login-page).novum-auth-page > .novum-mobile-sidebar-portal .novum-mobile-menu-mirror .mdi,
  body:not(.novum-login-page).novum-auth-page > .novum-mobile-sidebar-portal .novum-mobile-menu-mirror i {
    flex: 0 0 auto !important;
    font-size: 18px !important;
    color: inherit !important;
  }
}

/* ==========================================================
   NOVUM SYSTEM V6.24 - MOBILE SIDEBAR WIDTH FIX
   Corrige el selector global [class*="sidebar"]:not([class*="tox-"]) que tambien
   afectaba a .app-sidebar__panel dentro del drawer movil.
   SOLO MOVIL. No modifica login ni escritorio.
   ========================================================== */
@media (max-width: 767px) {
  /* El portal/drawer conserva su ancho visible. */
  body:not(.novum-login-page).novum-auth-page > .novum-mobile-sidebar-portal {
    width: min(86vw, 320px) !important;
    min-width: min(86vw, 320px) !important;
    max-width: min(86vw, 320px) !important;
  }

  /* IMPORTANT: los elementos internos cuyo nombre contiene "sidebar"
     NO deben heredar el width del sidebar desktop (0/198px). */
  body:not(.novum-login-page).novum-auth-page > .novum-mobile-sidebar-portal [class*="sidebar"]:not([class*="tox-"]) {
    width: 100% !important;
    min-width: 0 !important;
    max-width: 100% !important;
    flex: 1 1 auto !important;
    box-sizing: border-box !important;
  }

  body:not(.novum-login-page).novum-auth-page > .novum-mobile-sidebar-portal .app-sidebar__panel {
    display: block !important;
    width: 100% !important;
    min-width: 0 !important;
    max-width: none !important;
    visibility: visible !important;
    opacity: 1 !important;
    overflow-x: hidden !important;
    overflow-y: visible !important;
  }

  /* PrimeVue PanelMenu e items deben usar todo el ancho del drawer. */
  body:not(.novum-login-page).novum-auth-page > .novum-mobile-sidebar-portal .p-panelmenu,
  body:not(.novum-login-page).novum-auth-page > .novum-mobile-sidebar-portal .p-panelmenu-panel,
  body:not(.novum-login-page).novum-auth-page > .novum-mobile-sidebar-portal .p-panelmenu-header,
  body:not(.novum-login-page).novum-auth-page > .novum-mobile-sidebar-portal .p-panelmenu-header-content,
  body:not(.novum-login-page).novum-auth-page > .novum-mobile-sidebar-portal .p-panelmenu-header-action,
  body:not(.novum-login-page).novum-auth-page > .novum-mobile-sidebar-portal .p-panelmenu-content-container,
  body:not(.novum-login-page).novum-auth-page > .novum-mobile-sidebar-portal .p-panelmenu-content-wrapper,
  body:not(.novum-login-page).novum-auth-page > .novum-mobile-sidebar-portal .p-panelmenu-content,
  body:not(.novum-login-page).novum-auth-page > .novum-mobile-sidebar-portal .p-panelmenu-root-list,
  body:not(.novum-login-page).novum-auth-page > .novum-mobile-sidebar-portal .p-panelmenu-item,
  body:not(.novum-login-page).novum-auth-page > .novum-mobile-sidebar-portal .p-panelmenu-item-content,
  body:not(.novum-login-page).novum-auth-page > .novum-mobile-sidebar-portal .p-menuitem-link {
    width: 100% !important;
    min-width: 0 !important;
    max-width: 100% !important;
    box-sizing: border-box !important;
  }

  body:not(.novum-login-page).novum-auth-page > .novum-mobile-sidebar-portal .p-panelmenu-header,
  body:not(.novum-login-page).novum-auth-page > .novum-mobile-sidebar-portal .p-panelmenu-header-content,
  body:not(.novum-login-page).novum-auth-page > .novum-mobile-sidebar-portal .p-panelmenu-header-action,
  body:not(.novum-login-page).novum-auth-page > .novum-mobile-sidebar-portal .p-panelmenu-item,
  body:not(.novum-login-page).novum-auth-page > .novum-mobile-sidebar-portal .p-panelmenu-item-content,
  body:not(.novum-login-page).novum-auth-page > .novum-mobile-sidebar-portal .p-menuitem-link {
    visibility: visible !important;
    opacity: 1 !important;
  }
}

/* ==========================================================
   NOVUM SYSTEM V6.25 - MOBILE APP MAIN FULL WIDTH FIX
   Corrige el contenido principal al navegar desde el drawer movil.
   SOLO MOVIL. No modifica login, desktop ni el drawer ya corregido.
   ========================================================== */
@media (max-width: 767px) {
  /* El area principal debe ocupar todo el viewport cuando el drawer
     esta cerrado o abierto. Nunca debe conservar el ancho/margen del
     sidebar de escritorio. */
  body:not(.novum-login-page).novum-auth-page .app-main {
    position: relative !important;
    display: block !important;
    width: 100% !important;
    min-width: 0 !important;
    max-width: none !important;
    margin-left: 0 !important;
    margin-right: 0 !important;
    margin-inline: 0 !important;
    padding-left: 16px !important;
    padding-right: 16px !important;
    box-sizing: border-box !important;
    transform: none !important;
    translate: none !important;
    left: auto !important;
    right: auto !important;
    flex: 1 1 100% !important;
    visibility: visible !important;
    opacity: 1 !important;
    overflow-x: visible !important;
  }

  /* Neutraliza wrappers que siguen reservando espacio para el sidebar. */
  body:not(.novum-login-page).novum-auth-page .app-main-wrapper,
  body:not(.novum-login-page).novum-auth-page .app-content,
  body:not(.novum-login-page).novum-auth-page .main-content,
  body:not(.novum-login-page).novum-auth-page .content-wrapper,
  body:not(.novum-login-page).novum-auth-page main {
    width: 100% !important;
    min-width: 0 !important;
    max-width: none !important;
    margin-left: 0 !important;
    margin-right: 0 !important;
    margin-inline: 0 !important;
    transform: none !important;
    translate: none !important;
    left: auto !important;
    right: auto !important;
    flex: 1 1 100% !important;
    box-sizing: border-box !important;
  }

  /* El drawer es overlay: nunca debe empujar el contenido. */
  body:not(.novum-login-page).novum-auth-page.novum-mobile-drawer-open .app-main,
  body:not(.novum-login-page).novum-auth-page.novum-mobile-drawer-open .app-main-wrapper,
  body:not(.novum-login-page).novum-auth-page.novum-mobile-drawer-open .app-content,
  body:not(.novum-login-page).novum-auth-page.novum-mobile-drawer-open .main-content,
  body:not(.novum-login-page).novum-auth-page.novum-mobile-drawer-open .content-wrapper,
  body:not(.novum-login-page).novum-auth-page.novum-mobile-drawer-open main {
    width: 100% !important;
    max-width: none !important;
    margin-inline: 0 !important;
    transform: none !important;
    translate: none !important;
  }

  /* Las secciones y grids internos tampoco deben quedar encogidos. */
  body:not(.novum-login-page).novum-auth-page .app-main > *,
  body:not(.novum-login-page).novum-auth-page .app-main .section-header,
  body:not(.novum-login-page).novum-auth-page .app-main .section-content,
  body:not(.novum-login-page).novum-auth-page .app-main #legacy_content,
  body:not(.novum-login-page).novum-auth-page .app-main #sectionMainContent {
    width: 100% !important;
    min-width: 0 !important;
    max-width: 100% !important;
    box-sizing: border-box !important;
  }

  /* Asegura que los cards de cursos usen todo el ancho disponible. */
  body:not(.novum-login-page).novum-auth-page .app-main .course-card,
  body:not(.novum-login-page).novum-auth-page .app-main .p-card {
    max-width: 100% !important;
    box-sizing: border-box !important;
  }
}

/* ==========================================================
   NOVUM SYSTEM V6.26 - MOBILE ROUTE CONTENT WIDTH HARD FIX
   SOLO MOVIL. Mantiene intactos login, desktop y drawer V6.24.
   El problema real era el layout padre de .app-main: aunque
   .app-main tenia width:100%, uno o mas ancestros seguian
   reservando la columna del sidebar. Esta capa neutraliza esa
   reserva sin modificar la estructura de escritorio.
   ========================================================== */
@media (max-width: 767px) {
  body:not(.novum-login-page).novum-auth-page {
    --novum-auth-sidebar-w: 0px !important;
    width: 100% !important;
    max-width: 100vw !important;
    overflow-x: hidden !important;
  }

  /* Ancestros reales de app-main marcados por JS. */
  body:not(.novum-login-page).novum-auth-page .novum-mobile-main-wrapper {
    width: 100% !important;
    min-width: 0 !important;
    max-width: 100% !important;
    margin-left: 0 !important;
    margin-right: 0 !important;
    margin-inline: 0 !important;
    left: 0 !important;
    right: auto !important;
    transform: none !important;
    translate: none !important;
    flex: 1 1 100% !important;
    flex-basis: 100% !important;
    grid-column: 1 / -1 !important;
    box-sizing: border-box !important;
  }

  /* Si alguno de los wrappers usa CSS Grid, elimina la columna
     reservada al sidebar SOLO en movil. */
  body:not(.novum-login-page).novum-auth-page .novum-mobile-main-layout {
    grid-template-columns: minmax(0, 1fr) !important;
    column-gap: 0 !important;
  }

  /* .app-main debe medir el viewport disponible, no la antigua
     columna de contenido calculada con sidebar. */
  body:not(.novum-login-page).novum-auth-page .app-main {
    position: relative !important;
    inset: auto !important;
    top: auto !important;
    left: auto !important;
    right: auto !important;
    width: 100% !important;
    min-width: 0 !important;
    max-width: 100% !important;
    margin: 0 !important;
    margin-inline: 0 !important;
    padding-left: 14px !important;
    padding-right: 14px !important;
    box-sizing: border-box !important;
    transform: none !important;
    translate: none !important;
    flex: 1 1 100% !important;
    flex-basis: 100% !important;
    grid-column: 1 / -1 !important;
    overflow-x: hidden !important;
    visibility: visible !important;
    opacity: 1 !important;
  }

  /* Router views y secciones internas nunca deben heredar una
     anchura menor que la del app-main. */
  body:not(.novum-login-page).novum-auth-page .app-main > *,
  body:not(.novum-login-page).novum-auth-page .app-main .section-header,
  body:not(.novum-login-page).novum-auth-page .app-main .section-content,
  body:not(.novum-login-page).novum-auth-page .app-main #legacy_content,
  body:not(.novum-login-page).novum-auth-page .app-main #sectionMainContent {
    width: 100% !important;
    min-width: 0 !important;
    max-width: 100% !important;
    margin-left: 0 !important;
    margin-right: 0 !important;
    box-sizing: border-box !important;
  }

  /* La grilla de cursos debe usar todo el ancho real del movil. */
  body:not(.novum-login-page).novum-auth-page .app-main .grid {
    width: 100% !important;
    min-width: 0 !important;
    max-width: 100% !important;
    box-sizing: border-box !important;
  }

  /* El drawer sigue siendo overlay y jamas modifica app-main. */
  body:not(.novum-login-page).novum-auth-page.novum-mobile-drawer-open .app-main,
  body:not(.novum-login-page).novum-auth-page.novum-mobile-drawer-open .novum-mobile-main-wrapper {
    margin-left: 0 !important;
    transform: none !important;
    translate: none !important;
  }
}

/* ==========================================================
   NOVUM SYSTEM V6.27 - MOBILE SIDEBAR WIDTH SCOPE FIX
   Corrige SOLO movil: la regla de ancho del sidebar de escritorio
   no debe aplicarse a todos los elementos cuyo class contiene
   "sidebar". Conserva el drawer y deja .app-main al 100%.
   ========================================================== */
@media (max-width: 767px) {
  /* Neutraliza el width desktop que se aplicaba de forma demasiado amplia. */
  body:not(.novum-login-page).novum-auth-page aside,
  body:not(.novum-login-page).novum-auth-page .sidebar,
  body:not(.novum-login-page).novum-auth-page [class*="sidebar"]:not([class*="tox-"]) {
    width: auto !important;
    min-width: 0 !important;
    max-width: none !important;
  }

  /* El drawer movil SI conserva un ancho explicito. */
  body:not(.novum-login-page).novum-auth-page > .novum-mobile-sidebar-portal {
    width: min(86vw, 320px) !important;
    min-width: min(86vw, 320px) !important;
    max-width: min(86vw, 320px) !important;
    box-sizing: border-box !important;
  }

  /* Todo el arbol real del menu usa el ancho completo del drawer. */
  body:not(.novum-login-page).novum-auth-page > .novum-mobile-sidebar-portal .app-sidebar,
  body:not(.novum-login-page).novum-auth-page > .novum-mobile-sidebar-portal .app-sidebar__panel,
  body:not(.novum-login-page).novum-auth-page > .novum-mobile-sidebar-portal [class*="sidebar"]:not([class*="tox-"]),
  body:not(.novum-login-page).novum-auth-page > .novum-mobile-sidebar-portal .p-panelmenu,
  body:not(.novum-login-page).novum-auth-page > .novum-mobile-sidebar-portal .p-panelmenu-panel,
  body:not(.novum-login-page).novum-auth-page > .novum-mobile-sidebar-portal .p-panelmenu-header,
  body:not(.novum-login-page).novum-auth-page > .novum-mobile-sidebar-portal .p-panelmenu-header-content,
  body:not(.novum-login-page).novum-auth-page > .novum-mobile-sidebar-portal .p-panelmenu-header-action,
  body:not(.novum-login-page).novum-auth-page > .novum-mobile-sidebar-portal .p-panelmenu-content-container,
  body:not(.novum-login-page).novum-auth-page > .novum-mobile-sidebar-portal .p-panelmenu-content-wrapper,
  body:not(.novum-login-page).novum-auth-page > .novum-mobile-sidebar-portal .p-panelmenu-content,
  body:not(.novum-login-page).novum-auth-page > .novum-mobile-sidebar-portal .p-panelmenu-root-list,
  body:not(.novum-login-page).novum-auth-page > .novum-mobile-sidebar-portal .p-panelmenu-item,
  body:not(.novum-login-page).novum-auth-page > .novum-mobile-sidebar-portal .p-panelmenu-item-content,
  body:not(.novum-login-page).novum-auth-page > .novum-mobile-sidebar-portal .p-menuitem-link {
    width: 100% !important;
    min-width: 0 !important;
    max-width: 100% !important;
    box-sizing: border-box !important;
  }

  /* El contenido de cada ruta nunca reserva la columna del sidebar. */
  body:not(.novum-login-page).novum-auth-page .app-main,
  body:not(.novum-login-page).novum-auth-page .novum-mobile-main-wrapper {
    width: 100% !important;
    min-width: 0 !important;
    max-width: 100% !important;
    margin-left: 0 !important;
    margin-right: 0 !important;
    transform: none !important;
    translate: none !important;
    box-sizing: border-box !important;
  }
}

/* ==========================================================
   NOVUM SYSTEM V6.28 - TOPBAR START / GHOST LOGO CLEANUP
   Corrige SOLO la sombra/espacio fantasma dejado por el logo
   original de Chamilo. No modifica login, drawer movil,
   app-main, sidebar ni user-submenu.
   ========================================================== */
body:not(.novum-login-page).novum-auth-page .app-topbar__start {
    background: transparent !important;
    box-shadow: none !important;
    border: 0 !important;
    outline: 0 !important;
}

body:not(.novum-login-page).novum-auth-page .app-topbar__start .platform-logo {
    background: transparent !important;
    box-shadow: none !important;
    border: 0 !important;
    outline: 0 !important;
    padding: 0 !important;
    margin: 0 !important;
}

body:not(.novum-login-page).novum-auth-page .app-topbar__start .novum-hide-chamilo-logo {
    display: none !important;
    width: 0 !important;
    height: 0 !important;
    min-width: 0 !important;
    min-height: 0 !important;
    max-width: 0 !important;
    max-height: 0 !important;
    margin: 0 !important;
    padding: 0 !important;
    border: 0 !important;
    box-shadow: none !important;
    overflow: hidden !important;
}

body:not(.novum-login-page).novum-auth-page .app-topbar__start::before,
body:not(.novum-login-page).novum-auth-page .app-topbar__start::after,
body:not(.novum-login-page).novum-auth-page .platform-logo::before,
body:not(.novum-login-page).novum-auth-page .platform-logo::after {
    content: none !important;
    display: none !important;
    box-shadow: none !important;
}

/* ==========================================================
   NOVUM SYSTEM V6.29 - MOBILE TOPBAR CLEANUP
   SOLO MOVIL.
   - Oculta por completo el contenedor original .app-topbar__start
     (logo legacy/original) para que no reserve espacio ni sombra.
   - Normaliza los botones de accion de la derecha, incluyendo
     bandeja/mensajes, sin tocar el drawer, app-main ni login.
   ========================================================== */
@media (max-width: 767px) {
  body:not(.novum-login-page).novum-auth-page .app-topbar__start {
    display: none !important;
    width: 0 !important;
    min-width: 0 !important;
    max-width: 0 !important;
    height: 0 !important;
    min-height: 0 !important;
    max-height: 0 !important;
    margin: 0 !important;
    padding: 0 !important;
    border: 0 !important;
    box-shadow: none !important;
    overflow: hidden !important;
  }

  /* Zona de acciones del extremo derecho */
  body:not(.novum-login-page).novum-auth-page .app-topbar__end {
    margin-left: auto !important;
    display: flex !important;
    align-items: center !important;
    justify-content: flex-end !important;
    gap: 8px !important;
    min-width: 0 !important;
    height: var(--novum-auth-header-h) !important;
  }

  /* Acciones del topbar: sin cajas blancas/sombras heredadas */
  body:not(.novum-login-page).novum-auth-page .app-topbar__end > a,
  body:not(.novum-login-page).novum-auth-page .app-topbar__end > button,
  body:not(.novum-login-page).novum-auth-page .app-topbar__end [role="button"] {
    width: 38px !important;
    min-width: 38px !important;
    max-width: 38px !important;
    height: 38px !important;
    min-height: 38px !important;
    max-height: 38px !important;
    padding: 0 !important;
    margin: 0 !important;
    border: 0 !important;
    border-radius: 9px !important;
    background: transparent !important;
    box-shadow: none !important;
    display: inline-flex !important;
    align-items: center !important;
    justify-content: center !important;
    color: #fff !important;
    line-height: 1 !important;
  }

  body:not(.novum-login-page).novum-auth-page .app-topbar__end > a:hover,
  body:not(.novum-login-page).novum-auth-page .app-topbar__end > button:hover,
  body:not(.novum-login-page).novum-auth-page .app-topbar__end [role="button"]:hover {
    background: rgba(255,255,255,.12) !important;
  }

  /* Bandeja / mensajes: icono centrado y sin fondo blanco residual */
  body:not(.novum-login-page).novum-auth-page .app-topbar__end a:has(.mdi-email),
  body:not(.novum-login-page).novum-auth-page .app-topbar__end a:has(.mdi-message),
  body:not(.novum-login-page).novum-auth-page .app-topbar__end a:has(.mdi-inbox),
  body:not(.novum-login-page).novum-auth-page .app-topbar__end button:has(.mdi-email),
  body:not(.novum-login-page).novum-auth-page .app-topbar__end button:has(.mdi-message),
  body:not(.novum-login-page).novum-auth-page .app-topbar__end button:has(.mdi-inbox),
  body:not(.novum-login-page).novum-auth-page .app-topbar__end [aria-label*="mensaje" i],
  body:not(.novum-login-page).novum-auth-page .app-topbar__end [aria-label*="message" i],
  body:not(.novum-login-page).novum-auth-page .app-topbar__end [aria-label*="bandeja" i],
  body:not(.novum-login-page).novum-auth-page .app-topbar__end [aria-label*="inbox" i] {
    width: 38px !important;
    height: 38px !important;
    padding: 0 !important;
    border-radius: 9px !important;
    background: transparent !important;
    border: 0 !important;
    box-shadow: none !important;
    display: inline-flex !important;
    align-items: center !important;
    justify-content: center !important;
  }

  body:not(.novum-login-page).novum-auth-page .app-topbar__end .mdi,
  body:not(.novum-login-page).novum-auth-page .app-topbar__end i {
    font-size: 20px !important;
    line-height: 1 !important;
  }

  /* Avatar: conserva forma circular y tamaño contenido */
  body:not(.novum-login-page).novum-auth-page .app-topbar__end .p-avatar,
  body:not(.novum-login-page).novum-auth-page .app-topbar__end [class*="avatar"] {
    width: 38px !important;
    height: 38px !important;
    min-width: 38px !important;
    min-height: 38px !important;
    max-width: 38px !important;
    max-height: 38px !important;
    border-radius: 9999px !important;
  }

  /* Evita que la regla generica del sidebar alcance controles del topbar. */
  body:not(.novum-login-page).novum-auth-page .app-topbar__end a,
  body:not(.novum-login-page).novum-auth-page .app-topbar__end button {
    min-height: 38px !important;
    margin: 0 !important;
    padding: 0 !important;
    border-radius: 9px !important;
  }
}

/* ==========================================================
   NOVUM SYSTEM V6.30 - MOBILE: HIDE ORIGINAL TOPBAR END
   Only mobile. Keeps desktop/login unchanged.
   ========================================================== */
@media (max-width: 767px) {
  body:not(.novum-login-page).novum-auth-page .app-topbar__end {
    display: none !important;
  }
}

/* ==========================================================
   NOVUM SYSTEM V6.31 - MOBILE TOPBAR MESSAGE BUTTON
   Keep avatar visible, hide only redundant close, and polish inbox button.
   ========================================================== */
@media (max-width: 767px) {
  body:not(.novum-login-page).novum-auth-page .app-topbar__end {
    display: flex !important;
    align-items: center !important;
  }

  body:not(.novum-login-page).novum-auth-page .app-topbar__end .novum-redundant-close {
    display: none !important;
  }

  body:not(.novum-login-page).novum-auth-page a.item-button[href="/resources/messages"] {
    display: inline-flex !important;
    align-items: center !important;
    justify-content: center !important;
    width: 42px !important;
    height: 42px !important;
    min-width: 42px !important;
    min-height: 42px !important;
    padding: 0 !important;
    margin: 0 4px !important;
    border: 1px solid rgba(255,255,255,.30) !important;
    border-radius: 12px !important;
    background: rgba(255,255,255,.10) !important;
    color: #fff !important;
    box-shadow: none !important;
    text-decoration: none !important;
    transition: background .18s ease, border-color .18s ease, transform .18s ease !important;
  }

  body:not(.novum-login-page).novum-auth-page a.item-button[href="/resources/messages"]:hover,
  body:not(.novum-login-page).novum-auth-page a.item-button[href="/resources/messages"]:focus-visible {
    background: rgba(255,255,255,.18) !important;
    border-color: rgba(255,255,255,.55) !important;
    transform: translateY(-1px) !important;
    outline: none !important;
  }

  body:not(.novum-login-page).novum-auth-page a.item-button[href="/resources/messages"].router-link-active,
  body:not(.novum-login-page).novum-auth-page a.item-button[href="/resources/messages"].router-link-exact-active {
    background: #fff !important;
    color: #d20f1c !important;
    border-color: #fff !important;
    box-shadow: 0 4px 12px rgba(80,0,8,.18) !important;
  }

  body:not(.novum-login-page).novum-auth-page a.item-button[href="/resources/messages"] > span {
    width: 26px !important;
    height: 26px !important;
    display: inline-flex !important;
    align-items: center !important;
    justify-content: center !important;
  }

  body:not(.novum-login-page).novum-auth-page a.item-button[href="/resources/messages"] .item-button__icon,
  body:not(.novum-login-page).novum-auth-page a.item-button[href="/resources/messages"] .base-icon,
  body:not(.novum-login-page).novum-auth-page a.item-button[href="/resources/messages"] i.mdi-inbox {
    color: currentColor !important;
    font-size: 22px !important;
    line-height: 1 !important;
  }
}

/* ==========================================================
   NOVUM SYSTEM V6.32 - MOBILE TOPBAR ITEMS + AVATAR ONLY
   Keeps all previous fixes intact.
   ========================================================== */
@media (max-width: 767px) {
    body:not(.novum-login-page).novum-auth-page .app-topbar__items {
        padding: 0 !important;
        margin: 0 !important;
        gap: 8px !important;
        display: flex !important;
        align-items: center !important;
    }

    body:not(.novum-login-page).novum-auth-page .app-topbar__items .item-button {
        width: 38px !important;
        height: 38px !important;
        min-width: 38px !important;
        min-height: 38px !important;
        padding: 0 !important;
        margin: 0 !important;
        display: inline-flex !important;
        align-items: center !important;
        justify-content: center !important;
        border-radius: 50% !important;
        background: rgba(255,255,255,.12) !important;
        border: 1px solid rgba(255,255,255,.18) !important;
        box-shadow: none !important;
    }

    body:not(.novum-login-page).novum-auth-page .app-topbar__items .item-button i {
        color: #fff !important;
        font-size: 21px !important;
        line-height: 1 !important;
    }

    body:not(.novum-login-page).novum-auth-page .app-topbar__end {
        display: flex !important;
        align-items: center !important;
        gap: 8px !important;
        padding: 0 !important;
        margin: 0 !important;
    }

    body:not(.novum-login-page).novum-auth-page .app-topbar__end .user-avatar {
        width: 38px !important;
        height: 38px !important;
        min-width: 38px !important;
        min-height: 38px !important;
        padding: 2px !important;
        margin: 0 !important;
        display: flex !important;
        align-items: center !important;
        justify-content: center !important;
        overflow: hidden !important;
        border-radius: 50% !important;
        background: #fff !important;
        border: 2px solid rgba(255,255,255,.85) !important;
        box-shadow: 0 2px 8px rgba(70,0,0,.18) !important;
    }

    body:not(.novum-login-page).novum-auth-page .app-topbar__end .user-avatar img {
        width: 100% !important;
        height: 100% !important;
        object-fit: cover !important;
        border-radius: 50% !important;
    }

    body:not(.novum-login-page).novum-auth-page .app-topbar__end .novum-redundant-close {
        display: none !important;
    }
}

/* ==========================================================
   NOVUM SYSTEM V6.33 - MOBILE TOPBAR ACTIONS UNIFIED
   Only aligns Inbox and User Avatar visual treatment.
   ========================================================== */
@media (max-width: 767px) {
  body:not(.novum-login-page).novum-auth-page .app-topbar__items .item-button,
  body:not(.novum-login-page).novum-auth-page .app-topbar__end .user-avatar {
    width: 40px !important;
    height: 40px !important;
    min-width: 40px !important;
    min-height: 40px !important;
    padding: 0 !important;
    margin: 0 !important;
    display: inline-flex !important;
    align-items: center !important;
    justify-content: center !important;
    border-radius: 50% !important;
    background: rgba(255,255,255,.96) !important;
    border: 2px solid rgba(255,255,255,.95) !important;
    box-shadow: 0 2px 8px rgba(70,0,0,.22) !important;
    transition: transform .18s ease, box-shadow .18s ease, background .18s ease !important;
  }

  body:not(.novum-login-page).novum-auth-page .app-topbar__items .item-button:hover,
  body:not(.novum-login-page).novum-auth-page .app-topbar__end .user-avatar:hover {
    transform: translateY(-1px) !important;
    box-shadow: 0 4px 12px rgba(70,0,0,.28) !important;
    background: #fff !important;
  }

  body:not(.novum-login-page).novum-auth-page .app-topbar__items .item-button i {
    color: #d71920 !important;
    font-size: 21px !important;
    line-height: 1 !important;
  }

  body:not(.novum-login-page).novum-auth-page .app-topbar__end .user-avatar img {
    width: 100% !important;
    height: 100% !important;
    object-fit: cover !important;
    border-radius: 50% !important;
  }

  body:not(.novum-login-page).novum-auth-page .app-topbar__items,
  body:not(.novum-login-page).novum-auth-page .app-topbar__end {
    gap: 10px !important;
    align-items: center !important;
  }

  body:not(.novum-login-page).novum-auth-page .app-topbar__end .novum-redundant-close {
    display: none !important;
  }
}

/* ==========================================================
   NOVUM SYSTEM V6.35 - MOBILE COMPACT BRAND ONLY
   Keeps V6.34 behavior intact; only reduces brand footprint.
   ========================================================== */
@media (max-width: 767px) {
  body:not(.novum-login-page).novum-auth-page .novum-brand {
    display: inline-flex !important;
    align-items: center !important;
    gap: 7px !important;
    width: auto !important;
    min-width: 0 !important;
    max-width: 210px !important;
    margin: 0 !important;
    padding: 0 !important;
  }

  body:not(.novum-login-page).novum-auth-page .novum-brand__logo {
    width: 42px !important;
    height: 42px !important;
    min-width: 42px !important;
    object-fit: cover !important;
    border-radius: 3px !important;
    box-shadow: 0 2px 5px rgba(80, 0, 0, .18) !important;
  }

  body:not(.novum-login-page).novum-auth-page .novum-brand__text {
    font-size: 16px !important;
    line-height: 1 !important;
    font-weight: 700 !important;
    white-space: nowrap !important;
    letter-spacing: .2px !important;
  }
}

@media (max-width: 420px) {
  body:not(.novum-login-page).novum-auth-page .novum-brand {
    max-width: 175px !important;
    gap: 6px !important;
  }

  body:not(.novum-login-page).novum-auth-page .novum-brand__logo {
    width: 38px !important;
    height: 38px !important;
    min-width: 38px !important;
  }

  body:not(.novum-login-page).novum-auth-page .novum-brand__text {
    font-size: 14px !important;
  }
}

/* ==========================================================
   NOVUM SYSTEM V6.36 - MOBILE TOPBAR BALANCE FIX
   Ajusta solamente la cabecera autenticada en movil.
   No modifica login, sidebar, drawer ni contenido.
   ========================================================== */
@media (max-width: 767px) {
  body:not(.novum-login-page).novum-auth-page .app-topbar {
    box-sizing: border-box !important;
    width: 100% !important;
    min-width: 0 !important;
    max-width: 100% !important;
    padding: 0 10px !important;
    gap: 6px !important;
    display: flex !important;
    align-items: center !important;
    flex-wrap: nowrap !important;
    overflow: visible !important;
  }

  body:not(.novum-login-page).novum-auth-page .novum-auth-hamburger {
    width: 34px !important;
    height: 34px !important;
    min-width: 34px !important;
    max-width: 34px !important;
    flex: 0 0 34px !important;
    margin: 0 2px 0 0 !important;
  }

  body:not(.novum-login-page).novum-auth-page .novum-brand {
    flex: 1 1 auto !important;
    width: auto !important;
    min-width: 0 !important;
    max-width: none !important;
    height: 52px !important;
    padding: 0 !important;
    margin: 0 !important;
    gap: 7px !important;
    overflow: hidden !important;
  }

  body:not(.novum-login-page).novum-auth-page .novum-brand__logo {
    width: 38px !important;
    height: 38px !important;
    min-width: 38px !important;
    max-width: 38px !important;
    flex: 0 0 38px !important;
    border-radius: 3px !important;
  }

  body:not(.novum-login-page).novum-auth-page .novum-brand__text {
    min-width: 0 !important;
    max-width: 100% !important;
    overflow: hidden !important;
    text-overflow: ellipsis !important;
    white-space: nowrap !important;
    font-size: 15px !important;
    line-height: 1 !important;
    letter-spacing: .15px !important;
  }

  body:not(.novum-login-page).novum-auth-page .app-topbar__items,
  body:not(.novum-login-page).novum-auth-page .app-topbar__end {
    flex: 0 0 auto !important;
    width: auto !important;
    min-width: 0 !important;
    max-width: none !important;
    margin: 0 !important;
    padding: 0 !important;
    gap: 7px !important;
    overflow: visible !important;
    display: flex !important;
    align-items: center !important;
  }

  body:not(.novum-login-page).novum-auth-page .app-topbar__items .item-button,
  body:not(.novum-login-page).novum-auth-page .app-topbar__end .user-avatar {
    box-sizing: border-box !important;
    width: 38px !important;
    height: 38px !important;
    min-width: 38px !important;
    min-height: 38px !important;
    max-width: 38px !important;
    max-height: 38px !important;
    flex: 0 0 38px !important;
    padding: 0 !important;
    margin: 0 !important;
    border-radius: 50% !important;
    border: 1px solid rgba(255,255,255,.78) !important;
    background: rgba(255,255,255,.14) !important;
    box-shadow: none !important;
    display: inline-flex !important;
    align-items: center !important;
    justify-content: center !important;
    overflow: hidden !important;
  }

  body:not(.novum-login-page).novum-auth-page .app-topbar__items .item-button i {
    color: #fff !important;
    font-size: 19px !important;
  }

  body:not(.novum-login-page).novum-auth-page .app-topbar__end .user-avatar {
    padding: 2px !important;
    background: rgba(255,255,255,.96) !important;
  }

  body:not(.novum-login-page).novum-auth-page .app-topbar__end .user-avatar img {
    width: 100% !important;
    height: 100% !important;
    object-fit: cover !important;
    border-radius: 50% !important;
  }

  body:not(.novum-login-page).novum-auth-page .app-topbar__end .novum-redundant-close {
    display: none !important;
  }
}

@media (max-width: 430px) {
  body:not(.novum-login-page).novum-auth-page .app-topbar {
    padding-inline: 8px !important;
    gap: 5px !important;
  }

  body:not(.novum-login-page).novum-auth-page .novum-brand__text {
    font-size: 13px !important;
  }

  body:not(.novum-login-page).novum-auth-page .novum-brand__logo {
    width: 34px !important;
    height: 34px !important;
    min-width: 34px !important;
    max-width: 34px !important;
    flex-basis: 34px !important;
  }

  body:not(.novum-login-page).novum-auth-page .app-topbar__items .item-button,
  body:not(.novum-login-page).novum-auth-page .app-topbar__end .user-avatar {
    width: 36px !important;
    height: 36px !important;
    min-width: 36px !important;
    min-height: 36px !important;
    max-width: 36px !important;
    max-height: 36px !important;
    flex-basis: 36px !important;
  }
}

/* ==========================================================
   NOVUM SYSTEM V6.39 - LEARNING PATH FOCUS MODE
   Solo Learning Path. Al pulsar button[data-lp-menu="toggle"]:
   - oculta la zona izquierda
   - deja visible solo el boton de menu flotante
   - expande #learning_path_right_zone a todo el ancho disponible
   - segundo clic restaura la vista normal
   ========================================================== */
body.novum-lp-focus-mode #learning_path_main {
  width: 100% !important;
  max-width: none !important;
  margin: 0 !important;
  padding: 0 !important;
  display: block !important;
  grid-template-columns: 1fr !important;
  overflow: visible !important;
}

body.novum-lp-focus-mode #learning_path_left_zone,
body.novum-lp-focus-mode .sidebar-scorm,
body.novum-lp-focus-mode #learning_path_main > #learning_path_left_zone {
  display: none !important;
  width: 0 !important;
  min-width: 0 !important;
  max-width: 0 !important;
  flex: 0 0 0 !important;
  margin: 0 !important;
  padding: 0 !important;
  border: 0 !important;
  overflow: hidden !important;
}

body.novum-lp-focus-mode #learning_path_right_zone,
body.novum-lp-focus-mode #learning_path_main > #learning_path_right_zone {
  display: block !important;
  position: relative !important;
  width: 100% !important;
  min-width: 0 !important;
  max-width: none !important;
  flex: 1 1 100% !important;
  margin: 0 !important;
  padding-left: 0 !important;
  padding-right: 0 !important;
  transform: none !important;
  left: auto !important;
  right: auto !important;
}

/* Ocultar controles auxiliares del menu flotante; conservar solo el toggle. */
body.novum-lp-focus-mode #btn-menu-float .circle,
body.novum-lp-focus-mode #btn-menu-float .lp-menu-nav,
body.novum-lp-focus-mode #btn-menu-float [data-lp-menu="circle"],
body.novum-lp-focus-mode #btn-menu-float ul,
body.novum-lp-focus-mode #btn-menu-float li {
  display: none !important;
}

body.novum-lp-focus-mode #btn-menu-float {
  display: block !important;
  z-index: 10020 !important;
}

body.novum-lp-focus-mode #btn-menu-float button[data-lp-menu="toggle"] {
  display: inline-flex !important;
  align-items: center !important;
  justify-content: center !important;
  visibility: visible !important;
  opacity: 1 !important;
  pointer-events: auto !important;
  z-index: 10021 !important;
}

/* Evita que el control nativo de expandir/contraer interfiera con este modo. */
body.novum-lp-focus-mode #lp-view-expand-toggle {
  display: none !important;
}

@media (max-width: 767px) {
  body.novum-lp-focus-mode #learning_path_right_zone {
    width: 100vw !important;
    max-width: 100vw !important;
    margin-left: 0 !important;
    margin-right: 0 !important;
  }
}

/* ==========================================================
   NOVUM SYSTEM V6.40 - LEARNING PATH MENU RESTORE
   Al salir del modo foco se restaura tambien el menu flotante.
   No modifica login, sidebar general ni estilos moviles.
   ========================================================== */
body:not(.novum-lp-focus-mode) #btn-menu-float .circle.open,
body:not(.novum-lp-focus-mode) #btn-menu-float [data-lp-menu="circle"].open {
  display: flex !important;
  visibility: visible !important;
  opacity: 1 !important;
  pointer-events: auto !important;
}

body:not(.novum-lp-focus-mode) #btn-menu-float .circle.open .lp-menu-nav,
body:not(.novum-lp-focus-mode) #btn-menu-float [data-lp-menu="circle"].open .lp-menu-nav,
body:not(.novum-lp-focus-mode) #btn-menu-float .circle.open ul,
body:not(.novum-lp-focus-mode) #btn-menu-float [data-lp-menu="circle"].open ul,
body:not(.novum-lp-focus-mode) #btn-menu-float .circle.open li,
body:not(.novum-lp-focus-mode) #btn-menu-float [data-lp-menu="circle"].open li {
  visibility: visible !important;
  opacity: 1 !important;
  pointer-events: auto !important;
}

/* ==========================================================
   NOVUM SYSTEM - REMOVE REDUNDANT SIDEBAR CLOSE CONTROL
   Se elimina solo el control duplicado marcado por NOVUM.
   ========================================================== */
a.app-sidebar__topbar-button.novum-redundant-close,
.app-sidebar__topbar-button.novum-redundant-close {
  display: none !important;
  visibility: hidden !important;
  width: 0 !important;
  min-width: 0 !important;
  max-width: 0 !important;
  height: 0 !important;
  min-height: 0 !important;
  max-height: 0 !important;
  padding: 0 !important;
  margin: 0 !important;
  border: 0 !important;
  overflow: hidden !important;
  pointer-events: none !important;
}

/* ==========================================================
   NOVUM SYSTEM - LOGIN VERTICAL POSITION + SIDEBAR CLOSE FINAL
   ========================================================== */
@media (min-width: 769px) and (min-height: 700px) {
  body.novum-login-page .login-section {
    transform: translateY(-70px) !important;
  }
}

/* El boton X interno del app-sidebar es redundante: NOVUM usa su hamburger. */
a.app-sidebar__topbar-button,
.app-sidebar__topbar-button {
  display: none !important;
  visibility: hidden !important;
  pointer-events: none !important;
  position: absolute !important;
  width: 0 !important;
  height: 0 !important;
  min-width: 0 !important;
  min-height: 0 !important;
  max-width: 0 !important;
  max-height: 0 !important;
  padding: 0 !important;
  margin: 0 !important;
  border: 0 !important;
  overflow: hidden !important;
}

/* ==========================================================
   NOVUM SYSTEM - LOGIN MOBILE POSITION FINAL
   Compacta y centra verticalmente el login en telefonos sin
   alterar la version de escritorio.
   ========================================================== */
@media (max-width: 700px) {
  body.novum-login-page .login-section {
    min-height: 100dvh !important;
    width: min(100%, 430px) !important;
    max-width: 430px !important;
    box-sizing: border-box !important;
    padding: 14px 18px 14px !important;
    justify-content: center !important;
    transform: translateY(-24px) !important;
  }

  body.novum-login-page .login-section::before {
    width: 108px !important;
    height: 108px !important;
    margin: 0 auto 12px !important;
  }

  body.novum-login-page .login-section__title::before {
    font-size: 29px !important;
    line-height: 1.05 !important;
    margin-bottom: 4px !important;
  }

  body.novum-login-page .login-section__title::after {
    font-size: 14px !important;
    line-height: 1.25 !important;
    margin-bottom: 16px !important;
  }

  body.novum-login-page .login-section__form {
    padding: 14px 14px 13px !important;
  }

  body.novum-login-page .login-section__form .field {
    margin-bottom: 8px !important;
  }

  body.novum-login-page .login-section__form input,
  body.novum-login-page .login-section__form .p-inputtext {
    min-height: 48px !important;
    font-size: 14px !important;
  }

  body.novum-login-page .login-section__buttons {
    gap: 7px !important;
    margin-top: 9px !important;
  }

  body.novum-login-page .login-section__buttons .p-button,
  body.novum-login-page .login-section__buttons button[type="submit"] {
    min-height: 48px !important;
  }

  body.novum-login-page .login-section__buttons a[href*="registration"],
  body.novum-login-page .login-section__buttons a[href*="register"],
  body.novum-login-page .login-section__buttons a[href*="inscription"] {
    min-height: 45px !important;
  }

  body.novum-login-page .login-section::after {
    margin-top: 16px !important;
    padding-top: 0 !important;
    font-size: 11px !important;
  }
}

/* En pantallas moviles bajas evitamos que el centrado corte la parte superior. */
@media (max-width: 700px) and (max-height: 680px) {
  body.novum-login-page .login-section {
    min-height: auto !important;
    justify-content: flex-start !important;
    transform: none !important;
    padding-top: 10px !important;
  }
  body.novum-login-page .login-section::before {
    width: 92px !important;
    height: 92px !important;
    margin-bottom: 8px !important;
  }
}

/* ==========================================================
   NOVUM SYSTEM - REGISTRO MOVIL + BADGE TOPBAR PATCH V6.3
   1) En /main/auth/registration.php no mostramos el menubar
      movil publico redundante (Registro / idioma).
   2) El contador de notificaciones usa fondo oscuro para
      contrastar claramente con el rojo corporativo.
   ========================================================== */
.app-topbar__items .item-button__badge {
  background-color: #111827 !important;
  color: #ffffff !important;
  border: 1px solid rgba(255, 255, 255, 0.88) !important;
  box-shadow: 0 1px 3px rgba(0, 0, 0, 0.35) !important;
}

@media (max-width: 768px) {
  body.novum-registration-page .p-menubar.p-menubar-mobile,
  body.novum-registration-page .p-menubar[data-pc-name="menubar"] {
    display: none !important;
    visibility: hidden !important;
    pointer-events: none !important;
    height: 0 !important;
    min-height: 0 !important;
    margin: 0 !important;
    padding: 0 !important;
    border: 0 !important;
    overflow: hidden !important;
  }
}

/* ==========================================================
   NOVUM SYSTEM - FLYER CERTIFICADOS LOGIN V6.4
   Modal responsive exclusivo para la pantalla publica de login.
   ========================================================== */
body.novum-flyer-open {
  overflow: hidden !important;
  overscroll-behavior: none !important;
}

.novum-certificates-flyer {
  position: fixed !important;
  inset: 0 !important;
  z-index: 2147483000 !important;
  display: flex !important;
  align-items: center !important;
  justify-content: center !important;
  box-sizing: border-box !important;
  padding: clamp(10px, 2.2vw, 28px) !important;
  background: rgba(3, 10, 24, 0.78) !important;
  -webkit-backdrop-filter: blur(5px) !important;
  backdrop-filter: blur(5px) !important;
}

.novum-certificates-flyer__panel {
  position: relative !important;
  display: inline-flex !important;
  align-items: center !important;
  justify-content: center !important;
  max-width: min(1180px, 96vw) !important;
  max-height: calc(100dvh - clamp(20px, 4.4vw, 56px)) !important;
  border-radius: clamp(10px, 1.3vw, 18px) !important;
  overflow: hidden !important;
  background: #ffffff !important;
  box-shadow: 0 26px 80px rgba(0, 0, 0, 0.48) !important;
}

.novum-certificates-flyer__image {
  display: block !important;
  width: auto !important;
  height: auto !important;
  max-width: min(1180px, 96vw) !important;
  max-height: calc(100dvh - clamp(20px, 4.4vw, 56px)) !important;
  object-fit: contain !important;
  object-position: center !important;
  user-select: none !important;
  -webkit-user-drag: none !important;
}

.novum-certificates-flyer__close {
  position: absolute !important;
  top: 1.1% !important;
  right: 1.1% !important;
  z-index: 2 !important;
  width: clamp(42px, 5.4%, 64px) !important;
  aspect-ratio: 1 / 1 !important;
  min-width: 42px !important;
  min-height: 42px !important;
  margin: 0 !important;
  padding: 0 !important;
  border: 0 !important;
  border-radius: 9999px !important;
  background: transparent !important;
  box-shadow: none !important;
  cursor: pointer !important;
  touch-action: manipulation !important;
  -webkit-tap-highlight-color: transparent !important;
}

.novum-certificates-flyer__close:focus-visible {
  outline: 3px solid #ffffff !important;
  outline-offset: 2px !important;
  box-shadow: 0 0 0 5px rgba(7, 24, 49, 0.72) !important;
}

.novum-certificates-flyer__sr-only {
  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;
  white-space: nowrap !important;
  border: 0 !important;
}



/* Contacto directo por WhatsApp sobre el flyer. */
.novum-certificates-flyer__whatsapp {
  position: absolute !important;
  right: clamp(14px, 2.1%, 28px) !important;
  bottom: clamp(14px, 2.1%, 28px) !important;
  z-index: 4 !important;
  display: inline-flex !important;
  align-items: center !important;
  justify-content: center !important;
  gap: 9px !important;
  min-height: 48px !important;
  padding: 10px 18px !important;
  box-sizing: border-box !important;
  border: 2px solid rgba(255,255,255,.9) !important;
  border-radius: 9999px !important;
  background: #25D366 !important;
  color: #ffffff !important;
  font-size: clamp(14px, 1.25vw, 18px) !important;
  font-weight: 800 !important;
  line-height: 1 !important;
  text-decoration: none !important;
  box-shadow: 0 10px 24px rgba(0,0,0,.28) !important;
  cursor: pointer !important;
  touch-action: manipulation !important;
  -webkit-tap-highlight-color: transparent !important;
  transition: transform .15s ease, filter .15s ease, box-shadow .15s ease !important;
}

.novum-certificates-flyer__whatsapp:hover {
  color: #ffffff !important;
  filter: brightness(.96) !important;
  transform: translateY(-2px) !important;
  box-shadow: 0 13px 28px rgba(0,0,0,.34) !important;
}

.novum-certificates-flyer__whatsapp:focus-visible {
  outline: 3px solid #ffffff !important;
  outline-offset: 3px !important;
}

.novum-certificates-flyer__whatsapp-icon {
  display: block !important;
  width: 26px !important;
  height: 26px !important;
  flex: 0 0 26px !important;
}

/* Movil vertical: aprovecha casi todo el ancho y evita cualquier recorte. */
@media (max-width: 700px) {
  .novum-certificates-flyer {
    padding: 8px !important;
    align-items: center !important;
  }

  .novum-certificates-flyer__panel,
  .novum-certificates-flyer__image {
    max-width: calc(100vw - 16px) !important;
    max-height: calc(100dvh - 16px) !important;
  }

  .novum-certificates-flyer__panel {
    border-radius: 10px !important;
  }

  .novum-certificates-flyer__whatsapp {
    right: 10px !important;
    bottom: 10px !important;
    min-height: 44px !important;
    padding: 8px 12px !important;
    gap: 7px !important;
    font-size: 13px !important;
    border-width: 1px !important;
  }

  .novum-certificates-flyer__whatsapp-icon {
    width: 23px !important;
    height: 23px !important;
    flex-basis: 23px !important;
  }

  .novum-certificates-flyer__close {
    top: 0.8% !important;
    right: 0.8% !important;
    width: clamp(40px, 8.8vw, 52px) !important;
    min-width: 40px !important;
    min-height: 40px !important;
  }
}

/* Moviles en horizontal o pantallas de poca altura. */
@media (max-height: 620px) {
  .novum-certificates-flyer {
    padding: 6px !important;
  }

  .novum-certificates-flyer__panel,
  .novum-certificates-flyer__image {
    max-height: calc(100dvh - 12px) !important;
    max-width: calc(100vw - 12px) !important;
  }
}
