:root {
    /* =============================================
       PALETA "CORPORATE BLUE" — JERARQUÍA CROMÁTICA
       Basada en imagen de referencia
       =============================================
       Nivel 1 (oscuro): AppBar / Top bar
       Nivel 2 (medio): Sidebar / Navegación
       Nivel 3 (claro): Background / Fondo de página
       Nivel 4 (más claro): Card / Superficie
       Acento: Botón de acción principal
    */

    /* Tokens de capa cromática */
    --ui-appbar: #193766;
    /* Azul marino oscuro — Top Bar */
    --ui-nav: #294570;
    /* Azul royal — Sidebar */
    --ui-background: #EFF3FB;
    /* Gris-azulado suave — Fondo de página */
    --ui-card: #FBFCFF;
    /* Blanco azulado — Cards / Surfaces */

    /* Acento — Botón de acción (el azul más saturado y brillante) */
    --ui-accent: #2563EB;
    --ui-accent-hover: #1D4ED8;
    --ui-accent-light: rgba(37, 99, 235, 0.12);

    /* Texto */
    --ui-text-primary: #0F1D3A;
    /* Azul-negro oscuro para títulos/cuerpo */
    --ui-text-secondary: #4A5A7A;
    /* Gris-azulado para texto secundario */
    --ui-text-muted: #8A9BBF;
    /* Azul grisáceo muy suave, muted */
    --ui-text-on-dark: #FFFFFF;
    /* Blanco sobre AppBar / Sidebar */

    /* Bordes y separadores */
    --ui-border: #D4DEEF;
    /* Borde sutil azulado */
    --ui-border-strong: #AAB7CF;
    /* Borde con más contraste */
    --ui-divider: #E8EEF8;
    /* Separador muy suave */

    /* Semánticos (alineados al sistema Corporate Blue) */
    --ui-accent-success: #2d8a4e;
    /* Verde esmeralda profesional */
    --ui-accent-success-bg: rgba(45, 138, 78, 0.08);
    --ui-accent-warning: #e6a23c;
    /* Ámbar profesional */
    --ui-accent-warning-bg: rgba(230, 162, 60, 0.08);
    --ui-accent-danger: #C0392B;
    /* Rojo profesional */
    --ui-accent-danger-bg: rgba(192, 57, 43, 0.08);
    --ui-accent-info: #0284C7;
    /* Azul cielo profesional */
    --ui-accent-info-bg: rgba(2, 132, 199, 0.08);
    --ui-nav-bg: rgba(44, 75, 123, 0.08);
    --ui-appbar-bg: rgba(27, 58, 107, 0.08);

    /* =============================================
       ALIAS DE COMPATIBILIDAD (no cambiar nombres)
    */
    --primary-color: var(--ui-accent);
    --secondary-color: var(--ui-nav);
    --accent-color: var(--ui-accent);
    --background-color: var(--ui-background);
    --text-color: var(--ui-text-primary);

    --sidebar-bg: var(--ui-nav);
    --sidebar-text-color: var(--ui-text-on-dark);
    --sidebar-hover-bg: rgba(255, 255, 255, 0.13);
    --sidebar-active-bg: rgba(255, 255, 255, 0.22);
    --sidebar-icon-color: rgba(255, 255, 255, 0.85);

    --top-bar-bg: var(--ui-appbar);
    --top-bar-border-color: rgba(0, 0, 0, 0.12);

    --card-bg: var(--ui-card);
    --card-border-color: var(--ui-border);

    /* Sombras Neutras */
    --shadow-sm: 0 1px 3px 0 rgba(0, 0, 0, 0.06);
    --shadow-md: 0 4px 8px -1px rgba(0, 0, 0, 0.10), 0 2px 4px -1px rgba(0, 0, 0, 0.06);
    --shadow-lg: 0 8px 24px -2px rgba(0, 0, 0, 0.12);

    /* Radzen layout */
    --rz-sidebar-width: auto !important;
    --rz-layout-body-padding: 0.5rem !important;

    /* =============================================
       SINCRONIZACIÓN RADZEN — Corporate Blue
    */
    --rz-primary: #2563EB !important;
    --rz-secondary: #2c4b7b !important;
    --rz-on-primary: #ffffff !important;
    --rz-on-secondary: #ffffff !important;

    /* Radzen PanelMenu — Sidebar */
    --rz-panel-menu-item-color: #ffffff !important;
    --rz-panel-menu-item-icon-color: rgba(255, 255, 255, 0.9) !important;
    --rz-panel-menu-item-hover-background-color: rgba(255, 255, 255, 0.13) !important;
    --rz-panel-menu-item-hover-color: #ffffff !important;
    --rz-panel-menu-item-active-background-color: rgba(255, 255, 255, 0.22) !important;
    --rz-panel-menu-item-selected-background-color: rgba(255, 255, 255, 0.28) !important;
    --rz-panel-menu-item-selected-color: #ffffff !important;
    --rz-panel-menu-item-active-color: #ffffff !important;

    /* Radzen SelectBar — Contraste */
    --rz-selectbar-item-background-color: var(--ui-card) !important;
    --rz-selectbar-item-color: var(--ui-text-secondary) !important;
    --rz-selectbar-item-selected-background-color: var(--ui-accent) !important;
    --rz-selectbar-item-selected-color: #ffffff !important;

    /* Radzen ProfileMenu */
    --rz-profile-menu-item-color: var(--ui-text-primary) !important;
    --rz-profile-menu-item-icon-color: var(--ui-accent) !important;
    /* Radzen Layout general */
    --rz-layout-background-color: var(--ui-background) !important;
    --rz-header-background-color: var(--ui-appbar) !important;
    --rz-sidebar-background-color: var(--ui-nav) !important;
    --rz-body-background-color: var(--ui-background) !important;
    --rz-header-color: #ffffff !important;
    --rz-sidebar-color: #ffffff !important;

    /* Radzen Notifications — Sincronización con Branding */
    --rz-notification-success-background: var(--ui-accent-success) !important;
    --rz-notification-error-background: var(--ui-accent-danger) !important;
    --rz-notification-warning-background: var(--ui-accent-warning) !important;
    --rz-notification-info-background: var(--ui-accent-info) !important;
    
    /* Forzar blanco puro para el texto en notificaciones */
    --rz-notification-success-color: #ffffff !important;
    --rz-notification-error-color: #ffffff !important;
    --rz-notification-warning-color: #ffffff !important;
    --rz-notification-info-color: #ffffff !important;
    --rz-notification-color: #ffffff !important;
    --rz-notification-close-color: #ffffff !important;
}


