/* ================================================
   theme-shell.css (AdminSite) — Clean SaaS skin
   Layer cuối, đè theme Viho (style.css) + new-theme.css.
   Token đến từ _variables.css.
   ================================================ */

@import url('https://fonts.googleapis.com/css2?family=Be+Vietnam+Pro:wght@400;500;600;700;800&display=swap');

body,
button, input, select, textarea,
h1, h2, h3, h4, h5, h6,
.f-w-600, .f-14, .f-16 {
    font-family: 'Be Vietnam Pro', sans-serif !important;
}

body { background: var(--bg-body) !important; color: var(--text-main); }
.page-wrapper .page-body-wrapper .page-body,
.page-body-wrapper { background: transparent !important; }

body,
.page-main-header,
.page-wrapper.compact-wrapper .page-body-wrapper header.main-nav,
.card, .modal-content, .dropdown-menu {
    transition: background-color .2s ease, color .2s ease, border-color .2s ease;
}

.ph, .ph-fill, [class^="ph-"], [class*=" ph-"] { line-height: 1; }

@keyframes theme-reveal-up {
    from { opacity: 0; transform: translateY(12px); }
    to   { opacity: 1; transform: translateY(0); }
}
.xp-reveal { opacity: 0; animation: theme-reveal-up .4s ease forwards; }

@media (prefers-reduced-motion: reduce) {
    *, *::before, *::after { animation: none !important; transition: none !important; }
    .xp-reveal { opacity: 1 !important; }
}

/* ================================================
   SHELL — SIDEBAR
   ================================================ */
.page-wrapper.compact-wrapper .page-body-wrapper header.main-nav {
    background: var(--white) !important;
    border-right: 1px solid var(--border) !important;
    box-shadow: none !important;
}
.main-nav .sidebar-user img.rounded-circle {
    border: 2px solid var(--border) !important;
    background: var(--bg-body);
    padding: 0;
}
.main-nav .sidebar-user h6 { color: var(--text-main) !important; font-weight: 700; }
.main-nav .sidebar-user p { color: var(--text-muted) !important; }
.main-nav .sidebar-user .badge-bottom {
    position: relative !important;
    top: auto !important;
    bottom: auto !important;
    width: auto !important;
    margin-top: -16px !important;
    margin-bottom: 4px !important;
    text-align: center;
    z-index: 2;
}
.main-nav .sidebar-user .badge-primary,
.main-nav .sidebar-user .badge-bottom .badge {
    display: inline-block !important;
    width: auto !important;
    padding: 3px 12px !important;
    background: var(--primary) !important; color: #fff !important;
    border: none; border-radius: var(--radius-pill) !important;
    font-weight: 600; font-size: 11px; line-height: 1.4;
}
.main-nav .sidebar-user .setting-primary i { color: var(--primary) !important; }

.page-wrapper.compact-wrapper .page-body-wrapper header.main-nav .sidebar-main-title h6 {
    color: var(--text-muted) !important;
    font-weight: 700 !important; text-transform: uppercase; letter-spacing: .5px;
}
.sidebar-khoa-title h6 { color: var(--text-muted) !important; }

.page-wrapper.compact-wrapper .page-body-wrapper header.main-nav .main-navbar .nav-menu > li > a {
    border-radius: var(--radius-sm) !important;
    color: var(--text-main) !important;
    font-weight: 500 !important;
    border: 1px solid transparent !important;
    margin: 2px 0;
    display: flex !important;
    align-items: center;
    transition: background .15s ease, color .15s ease;
}
.page-wrapper.compact-wrapper .page-body-wrapper header.main-nav:not(.close_icon) .main-navbar .nav-menu > li > a {
    padding: 8px 12px !important;
}
.page-wrapper.compact-wrapper .page-body-wrapper header.main-nav .main-navbar .nav-menu > li > a > i:not(.collapse-icon):not(.fa-angle-down):first-child,
.page-wrapper.compact-wrapper .page-body-wrapper header.main-nav .main-navbar .nav-menu > li > a > [class*="ph-"]:not(.collapse-icon) {
    width: 32px !important; height: 32px !important;
    min-width: 32px !important;
    box-sizing: border-box !important;
    display: inline-flex !important; align-items: center; justify-content: center;
    flex-shrink: 0;
    border-radius: var(--radius-sm);
    background: transparent !important;
    color: var(--text-muted) !important;
    font-size: 18px !important;
    line-height: 1 !important;
    margin-right: 10px !important; vertical-align: middle;
    transition: background .15s ease, color .15s ease;
}
.page-wrapper.compact-wrapper .page-body-wrapper header.main-nav .main-navbar .nav-menu > li > a:hover {
    background: var(--primary-light) !important;
    border-color: transparent !important;
    color: var(--primary) !important;
}
.page-wrapper.compact-wrapper .page-body-wrapper header.main-nav .main-navbar .nav-menu > li > a:hover > i:not(.collapse-icon):not(.fa-angle-down):first-child,
.page-wrapper.compact-wrapper .page-body-wrapper header.main-nav .main-navbar .nav-menu > li > a:hover > [class*="ph-"]:not(.collapse-icon) {
    color: var(--primary) !important;
}
.page-wrapper.compact-wrapper .page-body-wrapper header.main-nav .main-navbar .nav-menu > li > a.active,
.main-nav .main-navbar .nav-menu > li > a.active {
    background: var(--primary-light) !important;
    color: var(--primary) !important;
    border: 1px solid transparent !important;
    box-shadow: none !important;
    font-weight: 600 !important;
}
.page-wrapper.compact-wrapper .page-body-wrapper header.main-nav .main-navbar .nav-menu > li > a.active > i:not(.collapse-icon):not(.fa-angle-down):first-child,
.page-wrapper.compact-wrapper .page-body-wrapper header.main-nav .main-navbar .nav-menu > li > a.active > [class*="ph-"]:not(.collapse-icon) {
    background: transparent !important;
    color: var(--primary) !important;
}
.page-wrapper.compact-wrapper .page-body-wrapper header.main-nav .main-navbar .nav-menu > li > a.active .nav-label,
.page-wrapper.compact-wrapper .page-body-wrapper header.main-nav .main-navbar .nav-menu > li > a.active .collapse-icon {
    color: var(--primary) !important;
}

