@font-face {
    font-family: "Inter Tight";
    src: url("assets/fonts/inter-tight/InterTight-VariableFont_wght.ttf") format("truetype");
    font-weight: 100 900;
    font-style: normal;
    font-display: swap;
}

.scholarship-budget-filter .module-list-head{align-items:center}.scholarship-budget-filter .form-label{font-size:12px;font-weight:700;color:#475569}.scholarship-calculated-state{display:inline-flex;align-items:center;gap:5px;border-radius:999px;padding:5px 9px;background:#DCFCE7;color:#166534;font-size:12px;font-weight:700}.scholarship-projection-panel .table-responsive{border:0}.scholarship-projection-panel .table thead th{background:#F8FAFC;color:#334155;font-size:12px;vertical-align:middle}.scholarship-projection-panel .projection-count{min-width:94px}@media(max-width:767px){.scholarship-budget-filter .module-list-head{align-items:flex-start}.scholarship-projection-panel .table-responsive{font-size:12px}}

.scholarship-overview-panel{overflow:hidden}.scholarship-overview-note{display:flex;align-items:center;gap:8px;padding:10px 16px;background:#EFF6FF;border-bottom:1px solid #BFDBFE;color:#1E3A8A;font-size:13px}.scholarship-overview-note i{font-size:18px}.scholarship-overview-kpis{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:0;border-bottom:1px solid #E7EBF0}.scholarship-overview-kpi{padding:16px;border-right:1px solid #E7EBF0}.scholarship-overview-kpi:last-child{border-right:0}.scholarship-overview-kpi span,.scholarship-overview-kpi small{display:block;color:#64748B;font-size:12px}.scholarship-overview-kpi strong{display:block;margin:3px 0;color:#0F172A;font-size:24px;line-height:1.2}.scholarship-status-badge{display:inline-flex;align-items:center;border-radius:999px;padding:4px 8px;background:#F1F5F9;color:#475569;font-size:12px;font-weight:700}.scholarship-status-approved{background:#DCFCE7;color:#166534}.scholarship-status-paid{background:#DBEAFE;color:#1D4ED8}.scholarship-overview-summary .table td{vertical-align:middle}@media(max-width:767px){.scholarship-overview-kpis{grid-template-columns:1fr}.scholarship-overview-kpi{border-right:0;border-bottom:1px solid #E7EBF0}.scholarship-overview-kpi:last-child{border-bottom:0}}
@font-face {
    font-family: "Inter Tight";
    src: url("assets/fonts/inter-tight/InterTight-Italic-VariableFont_wght.ttf") format("truetype");
    font-weight: 100 900;
    font-style: italic;
    font-display: swap;
}

.dashboard-filter-actions{display:flex;gap:8px;align-items:end}.dashboard-context-details{border:1px solid #E3E8F2;border-radius:8px;background:#fff;overflow:hidden}.dashboard-context-details summary{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:12px 16px;cursor:pointer;color:#334155;font-weight:700;font-size:13px;list-style:none}.dashboard-context-details summary::-webkit-details-marker{display:none}.dashboard-context-details summary span{display:flex;align-items:center;gap:7px}.dashboard-context-details summary i{font-size:18px;color:#2563EB}.dashboard-context-details summary small{color:#64748B;font-size:12px;font-weight:500}.dashboard-context-details summary:after{content:'⌄';color:#64748B;font-size:16px}.dashboard-context-details[open] summary{border-bottom:1px solid #E3E8F2;background:#F8FAFC}.dashboard-context-details[open] summary:after{transform:rotate(180deg)}.dashboard-context-body{padding:0 16px 16px}@media(max-width:640px){.dashboard-filter-actions{display:grid;grid-template-columns:1fr 1fr}.dashboard-filter-actions .btn{width:100%}.dashboard-context-details summary small{display:none}}

.admission-overview-panel{overflow:hidden}.admission-overview-filter .admission-year-form{min-width:0;width:min(360px,100%)}.admission-overview-filter .form-label{font-size:12px;font-weight:700;color:#475569}.admission-overview-kpi{min-height:128px;display:flex;flex-direction:column;justify-content:center}.admission-overview-kpi .stat-label{font-size:12px;color:#64748B}.admission-overview-kpi .stat-value{margin-top:4px;font-size:clamp(25px,2.1vw,34px)}.admission-statistics-empty{display:flex;align-items:flex-start;gap:10px;padding:13px 15px;border:1px solid #bfdbfe;border-radius:10px;background:#eff6ff;color:#1e3a5f}.admission-statistics-empty>i{flex:0 0 auto;margin-top:1px;color:#2563eb;font-size:21px}.admission-statistics-empty div{display:flex;min-width:0;flex-direction:column;gap:2px}.admission-statistics-empty strong{font-size:13px}.admission-statistics-empty span{color:#475569;font-size:12px;line-height:1.55}.admission-statistics-panel{overflow:hidden}.admission-statistics-panel .panel-heading{padding:15px 16px 10px;margin:0}.admission-statistics-panel .table-responsive{margin:0;border:0;border-radius:0}.admission-statistics-panel thead th{background:#f8fafc;color:#475569;font-size:12px;white-space:nowrap}.admission-statistics-panel tbody td,.admission-statistics-panel tfoot th{vertical-align:middle}.admission-statistics-panel tfoot th{border-top:2px solid #cbd5e1;background:#f8fafc;color:#0f172a}.admission-stat-number{display:inline-block;min-width:74px;color:#0f172a;font-variant-numeric:tabular-nums;font-weight:750;white-space:nowrap}.admission-stat-rate{display:inline-block;min-width:64px;color:#475569;font-variant-numeric:tabular-nums;white-space:nowrap}.admission-target-panel{overflow:hidden}.admission-target-panel .table td{vertical-align:middle}@media(max-width:575px){.admission-overview-filter .admission-year-form{display:block}.admission-overview-filter .form-label{display:block;margin-bottom:6px!important}.admission-overview-kpi{min-height:104px}.admission-statistics-empty{padding:12px}.admission-stat-number{min-width:66px}}

.admission-target-modal .modal-dialog{max-width:920px}.admission-target-modal .modal-header{padding:14px 20px;border-bottom:1px solid #e7ebf0}.admission-target-modal .modal-title{font-size:18px}.admission-target-modal .modal-body{min-height:460px;background:#f8fafc}.admission-target-frame-loading{display:flex;align-items:center;justify-content:center;gap:8px;min-height:460px;color:#64748b}.admission-target-form-frame{display:block;width:100%;height:680px;border:0;background:#fff}.admission-target-form-panel{padding:0!important;overflow:hidden}.admission-target-form-intro{display:flex;align-items:flex-start;justify-content:space-between;gap:20px;padding:20px 22px 16px;border-bottom:1px solid #e7ebf0;background:linear-gradient(120deg,#fff7f6,#fff)}.admission-target-form-kicker{display:block;margin-bottom:3px;color:#c81e23;font-size:12px;font-weight:750;text-transform:uppercase;letter-spacing:.04em}.admission-target-form-intro h2{margin:0;color:#1f2937;font-size:20px;font-weight:750}.admission-target-form-intro p{margin:4px 0 0;color:#64748b;font-size:13px}.admission-target-steps{display:flex;align-items:center;gap:7px;flex:0 0 auto;color:#64748b;font-size:12px;font-weight:650}.admission-target-steps span{display:inline-flex;align-items:center;gap:5px;white-space:nowrap}.admission-target-steps b{display:inline-flex;align-items:center;justify-content:center;width:20px;height:20px;border-radius:50%;background:#fee2e2;color:#c81e23}.admission-target-steps i{width:18px;height:1px;background:#cbd5e1}.admission-target-form{padding:20px 22px 22px}.admission-target-form .form-label{font-weight:700;color:#334155}.admission-target-program-count{color:#64748b;font-size:12px;white-space:nowrap}.admission-target-form .form-select:disabled{background:#f1f5f9;color:#94a3b8;cursor:not-allowed}.admission-target-form-actions{padding-top:4px;border-top:1px solid #eef2f7;margin-top:2px;padding-top:16px}.admission-target-save-result{display:flex;flex-direction:column;align-items:center;justify-content:center;min-height:180px;gap:7px;color:#334155;text-align:center}.admission-target-save-icon{display:inline-flex;align-items:center;justify-content:center;width:42px;height:42px;border-radius:50%;background:#dcfce7;color:#16a34a;font-size:27px;font-weight:800}.admission-target-save-result strong{font-size:17px}.admission-target-save-result span:not(.admission-target-save-icon){color:#64748b;font-size:13px}@media(max-width:640px){.admission-target-modal .modal-dialog{margin:.5rem}.admission-target-form-frame{height:760px}.admission-target-form-intro{padding:16px}.admission-target-steps{display:none}.admission-target-form{padding:16px}.admission-target-form-actions .btn{flex:1}.admission-target-modal .modal-body{min-height:560px}.admission-target-frame-loading{min-height:560px}}

.admission-combination-overview{overflow:hidden}.admission-combination-summary{display:flex;align-items:center;gap:8px 18px;flex-wrap:wrap;padding:10px 16px;border-top:1px solid #E7EBF0;background:#FAFCFF;color:#64748B;font-size:12px}.admission-combination-summary span{position:relative}.admission-combination-summary span+span:before{content:'';position:absolute;left:-10px;top:50%;width:3px;height:3px;border-radius:50%;background:#94A3B8}.admission-combination-summary strong{color:#334155}.admission-combination-panel .tab-content{padding:16px!important;background:#fff}.admission-combination-tabs{gap:2px}.admission-combination-tabs .nav-link{border-radius:7px 7px 0 0;font-weight:650;color:#64748B}.admission-combination-tabs .nav-link.active{color:#1D4ED8;background:#EFF6FF;border-color:#BFDBFE #BFDBFE #fff}@media(max-width:575px){.admission-combination-summary{gap:7px 14px}.admission-combination-summary span+span:before{display:none}.admission-combination-panel .tab-content{padding:12px!important}}
.admission-combination-panel .dataTables_wrapper{padding:0 0 12px}.admission-combination-panel .dataTables_wrapper .dataTables_length,.admission-combination-panel .dataTables_wrapper .dataTables_filter{margin:12px 14px}.admission-combination-panel .dataTables_wrapper .dataTables_length label{display:inline-flex;align-items:center;gap:7px;white-space:nowrap}.admission-combination-panel .dataTables_wrapper .dataTables_length select{width:auto;min-width:72px;margin:0!important}.admission-combination-panel .dataTables_wrapper .dataTables_filter input{margin-left:7px;min-width:190px}.admission-combination-panel .dataTables_wrapper .dataTables_info{padding:10px 14px 0}.admission-combination-panel .dataTables_wrapper .dataTables_paginate{padding:8px 14px 0}@media(max-width:767px){.admission-combination-panel .dataTables_wrapper .dataTables_length,.admission-combination-panel .dataTables_wrapper .dataTables_filter{float:none!important;margin:10px 12px;width:auto}.admission-combination-panel .dataTables_wrapper .dataTables_filter input{min-width:0;width:min(100%,260px)}}
.admission-combination-panel .program-code-edit,.admission-combination-panel .program-code-delete,.admission-combination-panel .subject-edit,.admission-combination-panel .subject-delete,.admission-combination-panel .program-combo-edit,.admission-combination-panel .program-combo-delete,.admission-combination-panel .score-delete,.admission-combination-panel .combo-edit,.admission-combination-panel .combo-delete{display:inline-flex;align-items:center;justify-content:center;width:26px;height:26px!important;min-height:26px!important;max-height:26px!important;padding:0;line-height:1}.admission-combination-panel .program-code-edit i,.admission-combination-panel .program-code-delete i,.admission-combination-panel .subject-edit i,.admission-combination-panel .subject-delete i,.admission-combination-panel .program-combo-edit i,.admission-combination-panel .program-combo-delete i,.admission-combination-panel .score-delete i,.admission-combination-panel .combo-edit i,.admission-combination-panel .combo-delete i{font-size:13px}

.admission-program-code-filter{border:1px solid #E7EBF0;border-radius:8px}.admission-program-code-filter form{margin:0}.admission-program-code-institution{width:min(460px,100%)}.admission-program-code-editor{padding:0;overflow:hidden}.admission-program-code-editor-head{padding:12px 14px;border-bottom:1px solid #E7EBF0;background:#F8FAFC}.admission-program-code-editor .row{padding:14px}.admission-program-code-editor .form-label{font-weight:700;color:#475569}@media(max-width:767px){.admission-program-code-filter form{flex-wrap:wrap}.admission-program-code-filter .btn{width:100%}.admission-program-code-institution{width:100%}.admission-program-code-editor .row{padding:12px}.admission-program-code-editor .btn{min-height:38px}}

:root {
    --sidebar-width: 260px;
    --header-height: 82px;
    --primary: #ed282b;
    --primary-light: #ee7c63;
    --background: #FDEDE9;
    --card: #FFFFFF;
    --border: #E5E7EB;
    --border-soft: #E6EAF2;
    --text: #252A31;
    --text-secondary: #6B7280;
    --success: #16A34A;
    --warning: #F59E0B;
    --danger: #DC2626;
    --info: #0EA5E9;
    --purple: #8B5CF6;
    --sidebar-hover: rgba(255, 255, 255, .09);
    --sidebar-active: #ed282b;
    --shadow: 0 5px 20px rgba(15, 23, 42, .06);
    --shadow-header: 0 1px 8px rgba(15, 23, 42, .06);
    --radius: 10px;
    --radius-sm: 10px;
}

* { box-sizing: border-box; }
html, body { min-width: 0; }
body { margin: 0; overflow-x: hidden; background: var(--background); color: var(--text); font-family: "Inter Tight", sans-serif; font-size: 14px; font-weight: 400; line-height: 1.5; letter-spacing: 0; }
body, button, input, select, textarea, .select2-container, .dataTables_wrapper, .swal2-popup, code, pre, kbd, samp { font-family: "Inter Tight", sans-serif !important; }
h1, h2, .brand-copy strong, .panel-heading, .exec-section-heading { font-family: "Inter Tight", sans-serif; }
a { color: var(--primary-light); text-decoration: none; transition: color .16s ease, background-color .16s ease, border-color .16s ease, box-shadow .16s ease; }
a:hover { color: var(--primary); }
img, canvas, svg { max-width: 100%; }

/* Authentication */
.auth-page { min-height: 100vh; min-height: 100dvh; background: var(--primary); overflow-y: auto; }
.auth-shell { min-height: 100vh; min-height: 100dvh; display: flex; align-items: center; justify-content: center; padding: 32px 24px; background: radial-gradient(circle at 15% 10%, rgba(255,255,255,.13), transparent 28%), radial-gradient(circle at 87% 90%, rgba(131,0,8,.28), transparent 36%); }
.auth-panel { width: 100%; max-width: 430px; background: var(--card); border: 0; border-radius: 14px; padding: 34px; box-shadow: 0 22px 54px rgba(87, 9, 14, .26); }
.brand-block { display: flex; align-items: center; gap: 12px; min-width: 0; }
.brand-block strong { display: block; color: var(--text); font-size: 19px; font-weight: 700; }
.brand-block small { display: block; color: var(--text-secondary); font-size: 11px; line-height: 1.3; font-weight: 500; text-transform: uppercase; }

/* Application shell */
.app-shell { min-height: 100vh; display: flex; background: var(--background); }
.sidebar { width: var(--sidebar-width); background: #414042; color: #F8FAFC; display: flex; flex-direction: column; position: fixed; inset: 0 auto 0 0; z-index: 100; border-right: 0; overflow: hidden; box-shadow: 2px 0 14px rgba(15,23,42,.12); }
.sidebar-brand { min-height: 82px; display: flex; align-items: center; gap: 11px; padding: 10px 18px; color: #FFFFFF; border-bottom: 1px solid rgba(255,255,255,.10); }
.sidebar-brand:hover { color: #FFFFFF; background: rgba(255,255,255,.06); }
.brand-logo { width: 42px; height: 42px; flex: 0 0 42px; display: inline-flex; align-items: center; justify-content: center; overflow: hidden; }
.brand-logo img { width: 42px; height: 42px; object-fit: contain; display: block; }
.brand-copy { display: flex; flex-direction: column; min-width: 0; }
.brand-copy strong { color: #FFFFFF; font-size: 18px; line-height: 1.15; font-weight: 600; }
.brand-copy small { margin-top: 3px; color: #B7BEC8; font-size: 9.5px; line-height: 1.25; font-weight: 600; white-space: normal; overflow-wrap: anywhere; text-transform: uppercase; display: -webkit-box; -webkit-line-clamp: 3; -webkit-box-orient: vertical; overflow: hidden; }
.sidebar-nav { padding: 14px 12px 20px; overflow-y: auto; scrollbar-width: thin; scrollbar-color: #58616C transparent; }
.sidebar-section { margin-bottom: 2px; }
.sidebar-link { display: flex; align-items: center; gap: 10px; min-height: 42px; padding: 9px 11px; border-radius: 7px; color: #D7DCE2; font-size: 14px; font-weight: 500; transition: background-color .16s ease, color .16s ease; }
.sidebar-link:hover { color: #FFFFFF; background: var(--sidebar-hover); }
.sidebar-section.open > .sidebar-section-link, .sidebar-link.active { color: #FFFFFF; background: var(--sidebar-active); box-shadow: 0 4px 12px rgba(122,0,7,.25); }
.sidebar-icon { width: 20px; min-width: 20px; display: inline-flex; align-items: center; justify-content: center; color: #ABB4BF; font-size: 18px; }
.sidebar-link:hover .sidebar-icon, .sidebar-section.open > .sidebar-section-link .sidebar-icon, .sidebar-link.active .sidebar-icon { color: #FFFFFF; }
.sidebar-label { min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.sidebar-subnav { display: none; padding: 5px 0 7px 32px; }
.sidebar-section.open .sidebar-subnav { display: block; }
.sidebar-sublink { display: block; margin: 1px 0; padding: 7px 10px; border-radius: 6px; color: #AEB6C0; font-size: 13px; font-weight: 400; line-height: 1.3; }
.sidebar-sublink:hover { color: #FFFFFF; background: rgba(255,255,255,.09); }
.sidebar-sublink.active { color: #FFFFFF; background: rgba(255,255,255,.09); }
.sidebar-heading { padding: 17px 10px 7px; color: #8F98A4; font-size: 10px; font-weight: 700; text-transform: uppercase; }
.sidebar-backdrop { display: none; }

.main-area { margin-left: var(--sidebar-width); width: calc(100% - var(--sidebar-width)); min-width: 0; min-height: 100vh; display: flex; flex-direction: column; }
.topbar { height: var(--header-height); min-height: var(--header-height); background: #FFFFFF; border-bottom: 1px solid #F7B3AA; box-shadow: var(--shadow-header); padding: 0 24px; display: flex; align-items: center; justify-content: space-between; gap: 18px; position: sticky; top: 0; z-index: 80; }
.mobile-menu-button { display: none; width: 38px; height: 38px; align-items: center; justify-content: center; border: 1px solid var(--border); border-radius: var(--radius-sm); background: #FFFFFF; color: var(--text-secondary); font-size: 21px; }
.topbar-title { min-width: 0; }
.topbar h1 { margin: 1px 0 0; color: var(--text); font-size: 17px; line-height: 1.25; font-weight: 600; text-transform: uppercase; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.breadcrumb-line { color: var(--text-secondary); font-size: 11px; font-weight: 400; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.topbar-actions { display: flex; align-items: center; justify-content: flex-end; gap: 8px; min-width: 0; }
.global-search { position: relative; width: min(300px, 24vw); min-width: 180px; height: 38px; display: flex; align-items: center; gap: 8px; padding: 0 11px; border: 1px solid var(--border); border-radius: var(--radius-sm); background: #F8FAFC; color: var(--text-secondary); }
.global-search input { border: 0; outline: 0; background: transparent; min-width: 0; width: 100%; color: var(--text); font: inherit; font-size: 13px; }
.global-menu-search-results { position: absolute; top: calc(100% + 6px); left: 0; z-index: 120; width: 100%; overflow: hidden; border: 1px solid #F7B3AA; border-radius: var(--radius-sm); background: #FFFFFF; box-shadow: 0 8px 20px rgba(15,23,42,.12); }
.global-menu-search-result { display: block; padding: 8px 11px; color: var(--text); font-size: 13px; line-height: 1.35; }
.global-menu-search-result:hover, .global-menu-search-result:focus { color: var(--text); background: #FDEDE9; }
.icon-button { position: relative; width: 38px; height: 38px; display: inline-flex; align-items: center; justify-content: center; border: 1px solid transparent; border-radius: var(--radius-sm); background: transparent; color: var(--text-secondary); font-size: 19px; }
.icon-button:hover { background: var(--sidebar-hover); color: var(--primary); border-color: var(--border); }
.has-indicator span { position: absolute; top: 7px; right: 7px; width: 6px; height: 6px; border-radius: 50%; background: var(--danger); border: 1px solid #FFFFFF; }
.user-dropdown { margin-left: 2px; }
.user-profile { min-width: 0; max-width: 250px; height: 44px; display: flex; align-items: center; gap: 9px; padding: 3px 5px 3px 7px; border: 0; border-left: 1px solid var(--border); background: transparent; color: var(--text); text-align: left; }
.user-profile:hover { background: #F8FAFC; }
.avatar { width: 34px; height: 34px; border-radius: 50%; display: inline-flex; align-items: center; justify-content: center; background: var(--sidebar-active); color: var(--primary); font-weight: 600; flex: 0 0 auto; }
.logo-avatar { background: #FFFFFF; border: 1px solid var(--border); overflow: hidden; }
.logo-avatar img { width: 100%; height: 100%; object-fit: contain; display: block; }
.user-meta { display: flex; flex-direction: column; min-width: 0; }
.user-meta strong { color: var(--text); font-size: 12px; font-weight: 600; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; max-width: 150px; }
.user-meta span { color: var(--text-secondary); font-size: 10px; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; max-width: 150px; }
.user-chevron { color: #94A3B8; font-size: 16px; }
.user-menu { width: 230px; margin-top: 7px !important; padding: 7px; border: 1px solid var(--border); border-radius: var(--radius-sm); box-shadow: 0 12px 28px rgba(15,23,42,.12); }
.user-menu-heading { display: flex; flex-direction: column; padding: 7px 9px 10px; margin-bottom: 5px; border-bottom: 1px solid var(--border); }
.user-menu-heading strong { font-size: 13px; font-weight: 600; }
.user-menu-heading span { color: var(--text-secondary); font-size: 11px; }
.user-menu .dropdown-item { display: flex; align-items: center; gap: 9px; padding: 8px 9px; border-radius: 6px; font-size: 13px; }
.user-menu .dropdown-item i { width: 17px; font-size: 16px; }
.content-wrap { flex: 1; width: 100%; max-width: 100%; padding: 24px; min-width: 0; overflow-x: clip; }
.app-footer { background: #FFFFFF; border-top: 1px solid #F7B3AA; padding: 11px 24px; color: var(--text-secondary); font-size: 12px; }

/* Shared UI */
.panel, .stat-card, .admin-tile, .exec-card, .exec-kpi, .filter-bar, .alert-summary-card, .data-health-card, .card { background: var(--card); border: 1px solid #F7B3AA; border-radius: var(--radius); box-shadow: var(--shadow); }
.panel, .admin-tile, .exec-card, .filter-bar, .data-health-card { padding: 20px; }
.panel-heading, .exec-card-title { color: var(--text); font-weight: 600; margin-bottom: 14px; font-size: 15px; letter-spacing: 0; }
.narrow-panel { max-width: 980px; }
.stats-grid { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 14px; }
.stat-card { min-height: 102px; padding: 17px; border-left: 0 !important; }
.stat-label { color: var(--text-secondary); font-size: 12px; font-weight: 500; }
.stat-value { color: #E8561A; font-size: 26px; font-weight: 700; margin-top: 5px; line-height: 1.2; overflow-wrap: anywhere; }
.admin-tile { display: flex; flex-direction: column; gap: 6px; min-height: 112px; color: var(--text); }
.admin-tile:hover { color: var(--text); border-color: #CBD5E1; box-shadow: 0 5px 16px rgba(15,61,145,.07); }
.admin-tile strong { font-weight: 600; }
.admin-tile span { color: var(--text-secondary); font-size: 13px; }
.permission-checks { max-height: 220px; overflow: auto; border: 1px solid var(--border); border-radius: var(--radius-sm); padding: 12px; background: #FFFFFF; }
.permission-checks .form-check-inline { min-width: 220px; margin: 0 12px 8px 0; }

.btn { border-radius: var(--radius-sm); font-size: 13px; font-weight: 500; white-space: nowrap; box-shadow: none !important; }
.btn-primary { color: var(--primary); background: #FFF7F7; border-color: var(--primary-light); }
.btn-primary:hover, .btn-primary:focus, .btn-primary.active, .btn-primary[aria-pressed="true"], .btn-primary:not(:disabled):not(.disabled):active, .btn-primary:not(:disabled):not(.disabled).active { color: #FFFFFF; background: var(--primary); border-color: var(--primary); }
.btn-outline-primary { color: var(--primary); border-color: var(--primary-light); }
.btn-outline-primary:hover { color: #FFFFFF; background: var(--primary); border-color: var(--primary); }
.btn-outline-secondary { color: #252A31; border-color: #CDD3DA; }
.btn-outline-secondary:hover, .btn-outline-secondary:focus { color: #252A31; background: #F6F8FA; border-color: #AEB7C2; }
.btn-outline-success { color: #087C4B; border-color: #087C4B; }
.btn-outline-success:hover, .btn-outline-success:focus { color: #FFFFFF; background: #087C4B; border-color: #087C4B; }
.btn-outline-info { color: #1976BD; border-color: #1976BD; }
.btn-outline-info:hover, .btn-outline-info:focus { color: #FFFFFF; background: #1976BD; border-color: #1976BD; }
.btn-import { color: #FFFFFF; background: var(--primary-light); border-color: var(--primary-light); }
.btn-import:hover, .btn-import:focus { color: #FFFFFF; background: #E66B52; border-color: #E66B52; }
.form-label { margin-bottom: 5px; color: #475569; font-size: 12px; font-weight: 500; }
.form-text { margin-top: 4px; color: #64748B; font-size: 11px !important; font-style: italic; line-height: 1.35; }
.required-mark { color: var(--danger); font-weight: 700; }
.form-control:disabled, .form-select:disabled, .form-control[readonly] { background-color: #F1F5F9; color: #475569; opacity: 1; }
:focus-visible { outline: 3px solid rgba(37,99,235,.28); outline-offset: 2px; }
.btn:disabled { cursor: wait; opacity: .72; }
.form-control, .form-select { min-height: 38px; border-color: var(--border); border-radius: var(--radius-sm); color: var(--text); font-size: 13px; }
/* Đồng nhất nền trắng cho tất cả ô nhập/chọn đang thao tác được. */
.form-control:not(:disabled):not([readonly]), .form-select:not(:disabled) { background-color: #FFFFFF; }
.form-control:focus, .form-select:focus { border-color: var(--primary-light); box-shadow: 0 0 0 .18rem rgba(37,99,235,.10); }
.select2-container--default .select2-selection--single { min-height: 38px; border-color: var(--border); border-radius: var(--radius-sm); background-color: #FFFFFF; }
.select2-container--default .select2-selection--multiple { background-color: #FFFFFF; border-color: var(--border); }
/* Select2 multiple giữ chiều cao gọn nhưng vẫn hiển thị đủ lựa chọn khi có nhiều giá trị. */
.select2-container--default .select2-selection--multiple { min-height: 38px; max-height: 96px; overflow-x: hidden; overflow-y: auto; }
.select2-container--default .select2-selection--multiple .select2-selection__rendered { display: flex; flex-wrap: wrap; align-items: center; min-height: 36px; margin: 0; padding: 2px 6px; white-space: normal; }
.select2-container--default .select2-selection--multiple .select2-selection__choice { flex: 0 1 auto; max-width: 170px; margin-top: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.select2-container--default .select2-selection--multiple .select2-search--inline { flex: 1 1 24px; min-width: 24px; }
.select2-container--default .select2-selection--single .select2-selection__rendered { line-height: 36px; color: var(--text); font-size: 13px; padding-left: 12px; padding-right: 30px; }
.select2-container--default .select2-selection--single .select2-selection__arrow { height: 36px; right: 6px; }
.select2-container--default.select2-container--focus .select2-selection--single, .select2-container--default.select2-container--open .select2-selection--single { border-color: var(--primary-light); box-shadow: 0 0 0 .18rem rgba(37,99,235,.10); }
.select2-dropdown { border-color: var(--border); border-radius: var(--radius-sm); box-shadow: 0 12px 28px rgba(15,23,42,.12); }
.select2-container--open { z-index: 1080; }
.learner-modal-close.btn-close,
.learner-modal-close.btn-close:hover {
    background-image: var(--bs-btn-close-bg) !important;
    background-position: center !important;
    background-repeat: no-repeat !important;
    background-size: 1em !important;
}
.select2-container--default .select2-search--dropdown .select2-search__field { min-height: 34px; border: 1px solid var(--border); border-radius: 6px; color: var(--text); font-size: 13px; outline: 0; }
.select2-container--default .select2-results__option { padding: 7px 10px; color: var(--text); font-size: 13px; }
.select2-container--default .select2-results__option--highlighted[aria-selected] { background: var(--primary); color: #FFFFFF; }
.table { margin-bottom: 0; color: var(--text); font-size: 13px; }
.table thead th { padding-top: 10px; padding-bottom: 10px; color: #475569; background: #F8FAFC; font-size: 12px; font-weight: 600; border-bottom-color: var(--border); white-space: nowrap; }
.table td, .table th { padding: 9px 10px; border-color: var(--border); vertical-align: middle; }
.table thead th:has(> input[type="checkbox"]),
.table tbody td:has(> input[type="checkbox"]) { width: 42px; min-width: 42px; padding: 6px !important; text-align: center; vertical-align: middle; }
.table th > input[type="checkbox"],
.table td > input[type="checkbox"] { display: block; float: none; margin: 0 auto; }
.table-striped > tbody > tr:nth-of-type(odd) > * { --bs-table-accent-bg: #FBFCFE; }
.table-hover > tbody > tr:hover > * { --bs-table-accent-bg: #F5F8FD; }
.table-responsive { max-width: 100%; overflow-x: auto; border-radius: var(--radius-sm); }
.badge { border-radius: 6px; font-weight: 500; }
.alert { border-radius: var(--radius-sm); border-width: 1px; font-size: 13px; }
.nd179-priority { border: 1px solid #F6C453; border-left: 5px solid #D97706; background: linear-gradient(90deg,#FFFBEB 0,#FFFFFF 46%); }
.nd179-priority .panel-heading, .nd179-priority h1, .nd179-priority h2 { color: #92400E; }
.nd179-reference { display: inline-flex; align-items: center; gap: 6px; padding: 4px 8px; border-radius: 6px; background: #FEF3C7; color: #92400E; font-size: 12px; font-weight: 700; }
.dataTables_wrapper .dataTables_filter input, .dataTables_wrapper .dataTables_length select { border: 1px solid var(--border); border-radius: 6px; padding: 5px 8px; }
.bulk-action-toolbar { padding: 12px 16px; border-left: 3px solid var(--primary); }
.bulk-action-toolbar .form-select-sm { min-height: 32px; min-width: 128px; }
.bulk-action-toolbar form { margin: 0; }
.table thead th[data-dt-order="disable"]::before,
.table thead th[data-dt-order="disable"]::after,
.table thead th[data-orderable="false"]::before,
.table thead th[data-orderable="false"]::after { display: none !important; }
.catalog-table-responsive { width: 100%; max-width: 100%; overflow-x: auto; overflow-y: hidden; }
.catalog-table-responsive .dataTables_wrapper { width: 100%; min-width: 0; padding: 0; }
.catalog-table-responsive .dataTables_scroll,
.catalog-table-responsive .dataTables_scrollHead,
.catalog-table-responsive .dataTables_scrollBody { width: 100% !important; }
.catalog-table-responsive .dataTables_length,
.catalog-table-responsive .dataTables_filter,
.catalog-table-responsive .dataTables_info,
.catalog-table-responsive .dataTables_paginate { margin: 12px; }
.catalog-table-responsive .dataTables_length select { min-width: 72px; margin: 0 6px; }
.catalog-table-responsive table { width: 100% !important; margin: 0 !important; }
.catalog-select-col,
.catalog-table-responsive td:has(> .row-select) { width: 42px !important; min-width: 42px !important; max-width: 42px; padding: 0 !important; text-align: center !important; vertical-align: middle !important; }
.catalog-select-col > input[type="checkbox"],
.catalog-table-responsive td > .row-select { display: inline-block !important; width: 16px; height: 16px; margin: 0 !important; vertical-align: middle !important; }
.catalog-action-col,
.catalog-action-cell { width: 76px !important; min-width: 76px !important; padding: 6px !important; text-align: center; vertical-align: middle !important; white-space: nowrap; }
.table[data-server-table="1"] tbody input[data-select-all] { display: none !important; }
.catalog-action-cell { line-height: 1; }
.catalog-action-cell .catalog-inline-action { display: inline-flex; vertical-align: middle; }
.catalog-inline-action { display: inline-flex; margin: 0 0 0 4px; vertical-align: middle; }
.catalog-icon-action { width: 30px; min-width: 30px; height: 30px; min-height: 30px; padding: 0; display: inline-flex; align-items: center; justify-content: center; }
.catalog-icon-action i { font-size: 16px; line-height: 1; }
.facility-filter-toolbar { display: flex; align-items: center; gap: 10px; min-width: 0; }
.facility-filter-field { min-width: 0; }
.facility-filter-institution { flex: 1 1 300px; }
.facility-filter-type { flex: 0 1 240px; }
.facility-filter-status { flex: 0 1 190px; }
.facility-filter-actions { display: inline-flex; align-items: center; gap: 8px; flex: 0 0 auto; margin-left: auto; white-space: nowrap; }
.facility-filter-actions .btn { min-height: 38px; }
.teacher-filter-toolbar { display: flex; align-items: center; gap: 10px; min-width: 0; }
.teacher-filter-field { min-width: 0; }
.teacher-filter-institution { flex: 1 1 240px; }
.teacher-filter-program { flex: 1.1 1 280px; }
.teacher-filter-staff { flex: 0 1 190px; }
.teacher-filter-status { flex: 0 1 180px; }
.teacher-filter-actions { display: inline-flex; align-items: center; gap: 8px; flex: 0 0 auto; margin-left: auto; white-space: nowrap; }
.teacher-filter-actions .btn { min-height: 38px; }
.research-filter-toolbar { display: flex; align-items: center; gap: 10px; min-width: 0; }
.research-filter-field { min-width: 0; }
.research-filter-institution { flex: 1 1 260px; }
.research-filter-year { flex: 0 0 110px; }
.research-filter-fieldname { flex: 0 1 230px; }
.research-filter-status { flex: 0 1 190px; }
.research-filter-actions { display: inline-flex; align-items: center; gap: 8px; flex: 0 0 auto; margin-left: auto; white-space: nowrap; }
.research-filter-actions .btn, .research-dashboard-actions .btn, .research-dashboard-filter .btn { min-height: 38px; }
.research-dashboard-toolbar { display: flex; align-items: center; justify-content: space-between; gap: 10px; min-width: 0; }
.research-dashboard-filter { display: flex; align-items: center; gap: 10px; min-width: 0; margin: 0; }
.research-dashboard-year { flex: 0 0 120px; }
.research-dashboard-institution { flex: 0 1 280px; min-width: 220px; }
.research-dashboard-actions { display: inline-flex; align-items: center; gap: 8px; flex: 0 0 auto; white-space: nowrap; }
.student-research-list{padding:0;overflow:hidden}.research-list-head{padding:15px 16px}.research-list-actions{display:flex;flex-wrap:wrap;justify-content:flex-end;gap:8px}.research-list-actions .btn{display:inline-flex;align-items:center;justify-content:center;gap:5px;min-height:36px;white-space:nowrap}.research-filter-panel{padding:0 16px 16px}.research-student-filter-toolbar{display:grid;grid-template-columns:minmax(190px,1.15fr) minmax(190px,1.15fr) 125px 165px minmax(190px,1fr) auto;align-items:end}.research-student-filter-toolbar .research-filter-field{display:grid;gap:5px}.research-student-filter-toolbar label{margin:0;color:#475569;font-size:12px;font-weight:700}.research-filter-program,.research-filter-keyword{min-width:0}.research-student-filter-toolbar .research-filter-actions{margin-left:0}.research-list-table{border-top:1px solid #e2e8f0}.research-list-table .module-list-table-head{padding:13px 16px}.research-list-table .table-responsive{margin:0;border:0;border-radius:0}.research-list-table #researchTable{min-width:1120px;margin-bottom:0}.research-list-table #researchTable th{background:#f8fafc;color:#475569;font-size:11px;white-space:nowrap}.research-list-table #researchTable td{color:#334155;font-size:12px;vertical-align:middle}.research-list-table #researchTable th:first-child,.research-list-table #researchTable td:first-child{width:48px;text-align:center}.research-learner-cell,.research-activity-cell{display:grid;gap:3px;min-width:0}.research-learner-cell strong,.research-activity-cell strong,.research-code{color:#0f172a;font-weight:750}.research-learner-cell span,.research-activity-cell span,.research-cell-subtext{display:block;color:#64748b;font-size:11px;line-height:1.35}.research-activity-cell{min-width:235px;max-width:360px}.research-activity-cell span{display:-webkit-box;overflow:hidden;-webkit-box-orient:vertical;-webkit-line-clamp:2}.research-activity-cell small{color:#a16207}.research-date-range{white-space:nowrap}.research-row-action{display:inline-flex!important;width:31px;height:31px;align-items:center;justify-content:center;padding:0!important}.research-list-table #researchTable_wrapper .dataTables_length{margin:12px 16px}.research-list-table #researchTable_wrapper .dataTables_info{padding:10px 16px}.research-list-table #researchTable_wrapper .dataTables_paginate{padding:8px 16px}.research-list-table #researchTable_wrapper .dataTables_length label{display:inline-flex;align-items:center;gap:7px}.research-list-table #researchTable_wrapper .dataTables_length select{width:72px;margin:0!important;padding-right:25px}
.student-research-form-page{display:grid;gap:12px;max-width:1280px;margin:0 auto}.student-research-form-panel{padding:0;overflow:hidden}.student-research-form-head{display:flex;align-items:center;justify-content:space-between;gap:18px;padding:17px 18px;border-bottom:1px solid #e2e8f0}.student-research-form-kicker{color:#2563eb;font-size:10px;font-weight:800;text-transform:uppercase}.student-research-form-head h2{margin:3px 0 0;color:#0f172a;font-size:20px;font-weight:800}.student-research-form-actions{display:flex;gap:8px}.student-research-form-actions .btn{display:inline-flex;align-items:center;justify-content:center;gap:5px;white-space:nowrap}.student-research-form-section{border-bottom:1px solid #e2e8f0}.student-research-form-section:last-child{border-bottom:0}.student-research-form-section-head{display:flex;align-items:flex-start;gap:10px;padding:14px 18px 8px}.student-research-form-section-head>i{display:inline-flex;width:30px;height:30px;align-items:center;justify-content:center;flex:0 0 30px;border-radius:6px;background:#eff6ff;color:#2563eb;font-size:17px}.student-research-form-section-head div{display:grid;gap:1px}.student-research-form-section-head strong{color:#0f172a;font-size:14px}.student-research-form-section-head span{color:#64748b;font-size:11px}.student-research-form-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:13px;padding:8px 18px 17px}.student-research-field{min-width:0}.student-research-field label{display:block;margin-bottom:5px;color:#475569;font-size:12px;font-weight:700}.student-research-field label span{color:#dc2626}.student-research-field .form-control,.student-research-field .form-select,.student-research-field .select2-container .select2-selection--single{min-height:38px}.student-research-learner-field{grid-column:span 2}.student-research-field-wide{grid-column:span 2}.student-research-field textarea{resize:vertical}.student-research-field input[readonly]{background:#f8fafc;color:#475569}.student-research-evidence-link{display:inline-flex;align-items:center;gap:4px;margin-top:7px;font-size:12px}.student-research-delete-form{display:flex;justify-content:flex-end;margin:0}.student-research-delete-form .btn{display:inline-flex;align-items:center;gap:5px}
@media(max-width:1199.98px){.research-student-filter-toolbar{grid-template-columns:repeat(3,minmax(0,1fr))}.research-student-filter-toolbar .research-filter-actions{width:100%}.student-research-form-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}
body.student-research-form-body .feedback-floating-button,body.student-research-form-body .mis-chat-toggle{display:none!important}@media(max-width:767.98px){.research-list-head,.student-research-form-head{align-items:flex-start;flex-direction:column}.research-list-actions,.student-research-form-actions{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));width:100%}.research-list-actions .btn:last-child:nth-child(odd){grid-column:1/-1}.research-student-filter-toolbar{grid-template-columns:1fr}.research-student-filter-toolbar .research-filter-actions{display:grid;grid-template-columns:repeat(2,minmax(0,1fr))}.research-list-table #researchTable_wrapper .dataTables_length,.research-list-table #researchTable_wrapper .dataTables_info,.research-list-table #researchTable_wrapper .dataTables_paginate{float:none!important;width:auto;margin:10px 14px;padding:0;text-align:left!important}.student-research-form-grid{grid-template-columns:1fr;padding-right:14px;padding-left:14px}.student-research-form-section-head{padding-right:14px;padding-left:14px}.student-research-learner-field,.student-research-field-wide{grid-column:auto}.student-research-form-actions .btn{width:100%}.student-research-delete-form .btn{width:100%;justify-content:center}body.student-research-page .feedback-floating-button,body.student-research-page .mis-chat-toggle{display:none!important}}
.learner-filter-toolbar { display: flex; align-items: center; gap: 10px; min-width: 0; }
.learner-filter-field { min-width: 0; }
.learner-filter-institution { flex: 1 1 220px; }
.learner-filter-project { flex: 0 1 200px; }
.learner-filter-program { flex: 1.1 1 260px; }
.learner-filter-cohort { flex: 0 1 150px; }
.learner-filter-status { flex: 0 1 180px; }
.learner-filter-actions { display: inline-flex; align-items: center; gap: 8px; flex: 0 0 auto; margin-left: auto; white-space: nowrap; }
.learner-filter-actions .btn { min-height: 38px; }
.learner-overview-hero{display:flex;align-items:center;justify-content:space-between;gap:20px;padding:20px;border:1px solid #E3E8F2;border-radius:8px;background:linear-gradient(110deg,#FFFFFF 0%,#F1F6FF 100%);box-shadow:0 8px 20px rgba(15,23,42,.045)}.learner-overview-eyebrow{color:#2563EB;font-size:11px;font-weight:750;letter-spacing:.04em}.learner-overview-hero h2{margin:4px 0 6px;color:#0F172A;font-size:23px;font-weight:800}.learner-overview-hero p{max-width:720px;margin:0;color:#475569;font-size:13px}.learner-overview-actions{display:flex;flex-wrap:wrap;justify-content:flex-end;gap:8px}.learner-overview-actions .btn{white-space:nowrap}.learner-overview-kpi .stat-card{height:100%;min-height:112px}.learner-overview-kpi .stat-label{max-width:330px}.learner-overview-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px}.learner-overview-table{min-width:0;overflow:hidden}.learner-overview-table-wide{grid-column:1/-1}.learner-overview-table-head{padding:15px 16px 11px;border-bottom:1px solid #E7EBF0;background:#FFFFFF}.learner-overview-table .table-responsive{margin:0;border:0;border-radius:0}.learner-overview-table .table thead th{background:#F8FAFC;color:#334155;font-size:12px;white-space:nowrap}.learner-overview-table .table td{vertical-align:middle}
@media(max-width:767.98px){.learner-overview-hero{align-items:flex-start;flex-direction:column;padding:16px}.learner-overview-actions{justify-content:flex-start;width:100%}.learner-overview-actions .btn{flex:1 1 auto}.learner-overview-grid{grid-template-columns:1fr}}
.module-list-panel{overflow:hidden}.module-list-head{display:flex;align-items:center;justify-content:space-between;gap:16px;padding:16px;border-bottom:1px solid #E7EBF0;background:linear-gradient(90deg,#FFFFFF 0%,#F8FAFC 100%)}.module-list-actions{display:flex;flex-wrap:wrap;justify-content:flex-end;gap:8px}.module-list-actions .btn{white-space:nowrap}.module-filter-panel{padding:14px 16px 16px;border-bottom:1px solid #E7EBF0;background:#FAFCFF}.module-filter-panel-head,.module-list-table-head{display:flex;align-items:baseline;justify-content:space-between;gap:10px;margin-bottom:10px;color:#334155;font-size:13px}.module-filter-panel-head strong,.module-list-table-head strong{font-weight:750}.module-filter-panel-head span,.module-list-table-head span{color:#64748B;font-size:12px}.module-list-table-head{margin:0;padding:14px 16px 10px}.module-list-table .table-responsive{margin:0;border:0;border-radius:0}.module-list-table .table thead th{background:#F8FAFC;color:#334155;font-size:12px;white-space:nowrap}.module-list-table .table tbody td{vertical-align:middle}.module-filter-panel .form-select,.module-filter-panel .form-control{min-height:38px}.module-import-modal .modal-dialog{max-width:560px}.module-import-modal .modal-header{align-items:flex-start}.module-import-modal .modal-body{padding:22px}
@media(max-width:767.98px){.module-list-head{align-items:flex-start;flex-direction:column}.module-list-actions{justify-content:flex-start;width:100%}.module-list-actions .btn{flex:1 1 auto}.module-filter-panel-head,.module-list-table-head{align-items:flex-start;flex-direction:column;gap:3px}}
.learner-profile-panel{overflow:hidden}.learner-profile-head{display:flex;align-items:center;justify-content:space-between;gap:16px;padding:18px 20px;border-bottom:1px solid #E7EBF0;background:linear-gradient(90deg,#FFFFFF 0%,#F8FAFC 100%)}.learner-profile-form{padding:18px 20px 20px}.learner-profile-form .form-label{margin-bottom:5px;color:#334155;font-size:12px;font-weight:650}.learner-profile-form .form-control,.learner-profile-form .form-select{min-height:38px}.learner-form-section{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-top:8px;padding:10px 12px;border:1px solid #DCE6F4;border-radius:7px;background:#F8FAFC;color:#0F172A}.learner-form-section>div{display:flex;align-items:center;gap:8px;font-size:14px}.learner-form-section>span{color:#64748B;font-size:12px}.learner-form-section-number{display:inline-flex;align-items:center;justify-content:center;width:22px;height:22px;border-radius:50%;background:#E0ECFF;color:#1D4ED8;font-size:12px;font-weight:750}.learner-form-section-optional{border-style:dashed;background:#FFFFFF}.learner-form-section-optional .learner-form-section-number{background:#F1F5F9;color:#475569}.learner-form-repeater{padding:2px 4px}.learner-form-repeater .repeater-row{padding:10px;margin:0 0 8px;border:1px solid #E2E8F0;border-radius:7px;background:#FAFCFF}.learner-profile-actions{position:sticky;bottom:0;z-index:3;display:flex;align-items:center;justify-content:space-between;gap:12px;margin-top:8px;padding:12px 0 0;background:linear-gradient(180deg,rgba(255,255,255,.82),#fff 35%)}
@media(max-width:767.98px){.learner-profile-head{align-items:flex-start;flex-direction:column;padding:14px}.learner-profile-form{padding:14px}.learner-form-section{align-items:flex-start;flex-direction:column;gap:4px}.learner-profile-actions{align-items:stretch;flex-direction:column}.learner-profile-actions>div:last-child{display:grid!important;grid-template-columns:1fr 1fr}.learner-profile-actions .btn{justify-content:center}}
.learner-list-panel{overflow:hidden}.learner-list-head{display:flex;align-items:center;justify-content:space-between;gap:16px;padding:16px;border-bottom:1px solid #E7EBF0;background:linear-gradient(90deg,#FFFFFF 0%,#F8FAFC 100%)}.learner-list-actions{display:flex;flex-wrap:wrap;justify-content:flex-end;gap:8px}.learner-list-actions .btn{white-space:nowrap}.learner-filter-panel{padding:14px 16px 16px;border-bottom:1px solid #E7EBF0;background:#FAFCFF}.learner-filter-panel-head{display:flex;align-items:baseline;gap:8px;margin-bottom:10px;color:#334155;font-size:13px}.learner-filter-panel-head strong{font-weight:750}.learner-filter-panel-head span{color:#64748B;font-size:12px}.learner-filter-panel .form-label{margin-bottom:5px;color:#475569;font-size:12px;font-weight:650}.learner-filter-panel .form-select{min-height:38px}.learner-filter-actions{padding-bottom:1px}.learner-list-panel .table-responsive{margin:0;border:0;border-radius:0}.learner-list-panel #learnersTable thead th{background:#F8FAFC;color:#334155;font-size:12px;white-space:nowrap}.learner-list-panel #learnersTable tbody td{vertical-align:middle}.learner-import-status>summary{cursor:pointer;list-style:none}.learner-import-status>summary::-webkit-details-marker{display:none}.learner-import-status>summary::after{content:'⌄';float:right;color:#64748B;font-size:18px;line-height:1}.learner-import-status[open]>summary::after{transform:rotate(180deg)}.learner-import-modal .modal-dialog{max-width:560px}.learner-import-modal .modal-header{align-items:flex-start}.learner-import-modal .modal-body{padding:22px}.learner-import-modal-actions{gap:8px}.learner-modal-close{display:inline-flex;align-items:center;justify-content:center;width:34px;height:34px;margin:0 0 0 auto;padding:0;border:1px solid #CBD5E1;border-radius:6px;background:#fff!important;color:#334155!important;font-size:24px;font-weight:400;line-height:1;opacity:1}.learner-modal-close:hover{background:#FEE2E2!important;border-color:#FCA5A5;color:#B91C1C!important}.learner-modal-close:focus{outline:0;box-shadow:0 0 0 .2rem rgba(37,99,235,.22)}.learner-modal-close span{display:block;line-height:1}
@media(min-width:1400px){#learnerListFilters>.col-md-3{flex:0 0 auto;width:16.666667%}}
@media(max-width:767.98px){.learner-list-head{align-items:flex-start;flex-direction:column}.learner-list-actions{justify-content:flex-start;width:100%}.learner-list-actions .btn{flex:1 1 auto}.learner-filter-panel-head{align-items:flex-start;flex-direction:column;gap:2px}}
.learning-filter-toolbar { display: flex; align-items: flex-end; gap: 10px; min-width: 0; }
.learning-filter-field { min-width: 0; }
.learning-filter-field .form-label{display:block;margin-bottom:5px;color:#475569;font-size:12px;font-weight:700}
.learning-filter-year{flex:0 0 132px}
.learning-filter-institution { flex: 1 1 260px; }
.learning-filter-program { flex: 1.15 1 300px; }
.learning-filter-project { flex: 0 1 240px; }
.learning-filter-reset{display:flex;flex:0 0 38px;align-items:flex-end}.learning-filter-reset .btn{display:inline-flex;align-items:center;justify-content:center;width:38px;height:38px;padding:0}.learning-filter-reset .btn i{font-size:18px}
.learning-filter-export { margin-left: auto; white-space: nowrap; }
.training-program-import-form { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); align-items: center; column-gap: 32px; margin: 0; min-width: 0; }
.training-program-action-start, .training-program-action-end { display: flex; width: 100%; align-items: center; gap: 8px; min-width: 0; }
.training-program-action-start .btn, .training-program-action-end .btn { display: inline-flex; flex: 0 0 auto; align-items: center; justify-content: center; min-width: 148px; min-height: 38px; padding-right: 18px; padding-left: 18px; line-height: 1.2; text-align: center; white-space: nowrap; }
.training-program-action-start .form-select { flex: 1 1 0; width: auto; min-width: 0; }
.training-program-action-end { justify-content: flex-end; flex-wrap: nowrap; }
.training-program-file { width: auto; min-width: 170px; flex: 1 1 0; }
.training-program-import-button { flex: 0 0 auto; }
.training-program-create-button.disabled { pointer-events: auto; cursor: not-allowed; opacity: .55; }
.training-dashboard { display: grid; gap: 18px; }
.training-dashboard-heading { display: flex; align-items: center; justify-content: space-between; gap: 16px; padding: 4px 0; }
.training-dashboard-heading h2 { margin: 0; color: #0F172A; font-size: 22px; font-weight: 800; }
.training-dashboard-heading p { margin: 5px 0 0; color: #64748B; font-size: 13px; }
@media (max-width: 767.98px) { .training-dashboard-heading { align-items: flex-start; flex-direction: column; } }
.training-program-filter-form { display: flex; flex-wrap: nowrap; gap: 10px; align-items: end; }
.training-program-filter-field { flex: 1 1 0; min-width: 0; }
.training-program-filter-field .form-label { display: block; margin-bottom: 6px; }
.training-program-filter-field .form-select { width: 100%; min-width: 0; }
.training-program-filter-actions { display: flex; flex: 0 0 auto; gap: 8px; min-width: 0; white-space: nowrap; }
.training-program-filter-actions .btn { min-height: 38px; }
.training-program-filter-actions .btn:first-child { flex: 1 1 auto; }
.training-program-filter-summary { margin-top: 14px; padding: 10px 12px; border: 1px solid #BFDBFE; border-radius: 6px; background: #EFF6FF; color: #1E3A8A; font-size: 13px; }
#trainingProgramTable .training-program-select-column { width: 52px; min-width: 52px; padding-right: 8px; padding-left: 8px; text-align: center; vertical-align: middle; }
#trainingProgramTable thead .training-program-select-column { cursor: default; }
#trainingProgramTable .training-program-select-column .form-check-input { position: static; display: inline-block; float: none; margin: 0; vertical-align: middle; }
#trainingProgramTable .training-program-actions .btn {
    min-width: 0;
    min-height: 0;
    padding: .2rem .4rem;
    font-size: .7rem;
    line-height: 1.15;
}
#trainingProgramTable .training-program-actions .btn i { font-size: .85rem; }
/* DataTables dùng select Bootstrap có biểu tượng mũi tên đè lên chữ số khi
   không dành đủ phần đệm bên phải. Áp dụng riêng cho bảng CTĐT. */
#trainingProgramTable_wrapper .dataTables_length label { display: inline-flex; align-items: center; gap: 8px; white-space: nowrap; }
#trainingProgramTable_wrapper .dataTables_length select {
    width: 78px !important;
    min-width: 78px;
    margin: 0 !important;
    padding: 5px 28px 5px 10px !important;
    appearance: auto !important;
    -webkit-appearance: menulist !important;
}
.admission-header { display: flex; align-items: center; justify-content: space-between; gap: 14px; min-width: 0; background: #FFFFFF; border: 1px solid #F7B3AA; border-radius: var(--radius); padding: 12px 14px; }
.admission-year-form { display: inline-flex; align-items: center; gap: 8px; flex: 1 1 auto; min-width: 360px; margin: 0; }
.admission-year-form .form-label { flex: 0 0 auto; white-space: nowrap; }
.admission-year-select { width: 260px; min-width: 220px; }
.admission-year-form .select2-container { flex: 0 0 260px; min-width: 220px; }
.admission-header-actions { flex: 0 0 auto; }
.admission-global-year-panel { display: block; padding: 0; overflow: hidden; }
.admission-global-context-row { display: flex; align-items: center; justify-content: space-between; gap: 16px; padding: 12px 14px; border-bottom: 1px solid #e2e8f0; }
.admission-global-year-form { display: flex; align-items: center; gap: 10px; min-width: 0; margin: 0; }
.admission-global-year-form .form-label { flex: 0 0 auto; white-space: nowrap; }
.admission-global-year-form .form-select { width: 100px; min-width: 100px; flex: 0 0 100px; }
.admission-year-manage-button { display: inline-flex; align-items: center; gap: 6px; white-space: nowrap; }
.admission-global-actions { display: flex; align-items: center; gap: 4px; min-width: 0; padding: 7px 8px; overflow-x: auto; background: #f8fafc; scrollbar-width: thin; }
.admission-global-nav-link { display: inline-flex; flex: 0 0 auto; align-items: center; gap: 6px; min-height: 38px; padding: 8px 11px; border: 1px solid transparent; border-radius: 6px; color: #475569; font-size: 13px; font-weight: 600; line-height: 1.2; text-decoration: none; white-space: nowrap; }
.admission-global-nav-link i { color: #64748b; font-size: 17px; }
.admission-global-nav-link:hover { border-color: #cbd5e1; background: #fff; color: #0f172a; text-decoration: none; }
.admission-global-nav-link.active { border-color: #bfdbfe; background: #fff; color: #1d4ed8; box-shadow: 0 1px 2px rgba(15,23,42,.06); }
.admission-global-nav-link.active i { color: #2563eb; }
.module-global-navigation-panel { display: block; padding: 0; overflow: hidden; }
.module-global-actions { display: flex; align-items: center; gap: 4px; min-width: 0; padding: 7px 8px; overflow-x: auto; background: #f8fafc; scrollbar-width: thin; }
.module-global-nav-link { display: inline-flex; flex: 0 0 auto; align-items: center; gap: 6px; min-height: 38px; padding: 8px 11px; border: 1px solid transparent; border-radius: 6px; color: #475569; font-size: 13px; font-weight: 600; line-height: 1.2; text-decoration: none; white-space: nowrap; }
.module-global-nav-link i { color: #64748b; font-size: 17px; }
.module-global-nav-link:hover { border-color: #cbd5e1; background: #fff; color: #0f172a; text-decoration: none; }
.module-global-nav-link.active { border-color: #bfdbfe; background: #fff; color: #1d4ed8; box-shadow: 0 1px 2px rgba(15,23,42,.06); }
.module-global-nav-link.active i { color: #2563eb; }
.candidate-header { display: flex; align-items: center; justify-content: space-between; gap: 14px; min-width: 0; background: #FFFFFF; border: 1px solid #F7B3AA; border-radius: var(--radius); padding: 12px 14px; }
.candidate-year-form { display: inline-flex; align-items: center; gap: 8px; flex: 1 1 auto; min-width: 360px; margin: 0; }
.candidate-year-form .form-label { flex: 0 0 auto; white-space: nowrap; }
.candidate-year-select { width: 260px; min-width: 220px; }
.candidate-year-form .select2-container { flex: 0 0 260px; min-width: 220px; }
.candidate-header-actions { flex: 0 0 auto; }
@media (max-width: 1199.98px) { .learner-filter-toolbar { flex-wrap: wrap; } .learner-filter-field { flex: 1 1 220px; } .learner-filter-actions { width: 100%; margin-left: 0; } }
@media (max-width: 575.98px) { .learner-filter-field, .learner-filter-actions { width: 100%; flex-basis: 100%; } .learner-filter-actions { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); } }
@media (max-width: 991.98px) { .learning-filter-toolbar { flex-wrap: wrap; } .learning-filter-field { flex: 1 1 220px; } .learning-filter-export { margin-left: 0; } }

.grade-entry-modal .modal-dialog{max-width:min(1500px,96vw)}.grade-entry-modal .modal-content{max-height:94vh}.grade-entry-head{align-items:flex-start;padding:14px 18px}.grade-entry-config{display:grid;grid-template-columns:minmax(170px,1.25fr) minmax(135px,.7fr) minmax(135px,.7fr) minmax(130px,.65fr) minmax(220px,1.4fr);gap:10px;padding:14px 16px;background:#f8fafc;border-bottom:1px solid #e2e8f0}.grade-entry-field label{display:block;margin-bottom:4px;color:#475569;font-size:12px;font-weight:700}.grade-entry-field .form-select{min-height:36px;font-size:13px}.grade-entry-filters{display:flex;align-items:center;gap:8px;padding:10px 16px;border-bottom:1px solid #e2e8f0;background:#fff}.grade-entry-filters .grade-entry-code-filter{width:160px;flex:0 0 160px}.grade-entry-filters .grade-entry-name-filter{width:280px;flex:0 0 280px}.grade-entry-filters #gradeEntryStatusFilter{width:180px;flex:0 0 180px}.grade-entry-draft-count{margin-left:auto;color:#9a5b00;font-size:12px;font-weight:700;white-space:nowrap}.grade-entry-notice{padding:34px 16px;text-align:center}.grade-entry-table-wrap{overflow:auto;min-height:260px;max-height:54vh}.grade-entry-table{min-width:980px}.grade-entry-table thead{position:sticky;top:0;z-index:3}.grade-entry-table thead th{padding:9px 8px;background:#eef3f8;color:#334155;border-bottom:1px solid #cbd5e1;font-size:12px;vertical-align:middle;white-space:nowrap}.grade-entry-table tbody td{padding:6px 8px;vertical-align:middle;font-size:13px}.grade-entry-table tbody tr.grade-entry-dirty td{background:#fff9e8}.grade-entry-table .grade-entry-code{min-width:115px;font-weight:700}.grade-entry-table .grade-entry-name{min-width:190px}.grade-entry-table .grade-entry-number{width:92px}.grade-entry-table select.grade-entry-input{width:112px}.grade-entry-table .grade-entry-publication{width:380px;min-height:52px;resize:vertical}.grade-entry-help{cursor:help;text-decoration:none;border:0}.grade-entry-help i{color:#64748b;font-size:14px}.grade-entry-pagination{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:10px 16px;border-top:1px solid #e2e8f0;background:#fff}.grade-entry-footer{padding:10px 16px}.grade-entry-footer #gradeEntrySaveMessage{max-width:70%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.modal-icon-close{display:inline-flex;align-items:center;justify-content:center;width:36px;height:36px;min-width:36px;padding:0;border:1px solid #d7dee8;border-radius:9px;color:#475569;background:#fff}.modal-icon-close i{font-size:21px;line-height:1}.modal-icon-close:hover{color:#b42318;background:#fff5f5;border-color:#fecaca}.grade-entry-table tbody tr.grade-entry-updated:not(.grade-entry-dirty) td{background:#eef7ff}.grade-entry-table tbody tr.grade-entry-updated:hover td{background:#e3f1ff}.grade-entry-table .grade-entry-learning-status{width:150px}.grade-entry-history-link{padding:3px 4px;white-space:nowrap;text-decoration:none}.grade-entry-history-modal{z-index:1070}.grade-entry-history-modal+.modal-backdrop{z-index:1065}.grade-entry-history-list{display:grid;gap:12px}.grade-entry-history-item{padding:14px;border:1px solid #dfe7f1;border-radius:10px;background:#fff}.grade-entry-history-meta{display:flex;flex-wrap:wrap;align-items:center;gap:6px 12px;padding-bottom:9px;border-bottom:1px solid #edf1f5}.grade-entry-history-meta span{color:#64748b;font-size:12px}.grade-entry-history-changes{display:grid;gap:6px;padding-top:9px}.grade-entry-history-change{display:grid;grid-template-columns:minmax(125px,.45fr) minmax(0,1fr);gap:10px;font-size:13px}.grade-entry-history-change strong{color:#334155}.grade-entry-history-change span{overflow-wrap:anywhere}.grade-entry-history-change i{margin:0 5px;color:#64748b}
.learning-progress-table-head{align-items:center;margin-bottom:0;padding-bottom:8px}.learning-progress-table-title{display:flex;align-items:baseline;gap:10px;min-width:0}.learning-progress-level-toolbar{display:flex;align-items:flex-end;justify-content:space-between;gap:12px;padding:4px 16px 0;border-bottom:1px solid #e2e8f0;background:#fff}.learning-progress-level-scroll{min-width:0;overflow-x:auto;scrollbar-width:thin}.learning-progress-level-scroll .learner-level-tabs{flex-wrap:nowrap;min-width:max-content;border-bottom:0}.learning-progress-table-actions{display:flex;flex:0 0 auto;align-items:center;justify-content:flex-end;padding-bottom:7px}.grade-entry-action-anchor{display:inline-flex}.grade-entry-action-anchor[hidden]{display:none!important}.learning-progress-table-actions .btn{min-width:112px;white-space:nowrap}.module-list-table #progressTable{min-width:1050px;margin-bottom:0}.module-list-table #progressTable_wrapper{padding-bottom:10px}.module-list-table #progressTable_wrapper .dataTables_length,.module-list-table #progressTable_wrapper .dataTables_filter{margin:12px 16px 10px}.module-list-table #progressTable_wrapper .dataTables_length label{display:inline-flex;align-items:center;gap:7px;white-space:nowrap}.module-list-table #progressTable_wrapper .dataTables_length select{width:72px;min-width:72px;margin:0!important;padding-right:26px}.module-list-table #progressTable_wrapper .dataTables_filter input{width:220px;margin-left:7px}.module-list-table #progressTable_wrapper .dataTables_info{padding:10px 16px 0}.module-list-table #progressTable_wrapper .dataTables_paginate{padding:8px 16px 0}
@media(max-width:991.98px){.grade-entry-config{grid-template-columns:repeat(2,minmax(0,1fr))}.grade-entry-program,.grade-entry-institution{grid-column:span 2}.grade-entry-filters{flex-wrap:wrap}.grade-entry-filters .grade-entry-code-filter,.grade-entry-filters .grade-entry-name-filter,.grade-entry-filters #gradeEntryStatusFilter{flex:1 1 190px;width:auto}.grade-entry-draft-count{width:100%;margin-left:0}.grade-entry-table-wrap{max-height:48vh}}
@media(max-width:767.98px){.learning-progress-table-head{align-items:flex-start}.learning-progress-table-title{align-items:flex-start;flex-direction:column;gap:2px}.learning-progress-level-toolbar{align-items:flex-end;padding-right:14px;padding-left:14px}.learning-progress-level-scroll{flex:1 1 auto}.learning-progress-table-actions{flex:0 0 auto}.learning-progress-table-actions .btn{min-width:auto}.module-list-table #progressTable_wrapper .dataTables_length,.module-list-table #progressTable_wrapper .dataTables_filter{float:none!important;width:auto;margin:10px 14px;text-align:left!important}.module-list-table #progressTable_wrapper .dataTables_filter label{display:flex;align-items:center;gap:6px}.module-list-table #progressTable_wrapper .dataTables_filter input{flex:1 1 auto;width:auto;min-width:0;margin-left:0}}
@media (max-width: 575.98px) { .learning-filter-field { width: 100%; flex-basis: 100%; }.learning-filter-reset{flex:1 1 100%}.learning-filter-reset .btn{width:100%}.learning-progress-table-title span{max-width:260px}.learning-progress-level-toolbar{gap:8px}.learning-progress-table-actions{margin-right:52px}.learning-progress-table-actions .btn{padding-right:10px;padding-left:10px} }
@media(max-width:575.98px){body.learning-progress-page .feedback-floating-button{right:12px!important;bottom:12px!important;width:46px;height:46px;padding:0!important;font-size:0!important}body.learning-progress-page .feedback-floating-button i{margin:0!important;font-size:20px!important}body.learning-progress-page .mis-chat-toggle{right:12px!important;bottom:68px!important;width:48px;height:48px;font-size:21px}}
.learning-profile-page{display:grid;gap:16px;min-width:0}.learning-profile-header{display:flex;align-items:flex-start;justify-content:space-between;gap:20px;padding:18px 20px;border:1px solid #dbe5f1;border-radius:8px;background:#fff;box-shadow:0 4px 12px rgba(15,23,42,.035)}.learning-profile-identity{min-width:0}.learning-profile-kicker{margin-bottom:3px;color:#2563eb;font-size:11px;font-weight:800;text-transform:uppercase}.learning-profile-identity h2{margin:0;color:#0f172a;font-size:22px;font-weight:800;line-height:1.25}.learning-profile-meta{display:flex;flex-wrap:wrap;align-items:center;gap:7px 16px;margin-top:9px;color:#475569;font-size:12px}.learning-profile-meta span{display:inline-flex;align-items:center;gap:5px;min-width:0}.learning-profile-meta i{flex:0 0 auto;color:#64748b;font-size:16px}.learning-profile-header-actions{display:flex;flex-wrap:wrap;justify-content:flex-end;gap:7px;flex:0 0 auto}.learning-profile-header-actions .btn{display:inline-flex;align-items:center;gap:5px;white-space:nowrap}.learning-profile-metrics{display:grid;grid-template-columns:repeat(6,minmax(0,1fr));padding:0;overflow:hidden;border-radius:8px;box-shadow:none}.learning-profile-metric{display:flex;min-height:88px;align-items:flex-start;justify-content:center;flex-direction:column;padding:14px 16px;border-right:1px solid #e2e8f0}.learning-profile-metric:last-child{border-right:0}.learning-profile-metric span{color:#64748b;font-size:11px;font-weight:700}.learning-profile-metric strong{margin-top:5px;color:#0f172a;font-size:25px;font-weight:800;line-height:1}.learning-profile-metric.is-warning strong{color:#b45309}.learning-profile-metric.is-danger strong{color:#b91c1c}.learning-profile-section{min-width:0;padding:0;overflow:hidden;border-radius:8px;box-shadow:none}.learning-profile-section-head{display:flex;align-items:flex-start;justify-content:space-between;gap:12px;padding:14px 16px 11px;border-bottom:1px solid #e2e8f0;background:#fff}.learning-profile-section-head .panel-heading{font-size:14px}.learning-profile-section-head p{margin:0;color:#64748b;font-size:12px;line-height:1.4}.learning-profile-section-head .btn{flex:0 0 auto;white-space:nowrap}.learning-profile-icon-button{display:inline-flex!important;align-items:center;justify-content:center;width:32px;height:32px;padding:0!important}.learning-profile-icon-button i{font-size:18px}.learning-profile-quick-form{display:grid;grid-template-columns:1.2fr repeat(3,minmax(145px,1fr)) auto;align-items:end;gap:12px;padding:15px 16px}.learning-profile-field{min-width:0}.learning-profile-field .form-label,.learning-profile-page .modal .form-label{display:block;margin-bottom:5px;color:#475569;font-size:12px;font-weight:700}.learning-profile-field .form-control,.learning-profile-field .form-select{min-height:38px}.learning-profile-quick-action .btn{display:inline-flex;align-items:center;justify-content:center;gap:5px;min-height:38px;white-space:nowrap}.learning-profile-period-warning{grid-column:1/-1;display:flex;align-items:center;gap:7px;padding:9px 11px;border:1px solid #fde68a;border-radius:6px;background:#fffbeb;color:#92400e;font-size:12px}.learning-profile-inline-table{border-top:1px solid #e2e8f0}.learning-profile-page .table-responsive{margin:0;border:0;border-radius:0}.learning-profile-page .table{margin:0}.learning-profile-page .table thead th{padding:9px 10px;background:#f8fafc;color:#475569;font-size:11px;font-weight:800;white-space:nowrap}.learning-profile-page .table tbody td{padding:9px 10px;color:#334155;font-size:12px;vertical-align:middle}.learning-profile-page .table tbody tr:last-child td{border-bottom:0}.learning-profile-two-column{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px;min-width:0}.learning-profile-content-grid{display:grid;grid-template-columns:minmax(0,2.05fr) minmax(280px,.95fr);align-items:start;gap:16px;min-width:0}.learning-profile-main,.learning-profile-sidebar{display:grid;gap:16px;min-width:0}.learning-profile-chart{position:relative;height:280px;padding:12px 16px 8px}.learning-profile-empty{display:flex;min-height:150px;align-items:center;justify-content:center;flex-direction:column;gap:7px;color:#64748b;font-size:12px}.learning-profile-empty i{color:#94a3b8;font-size:32px}.learning-profile-page .modal-content{border-radius:8px}.learning-profile-page .modal-header{align-items:center}.learning-profile-page .modal-footer .btn{min-width:92px}
@media(max-width:1199.98px){.learning-profile-metrics{grid-template-columns:repeat(3,minmax(0,1fr))}.learning-profile-metric:nth-child(3){border-right:0}.learning-profile-metric:nth-child(-n+3){border-bottom:1px solid #e2e8f0}.learning-profile-quick-form{grid-template-columns:repeat(2,minmax(0,1fr))}.learning-profile-quick-action{display:flex;grid-column:1/-1;justify-content:flex-end}.learning-profile-content-grid{grid-template-columns:minmax(0,1.65fr) minmax(270px,.85fr)}}
@media(max-width:991.98px){.learning-profile-content-grid{grid-template-columns:1fr}.learning-profile-sidebar{grid-template-columns:repeat(2,minmax(0,1fr))}.learning-profile-meta span:last-child{flex-basis:100%}}
@media(max-width:767.98px){.learning-profile-header{flex-direction:column;padding:15px}.learning-profile-header-actions{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));width:100%}.learning-profile-header-actions .btn{justify-content:center;min-width:0}.learning-profile-identity h2{font-size:19px}.learning-profile-meta{align-items:flex-start;flex-direction:column}.learning-profile-meta span:last-child{flex-basis:auto}.learning-profile-metrics{grid-template-columns:repeat(2,minmax(0,1fr))}.learning-profile-metric{min-height:76px;padding:12px 14px;border-right:1px solid #e2e8f0!important;border-bottom:1px solid #e2e8f0}.learning-profile-metric:nth-child(even){border-right:0!important}.learning-profile-metric:nth-last-child(-n+2){border-bottom:0}.learning-profile-metric strong{font-size:22px}.learning-profile-quick-form{grid-template-columns:1fr}.learning-profile-quick-action{grid-column:auto}.learning-profile-quick-action .btn{width:100%}.learning-profile-two-column,.learning-profile-sidebar{grid-template-columns:1fr}.learning-profile-section-head{padding:13px 14px 10px}.learning-profile-chart{height:230px;padding-right:10px;padding-left:10px}.learning-profile-page .table{min-width:620px}.learning-profile-page .learning-profile-inline-table .table{min-width:520px}}
@media(max-width:575.98px){.learning-profile-header-actions{grid-template-columns:repeat(2,minmax(0,1fr))}.learning-profile-header-actions .btn:last-child{grid-column:1/-1}.learning-profile-kicker{font-size:10px}.learning-profile-meta{font-size:11px}body.learning-progress-profile-page .feedback-floating-button,body.learning-progress-profile-page .mis-chat-toggle{display:none!important}}
@media (max-width: 1199.98px) { .training-program-import-form { grid-template-columns: minmax(0, 1fr); row-gap: 12px; align-items: flex-start; } .training-program-action-start, .training-program-action-end { justify-content: flex-start; } .training-program-action-start { flex-wrap: wrap; } .training-program-action-end { flex-wrap: nowrap; } }
@media (max-width: 991.98px) { .training-program-filter-form { flex-wrap: wrap; } .training-program-filter-field { flex: 1 1 calc(33.333% - 10px); } }
@media (max-width: 575.98px) { .training-program-filter-field { flex-basis: 100%; } .training-program-filter-actions { width: 100%; } .training-program-filter-actions .btn { flex: 1 1 0; } }
@media (max-width: 575.98px) { .training-program-action-start .form-select { width: 100%; min-width: 0; } }
@media (max-width: 991.98px) { .admission-header { align-items: flex-start; flex-direction: column; } .admission-year-form { min-width: 0; } .admission-header-actions { overflow-x: auto; max-width: 100%; } }
@media (max-width: 767.98px) { .admission-global-context-row { align-items: flex-start; flex-direction: column; gap: 10px; padding: 12px; } .admission-global-year-form { width: 100%; justify-content: space-between; } .admission-global-actions { width: 100%; } .admission-year-manage-button { width: 100%; justify-content: center; } }
@media (max-width: 767.98px) { .module-global-actions { width: 100%; } }
@media (max-width: 991.98px) { .candidate-header { align-items: flex-start; flex-direction: column; } .candidate-year-form { min-width: 0; } .candidate-header-actions { overflow-x: auto; max-width: 100%; } }
@media (max-width: 575.98px) { .admission-year-form { width: 100%; } .admission-year-select { width: 100%; min-width: 0; } .admission-year-form .select2-container { flex: 1 1 auto; min-width: 0; } }
@media (max-width: 575.98px) { .candidate-year-form { width: 100%; } .candidate-year-select { width: 100%; min-width: 0; } .candidate-year-form .select2-container { flex: 1 1 auto; min-width: 0; } }
@media (max-width: 575.98px) { .training-program-file { width: 190px; flex-basis: 190px; } }
@media (max-width: 1199.98px) { .research-filter-toolbar, .research-dashboard-toolbar { flex-wrap: wrap; } .research-filter-field { flex: 1 1 220px; } .research-filter-year { flex: 0 0 110px; } .research-filter-actions, .research-dashboard-actions { width: 100%; margin-left: 0; } }
@media (max-width: 575.98px) { .research-filter-field, .research-filter-year, .research-filter-actions, .research-dashboard-filter, .research-dashboard-actions, .research-dashboard-year, .research-dashboard-institution { width: 100%; flex-basis: 100%; min-width: 0; } .research-filter-actions, .research-dashboard-actions { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); } }
@media (max-width: 1199.98px) { .teacher-filter-toolbar { flex-wrap: wrap; } .teacher-filter-field { flex: 1 1 220px; } .teacher-filter-actions { width: 100%; margin-left: 0; } }
@media (max-width: 575.98px) { .teacher-filter-field, .teacher-filter-actions { width: 100%; flex-basis: 100%; } .teacher-filter-actions { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); } }
@media (max-width: 991.98px) { .facility-filter-toolbar { flex-wrap: wrap; } .facility-filter-field { flex: 1 1 220px; } .facility-filter-actions { width: 100%; margin-left: 0; } }
@media (max-width: 575.98px) { .facility-filter-field, .facility-filter-actions { width: 100%; flex-basis: 100%; } .facility-filter-actions { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); } }

/* Role-based dashboards */
.dashboard-welcome{overflow:hidden;border:1px solid #F7B3AA;border-radius:10px;background:radial-gradient(circle at 97% 0,rgba(238,124,99,.17),transparent 24%),linear-gradient(112deg,#fff 0%,#fff8f6 100%);box-shadow:var(--shadow)}.dashboard-welcome-heading{padding:20px 22px 14px}.dashboard-welcome-kicker,.dashboard-process-head>div>span{display:block;color:var(--primary);font-size:11px;font-weight:700;letter-spacing:.045em;text-transform:uppercase}.dashboard-welcome h2{margin:4px 0 5px;color:var(--text);font-size:23px;font-weight:750;line-height:1.2}.dashboard-welcome p{margin:0;color:var(--text-secondary);font-size:13px}.dashboard-core-stats{display:grid;grid-template-columns:repeat(6,minmax(0,1fr));border-top:1px solid #F9D2CD;background:#fff}.dashboard-core-stat{display:flex;align-items:center;gap:10px;min-width:0;padding:14px 12px;border-right:1px solid #F9D2CD;color:var(--text)}.dashboard-core-stat:last-child{border-right:0}.dashboard-core-stat:hover{color:var(--text);background:#FFF6F4}.dashboard-core-icon{width:32px;height:32px;display:inline-flex;align-items:center;justify-content:center;flex:0 0 32px;border-radius:8px;background:#FDEBE8;color:var(--primary);font-size:18px}.dashboard-core-copy{display:flex;flex-direction:column;min-width:0}.dashboard-core-copy small{color:var(--text-secondary);font-size:10px}.dashboard-core-copy strong{color:var(--primary);font-size:20px;font-weight:750;line-height:1.05}.dashboard-core-copy span{overflow:hidden;color:var(--text);font-size:11px;line-height:1.3;text-overflow:ellipsis;white-space:nowrap}.dashboard-process{position:relative;overflow:hidden;padding:19px 22px 22px;border:1px solid #F7B3AA;border-radius:10px;background:radial-gradient(circle at 0 100%,rgba(237,40,43,.08),transparent 18%),#fff;box-shadow:var(--shadow)}.dashboard-process:before,.dashboard-process:after{position:absolute;width:120px;height:120px;border:18px solid rgba(238,124,99,.10);border-radius:50%;content:''}.dashboard-process:before{top:-72px;left:-55px}.dashboard-process:after{right:-70px;bottom:-75px}.dashboard-process-head{position:relative;z-index:1;display:flex;align-items:end;justify-content:space-between;gap:16px;margin-bottom:18px}.dashboard-process-head h2{margin:3px 0 0;color:var(--primary);font-size:20px;font-weight:800;text-transform:uppercase}.dashboard-process-head p{margin:0;color:var(--text-secondary);font-size:13px}.dashboard-process-steps{position:relative;z-index:1;display:grid;grid-template-columns:repeat(6,minmax(0,1fr));gap:28px 18px}.dashboard-process-step{position:relative;display:flex;min-height:112px;align-items:center;justify-content:center;flex-direction:column;gap:7px;padding:17px 10px 12px;border-radius:9px;background:linear-gradient(135deg,#bd1e24 0%,var(--primary) 57%,#ee7c63 100%);box-shadow:0 8px 16px rgba(156,25,30,.20);color:#fff;text-align:center}.dashboard-process-step:hover{color:#fff;transform:translateY(-2px);box-shadow:0 11px 19px rgba(156,25,30,.25)}.dashboard-process-step b{position:absolute;top:-12px;left:50%;display:flex;width:26px;height:26px;align-items:center;justify-content:center;border:2px solid var(--primary);border-radius:50%;background:#fff;color:var(--primary);font-size:13px;transform:translateX(-50%)}.dashboard-process-step i{font-size:27px;line-height:1}.dashboard-process-step span{font-size:13px;font-weight:650;line-height:1.25}.dashboard-process-step:not(:nth-child(6n)):after{position:absolute;z-index:-1;top:50%;right:-18px;color:var(--primary);font-family:'Material Design Icons';font-size:22px;content:'\F0142';transform:translateY(-50%)}
.role-dashboard { display: flex; flex-direction: column; gap: 18px; min-width: 0; }
.role-dashboard-intro { display: flex; align-items: center; justify-content: space-between; gap: 16px; }
.role-dashboard-title { color: var(--text); font-size: 20px; font-weight: 700; line-height: 1.25; }
.role-dashboard-subtitle { margin-top: 3px; color: var(--text-secondary); font-size: 12px; }
.role-dashboard-date { display: inline-flex; align-items: center; gap: 6px; color: var(--text-secondary); font-size: 12px; }
.role-profile { display: grid; grid-template-columns: repeat(5,minmax(0,1fr)); gap: 14px; padding: 16px 18px; }
.role-profile div { min-width: 0; }
.role-profile span { display: block; color: var(--text-secondary); font-size: 10px; font-weight: 500; text-transform: uppercase; }
.role-profile strong { display: block; margin-top: 3px; color: var(--text); font-size: 13px; font-weight: 600; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.role-kpi-grid { display: grid; grid-template-columns: repeat(6,minmax(0,1fr)); gap: 12px; }
.role-kpi-card { min-height: 98px; display: flex; align-items: center; gap: 11px; padding: 14px; background: #FFFFFF; border: 1px solid var(--border-soft); border-radius: var(--radius); box-shadow: var(--shadow); }
.role-kpi-icon { width: 38px; height: 38px; flex: 0 0 38px; display: inline-flex; align-items: center; justify-content: center; border-radius: 50%; font-size: 19px; }
.role-kpi-card div { min-width: 0; }
.role-kpi-card span:not(.role-kpi-icon) { display: block; min-height: 28px; color: var(--text-secondary); font-size: 11px; font-weight: 500; line-height: 1.3; }
.role-kpi-card strong { display: block; margin-top: 4px; color: var(--text); font-size: 21px; font-weight: 700; line-height: 1.15; overflow-wrap: anywhere; }
.role-widget-grid { display: grid; grid-template-columns: repeat(4,minmax(0,1fr)); gap: 12px; }
.role-widget { min-height: 78px; display: flex; align-items: center; gap: 10px; padding: 12px 14px; background: #FFFFFF; color: var(--text); border: 1px solid var(--border-soft); border-radius: var(--radius); box-shadow: var(--shadow); }
.role-widget:hover { color: var(--text); border-color: #CBD5E1; box-shadow: 0 5px 16px rgba(15,61,145,.07); }
.role-widget-icon { width: 34px; height: 34px; flex: 0 0 34px; display: inline-flex; align-items: center; justify-content: center; border-radius: 50%; font-size: 17px; }
.role-widget > span:nth-child(2) { min-width: 0; margin-right: auto; }
.role-widget strong { display: block; font-size: 18px; font-weight: 700; line-height: 1.1; }
.role-widget small { display: block; margin-top: 3px; color: var(--text-secondary); font-size: 11px; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.role-widget > i { color: #94A3B8; }
.role-chart-grid { display: grid; grid-template-columns: repeat(3,minmax(0,1fr)); gap: 14px; }
.role-chart-card { min-height: 285px; }
.role-chart-box { height: 225px; position: relative; }
.role-chart-box canvas { width: 100% !important; height: 100% !important; }
.role-table-grid { display: grid; grid-template-columns: repeat(2,minmax(0,1fr)); gap: 14px; }

/* Executive dashboard */
.exec-dashboard { display: flex; flex-direction: column; gap: 18px; color: var(--text); min-width: 0; }
.filter-bar { display: grid; grid-template-columns: minmax(90px,.7fr) minmax(105px,.8fr) minmax(210px,1.7fr) minmax(170px,1.25fr) minmax(170px,1.25fr) auto; gap: 10px; align-items: end; position: relative; padding: 16px 18px 34px; }
.filter-field { min-width: 0; }
.filter-field label { display: block; margin-bottom: 4px; color: var(--text-secondary); font-size: 11px; font-weight: 500; }
.filter-bar .form-select { width: 100%; min-width: 0; }
.filter-bar .btn { min-height: 38px; padding-left: 15px; padding-right: 15px; white-space: nowrap; }
.exec-updated { position: absolute; right: 18px; bottom: 10px; color: var(--text-secondary); font-size: 11px; text-align: right; }
.exec-kpi-grid { display: grid; grid-template-columns: repeat(6, minmax(0, 1fr)); gap: 12px; }
.exec-kpi { min-height: 105px; padding: 15px; display: flex; align-items: flex-start; gap: 11px; }
.kpi-icon { width: 38px; height: 38px; display: flex; align-items: center; justify-content: center; border-radius: 50%; font-size: 19px; flex: 0 0 auto; }
.kpi-body { min-width: 0; }
.kpi-label { color: var(--text-secondary); font-size: 11px; font-weight: 500; line-height: 1.3; min-height: 29px; }
.kpi-value { color: var(--text); font-size: 23px; font-weight: 700; line-height: 1.15; margin-top: 5px; overflow-wrap: anywhere; }
.kpi-change { display: flex; align-items: center; gap: 3px; color: var(--text-secondary); font-size: 10px; margin-top: 5px; }
.kpi-change.up { color: var(--success); }
.kpi-change.down { color: var(--danger); }
.kpi-change.flat { color: var(--text-secondary); }
.kpi-link { display: inline-block; margin-top: 4px; color: var(--primary); font-size: 10px; font-weight: 600; }
.exec-chart-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 16px; }
.exec-overview-grid { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 14px; }
.exec-three-grid { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 14px; }
.exec-feature-grid { display: grid; grid-template-columns: minmax(0,.9fr) minmax(0,1.45fr); gap: 16px; align-items: start; }
.exec-card { position: relative; min-width: 0; min-height: 100%; padding: 18px; }
.exec-card-title { margin-bottom: 12px; font-size: 14px; }
.exec-section { display: flex; flex-direction: column; gap: 10px; min-width: 0; }
.exec-section-heading { display: flex; align-items: center; gap: 8px; color: var(--text); font-size: 16px; line-height: 1.3; font-weight: 600; }
.exec-section-heading::before { content: ''; width: 3px; height: 17px; border-radius: 3px; background: var(--primary); }
.exec-card-head { display: flex; align-items: flex-start; justify-content: space-between; gap: 10px; margin-bottom: 10px; }
.exec-card-head .exec-card-title { margin-bottom: 0; }
.exec-card-head a { color: var(--primary); font-size: 10px; font-weight: 600; white-space: nowrap; }
.compact-card { min-height: 275px; }
.chart-box { height: 260px; position: relative; }
.chart-box.chart-sm { height: 205px; }
.chart-box.chart-lg { height: 320px; }
.chart-box canvas { width: 100% !important; height: 100% !important; }
.center-total { position: absolute; left: 50%; top: 54%; transform: translate(-50%,-50%); max-width: 94px; color: var(--text); font-weight: 600; font-size: 11px; line-height: 1.3; pointer-events: none; text-align: center; }
.learner-level-kpis { grid-template-columns: repeat(3, minmax(0, 1fr)); }
.research-kpi-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
.research-kpi-grid .exec-kpi { min-height: 112px; }
.top-institution-card { padding-bottom: 12px; }
.scholarship-kpi { display: grid; gap: 12px; min-height: 205px; align-content: center; }
.scholarship-kpi span { color: var(--text-secondary); font-size: 11px; }
.scholarship-kpi strong { display: block; color: var(--text); font-size: 22px; font-weight: 700; line-height: 1.15; margin-top: 2px; }
.exec-bottom-grid { display: grid; grid-template-columns: minmax(0,1.55fr) minmax(330px,.85fr); gap: 16px; align-items: stretch; }
.alerts-card { padding: 18px; }
.alert-summary-grid { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 10px; }
.alert-summary-card { min-height: 108px; padding: 12px; display: flex; flex-direction: column; gap: 7px; box-shadow: none; }
.alert-summary-top { display: flex; align-items: center; justify-content: space-between; gap: 8px; }
.alert-status-icon { width: 32px; height: 32px; border-radius: 50%; display: inline-flex; align-items: center; justify-content: center; font-size: 17px; }
.alert-summary-card strong { color: var(--text); font-size: 22px; line-height: 1.1; font-weight: 700; }
.alert-summary-card span { color: var(--text-secondary); font-size: 11px; min-height: 28px; }
.alert-summary-card .btn { align-self: flex-start; padding: 2px 7px; font-size: 10px; }
.status-info { color: var(--info); background: rgba(14,165,233,.10); }
.status-warning { color: var(--warning); background: rgba(245,158,11,.12); }
.status-danger { color: var(--danger); background: rgba(220,38,38,.10); }
.status-success { color: var(--success); background: rgba(22,163,74,.10); }
.data-health-card { min-width: 0; padding: 18px; }
.update-number { color: var(--text); font-size: 28px; font-weight: 700; line-height: 1.1; }
.update-caption { color: var(--text-secondary); margin: 3px 0 9px; font-size: 12px; }
.progress { height: 7px; border-radius: 999px; background: #EEF2F7; }
.progress-bar { background: var(--success); border-radius: 999px; }
.recent-list { margin-top: 10px; display: grid; gap: 6px; }
.recent-row { border-top: 1px solid var(--border); padding-top: 6px; }
.recent-row:first-child { border-top: 0; padding-top: 0; }
.recent-row span { display: block; color: var(--text); font-weight: 500; font-size: 11px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.recent-row small { color: var(--text-secondary); font-size: 9px; }

@media (max-width: 1600px) {
    .dashboard-core-stats { grid-template-columns: repeat(3,minmax(0,1fr)); }
    .dashboard-process-steps { grid-template-columns: repeat(3,minmax(0,1fr)); gap:26px 18px; }
    .dashboard-process-step:not(:nth-child(6n)):after { display:none; }
    .role-kpi-grid { grid-template-columns: repeat(4,minmax(0,1fr)); }
    .role-chart-grid { grid-template-columns: repeat(2,minmax(0,1fr)); }
    .exec-kpi-grid { grid-template-columns: repeat(3, minmax(0, 1fr)); }
    .learner-level-kpis { grid-template-columns: repeat(3, minmax(0, 1fr)); }
    .exec-overview-grid { grid-template-columns: repeat(4, minmax(0, 1fr)); }
    .exec-feature-grid { grid-template-columns: minmax(0,.95fr) minmax(0,1.35fr); }
}
@media (max-width: 1366px) {
    :root { --sidebar-width: 250px; }
    .content-wrap { padding: 20px; }
    .topbar { padding: 0 20px; }
    .global-search { width: 210px; min-width: 150px; }
    .user-meta { display: none; }
    .filter-bar { grid-template-columns: minmax(70px,.6fr) minmax(85px,.7fr) minmax(170px,1.5fr) minmax(135px,1fr) minmax(135px,1fr) auto; gap: 8px; }
    .exec-overview-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
    .exec-three-grid { grid-template-columns: repeat(3, minmax(0, 1fr)); }
    .exec-bottom-grid { grid-template-columns: minmax(0,1.45fr) minmax(300px,.8fr); }
}
@media (max-width: 1100px) {
    .role-kpi-grid { grid-template-columns: repeat(3,minmax(0,1fr)); }
    .role-widget-grid { grid-template-columns: repeat(2,minmax(0,1fr)); }
    .role-profile { grid-template-columns: repeat(3,minmax(0,1fr)); }
    .sidebar { transform: translateX(-100%); box-shadow: 10px 0 30px rgba(15,23,42,.12); transition: transform .2s ease; }
    .sidebar-open .sidebar { transform: translateX(0); }
    .sidebar-backdrop { position: fixed; inset: 0; z-index: 90; border: 0; background: rgba(15,23,42,.35); }
    .sidebar-open .sidebar-backdrop { display: block; }
    .main-area { margin-left: 0; width: 100%; }
    .mobile-menu-button { display: inline-flex; flex: 0 0 auto; }
    .topbar-title { margin-right: auto; }
    .content-wrap { padding: 18px; }
    .filter-bar { grid-template-columns: repeat(3, minmax(0, 1fr)); padding-bottom: 34px; }
    .filter-bar .btn { width: 100%; }
    .exec-chart-grid, .exec-three-grid, .exec-feature-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
    .exec-three-grid > :last-child { grid-column: 1 / -1; }
    .exec-bottom-grid { grid-template-columns: minmax(0,1.4fr) minmax(280px,.8fr); }
    .alert-summary-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}
@media (max-width: 820px) {
    .dashboard-core-stats, .dashboard-process-steps { grid-template-columns: repeat(2,minmax(0,1fr)); }
    .dashboard-process-head { align-items:flex-start; flex-direction:column; }
    .role-kpi-grid, .role-chart-grid, .role-table-grid { grid-template-columns: repeat(2,minmax(0,1fr)); }
    .role-profile { grid-template-columns: repeat(2,minmax(0,1fr)); }
    .topbar-actions { gap: 4px; }
    .global-search { display: none; }
    .user-profile { border-left: 0; }
    .exec-kpi-grid, .learner-level-kpis, .research-kpi-grid, .exec-chart-grid, .exec-overview-grid, .exec-three-grid, .exec-feature-grid, .exec-bottom-grid { grid-template-columns: 1fr; }
    .exec-three-grid > :last-child { grid-column: auto; }
    .filter-bar { grid-template-columns: repeat(2, minmax(0, 1fr)); }
    .chart-box.chart-lg { height: 360px; }
}
@media (max-width: 560px) {
    .dashboard-welcome-heading, .dashboard-process { padding:16px; }
    .dashboard-core-stats, .dashboard-process-steps { grid-template-columns: 1fr; }
    .dashboard-core-stat { border-right:0; border-bottom:1px solid #F9D2CD; }
    .dashboard-core-stat:last-child { border-bottom:0; }
    .dashboard-process-step { min-height:95px; }
    .role-dashboard-intro { align-items: flex-start; flex-direction: column; }
    .role-kpi-grid, .role-widget-grid, .role-chart-grid, .role-table-grid, .role-profile { grid-template-columns: 1fr; }
    .content-wrap { padding: 14px; }
    .topbar { padding: 0 12px; gap: 8px; }
    .topbar h1 { font-size: 15px; }
    .breadcrumb-line, .user-chevron { display: none; }
    .icon-button { width: 34px; height: 34px; }
    .user-profile { padding: 0; height: 36px; }
    .avatar { width: 32px; height: 32px; }
    .filter-bar { grid-template-columns: 1fr; padding: 14px; }
    .exec-updated { position: static; text-align: left; }
    .panel, .admin-tile, .exec-card, .data-health-card, .alerts-card { padding: 15px; }
    .exec-dashboard { gap: 14px; }
    .alert-summary-grid, .stats-grid { grid-template-columns: 1fr; }
    .chart-box, .chart-box.chart-sm { height: 240px; }
    .chart-box.chart-lg { height: 340px; }
}


/* Dashboard infographic: banner, luồng 12 bước và thống kê theo mẫu Dashboard_Infographic. */
.dashboard-welcome{position:relative;display:flex;min-height:150px;align-items:center;overflow:hidden;border-color:#F4B7AE;background:linear-gradient(135deg,#fff 0%,#fff 54%,#FCEBE7 54%,#FDF2EF 100%)}.dashboard-welcome:before{position:absolute;inset:0 auto 0 0;width:7px;background:var(--primary);content:''}.dashboard-welcome-heading{padding:25px 28px}.dashboard-welcome-kicker{display:flex;align-items:center;gap:6px}.dashboard-welcome h2{font-size:26px}.dashboard-talent-mark{display:flex;gap:3px;margin-left:auto;margin-right:118px;padding:5px;border:1px solid #F3B9B0;border-radius:8px;background:#fff}.dashboard-talent-mark b{display:inline-flex;width:31px;height:40px;align-items:center;justify-content:center;background:var(--primary);color:#fff;font-size:18px}.dashboard-talent-mark b:nth-child(2),.dashboard-talent-mark b:nth-child(5){background:#EE7C63}.dashboard-talent-mark b:nth-child(3){background:#E8561A}.dashboard-talent-mark b:nth-child(4),.dashboard-talent-mark b:nth-child(6){background:#414042}.dashboard-welcome-date{position:absolute;right:24px;top:25px;display:flex;align-items:center;gap:6px;padding:7px 10px;border:1px solid #F4B7AE;border-radius:8px;background:#fff;color:var(--text-secondary);font-size:12px}.dashboard-welcome-date i{color:var(--primary)}.dashboard-process{padding:19px 28px 17px;border-left:7px solid var(--primary);background:radial-gradient(circle at 7% 8%,rgba(237,40,43,.07),transparent 16%),radial-gradient(circle at 94% 14%,rgba(238,124,99,.13),transparent 19%),#fff7f5}.dashboard-process-head{justify-content:center;margin-bottom:36px;text-align:center}.dashboard-process-head h2{font-size:25px}.dashboard-process-head p{margin:5px 0 0;font-size:16px}.dashboard-process-rows{display:grid;gap:54px}.dashboard-process-row{display:grid;grid-template-columns:repeat(6,minmax(0,1fr));gap:36px;position:relative}.dashboard-process-row-return{direction:rtl}.dashboard-process-row-return .dashboard-process-step{direction:ltr}.dashboard-process-step{min-height:128px;border-radius:9px;background:linear-gradient(120deg,#A71B4A 0%,#C12C5C 59%,#F25A5B 100%)}.dashboard-process-step b{border-color:#A71B4A;color:#A71B4A}.dashboard-process-step:not(:nth-child(6n)):after{right:-31px;color:#8F274C;content:'\F0142'}.dashboard-process-row-return .dashboard-process-step:not(:nth-child(6n)):after{right:auto;left:-31px;content:'\F0141'}.dashboard-process-note{position:relative;z-index:1;display:block;margin-top:20px;color:var(--text-secondary);font-size:11px;text-align:center}.dashboard-stat-groups{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:14px}.dashboard-stat-group{overflow:hidden;border:1px solid #F4B7AE;border-top:4px solid var(--primary);border-radius:9px;background:#fff;box-shadow:var(--shadow)}.dashboard-stat-group:nth-child(2){border-top-color:#EE7C63}.dashboard-stat-group:nth-child(3){border-top-color:#E8561A}.dashboard-stat-group-head{display:flex;align-items:center;justify-content:space-between;padding:14px 16px;color:var(--text);font-size:16px;font-weight:700}.dashboard-stat-group-head:hover{color:var(--primary);background:#FFF8F7}.dashboard-stat-group-head span{display:flex;align-items:center;gap:9px}.dashboard-stat-group-head span i{display:inline-flex;width:30px;height:30px;align-items:center;justify-content:center;border:1px solid #F4B7AE;border-radius:7px;background:#FFF2EF;color:var(--primary)}.dashboard-stat-group-items{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));border-top:1px solid #F9D2CD}.dashboard-stat-group-items a{display:flex;min-height:74px;flex-direction:column;justify-content:center;padding:11px 16px;color:var(--text);border-right:1px solid #F9D2CD}.dashboard-stat-group-items a:last-child{border-right:0}.dashboard-stat-group-items a:hover{background:#FFF8F7}.dashboard-stat-group-items strong{color:var(--primary);font-size:23px;line-height:1.1}.dashboard-stat-group-items span{margin-top:4px;color:var(--text-secondary);font-size:12px;line-height:1.3}
@media (max-width:1600px){.dashboard-talent-mark{margin-right:108px}.dashboard-process-steps{grid-template-columns:initial}.dashboard-process-row{grid-template-columns:repeat(6,minmax(0,1fr));gap:28px}.dashboard-process-step:not(:nth-child(6n)):after{display:block}}
@media (max-width:1100px){.dashboard-welcome{min-height:132px}.dashboard-talent-mark{margin-right:0}.dashboard-welcome-date{display:none}.dashboard-process-row{grid-template-columns:repeat(3,minmax(0,1fr));gap:32px 22px}.dashboard-process-row-return{direction:ltr}.dashboard-process-row-return .dashboard-process-step{direction:ltr}.dashboard-process-row-return .dashboard-process-step:not(:nth-child(6n)):after{right:-22px;left:auto;content:'\F0142'}.dashboard-process-step:not(:nth-child(3n)):after{right:-22px}.dashboard-process-step:nth-child(3n):after{display:none}.dashboard-stat-groups{grid-template-columns:1fr}.dashboard-stat-group-items{max-width:520px}}
@media (max-width:560px){.dashboard-welcome{display:block;min-height:0}.dashboard-welcome-heading{padding:18px 20px}.dashboard-welcome h2{font-size:21px}.dashboard-talent-mark{width:max-content;margin:0 20px 20px}.dashboard-process{padding:17px 16px}.dashboard-process-head{margin-bottom:30px;text-align:left}.dashboard-process-head h2{font-size:19px}.dashboard-process-head p{font-size:13px}.dashboard-process-row{grid-template-columns:1fr;gap:28px}.dashboard-process-step{min-height:92px}.dashboard-process-step:after{display:none!important}.dashboard-process-rows{gap:28px}.dashboard-stat-group-items{grid-template-columns:1fr}.dashboard-stat-group-items a{border-right:0;border-bottom:1px solid #F9D2CD}.dashboard-stat-group-items a:last-child{border-bottom:0}}

/* Bám sát mẫu Dashboard_Infographic: luồng 6 bước đi, 6 bước về; dùng bảng màu thương hiệu. */
.dashboard-process{padding:20px 28px 17px}.dashboard-process-rows{position:relative;gap:40px}.dashboard-process-turn{position:absolute;right:4px;top:calc(50% - 18px);z-index:2;color:var(--primary);font-size:42px;transform:rotate(90deg)}.dashboard-process-step{background:linear-gradient(120deg,#C71924 0%,var(--primary) 52%,var(--primary-light) 100%)}.dashboard-process-step:hover{background:linear-gradient(120deg,#A9161B 0%,#D91D22 52%,#E8561A 100%)}.dashboard-process-step b{border-color:var(--primary);color:var(--primary)}.dashboard-process-step:not(:nth-child(6n)):after{color:var(--primary)}.dashboard-process-row-return .dashboard-process-step:last-child{background:linear-gradient(180deg,#FFF4F2 0 48%,var(--primary) 48% 100%);color:var(--primary)}.dashboard-process-row-return .dashboard-process-step:last-child span{color:#fff}
.dashboard-process-row>.dashboard-process-step:not(:last-child)::after{z-index:3;display:block;pointer-events:none;text-shadow:0 1px 0 #fff}.dashboard-process-row:not(.dashboard-process-row-return)>.dashboard-process-step:not(:last-child)::after{content:'\F0142';right:-31px;left:auto}.dashboard-process-row-return>.dashboard-process-step:not(:last-child)::after{content:'\F0141';right:auto;left:-31px}.dashboard-process-turn{z-index:4;display:block;filter:drop-shadow(0 1px 0 #fff)}
@media (max-width:1100px){.dashboard-process-turn{display:none}.dashboard-process-row-return>.dashboard-process-step:not(:last-child)::after{content:'\F0142';right:-22px;left:auto}}
@media (max-width:760px) and (min-width:561px){.dashboard-process-row{grid-template-columns:repeat(2,minmax(0,1fr));gap:30px 20px}.dashboard-process-step:not(:nth-child(3n)):after{display:none}.dashboard-process-step:not(:nth-child(2n)):after{display:block;right:-20px}.dashboard-stat-groups{grid-template-columns:1fr}.dashboard-stat-group-items{max-width:none}}

/* Dashboard infographic: use glyphs available in the bundled Material Design Icons font. */
.dashboard-process-row:not(.dashboard-process-row-return) > .dashboard-process-step:not(:last-child)::after { content: '\F054'; }
.dashboard-process-row-return > .dashboard-process-step:not(:last-child)::after { content: '\F04D'; }
.dashboard-process-turn { transform: none; }
.dashboard-process-turn::before { content: '\F045'; font-family: 'Material Design Icons'; }
.dashboard-process-step b { top: -15px; width: 32px; height: 32px; font-size: 16px; }
.dashboard-process-step span { font-size: 14px; }
.dashboard-process-row-return .dashboard-process-step:last-child i { transform: translateY(-16px); }
/* Statistic cards: match the Dashboard_Thongke reference. */
.dashboard-stat-groups { gap: 16px; }
.dashboard-stat-group { border: 1px solid #F1BBB4; border-top: 5px solid var(--primary); border-radius: 10px; box-shadow: none; }
.dashboard-stat-group:nth-child(2) { border-top-color: #EF826D; }
.dashboard-stat-group:nth-child(3) { border-top-color: #E95C22; }
.dashboard-stat-group-head { min-height: 64px; padding: 12px 18px; font-size: 17px; }
.dashboard-stat-group-head span { gap: 11px; }
.dashboard-stat-group-head span i { width: 36px; height: 36px; border-color: #F1BBB4; border-radius: 8px; background: #FFF5F4; font-size: 20px; }
.dashboard-stat-group-head > i { color: #94A3B8; font-size: 20px; }
.dashboard-stat-group-items { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 10px; padding: 0 18px 18px; border: 0; }
.dashboard-stat-group-items a { min-height: 110px; padding: 14px 12px 12px; border: 1px solid #F1BBB4; border-radius: 8px; background: #FFF8F9; }
.dashboard-stat-group-items a:hover { background: #FFF1F2; }
.dashboard-stat-group-items a > i { margin-bottom: 8px; color: var(--primary); font-size: 17px; line-height: 1; }
.dashboard-stat-group-items strong { color: #EE5B16; font-size: 32px; font-weight: 750; }
.dashboard-stat-group-items span { margin-top: 6px; color: var(--text); font-size: 12px; line-height: 1.25; }
@media (max-width:560px) {
    .dashboard-stat-group-items { grid-template-columns: 1fr; }
}
@media (max-width:1100px) {
    .dashboard-process-row-return > .dashboard-process-step:not(:last-child)::after { content: '\F054'; }
}

/* Faculty lifecycle */
.teacher-life-panel { padding: 0; overflow: hidden; }
.teacher-life-tabs { padding: 12px 14px 0; flex-wrap: nowrap; overflow-x: auto; scrollbar-width: thin; }
.teacher-life-tabs .nav-link { white-space: nowrap; font-size: 12px; font-weight: 500; color: var(--text-secondary); }
.teacher-life-tabs .nav-link.active { color: var(--primary); font-weight: 600; }
.teacher-life-content { padding: 20px; min-height: 320px; }
.life-info-grid { display: grid; grid-template-columns: repeat(4,minmax(0,1fr)); gap: 12px; }
.life-info-grid > div { min-width: 0; padding: 12px; background: #F8FAFC; border: 1px solid var(--border); border-radius: 8px; }
.life-info-grid span { display: block; color: var(--text-secondary); font-size: 11px; }
.life-info-grid strong { display: block; margin-top: 4px; font-size: 13px; font-weight: 600; overflow-wrap: anywhere; }
.life-timeline { position: relative; margin-left: 8px; padding-left: 22px; border-left: 2px solid #D9E2F2; }
.life-timeline-item { position: relative; padding: 0 0 20px 4px; }
.life-timeline-item::before { content: ''; position: absolute; left: -31px; top: 4px; width: 14px; height: 14px; border: 3px solid #DBEAFE; border-radius: 50%; background: var(--primary); }
.life-timeline-date { color: var(--primary); font-size: 11px; font-weight: 600; }
.life-add { margin-bottom: 20px; padding: 12px 14px; border: 1px solid var(--border); border-radius: 8px; background: #F8FAFC; }
.life-add summary { cursor: pointer; color: var(--primary); font-size: 13px; font-weight: 600; }
.life-add form { margin-top: 12px; }
.life-alert-strip { display: flex; gap: 8px; margin-bottom: 14px; overflow-x: auto; }
.life-alert-strip span { display: inline-flex; align-items: center; gap: 5px; flex: 0 0 auto; padding: 7px 10px; color: #991B1B; background: #FEF2F2; border: 1px solid #FECACA; border-radius: 7px; font-size: 11px; }
.life-alert-list { display: grid; gap: 7px; max-height: 245px; overflow-y: auto; }
.life-alert-list a { display: flex; gap: 9px; padding: 8px; color: var(--text); border-bottom: 1px solid var(--border); }
.life-alert-list i { color: var(--danger); font-size: 18px; }
.life-alert-list span, .life-alert-list strong, .life-alert-list small { display: block; min-width: 0; }
.life-alert-list strong { font-size: 12px; }.life-alert-list small { color: var(--text-secondary); font-size: 10px; }
@media(max-width:1100px){.life-info-grid{grid-template-columns:repeat(2,minmax(0,1fr));}}
@media(max-width:560px){.life-info-grid{grid-template-columns:1fr}.teacher-life-content{padding:14px}}

/* Admission combinations and Top scores */
.admission-combination-panel{padding:0;overflow:visible}.admission-combination-tabs{padding:12px 14px 0;flex-wrap:nowrap;overflow-x:auto}.admission-combination-tabs .nav-link{white-space:nowrap;font-size:12px}.combination-subject-picker{display:grid;gap:5px;max-height:260px;overflow-y:auto}.combination-subject-picker label{display:grid;grid-template-columns:auto 1fr 70px;gap:8px;align-items:center;padding:6px;border:1px solid var(--border);border-radius:6px}.combination-subject-picker input[type=number]{width:70px;border:1px solid var(--border);border-radius:5px;padding:3px}.top-score-filter{display:grid;grid-template-columns:repeat(4,minmax(130px,1fr));gap:8px}.top-score-filter .form-select,.top-score-filter .btn{min-width:0}.admission-program-combination-form{position:relative;z-index:3;padding:14px;border:1px solid #E7EBF0;border-radius:8px;background:#F8FAFC}.admission-program-combination-form .form-label{font-weight:700;color:#475569}.admission-program-combination-form .compact-multiselect-menu{max-height:min(360px,calc(100vh - 180px))}.admission-program-combination-form .form-text{margin-top:5px;font-size:12px;color:#64748B}.admission-program-combination-form .col-lg-2.d-flex.align-items-end{align-items:flex-start!important;padding-top:22px}@media(max-width:1100px){.top-score-filter{grid-template-columns:repeat(3,minmax(0,1fr))}}@media(max-width:991px){.admission-program-combination-form .row>div{margin-bottom:4px}.admission-program-combination-form .col-lg-2.d-flex.align-items-end{padding-top:0}}@media(max-width:560px){.top-score-filter{grid-template-columns:1fr}.admission-program-combination-form{padding:12px}}

.admission-combination-panel .tab-pane.show.active{display:block!important;opacity:1!important;visibility:visible!important}
.admission-subject-select[multiple],select[multiple].compact-multiselect-source{height:31px;min-height:31px;overflow:hidden;white-space:nowrap}
.admission-subject-select.is-enhanced,select[multiple].compact-multiselect-source.is-enhanced{position:absolute!important;width:1px!important;height:1px!important;min-height:1px!important;opacity:0!important;pointer-events:none!important}.compact-multiselect{position:relative;width:100%}.compact-multiselect.open{z-index:2000}.compact-multiselect-toggle{display:flex;align-items:center;justify-content:space-between;gap:8px;width:100%;min-height:38px;padding:7px 10px;border:1px solid #CED4DA;border-radius:4px;background:#fff;color:#64748B;font-size:13px;line-height:1.4;text-align:left}.compact-multiselect-toggle:focus{border-color:#86B7FE;outline:0;box-shadow:0 0 0 .2rem rgba(13,110,253,.18)}.form-select-sm.is-enhanced+.compact-multiselect .compact-multiselect-toggle{min-height:31px;padding:4px 8px;font-size:.875rem}.compact-multiselect.is-invalid .compact-multiselect-toggle{border-color:#DC2626;box-shadow:0 0 0 .18rem rgba(220,38,38,.14)}.compact-multiselect-label{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.compact-multiselect.has-value .compact-multiselect-label{color:#0F172A}.compact-multiselect-toggle i{flex:0 0 auto;color:#64748B;font-size:16px}.compact-multiselect-menu{position:absolute;z-index:2001;top:calc(100% + 4px);left:0;right:0;display:none;max-height:240px;padding:6px;overflow:auto;border:1px solid #CBD5E1;border-radius:6px;background:#fff;box-shadow:0 12px 30px rgba(15,23,42,.15)}.compact-multiselect.open .compact-multiselect-menu{display:grid;gap:2px}.compact-multiselect-option{display:flex;align-items:center;gap:7px;min-width:0;margin:0;padding:6px 7px;border-radius:5px;color:#0F172A;font-size:13px;cursor:pointer}.compact-multiselect-option:hover{background:#F1F5F9}.compact-multiselect-option input{flex:0 0 auto;margin:0}.compact-multiselect-option span{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.compact-multiselect-search{width:100%;min-height:34px;margin-bottom:4px;padding:6px 8px;border:1px solid #CBD5E1;border-radius:5px;font-size:13px;outline:0}.compact-multiselect-search:focus{border-color:#86B7FE;box-shadow:0 0 0 .18rem rgba(13,110,253,.14)}
.catalog-color-control{display:flex;gap:8px;align-items:center}.catalog-color-control .form-control-color{width:48px;min-width:48px;padding:4px}.catalog-color-value{max-width:160px}.catalog-color-swatches{display:flex;gap:7px;flex-wrap:wrap;margin-top:8px}.catalog-color-swatch{width:28px;height:28px;border:1px solid #CBD5E1;border-radius:6px;box-shadow:inset 0 0 0 1px rgba(255,255,255,.55);cursor:pointer}.catalog-color-swatch:focus{outline:2px solid rgba(37,99,235,.35);outline-offset:2px}.catalog-color-cell{display:inline-flex;align-items:center;gap:7px;white-space:nowrap}.catalog-color-dot{width:16px;height:16px;border:1px solid #CBD5E1;border-radius:4px;display:inline-block}


/* Dashboard mockup layout from docs/GiaodienDashboard.docx */
.executive-template{gap:16px}.dashboard-hero-panel{display:grid;grid-template-columns:minmax(300px,.92fr) minmax(560px,1.18fr);gap:18px;align-items:stretch;background:#fff;border:1px solid #E3E8F2;border-radius:8px;box-shadow:0 8px 24px rgba(15,23,42,.06);padding:18px}.dashboard-hero-copy{min-width:0;display:flex;flex-direction:column;justify-content:center}.dashboard-eyebrow,.dashboard-card-kicker{display:block;color:#64748B;font-size:11px;font-weight:700;letter-spacing:0;text-transform:uppercase}.dashboard-hero-copy h2{margin:5px 0 6px;color:#0F172A;font-size:24px;line-height:1.2;font-weight:800}.dashboard-hero-copy p{max-width:720px;margin:0;color:#475569;font-size:13px}.dashboard-freshness{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin-top:14px;color:#475569;font-size:12px}.dashboard-freshness i{font-size:17px;color:#2563EB}.freshness-warning{display:none;align-items:center;padding:4px 8px;border-radius:6px;background:#FFF7ED;color:#9A3412;border:1px solid #FED7AA}.dashboard-filter-bar{display:grid;grid-template-columns:repeat(2,minmax(0,1fr)) minmax(220px,1.4fr);gap:10px;align-content:center;padding:14px;border:1px solid #E6EAF2;border-radius:8px;background:#F8FAFC}.dashboard-filter-bar .filter-field-wide{grid-column:span 1}.dashboard-filter-bar .filter-field{min-width:0}.dashboard-filter-bar label{display:block;margin-bottom:4px;color:#64748B;font-size:11px;font-weight:600}.dashboard-filter-bar .form-select{width:100%;min-width:0;background-color:#fff}.dashboard-filter-bar .btn{min-height:38px;align-self:end;white-space:nowrap}.dashboard-primary-kpis{grid-template-columns:repeat(6,minmax(0,1fr));gap:12px}.dashboard-secondary-kpis{grid-template-columns:repeat(3,minmax(0,1fr));gap:12px}.dashboard-kpi-card{position:relative;min-height:112px;padding:14px;border:1px solid #E3E8F2;border-left:4px solid var(--kpi-color);border-radius:8px;background:linear-gradient(180deg,#fff 0%,var(--kpi-soft) 100%);box-shadow:0 8px 20px rgba(15,23,42,.055)}.dashboard-kpi-card .kpi-icon{width:40px;height:40px;border-radius:8px}.dashboard-kpi-card .kpi-label{font-size:12px;font-weight:650;color:#475569;min-height:31px}.dashboard-kpi-card .kpi-value{font-size:24px;color:#0F172A}.dashboard-kpi-card .kpi-change{font-size:11px}.dashboard-kpi-card .kpi-link{font-size:11px}.dashboard-main-grid{display:grid;grid-template-columns:minmax(0,1.35fr) minmax(360px,.75fr);gap:16px;align-items:stretch}.dashboard-map-card{min-height:640px}.dashboard-map-card .vn-map-host{min-height:560px}.dashboard-map-card .vn-map-host svg{min-height:530px}.dashboard-card-head{align-items:center}.dashboard-card-kicker{margin-bottom:3px}.dashboard-card-head .exec-card-title{font-size:16px;font-weight:800}.dashboard-side-stack{display:grid;grid-template-rows:minmax(260px,.9fr) minmax(0,1fr);gap:16px;min-width:0}.dashboard-side-metrics{display:grid;grid-template-columns:1fr;gap:16px;min-width:0}.dashboard-side-stack .compact-card{min-height:220px}.dashboard-side-stack .chart-box{height:230px}.dashboard-side-stack .chart-box.chart-sm{height:170px}.dashboard-analysis-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:14px}.dashboard-analysis-grid>.exec-card:nth-child(1),.dashboard-analysis-grid>.exec-card:nth-child(2){grid-column:span 1}.executive-template .exec-card,.executive-template .data-health-card{border-radius:8px;border-color:#E3E8F2;box-shadow:0 8px 20px rgba(15,23,42,.055)}.executive-template .exec-card-title{font-size:14px;font-weight:750;color:#0F172A}.executive-template .exec-section-heading{font-size:16px;font-weight:800}.executive-template .exec-section-heading::before{width:4px;height:20px;border-radius:4px;background:#2563EB}.executive-template .chart-box{height:250px}.executive-template .chart-box.chart-sm{height:190px}.executive-template .compact-card{min-height:258px}.executive-template .map-toolbar select{max-width:230px}.executive-template .alert-summary-card{border-radius:8px}.executive-template .identity-quality-item{border-radius:8px;background:#F8FAFC}.executive-template .scholarship-kpi{min-height:178px}.executive-template .vn-map-card .vn-map-host{background:#fff}.dashboard-skeleton{border-radius:8px;background:#E8EEF7;min-height:112px}@media(max-width:1680px){.dashboard-primary-kpis{grid-template-columns:repeat(3,minmax(0,1fr))}.dashboard-main-grid{grid-template-columns:minmax(0,1.15fr) minmax(340px,.85fr)}.dashboard-analysis-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}@media(max-width:1366px){.dashboard-hero-panel{grid-template-columns:1fr}.dashboard-filter-bar{grid-template-columns:repeat(3,minmax(0,1fr))}.dashboard-main-grid{grid-template-columns:1fr}.dashboard-side-stack{grid-template-columns:1fr 1fr;grid-template-rows:auto}.dashboard-side-metrics{grid-template-columns:1fr}.dashboard-map-card{min-height:560px}.dashboard-map-card .vn-map-host{min-height:480px}.dashboard-map-card .vn-map-host svg{min-height:460px}}@media(max-width:1100px){.dashboard-primary-kpis,.dashboard-secondary-kpis{grid-template-columns:repeat(2,minmax(0,1fr))}.dashboard-side-stack,.dashboard-analysis-grid{grid-template-columns:1fr}.dashboard-filter-bar{grid-template-columns:repeat(2,minmax(0,1fr))}}@media(max-width:640px){.dashboard-hero-panel{padding:14px}.dashboard-hero-copy h2{font-size:20px}.dashboard-filter-bar,.dashboard-primary-kpis,.dashboard-secondary-kpis{grid-template-columns:1fr}.dashboard-filter-bar .btn{width:100%}.dashboard-map-card{min-height:440px}.dashboard-map-card .vn-map-host{min-height:360px}.dashboard-map-card .vn-map-host svg{min-height:340px}.dashboard-kpi-card{min-height:104px}.dashboard-kpi-card .kpi-value{font-size:22px}}


/* Dashboard data refinements */
.executive-template .dashboard-primary-kpis{grid-template-columns:repeat(4,minmax(0,1fr))}.executive-template .dashboard-kpi-card{min-height:108px}.scholarship-kpi .scholarship-total strong{font-size:28px}.scholarship-meta{display:grid;grid-template-columns:1fr 1fr;gap:10px}.scholarship-meta>div{padding:9px 10px;border:1px solid #E6EAF2;border-radius:8px;background:#F8FAFC}.scholarship-meta span,.scholarship-level-row span{display:block;color:#64748B;font-size:11px}.scholarship-meta strong{display:block;color:#0F172A;font-size:15px;line-height:1.2;overflow-wrap:anywhere}.scholarship-levels{display:grid;gap:8px;margin-top:2px}.scholarship-level-row{display:grid;grid-template-columns:minmax(72px,.75fr) minmax(90px,1fr) 44px;gap:8px;align-items:center}.scholarship-level-row strong{font-size:16px}.scholarship-level-row em{font-style:normal;color:#475569;font-size:11px;text-align:right}.scholarship-level-bar{height:8px;border-radius:999px;background:#E8EEF7;overflow:hidden}.scholarship-level-bar i{display:block;height:100%;border-radius:999px;background:#2563EB}@media(max-width:1680px){.executive-template .dashboard-primary-kpis{grid-template-columns:repeat(4,minmax(0,1fr))}}@media(max-width:1366px){.executive-template .dashboard-primary-kpis{grid-template-columns:repeat(2,minmax(0,1fr))}}@media(max-width:640px){.executive-template .dashboard-primary-kpis{grid-template-columns:1fr}.scholarship-meta{grid-template-columns:1fr}}

.executive-template .dashboard-map-card,.executive-template .dashboard-map-card .vn-map-host,.executive-template .dashboard-map-card svg{background:#FFFFFF!important}

.catalog-record-modal .modal-dialog {
    max-width: min(1240px, calc(100vw - 32px));
}
.catalog-record-modal iframe {
    display: block;
    width: 100%;
    height: min(78vh, 820px);
    border: 0;
    background: #fff;
}
.catalog-record-modal .modal-content{max-height:calc(100vh - 32px)}.catalog-record-modal-header{position:sticky;top:0;z-index:5;flex:0 0 auto;min-height:58px;padding:8px 14px;background:#fff;border-bottom:1px solid #E2E8F0}.catalog-modal-close{display:inline-flex;align-items:center;justify-content:center;width:42px;height:42px;margin:0;padding:0;flex:0 0 42px;border:1px solid #CBD5E1;border-radius:8px;background:#fff;color:#334155;font-size:25px;line-height:1;box-shadow:0 1px 2px rgba(15,23,42,.06)}.catalog-modal-close:hover{background:#FEE2E2;border-color:#FCA5A5;color:#B91C1C}.catalog-modal-close:focus{outline:0;box-shadow:0 0 0 .2rem rgba(37,99,235,.22)}.catalog-modal-close i{display:block;line-height:1}.catalog-record-modal .modal-body{overflow:auto}
.institution-tabs-shell{padding:0;background:#fff}.institution-tabs-head{display:flex;justify-content:space-between;align-items:center;gap:12px;padding:14px 16px 12px;border-bottom:1px solid #E2E8F0;background:#F8FAFC}.institution-tabs-head h2{margin:0;color:#0F172A;font-size:18px;font-weight:800;line-height:1.25;letter-spacing:0}.institution-sheet-tabs{position:sticky;top:0;z-index:4;padding:8px 12px 0;background:#fff;border-bottom:1px solid #E2E8F0;gap:4px;overflow-x:auto;overflow-y:hidden;flex-wrap:nowrap}.institution-sheet-tabs .nav-link{white-space:nowrap;border-radius:7px 7px 0 0;color:#475569;font-size:12px;font-weight:700}.institution-sheet-tabs .nav-link.active{color:#0F172A;background:#EFF6FF;border-color:#BFDBFE #BFDBFE #fff}.institution-sheet-content{padding:16px}.institution-sheet-content .form-label{font-size:12px;font-weight:650;color:#334155}.institution-tab-actions{position:sticky;bottom:0;z-index:3;display:flex;gap:8px;padding:12px 0 0;background:linear-gradient(180deg,rgba(255,255,255,.75),#fff 45%)}.institution-related-head{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:10px}.institution-related-head strong{display:block;color:#0F172A;font-size:15px}.institution-related-table{max-height:62vh;border:1px solid #E2E8F0;border-radius:8px}.institution-related-table table{margin:0}.institution-related-table thead th{position:sticky;top:0;z-index:1;background:#F8FAFC;color:#334155;font-size:12px;white-space:nowrap}.institution-related-table td{font-size:12px;min-width:150px;max-width:420px;overflow-wrap:anywhere;background:#fff}.institution-related-table td:first-child,.institution-related-table th:first-child{width:58px;min-width:58px;text-align:center}.institution-related-table th:last-child,.institution-related-table td:last-child{width:76px;min-width:76px;text-align:center}.institution-inline-input{min-width:140px;font-size:12px}.institution-related-table textarea.institution-inline-input{min-width:260px}.institution-row-actions{white-space:nowrap}.institution-row-action{display:inline-flex!important;align-items:center;justify-content:center;width:30px;height:30px;min-height:30px;padding:0!important;margin:1px}.institution-row-action i{font-size:16px;line-height:1}.institution-new-row td{background:#F8FAFC}.catalog-record-modal .modal-content{overflow:hidden}.catalog-record-modal iframe{display:block;width:100%;height:82vh;border:0}@media(max-width:768px){.institution-tabs-head{align-items:flex-start;flex-direction:column}.institution-sheet-content{padding:12px}.institution-related-table{max-height:58vh}.catalog-record-modal iframe{height:86vh}}

.catalog-import-tools{display:flex;flex-wrap:wrap;align-items:center;gap:8px;width:100%}.catalog-import-tools .btn{white-space:nowrap;flex:0 0 auto}.catalog-import-modal .modal-dialog{max-width:560px}.catalog-import-modal .modal-header{align-items:flex-start}.catalog-import-modal .modal-body{padding:20px}.catalog-import-modal .form-label{color:#334155;font-size:13px;font-weight:700}.catalog-import-actions{display:flex;flex-wrap:wrap;gap:8px}.catalog-import-close{display:inline-flex;align-items:center;justify-content:center;flex:0 0 36px;width:36px;height:36px;margin:0 0 0 auto;padding:0;border:1px solid #cbd5e1;border-radius:6px;background:#fff;color:#334155;font-size:20px;line-height:1;cursor:pointer}.catalog-import-close:hover{border-color:#fca5a5;background:#fee2e2;color:#b91c1c}.catalog-import-close:focus{outline:0;box-shadow:0 0 0 .2rem rgba(37,99,235,.22)}.catalog-import-close i{display:block;line-height:1}.catalog-import-modal .shared-import-status{margin:16px 0 0}.catalog-import-modal .shared-import-status .table-responsive{width:100%;overflow-x:auto}.catalog-import-modal .shared-import-status table{min-width:720px}.catalog-import-modal .shared-import-status th,.catalog-import-modal .shared-import-status td{white-space:nowrap}.shared-import-status>summary{cursor:pointer;list-style:none}.shared-import-status>summary::-webkit-details-marker{display:none}.shared-import-status>summary::after{content:'⌄';float:right;color:#64748B;font-size:18px;line-height:1}.shared-import-status[open]>summary::after{transform:rotate(180deg)}
.system-import-modal .modal-dialog{max-width:560px}.system-import-modal .modal-header{align-items:flex-start}.system-import-modal .modal-body{padding:20px}.system-import-modal .form-label{color:#334155;font-size:13px;font-weight:700}.system-import-actions{display:flex;flex-wrap:wrap;align-items:center;gap:8px}.system-import-close{display:inline-flex;align-items:center;justify-content:center;flex:0 0 36px;width:36px;height:36px;margin:0 0 0 auto;padding:0;border:1px solid #cbd5e1;border-radius:6px;background:#fff;color:#334155;font-size:20px;line-height:1;cursor:pointer}.system-import-close:hover{border-color:#fca5a5;background:#fee2e2;color:#b91c1c}.system-import-close:focus{outline:0;box-shadow:0 0 0 .2rem rgba(37,99,235,.22)}.system-import-close i{display:block;line-height:1}.system-import-modal .shared-import-status{margin:16px 0 0}.system-import-modal .shared-import-status .table-responsive{width:100%;overflow-x:auto}.system-import-modal .shared-import-status table{min-width:720px}.system-import-modal .shared-import-status th,.system-import-modal .shared-import-status td{white-space:nowrap}.system-table-panel{overflow:hidden}.system-table-responsive{width:100%;max-width:100%;margin:0;border-right:0;border-bottom:0;border-left:0;border-radius:0;overflow-x:auto;overflow-y:hidden}.system-table-responsive .dataTables_wrapper{width:100%;min-width:0;padding:0}.system-table-responsive .dataTables_scroll,.system-table-responsive .dataTables_scrollHead,.system-table-responsive .dataTables_scrollBody{width:100%!important}.system-table-responsive .dataTables_length,.system-table-responsive .dataTables_filter,.system-table-responsive .dataTables_info,.system-table-responsive .dataTables_paginate{margin:12px}.system-table-responsive .dataTables_length select{min-width:72px;margin:0 6px}.system-table-responsive table{width:100%!important;margin:0!important}.system-action-cell{width:76px;min-width:76px;padding:6px!important;text-align:center;vertical-align:middle!important;white-space:nowrap}.system-icon-action{display:inline-flex!important;align-items:center;justify-content:center;width:30px;min-width:30px;height:30px;min-height:30px;padding:0!important;line-height:1}.system-icon-action i{font-size:16px;line-height:1}.system-api-action-cell{min-width:152px;padding:6px!important;text-align:center;vertical-align:middle!important;white-space:nowrap}.system-api-action-cell .btn{display:inline-flex!important;align-items:center;justify-content:center;width:30px;min-width:30px;height:30px;min-height:30px;padding:0!important;line-height:1}.system-api-action-cell .btn i{font-size:16px;line-height:1}

/* Bảng chỉ tiêu cần đủ chiều rộng để nhập liên tục như bảng tính. */
.admission-target-modal .modal-dialog{width:min(1400px,96vw);max-width:min(1400px,96vw)}
body.modal-open .mis-chat-toggle,body.modal-open .feedback-floating-button{display:none!important}

/* Tooltip nền sáng, dễ đọc và không bắt con trỏ để tránh nhấp nháy. */
.admission-target-modal-close{display:inline-flex;align-items:center;justify-content:center;width:36px;height:36px;margin:0 0 0 auto;padding:0;border:1px solid #cbd5e1;border-radius:6px;background:#fff;color:#334155;font-size:20px;line-height:1;cursor:pointer}.admission-target-modal-close:hover{background:#fee2e2;border-color:#fca5a5;color:#b91c1c}.admission-target-modal-close:focus{outline:0;box-shadow:0 0 0 .2rem rgba(37,99,235,.22)}.admission-target-modal-close i{display:block;line-height:1}
.admission-target-action-button{display:inline-flex!important;align-items:center;justify-content:center;width:26px;height:26px;padding:0!important;font-size:.7rem!important;line-height:1}.admission-target-action-button i{font-size:inherit;line-height:1}
.admission-target-page-head{display:flex;align-items:center;justify-content:space-between;gap:18px;margin-bottom:16px;padding:18px 20px;border:1px solid #dbe5f1;border-radius:10px;background:linear-gradient(125deg,#f8fbff 0%,#fff 62%)}.admission-target-page-copy{min-width:0}.admission-target-page-kicker{display:block;margin-bottom:3px;color:#2563eb;font-size:11px;font-weight:800;letter-spacing:.08em;text-transform:uppercase}.admission-target-page-copy h2{margin:0;color:#0f172a;font-size:21px;font-weight:800}.admission-target-page-copy p{margin:4px 0 0;color:#64748b;font-size:13px}.admission-target-page-actions{display:flex;gap:8px;flex:0 0 auto}.admission-target-page-actions .btn{display:inline-flex;align-items:center;gap:6px;white-space:nowrap}.admission-target-list-panel{padding:0;overflow:hidden}.admission-target-list-head{display:flex;align-items:center;justify-content:space-between;gap:14px;padding:15px 18px;border-bottom:1px solid #e2e8f0}.admission-target-list-head .panel-heading{font-size:15px}.admission-target-list-head p{margin:0;color:#64748b;font-size:12px}.admission-target-total{display:inline-flex;align-items:center;gap:5px;padding:5px 9px;border:1px solid #dbeafe;border-radius:999px;background:#eff6ff;color:#1d4ed8;font-size:12px;font-weight:700;white-space:nowrap}.admission-target-table thead th{padding:11px 12px;border-bottom:1px solid #dbe3ee;background:#f8fafc;color:#475569;font-size:11px;font-weight:800;letter-spacing:.025em;text-transform:uppercase;white-space:nowrap}.admission-target-table tbody td{padding:11px 12px;color:#334155;font-size:13px;vertical-align:middle}.admission-target-table tbody tr:hover{background:#f8fbff}.admission-target-subtext,.admission-target-program-name{display:block;margin-top:2px;color:#64748b;font-size:12px;line-height:1.35}.admission-target-program-name{color:#2563eb;text-decoration:none}.admission-target-program-name:hover{text-decoration:underline}.admission-target-program-code{color:#0f172a;font-size:12px}.admission-target-year{display:inline-flex;min-width:44px;justify-content:center;padding:3px 6px;border-radius:5px;background:#f1f5f9;color:#475569;font-size:12px;font-weight:700}.admission-target-count{color:#0f172a;font-size:15px}.admission-target-status{display:inline-flex;align-items:center;padding:4px 8px;border:1px solid #cbd5e1;border-radius:999px;background:#f8fafc;color:#475569;font-size:11px;font-weight:700;white-space:nowrap}.admission-target-status.is-draft{border-color:#cbd5e1;background:#f8fafc;color:#475569}.admission-target-status.is-submitted{border-color:#bfdbfe;background:#eff6ff;color:#1d4ed8}.admission-target-status.is-approved,.admission-target-status.is-active{border-color:#bbf7d0;background:#f0fdf4;color:#15803d}.admission-target-status.is-inactive{border-color:#fecaca;background:#fef2f2;color:#b91c1c}.admission-target-row-actions{display:inline-flex;align-items:center;gap:5px}.admission-target-empty{display:flex;min-height:180px;align-items:center;justify-content:center;flex-direction:column;gap:5px;color:#64748b;text-align:center}.admission-target-empty i{color:#93c5fd;font-size:34px}.admission-target-empty strong{color:#334155;font-size:14px}.admission-target-empty span{font-size:12px}
@media(max-width:760px){.admission-target-page-head{align-items:flex-start;flex-direction:column;padding:15px}.admission-target-page-actions{width:100%}.admission-target-page-actions .btn{flex:1;justify-content:center}.admission-target-list-head{align-items:flex-start;flex-direction:column;padding:14px}.admission-target-table thead{display:none}.admission-target-table,.admission-target-table tbody,.admission-target-table tr,.admission-target-table td{display:block;width:100%}.admission-target-table tbody{display:grid;gap:10px;padding:10px}.admission-target-table tbody tr{padding:11px;border:1px solid #e2e8f0;border-radius:8px;background:#fff}.admission-target-table tbody td{display:flex;justify-content:space-between;gap:14px;padding:5px 0;border:0;text-align:right!important}.admission-target-table tbody td::before{content:attr(data-label);flex:0 0 82px;color:#64748b;font-size:11px;font-weight:800;text-align:left;text-transform:uppercase}.admission-target-table tbody td[data-label="CTĐT"]>strong,.admission-target-table tbody td[data-label="CTĐT"]>a,.admission-target-table tbody td[data-label="CTĐT"]>span{max-width:65%;text-align:right}.admission-target-table tbody td[data-label="Thao tác"]{align-items:center}.admission-target-table tbody td[data-label="Thao tác"]>div{margin-left:auto}.admission-target-table tbody tr:has(.admission-target-empty){padding:0}.admission-target-table tbody tr:has(.admission-target-empty) td{display:block;text-align:center!important}.admission-target-table tbody tr:has(.admission-target-empty) td::before{display:none}}
.tooltip{--bs-tooltip-bg:#FFFFFF;--bs-tooltip-color:#1E293B;--bs-tooltip-opacity:1;--bs-tooltip-max-width:280px;pointer-events:none}.tooltip .tooltip-inner{padding:8px 10px;border:1px solid #BFDBFE;border-radius:7px;background:#FFFFFF;color:#1E293B;font-size:12px;font-weight:600;line-height:1.4;box-shadow:0 8px 20px rgba(15,23,42,.14)}.bs-tooltip-top .tooltip-arrow::before{border-top-color:#FFFFFF}.bs-tooltip-bottom .tooltip-arrow::before{border-bottom-color:#FFFFFF}.bs-tooltip-start .tooltip-arrow::before{border-left-color:#FFFFFF}.bs-tooltip-end .tooltip-arrow::before{border-right-color:#FFFFFF}

/* Ô chọn trong bảng luôn nằm chính giữa ô, kể cả khi Bootstrap/DataTables ghi đè kiểu mặc định. */
.table thead th:has(> input[type="checkbox"]),
.table tbody td:has(> input[type="checkbox"]) { padding: 0 !important; text-align: center !important; vertical-align: middle !important; }
.table thead th > input[type="checkbox"],
.table tbody td > input[type="checkbox"] { display: inline-block !important; float: none !important; margin: 0 !important; vertical-align: middle !important; transform: translateY(0) !important; }

/* Giao diện hệ thống: áp dụng ngôn ngữ thị giác từ các mẫu trong docs/Giaodien. */
.content-wrap { background: var(--background); }
.topbar-title h1 { font-size: 18px; font-weight: 700; }
.breadcrumb-line { color: #8A94A3; }
.global-search { height: 40px; border-radius: 20px; background: #F5F7FA; border-color: #E5E9EF; }
.global-search:focus-within { background: #FFFFFF; border-color: #F1A7AB; box-shadow: 0 0 0 .18rem rgba(229,35,44,.10); }
.icon-button:hover { color: var(--primary); background: #FFF1F2; border-color: #FFD7DA; }
.user-profile { border-left-color: #E8EBEF; border-radius: 7px; }
.user-profile:hover { background: #F7F8FA; }
.avatar { background: #FFF0F1; color: var(--primary); }
.logo-avatar { background: #FFFFFF; }
.app-footer { background: #FFFFFF; border-top-color: #F7B3AA; }

.panel { border-color: #F7B3AA; }
.filter-bar, .dashboard-filter-bar, .card, .modal-content { border-color: #E4E8EE; }
.panel-heading, .exec-card-title, .card-title { color: #252A31; font-weight: 700; }
.filter-bar, .dashboard-filter-bar { background: #FFFFFF; }
.card-header { border-bottom-color: #E9EDF2; background: #FFFFFF; }
.table-responsive { border: 1px solid #E7EBF0; border-radius: 8px; background: #FFFFFF; }
.table thead th { background: #F6F8FA; color: #4B5563; border-bottom-color: #DEE4EB; font-weight: 700; }
.table td, .table th { border-color: #E7EBF0; }
.table-striped > tbody > tr:nth-of-type(odd) > * { --bs-table-accent-bg: #FBFCFD; }
.table-hover > tbody > tr:hover > * { --bs-table-accent-bg: #FFF7F7; }
.dataTables_wrapper .dataTables_paginate .paginate_button.current,
.page-item.active .page-link { background: var(--primary) !important; border-color: var(--primary) !important; color: #FFFFFF !important; }
.page-link { color: var(--primary); }

.btn { min-height: 38px; padding: 7px 14px; font-weight: 600; }
/* Nút phẳng theo mẫu ButtonColor1: nền nhạt, viền màu và không có bóng đổ. */
.btn { color: #252A31; box-shadow: none !important; }
.admission-target-row-actions .admission-target-action-button { display: inline-flex !important; align-items: center; justify-content: center; box-sizing: border-box; flex: 0 0 30px; width: 30px !important; min-width: 30px !important; max-width: 30px !important; height: 30px !important; min-height: 30px !important; max-height: 30px !important; padding: 0 !important; line-height: 1 !important; }
.admission-target-row-actions .admission-target-action-button i { line-height: 1 !important; }
.admission-target-table tbody tr.is-inline-editing td{background:#fffbea}.admission-target-inline-count{width:110px;margin-left:auto;text-align:right}.admission-target-inline-status{width:150px;min-width:150px}.admission-target-table tbody tr.is-inline-editing .admission-target-row-actions{white-space:nowrap}
.admission-target-index{width:54px;min-width:54px;color:#64748b;font-weight:700}.admission-target-list-panel .dataTables_wrapper{padding:0 0 12px}.admission-target-list-panel .dataTables_length,.admission-target-list-panel .dataTables_filter{margin:12px 14px}.admission-target-list-panel .dataTables_info{padding:10px 14px 0}.admission-target-list-panel .dataTables_paginate{padding:8px 14px 0}
.training-program-workspace{display:flex;align-items:center;justify-content:space-between;gap:18px;padding:16px 18px;border:1px solid #dbe5f1;background:linear-gradient(120deg,#f8fbff 0%,#fff 66%)}.training-program-workspace-copy{display:grid;gap:3px;min-width:0}.training-program-workspace-kicker{color:#2563eb;font-size:11px;font-weight:800;letter-spacing:.07em;text-transform:uppercase}.training-program-workspace-copy strong{color:#0f172a;font-size:16px}.training-program-workspace-copy span:last-child{color:#64748b;font-size:12px}.training-program-workspace-actions,.training-program-create-tools{display:flex;align-items:center;justify-content:flex-end;gap:8px;flex-wrap:wrap}.training-program-create-tools{flex-wrap:nowrap}.training-program-create-tools .form-select{width:260px;min-height:38px}.training-program-workspace-actions .btn{display:inline-flex;align-items:center;gap:6px;min-height:38px;white-space:nowrap}.training-program-import-modal-content .modal-header{align-items:flex-start}.training-program-import-modal-content .modal-title{color:#0f172a;font-weight:750}.training-program-import-modal-content .training-program-import-form{display:block;margin:0}.training-program-import-modal-content .modal-body{padding:20px}.training-program-import-modal-content .modal-footer{gap:8px}.training-program-import-modal-content .form-label{color:#334155;font-size:13px;font-weight:700}.training-program-import-close{display:inline-flex;align-items:center;justify-content:center;flex:0 0 36px;width:36px;height:36px;margin:0 0 0 auto;padding:0;border:1px solid #cbd5e1;border-radius:6px;background:#fff;color:#334155;font-size:20px;line-height:1;cursor:pointer}.training-program-import-close:hover{border-color:#fca5a5;background:#fee2e2;color:#b91c1c}.training-program-import-close:focus{outline:0;box-shadow:0 0 0 .2rem rgba(37,99,235,.22)}.training-program-import-close i{display:block;line-height:1}
.training-program-list-panel{padding:0;overflow:hidden}.training-program-list-head{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:14px 16px;border-bottom:1px solid #e2e8f0;background:#fff}.training-program-list-head>div{display:grid;gap:2px}.training-program-list-head strong{color:#0f172a;font-size:15px}.training-program-list-head span{color:#64748b;font-size:12px}.training-program-bulk-delete{margin:0}.training-program-bulk-delete .btn{display:inline-flex;align-items:center;gap:5px;white-space:nowrap}@media(max-width:575.98px){.training-program-list-head{align-items:flex-start;flex-direction:column}.training-program-bulk-delete,.training-program-bulk-delete .btn{width:100%;justify-content:center}}
.training-program-table-responsive{width:100%;max-width:100%;margin:0;border:0;border-radius:0;overflow-x:auto;overflow-y:hidden}.training-program-table-responsive .dataTables_wrapper,.training-program-table-responsive .dataTables_scroll{width:100%;min-width:0}.training-program-table-responsive .dataTables_scrollHead,.training-program-table-responsive .dataTables_scrollBody{width:100%!important}.training-program-table-responsive table{margin:0}.training-program-table-responsive th,.training-program-table-responsive td{vertical-align:middle;white-space:normal;overflow-wrap:anywhere}.training-program-table-responsive th:last-child,.training-program-table-responsive td:last-child{white-space:nowrap}
.training-program-actions .training-program-action-button{display:inline-flex!important;align-items:center;justify-content:center;box-sizing:border-box;flex:0 0 30px;width:30px!important;min-width:30px!important;max-width:30px!important;height:30px!important;min-height:30px!important;max-height:30px!important;padding:0!important;font-size:.78rem!important;line-height:1!important}.training-program-actions .training-program-action-button i{line-height:1!important}
#trainingProgramTable th.training-program-select-column,#trainingProgramTable td.training-program-select-column{width:52px!important;min-width:52px!important;max-width:52px!important;padding:0!important;text-align:center!important;vertical-align:middle!important}#trainingProgramTable th.training-program-select-column .form-check-input,#trainingProgramTable td.training-program-select-column .form-check-input{display:inline-block;float:none;width:16px;height:16px;margin:0!important;vertical-align:middle}
#trainingProgramTable_wrapper .dataTables_scrollHead col:first-child,#trainingProgramTable_wrapper .dataTables_scrollBody col:first-child{width:52px!important;min-width:52px!important;max-width:52px!important}
/* DataTables tách đầu bảng và thân bảng; đầu bảng giữ thêm 12px cho cột đầu.
   Bù lại nửa phần chênh để checkbox Chọn tất cả cùng trục với các dòng. */
#trainingProgramTable_wrapper .dataTables_scrollHead .training-program-select-control{transform:translateX(6px)}
.training-program-select-control{display:inline-flex;align-items:center;justify-content:center;width:20px;height:20px;vertical-align:middle}.training-program-select-control .form-check-input{display:block!important;float:none!important;flex:0 0 16px;width:16px!important;height:16px!important;margin:0!important}
@media(max-width:1199.98px){#trainingProgramTable .training-program-type-column{display:none}.training-program-table-responsive .dataTables_scrollHeadInner,.training-program-table-responsive .dataTables_scrollHeadInner table{width:100%!important}}
@media(max-width:767.98px){.training-program-workspace{align-items:flex-start;flex-direction:column;padding:15px}.training-program-workspace-actions,.training-program-create-tools{width:100%;justify-content:flex-start}.training-program-create-tools{flex-wrap:wrap}.training-program-workspace-actions .form-select,.training-program-workspace-actions .btn{flex:1 1 100%;width:100%;min-width:0;justify-content:center}.training-program-import-modal-content .modal-footer .btn{flex:1 1 auto}}
.btn:focus, .btn.focus { box-shadow: none !important; outline: 2px solid rgba(238,124,99,.45); outline-offset: 1px; }
.btn-primary, .btn-outline-primary { color: #252A31; background: #FDEDE9; border-color: #EE7C63; }
.btn-primary:hover, .btn-primary:focus, .btn-primary.active, .btn-primary[aria-pressed="true"], .btn-primary:not(:disabled):not(.disabled):active, .btn-primary:not(:disabled):not(.disabled).active,
.btn-outline-primary:hover, .btn-outline-primary:focus, .btn-outline-primary.active, .btn-outline-primary:not(:disabled):not(.disabled):active { color: #252A31; background: #F7B3AA; border-color: #EE7C63; }
.btn-primary:disabled, .btn-primary.disabled,
.btn-outline-primary:disabled, .btn-outline-primary.disabled { color: #252A31; background: #FDEDE9; border-color: #EE7C63; opacity: .72; }
.btn-secondary, .btn-outline-secondary { color: #252A31; background: #FDEDE9; border-color: #EE7C63; }
.btn-secondary:hover, .btn-secondary:focus, .btn-outline-secondary:hover, .btn-outline-secondary:focus { color: #252A31; background: #F7B3AA; border-color: #EE7C63; }
.btn-success, .btn-outline-success { color: #3F7DBB; background: #EFF6FF; border-color: #73A5D7; }
.btn-success:hover, .btn-success:focus, .btn-outline-success:hover, .btn-outline-success:focus { color: #2F669D; background: #DCEBFA; border-color: #5D94CC; }
.btn-info, .btn-outline-info { color: #1899AF; background: #EEFBFC; border-color: #5CC0CE; }
.btn-info:hover, .btn-info:focus, .btn-outline-info:hover, .btn-outline-info:focus { color: #137D90; background: #D8F3F6; border-color: #40ADBC; }
.btn-warning, .btn-outline-warning { color: #A16207; background: #FFF8E8; border-color: #E8B75A; }
.btn-warning:hover, .btn-warning:focus, .btn-outline-warning:hover, .btn-outline-warning:focus { color: #854D0E; background: #FDE9B8; border-color: #D9A640; }
.btn-danger { color: #252A31; background: #EE7C63; border-color: #EE7C63; }
.btn-danger:hover, .btn-danger:focus, .btn-danger.active, .btn-danger:not(:disabled):not(.disabled):active { color: #252A31; background: #E66B52; border-color: #E66B52; }
.btn-outline-danger { color: #252A31; background: #FDEDE9; border-color: #EE7C63; }
.btn-outline-danger:hover, .btn-outline-danger:focus { color: #252A31; background: #F7B3AA; border-color: #EE7C63; }
.btn-light { color: #252A31; background: #F8FAFC; border-color: #CBD5E1; }
.btn-light:hover, .btn-light:focus { color: #252A31; background: #E9EEF4; border-color: #AEB7C2; }
.btn-import { color: #252A31; background: #FDEDE9; border-color: #EE7C63; }
.btn-import:hover, .btn-import:focus { color: #252A31; background: #F7B3AA; border-color: #EE7C63; }
.candidate-header-actions .candidate-export-button,
.candidate-header-actions .candidate-delete-all-button { min-height: 38px; border-width: 1px; border-radius: var(--radius-sm); box-shadow: none !important; }
.candidate-header-actions .candidate-delete-all-button { color: #F8FAFC; }
.candidate-header-actions .candidate-delete-all-button:hover,
.candidate-header-actions .candidate-delete-all-button:focus { color: #F8FAFC; }
.form-control:focus, .form-select:focus { border-color: #F08A90; box-shadow: 0 0 0 .18rem rgba(229,35,44,.10); }
.select2-container--default.select2-container--focus .select2-selection--single,
.select2-container--default.select2-container--open .select2-selection--single { border-color: #F08A90; box-shadow: 0 0 0 .18rem rgba(229,35,44,.10); }
.select2-container--default .select2-results__option--highlighted[aria-selected] { background: var(--primary); }

.kpi-value, .dashboard-kpi-card .kpi-value, .role-kpi-card strong, .update-number,
.scholarship-kpi strong, .alert-summary-card strong { color: #E8561A; }
.exec-section-heading::before, .executive-template .exec-section-heading::before { background: var(--primary); }
.dashboard-freshness i, .scholarship-level-bar i { color: var(--primary); background: var(--primary); }
.dashboard-skeleton { background: #FDEBEC; }

/* Thẻ thống kê dashboard: số liệu là trọng tâm, theo mẫu giao diện Dashboard_Form. */
.stat-card { min-height: 180px; display: flex; flex-direction: column; align-items: center; justify-content: center; padding: 24px 18px; text-align: center; border: 1px solid #F7B3AA !important; border-radius: 10px; box-shadow: none; }
.stat-card .stat-value { order: -1; margin: 0 0 10px; color: var(--primary-light); font-size: clamp(32px, 3vw, 52px); font-weight: 500; line-height: 1; }
.stat-card .stat-label { color: #252A31; font-size: 15px; font-weight: 500; }
.role-kpi-grid, .exec-kpi-grid { grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 20px; }
.role-kpi-card, .exec-kpi, .dashboard-kpi-card { min-height: 180px; padding: 24px 18px; align-items: center; justify-content: center; text-align: center; border: 1px solid #F7B3AA; border-radius: 10px; background: #FFFFFF; box-shadow: none; }
.role-kpi-card { display: flex; }
.role-kpi-icon, .dashboard-kpi-card .kpi-icon { display: none; }
.role-kpi-card div, .dashboard-kpi-card .kpi-body { display: flex; flex-direction: column; align-items: center; width: 100%; }
.role-kpi-card span:not(.role-kpi-icon), .dashboard-kpi-card .kpi-label { order: 1; min-height: 0; color: #252A31; font-size: 15px; font-weight: 500; line-height: 1.35; }
.role-kpi-card strong, .dashboard-kpi-card .kpi-value { order: 0; margin: 0 0 10px; color: var(--primary-light); font-size: clamp(32px, 3vw, 52px); font-weight: 500; line-height: 1; }
.dashboard-kpi-card { border-left: 1px solid #F7B3AA; background: #FFFFFF; }
.dashboard-kpi-card .kpi-change, .dashboard-kpi-card .kpi-link { display: none; }
.dashboard-hero-panel, .executive-template .exec-card, .executive-template .data-health-card { border-color: #F7B3AA; }
@media (max-width: 1100px) { .role-kpi-grid, .exec-kpi-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 12px; } }
@media (max-width: 640px) { .stat-card, .role-kpi-card, .exec-kpi, .dashboard-kpi-card { min-height: 145px; } .role-kpi-grid, .exec-kpi-grid { grid-template-columns: 1fr; } }

.auth-panel .brand-block { justify-content: center; text-align: left; }
.auth-panel .brand-copy strong { color: #252A31; }
.auth-panel .brand-copy small { color: #6B7280; }
.auth-panel h2 { margin-bottom: 4px; color: #252A31; font-size: 25px; font-weight: 750; }
.auth-panel .btn-primary { min-height: 42px; }

@media (max-width: 1100px) {
    .sidebar { box-shadow: 10px 0 30px rgba(15,23,42,.25); }
}
@media (max-width: 767.98px) {
    .auth-shell { padding: 18px; }
    .auth-panel { padding: 26px 22px; }
    .content-wrap { padding: 14px; }
    .topbar { min-height: 62px; height: 62px; }
    .global-search { display: none; }
    .user-meta, .user-chevron { display: none; }
    .user-profile { border-left: 0; }
    .panel, .admin-tile, .exec-card, .filter-bar, .data-health-card { padding: 14px; }
}

/* Quy tắc phòng vệ responsive dùng chung cho các màn hình nghiệp vụ. */
@media (max-width: 767.98px) {
    .content-wrap, .content-wrap > *, .panel, .card, .modal-content, .offcanvas-body { min-width: 0; }
    .content-wrap .d-flex.flex-nowrap:not(.nav):not(.dropdown-menu),
    .panel > form.d-flex, .panel > .d-flex, .card > form.d-flex, .card > .d-flex { flex-wrap: wrap !important; }
    .panel > form.d-flex > .ms-auto, .panel > .d-flex > .ms-auto,
    .card > form.d-flex > .ms-auto, .card > .d-flex > .ms-auto { margin-left: 0 !important; }
    .btn-group, .btn-toolbar { flex-wrap: wrap; gap: 6px; }
    .input-group { flex-wrap: wrap; }
    .input-group > .form-control, .input-group > .form-select { flex: 1 1 180px; min-width: 0; }
    .dataTables_wrapper .dataTables_length, .dataTables_wrapper .dataTables_filter,
    .dataTables_wrapper .dataTables_info, .dataTables_wrapper .dataTables_paginate { float: none !important; width: 100%; margin: 0 0 10px; text-align: left !important; }
    .dataTables_wrapper .dataTables_filter label { display: flex; flex-wrap: wrap; align-items: center; gap: 6px; }
    .dataTables_wrapper .dataTables_filter input { width: min(100%, 280px); margin-left: 0; }
    .pagination { flex-wrap: wrap; gap: 4px; }
    .modal-dialog { width: auto; max-width: calc(100% - 16px); margin: 8px; }
    .modal-header, .modal-footer { flex-wrap: wrap; gap: 8px; }
    .modal-header .btn-close { margin-left: auto; }
}

/* Chừa lề riêng cho các điều khiển DataTables của bảng CTĐT. */
#trainingProgramTable_wrapper .dataTables_length { margin: 12px 16px; }
#trainingProgramTable_wrapper .dataTables_filter { margin: 12px 16px; }
#trainingProgramTable_wrapper .dataTables_info { padding: 12px 16px 10px; }
#trainingProgramTable_wrapper .dataTables_paginate { padding: 8px 16px 10px; }
.table-action-icon-cell{white-space:nowrap;text-align:center!important;vertical-align:middle!important}.table-action-icon-cell form{display:inline-block;margin:0 2px}.table-action-icon-only{display:inline-flex!important;align-items:center;justify-content:center;width:30px;min-width:30px;height:30px;min-height:30px;margin:0!important;padding:0!important;border:0!important;background:transparent!important;box-shadow:none!important;color:#2563EB!important;line-height:1}.table-action-icon-only:hover,.table-action-icon-only:focus{background:#EFF6FF!important;color:#1D4ED8!important;box-shadow:none!important}.table-action-icon-only.btn-outline-danger,.table-action-icon-only.btn-danger{color:#DC2626!important}.table-action-icon-only.btn-outline-danger:hover,.table-action-icon-only.btn-danger:hover{background:#FEF2F2!important;color:#B91C1C!important}.table-action-icon-only.btn-outline-warning,.table-action-icon-only.btn-warning{color:#B45309!important}.table-action-icon-only:disabled{background:transparent!important;opacity:.45}.table-action-icon-only i{font-size:19px;line-height:1}
.training-calendar-modal .modal-dialog{max-width:min(1180px,calc(100vw - 32px))}.training-calendar-modal .modal-body{padding:20px}.training-calendar-semester-form{padding:0 0 20px;border-bottom:1px solid #E2E8F0}.training-calendar-semester-form .form-label{margin-bottom:5px;color:#334155;font-size:12px;font-weight:700}.training-calendar-semester-table{min-width:820px}.training-calendar-semester-table th{white-space:nowrap}.training-calendar-semester-table td{vertical-align:middle}table[data-slug="academic-years"] .catalog-action-col,table[data-slug="academic-years"] .catalog-action-cell{width:164px!important;min-width:164px!important}
@media (max-width: 767.98px) {
    #trainingProgramTable_wrapper .dataTables_length,
    #trainingProgramTable_wrapper .dataTables_filter { width: auto; margin: 10px 14px; }
    #trainingProgramTable_wrapper .dataTables_info,
    #trainingProgramTable_wrapper .dataTables_paginate { width: auto; margin: 0 14px 10px; padding: 0; }
    .training-calendar-modal .modal-dialog{max-width:calc(100% - 16px)}.training-calendar-modal .modal-body{padding:14px}.training-calendar-semester-form{padding-bottom:16px}
}
@media (max-width:575.98px){body.modal-open .mis-chat-toggle,body.modal-open .feedback-floating-button{display:none!important}.training-calendar-semester-table{min-width:0}.training-calendar-semester-table thead{display:none}.training-calendar-semester-table,.training-calendar-semester-table tbody,.training-calendar-semester-table tr,.training-calendar-semester-table td{display:block;width:100%}.training-calendar-semester-table tbody{display:grid;gap:10px}.training-calendar-semester-table tr{padding:8px 12px;border:1px solid #E2E8F0;border-radius:6px;background:#FFF}.training-calendar-semester-table td{display:grid;grid-template-columns:104px minmax(0,1fr);gap:10px;padding:7px 0!important;border:0!important;text-align:left!important;white-space:normal!important;overflow-wrap:anywhere}.training-calendar-semester-table td::before{content:attr(data-label);color:#64748B;font-size:12px;font-weight:700}.training-calendar-semester-table td[data-label="Thao tác"]{align-items:center}.training-calendar-semester-table td[data-label="Thao tác"] .catalog-inline-action{margin-left:0;margin-right:4px}.training-calendar-semester-table tr td[colspan]{display:block;text-align:center!important}.training-calendar-semester-table tr td[colspan]::before{display:none}}

.training-calendar-expand-col,.training-calendar-expand-cell{width:42px!important;min-width:42px!important;padding-right:4px!important;padding-left:4px!important;text-align:center!important}.training-calendar-expand-button{display:inline-flex;align-items:center;justify-content:center;width:28px;height:28px;padding:0;border:1px solid #BFDBFE;border-radius:6px;background:#EFF6FF;color:#1D4ED8;font-size:17px;line-height:1}.training-calendar-expand-button:hover{border-color:#93C5FD;background:#DBEAFE;color:#1E40AF}.training-calendar-expand-button[aria-expanded="true"]{border-color:#93C5FD;background:#2563EB;color:#fff}.training-calendar-expand-button:focus{outline:0;box-shadow:0 0 0 .18rem rgba(37,99,235,.22)}.training-calendar-expand-placeholder{display:inline-block;width:28px;height:28px}.training-calendar-row-expanded>td{background:#F8FAFC!important}.training-calendar-expanded{margin:0 42px 10px;padding:12px 14px;border:1px solid #DCE5F1;border-left:3px solid #2563EB;border-radius:6px;background:#fff}.training-calendar-expanded-heading{display:flex;align-items:center;gap:7px;margin-bottom:8px;color:#334155}.training-calendar-expanded-heading i{color:#2563EB;font-size:18px}.training-calendar-expanded-heading strong{font-size:13px}.training-calendar-expanded-heading span{margin-left:auto;color:#64748B;font-size:12px}.training-calendar-expanded table{border:1px solid #E2E8F0}.training-calendar-expanded th{padding:7px 9px;background:#F8FAFC;color:#475569;font-size:11px;white-space:nowrap}.training-calendar-expanded td{padding:7px 9px;color:#334155;font-size:12px}.training-calendar-expanded-loading,.training-calendar-expanded-error,.training-calendar-expanded-empty{margin:0 42px 10px;padding:12px 14px;border:1px solid #DCE5F1;border-radius:6px;background:#F8FAFC;color:#64748B}.training-calendar-expanded-loading{display:flex;align-items:center;gap:8px}.training-calendar-expanded-error{color:#B91C1C;background:#FEF2F2;border-color:#FECACA}@media(max-width:767px){.training-calendar-expanded,.training-calendar-expanded-loading,.training-calendar-expanded-error,.training-calendar-expanded-empty{margin-right:0;margin-left:0}.training-calendar-expanded{padding:10px}.training-calendar-expanded table{min-width:680px}}

/* Popup nhập dữ liệu dùng chung: rộng, responsive và giữ tiến trình trong popup. */
.shared-file-import-modal .modal-dialog{width:70vw!important;max-width:1280px!important;margin-right:auto!important;margin-left:auto!important}.shared-file-import-modal .modal-content{max-height:92vh;overflow:hidden}.shared-file-import-modal .modal-header{display:flex;flex:0 0 auto;align-items:flex-start;flex-wrap:nowrap!important;gap:16px;padding:18px 22px}.shared-file-import-modal .modal-header>div,.shared-file-import-modal .modal-header>.modal-title{min-width:0}.shared-file-import-modal .modal-title{color:#0f172a;font-weight:750}.shared-file-import-modal .shared-file-import-close{display:inline-flex!important;align-items:center!important;justify-content:center!important;box-sizing:border-box!important;flex:0 0 36px!important;width:36px!important;min-width:36px!important;height:36px!important;min-height:36px!important;margin:-2px 0 0 auto!important;padding:0!important;border:1px solid #cbd5e1!important;border-radius:8px!important;background:#fff!important;background-image:none!important;box-shadow:none!important;color:#475569!important;font-family:Arial,sans-serif!important;font-size:24px!important;font-weight:400!important;line-height:1!important;opacity:1!important;visibility:visible!important;cursor:pointer}.shared-file-import-modal .shared-file-import-close:empty::before{content:'×';display:block;line-height:1}.shared-file-import-modal .shared-file-import-close:hover{border-color:#fca5a5!important;background:#fef2f2!important;color:#b91c1c!important}.shared-file-import-modal .shared-file-import-close:focus-visible{outline:0;box-shadow:0 0 0 .2rem rgba(37,99,235,.22)!important}.shared-file-import-modal .shared-file-import-close i{display:block;font-size:21px;line-height:1}.shared-file-import-modal .modal-body{min-width:0;padding:22px;overflow-y:auto}.shared-file-import-modal .modal-footer{flex:0 0 auto;gap:8px;padding:14px 22px}.shared-file-import-modal .shared-import-status{width:100%;margin:18px 0 0;padding:0;border:1px solid #dbe5f1;border-radius:8px;background:#fff;overflow:hidden}.shared-file-import-modal .shared-import-status>summary{padding:12px 14px;background:#f8fafc;color:#334155;font-weight:700}.shared-file-import-modal .shared-import-status>.table-responsive{max-height:34vh;margin:0!important;border:0;border-top:1px solid #e2e8f0;border-radius:0;overflow:auto}.shared-file-import-modal .shared-import-status table{width:100%;min-width:720px;margin:0}.shared-file-import-modal .shared-import-status th{position:sticky;top:0;z-index:1;background:#f1f5f9;color:#475569;font-size:12px;white-space:nowrap}.shared-file-import-modal .shared-import-status td{vertical-align:middle;font-size:12px}.shared-file-import-modal .shared-import-activity{margin-top:14px!important}.shared-file-import-modal .modal-footer .btn,.shared-file-import-modal [class$="-import-actions"] .btn{white-space:nowrap}
.shared-import-trigger,.shared-import-submit,.shared-import-direct-action{display:inline-flex!important;align-items:center;justify-content:center;gap:6px;min-height:38px;white-space:nowrap}.shared-import-trigger-group{align-items:center}.shared-file-import-modal .modal-footer,.shared-file-import-modal [class$="-import-actions"]{align-items:center}.shared-file-import-modal .shared-import-template{order:-1;margin-right:auto!important}.shared-file-import-modal .shared-import-submit{order:10;margin-left:auto!important}.shared-import-direct-action{flex:0 0 auto}
.shared-import-status td.shared-import-result{width:36%;min-width:220px;max-width:380px;white-space:normal!important;overflow-wrap:anywhere;word-break:break-word;line-height:1.45}.shared-import-pagination{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:10px 12px;border-top:1px solid #e2e8f0;background:#f8fafc}.shared-import-page-summary{color:#64748b;font-size:12px;white-space:nowrap}.shared-import-page-controls{display:flex;align-items:center;gap:4px}.shared-import-page{display:inline-flex;align-items:center;justify-content:center;min-width:30px;height:30px;padding:0 7px;border:1px solid #cbd5e1;border-radius:6px;background:#fff;color:#334155;font-size:12px;font-weight:700}.shared-import-page:hover:not(:disabled),.shared-import-page:focus-visible{border-color:#93c5fd;background:#eff6ff;color:#1d4ed8}.shared-import-page.is-active{border-color:#2563eb;background:#2563eb;color:#fff}.shared-import-page:disabled{opacity:.45;cursor:not-allowed}
.shared-file-import-modal .modal-content{border:0;border-radius:12px;box-shadow:0 20px 55px rgba(15,23,42,.22)}.shared-file-import-modal .modal-header{border-bottom:1px solid #e2e8f0;background:linear-gradient(135deg,#f8fbff 0%,#fff 68%)}.shared-file-import-modal .modal-header>div:first-child{padding-left:12px;border-left:4px solid #2563eb}.shared-file-import-modal .modal-header .small.text-muted{max-width:820px;line-height:1.5}.shared-file-import-modal .shared-import-form-card{padding:18px;border:1px solid #dbe5f1;border-radius:10px;background:#fbfdff}.shared-import-steps{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));margin:0 0 16px;padding:0;border:1px solid #dbeafe;border-radius:10px;background:#eff6ff;list-style:none;overflow:hidden}.shared-import-steps li{position:relative;display:flex;align-items:center;justify-content:center;gap:8px;min-width:0;padding:11px 14px;color:#475569;font-size:12px}.shared-import-steps li+li{border-left:1px solid #dbeafe}.shared-import-steps li+li::before{position:absolute;top:50%;left:-5px;width:9px;height:9px;border-top:1px solid #dbeafe;border-right:1px solid #dbeafe;background:#eff6ff;content:'';transform:translateY(-50%) rotate(45deg)}.shared-import-steps span{display:inline-flex;align-items:center;justify-content:center;flex:0 0 24px;width:24px;height:24px;border-radius:50%;background:#2563eb;color:#fff;font-size:12px;font-weight:800}.shared-import-steps strong{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.shared-file-import-modal .shared-import-form .form-label{margin-bottom:7px;color:#334155;font-size:13px;font-weight:750}.shared-file-import-modal .shared-import-file-input{min-height:46px;padding:5px;border:1px dashed #93c5fd;border-radius:8px;background:#fff;color:#334155}.shared-file-import-modal .shared-import-file-input:hover{border-color:#3b82f6;background:#f8fbff}.shared-file-import-modal .shared-import-file-input:focus{border-color:#2563eb;box-shadow:0 0 0 .2rem rgba(37,99,235,.14)}.shared-file-import-modal .shared-import-file-input::file-selector-button{height:34px;margin:-1px 12px -1px -1px;padding:0 14px;border:0;border-radius:6px;background:#eaf2ff;color:#1d4ed8;font-weight:700;cursor:pointer}.shared-import-file-meta{display:flex;align-items:center;gap:7px;min-height:24px;margin-top:7px;color:#64748b;font-size:12px}.shared-import-file-meta.is-selected{color:#166534}.shared-import-file-meta i{font-size:17px}.shared-import-file-meta span{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.shared-import-file-meta small{flex:0 0 auto;margin-left:auto;color:#64748b}.shared-file-import-modal .shared-import-action-bar{display:flex;align-items:center;gap:8px;margin-top:16px!important;padding-top:16px;border-top:1px solid #e2e8f0}.shared-file-import-modal .shared-import-check{order:20}.shared-file-import-modal .shared-import-submit{order:30;margin-left:0!important}.shared-file-import-modal .shared-import-template{order:10;margin-right:auto!important}.shared-file-import-modal .shared-import-status>summary{display:flex;align-items:center;gap:8px}.shared-file-import-modal .shared-import-status>summary::before{font-family:'Material Design Icons';font-size:18px;font-weight:400;content:'\F0219'}.shared-file-import-modal .shared-import-status>summary::after{margin-left:auto}.shared-file-import-modal .shared-import-activity{padding:12px 14px;border-color:#bfdbfe;border-radius:8px;background:#eff6ff;color:#1e3a8a}
.shared-file-import-modal .shared-import-action-bar .btn,.shared-file-import-modal .shared-import-action-bar .shared-import-template{display:inline-flex;align-items:center;justify-content:center;gap:6px;min-height:40px;padding:8px 14px;border-radius:8px;font-weight:650;line-height:1.2;white-space:nowrap}.shared-file-import-modal .shared-import-template{order:10;margin-right:auto!important}.shared-file-import-modal .shared-import-cancel{order:20;margin-left:auto}.shared-file-import-modal .shared-import-check{order:30;border-color:#93c5fd;color:#1d4ed8}.shared-file-import-modal .shared-import-check:hover,.shared-file-import-modal .shared-import-check:focus{border-color:#2563eb;background:#eff6ff;color:#1d4ed8}.shared-file-import-modal .shared-import-submit{order:40;margin-left:0!important;box-shadow:0 3px 8px rgba(37,99,235,.2)}.shared-file-import-modal .shared-import-submit:hover{box-shadow:0 5px 12px rgba(37,99,235,.28)}.shared-file-import-modal .shared-import-action-bar .btn:focus-visible,.shared-file-import-modal .shared-import-action-bar .shared-import-template:focus-visible{outline:0;box-shadow:0 0 0 .2rem rgba(37,99,235,.2)}.shared-file-import-modal .shared-import-action-bar .btn:disabled{box-shadow:none;cursor:wait;opacity:.7}
.shared-file-import-modal .modal-header{border-bottom-color:#f7b3aa;background:#fff}.shared-file-import-modal .modal-header>div:first-child{border-left-color:var(--primary)}.shared-file-import-modal .shared-import-form-card{border-color:#f7b3aa;background:#fff}.shared-file-import-modal .shared-import-steps{border-color:#f7b3aa;background:var(--background)}.shared-file-import-modal .shared-import-steps li+li{border-color:#f7b3aa}.shared-file-import-modal .shared-import-steps li+li::before{border-color:#f7b3aa;background:var(--background)}.shared-file-import-modal .shared-import-steps span{background:var(--primary)}.shared-file-import-modal .shared-import-file-input{border-color:#f7b3aa}.shared-file-import-modal .shared-import-file-input:hover{border-color:var(--primary);background:#fffafa}.shared-file-import-modal .shared-import-file-input:focus{border-color:var(--primary);box-shadow:0 0 0 .2rem rgba(237,40,43,.14)}.shared-file-import-modal .shared-import-file-input::file-selector-button{background:var(--background);color:var(--primary)}.shared-file-import-modal .shared-import-action-bar{border-top-color:#f7b3aa}.shared-file-import-modal .shared-import-template{margin-right:auto!important;margin-left:0!important}.shared-file-import-modal .shared-import-check{border-color:#f7b3aa;color:var(--primary)}.shared-file-import-modal .shared-import-check:hover,.shared-file-import-modal .shared-import-check:focus{border-color:var(--primary);background:var(--background);color:var(--primary)}.shared-file-import-modal .shared-import-submit{box-shadow:0 3px 8px rgba(237,40,43,.2)}.shared-file-import-modal .shared-import-submit:hover{box-shadow:0 5px 12px rgba(237,40,43,.28)}.shared-file-import-modal .shared-import-action-bar .btn:focus-visible,.shared-file-import-modal .shared-import-action-bar .shared-import-template:focus-visible{box-shadow:0 0 0 .2rem rgba(237,40,43,.18)}.shared-file-import-modal .shared-import-activity{border-color:#f7b3aa;background:var(--background);color:#7f1d1d}.shared-file-import-modal .shared-import-status{border-color:#f7b3aa}.shared-file-import-modal .shared-import-status>summary{background:#fffafa}.shared-file-import-modal .shared-import-status th{background:#fff7f6}
.shared-import-inline-launch{display:flex;align-items:center;justify-content:flex-start;min-height:40px}.shared-import-inline-launch.panel{padding:16px 20px}.shared-import-inline-launch .shared-import-trigger{min-width:190px}.shared-file-import-modal .shared-import-action-bar{width:100%;justify-content:flex-end}.shared-generated-import-modal .shared-import-form.row{margin-right:0;margin-left:0}.shared-generated-import-modal .shared-import-form.row>.shared-import-action-bar{flex:0 0 100%;max-width:100%}
.notification-icon-button{position:relative}.notification-icon-badge{position:absolute;top:-5px;right:-6px;display:inline-flex;align-items:center;justify-content:center;box-sizing:border-box;min-width:18px;height:18px;padding:0 5px;border:2px solid #fff;border-radius:999px;background:#dc2626;color:#fff;font-size:10px;font-weight:800;line-height:1;box-shadow:0 2px 5px rgba(15,23,42,.2)}
@media(max-width:1199.98px){.shared-file-import-modal .modal-dialog{width:88vw!important;max-width:1040px!important}}
@media(max-width:767.98px){.shared-file-import-modal .modal-dialog{width:calc(100vw - 16px)!important;max-width:calc(100vw - 16px)!important;margin:8px!important}.shared-file-import-modal .modal-content{max-height:calc(100vh - 16px)}.shared-file-import-modal .modal-header,.shared-file-import-modal .modal-body{padding:16px}.shared-file-import-modal .modal-footer{padding:12px 16px}.shared-file-import-modal .shared-import-form-card{padding:14px}.shared-import-steps{grid-template-columns:1fr;margin-bottom:12px}.shared-import-steps li{justify-content:flex-start;padding:8px 12px}.shared-import-steps li+li{border-top:1px solid #dbeafe;border-left:0}.shared-import-steps li+li::before{display:none}.shared-import-steps span{width:22px;height:22px;flex-basis:22px}.shared-file-import-modal .modal-footer .btn,.shared-file-import-modal [class$="-import-actions"] .btn,.shared-file-import-modal .shared-import-action-bar .btn{flex:1 1 100%;width:100%;justify-content:center}.shared-file-import-modal .shared-import-action-bar{align-items:stretch;flex-direction:column}.shared-file-import-modal .shared-import-template,.shared-file-import-modal .shared-import-submit{margin-right:0!important;margin-left:0!important}.shared-import-trigger,.shared-import-direct-action{width:100%}.shared-file-import-modal .shared-import-status>.table-responsive{max-height:30vh}.shared-import-pagination{align-items:stretch;flex-direction:column}.shared-import-page-summary{text-align:center}.shared-import-page-controls{justify-content:center;flex-wrap:wrap}}

.scholarship-recipient-page{padding:0;overflow:hidden}.scholarship-recipient-head{padding:18px 20px;border-bottom:1px solid #E2E8F0}.scholarship-recipient-filter{margin:16px 20px 0}.scholarship-recipient-filter-grid{display:flex;flex-direction:column;gap:12px}.scholarship-filter-row{display:grid;grid-template-columns:repeat(12,minmax(0,1fr));gap:12px;align-items:end}.scholarship-filter-field{min-width:0}.scholarship-filter-field label{display:block;margin-bottom:5px;color:#475569;font-size:12px;font-weight:700}.scholarship-filter-primary .scholarship-filter-institution{grid-column:span 3}.scholarship-filter-primary .scholarship-filter-admission-year,.scholarship-filter-primary .scholarship-filter-year,.scholarship-filter-primary .scholarship-filter-occurrence{grid-column:span 2}.scholarship-filter-primary .scholarship-filter-keyword{grid-column:span 3}.scholarship-filter-grid.is-institution-scope .scholarship-filter-admission-year,.scholarship-filter-grid.is-institution-scope .scholarship-filter-year,.scholarship-filter-grid.is-institution-scope .scholarship-filter-occurrence,.scholarship-filter-grid.is-institution-scope .scholarship-filter-keyword{grid-column:span 3}.scholarship-filter-secondary>.scholarship-filter-field{grid-column:span 2}.scholarship-filter-secondary .scholarship-filter-program{grid-column:span 3}.scholarship-filter-actions{display:flex;grid-column:span 3;gap:8px;align-items:center}.scholarship-filter-actions .btn{white-space:nowrap}.scholarship-recipient-kpis{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));margin:16px 20px 0;border:1px solid #DCE5F1;border-radius:6px;background:#F8FAFC}.scholarship-recipient-kpis>div{min-width:0;padding:14px 16px;border-right:1px solid #DCE5F1}.scholarship-recipient-kpis>div:last-child{border-right:0}.scholarship-recipient-kpis span{display:block;margin-bottom:4px;color:#64748B;font-size:12px}.scholarship-recipient-kpis strong{display:block;overflow:hidden;color:#172033;font-size:19px;line-height:1.2;text-overflow:ellipsis;white-space:nowrap}.scholarship-recipient-table-wrap{margin-top:16px;border-top:1px solid #E2E8F0}.scholarship-recipient-table-wrap table{min-width:1280px}.scholarship-recipient-table-wrap th{white-space:nowrap}.scholarship-recipient-table-wrap td{vertical-align:middle}.scholarship-recipient-person,.scholarship-recipient-table-wrap td>span,.scholarship-recipient-table-wrap td>small{display:block}.scholarship-recipient-person{min-width:180px}.scholarship-recipient-person span{display:block;color:#334155}.scholarship-recipient-person small,.scholarship-recipient-table-wrap td>small,.scholarship-recipient-subtext{display:block;margin-top:2px;color:#64748B;font-size:11px}.scholarship-recipient-code{color:#1D4ED8}.scholarship-recipient-occurrence{display:inline-flex!important;align-items:center;width:max-content;margin-top:5px!important;padding:2px 7px;border:1px solid #bfdbfe;border-radius:999px;background:#eff6ff;color:#1d4ed8!important;font-size:10px!important;font-weight:700}.scholarship-recipient-table-wrap .dataTables_length,.scholarship-recipient-table-wrap .dataTables_info{margin-left:16px}.scholarship-recipient-table-wrap .dataTables_filter,.scholarship-recipient-table-wrap .dataTables_paginate{margin-right:16px}
.scholarship-recipient-head-actions{display:flex;align-items:center;justify-content:flex-end;gap:8px;flex-wrap:wrap}.scholarship-recipient-head-actions .btn{white-space:nowrap}.scholarship-threshold-modal .modal-dialog{max-width:min(1180px,94vw)}.scholarship-threshold-modal .modal-content{max-height:92vh}.scholarship-threshold-table{min-width:760px}.scholarship-threshold-table thead th{position:sticky;top:0;z-index:2;background:#eef3f8;color:#334155;white-space:nowrap}.scholarship-threshold-table td,.scholarship-threshold-table th{padding:10px 12px;vertical-align:middle}.scholarship-threshold-table tfoot th{background:#f8fafc;border-top:2px solid #cbd5e1}.scholarship-threshold-major-panel{padding:10px;border:1px solid #dbe4ef;border-radius:8px;background:#f8fafc}.scholarship-threshold-major-panel table{min-width:520px;background:#fff}.scholarship-threshold-major-toggle{width:32px;height:30px;padding:3px}.scholarship-threshold-major-row>td{background:#f8fafc!important}
@media(max-width:1199px){.scholarship-filter-primary .scholarship-filter-institution{grid-column:span 4}.scholarship-filter-primary .scholarship-filter-admission-year,.scholarship-filter-primary .scholarship-filter-year,.scholarship-filter-primary .scholarship-filter-occurrence{grid-column:span 4}.scholarship-filter-primary .scholarship-filter-keyword{grid-column:span 12}.scholarship-filter-grid.is-institution-scope .scholarship-filter-admission-year,.scholarship-filter-grid.is-institution-scope .scholarship-filter-year,.scholarship-filter-grid.is-institution-scope .scholarship-filter-occurrence{grid-column:span 4}.scholarship-filter-grid.is-institution-scope .scholarship-filter-keyword{grid-column:span 12}.scholarship-filter-secondary>.scholarship-filter-field{grid-column:span 3}.scholarship-filter-secondary .scholarship-filter-program,.scholarship-filter-actions{grid-column:span 6}.scholarship-recipient-kpis{grid-template-columns:repeat(3,minmax(0,1fr))}.scholarship-recipient-kpis>div:nth-child(3){border-right:0}.scholarship-recipient-kpis>div:nth-child(-n+3){border-bottom:1px solid #DCE5F1}}
@media(max-width:767.98px){.scholarship-recipient-head{align-items:flex-start;padding:14px}.scholarship-recipient-head-actions{width:100%;justify-content:flex-start}.scholarship-recipient-head-actions .btn{flex:1}.scholarship-recipient-filter,.scholarship-recipient-kpis{margin-right:14px;margin-left:14px}.scholarship-filter-primary .scholarship-filter-institution,.scholarship-filter-primary .scholarship-filter-admission-year,.scholarship-filter-primary .scholarship-filter-year,.scholarship-filter-primary .scholarship-filter-occurrence,.scholarship-filter-grid.is-institution-scope .scholarship-filter-admission-year,.scholarship-filter-grid.is-institution-scope .scholarship-filter-year,.scholarship-filter-grid.is-institution-scope .scholarship-filter-occurrence{grid-column:span 6}.scholarship-filter-primary .scholarship-filter-keyword,.scholarship-filter-grid.is-institution-scope .scholarship-filter-keyword{grid-column:1/-1}.scholarship-filter-secondary>.scholarship-filter-field,.scholarship-filter-secondary .scholarship-filter-program{grid-column:span 6}.scholarship-filter-actions{grid-column:1/-1}.scholarship-recipient-kpis{grid-template-columns:repeat(2,minmax(0,1fr))}.scholarship-recipient-kpis>div{border-bottom:1px solid #DCE5F1}.scholarship-recipient-kpis>div:nth-child(2n){border-right:0}.scholarship-recipient-kpis>div:last-child{border-bottom:0}.scholarship-recipient-kpis strong{font-size:16px}.scholarship-recipient-table-wrap .dataTables_length,.scholarship-recipient-table-wrap .dataTables_filter,.scholarship-recipient-table-wrap .dataTables_info,.scholarship-recipient-table-wrap .dataTables_paginate{margin-right:14px;margin-left:14px}.scholarship-threshold-modal .modal-dialog{max-width:calc(100vw - 16px);margin:8px}.scholarship-threshold-modal .modal-footer{align-items:flex-start}.scholarship-threshold-modal .modal-footer .small{width:100%}}
@media(max-width:479px){.scholarship-filter-primary .scholarship-filter-institution,.scholarship-filter-primary .scholarship-filter-admission-year,.scholarship-filter-primary .scholarship-filter-year,.scholarship-filter-primary .scholarship-filter-occurrence,.scholarship-filter-primary .scholarship-filter-keyword,.scholarship-filter-grid.is-institution-scope .scholarship-filter-admission-year,.scholarship-filter-grid.is-institution-scope .scholarship-filter-year,.scholarship-filter-grid.is-institution-scope .scholarship-filter-occurrence,.scholarship-filter-grid.is-institution-scope .scholarship-filter-keyword,.scholarship-filter-secondary>.scholarship-filter-field,.scholarship-filter-secondary .scholarship-filter-program{grid-column:1/-1}.scholarship-recipient-kpis{grid-template-columns:1fr}.scholarship-recipient-kpis>div{border-right:0}.scholarship-recipient-filter-grid .btn{flex:1}}
.scholarship-recipient-occurrence.is-stopped{border-color:#cbd5e1;background:#f8fafc;color:#64748b!important}
.scholarship-recipient-datatable-host,.scholarship-recipient-datatable-host>.dataTables_wrapper{box-sizing:border-box;width:100%;max-width:100%;min-width:0}.scholarship-recipient-datatable-host>.dataTables_wrapper>.row{max-width:100%;margin-right:0;margin-left:0}.scholarship-recipient-table-scroll{box-sizing:border-box;width:100%;max-width:100%;overflow-x:auto;overflow-y:hidden;scrollbar-gutter:stable;border-top:1px solid #e2e8f0;border-bottom:1px solid #e2e8f0;background:#fff;overscroll-behavior-inline:contain}.scholarship-recipient-table-scroll:focus-visible{outline:2px solid rgba(37,99,235,.32);outline-offset:-2px}.scholarship-recipient-table-wrap table{width:100%!important;table-layout:fixed}.scholarship-recipient-table-wrap.is-full-scope table{min-width:1120px}.scholarship-recipient-table-wrap.is-institution-scope table{min-width:990px}.scholarship-recipient-table-wrap th,.scholarship-recipient-table-wrap td{box-sizing:border-box;padding:9px 8px;font-size:12px;line-height:1.4;overflow-wrap:anywhere;word-break:normal}.scholarship-recipient-table-wrap th{font-size:11px}.scholarship-recipient-table-wrap td>strong{display:block}.scholarship-recipient-person{min-width:0}.scholarship-recipient-period{display:grid!important;gap:1px}.scholarship-recipient-period>span{white-space:nowrap}.scholarship-recipient-period>small{color:#94a3b8;font-size:10px}.scholarship-recipient-table-meta{display:flex;align-items:center;justify-content:flex-end;gap:8px 14px;flex-wrap:wrap}.scholarship-recipient-table-meta>small{display:inline-flex;align-items:center;gap:5px;color:#64748b;font-size:11px;font-weight:500}.scholarship-recipient-table-meta>small i{font-size:16px}.scholarship-recipient-table-wrap .recipient-col-index{width:46px}.scholarship-recipient-table-wrap .recipient-col-person{width:150px}.scholarship-recipient-table-wrap .recipient-col-institution{width:125px}.scholarship-recipient-table-wrap .recipient-col-major{width:150px}.scholarship-recipient-table-wrap .recipient-col-program{width:145px}.scholarship-recipient-table-wrap .recipient-col-scholarship{width:125px}.scholarship-recipient-table-wrap .recipient-col-amount{width:96px}.scholarship-recipient-table-wrap .recipient-col-period{width:100px}.scholarship-recipient-table-wrap .recipient-col-paid{width:104px}.scholarship-recipient-table-wrap .recipient-col-status{width:88px}.scholarship-recipient-table-wrap .badge{max-width:100%;white-space:normal}
@media(max-width:767.98px){.scholarship-recipient-table-meta{align-items:flex-end;flex-direction:column;gap:2px}.scholarship-recipient-table-wrap th,.scholarship-recipient-table-wrap td{padding:8px 7px}.scholarship-recipient-table-scroll{scrollbar-gutter:auto}}
.scholarship-recipient-table-wrap.is-full-scope table{min-width:1210px}.scholarship-recipient-table-wrap.is-institution-scope table{min-width:1080px}.scholarship-recipient-table-wrap .recipient-col-index{width:28px!important}.scholarship-recipient-table-wrap .recipient-col-person{width:126px!important}.scholarship-recipient-table-wrap .recipient-col-institution{width:96px!important}.scholarship-recipient-table-wrap .recipient-col-major{width:126px!important}.scholarship-recipient-table-wrap .recipient-col-program{width:121px!important}.scholarship-recipient-table-wrap .recipient-col-scholarship{width:96px!important}.scholarship-recipient-table-wrap .recipient-col-amount{width:76px!important}.scholarship-recipient-table-wrap .recipient-col-period{width:76px!important}.scholarship-recipient-table-wrap .recipient-col-paid{width:81px!important}.scholarship-recipient-table-wrap .recipient-col-status{width:62px!important}.scholarship-recipient-table-wrap .dataTables_length label{display:inline-flex;align-items:center;gap:7px;margin:0;white-space:nowrap}.scholarship-recipient-table-wrap .dataTables_length select{box-sizing:border-box!important;width:76px!important;min-width:76px!important;height:36px!important;margin:0 4px!important;padding:5px 30px 5px 10px!important;background-position:right 9px center!important;background-size:12px 10px!important;line-height:1.2!important;appearance:none!important}
.scholarship-filter-primary .scholarship-filter-type{grid-column:span 3}.scholarship-filter-secondary>.scholarship-filter-field,.scholarship-filter-secondary .scholarship-filter-program{grid-column:span 3}.scholarship-filter-tertiary .scholarship-filter-keyword{grid-column:span 6}.scholarship-filter-tertiary .scholarship-filter-actions{grid-column:span 6;justify-content:flex-end}
@media(max-width:1199px){.scholarship-filter-primary .scholarship-filter-institution,.scholarship-filter-primary .scholarship-filter-admission-year,.scholarship-filter-primary .scholarship-filter-year,.scholarship-filter-primary .scholarship-filter-occurrence,.scholarship-filter-primary .scholarship-filter-type,.scholarship-filter-grid.is-institution-scope .scholarship-filter-admission-year,.scholarship-filter-grid.is-institution-scope .scholarship-filter-year,.scholarship-filter-grid.is-institution-scope .scholarship-filter-occurrence{grid-column:span 6}.scholarship-filter-secondary>.scholarship-filter-field,.scholarship-filter-secondary .scholarship-filter-program{grid-column:span 6}}
@media(max-width:767.98px){.scholarship-filter-primary .scholarship-filter-type{grid-column:span 6}.scholarship-filter-tertiary .scholarship-filter-keyword,.scholarship-filter-tertiary .scholarship-filter-actions{grid-column:1/-1}.scholarship-filter-tertiary .scholarship-filter-actions{justify-content:stretch}.scholarship-filter-tertiary .scholarship-filter-actions .btn{flex:1}}
@media(max-width:479px){.scholarship-filter-primary .scholarship-filter-type{grid-column:1/-1}}
.moet-statistics-hidden{display:none!important}
.moet-statistics-layout-empty{display:none!important}

/* Dashboard tự cân bằng lại khi các thống kê rỗng bị ẩn. */
.role-kpi-grid,.exec-kpi-grid,.dashboard-primary-kpis,.dashboard-secondary-kpis,.stats-grid,.adm-kpis{
    grid-template-columns:repeat(auto-fit,minmax(200px,1fr));
}
.role-chart-grid,.role-table-grid,.dashboard-analysis-grid,.exec-three-grid,.exec-feature-grid,.exec-bottom-grid{
    grid-template-columns:repeat(auto-fit,minmax(320px,1fr));
    align-items:stretch;
}
.role-chart-grid>[data-statistics-visible="1"],.dashboard-analysis-grid>[data-statistics-visible="1"],.exec-three-grid>[data-statistics-visible="1"]{
    min-width:0;
}
.role-chart-grid[data-visible-items="1"]{
    grid-template-columns:minmax(0,760px);
    justify-content:center;
}
.role-chart-grid[data-visible-items="1"]>.role-chart-card{width:100%}
.role-kpi-grid[data-visible-items="1"],.dashboard-primary-kpis[data-visible-items="1"],.dashboard-secondary-kpis[data-visible-items="1"],.stats-grid[data-visible-items="1"],.adm-kpis[data-visible-items="1"]{
    grid-template-columns:minmax(0,440px);
    justify-content:center;
}
.dashboard-main-grid[data-visible-items="1"]{grid-template-columns:minmax(0,1fr)}
.dashboard-main-grid[data-visible-items="1"]>.dashboard-side-stack{
    grid-template-columns:repeat(auto-fit,minmax(300px,1fr));
    grid-template-rows:auto;
}
.dashboard-main-grid[data-visible-items="1"]>.dashboard-side-stack>.dashboard-side-metrics{display:contents}
.dashboard-main-grid[data-visible-items="1"]>.dashboard-side-stack>.exec-card,
.dashboard-main-grid[data-visible-items="1"]>.dashboard-side-stack>.dashboard-side-metrics>.exec-card{min-height:280px}
.adm-source-grid{grid-template-columns:repeat(auto-fit,minmax(230px,1fr))}
.adm-grid-main[data-visible-items="1"],.adm-split[data-visible-items="1"],.adm-bottom[data-visible-items="1"]{grid-template-columns:minmax(0,1fr)}
.adm-grid-main[data-visible-items="1"]>.adm-card{grid-column:1/-1}

@media(max-width:640px){
    .role-kpi-grid,.exec-kpi-grid,.dashboard-primary-kpis,.dashboard-secondary-kpis,.stats-grid,.adm-kpis,
    .role-chart-grid,.role-table-grid,.dashboard-analysis-grid,.exec-three-grid,.exec-feature-grid,.exec-bottom-grid{
        grid-template-columns:minmax(0,1fr);
    }
    .dashboard-main-grid[data-visible-items="1"]>.dashboard-side-stack{grid-template-columns:minmax(0,1fr)}
}

/* Quy trình học bổng trên Dashboard: 4 giai đoạn, 12 bước thao tác. */
.dashboard-process{
    padding:22px 24px 18px;
    border-left:5px solid var(--primary);
    background:linear-gradient(145deg,#fff 0%,#fff 72%,#fff7f5 100%);
}
.dashboard-process .dashboard-process-head{
    display:flex;
    align-items:center;
    justify-content:space-between;
    gap:20px;
    margin-bottom:18px;
    text-align:left;
}
.dashboard-process .dashboard-process-head>div:first-child>span{display:block;margin-bottom:4px;color:var(--primary);font-size:11px;font-weight:750;letter-spacing:.06em;text-transform:uppercase}
.dashboard-process .dashboard-process-head h2{margin:0;color:#172033;font-size:22px;line-height:1.25;text-transform:none}
.dashboard-process .dashboard-process-head p{margin:5px 0 0;color:#64748b;font-size:13px}
.dashboard-process-help{display:flex;flex:0 0 auto;align-items:center;gap:7px;padding:8px 11px;border:1px solid #dbe5f1;border-radius:8px;background:#f8fafc;color:#475569;font-size:11px}
.dashboard-process-help i{color:#2563eb;font-size:17px}
.dashboard-process-phases{position:relative;z-index:1;display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:14px}
.dashboard-process-phase{--phase-color:#2563eb;--phase-soft:#eff6ff;position:relative;min-width:0;overflow:visible;border:1px solid #dbe5f1;border-top:4px solid var(--phase-color);border-radius:10px;background:#fff;box-shadow:0 7px 18px rgba(15,23,42,.055)}
.dashboard-process-phase:nth-child(2){--phase-color:#7c3aed;--phase-soft:#f5f3ff}
.dashboard-process-phase:nth-child(3){--phase-color:#059669;--phase-soft:#ecfdf5}
.dashboard-process-phase:nth-child(4){--phase-color:#d97706;--phase-soft:#fffbeb}
.dashboard-process-phase:not(:last-child)::after{position:absolute;z-index:3;top:42px;right:-13px;display:flex;width:24px;height:24px;align-items:center;justify-content:center;border:1px solid #cbd5e1;border-radius:50%;background:#fff;color:#64748b;content:'→';font-size:14px;font-weight:800}
.dashboard-process-phase-head{display:flex;min-height:102px;align-items:flex-start;gap:10px;padding:14px 14px 12px;border-bottom:1px solid #e8edf4;background:linear-gradient(145deg,var(--phase-soft),#fff 72%)}
.dashboard-process-phase-icon{display:flex;flex:0 0 38px;width:38px;height:38px;align-items:center;justify-content:center;border-radius:9px;background:var(--phase-color);color:#fff;font-size:20px;box-shadow:0 5px 12px rgba(15,23,42,.14)}
.dashboard-process-phase-head>div{min-width:0}.dashboard-process-phase-head small{display:block;color:var(--phase-color);font-size:10px;font-weight:800;letter-spacing:.04em;text-transform:uppercase}.dashboard-process-phase-head h3{margin:2px 0 3px;color:#172033;font-size:15px;font-weight:750;line-height:1.25}.dashboard-process-phase-head p{margin:0;color:#64748b;font-size:11px;line-height:1.35}
.dashboard-process-phase-steps{display:grid;margin:0;padding:5px 12px 9px;list-style:none;counter-reset:none}
.dashboard-process-phase-steps li{position:relative;min-width:0}.dashboard-process-phase-steps li:not(:last-child)::after{position:absolute;z-index:0;top:37px;bottom:-7px;left:15px;width:1px;background:#dbe5f1;content:''}
.dashboard-process-phase-step{position:relative;z-index:1;display:grid;grid-template-columns:30px 30px minmax(0,1fr) 15px;gap:8px;align-items:center;min-height:58px;padding:7px 2px;color:#334155;border-radius:7px}
.dashboard-process-phase-step:hover,.dashboard-process-phase-step:focus-visible{background:var(--phase-soft);color:var(--phase-color);transform:translateX(2px)}
.dashboard-process-phase-step:focus-visible{outline:2px solid var(--phase-color);outline-offset:1px}
.dashboard-process-phase-step b{display:flex;width:30px;height:30px;align-items:center;justify-content:center;border:2px solid var(--phase-color);border-radius:50%;background:#fff;color:var(--phase-color);font-size:12px;font-weight:800}
.dashboard-process-phase-step>i:not(.dashboard-process-open){display:flex;width:30px;height:30px;align-items:center;justify-content:center;border-radius:7px;background:var(--phase-soft);color:var(--phase-color);font-size:17px}
.dashboard-process-phase-step span{min-width:0;font-size:12px;font-weight:650;line-height:1.3}.dashboard-process-open{color:#94a3b8;font-size:16px}
.dashboard-process-footer{position:relative;z-index:1;display:flex;align-items:flex-start;gap:7px;margin-top:14px;padding-top:12px;border-top:1px dashed #dbe5f1;color:#64748b;font-size:11px;line-height:1.4}.dashboard-process-footer i{flex:0 0 auto;color:#d97706;font-size:16px}
@media(max-width:1199px){.dashboard-process-phases{grid-template-columns:repeat(2,minmax(0,1fr))}.dashboard-process-phase:nth-child(2)::after{display:none}}
@media(max-width:767.98px){.dashboard-process{padding:17px 15px 14px}.dashboard-process .dashboard-process-head{align-items:flex-start;flex-direction:column;gap:10px}.dashboard-process-help{width:100%}.dashboard-process-phases{grid-template-columns:minmax(0,1fr);gap:12px}.dashboard-process-phase:not(:last-child)::after{display:none}.dashboard-process-phase-head{min-height:0}.dashboard-process .dashboard-process-head h2{font-size:19px}}

/* Lời chào Dashboard luôn hiển thị đầu trang, không dùng nhận diện TALENT dạng chữ. */
.dashboard-welcome{
    display:flex;
    min-height:104px;
    align-items:center;
    gap:15px;
    padding:18px 22px;
    border:1px solid #e3e8f2;
    border-left:5px solid var(--primary);
    border-radius:10px;
    background:linear-gradient(115deg,#fff 0%,#fff 70%,#fff4f1 100%);
    box-shadow:0 7px 20px rgba(15,23,42,.05);
}
.dashboard-welcome:before{display:none}
.dashboard-welcome-avatar{display:flex;flex:0 0 52px;width:52px;height:52px;align-items:center;justify-content:center;border-radius:14px;background:linear-gradient(145deg,var(--primary),#ef6c57);box-shadow:0 7px 15px rgba(211,35,42,.18);color:#fff;font-size:29px}
.dashboard-welcome-heading{min-width:0;padding:0}
.dashboard-welcome h2{margin:0;color:#172033;font-size:23px;font-weight:780;line-height:1.25}
.dashboard-welcome p{margin:5px 0 0;color:#64748b;font-size:12px}.dashboard-welcome p strong{color:#334155;font-weight:700}
.dashboard-welcome-meta{display:flex;flex:0 0 auto;flex-direction:column;align-items:flex-end;gap:4px;margin-left:auto}.dashboard-welcome-meta>span{color:#94a3b8;font-size:10px;font-weight:700;letter-spacing:.04em;text-transform:uppercase}.dashboard-welcome-meta time{display:flex;align-items:center;gap:6px;padding:7px 10px;border:1px solid #dbe5f1;border-radius:8px;background:#fff;color:#475569;font-size:12px;font-weight:650}.dashboard-welcome-meta time i{color:var(--primary);font-size:16px}
.dashboard-context-body>.dashboard-process:first-child{margin-top:16px}.dashboard-context-body>.dashboard-stat-groups:last-child{margin-top:16px}
@media(max-width:560px){.dashboard-welcome{min-height:0;align-items:flex-start;padding:15px;gap:11px}.dashboard-welcome-avatar{flex-basis:42px;width:42px;height:42px;border-radius:11px;font-size:24px}.dashboard-welcome h2{font-size:18px}.dashboard-welcome-meta{display:none}}

/* Gửi phản hồi: cùng một trải nghiệm ở trang đầy đủ và cửa sổ gửi nhanh. */
.feedback-compose{max-width:1100px!important;padding:0!important;overflow:hidden;border:1px solid #e3e8f2}
.feedback-compose-head{display:flex;align-items:center;justify-content:space-between;gap:18px;padding:18px 20px;border-bottom:1px solid #f3d3cf;background:linear-gradient(110deg,#fff 0%,#fff 72%,#fff5f3 100%)}
.feedback-compose-heading{display:flex;min-width:0;align-items:center;gap:12px}
.feedback-compose-icon{display:flex;flex:0 0 44px;width:44px;height:44px;align-items:center;justify-content:center;border-radius:12px;background:linear-gradient(145deg,var(--primary),#ef6c57);box-shadow:0 6px 14px rgba(211,35,42,.18);color:#fff;font-size:24px}
.feedback-compose-heading h2,.feedback-compose-heading h5{margin:0;color:#172033;font-size:21px;font-weight:760;line-height:1.25}
.feedback-compose-heading h5{font-size:19px}.feedback-compose-heading p{margin:4px 0 0;color:#64748b;font-size:12px;line-height:1.4}
.feedback-compose-form{padding:20px;background:#f8fafc}
.feedback-form-section{padding:16px 18px;border:1px solid #e2e8f0;border-radius:10px;background:#fff;box-shadow:0 3px 10px rgba(15,23,42,.025)}
.feedback-form-section+.feedback-form-section{margin-top:14px}
.feedback-section-title{display:flex;align-items:center;gap:10px;margin-bottom:14px;padding-bottom:11px;border-bottom:1px dashed #dbe5f1}
.feedback-section-title>span{display:flex;flex:0 0 28px;width:28px;height:28px;align-items:center;justify-content:center;border-radius:8px;background:#fff0ee;color:var(--primary);font-size:12px;font-weight:800}
.feedback-section-title strong,.feedback-section-title small{display:block}.feedback-section-title strong{color:#1e293b;font-size:14px}.feedback-section-title small{margin-top:2px;color:#64748b;font-size:11px;line-height:1.35}
.feedback-compose-form .form-label{margin-bottom:6px;color:#334155;font-size:12px;font-weight:680}
.feedback-field-meta{display:flex;justify-content:space-between;gap:12px;margin-top:6px;color:#64748b;font-size:10px;line-height:1.35}.feedback-field-meta>span:last-child{flex:0 0 auto;font-variant-numeric:tabular-nums}
.feedback-dropzone{min-height:132px;resize:vertical;transition:border-color .18s ease,box-shadow .18s ease,background .18s ease}
.feedback-dropzone.is-dragging{border-color:var(--primary);background:#fff8f6;box-shadow:0 0 0 .2rem rgba(211,35,42,.1)}
.feedback-attachment-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}
.feedback-upload-card{display:flex;min-height:72px;align-items:center;gap:12px;margin:0;padding:12px 14px;border:1px dashed #b9c5d4;border-radius:9px;background:#fbfcfe;color:#334155;cursor:pointer;transition:border-color .18s ease,background .18s ease,transform .18s ease}
.feedback-upload-card:hover,.feedback-upload-card:focus-within{border-color:var(--primary);background:#fff6f4;transform:translateY(-1px)}
.feedback-upload-card>i{display:flex;flex:0 0 38px;width:38px;height:38px;align-items:center;justify-content:center;border-radius:9px;background:#fff0ee;color:var(--primary);font-size:21px}.feedback-upload-card span,.feedback-upload-card strong,.feedback-upload-card small{display:block;min-width:0}.feedback-upload-card strong{font-size:12px}.feedback-upload-card small{margin-top:3px;color:#64748b;font-size:10px}
.feedback-preview{display:grid;grid-template-columns:repeat(auto-fit,minmax(210px,1fr));gap:9px;margin-top:12px}.feedback-preview.is-empty{display:none}
.feedback-file-chip{display:grid;grid-template-columns:48px minmax(0,1fr) 28px;align-items:center;gap:9px;min-width:0;padding:7px;border:1px solid #e2e8f0;border-radius:9px;background:#f8fafc}
.feedback-file-chip>img,.feedback-file-icon{display:flex;width:48px;height:42px;align-items:center;justify-content:center;border-radius:7px;background:#e9eef5;color:#64748b;object-fit:cover;font-size:22px}.feedback-file-chip>span{min-width:0}.feedback-file-chip strong,.feedback-file-chip small{display:block}.feedback-file-chip strong{overflow:hidden;color:#334155;font-size:11px;text-overflow:ellipsis;white-space:nowrap}.feedback-file-chip small{margin-top:2px;color:#64748b;font-size:10px}.feedback-file-chip button{display:flex;width:27px;height:27px;align-items:center;justify-content:center;padding:0;border:0;border-radius:7px;background:transparent;color:#64748b}.feedback-file-chip button:hover,.feedback-file-chip button:focus-visible{background:#fee2e2;color:#b91c1c}
.feedback-form-actions{display:flex;align-items:center;justify-content:space-between;gap:16px;padding-top:16px}.feedback-submit-note{display:flex;align-items:center;gap:7px;color:#64748b;font-size:11px}.feedback-submit-note i{color:#059669;font-size:17px}
.feedback-floating-button{position:fixed;right:24px;bottom:24px;z-index:1040;display:inline-flex;align-items:center;gap:7px;border-radius:9px;box-shadow:0 7px 18px rgba(211,35,42,.24)!important}.feedback-floating-button i{font-size:18px}
.feedback-quick-modal .modal-dialog{max-width:min(980px,calc(100vw - 32px))}.feedback-quick-modal .modal-content{overflow:hidden;border:0;border-radius:12px;box-shadow:0 18px 50px rgba(15,23,42,.2)}
.feedback-quick-modal .modal-header{position:relative;align-items:center;padding:15px 58px 15px 18px;border-bottom:1px solid #f3d3cf;background:linear-gradient(110deg,#fff 0%,#fff 72%,#fff5f3 100%)}.feedback-quick-modal .modal-header .btn-close{position:absolute;top:18px;right:18px;flex:0 0 auto;margin:0}
.feedback-quick-modal .modal-body{padding:16px 18px;background:#f8fafc}.feedback-quick-modal .feedback-compose-form{padding:0}.feedback-quick-modal .feedback-form-section{padding:14px 16px}.feedback-quick-modal .feedback-dropzone{min-height:112px}.feedback-quick-modal .modal-footer{gap:8px;padding:13px 18px;border-top:1px solid #e2e8f0;background:#fff}
@media(max-width:767.98px){
    .feedback-compose-head{align-items:flex-start;flex-direction:column;padding:15px}.feedback-compose-head>a{width:100%}.feedback-compose-form{padding:12px}.feedback-form-section{padding:14px}.feedback-attachment-grid{grid-template-columns:minmax(0,1fr)}.feedback-field-meta{align-items:flex-start}.feedback-form-actions{align-items:stretch;flex-direction:column}.feedback-form-actions .btn{width:100%}
    .feedback-floating-button{right:12px;bottom:12px;width:46px;height:46px;justify-content:center;padding:0;border-radius:50%;font-size:0}.feedback-floating-button i{font-size:21px}
    .feedback-quick-modal .modal-dialog{max-width:none;margin:10px}.feedback-quick-modal .modal-header{padding-right:50px;padding-left:12px}.feedback-quick-modal .modal-header .btn-close{top:16px;right:14px}.feedback-quick-modal .modal-body,.feedback-quick-modal .modal-footer{padding-right:12px;padding-left:12px}.feedback-quick-modal .modal-footer{display:grid;grid-template-columns:1fr 1fr}.feedback-quick-modal .modal-footer>a{grid-column:1/-1;margin:0!important}.feedback-quick-modal .modal-footer .btn{width:100%}.feedback-compose-heading h5{font-size:17px}.feedback-compose-heading p{font-size:11px}
}

/* Tổng quan tuyển sinh: bố cục gọn, ưu tiên số liệu tổng hợp và bảng chi tiết có phân trang. */
.admission-overview-panel .module-list-head{align-items:flex-start}
.admission-institution-filter-form{display:grid;width:100%;grid-template-columns:auto minmax(280px,520px);align-items:center;gap:10px}
.admission-institution-filter-form .form-label{color:#475569;font-size:12px;font-weight:700;white-space:nowrap}
.admission-institution-filter-form .form-select{width:100%;min-width:0}
.admission-kpi-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px}
.admission-kpi-grid .admission-overview-kpi{min-width:0;min-height:112px;padding:17px 18px}
.admission-section-head{display:flex;min-width:0;align-items:flex-start;justify-content:space-between;gap:16px;padding:14px 16px 12px;border-bottom:1px solid #e2e8f0;background:linear-gradient(180deg,#fff 0%,#fbfcfe 100%)}
.admission-section-head>div{display:flex;min-width:0;flex-direction:column;gap:3px}
.admission-section-head strong{color:#172033;font-size:15px;font-weight:750;line-height:1.35}
.admission-section-head>div>span{color:#64748b;font-size:11px;line-height:1.45}
.admission-section-count{display:inline-flex;flex:0 0 auto;align-items:center;min-height:27px;padding:4px 9px;border:1px solid #dbe5f1;border-radius:999px;background:#f8fafc;color:#475569;font-size:11px;font-weight:700;white-space:nowrap}
.admission-major-statistics-panel .dataTables_wrapper{padding-bottom:12px}
.admission-major-statistics-panel .dataTables_length,.admission-major-statistics-panel .dataTables_filter{margin:12px 16px 10px}
.admission-major-statistics-panel .dataTables_info{margin:10px 16px 0}
.admission-major-statistics-panel .dataTables_paginate{margin:8px 16px 0}
.admission-major-statistics-panel .dataTables_filter input{max-width:260px}
.admission-target-panel .table td{vertical-align:middle}
@media(min-width:1200px){.admission-kpi-grid[data-visible-items="5"]{grid-template-columns:repeat(5,minmax(0,1fr))}.admission-kpi-grid[data-visible-items="6"]{grid-template-columns:repeat(3,minmax(0,1fr))}}
@media(max-width:1199.98px){.admission-kpi-grid{grid-template-columns:repeat(3,minmax(0,1fr))}}
@media(max-width:767.98px){
    .admission-overview-panel .module-list-head{align-items:stretch;flex-direction:column}.admission-overview-panel .module-list-actions{width:100%}.admission-overview-panel .module-list-actions .btn{flex:1 1 auto}
    .admission-institution-filter-form{grid-template-columns:minmax(0,1fr);gap:6px}.admission-institution-filter-form .form-label{white-space:normal}
    .admission-kpi-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:9px}.admission-kpi-grid .admission-overview-kpi{min-height:96px;padding:13px 14px}.admission-overview-kpi .stat-value{font-size:24px}
    .admission-section-head{gap:10px;padding:13px 12px}.admission-section-head strong{font-size:14px}.admission-section-head>div>span{font-size:10px}
    .admission-major-statistics-panel .dataTables_length,.admission-major-statistics-panel .dataTables_filter{float:none!important;width:auto;margin:10px 12px;text-align:left!important}.admission-major-statistics-panel .dataTables_filter label{display:flex;align-items:center;gap:7px}.admission-major-statistics-panel .dataTables_filter input{min-width:0;flex:1 1 auto;margin-left:0!important}.admission-major-statistics-panel .dataTables_info,.admission-major-statistics-panel .dataTables_paginate{float:none!important;margin:9px 12px 0;text-align:center!important}
    .admission-target-panel table{min-width:720px}
}
@media(max-width:420px){.admission-section-head{align-items:stretch;flex-direction:column}.admission-section-count{align-self:flex-start}.admission-kpi-grid .admission-overview-kpi{min-height:90px;padding:12px}.admission-overview-kpi .stat-label{font-size:11px}.admission-overview-kpi .stat-value{font-size:21px}}