body {
    background-color: var(--ui-background) !important;
    color: var(--ui-text-primary);
    font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;
}

.page {
    display: flex;
    flex-direction: column;
    height: 100vh;
    overflow: hidden;
}

.main {
    flex: 1;
    overflow-y: auto;
}

.top-row {
    background-color: var(--top-bar-bg);
    border-bottom: 1px solid var(--top-bar-border-color);
    height: 3.5rem;
    display: flex;
    align-items: center;
    z-index: 1000;
    flex: 0 0 auto;
}

.main-container {
    display: flex;
    flex: 1;
    overflow: hidden;
    position: relative;
}

.sidebar {
    background-color: var(--sidebar-bg);
    width: 0;
    max-width: 0;
    box-shadow: var(--shadow-md);
    border-right: 1px solid rgba(37, 84, 199, 0.2);
    transition: all 0.3s ease;
    height: calc(100vh - 3.5rem);
    position: fixed;
    top: 3.5rem;
    left: 0;
    z-index: 999;
    overflow-y: auto;
    overflow-x: hidden;
}

.sidebar.active {
    width: 250px;
    max-width: 250px;
}

.main-content {
    flex: 1;
    overflow-y: auto;
    padding: 1rem;
    transition: all 0.3s ease;
    margin-left: 0;
    background-color: var(--ui-background);
}

.main-content.expanded {
    margin-left: 250px;
}

.sticky-top {
    position: sticky;
    top: 0;
    z-index: 1020;
}

/* Botón hamburguesa */
.btn-outline-secondary {
    border: 1px solid rgba(255, 255, 255, 0.4);
    color: #ffffff;
    background: transparent;
}

.btn-outline-secondary:hover {
    background-color: rgba(255, 255, 255, 0.15);
    border-color: rgba(255, 255, 255, 0.6);
    color: #ffffff;
}

/* Iconos bootstrap */
.bi-list::before,
.bi-x-lg::before {
    display: inline-block;
    min-width: 1.5em;
    text-align: center;
    font-family: "bootstrap-icons" !important;
}

.btn-outline-secondary .bi {
    font-size: 1.25rem;
    line-height: 1;
    vertical-align: middle;
}

/* Nav items */
.nav-item .nav-link {
    color: var(--sidebar-text-color);
    border-radius: 0.25rem;
    margin: 0.25rem 0;
    transition: background-color 0.2s, color 0.2s;
}

.nav-item .nav-link:hover {
    background-color: var(--sidebar-hover-bg);
    color: #ffffff;
}

.nav-item .nav-link.active {
    background-color: var(--sidebar-active-bg);
    color: #ffffff;
    font-weight: 600;
}

.nav-item .nav-link .bi {
    color: var(--sidebar-icon-color);
    margin-right: 0.5rem;
}

.nav-item .nav-link:hover .bi,
.nav-item .nav-link.active .bi {
    color: #ffffff;
}

/* Cards */
.card {
    background-color: var(--ui-card) !important;
    border: 1px solid var(--ui-border-strong) !important;
    border-radius: 0.75rem;
    box-shadow: var(--shadow-md) !important;
}