.page-wrapper.compact-wrapper .page-body-wrapper header.main-nav .main-navbar .nav-menu > li .nav-submenu li a {
    color: var(--text-muted) !important; border-radius: var(--radius-sm) !important;
}
.page-wrapper.compact-wrapper .page-body-wrapper header.main-nav .main-navbar .nav-menu > li .nav-submenu li a:hover {
    color: var(--primary) !important; background: var(--primary-light) !important;
}
.page-wrapper.compact-wrapper .page-body-wrapper header.main-nav .main-navbar .nav-menu > li .nav-submenu li a:after {
    background-color: var(--border) !important;
}

.main-nav .according-menu i,
.main-nav .nav-menu .dropdown a .sub-arrow i {
    font-family: "Phosphor" !important;
    color: var(--text-muted);
    font-size: 16px;
    transition: transform .2s ease, color .2s ease;
}
.main-nav .according-menu i::before,
.main-nav .nav-menu .dropdown a .sub-arrow i::before { content: "\e13a" !important; }
.main-nav .nav-menu > li > a:hover .according-menu i { color: var(--primary); }
.main-nav .nav-menu .dropdown > a.active .according-menu i {
    transform: rotate(90deg);
    color: var(--primary);
}

/* ================================================
   SHELL — TOPBAR
   ================================================ */
.page-main-header {
    background: var(--white) !important;
    border-bottom: 1px solid var(--border) !important;
    box-shadow: none !important;
    min-height: 56px !important;
    height: 56px !important;
}
.page-main-header .main-header-right { min-height: 56px; }
.page-main-header .main-header-right > div { height: auto; }

.page-main-header .left-menu-header .search-form,
.page-main-header .left-menu-header .form-inline.search-form,
.page-main-header .mobile-search { display: none !important; }

.page-main-header .main-header-right .main-header-left .logo-wrapper { display: flex !important; align-items: center; }
.page-main-header .main-header-right .main-header-left .dark-logo-wrapper { display: none !important; }
.page-main-header .logo-wrapper h4,
.page-main-header .main-header-left h4 { color: var(--text-main) !important; }

.page-main-header .main-header-left .logo-wrapper img,
.page-main-header .main-header-left .dark-logo-wrapper img {
    background: transparent !important;
    padding: 0 !important;
    border: 0 !important;
    border-radius: 0 !important;
    outline: 0 !important;
    box-shadow: none !important;
    max-height: 32px;
    width: auto !important;
    height: auto !important;
    object-fit: contain;
}
.page-main-header .logo-wrapper,
.page-main-header .logo-wrapper a,
.page-main-header .main-header-left .logo-wrapper {
    border: 0 !important;
    border-right: 0 !important;
    outline: 0 !important;
    box-shadow: none !important;
    background: transparent !important;
}

#sidebar-toggle {
    width: 40px; height: 40px;
    display: inline-flex !important;
    align-items: center; justify-content: center;
    border-radius: var(--radius-sm) !important;
    background: var(--bg-body) !important;
    border: 1px solid var(--border) !important;
    box-shadow: none !important;
    color: var(--text-main) !important;
    font-size: 20px !important;
    cursor: pointer;
    transition: background .15s ease;
}
#sidebar-toggle .toggle-sidebar { line-height: 1; }
#sidebar-toggle:hover { background: var(--primary-light) !important; color: var(--primary) !important; }