/* Botones primarios */
.btn-primary {
    background-color: var(--ui-accent);
    border-color: var(--ui-accent);
    color: #ffffff;
}

.btn-primary:hover {
    background-color: var(--ui-accent-hover);
    border-color: var(--ui-accent-hover);
}

.btn-secondary {
    background-color: var(--ui-nav);
    border-color: var(--ui-nav);
    color: #ffffff;
}

/* =============================================
   FIX DE CONTRASTE — ELEMENTOS RADZEN
   ============================================= */

/* Dropdown de Perfil (Header) */
.rz-profile-menu .rz-navigation-item-link {
    color: var(--ui-text-primary) !important;
}

.rz-profile-menu .rz-navigation-item-icon {
    color: var(--ui-accent) !important;
}

/* Scheduler SelectBar (Día, Semana, Mes) */
.rz-selectbar-item {
    background-color: #f8f9fa !important;
    color: var(--ui-text-secondary) !important;
}

.rz-selectbar-item.rz-state-selected {
    background-color: var(--ui-accent) !important;
    color: #ffffff !important;
}

.rz-selectbar-item i,
.rz-selectbar-item .rz-button-text {
    color: inherit !important;
}

/* Forzar que los iconos no hereden el blanco del header */
.rz-profile-menu-item i,
.rz-profile-menu-item .rz-navigation-item-icon {
    color: var(--ui-accent) !important;
}

.rz-profile-menu-item .rz-navigation-item-text {
    color: var(--ui-text-primary) !important;
}

/* Fix específico para el botón "Iniciar Sesión" si aparece como link en el header */
.rz-header a,
.rz-header .rz-button-text {
    /* Por defecto en el header todo es blanco para el contraste con azul oscuro */
    color: #ffffff !important;
}

/* Pero dentro de los menús desplegables (Popups) y el ProfileMenu, debe ser oscuro */
.rz-menu-popup .rz-navigation-item-text,
.rz-profile-menu .rz-navigation-item-text,
.rz-profile-menu-item .rz-navigation-item-text {
    color: var(--ui-text-primary) !important;
}

.rz-menu-popup .rz-navigation-item-icon,
.rz-profile-menu .rz-navigation-item-icon,
.rz-profile-menu-item .rz-navigation-item-icon {
    color: var(--ui-accent) !important;
}

/* Botones de navegación del Scheduler (Día/Semana/Mes) iconos */
.rz-selectbar-item i {
    color: var(--ui-text-secondary) !important;
}

.rz-selectbar-item.rz-state-selected i {
    color: #ffffff !important;
}

/* =============================================
   NOTIFICACIONES (TOASTS) — Posicionamiento y Estilo
   ============================================= */
.rz-notification {
    position: fixed !important;
    top: 1.5rem !important;
    left: 0 !important;
    right: 0 !important;
    width: 100% !important;
    display: flex !important;
    flex-direction: column !important;
    align-items: center !important;
    pointer-events: none !important; /* Permite clicks a través del contenedor */
    z-index: 10000 !important;
}

.rz-notification-item-wrapper {
    pointer-events: auto !important; /* Activa clicks solo en la alerta */
    margin-bottom: 0.75rem !important;
    box-shadow: var(--shadow-lg) !important;
    border-radius: 0.5rem !important;
    border: none !important;
    min-width: 300px !important;
    max-width: 500px !important;
}

/* Forzar fondos sólidos para que el texto blanco sea legible */
.rz-notification-item-wrapper.rz-notification-success {
    background-color: var(--ui-accent-success) !important;
}
.rz-notification-item-wrapper.rz-notification-error {
    background-color: var(--ui-accent-danger) !important;
}
.rz-notification-item-wrapper.rz-notification-warning {
    background-color: var(--ui-accent-warning) !important;
}
.rz-notification-item-wrapper.rz-notification-info {
    background-color: var(--ui-accent-info) !important;
}

/* Forzar contraste de texto e iconos en todos los elementos internos */
.rz-notification-item-wrapper .rz-notification-title,
.rz-notification-item-wrapper .rz-notification-message,
.rz-notification-item-wrapper .rz-notification-content,
.rz-notification-item-wrapper .rz-button-text,
.rz-notification-item-wrapper i, /* Iconos de fuente */
.rz-notification-item-wrapper .rz-notification-icon, /* Icono de estado de Radzen */
.rz-notification-item-wrapper .rz-notification-close {
    color: #ffffff !important;
    opacity: 1 !important;
}

.rz-notification-item-wrapper .rz-notification-title {
    font-weight: 700 !important;
    font-size: 1.1rem !important;
    margin-bottom: 0.15rem !important;
}

.rz-notification-item-wrapper .rz-notification-message {
    font-size: 0.95rem !important;
    line-height: 1.4 !important;
}