.page-main-header .nav-right > ul.nav-menus > li { display: flex; align-items: center; }
.page-main-header .nav-right > ul.nav-menus > li > a,
.page-main-header .nav-right .notification-box,
.page-main-header .nav-right .mode {
    width: 40px !important; height: 40px !important;
    min-width: 40px; min-height: 40px;
    box-sizing: border-box !important;
    padding: 0 !important;
    flex: 0 0 40px;
    display: flex !important; align-items: center; justify-content: center;
    border-radius: 50% !important;
    background: var(--bg-body) !important;
    border: 1px solid var(--border) !important;
    box-shadow: none;
    color: var(--text-main) !important;
    cursor: pointer;
    transition: background .15s ease, color .15s ease;
}
.page-main-header .nav-right .btn-primary-light:has(.notification-box) > div {
    width: auto !important; height: auto !important;
    display: contents !important;
}
.page-main-header .nav-right > ul.nav-menus > li > a i.ph,
.page-main-header .nav-right .notification-box i.ph,
.page-main-header .nav-right .notification-box i.fa,
.page-main-header .nav-right .mode i.ph { font-size: 18px; color: var(--text-main) !important; }
.page-main-header .nav-right > ul.nav-menus > li > a:hover,
.page-main-header .nav-right .notification-box:hover,
.page-main-header .nav-right .mode:hover {
    background: var(--primary-light) !important;
    color: var(--primary) !important;
}
.page-main-header .nav-right > ul.nav-menus > li > a:hover i.ph,
.page-main-header .nav-right .notification-box:hover i.ph,
.page-main-header .nav-right .mode:hover i.ph { color: var(--primary) !important; }
.page-main-header .nav-right .notification-box .dot-animated,
.page-main-header .nav-right .notification-box .notif-badge {
    background: var(--danger) !important; box-shadow: 0 0 0 1px var(--white);
}

.page-main-header .nav-right li.dropdown .btn-primary-light:has(.notification-box),
.page-main-header .nav-right li .btn-primary-light:has(.notification-box) {
    background: transparent !important;
    border: 0 !important;
    box-shadow: none !important;
    padding: 0 !important;
}

.page-main-header .nav-right .btn-primary-light {
    background: var(--bg-body) !important;
    color: var(--text-main) !important;
    font-weight: 500 !important;
    padding: 5px 12px !important;
    border-radius: var(--radius-pill) !important;
    border: 1px solid var(--border) !important;
    box-shadow: none;
    transition: background .15s ease;
}
.page-main-header .nav-right .btn-primary-light,
.page-main-header .nav-right .btn-primary-light span,
.page-main-header .nav-right .btn-primary-light a,
.page-main-header .nav-right .btn-primary-light a i.ph,
.page-main-header .nav-right .btn-primary-light i { color: var(--text-main) !important; }
.page-main-header .nav-right .btn-primary-light:hover { background: var(--primary-light) !important; }

.footer { background: transparent !important; box-shadow: none !important; }
.footer .footer-copyright,
.footer .footer-copyright small,
.footer .footer-copyright p { color: var(--text-muted) !important; font-weight: 500; }

/* ================================================================
   BUTTON SYSTEM — Bootstrap .btn variants → Clean SaaS
   ================================================================ */
.btn {
    border-radius: var(--radius-sm) !important;
    font-weight: 600 !important;
    font-size: 13px !important;
    padding: 7px 16px !important;
    border-width: 1px !important;
    display: inline-flex !important;
    align-items: center !important;
    gap: 6px !important;
    white-space: nowrap !important;
    transition: background .15s ease, border-color .15s ease, color .15s ease !important;
    text-decoration: none !important;
    line-height: 1.2 !important;
    box-shadow: none !important;
    /* Fallback text color for buttons with no recognized color variant
       (e.g. legacy ".btn-default" used by the shared confirm-toast partial) —
       otherwise Bootstrap's own dark default btn text color persists unchanged
       into dark mode and goes invisible on a dark toast/card background.
       Named variants below override this via higher selector specificity. */
    color: var(--text-main);
}
.btn:hover { box-shadow: none !important; }
.btn-sm { font-size: 12px !important; padding: 5px 12px !important; }
.btn-xs, .btn-rounded.btn-xs { font-size: 11px !important; padding: 3px 10px !important; }

.btn-primary {
    background: var(--primary) !important; color: #fff !important;
    border-color: var(--primary) !important;
}
.btn-primary:hover, .btn-primary:focus {
    background: var(--primary-hover) !important; color: #fff !important;
    border-color: var(--primary-hover) !important;
}

.btn-secondary, .btn-light {
    background: var(--white) !important; color: var(--text-main) !important;
    border-color: var(--border) !important;
}
.btn-secondary:hover, .btn-secondary:focus,
.btn-light:hover, .btn-light:focus {
    background: var(--bg-body) !important; color: var(--text-main) !important;
}

.btn-warning {
    background: var(--accent-light) !important; color: var(--warning-text) !important;
    border-color: var(--accent) !important;
}
.btn-warning:hover, .btn-warning:focus { background: var(--accent) !important; color: #fff !important; }

.btn-success {
    background: var(--success-light) !important; color: var(--success-text) !important;
    border-color: var(--success) !important;
}
.btn-success:hover, .btn-success:focus { background: var(--success) !important; color: #fff !important; }

.btn-danger {
    background: var(--danger-light) !important; color: var(--danger-text) !important;
    border-color: var(--danger) !important;
}
.btn-danger:hover, .btn-danger:focus { background: var(--danger) !important; color: #fff !important; }

.btn-info {
    background: var(--info-light) !important; color: var(--info-text) !important;
    border-color: var(--info) !important;
}
.btn-info:hover, .btn-info:focus { background: var(--info) !important; color: #fff !important; }

.btn-primary-light {
    background: var(--primary-light) !important; color: var(--primary) !important;
    border-color: transparent !important;
}
.btn-primary-light:hover { background: var(--primary) !important; color: #fff !important; }

/* ================================================================
   CARDS
   ================================================================ */
.card {
    border: 1px solid var(--border) !important;
    border-radius: var(--radius-md) !important;
    box-shadow: var(--shadow-sm) !important;
    background: var(--white) !important;
}
.card-header {
    border-radius: var(--radius-md) var(--radius-md) 0 0 !important;
}
/* Bootstrap's bg-primary/bg-success/etc utility on a card-header is a widely-used
   pattern in this app (see SystemStyleCard.CardHeader = "card-header bg-primary...")
   paired with a vendor rule (style.css) that whitens the header's h4/h5/span text.
   Only flatten card-header to the neutral Clean SaaS surface when no such color
   utility is present — otherwise the colored background is stripped but the text
   stays forced white, making the title invisible.

   Chừa thêm .acc-module-header / .acc-app-header (bigbang-accordion.css): hai class đó
   tự đặt nền var(--primary) / var(--primary-light) kèm chữ #fff / var(--primary), nhưng
   selector của chúng chỉ (0,2,0) nên bị luật này (0,7,0) đè -> nền phẳng trắng mà chữ
   vẫn trắng = mất chữ ở theme sáng. */
.card-header:not(.bg-primary):not(.bg-secondary):not(.bg-success):not(.bg-danger):not(.bg-warning):not(.bg-info):not(.acc-module-header):not(.acc-app-header) {
    background: var(--white) !important;
    border-bottom: 1px solid var(--border) !important;
}

/* ================================================================
   FORMS
   ================================================================ */
.form-control, .form-select,
.input-group-text,
.select2-container--default .select2-selection {
    border: 1px solid var(--border) !important;
    border-radius: var(--radius-sm) !important;
    background: var(--white) !important;
    color: var(--text-main) !important;
}
.form-control:focus, .form-select:focus,
.select2-container--default.select2-container--focus .select2-selection {
    border-color: var(--primary) !important;
    box-shadow: 0 0 0 3px var(--primary-light) !important;
    outline: none !important;
}
.form-control::placeholder { color: var(--text-muted) !important; }

/* ================================================================
   TABLES
   ================================================================ */
table.dataTable thead th,
.table thead th {
    background: var(--bg-body) !important;
    color: var(--text-muted) !important;
    border-color: var(--border) !important;
    font-weight: 600 !important;
}
.table > :not(caption) > * > * { border-color: var(--border) !important; }
table.dataTable tbody tr:hover,
.table tbody tr:hover { background: var(--primary-light) !important; }

/* ================================================================
   MODALS / DROPDOWNS / TOASTS
   ================================================================ */
/* .toast here is Bootstrap's own component (confirm-toast partial, #confirmationToast/#confirmationDynamic
   in _Layout.cshtml) — toastr (showSuccess/showError/showWarning) reuses the SAME class name "toast" on
   its notification divs under #toast-container, so excluding that container keeps toastr's own
   success/error/warning/info background colors (custom_style.css) from being wiped out by this
   neutral-surface !important rule. */
.modal-content, .dropdown-menu, .toast:not(#toast-container *) {
    background: var(--white) !important;
    border: 1px solid var(--border) !important;
    border-radius: var(--radius-md) !important;
    box-shadow: var(--shadow-md) !important;
    color: var(--text-main) !important;
}
.dropdown-item { color: var(--text-main) !important; }
.dropdown-item:hover, .dropdown-item:focus { background: var(--primary-light) !important; color: var(--primary) !important; }

/* ================================================================
   BADGES — keep pill shape here only
   ================================================================ */
.badge { border-radius: var(--radius-pill) !important; font-weight: 600; }
