:root{
  --bg:#f4f7fb;--panel:#fff;--text:#1d2939;--muted:#667085;--line:#e4e7ec;
  --nav:#102a43;--nav2:#173f5f;--primary:#1769aa;--primary2:#0e5a95;--accent:#0b8f76;
  --danger:#c9362b;--warning:#b76e00;--shadow:0 10px 30px rgba(16,42,67,.08);
  --radius:16px;
}
*{box-sizing:border-box}body{margin:0;font-family:Inter,Segoe UI,Arial,sans-serif;background:var(--bg);color:var(--text);font-size:14px}.hidden{display:none!important}
button,input,select,textarea{font:inherit}.btn{border:0;border-radius:9px;padding:10px 15px;cursor:pointer;font-weight:650;transition:.18s;display:inline-flex;align-items:center;justify-content:center;gap:7px}.btn:hover{transform:translateY(-1px)}.btn.primary{background:var(--primary);color:#fff}.btn.primary:hover{background:var(--primary2)}.btn.secondary{background:#e8f1f8;color:#154e75}.btn.ghost{background:#eef2f6;color:#344054}.btn.danger{background:#fee4e2;color:#b42318}.btn.success{background:#dcfae6;color:#067647}.btn.warning{background:#fff3d6;color:#8a5600}.btn.tiny{padding:6px 9px;font-size:12px}.btn.wide{width:100%}
.login-page{min-height:100vh;display:grid;place-items:center;background:radial-gradient(circle at 20% 20%,#d6efff,transparent 35%),linear-gradient(135deg,#0f2942,#1b5b85)}.login-card{width:min(430px,92vw);background:#fff;padding:38px;border-radius:24px;box-shadow:0 24px 80px rgba(0,0,0,.24)}.brand-mark{width:62px;height:62px;border-radius:18px;background:linear-gradient(135deg,var(--primary),#41a0c8);color:#fff;display:grid;place-items:center;font-weight:800;font-size:20px;box-shadow:0 10px 25px rgba(23,105,170,.25)}.brand-mark.small{width:42px;height:42px;border-radius:12px;font-size:14px;flex:0 0 auto}.login-card h1{font-size:25px;margin:20px 0 8px}.login-card>p{color:var(--muted);margin:0 0 25px}.login-card form{display:grid;gap:15px}.login-card label,.stack-form label,.inline-form label{display:grid;gap:7px;font-weight:600;color:#344054}.login-card input,.stack-form input,.stack-form select,.stack-form textarea,.inline-form input,.inline-form select,.inline-form textarea,.period-picker select{border:1px solid #d0d5dd;border-radius:9px;padding:10px 12px;background:#fff;color:var(--text);outline:none}.login-card input:focus,.stack-form input:focus,.inline-form input:focus,select:focus,textarea:focus{border-color:#55a5da;box-shadow:0 0 0 3px rgba(23,105,170,.11)}.demo-accounts{margin-top:18px;background:#f6f8fa;border-radius:10px;padding:11px 13px;color:var(--muted);line-height:1.75}.demo-accounts summary{cursor:pointer;color:#344054;font-weight:700}
.app-shell{min-height:100vh;display:grid;grid-template-columns:260px 1fr}.sidebar{background:linear-gradient(180deg,var(--nav),#0c2236);color:#fff;padding:22px 15px;display:flex;flex-direction:column;position:sticky;top:0;height:100vh}.sidebar-brand{display:flex;gap:12px;align-items:center;padding:0 8px 25px}.sidebar-brand strong{display:block}.sidebar-brand small{display:block;color:#a9c5da;margin-top:4px}.sidebar nav{display:grid;gap:5px}.nav-item{background:transparent;color:#c9d8e4;border:0;text-align:left;border-radius:10px;padding:12px 13px;cursor:pointer;font-weight:600;display:flex;justify-content:space-between;align-items:center}.nav-item:hover,.nav-item.active{background:rgba(255,255,255,.11);color:#fff}.badge{background:#ef4444;color:#fff;border-radius:999px;padding:2px 7px;font-size:11px}.sidebar-footer{margin-top:auto;border-top:1px solid rgba(255,255,255,.12);padding-top:15px}.user-box{margin-bottom:12px;color:#d8e5ee;line-height:1.55}.user-box strong{color:#fff;display:block}.user-box small{color:#98b7cc}
.main-content{min-width:0;padding:0 28px 45px}.topbar{height:92px;display:flex;align-items:center;justify-content:space-between;gap:20px}.topbar h2{margin:0 0 4px;font-size:24px}.topbar p{margin:0;color:var(--muted)}.topbar-actions{display:flex;align-items:flex-end;gap:10px}.period-picker{display:grid;gap:5px;color:var(--muted);font-size:12px}.period-picker select{min-width:160px;padding:9px 11px}.page{display:none}.page.active{display:block}.metric-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:16px;margin-bottom:18px}.metric-card{background:var(--panel);border:1px solid #e8ecf0;border-radius:var(--radius);padding:20px;box-shadow:var(--shadow);display:grid;gap:5px}.metric-card span{color:var(--muted);font-weight:600}.metric-card strong{font-size:30px;color:#183b56}.metric-card small{color:#98a2b3}.metric-card.accent{background:linear-gradient(135deg,#0e7c68,#1a9f84);color:#fff}.metric-card.accent span,.metric-card.accent strong,.metric-card.accent small{color:#fff}.panel-grid{display:grid;gap:18px}.panel-grid.two{grid-template-columns:1.25fr .75fr}.panel{background:var(--panel);border:1px solid #e7ebef;border-radius:var(--radius);box-shadow:var(--shadow);padding:20px;margin-bottom:18px;min-width:0}.panel-head{display:flex;justify-content:space-between;align-items:center;gap:15px;margin-bottom:17px}.panel h3{margin:0 0 4px;font-size:17px}.panel-head p{margin:0;color:var(--muted);font-size:13px}.workflow{list-style:none;padding:0;margin:0;display:grid;gap:12px;counter-reset:step}.workflow li{position:relative;padding:14px 14px 14px 52px;border:1px solid var(--line);border-radius:12px;background:#fbfcfd}.workflow li:before{counter-increment:step;content:counter(step);position:absolute;left:13px;top:13px;width:27px;height:27px;border-radius:50%;display:grid;place-items:center;background:#ddecf7;color:#155a8a;font-weight:800}.workflow b,.workflow span{display:block}.workflow span{color:var(--muted);margin-top:3px}.big-number{display:flex;align-items:baseline;gap:10px;padding:18px 0}.big-number strong{font-size:50px;color:var(--warning)}.big-number span{color:var(--muted)}.muted{color:var(--muted)}
.inline-form{border:1px dashed #b8c9d8;background:#f8fbfd;padding:17px;border-radius:13px;margin-bottom:18px}.form-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:13px}.form-grid.compact{grid-template-columns:1fr 1fr}.span-2{grid-column:span 2}.span-4{grid-column:span 4}.form-actions{display:flex;justify-content:flex-end;gap:8px}.stack-form{display:grid;gap:12px}.stack-form textarea{resize:vertical}.table-wrap{overflow:auto;border:1px solid var(--line);border-radius:11px}table{border-collapse:collapse;width:100%;min-width:850px}th,td{padding:11px 12px;border-bottom:1px solid var(--line);text-align:left;vertical-align:top}th{background:#f7f9fb;color:#475467;font-size:12px;text-transform:uppercase;letter-spacing:.03em;white-space:nowrap}tbody tr:hover{background:#fafcfe}td.num,th.num{text-align:right}.status{display:inline-flex;padding:4px 8px;border-radius:999px;font-size:11px;font-weight:750;white-space:nowrap}.status.draft,.status.pending{background:#f2f4f7;color:#475467}.status.submitted{background:#fff3d6;color:#8a5600}.status.confirmed,.status.approved_on_time,.status.accepted,.status.dean_approved,.status.locked{background:#dcfae6;color:#067647}.status.returned,.status.approved_late{background:#fff0c2;color:#8a5600}.status.rejected,.status.not_accepted{background:#fee4e2;color:#b42318}.actions{display:flex;flex-wrap:wrap;gap:5px}.empty{padding:35px;text-align:center;color:var(--muted)}
.task-list{display:grid;gap:14px}.task-card{border:1px solid var(--line);border-radius:13px;overflow:hidden}.task-head{padding:14px 16px;background:#f8fafc;display:flex;justify-content:space-between;gap:15px;align-items:flex-start}.task-head h4{margin:0 0 5px}.task-meta{display:flex;flex-wrap:wrap;gap:12px;color:var(--muted);font-size:12px}.milestone-list{padding:0 16px}.milestone-row{display:grid;grid-template-columns:38px 1.4fr .8fr .8fr .65fr 1fr;gap:10px;align-items:center;padding:12px 0;border-top:1px solid var(--line)}.milestone-number{width:28px;height:28px;border-radius:50%;display:grid;place-items:center;background:#edf3f8;color:#345b78;font-weight:750}.milestone-preview{border:1px solid #d6e1e9;border-radius:10px;background:#fff;padding:11px;color:#475467}.milestone-preview ul{margin:7px 0 0;padding-left:20px}.review-sections{display:grid;gap:20px}.review-group h4{margin:0 0 10px}.review-card{display:grid;grid-template-columns:1fr auto;gap:15px;border:1px solid var(--line);border-radius:12px;padding:14px;margin-bottom:9px}.review-card h5{margin:0 0 5px;font-size:14px}.review-card p{margin:3px 0;color:var(--muted)}.policy-list{margin-top:20px;display:grid;gap:8px}.policy-item{padding:11px;border:1px solid var(--line);border-radius:10px}.policy-item strong{display:block}.policy-item small{color:var(--muted)}
.toast{position:fixed;right:24px;top:22px;z-index:9999;padding:12px 17px;border-radius:10px;background:#173f5f;color:#fff;box-shadow:0 12px 35px rgba(0,0,0,.2);opacity:0;pointer-events:none;transform:translateY(-10px);transition:.25s}.toast.show{opacity:1;transform:none}.toast.error{background:#b42318}.toast.success{background:#067647}
@media(max-width:1100px){.metric-grid{grid-template-columns:repeat(2,1fr)}.panel-grid.two{grid-template-columns:1fr}.form-grid{grid-template-columns:repeat(2,1fr)}.span-4{grid-column:span 2}.milestone-row{grid-template-columns:34px 1fr .7fr .7fr}.milestone-row>*:nth-child(5),.milestone-row>*:nth-child(6){grid-column:span 2}}
@media(max-width:760px){.app-shell{display:block}.sidebar{height:auto;position:relative}.sidebar nav{grid-template-columns:repeat(2,1fr)}.sidebar-footer{display:none}.main-content{padding:0 14px 30px}.topbar{height:auto;padding:18px 0;align-items:flex-start;flex-direction:column}.topbar-actions{width:100%}.period-picker{flex:1}.period-picker select{width:100%}.metric-grid{grid-template-columns:1fr}.form-grid,.form-grid.compact{grid-template-columns:1fr}.span-2,.span-4{grid-column:span 1}.panel{padding:14px}.review-card{grid-template-columns:1fr}}
.table-search{min-width:280px;max-width:420px;padding:10px 12px;border:1px solid #d7dee8;border-radius:10px;background:#fff;color:#1d2939}
.catalog-table-wrap{max-height:560px;overflow:auto}
.catalog-table-wrap table{min-width:1250px}
.catalog-table-wrap thead th{position:sticky;top:0;z-index:2;background:#f7f9fc}
#activityRateHint{display:block;margin-top:5px;line-height:1.35}
.modal{position:fixed;inset:0;background:rgba(9,30,45,.55);display:grid;place-items:center;padding:20px;z-index:10000}.modal-card{width:min(680px,96vw);max-height:92vh;overflow:auto;background:#fff;border-radius:18px;box-shadow:0 30px 90px rgba(0,0,0,.3);padding:20px}.modal-wide{width:min(1000px,96vw)}.modal-head{display:flex;justify-content:space-between;align-items:flex-start;gap:15px;border-bottom:1px solid var(--line);padding-bottom:13px;margin-bottom:16px}.modal-head h3{margin:0 0 4px}.modal-head p{margin:0;color:var(--muted)}.modal-close{width:36px;height:36px;border:0;border-radius:50%;background:#eef2f6;font-size:24px;cursor:pointer}.milestone-editor{border:1px solid var(--line);border-radius:12px;padding:14px;background:#f9fbfd}.milestone-editor-head{display:flex;justify-content:space-between;gap:12px;align-items:center;margin-bottom:12px}.milestone-editor-head strong,.milestone-editor-head small{display:block}.milestone-editor-head small{color:var(--muted);margin-top:4px}.milestone-edit-row{display:grid;grid-template-columns:34px 1.5fr 135px 135px 90px 110px 110px 170px 1.2fr 60px;gap:7px;align-items:center;padding:8px 0;border-top:1px solid var(--line)}.milestone-edit-row input,.milestone-edit-row select{width:100%;border:1px solid #d0d5dd;border-radius:8px;padding:8px}.milestone-index{width:28px;height:28px;border-radius:50%;background:#e8f1f8;display:grid;place-items:center;font-weight:700}.check-inline{display:flex!important;grid-template-columns:auto 1fr!important;align-items:center;gap:5px!important;font-size:12px!important}.check-inline input{width:auto!important}.milestone-total{text-align:right;margin-top:12px}.text-danger{color:#b42318}.progress-row{grid-template-columns:38px 1.6fr 1fr .55fr .8fr 1fr}.evidence-list{display:grid;gap:10px}.evidence-item{display:flex;justify-content:space-between;gap:15px;align-items:center;border:1px solid var(--line);border-radius:11px;padding:12px}.evidence-item strong,.evidence-item small{display:block}.evidence-item small{color:var(--muted);margin-top:4px}.evidence-preview{height:65vh;margin-top:15px;border:1px solid var(--line);border-radius:10px;overflow:hidden}.evidence-preview iframe{width:100%;height:100%;border:0}.overdue-note{display:inline-flex;margin-top:8px}.status.overdue,.status.urgent,.status.due_today{background:#fee4e2;color:#b42318}.status.upcoming{background:#fff3d6;color:#8a5600}.status.normal{background:#f2f4f7;color:#475467}
@media(max-width:1250px){.milestone-edit-row{grid-template-columns:34px 1fr 120px 120px 80px 100px 100px}.milestone-edit-row .m-rule,.milestone-edit-row .m-requirement,.milestone-edit-row .m-remove{grid-column:span 2}.progress-row{grid-template-columns:34px 1fr .8fr .55fr}.progress-row>*:nth-child(5),.progress-row>*:nth-child(6){grid-column:span 2}}
@media(max-width:760px){.milestone-editor-head{align-items:flex-start;flex-direction:column}.milestone-edit-row{grid-template-columns:30px 1fr}.milestone-edit-row>*{grid-column:2}.milestone-edit-row .milestone-index{grid-column:1;grid-row:1}.evidence-item{align-items:flex-start;flex-direction:column}.modal{padding:5px}.modal-card{border-radius:12px}}
.role-chip{display:inline-flex;align-items:center;margin:2px 4px 2px 0;padding:4px 8px;border-radius:999px;background:#e8f1f8;color:#154e75;font-size:11px;font-weight:700}
select[multiple]{min-height:138px;padding:6px!important}
select[multiple] option{padding:6px}
#accountInfo h4{margin:20px 0 8px}
#accountInfo p{line-height:1.65}
.status.milestones_assigned{background:#e8f1f8;color:#154e75}
.status.temp_locked{background:#fff3d6;color:#8a5600}

/* ===== giao diện giao mốc tiến độ ===== */
.modal-milestone{width:min(1420px,98vw);height:min(95vh,980px);max-height:95vh;padding:0;overflow:hidden;display:flex;flex-direction:column}
.milestone-modal-head{padding:20px 22px 15px;margin:0;flex:0 0 auto;background:#fff;position:relative;z-index:2}
.milestone-assign-form{min-height:0;display:flex;flex-direction:column;flex:1}
.milestone-form-scroll{overflow:auto;padding:20px 22px 24px;display:grid;gap:18px;flex:1;background:#f7f9fc}
.milestone-general,.milestone-editor,.milestone-comment{background:#fff;border:1px solid var(--line);border-radius:14px;padding:17px;box-shadow:0 4px 14px rgba(16,42,67,.04)}
.section-title{margin-bottom:14px}.section-title strong,.section-title small{display:block}.section-title small{color:var(--muted);margin-top:4px}
.milestone-general-grid{grid-template-columns:repeat(3,minmax(180px,1fr))}.milestone-general-grid .span-2{grid-column:span 2}
.milestone-general textarea,.milestone-comment textarea,.milestone-card-grid textarea{resize:vertical;line-height:1.45}
.milestone-editor{padding:0;overflow:hidden}.milestone-editor-head{padding:17px 18px;margin:0;border-bottom:1px solid var(--line);background:#fbfcfe;position:sticky;top:0;z-index:3}.milestone-toolbar{display:flex;flex-wrap:wrap;gap:8px}
.milestone-card-list{padding:16px;display:grid;gap:14px}
.milestone-edit-row{display:block!important;padding:0!important;border:1px solid #d8e2ea!important;border-radius:13px;background:#fff;overflow:hidden;box-shadow:0 5px 16px rgba(16,42,67,.05)}
.milestone-card-head{display:flex;justify-content:space-between;gap:14px;align-items:center;padding:12px 14px;background:#f4f8fb;border-bottom:1px solid #dfe7ee}
.milestone-card-number{display:flex;gap:10px;align-items:center}.milestone-card-number strong,.milestone-card-number small{display:block}.milestone-card-number small{color:var(--muted);margin-top:2px}
.milestone-index{width:34px;height:34px;border-radius:50%;background:#dcecf7;color:#174f75;display:grid;place-items:center;font-weight:800;flex:0 0 auto}
.milestone-card-grid{display:grid;grid-template-columns:repeat(12,minmax(0,1fr));gap:13px;padding:15px}
.milestone-card-grid label{display:grid;gap:7px;font-weight:650;color:#344054;min-width:0;grid-column:span 3}
.milestone-card-grid input,.milestone-card-grid select,.milestone-card-grid textarea,.milestone-general input,.milestone-general select,.milestone-general textarea,.milestone-comment textarea{width:100%;border:1px solid #cfd8e3;border-radius:9px;padding:10px 11px;background:#fff;color:var(--text);outline:none}
.milestone-card-grid input:focus,.milestone-card-grid select:focus,.milestone-card-grid textarea:focus,.milestone-general input:focus,.milestone-general textarea:focus,.milestone-comment textarea:focus{border-color:#55a5da;box-shadow:0 0 0 3px rgba(23,105,170,.11)}
.milestone-card-grid .field-name{grid-column:span 8}.milestone-card-grid .field-rule{grid-column:span 4}.milestone-card-grid .field-evidence{grid-column:span 4}.milestone-card-grid .field-requirement{grid-column:span 8}
.milestone-card-grid .field-name textarea{min-height:92px;font-size:14px}.milestone-card-grid .field-requirement textarea{min-height:116px}
.check-card{display:flex!important;grid-template-columns:auto 1fr!important;align-items:center!important;gap:10px!important;border:1px solid #d7e1e9;border-radius:10px;padding:10px 12px;background:#f9fbfd;cursor:pointer}.check-card input{width:18px!important;height:18px}.check-card span strong,.check-card span small{display:block}.check-card span small{font-weight:400;color:var(--muted);margin-top:3px}
.milestone-total{margin:0 16px 16px;padding:13px 15px;border:1px solid #d8e2ea;border-radius:11px;display:grid;grid-template-columns:1fr auto;align-items:center;gap:3px 14px;text-align:left;background:#f8fafc}.milestone-total>span{font-weight:700}.milestone-total>strong{font-size:24px;grid-row:span 2}.milestone-total>small{color:var(--muted)}.milestone-total.is-valid{background:#ecfdf3;border-color:#9bd9b5;color:#067647}.milestone-total.is-invalid{background:#fff4ed;border-color:#f3b39a;color:#b54708}
.milestone-comment{display:grid;gap:8px;font-weight:650;color:#344054}
.modal-actions-sticky{flex:0 0 auto;display:flex;justify-content:flex-end;gap:9px;padding:14px 22px;background:#fff;border-top:1px solid var(--line);box-shadow:0 -8px 20px rgba(16,42,67,.06)}

/* ===== trạng thái Google Drive ===== */
.storage-layout{grid-template-columns:1.2fr .8fr}.storage-details{display:grid;grid-template-columns:160px 1fr;gap:10px 14px;margin:0 0 18px}.storage-details dt{font-weight:700;color:#475467}.storage-details dd{margin:0;min-width:0;overflow-wrap:anywhere}.storage-details code,.setup-checklist code{background:#eef3f7;border-radius:6px;padding:2px 5px}.storage-checks{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:9px}.storage-check{display:flex;gap:10px;align-items:flex-start;border:1px solid var(--line);border-radius:10px;padding:10px}.storage-check>span{width:24px;height:24px;border-radius:50%;display:grid;place-items:center;font-weight:800;flex:0 0 auto}.storage-check.ok>span{background:#dcfae6;color:#067647}.storage-check.bad>span{background:#fee4e2;color:#b42318}.storage-check strong,.storage-check small{display:block}.storage-check small{color:var(--muted);margin-top:3px}.storage-actions{margin-top:18px}.storage-success{border:1px solid #9bd9b5;background:#ecfdf3;color:#067647;border-radius:11px;padding:12px 14px;margin-bottom:14px}.storage-success strong,.storage-success span{display:block}.storage-success span{margin-top:4px}.storage-error{border:1px solid #f2a7a0;background:#fff1f0;color:#b42318;border-radius:11px;padding:12px 14px}.setup-checklist{margin:0;padding-left:23px;display:grid;gap:11px;line-height:1.5}

@media(max-width:1050px){.milestone-card-grid label{grid-column:span 4}.milestone-card-grid .field-name{grid-column:span 8}.milestone-card-grid .field-rule{grid-column:span 6}.milestone-card-grid .field-evidence{grid-column:span 6}.milestone-card-grid .field-requirement{grid-column:span 12}.storage-layout{grid-template-columns:1fr}}
@media(max-width:760px){.modal-milestone{width:100vw;height:100vh;max-height:100vh;border-radius:0}.milestone-modal-head{padding:14px}.milestone-form-scroll{padding:12px}.milestone-general-grid{grid-template-columns:1fr}.milestone-general-grid .span-2{grid-column:span 1}.milestone-editor-head{align-items:stretch}.milestone-toolbar{width:100%}.milestone-toolbar .btn{flex:1}.milestone-card-grid{grid-template-columns:1fr}.milestone-card-grid label,.milestone-card-grid .field-name,.milestone-card-grid .field-rule,.milestone-card-grid .field-evidence,.milestone-card-grid .field-requirement{grid-column:1}.milestone-card-head{align-items:flex-start}.modal-actions-sticky{padding:11px 12px}.storage-checks{grid-template-columns:1fr}.storage-details{grid-template-columns:1fr;gap:3px}.storage-details dd{margin-bottom:9px}}

/* ===== lịch công tác và tổ chức giảng dạy theo cấu phần ===== */
.warning-card{border-color:#f6d28b;background:linear-gradient(145deg,#fffdf8,#fff7e6)}
.warning-card strong{color:#9a5b00}.legacy-metrics{opacity:.92}
.calendar-toolbar{display:flex;align-items:end;justify-content:space-between;gap:14px;flex-wrap:wrap}
.calendar-toolbar-left,.calendar-toolbar-right{display:flex;align-items:end;gap:10px;flex-wrap:wrap}
.calendar-toolbar label{display:grid;gap:5px;color:var(--muted);font-size:12px;font-weight:650}
.calendar-toolbar input,.calendar-toolbar select{border:1px solid #d0d5dd;border-radius:9px;padding:9px 11px;background:#fff;color:var(--text)}
.segmented{display:inline-flex;border:1px solid #d5dee7;background:#f5f8fb;border-radius:10px;padding:3px;gap:2px}
.segmented .btn{border-radius:7px;padding:7px 11px;background:transparent;color:#475467}
.segmented .btn.active{background:#fff;color:var(--primary);box-shadow:0 2px 8px rgba(16,42,67,.1)}
.calendar-board{min-height:400px}.calendar-month{display:grid;grid-template-columns:repeat(7,minmax(110px,1fr));border:1px solid var(--line);border-radius:13px;overflow:auto;background:#fff}
.calendar-weekday{padding:10px;text-align:center;font-weight:800;color:#475467;background:#f7f9fb;border-right:1px solid var(--line);border-bottom:1px solid var(--line)}
.calendar-day{min-height:125px;padding:8px;border-right:1px solid var(--line);border-bottom:1px solid var(--line);background:#fff;overflow:hidden}
.calendar-day:nth-child(7n){border-right:0}.calendar-day.outside{background:#fafbfc;color:#98a2b3}.calendar-day.today{box-shadow:inset 0 0 0 2px #5ba7d7;background:#f4fbff}.calendar-day>b{display:inline-grid;place-items:center;width:25px;height:25px;border-radius:50%;margin-bottom:5px}.calendar-day.today>b{background:var(--primary);color:#fff}
.calendar-event{display:block;margin:4px 0;padding:5px 6px;border-radius:7px;background:#edf4f9;color:#184f73;font-size:11px;line-height:1.25;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;border-left:3px solid #5f9fc7}.calendar-event span{font-weight:800;margin-right:4px}.calendar-event small{display:block;color:inherit;opacity:.8;margin-top:3px;white-space:normal}
.calendar-event.type-teaching{background:#e5f4ff;color:#135d8e;border-left-color:#1685c4}.calendar-event.type-leave{background:#fff0ed;color:#a73a2c;border-left-color:#d95b49}.calendar-event.type-assigned_work{background:#edf8f2;color:#166a45;border-left-color:#2d9b68}.calendar-event.type-meeting{background:#f3edff;color:#6941a5;border-left-color:#8a63c7}.calendar-event.type-duty{background:#fff6dc;color:#805700;border-left-color:#d69b13}.calendar-event.type-business_trip{background:#e9f8f8;color:#13646b;border-left-color:#28929a}.calendar-event.type-progress{background:#eef2ff;color:#3f51a2;border-left-color:#6574cc}
.calendar-week{display:grid;grid-template-columns:repeat(7,minmax(150px,1fr));gap:10px;overflow:auto}.calendar-week>article{min-height:310px;border:1px solid var(--line);border-radius:11px;padding:11px;background:#fff}.calendar-week h4{margin:0 0 12px;color:#344054}
.calendar-year{display:grid;grid-template-columns:repeat(4,minmax(190px,1fr));gap:13px}.calendar-year>article{border:1px solid var(--line);border-radius:12px;padding:14px;background:#fff;min-height:170px}.calendar-year h4{margin:0 0 8px}.calendar-year strong{font-size:28px;color:#174f75}.calendar-year>article>span{color:var(--muted);margin-left:5px}.calendar-year ul{padding-left:19px;margin:12px 0 0;color:#475467;line-height:1.55;font-size:12px}
.component-editor-head{display:flex;align-items:center;justify-content:space-between;gap:12px;margin:18px 0 10px}.component-editor-head h4{margin:0}.component-editor{display:grid;gap:14px}.component-card{border:1px solid #d8e2ea;border-radius:13px;background:#fff;overflow:hidden;box-shadow:0 5px 15px rgba(16,42,67,.04)}.component-card-head{display:flex;align-items:center;justify-content:space-between;padding:11px 14px;background:#f5f8fb;border-bottom:1px solid #e0e7ee}.component-card .form-grid{padding:14px}.subgroup-field textarea{font-family:Consolas,monospace;font-size:12px}
.offering-list{display:grid;gap:14px}.offering-card{border:1px solid var(--line);border-radius:14px;background:#fff;overflow:hidden}.offering-head{display:flex;justify-content:space-between;align-items:flex-start;gap:15px;padding:15px 17px;background:#f8fafc;border-bottom:1px solid var(--line)}.offering-head h4{margin:0 0 5px}.offering-head p{margin:0;color:var(--muted)}.component-summary{display:grid;grid-template-columns:repeat(auto-fit,minmax(230px,1fr));gap:10px;padding:14px}.component-summary article{border:1px solid #e1e7ed;border-radius:10px;padding:11px;background:#fbfcfd}.component-summary strong,.component-summary small{display:block}.component-summary small{color:var(--muted);margin-top:4px}.component-summary ul{padding-left:18px;margin:8px 0 0;font-size:12px;color:#475467;line-height:1.5}
.session-list,.work-list,.violation-list{display:grid;gap:13px}.session-card,.work-card,.violation-card{border:1px solid var(--line);border-radius:13px;background:#fff;padding:15px;box-shadow:0 4px 14px rgba(16,42,67,.04)}.session-card-head,.work-head,.violation-head{display:flex;align-items:flex-start;justify-content:space-between;gap:14px}.session-card h4,.work-card h4,.violation-card h4{margin:0 0 5px}.session-card p,.work-card p,.violation-card p{color:#475467;line-height:1.55}.session-card-head p,.work-head p,.violation-head p{margin:0;color:var(--muted);font-size:12px}.session-card ul{margin:10px 0;padding-left:20px;display:grid;gap:7px}.session-card li{line-height:1.5}.session-card li .btn{margin-left:4px}
.work-members{display:grid;grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:9px;margin:12px 0}.work-members>div{border:1px solid #e1e7ed;border-radius:10px;padding:10px;background:#fafcfd}.work-members b,.work-members span{display:block}.work-members span{margin-top:4px;color:var(--muted)}
.violation-card{border-left:4px solid #d26a55}.violation-head>div:last-child{display:flex;align-items:center;gap:8px}.deduction{font-size:20px;font-weight:850;color:#b42318}.explanation-list{display:grid;gap:7px;margin:10px 0}.explanation-list blockquote{margin:0;border-left:3px solid #c4d5e1;background:#f7fafc;padding:9px 11px;border-radius:0 8px 8px 0;color:#475467}.explanation-list small{display:block;margin-top:5px;color:var(--muted)}
.split-admin{display:grid;grid-template-columns:1fr 1fr;gap:18px}.score-highlight{font-size:24px;color:#067647}.compact-note{padding:10px 12px;background:#f7f9fb;border:1px solid var(--line);border-radius:9px;color:var(--muted);line-height:1.5}
.status.participant_confirmation{background:#fff3d6;color:#8a5600}.status.waiting_explanation{background:#fff3d6;color:#8a5600}.status.completed{background:#dcfae6;color:#067647}.status.cancelled{background:#f2f4f7;color:#667085}.status.suspended,.status.paused{background:#fff3d6;color:#8a5600}.status.in_progress{background:#e8f1f8;color:#155a8a}.status.waiting_review{background:#fff3d6;color:#8a5600}

@media(max-width:1180px){.calendar-year{grid-template-columns:repeat(3,minmax(180px,1fr))}.calendar-month{grid-template-columns:repeat(7,minmax(95px,1fr))}.calendar-day{min-height:115px}.split-admin{grid-template-columns:1fr}}
@media(max-width:820px){.calendar-month{grid-template-columns:repeat(7,minmax(82px,1fr));font-size:12px}.calendar-day{min-height:105px;padding:5px}.calendar-event{font-size:10px}.calendar-year{grid-template-columns:repeat(2,minmax(150px,1fr))}.calendar-toolbar{align-items:stretch}.calendar-toolbar-left,.calendar-toolbar-right{width:100%}.calendar-toolbar label{flex:1}.session-card-head,.work-head,.violation-head,.offering-head{flex-direction:column}.component-card .form-grid{grid-template-columns:1fr}.component-card .span-2{grid-column:1}}
@media(max-width:560px){.calendar-month{display:block}.calendar-weekday{display:none}.calendar-day{min-height:auto;border-right:0;padding:10px}.calendar-day.outside{display:none}.calendar-year{grid-template-columns:1fr}.calendar-week{grid-template-columns:1fr}.segmented{width:100%}.segmented .btn{flex:1}.calendar-toolbar input,.calendar-toolbar select{width:100%}}
.span-3{grid-column:span 3}
.segmented button{border:0;border-radius:7px;padding:8px 12px;background:transparent;color:#475467;font-weight:700;cursor:pointer}
.segmented button.active{background:#fff;color:var(--primary);box-shadow:0 2px 8px rgba(16,42,67,.1)}
@media(max-width:1100px){.span-3{grid-column:span 2}}
@media(max-width:760px){.span-3{grid-column:span 1}}

/* ===== danh sách giao mốc tiến độ ===== */
.milestone-list-editor{overflow:visible}
.milestone-list-wrap{position:relative;overflow:auto;background:#fff;max-width:100%}
.milestone-management-table{width:100%;min-width:1060px;border-collapse:separate;border-spacing:0;table-layout:fixed}
.milestone-management-table th,.milestone-management-table td{padding:12px 11px;border-bottom:1px solid var(--line);vertical-align:top;overflow-wrap:anywhere}
.milestone-management-table thead th{position:sticky;top:0;z-index:2;background:#f5f8fb;color:#344054;font-size:12px;text-transform:uppercase;letter-spacing:.025em;text-align:left}
.milestone-management-table th:nth-child(1){width:58px}
.milestone-management-table th:nth-child(2){width:27%}
.milestone-management-table th:nth-child(3){width:115px}
.milestone-management-table th:nth-child(4){width:245px}
.milestone-management-table th:nth-child(5){width:80px}
.milestone-management-table th:nth-child(6){width:125px}
.milestone-management-table th:nth-child(7){width:250px}
.milestone-management-table tbody tr:hover{background:#fbfdff}
.milestone-list-index{display:inline-grid;place-items:center;width:31px;height:31px;border-radius:50%;background:#e4f0f8;color:#174f75;font-weight:800}
.milestone-list-note{display:block;margin-top:5px;color:var(--muted);font-weight:400;line-height:1.4}
.milestone-row-actions{display:flex;align-items:center;justify-content:flex-end;gap:5px;flex-wrap:nowrap}
.milestone-row-actions .btn{white-space:nowrap}
.milestone-row-actions .btn:disabled{opacity:.38;cursor:not-allowed}
.milestone-empty{padding:28px 18px;text-align:center;color:var(--muted);background:#fff}
.milestone-item-editor{margin:16px;border:1px solid #bfd5e5;border-radius:13px;background:#f8fbfd;box-shadow:0 8px 24px rgba(16,42,67,.08);overflow:hidden}
.milestone-item-editor-head{display:flex;align-items:flex-start;justify-content:space-between;gap:16px;padding:14px 16px;background:#edf5fa;border-bottom:1px solid #d3e2ec}
.milestone-item-editor-head strong,.milestone-item-editor-head small{display:block}
.milestone-item-editor-head small{margin-top:4px;color:var(--muted)}
.milestone-item-grid{display:grid;grid-template-columns:repeat(12,minmax(0,1fr));gap:14px;padding:16px}
.milestone-item-grid label{display:grid;gap:7px;grid-column:span 3;min-width:0;font-weight:650;color:#344054}
.milestone-item-grid input,.milestone-item-grid select,.milestone-item-grid textarea{display:block;width:100%;max-width:100%;min-width:0;box-sizing:border-box;border:1px solid #c7d4df;border-radius:9px;padding:10px 11px;background:#fff;color:var(--text);line-height:1.4}
.milestone-item-grid textarea{resize:vertical}
.milestone-item-grid input:focus,.milestone-item-grid select:focus,.milestone-item-grid textarea:focus{border-color:#55a5da;box-shadow:0 0 0 3px rgba(23,105,170,.11);outline:0}
.milestone-item-grid .field-name{grid-column:span 8}
.milestone-item-grid .field-rule{grid-column:span 4}
.milestone-item-grid .field-evidence{grid-column:span 4;align-self:end}
.milestone-item-grid .field-requirement{grid-column:span 8}
.milestone-item-grid .field-name textarea{min-height:88px}
.milestone-item-grid .field-requirement textarea{min-height:112px}
.milestone-item-actions{display:flex;justify-content:flex-end;gap:9px;padding:0 16px 16px}

@media(max-width:980px){
  .milestone-item-grid label{grid-column:span 6}
  .milestone-item-grid .field-name,.milestone-item-grid .field-rule,.milestone-item-grid .field-evidence,.milestone-item-grid .field-requirement{grid-column:span 12}
}
@media(max-width:620px){
  .milestone-item-grid{grid-template-columns:1fr;padding:13px}
  .milestone-item-grid label,.milestone-item-grid .field-name,.milestone-item-grid .field-rule,.milestone-item-grid .field-evidence,.milestone-item-grid .field-requirement{grid-column:1}
  .milestone-item-editor{margin:12px}
  .milestone-item-editor-head{flex-direction:column}
  .milestone-item-actions{padding:0 13px 13px}
}

/* ===== bảng điểm KPI và quản lý định mức ===== */
.kpi-panel-head{align-items:flex-start;gap:18px}.kpi-head-actions{align-items:flex-end;flex-wrap:wrap;justify-content:flex-end}.kpi-head-actions label{display:grid;gap:5px;font-size:12px;font-weight:700;color:#475467}.kpi-head-actions select,.kpi-head-actions input{min-width:110px;border:1px solid var(--line);border-radius:8px;padding:8px 10px;background:#fff}.kpi-metrics{margin:16px 0}.kpi-score-table{min-width:1450px}.kpi-score-table th,.kpi-score-table td{white-space:nowrap}.kpi-score-table td:first-child,.kpi-score-table td:nth-child(12){white-space:normal;min-width:190px}.positive{color:#067647;font-weight:750}.negative{color:#b42318;font-weight:750}.score-over-100{color:#6941c6;background:#f4f0ff}.classification{display:inline-flex;align-items:center;border-radius:999px;padding:5px 9px;font-size:11px;font-weight:800;line-height:1.25}.classification.not_completed{background:#fee4e2;color:#b42318}.classification.completed{background:#fff1cc;color:#805700}.classification.good{background:#e8f1f8;color:#175b88}.classification.excellent{background:#dcfae6;color:#067647}.kpi-detail-row td{background:#f8fbfd;padding:0!important}.kpi-detail-grid{display:grid;grid-template-columns:repeat(6,minmax(160px,1fr));gap:10px;padding:14px}.kpi-detail-grid>div{border:1px solid #dce6ed;border-radius:10px;background:#fff;padding:11px}.kpi-detail-grid span,.kpi-detail-grid b,.kpi-detail-grid small{display:block}.kpi-detail-grid span{font-size:11px;text-transform:uppercase;letter-spacing:.03em;color:#667085;font-weight:750}.kpi-detail-grid b{font-size:19px;margin-top:5px;color:#174f75}.kpi-detail-grid small{margin-top:5px;color:#667085;line-height:1.45}.kpi-score-table-wrap{margin-top:14px}.kpi-score-table-wrap thead th{position:sticky;top:0;z-index:2}.kpi-score-table tbody tr:not(.kpi-detail-row):hover{background:#fbfdff}
#kpiNormPanel,#kpiAdjustmentPanel{margin-top:16px}.close-kpi-panel{white-space:nowrap}
@media(max-width:1180px){.kpi-detail-grid{grid-template-columns:repeat(3,minmax(150px,1fr))}.kpi-panel-head{flex-direction:column}.kpi-head-actions{justify-content:flex-start}}
@media(max-width:720px){.kpi-detail-grid{grid-template-columns:1fr}.kpi-head-actions{width:100%}.kpi-head-actions label,.kpi-head-actions select,.kpi-head-actions input{width:100%}}

/* v7.3: menu nhóm chính - con */
.nav-accordion{display:flex;flex-direction:column;gap:6px;overflow:auto;padding-right:2px}
.nav-group{border-radius:10px;background:rgba(255,255,255,.035);overflow:hidden}
.nav-group-toggle{width:100%;display:flex;align-items:center;justify-content:space-between;border:0;background:transparent;color:#dbe7f5;padding:11px 12px;font-weight:700;text-align:left;cursor:pointer}
.nav-group-toggle:hover{background:rgba(255,255,255,.06)}
.nav-chevron{transition:transform .18s ease;font-size:18px}.nav-group.open .nav-chevron{transform:rotate(180deg)}
.nav-group-items{display:none;padding:0 6px 7px}.nav-group.open .nav-group-items{display:flex;flex-direction:column;gap:4px}
.nav-group .nav-item{padding:9px 10px 9px 16px;font-size:13px;border-radius:8px}
.nav-group.empty{display:none}

/* v7.3: lịch đơn vị và báo cáo */
.report-filter-grid{display:grid;grid-template-columns:repeat(5,minmax(150px,1fr));gap:12px;margin:14px 0 18px;align-items:end}
.report-filter-grid label{display:flex;flex-direction:column;gap:6px;font-size:13px;font-weight:600;color:#475569}
.report-filter-grid input,.report-filter-grid select{min-height:40px}
.filter-action{display:flex;align-items:end}.filter-action .btn{width:100%}
.metric-grid.compact{grid-template-columns:repeat(auto-fit,minmax(145px,1fr));margin:12px 0 18px}
.metric-grid.compact .metric-card{padding:14px}.metric-grid.compact .metric-card strong{font-size:24px}
.unit-calendar-table td{vertical-align:top;min-width:180px}.unit-calendar-table td:first-child{min-width:160px}.unit-calendar-table td:nth-child(2){min-width:130px}
.unit-event{display:block;border-left:3px solid #64748b;background:#f8fafc;border-radius:6px;padding:6px 8px;margin:0 0 6px;font-size:12px;line-height:1.35}
.unit-event b{display:block;color:#0f172a}.unit-event small{display:block;color:#64748b;margin-top:2px}
.unit-event.type-teaching{border-color:#2563eb}.unit-event.type-leave{border-color:#dc2626}.unit-event.type-meeting{border-color:#7c3aed}.unit-event.type-duty{border-color:#ea580c}.unit-event.type-business_trip{border-color:#0891b2}.unit-event.type-assigned_work{border-color:#16a34a}.unit-event.type-progress{border-color:#9333ea}
.report-chart{display:flex;align-items:flex-end;gap:10px;min-height:0;margin:0 0 18px;overflow-x:auto}
.report-chart.has-data{min-height:190px;border:1px solid #e2e8f0;border-radius:10px;padding:18px;background:#fff}
.report-bar-wrap{min-width:70px;display:flex;flex-direction:column;align-items:center;justify-content:flex-end;height:150px;gap:5px}
.report-bar{width:34px;background:linear-gradient(180deg,#3b82f6,#1d4ed8);border-radius:6px 6px 2px 2px;min-height:2px}
.report-bar-wrap small{font-size:10px;text-align:center;max-width:75px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.report-bar-wrap b{font-size:11px}
.report-footnote{margin-top:12px;color:#64748b;font-size:12px}
.task-version-card{border:1px solid #e2e8f0;border-radius:9px;padding:12px;margin-bottom:10px}.task-version-card h4{margin:0 0 5px}.task-history-grid{display:grid;grid-template-columns:1fr 1fr;gap:16px}.task-history-list{max-height:55vh;overflow:auto}
@media(max-width:1100px){.report-filter-grid{grid-template-columns:repeat(2,minmax(150px,1fr))}}
@media(max-width:680px){.report-filter-grid{grid-template-columns:1fr}.task-history-grid{grid-template-columns:1fr}}
@media print{.sidebar,.topbar,.panel-head .actions,.report-filter-grid,#toast{display:none!important}.app-shell{display:block}.main-content{padding:0}.page{display:none!important}#page-reports{display:block!important}.panel{box-shadow:none;border:0}.report-chart{break-inside:avoid}}

/* ===== tinh chỉnh giao diện và chuẩn hóa biểu mẫu ===== */
:root{
  --bg:#f3f6fa;
  --panel:#ffffff;
  --text:#172033;
  --muted:#667085;
  --line:#dfe5ec;
  --nav:#0d2740;
  --nav2:#123b5b;
  --primary:#1269a7;
  --primary2:#0b578d;
  --accent:#0a8f78;
  --control-height:42px;
  --shadow:0 10px 28px rgba(15,42,67,.07);
  --shadow-soft:0 3px 12px rgba(15,42,67,.055);
  --radius:14px;
}
html{scroll-behavior:smooth}
body{background:linear-gradient(180deg,#f7f9fc 0,#f2f5f9 240px,#f3f6fa 100%);line-height:1.45}
button,input,select,textarea{font-family:inherit}

/* Khung ứng dụng */
.app-shell{grid-template-columns:286px minmax(0,1fr);background:transparent}
.sidebar{
  padding:16px 14px 14px;
  background:
    radial-gradient(circle at 12% 0,rgba(64,154,207,.22),transparent 28%),
    linear-gradient(180deg,#102f4c 0%,#0a2339 52%,#081d30 100%);
  box-shadow:8px 0 30px rgba(10,35,57,.13);
  border-right:1px solid rgba(255,255,255,.06);
  overflow:hidden;
  z-index:60;
}
.sidebar-brand{padding:5px 7px 16px;margin-bottom:10px;border-bottom:1px solid rgba(255,255,255,.10)}
.sidebar-brand-copy{min-width:0}
.sidebar-brand-copy strong{font-size:14px;letter-spacing:.01em}
.sidebar-brand-copy small{font-size:11px;color:#a9c9dd;white-space:nowrap}
.brand-mark.small{width:44px;height:44px;border-radius:13px;background:linear-gradient(145deg,#2083c2,#0b9a80);box-shadow:0 9px 24px rgba(5,21,34,.28)}
.sidebar-caption{padding:0 11px 8px;color:#7fa6bf;font-size:10px;font-weight:800;letter-spacing:.13em;text-transform:uppercase}
.nav-accordion{gap:7px;padding:0 2px 6px 0;scrollbar-width:thin;scrollbar-color:rgba(255,255,255,.18) transparent}
.nav-accordion::-webkit-scrollbar{width:5px}.nav-accordion::-webkit-scrollbar-thumb{background:rgba(255,255,255,.16);border-radius:10px}
.nav-group{background:transparent;border:1px solid transparent;border-radius:12px;overflow:hidden;transition:.18s ease}
.nav-group.open{background:rgba(255,255,255,.045);border-color:rgba(255,255,255,.07)}
.nav-group-toggle{min-height:46px;border-radius:11px;padding:8px 10px;color:#d8e7f2;font-size:13px;letter-spacing:.005em}
.nav-group-toggle:hover{background:rgba(255,255,255,.065)}
.nav-group-label{display:flex;align-items:center;gap:10px;min-width:0}
.nav-group-icon{width:28px;height:28px;display:grid;place-items:center;flex:0 0 28px;border-radius:8px;background:rgba(255,255,255,.08);color:#d9f2ff;font-size:15px;font-weight:800;box-shadow:inset 0 0 0 1px rgba(255,255,255,.06)}
.nav-chevron{font-size:16px;color:#8fb1c6;line-height:1;transform-origin:center}
.nav-group-items{position:relative;padding:0 7px 8px 17px}
.nav-group-items:before{content:"";position:absolute;left:17px;top:2px;bottom:12px;width:1px;background:rgba(163,201,224,.20)}
.nav-group .nav-item{position:relative;margin-left:8px;width:calc(100% - 8px);padding:9px 10px 9px 18px;border-radius:9px;color:#bed1de;font-size:12.8px;font-weight:600;min-height:38px;justify-content:flex-start;gap:8px;transition:background .15s ease,color .15s ease,transform .15s ease}
.nav-group .nav-item:before{content:"";position:absolute;left:7px;top:50%;width:5px;height:5px;margin-top:-2.5px;border-radius:50%;background:#668ba3;box-shadow:0 0 0 3px #0c2941}
.nav-group .nav-item:hover{background:rgba(255,255,255,.07);color:#fff;transform:translateX(2px)}
.nav-group .nav-item.active{background:linear-gradient(90deg,rgba(38,133,190,.38),rgba(29,106,153,.20));color:#fff;box-shadow:inset 3px 0 0 #58c3eb,0 5px 16px rgba(3,19,32,.13)}
.nav-group .nav-item.active:before{background:#68d6f5;box-shadow:0 0 0 3px rgba(31,102,148,.75)}
.nav-item .badge{margin-left:auto}
.badge{background:#e94b4b;box-shadow:0 3px 10px rgba(233,75,75,.28);font-weight:800}
.sidebar-footer{margin-top:auto;padding:13px 10px 9px;border:1px solid rgba(255,255,255,.09);border-radius:13px;background:rgba(255,255,255,.045)}
.sidebar-footer-label{font-size:9px;text-transform:uppercase;letter-spacing:.12em;color:#789fb9;font-weight:800;margin-bottom:7px}
.user-box{margin-bottom:10px;line-height:1.4}.user-box strong{font-size:13px}.user-box small{font-size:11px;display:block;margin-top:3px;color:#9ebbcf}
.sidebar-footer .btn{min-height:36px;background:rgba(255,255,255,.09);color:#e6f0f7;border:1px solid rgba(255,255,255,.08)}
.sidebar-footer .btn:hover{background:rgba(255,255,255,.14)}
.sidebar-overlay{display:none}

/* Nội dung và thanh tiêu đề */
.main-content{padding:0 32px 48px;min-width:0}
.topbar{height:82px;position:sticky;top:0;z-index:30;background:rgba(247,249,252,.88);backdrop-filter:blur(14px);border-bottom:1px solid rgba(221,228,236,.85);margin:0 -32px 24px;padding:0 32px}
.topbar-title{display:flex;align-items:center;gap:12px;min-width:0}.topbar-title>div{min-width:0}
.topbar h2{font-size:23px;letter-spacing:-.015em;color:#172b3d}.topbar p{font-size:13px}
.mobile-menu-btn{display:none;width:40px;height:40px;border:1px solid #d7e0e8;border-radius:10px;background:#fff;color:#174f75;font-size:20px;cursor:pointer;box-shadow:var(--shadow-soft)}
.topbar-actions{align-items:center}.period-picker{font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.04em}.period-picker select{min-width:190px;text-transform:none;letter-spacing:0;font-size:13px}
.page.active{animation:v74PageIn .2s ease}
@keyframes v74PageIn{from{opacity:.55;transform:translateY(4px)}to{opacity:1;transform:none}}

/* Thẻ, bảng và nút */
.panel{padding:22px;border-color:#e2e8ef;box-shadow:var(--shadow);border-radius:15px}
.panel-head{margin-bottom:18px;padding-bottom:14px;border-bottom:1px solid #edf0f3;align-items:flex-start;flex-wrap:wrap}
.panel-head h3{font-size:17px;color:#172b3d}.panel-head p{line-height:1.45;max-width:760px}
.metric-grid{gap:15px}.metric-card{padding:18px;border-color:#e5eaf0;box-shadow:var(--shadow-soft);border-radius:14px;position:relative;overflow:hidden}
.metric-card:after{content:"";position:absolute;inset:auto -24px -30px auto;width:86px;height:86px;border-radius:50%;background:rgba(35,113,165,.04)}
.metric-card strong{font-size:28px;letter-spacing:-.03em}.metric-card.accent{box-shadow:0 10px 24px rgba(10,143,120,.18)}
.btn{min-height:40px;border-radius:9px;padding:9px 14px;box-shadow:none}.btn:hover{transform:none;filter:brightness(.985)}.btn:active{transform:translateY(1px)}
.btn.primary{box-shadow:0 5px 13px rgba(18,105,167,.16)}.btn.tiny{min-height:30px;padding:5px 9px;border-radius:7px}.actions{align-items:center}
.table-wrap{background:#fff;border-color:#dfe5eb;border-radius:12px;box-shadow:0 2px 9px rgba(15,42,67,.035)}
table{font-size:13px}th,td{padding:11px 13px}th{background:#f6f8fb;color:#425466;font-size:11px;letter-spacing:.045em;position:sticky;top:0;z-index:1}tbody tr:nth-child(even){background:#fcfdfe}tbody tr:hover{background:#f6faff}

/* Chuẩn hóa toàn bộ điều khiển */
.login-card input,
.stack-form input,.stack-form select,.stack-form textarea,
.inline-form input,.inline-form select,.inline-form textarea,
.period-picker select,
.report-filter-grid input,.report-filter-grid select,
.calendar-toolbar input,.calendar-toolbar select,
.kpi-head-actions input,.kpi-head-actions select,
.milestone-item-grid input,.milestone-item-grid select,.milestone-item-grid textarea{
  width:100%;max-width:100%;min-width:0;border:1px solid #cbd5df;border-radius:9px;background:#fff;color:var(--text);outline:none;transition:border-color .15s ease,box-shadow .15s ease,background .15s ease;
}
input:not([type="checkbox"]):not([type="radio"]):not([type="hidden"]):not([type="file"]),select{min-height:var(--control-height);padding:9px 11px}
textarea{padding:10px 11px;line-height:1.45;resize:vertical}
input[type="file"]{min-height:var(--control-height);padding:7px 9px;background:#fbfcfe}
select[multiple]{height:auto;min-height:112px;padding:7px}
input:focus,select:focus,textarea:focus{border-color:#4a9acf!important;box-shadow:0 0 0 3px rgba(18,105,167,.11)!important;background:#fff}
input:disabled,select:disabled,textarea:disabled{background:#f2f4f7;color:#98a2b3;cursor:not-allowed}

.inline-form{border:1px solid #d8e5ee;background:linear-gradient(180deg,#fbfdff,#f7fafc);padding:20px;border-radius:13px;box-shadow:inset 0 1px 0 #fff,0 5px 15px rgba(15,42,67,.035)}
.form-grid{grid-template-columns:repeat(12,minmax(0,1fr));gap:16px 18px;align-items:start}
.form-grid>label{grid-column:span 3;display:flex;flex-direction:column;gap:7px;min-width:0;height:100%;font-weight:650;color:#344054}
.form-grid>.span-2{grid-column:span 6}.form-grid>.span-3{grid-column:span 9}.form-grid>.span-4{grid-column:1/-1}
.stack-form label,.report-filter-grid label,.kpi-head-actions label,.calendar-toolbar label,.milestone-item-grid label,.milestone-comment{display:flex;flex-direction:column;gap:7px;min-width:0;color:#344054;font-weight:650}
.field-label{display:block;min-height:19px;line-height:1.35;color:#344054;font-size:12.5px;font-weight:700}
.form-grid>label>.field-label{margin-bottom:auto}
.form-grid .check-card,.check-card{display:flex!important;flex-direction:row!important;align-items:center!important;gap:10px!important;min-height:68px;padding:11px 12px;border-color:#d6e0e8;background:#fff;align-self:end}
.form-check-card{grid-column:span 3!important}
.check-card input[type="checkbox"]{width:18px!important;height:18px!important;min-height:18px!important;flex:0 0 auto;margin:0}
.check-card span{min-width:0}.check-card span strong{font-size:12.5px}.check-card span small{font-size:11px;line-height:1.35}
.form-actions{grid-column:1/-1;display:flex;justify-content:flex-end;align-items:center;gap:9px;margin-top:2px;padding-top:15px;border-top:1px solid #e8edf2}
.report-filter-grid{grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:14px;align-items:end;padding:15px;border:1px solid #e0e7ee;border-radius:12px;background:#f8fafc}
.report-filter-grid .filter-action{height:100%;display:flex;align-items:flex-end}.report-filter-grid .filter-action .btn{width:100%;min-height:var(--control-height)}
.calendar-toolbar{justify-content:flex-start;align-items:center;padding:12px 14px;margin-bottom:16px;border:1px solid #e0e7ee;border-radius:12px;background:#f8fafc}.calendar-toolbar input,.calendar-toolbar select{width:auto;min-width:170px}
.segmented{min-height:42px;align-items:center}.segmented button{min-height:34px}
.kpi-head-actions{display:flex;align-items:flex-end;gap:10px}.kpi-head-actions label{min-width:130px}.kpi-head-actions .field-label{min-height:17px}

/* Các khối danh sách và modal */
.task-card,.session-card,.work-card,.violation-card,.offering-card,.component-card{border-color:#dee5ec;box-shadow:var(--shadow-soft)}
.task-head,.offering-head,.component-card-head{background:linear-gradient(180deg,#fafbfd,#f6f8fa)}
.modal{background:rgba(5,22,35,.58);backdrop-filter:blur(3px)}.modal-card{border:1px solid rgba(255,255,255,.55);box-shadow:0 28px 80px rgba(5,22,35,.30)}.modal-head{padding-bottom:14px}.modal-close{background:#f0f3f6;color:#344054;transition:.15s}.modal-close:hover{background:#e3e9ef}
.milestone-item-editor{border-color:#bad3e4;background:#f8fbfd}.milestone-item-grid{gap:15px}.milestone-item-grid label:not(.check-card){display:flex;flex-direction:column}.milestone-item-grid .field-label{min-height:19px}

/* Responsive */
@media(max-width:1180px){
  .app-shell{grid-template-columns:260px minmax(0,1fr)}
  .main-content{padding-left:24px;padding-right:24px}.topbar{margin-left:-24px;margin-right:-24px;padding-left:24px;padding-right:24px}
  .form-grid>label{grid-column:span 6}.form-grid>.span-2,.form-grid>.span-3,.form-grid>.span-4{grid-column:1/-1}.form-check-card{grid-column:span 6!important}
}
@media(max-width:900px){
  body.sidebar-open{overflow:hidden}
  .app-shell{display:block}
  .sidebar{position:fixed;left:0;top:0;bottom:0;width:min(310px,88vw);height:100vh;transform:translateX(-105%);transition:transform .22s ease;z-index:110}
  body.sidebar-open .sidebar{transform:translateX(0)}
  .sidebar-overlay{display:block;position:fixed;inset:0;border:0;background:rgba(5,22,35,.48);opacity:0;pointer-events:none;z-index:100;transition:opacity .2s ease}
  body.sidebar-open .sidebar-overlay{opacity:1;pointer-events:auto}
  .mobile-menu-btn{display:grid;place-items:center}
  .main-content{padding:0 18px 34px}.topbar{margin:0 -18px 20px;padding:0 18px;height:auto;min-height:74px}
  .topbar-actions{flex-wrap:wrap;justify-content:flex-end}.period-picker select{min-width:150px}
}
@media(max-width:680px){
  .main-content{padding:0 12px 28px}.topbar{margin-left:-12px;margin-right:-12px;padding:12px;align-items:stretch;gap:12px;flex-direction:column}.topbar-actions{width:100%;align-items:flex-end}.period-picker{flex:1}.period-picker select{width:100%}
  .panel{padding:15px}.panel-head{padding-bottom:12px}.panel-head>.actions{width:100%;justify-content:flex-start}
  .form-grid{grid-template-columns:1fr;gap:13px}.form-grid>label,.form-grid>.span-2,.form-grid>.span-3,.form-grid>.span-4,.form-check-card{grid-column:1!important}
  .form-actions{justify-content:stretch}.form-actions .btn{flex:1}
  .calendar-toolbar{align-items:stretch}.calendar-toolbar>*{width:100%}.calendar-toolbar input,.calendar-toolbar select{width:100%;min-width:0}
  .report-filter-grid{grid-template-columns:1fr;padding:12px}.metric-card strong{font-size:25px}
}

@media print{
  .sidebar-overlay,.mobile-menu-btn{display:none!important}
  .topbar{position:static;background:#fff;border:0}
}

/* ===== menu ổn định, combobox tìm kiếm và tối đa 4 nhóm ===== */
.sidebar{display:flex;flex-direction:column}
.nav-accordion{flex:1 1 auto;min-height:0;overflow-y:auto;overflow-x:hidden;scroll-padding-block:8px}
.nav-group{flex:0 0 auto}
.nav-group-items{position:static}
.sidebar-footer{flex:0 0 auto;margin-top:10px}
.nav-group-icon svg{width:17px;height:17px;display:block;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}
.nav-group[data-nav-group="overview"] .nav-group-icon svg path:first-child{fill:currentColor;stroke:none;opacity:.92}

.locked-select{pointer-events:none;background:#f3f6f9!important;color:#475467!important;border-color:#d7dfe7!important;background-image:linear-gradient(45deg,transparent 50%,#8091a1 50%),linear-gradient(135deg,#8091a1 50%,transparent 50%)!important;background-position:calc(100% - 16px) 18px,calc(100% - 11px) 18px!important;background-size:5px 5px,5px 5px!important;background-repeat:no-repeat!important}
.group-context-field small{min-height:16px;line-height:1.35}
.catalog-select-field{position:relative}

.smart-select{position:relative;min-width:0}
.smart-select-native{position:absolute!important;left:0;bottom:0;width:1px!important;height:1px!important;min-height:1px!important;opacity:0;pointer-events:none;padding:0!important;border:0!important}
.smart-select-input{padding-right:42px!important;cursor:text}
.smart-select-toggle{position:absolute;right:1px;top:1px;width:40px;height:40px;border:0;border-left:1px solid #e1e7ed;border-radius:0 8px 8px 0;background:#f8fafc;color:#526678;font-size:18px;cursor:pointer}
.smart-select.open .smart-select-input{border-color:#4a9acf!important;box-shadow:0 0 0 3px rgba(18,105,167,.11)!important}
.smart-select.open .smart-select-toggle span{display:inline-block;transform:rotate(180deg)}
.smart-select-dropdown{position:absolute;z-index:120;left:0;right:0;top:calc(100% + 6px);max-height:330px;overflow:auto;padding:7px;border:1px solid #cbd8e2;border-radius:11px;background:#fff;box-shadow:0 18px 44px rgba(12,42,64,.18)}
.smart-select-group+.smart-select-group{margin-top:7px;padding-top:7px;border-top:1px solid #edf1f4}
.smart-select-group-title{padding:5px 8px;color:#607386;font-size:10.5px;font-weight:800;letter-spacing:.06em;text-transform:uppercase}
.smart-select-option{width:100%;display:flex;align-items:center;justify-content:space-between;gap:12px;border:0;border-radius:8px;background:transparent;padding:9px 10px;text-align:left;color:#26394a;cursor:pointer}
.smart-select-option:hover,.smart-select-option.selected{background:#edf6fc;color:#0f5f96}
.smart-select-option span{min-width:0;line-height:1.35}
.smart-select-option small{flex:0 0 auto;border:1px solid #d7e3eb;border-radius:6px;background:#f8fafc;padding:2px 6px;color:#66798a;font:600 10.5px/1.3 Consolas,monospace}
.smart-select-empty{padding:18px 10px;text-align:center;color:#7a8997;font-size:12px}

.subgroup-editor{border:1px solid #d8e4ec;border-radius:12px;background:#f8fbfd;padding:14px}
.subgroup-editor-head{display:flex;align-items:flex-end;justify-content:space-between;gap:14px;margin-bottom:12px}
.subgroup-editor-head>div strong,.subgroup-editor-head>div small{display:block}.subgroup-editor-head>div small{margin-top:3px;color:#667085;font-weight:400}
.subgroup-editor-head>label{display:flex;flex-direction:column;gap:5px;min-width:125px;font-size:12px;color:#475467}
.subgroup-rows{display:grid;gap:9px}
.subgroup-row{display:grid;grid-template-columns:34px minmax(100px,.7fr) minmax(180px,1.6fr) minmax(90px,.55fr);gap:10px;align-items:end;padding:10px;border:1px solid #e0e7ed;border-radius:10px;background:#fff}
.subgroup-index{width:27px;height:27px;display:grid;place-items:center;align-self:center;border-radius:8px;background:#e9f3fa;color:#176598;font-weight:800;font-size:12px}
.subgroup-row label{display:flex;flex-direction:column;gap:5px;min-width:0;font-size:11px;color:#5c6e7e}
.subgroup-row input{min-height:38px!important}
.assignment-subgroup-field.hidden{display:none!important}

@media(max-width:760px){
  .smart-select-dropdown{position:fixed;left:12px;right:12px;top:auto;bottom:12px;max-height:55vh}
  .subgroup-editor-head{align-items:stretch;flex-direction:column}.subgroup-editor-head>label{width:100%}
  .subgroup-row{grid-template-columns:34px 1fr}.subgroup-row label:nth-of-type(2),.subgroup-row label:nth-of-type(3){grid-column:2}
}

/* ===== giao diện hiện đại, biểu mẫu gọn và danh sách lớn ===== */
:root{
  --control-height:38px;
  --radius-sm:8px;
  --shadow-soft:0 6px 20px rgba(16,42,67,.055);
  --surface-soft:#f8fafc;
}

/* Thanh tiêu đề và kỳ báo cáo nằm cùng một hàng */
.topbar{min-height:82px;height:auto;margin-bottom:18px;padding-top:12px;padding-bottom:12px;border-bottom:1px solid rgba(228,231,236,.78)}
.topbar-actions{align-items:center;gap:10px}
.period-picker{display:flex!important;align-items:center;gap:9px;color:#475467;font-size:13px;font-weight:600;white-space:nowrap}
.period-picker>span{line-height:var(--control-height)}
.period-picker select{height:var(--control-height);min-width:205px;padding:7px 34px 7px 11px;font-weight:400}
.topbar-actions .btn{height:var(--control-height);padding-block:7px}

/* Menu accordion gọn; chỉ nhóm đang mở tạo khoảng cách cho mục con */
.nav-accordion{display:flex!important;flex-direction:column;gap:2px!important;padding-right:3px}
.nav-group{margin:0!important;border-radius:10px}
.nav-group-toggle{min-height:42px;padding:9px 11px!important}
.nav-group-items{padding:2px 0 5px!important}
.nav-item{min-height:36px;padding:8px 12px 8px 43px!important;border-radius:8px!important;font-size:13px}
.nav-group:not(.open) .nav-group-items{padding:0!important}
.nav-group.open{background:rgba(255,255,255,.025)}

/* Tổng quan: giữ màu hiện tại, tăng tính phân cấp và độ thoáng */
#page-dashboard .metric-grid{gap:14px}
#page-dashboard .metric-card{position:relative;overflow:hidden;min-height:128px;padding:18px 19px;border-color:#e5ebf0;box-shadow:var(--shadow-soft);transition:transform .18s ease,box-shadow .18s ease,border-color .18s ease}
#page-dashboard .metric-card:before{content:"";position:absolute;left:0;top:0;bottom:0;width:3px;background:#7cb4d8;opacity:.8}
#page-dashboard .metric-card.warning-card:before{background:#d99a36}
#page-dashboard .metric-card.accent:before{display:none}
#page-dashboard .metric-card:hover{transform:translateY(-2px);border-color:#cfdee9;box-shadow:0 12px 28px rgba(16,42,67,.09)}
#page-dashboard .metric-card span{font-size:12.5px;font-weight:600}
#page-dashboard .metric-card strong{font-size:29px;line-height:1.15;letter-spacing:-.02em}
#page-dashboard .panel{box-shadow:var(--shadow-soft)}

/* Control và biểu mẫu dùng chung */
.inline-form{margin-bottom:18px;padding:18px;border:1px solid #dbe5ec;border-radius:14px;background:linear-gradient(180deg,#fcfdff 0%,#f8fafc 100%);box-shadow:var(--shadow-soft)}
.form-grid{grid-template-columns:repeat(12,minmax(0,1fr));gap:14px 16px;align-items:start}
.form-grid>label,.stack-form label,.report-filter-grid label,.calendar-toolbar label,.kpi-head-actions label,.milestone-item-grid label,.milestone-comment{gap:6px;color:#344054;font-size:12.5px;font-weight:500!important}
.field-label{display:flex;align-items:center;gap:6px;min-height:17px;color:#344054;font-size:12.5px;font-weight:600!important;line-height:1.3}
.form-grid>label>.field-label{margin:0}
.form-grid input:not([type="checkbox"]):not([type="radio"]),.form-grid select,.form-grid textarea,.stack-form input:not([type="checkbox"]):not([type="radio"]),.stack-form select,.stack-form textarea,.report-filter-grid input,.report-filter-grid select,.calendar-toolbar input,.calendar-toolbar select,.table-search,.data-toolbar input,.data-toolbar select{
  min-height:var(--control-height)!important;height:var(--control-height);border:1px solid #d5dde5!important;border-radius:var(--radius-sm)!important;padding:7px 10px!important;background:#fff;color:#253648;font-size:13.5px;font-weight:400!important;box-shadow:0 1px 1px rgba(16,42,67,.015);outline:none;transition:border-color .15s ease,box-shadow .15s ease,background .15s ease
}
.form-grid textarea,.stack-form textarea{height:auto;min-height:72px!important;resize:vertical;line-height:1.45}
.form-grid select[multiple],.stack-form select[multiple]{height:auto;min-height:86px!important;padding:6px!important}
.form-grid input:focus,.form-grid select:focus,.form-grid textarea:focus,.stack-form input:focus,.stack-form select:focus,.stack-form textarea:focus,.data-toolbar input:focus,.data-toolbar select:focus{border-color:#5198c8!important;box-shadow:0 0 0 3px rgba(23,105,170,.09)!important}
.form-grid input::placeholder,.data-toolbar input::placeholder{color:#98a2b3}
.form-grid .compact-control input,.form-grid .compact-control select{max-width:150px}
.form-grid .file-field input[type="file"]{height:auto;min-height:var(--control-height);padding:5px 7px!important}
.form-grid .file-field input[type="file"]::file-selector-button{margin:-1px 9px -1px -2px;border:0;border-radius:6px;padding:6px 10px;background:#edf3f8;color:#285b7c;cursor:pointer}
.span-12{grid-column:1/-1!important}.field-2{grid-column:span 2!important}.field-3{grid-column:span 3!important}.field-4{grid-column:span 4!important}.field-5{grid-column:span 5!important}.field-6{grid-column:span 6!important}.field-8{grid-column:span 8!important}
.form-heading{display:flex;align-items:center;justify-content:space-between;padding:0 0 12px;border-bottom:1px solid #e7edf2}
.form-heading strong{display:block;color:#223548;font-size:15px;font-weight:650}
.form-heading small{display:block;margin-top:3px;color:#667085;font-size:12px;font-weight:400;line-height:1.4}
.form-actions{margin-top:2px;padding-top:14px;border-top:1px solid #e7edf2}
.form-actions .btn{min-height:36px;padding:8px 14px}
.form-note{align-self:end;min-height:var(--control-height);display:flex;flex-direction:column;justify-content:center;padding:6px 11px;border:1px solid #dce7ef;border-radius:8px;background:#f4f8fb}
.form-note span{color:#667085;font-size:10.5px;text-transform:uppercase;letter-spacing:.04em}
.form-note strong{overflow:hidden;color:#36576d;font-size:12px;font-weight:500;text-overflow:ellipsis;white-space:nowrap}
.field-help{width:17px;height:17px;display:inline-grid;place-items:center;border:1px solid #b9cad6;border-radius:50%;background:#f5f9fc;color:#39759d;font:600 11px/1 Arial;cursor:help;flex:0 0 auto}
.field-help:hover,.field-help:focus{border-color:#4f92bf;background:#eaf4fa;outline:none}
.form-grid small.muted{font-size:11px;font-weight:400;line-height:1.35}

/* Thanh tìm kiếm, lọc và phân trang thống nhất */
.data-toolbar{display:flex;align-items:flex-end;gap:10px;flex-wrap:wrap;margin:0 0 14px;padding:11px;border:1px solid #e0e7ed;border-radius:12px;background:#f8fafc}
.data-toolbar label{display:flex;flex-direction:column;gap:5px;min-width:170px;color:#667085;font-size:11.5px;font-weight:550}
.data-toolbar .toolbar-search{position:relative;flex:1 1 300px;min-width:250px}
.data-toolbar .toolbar-search>span{position:absolute;left:11px;top:50%;z-index:1;transform:translateY(-50%);color:#7a8997;font-size:18px;pointer-events:none}
.data-toolbar .toolbar-search input{width:100%;padding-left:34px!important}
.data-toolbar .page-size-field{min-width:105px}
.data-toolbar .btn{height:var(--control-height);padding:7px 12px}
.pagination-bar{min-height:48px;display:flex;align-items:center;justify-content:space-between;gap:12px;padding:10px 2px 0;color:#667085;font-size:12.5px}
.pagination-controls{display:flex;align-items:center;gap:5px}
.pagination-page{min-width:32px;height:32px;border:1px solid #d7e0e7;border-radius:7px;background:#fff;color:#3c5265;font-size:12.5px;cursor:pointer}
.pagination-page:hover:not(:disabled){border-color:#80abc8;background:#f0f7fb;color:#155f91}
.pagination-page.active{border-color:#1769aa;background:#1769aa;color:#fff}
.pagination-page:disabled{opacity:.45;cursor:not-allowed}

/* Bảng dữ liệu nhẹ và hiện đại hơn */
.table-wrap{border-color:#e1e7ec;border-radius:12px;background:#fff;box-shadow:0 2px 10px rgba(16,42,67,.025)}
th,td{padding:10px 11px}
th{background:#f7f9fb;color:#566779;font-size:11.25px;font-weight:650;letter-spacing:.025em}
tbody tr{transition:background .12s ease}tbody tr:hover{background:#f9fbfd}
td small{color:#7a8997;line-height:1.4}.table-primary-text{font-weight:550;color:#243b4d}
.actions .btn{white-space:nowrap}

/* Combobox tìm kiếm: nội dung không dùng chữ đậm */
.smart-select-input{height:var(--control-height)!important;min-height:var(--control-height)!important;padding-right:40px!important;font-size:13.5px!important;font-weight:400!important}
.smart-select-toggle{width:38px;height:36px;border-radius:0 7px 7px 0;background:#fafbfc}
.smart-select-dropdown{border-radius:10px;padding:6px;box-shadow:0 18px 40px rgba(12,42,64,.16)}
.smart-select-group-title{padding:6px 8px;color:#617386;font-size:10.5px;font-weight:600!important;letter-spacing:.035em;text-transform:none}
.smart-select-option{padding:8px 9px;color:#2e4051;font-size:13px;font-weight:400!important}
.smart-select-option span{font-weight:400!important;line-height:1.4}
.smart-select-option small{font:400 10.5px/1.3 Inter,Segoe UI,Arial,sans-serif!important;color:#718293;background:#f8fafc}
.smart-select-option.selected:after{content:"✓";margin-left:auto;color:#1769aa;font-size:12px}
.smart-select-option.selected small{margin-left:0}

/* Thẻ nhiệm vụ */
.task-list{gap:12px}.task-card{border-radius:12px;box-shadow:0 3px 14px rgba(16,42,67,.035)}
.task-head{padding:13px 15px}.task-head h4{font-size:14px;font-weight:600}.task-meta{gap:7px 12px}.task-meta span{position:relative}.task-meta span:not(:last-child):after{content:"·";position:absolute;right:-8px;color:#b2bdc6}

/* Nút và panel */
.btn{border-radius:8px;font-weight:600;box-shadow:none}.btn:hover{transform:none;filter:brightness(.985)}
.panel{border-color:#e5eaef;box-shadow:var(--shadow-soft)}
.panel-head{margin-bottom:14px}.panel-head h3{font-size:16px}.panel-head p{line-height:1.45}

@media(max-width:1180px){
  .field-2,.field-3,.field-4,.field-5,.field-6,.field-8{grid-column:span 6!important}
  .form-grid .compact-control input,.form-grid .compact-control select{max-width:none}
  .data-toolbar .toolbar-search{flex-basis:100%}
}
@media(max-width:760px){
  .topbar-actions{align-items:stretch}.period-picker{width:100%;justify-content:space-between}.period-picker select{flex:1;min-width:0}.topbar-actions .btn{flex:0 0 auto}
  .field-2,.field-3,.field-4,.field-5,.field-6,.field-8,.span-12{grid-column:1!important}
  .data-toolbar{align-items:stretch}.data-toolbar>*{width:100%!important;min-width:0!important}.data-toolbar label{min-width:0}.data-toolbar .btn{width:100%}
  .pagination-bar{align-items:flex-start;flex-direction:column}.pagination-controls{width:100%;justify-content:flex-end;overflow-x:auto}
  .form-note strong{white-space:normal}
}

/* ===== danh sách làm trung tâm, panel nhập liệu và nhập nhanh ===== */
.data-list-block{border:1px solid #e1e7ed;border-radius:14px;background:#fff;padding:14px;box-shadow:0 4px 16px rgba(15,42,67,.035)}
.data-list-block .data-toolbar{margin:0 0 12px;border:0;border-bottom:1px solid #e8edf2;border-radius:0;background:#fff;padding:0 0 12px}
.select-col{width:40px;text-align:center}.select-col input,td.select-col input{width:16px;height:16px;min-height:16px}
.table-primary-text{font-weight:600;color:#243b53}.table-secondary-text{display:block;margin-top:3px;color:#667085;font-size:12px;line-height:1.35}
.component-chips{display:flex;flex-wrap:wrap;gap:5px;max-width:360px}.component-chip{display:inline-flex;align-items:center;gap:4px;padding:3px 7px;border:1px solid #dbe5ec;border-radius:999px;background:#f7fafc;color:#475467;font-size:11.5px;white-space:nowrap}.component-chip b{font-weight:500;color:#344054}

body.drawer-open{overflow:hidden}
body.drawer-open:before{content:"";position:fixed;inset:0;background:rgba(5,22,35,.48);backdrop-filter:blur(2px);z-index:180}
.form-drawer{position:fixed;top:0;right:0;z-index:190;width:min(860px,94vw);height:100vh;display:flex;flex-direction:column;background:#f8fafc;border-left:1px solid rgba(255,255,255,.7);box-shadow:-22px 0 65px rgba(5,22,35,.24);animation:v77DrawerIn .22s ease}
.form-drawer.drawer-narrow{width:min(540px,94vw)}.form-drawer.drawer-wide{width:min(1180px,97vw)}
.form-drawer.hidden{display:none!important}
@keyframes v77DrawerIn{from{transform:translateX(28px);opacity:.65}to{transform:none;opacity:1}}
.drawer-head{display:flex;align-items:flex-start;justify-content:space-between;gap:18px;padding:20px 22px 16px;background:#fff;border-bottom:1px solid #e1e7ed;flex:0 0 auto}.drawer-head h3{font-size:19px;color:#172b3d}.drawer-head p{margin-top:4px;color:#667085;font-size:12.5px;line-height:1.45}.drawer-close{width:36px;height:36px;display:grid;place-items:center;border:0;border-radius:9px;background:#eef2f6;color:#475467;font-size:22px;cursor:pointer}.drawer-close:hover{background:#e3e9ef}
.drawer-body{flex:1 1 auto;min-height:0;overflow:auto;padding:18px 22px 90px}.form-drawer form.drawer-body{display:block}
.drawer-actions{position:absolute;left:0;right:0;bottom:0;display:flex;align-items:center;justify-content:flex-end;gap:9px;padding:13px 22px;background:rgba(255,255,255,.96);border-top:1px solid #dfe6ec;box-shadow:0 -8px 24px rgba(15,42,67,.07);backdrop-filter:blur(8px)}
.form-section{margin-bottom:16px;padding:17px;border:1px solid #dfe7ee;border-radius:13px;background:#fff;box-shadow:0 4px 14px rgba(15,42,67,.035)}.form-section-title{display:flex;align-items:flex-start;justify-content:space-between;gap:12px;margin-bottom:14px;padding-bottom:11px;border-bottom:1px solid #edf1f4}.form-section-title strong{display:block;color:#243b53;font-size:14px}.form-section-title small{display:block;margin-top:3px;color:#7a8997;font-size:11.5px;line-height:1.4}
.form-drawer,.form-drawer>*,.form-drawer form,.drawer-head,.drawer-body,.drawer-actions,.form-section,.form-section-title,.form-grid,.form-grid>*,.component-editor,.component-card,.subgroup-editor,.subgroup-row,.field-block{box-sizing:border-box;min-width:0;max-width:100%}.drawer-body{overflow-y:auto;overflow-x:hidden}.form-drawer input:not([type="checkbox"]):not([type="radio"]):not([type="hidden"]),.form-drawer select,.form-drawer textarea{box-sizing:border-box;display:block;width:100%;max-width:100%;min-width:0}.form-drawer .table-wrap{width:100%;max-width:100%;overflow-x:auto;overflow-y:auto}.form-drawer .data-toolbar,.form-drawer .import-toolbar,.form-drawer .form-actions,.form-drawer .actions{max-width:100%;flex-wrap:wrap}.form-drawer .toolbar-search{min-width:0;flex:1 1 240px}.form-drawer .table-search{min-width:0;max-width:100%}.form-drawer .form-section-title>*{min-width:0}.form-drawer .form-section-title small{overflow-wrap:anywhere}
.stack-field{display:flex;flex-direction:column;gap:7px}.compact-field input{max-width:145px}.form-grid .compact-field{grid-column:span 2}.form-grid .span-2.compact-field{grid-column:span 6}
.default-component-list{display:grid;gap:9px;min-width:0}.default-component-row{display:grid;grid-template-columns:repeat(12,minmax(0,1fr));gap:10px;align-items:end;min-width:0;max-width:100%;padding:11px;border:1px solid #e1e7ed;border-radius:10px;background:#fafcfd}.default-component-row .row-index{grid-column:span 1;align-self:center;justify-self:center;display:grid;place-items:center;width:28px;height:28px;border-radius:8px;background:#eaf3f9;color:#1269a7;font-weight:700;font-size:12px}.default-component-row label{display:flex;flex-direction:column;gap:5px;min-width:0;color:#667085;font-size:11px}.default-component-row .sdc-type-field{grid-column:span 3}.default-component-row .sdc-name-field{grid-column:span 7}.default-component-row .remove-default-component{grid-column:span 1;align-self:end;justify-self:end;width:36px;padding:0}.default-component-row .sdc-periods-field{grid-column:2/span 2}.default-component-row .sdc-mode-field{grid-column:span 6}.default-component-row .sdc-groups-field{grid-column:span 3}.default-component-row input,.default-component-row select{display:block;width:100%;max-width:100%;min-width:0}.form-summary-line{margin-top:10px;padding:9px 11px;border-radius:9px;background:#f0f7fb;color:#475467;font-size:12.5px}.form-summary-line strong{font-weight:600;color:#1269a7}
.import-toolbar{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin-bottom:12px}.import-toolbar input[type=file]{flex:1 1 320px}.import-preview{max-height:420px}.import-result-ok{color:#087f5b}.import-result-error{color:#c92a2a}.import-preview tr.invalid{background:#fff5f5}.import-preview tr.valid{background:#f8fffb}
.quick-context{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px}.quick-context label{display:flex;flex-direction:column;gap:6px;color:#475467;font-size:12px;font-weight:600}.quick-entry-wrap{overflow:auto}.quick-entry-wrap table{min-width:920px}.quick-entry-wrap select,.quick-entry-wrap input{width:100%;min-width:90px}.quick-entry-wrap td{vertical-align:middle}.quick-entry-wrap .quick-row-no{width:45px;text-align:center;color:#667085}.quick-entry-wrap .quick-remove{width:36px;padding:0}
.offering-component-summary{display:flex;flex-wrap:wrap;gap:5px}.offering-component-summary span{padding:3px 7px;border-radius:999px;background:#f0f5f8;color:#475467;font-size:11.5px}.offering-component-summary b{font-weight:500}
.locked-select{font-weight:400!important}

@media(max-width:1100px){.quick-context{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:680px){.form-drawer,.form-drawer.drawer-narrow,.form-drawer.drawer-wide{width:100vw}.drawer-head{padding:16px}.drawer-body{padding:14px 14px 84px}.drawer-actions{padding:11px 14px}.form-section{padding:13px}.form-grid .compact-field{grid-column:1!important}.default-component-row{grid-template-columns:34px minmax(0,1fr)}.default-component-row>*{grid-column:2!important}.default-component-row .row-index{grid-column:1!important;grid-row:1}.default-component-row .remove-default-component{grid-column:2!important;justify-self:start}.quick-context{grid-template-columns:1fr}.data-list-block{padding:10px}}

/* ===== Bộ chính sách KPI và báo cáo theo kỳ ===== */
.policy-header-panel{padding-bottom:16px}.policy-context-bar{display:flex;align-items:center;gap:14px;flex-wrap:wrap;padding:13px 14px;border:1px solid var(--border);border-radius:12px;background:linear-gradient(180deg,#fff,#f8fafc)}.policy-context-bar>label{display:flex;align-items:center;gap:9px;min-width:min(100%,460px);margin:0}.policy-context-bar>label>span{font-size:13px;font-weight:600;white-space:nowrap;color:var(--text-secondary)}.policy-context-bar select{min-width:300px;max-width:520px}.policy-status-summary{display:flex;align-items:center;gap:10px;flex:1;min-width:240px}.policy-status-summary>span:last-child{display:flex;flex-direction:column}.policy-status-summary small{color:var(--text-muted);margin-top:2px}.policy-tabs{display:flex;gap:4px;overflow:auto;margin:14px 0;padding:5px;border:1px solid var(--border);border-radius:12px;background:#f4f7fb}.policy-tab{border:0;background:transparent;border-radius:8px;padding:10px 14px;color:var(--text-secondary);font:inherit;font-size:14px;white-space:nowrap;cursor:pointer}.policy-tab:hover{background:#fff}.policy-tab.active{background:#fff;color:var(--primary);box-shadow:0 2px 8px rgba(15,23,42,.08);font-weight:600}.policy-tab-pane{display:none}.policy-tab-pane.active{display:block}.policy-manage-actions .btn:disabled,.panel-head .btn:disabled{opacity:.48;cursor:not-allowed}.table-actions{display:flex;align-items:center;gap:5px;flex-wrap:wrap}.status.locked{background:#e8eefc;color:#29458c;border-color:#becaf0}.drawer-panel-wide{width:min(900px,94vw)}.drawer-form{padding-bottom:28px}.import-preview{margin-top:16px}.import-summary{display:flex;align-items:center;gap:18px;padding:10px 12px;border-radius:9px;background:#f4f7fb;margin-bottom:10px}.row-error td{background:#fff7f7}.policy-status-summary .status{white-space:nowrap}.report-lock-actions{display:flex;align-items:center;justify-content:flex-end;gap:8px;margin:10px 0 14px}.report-trend{display:none;margin:10px 0 18px;padding:16px 18px;border:1px solid var(--border);border-radius:12px;background:#fff}.report-trend.has-data{display:block}.trend-title{display:flex;justify-content:space-between;align-items:flex-start;gap:12px;margin-bottom:14px}.trend-title small{color:var(--text-muted)}.trend-bars{height:145px;display:flex;align-items:flex-end;gap:8px;border-bottom:1px solid var(--border);padding:0 6px}.trend-item{height:100%;min-width:34px;flex:1;display:flex;flex-direction:column;justify-content:flex-end;align-items:center;gap:4px}.trend-item b{font-size:11px;font-weight:500;color:var(--text-secondary)}.trend-item span{display:block;width:min(24px,70%);min-height:4px;border-radius:5px 5px 0 0;background:linear-gradient(180deg,var(--primary),rgba(48,94,165,.68))}.trend-item small{height:20px;color:var(--text-muted)}
@media(max-width:900px){.policy-context-bar>label{align-items:flex-start;flex-direction:column;gap:5px}.policy-context-bar select{min-width:0;width:100%}.policy-status-summary{width:100%}.policy-tabs{margin-inline:-2px}.trend-bars{overflow-x:auto}.trend-item{min-width:42px}}

/* ===== chính sách KPI và kiểm soát dữ liệu ===== */
.readonly-control,
.modern-form input[readonly],
.modern-form select.readonly-control {
  background: var(--surface-soft, #f6f8fb);
  color: var(--text-secondary, #586174);
  cursor: default;
}
.modern-form select.readonly-control { pointer-events: none; }
.policy-version-note { font-size: 12px; color: var(--text-muted, #778195); }

/* ===== v8.1: phân nhóm menu và Việt hóa giao diện nghiệp vụ ===== */
.nav-section-caption{padding:12px 11px 6px;color:#7fa6bf;font-size:10px;font-weight:800;letter-spacing:.13em;text-transform:uppercase}
.nav-section-caption:first-child{padding-top:2px}
.nav-direct{width:100%;min-height:42px!important;padding:9px 11px!important;margin:0!important;border-radius:10px!important;justify-content:flex-start!important;gap:10px!important;color:#d8e7f2!important;font-size:13px!important;font-weight:700!important}
.nav-direct-icon{width:28px;height:28px;display:grid;place-items:center;flex:0 0 28px;border-radius:8px;background:rgba(255,255,255,.08);color:#d9f2ff;font-size:15px}
.nav-direct:hover{background:rgba(255,255,255,.065)!important}
.nav-direct.active{background:linear-gradient(90deg,rgba(38,133,190,.38),rgba(29,106,153,.20))!important;box-shadow:inset 3px 0 0 #58c3eb,0 5px 16px rgba(3,19,32,.13)}
.nav-group.single-item{background:transparent!important;border-color:transparent!important}
.nav-group.single-item>.nav-group-toggle{display:none}
.nav-group.single-item>.nav-group-items{display:block!important;padding:0!important}
.nav-group.single-item>.nav-group-items:before{display:none}
.nav-group.single-item .nav-item{margin:0!important;width:100%!important;min-height:42px!important;padding:9px 11px 9px 49px!important;font-size:13px!important;font-weight:700!important}
.nav-group.single-item .nav-item:before{left:20px;width:7px;height:7px;margin-top:-3.5px}
.catalog-display-options{display:flex;align-items:center;gap:12px;flex-wrap:wrap;margin:0 0 12px;padding:10px 12px;border:1px solid var(--line);border-radius:10px;background:var(--soft)}
.catalog-display-options small{color:var(--muted)}
.code-visibility-toggle{display:flex!important;align-items:center;gap:8px;margin:0!important;font-weight:600;white-space:nowrap}
.code-visibility-toggle input{width:auto!important;height:auto!important;margin:0}
.technical-code-column{display:none}
.show-technical-codes .technical-code-column{display:table-cell}
.technical-code-column code{font-size:12px;color:var(--muted);background:var(--soft);padding:3px 6px;border-radius:5px;white-space:nowrap}

/* v8.2 - Lịch tuần tổng hợp */
.calendar-source-filter{display:flex;flex-wrap:wrap;gap:8px 16px;margin:12px 0;padding:10px 12px;border:1px solid var(--line);border-radius:10px;background:#fafbfc}.calendar-source-filter label{display:flex;align-items:center;gap:7px;font-size:13px;color:#344054}.calendar-required-alert{display:flex;align-items:center;justify-content:space-between;gap:14px;margin:10px 0 14px;padding:11px 14px;border:1px solid #f7c76b;border-radius:10px;background:#fff8e8;color:#7a4a00}.calendar-required-alert span{font-size:13px}.calendar-week-sessions>article{min-width:205px;padding:10px}.calendar-week-sessions h4{text-transform:capitalize;border-bottom:1px solid var(--line);padding-bottom:8px}.calendar-session{margin-top:10px}.calendar-session h5{margin:0 0 6px;font-size:12px;text-transform:uppercase;letter-spacing:.04em;color:#667085}.calendar-empty-slot{display:block;padding:9px;border:1px dashed #d7dce3;border-radius:8px;color:#98a2b3;font-size:12px}.v82-event{display:block;margin:0 0 7px;padding:8px 9px;border-left:3px solid #98a2b3;border-radius:8px;background:#f7f8fa;font-size:12px}.v82-event>strong{display:block;font-size:13px;line-height:1.35}.v82-event>small{display:block;margin-top:3px;color:#667085}.v82-event>em{display:inline-block;margin-top:5px;padding:2px 6px;border-radius:10px;background:#fff1d6;color:#9a5b00;font-style:normal;font-size:11px}.event-time-row{display:flex;justify-content:space-between;gap:6px;margin-bottom:4px}.event-time-row span{font-size:10px;text-transform:uppercase;color:#667085}.source-school{border-left-color:#3b82f6;background:#eff6ff}.source-department{border-left-color:#7c3aed;background:#f5f3ff}.source-duty{border-left-color:#64748b;background:#f1f5f9}.source-personal{border-left-color:#16a34a;background:#f0fdf4}.required-event{box-shadow:0 0 0 1px rgba(245,158,11,.28)}.calendar-response{display:flex;gap:5px;margin-top:7px}.calendar-response-state{font-weight:600;color:#475467}
.schedule-tabs{display:flex;gap:4px;margin:2px 0 16px;border-bottom:1px solid var(--line);overflow:auto}.schedule-tab{border:0;background:transparent;padding:10px 14px;color:#667085;font-weight:600;white-space:nowrap;border-bottom:2px solid transparent;cursor:pointer}.schedule-tab.active{color:var(--primary);border-bottom-color:var(--primary)}.schedule-tab-content{display:none}.schedule-tab-content.active{display:block}.subpanel-head{margin-top:0;padding-top:2px}.subpanel-head h4{margin:0;font-size:17px}.school-preview-wrap{max-height:55vh}.school-preview-wrap input,.school-preview-wrap select,.school-preview-wrap textarea{min-width:115px;width:100%;font-size:12px}.school-preview-wrap textarea{min-width:210px;resize:vertical}.field-block{display:block;margin-top:12px}.field-block>select{width:100%}.schedule-management-panel>.panel-head{margin-bottom:4px}#dutyScheduleTable select,#dutyScheduleTable input{min-width:150px;width:100%}
@media(max-width:760px){.calendar-required-alert{align-items:flex-start;flex-direction:column}.schedule-tabs{margin-left:-4px;margin-right:-4px}.subpanel-head{align-items:flex-start;flex-direction:column}.subpanel-head .actions{width:100%;flex-wrap:wrap}.subpanel-head .actions input,.subpanel-head .actions button{width:100%}}


/* v8.3 - lịch tuần và cảnh báo phân công trực */
.calendar-week-sessions .calendar-session{padding:8px;border:1px solid #e4e7ec;border-radius:9px;background:#fff}
.calendar-week-sessions .calendar-session+.calendar-session{margin-top:12px}
.calendar-week-sessions .calendar-session h5{display:flex;align-items:center;min-height:26px;margin:-8px -8px 8px;padding:5px 8px;border-bottom:1px solid #e4e7ec;border-radius:9px 9px 0 0;background:#f8fafc;color:#344054;font-size:12px;font-weight:700}
.duty-conflict-hint{display:none;max-width:260px;margin-top:5px;padding:5px 7px;border-radius:7px;background:#fff6e5;color:#9a5b00;font-size:11px;line-height:1.35}
.duty-conflict-hint.visible{display:block}
#dutyScheduleTable td{vertical-align:top}

/* ===== Compact enterprise UI ===== */
.ui-v9{
  --control-height:36px;
  --v9-label-width:92px;
  --v9-gap-x:18px;
  --v9-gap-y:10px;
  --v9-border:#dfe6ed;
  --v9-soft:#f7f9fb;
  --v9-title:#1f3447;
}
.ui-v9 .main-content{padding-bottom:38px}
.ui-v9 .topbar{min-height:72px;margin-bottom:16px;padding-top:9px;padding-bottom:9px;background:rgba(247,249,252,.94)}
.ui-v9 .topbar h2{font-size:21px}.ui-v9 .topbar p{font-size:12.5px}
.ui-v9 .panel{padding:18px;border-radius:13px;border-color:#e2e8ee;box-shadow:0 5px 18px rgba(16,42,67,.045)}
.ui-v9 .panel-head{margin-bottom:13px;padding-bottom:11px;align-items:center;border-bottom-color:#e9eef2}
.ui-v9 .panel-head h3{font-size:16px}.ui-v9 .panel-head p{font-size:12.5px}
.ui-v9 .panel-head>.actions{gap:7px}
.ui-v9 .btn{min-height:36px;padding:7px 12px;border-radius:7px;font-size:13px}
.ui-v9 .btn.tiny{min-height:28px;padding:4px 8px;font-size:11.5px}
.ui-v9 .metric-grid{gap:12px;margin-bottom:15px}.ui-v9 .metric-card{padding:16px;border-radius:12px}

/* Panel nhập liệu: tiêu đề và thanh hành động cố định, thân biểu mẫu phẳng */
.ui-v9 .form-drawer{width:min(840px,96vw);container-type:inline-size;background:#fff;border-left-color:#dfe6ed;box-shadow:-18px 0 56px rgba(5,22,35,.22)}
.ui-v9 .form-drawer.drawer-narrow{width:min(600px,96vw)}
.ui-v9 .form-drawer.drawer-wide{width:min(1080px,98vw)}
.ui-v9 .drawer-head{padding:17px 20px 14px;background:#fff}
.ui-v9 .drawer-head h3{font-size:18px}.ui-v9 .drawer-head p{max-width:760px;font-size:12px}
.ui-v9 .drawer-close{width:34px;height:34px;border-radius:8px;font-size:20px}
.ui-v9 .drawer-body{padding:15px 20px 78px;background:#fff}
.ui-v9 .drawer-actions{padding:11px 20px;background:rgba(255,255,255,.98);box-shadow:0 -5px 16px rgba(15,42,67,.055)}
.ui-v9 .form-section{margin:0 0 17px;padding:0 0 17px;border:0;border-bottom:1px solid #e7edf2;border-radius:0;background:transparent;box-shadow:none}
.ui-v9 .form-section:last-of-type{margin-bottom:0;border-bottom:0}
.ui-v9 .form-section-title{margin-bottom:12px;padding:0 0 9px;border-bottom:1px solid #f0f3f6}
.ui-v9 .form-section-title strong{font-size:13.5px;color:var(--v9-title)}
.ui-v9 .form-section-title small{font-size:11.5px}

/* Lưới biểu mẫu hai cột, nhãn bên trái */
.ui-v9 .form-drawer,.ui-v9 .inline-form,.ui-v9 .modal-card{container-type:inline-size}
.ui-v9 .v9-compact-grid,
.ui-v9 .v9-enterprise-form .form-grid{
  display:grid;
  grid-template-columns:repeat(2,minmax(0,1fr));
  gap:var(--v9-gap-y) var(--v9-gap-x);
  align-items:start;
}
.ui-v9 .v9-compact-grid>label,
.ui-v9 .v9-enterprise-form .form-grid>label{
  grid-column:auto!important;
  min-width:0;
  height:auto;
}
.ui-v9 .v9-compact-grid>.v9-field-wide,
.ui-v9 .v9-enterprise-form .form-grid>.v9-field-wide,
.ui-v9 .v9-compact-grid>.span-4,
.ui-v9 .v9-enterprise-form .form-grid>.span-4{
  grid-column:1/-1!important;
}
.ui-v9 .v9-horizontal-field,
.ui-v9 .v9-enterprise-form .stack-form>label{
  display:grid!important;
  grid-template-columns:var(--v9-label-width) minmax(0,1fr);
  column-gap:9px;
  row-gap:4px;
  align-items:center;
  min-width:0;
  margin:0;
  color:#344054;
  font-size:12.5px;
  font-weight:500!important;
}
.ui-v9 .v9-horizontal-field>.field-label,
.ui-v9 .v9-enterprise-form .stack-form>label>.field-label{
  grid-column:1;
  min-height:0;
  justify-content:flex-end;
  text-align:right;
  line-height:1.25;
  font-size:12px;
  font-weight:600!important;
  color:#475467;
}
.ui-v9 .v9-horizontal-field>input,
.ui-v9 .v9-horizontal-field>select,
.ui-v9 .v9-horizontal-field>textarea,
.ui-v9 .v9-horizontal-field>.smart-select,
.ui-v9 .v9-enterprise-form .stack-form>label>input,
.ui-v9 .v9-enterprise-form .stack-form>label>select,
.ui-v9 .v9-enterprise-form .stack-form>label>textarea{
  grid-column:2;
  width:100%;
  min-width:0;
  max-width:100%;
}
.ui-v9 .v9-horizontal-field>small,
.ui-v9 .v9-horizontal-field>.muted,
.ui-v9 .v9-enterprise-form .stack-form>label>small{
  grid-column:2;
  margin:0;
  font-size:10.75px;
  line-height:1.35;
  font-weight:400;
}
.ui-v9 .v9-horizontal-field:has(textarea),
.ui-v9 .v9-horizontal-field:has(select[multiple]),
.ui-v9 .v9-horizontal-field:has(input[type="file"]){align-items:start}
.ui-v9 .v9-horizontal-field:has(textarea)>.field-label,
.ui-v9 .v9-horizontal-field:has(select[multiple])>.field-label,
.ui-v9 .v9-horizontal-field:has(input[type="file"])>.field-label{padding-top:9px}
.ui-v9 .v9-field-compact input,.ui-v9 .v9-field-compact select{max-width:170px}
.ui-v9 .v9-enterprise-form input:not([type="checkbox"]):not([type="radio"]):not([type="hidden"]),
.ui-v9 .v9-enterprise-form select,
.ui-v9 .v9-enterprise-form textarea{
  border-color:#ccd6df!important;
  border-radius:7px!important;
  font-size:13px!important;
  box-shadow:none!important;
}
.ui-v9 .v9-enterprise-form input:not([type="checkbox"]):not([type="radio"]):not([type="hidden"]):not([type="file"]),
.ui-v9 .v9-enterprise-form select{height:36px!important;min-height:36px!important;padding:6px 9px!important}
.ui-v9 .v9-enterprise-form textarea{min-height:66px!important;padding:8px 9px!important}
.ui-v9 .v9-enterprise-form select[multiple]{height:auto!important;min-height:112px!important;padding:5px!important}
.ui-v9 .v9-enterprise-form input:focus,.ui-v9 .v9-enterprise-form select:focus,.ui-v9 .v9-enterprise-form textarea:focus{border-color:#4d91bf!important;box-shadow:0 0 0 3px rgba(23,105,170,.085)!important}

/* Checkbox gọn, không tạo card cao */
.ui-v9 .v9-compact-check,.ui-v9 .v9-enterprise-form .check-card{
  min-height:52px!important;
  padding:8px 10px!important;
  border:1px solid #dce5ec!important;
  border-radius:8px!important;
  background:#fafcfd!important;
  align-self:stretch!important;
}
.ui-v9 .v9-compact-check span strong,.ui-v9 .v9-enterprise-form .check-card span strong{font-size:12px}
.ui-v9 .v9-compact-check span small,.ui-v9 .v9-enterprise-form .check-card span small{margin-top:2px;font-size:10.5px}

/* Vùng nâng cao và tóm tắt lựa chọn */
.ui-v9 .v9-advanced-fields{margin-top:12px;border:1px solid #e2e8ee;border-radius:8px;background:#fafcfd}
.ui-v9 .v9-advanced-fields>summary{padding:9px 11px;color:#40566a;font-size:12px;font-weight:600;cursor:pointer;list-style-position:inside}
.ui-v9 .v9-advanced-fields[open]>summary{border-bottom:1px solid #e6ebf0;background:#f5f8fa}
.ui-v9 .v9-advanced-body{padding:11px}
.ui-v9 .v9-selection-summary{align-self:center;padding:4px 8px;border-radius:999px;background:#f1f4f7;color:#667085;font-size:11px;white-space:nowrap}
.ui-v9 .v9-selection-summary.has-selection{background:#e8f3fa;color:#176394}
.ui-v9 .v9-field-invalid input,.ui-v9 .v9-field-invalid select,.ui-v9 .v9-field-invalid textarea{border-color:#d92d20!important;box-shadow:0 0 0 3px rgba(217,45,32,.08)!important}

/* Form chính trên trang: phẳng, gọn và đồng nhất với drawer */
.ui-v9 .inline-form{padding:16px 18px;border:1px solid #dfe6ed;border-radius:12px;background:#fff;box-shadow:0 4px 15px rgba(16,42,67,.035);container-type:inline-size}
.ui-v9 .inline-form>.panel-head{margin-bottom:13px}
.ui-v9 .v9-inline-form .form-actions{margin-top:4px;padding-top:12px}
.ui-v9 .panel .stack-form.v9-enterprise-form{gap:10px}
.ui-v9 .panel .stack-form.v9-enterprise-form>button{justify-self:end;min-width:140px}

/* Thanh tìm kiếm/lọc: cùng một mặt phẳng với bảng, nhãn nằm bên trái */
.ui-v9 .data-list-block{padding:12px;border-radius:12px;box-shadow:0 3px 13px rgba(15,42,67,.03)}
.ui-v9 .data-toolbar,.ui-v9 .report-filter-grid,.ui-v9 .calendar-toolbar{
  gap:8px 12px;
  padding:9px 0 11px;
  margin-bottom:11px;
  border:0;
  border-bottom:1px solid #e7edf2;
  border-radius:0;
  background:#fff;
}
.ui-v9 .data-toolbar label,
.ui-v9 .report-filter-grid label{
  display:grid;
  grid-template-columns:auto minmax(120px,1fr);
  align-items:center;
  gap:7px;
  min-width:205px;
  color:#667085;
  font-size:11.5px;
  font-weight:550;
}
.ui-v9 .data-toolbar label>.field-label,.ui-v9 .report-filter-grid label>.field-label{white-space:nowrap}
.ui-v9 .data-toolbar input,.ui-v9 .data-toolbar select,.ui-v9 .report-filter-grid input,.ui-v9 .report-filter-grid select{height:34px!important;min-height:34px!important;padding:5px 8px!important;font-size:12.5px}
.ui-v9 .data-toolbar .toolbar-search{flex:1 1 320px;min-width:240px}
.ui-v9 .data-toolbar .toolbar-search input{height:34px!important}
.ui-v9 .data-toolbar .btn{height:34px;min-height:34px}
.ui-v9 .report-filter-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(245px,1fr));align-items:center}
.ui-v9 .report-filter-grid .filter-action{align-items:center}.ui-v9 .report-filter-grid .filter-action .btn{min-height:34px}
.ui-v9 .calendar-toolbar{padding:8px 0 10px}
.ui-v9 .calendar-source-filter{margin:8px 0 12px;padding:8px 10px;border-radius:8px}

/* Bảng dữ liệu có mật độ vừa phải */
.ui-v9 .table-wrap{border-radius:10px;box-shadow:none}
.ui-v9 table{font-size:12.5px}
.ui-v9 th,.ui-v9 td{padding:8px 10px}
.ui-v9 th{font-size:10.75px;font-weight:650;letter-spacing:.025em;background:#f6f8fa}
.ui-v9 tbody tr:nth-child(even){background:#fdfefe}
.ui-v9 .pagination-bar{min-height:42px;padding-top:8px}
.ui-v9 .schedule-tabs,.ui-v9 .policy-tabs{margin-bottom:12px}

/* Danh sách cấu phần: hai hàng rõ ràng, không tràn */
.ui-v9 .default-component-row{padding:9px;gap:8px;border-radius:8px;background:#fbfcfd}
.ui-v9 .default-component-row label{font-size:10.5px}
.ui-v9 .component-card .form-grid{padding:12px}
.ui-v9 .component-card .form-grid>label{grid-column:auto!important}
.ui-v9 .component-card .form-grid>.span-2,.ui-v9 .component-card .form-grid>.span-4{grid-column:1/-1!important}

@container (max-width:720px){
  .ui-v9 .v9-compact-grid,.ui-v9 .v9-enterprise-form .form-grid{grid-template-columns:1fr}
  .ui-v9 .v9-compact-grid>label,.ui-v9 .v9-enterprise-form .form-grid>label{grid-column:1!important}
  .ui-v9 .form-section-title{align-items:flex-start;flex-direction:column}
  .ui-v9 .v9-selection-summary{align-self:flex-start}
}
@container (max-width:520px){
  .ui-v9 .v9-horizontal-field,.ui-v9 .v9-enterprise-form .stack-form>label{grid-template-columns:1fr;gap:5px}
  .ui-v9 .v9-horizontal-field>.field-label,.ui-v9 .v9-enterprise-form .stack-form>label>.field-label{grid-column:1;justify-content:flex-start;text-align:left;padding-top:0!important}
  .ui-v9 .v9-horizontal-field>input,.ui-v9 .v9-horizontal-field>select,.ui-v9 .v9-horizontal-field>textarea,.ui-v9 .v9-horizontal-field>.smart-select,.ui-v9 .v9-horizontal-field>small,
  .ui-v9 .v9-enterprise-form .stack-form>label>input,.ui-v9 .v9-enterprise-form .stack-form>label>select,.ui-v9 .v9-enterprise-form .stack-form>label>textarea,.ui-v9 .v9-enterprise-form .stack-form>label>small{grid-column:1}
  .ui-v9 .v9-field-compact input,.ui-v9 .v9-field-compact select{max-width:none}
}
@media(max-width:900px){
  .ui-v9 .data-toolbar label,.ui-v9 .report-filter-grid label{min-width:0}
  .ui-v9 .report-filter-grid{grid-template-columns:repeat(2,minmax(0,1fr))}
}
@media(max-width:680px){
  .ui-v9 .form-drawer,.ui-v9 .form-drawer.drawer-narrow,.ui-v9 .form-drawer.drawer-wide{width:100vw}
  .ui-v9 .drawer-head{padding:14px}.ui-v9 .drawer-body{padding:12px 12px 76px}.ui-v9 .drawer-actions{padding:10px 12px}
  .ui-v9 .data-toolbar,.ui-v9 .report-filter-grid{display:grid;grid-template-columns:1fr;align-items:stretch}
  .ui-v9 .data-toolbar>*{width:100%!important}.ui-v9 .data-toolbar label,.ui-v9 .report-filter-grid label{grid-template-columns:90px minmax(0,1fr);width:100%}
  .ui-v9 .panel{padding:14px}
}
.ui-v9 .is-disabled-by-scope{opacity:.62}.ui-v9 .is-disabled-by-scope select{cursor:not-allowed}
/* v9: chặn các span của lưới 12 cột cũ tạo cột ẩn trong lưới hai cột */
.ui-v9 .v9-compact-grid>*{grid-column:auto!important}
.ui-v9 .v9-compact-grid>.v9-field-wide,
.ui-v9 .v9-compact-grid>.span-12,
.ui-v9 .v9-compact-grid>.span-4,
.ui-v9 .v9-compact-grid>.form-heading,
.ui-v9 .v9-compact-grid>.form-actions,
.ui-v9 .v9-compact-grid>.subgroup-field,
.ui-v9 .v9-compact-grid>.component-editor-head{grid-column:1/-1!important}

/* ===== v9.1: đăng ký đầu năm và sửa biểu tượng tìm kiếm ===== */
.toolbar-search{position:relative!important}.toolbar-search>span{font-size:0!important;width:18px;height:18px;left:12px!important;top:50%;transform:translateY(-50%);display:block;position:absolute;pointer-events:none;z-index:2}.toolbar-search>span:before{content:"";position:absolute;width:11px;height:11px;border:1.8px solid #667789;border-radius:50%;left:0;top:0}.toolbar-search>span:after{content:"";position:absolute;width:7px;height:1.8px;background:#667789;transform:rotate(45deg);transform-origin:left center;left:11px;top:12px;border-radius:2px}.toolbar-search input{padding-left:42px!important}.toolbar-search input::placeholder{opacity:.78}.annual-period-card{display:flex;align-items:center;justify-content:space-between;gap:16px;padding:14px 16px;margin-bottom:12px;border:1px solid #d9e2ec;border-radius:10px;background:#f8fafc}.annual-period-card>div{display:grid;gap:4px}.annual-period-card span,.annual-period-card small{display:block;color:#667789}.annual-summary{margin-bottom:12px}.annual-summary .metric-card{min-height:82px}.annual-summary .metric-card strong{font-size:24px}.permission-annual-period.hidden,.permission-annual-export.hidden{display:none!important}
.annual-detail-content{padding:4px 2px 12px}.annual-detail-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px 18px}.annual-detail-grid>div{padding:9px 10px;border:1px solid #e1e7ee;border-radius:8px;background:#fbfcfd}.annual-detail-grid>div.wide{grid-column:1/-1}.annual-detail-grid span{display:block;margin-bottom:3px;color:#6b7888;font-size:11px;font-weight:650;text-transform:uppercase;letter-spacing:.035em}.annual-detail-grid strong,.annual-detail-grid p{margin:0;white-space:pre-wrap}.annual-history{margin-top:16px}.annual-history h4{margin:0 0 8px}.annual-history ol{margin:0;padding-left:22px}.annual-history li{padding:5px 0}.annual-history small{color:#667789}@media(max-width:680px){.annual-detail-grid{grid-template-columns:1fr}.annual-detail-grid>div.wide{grid-column:1}}

/* v9.2 - Kế hoạch nhiệm vụ và tiến độ ba tầng */
.annual-plan-milestones{border:1px solid #d8e2ea;border-radius:14px;background:#f8fafc;padding:14px;display:grid;gap:12px}
.annual-plan-head{display:flex;justify-content:space-between;align-items:flex-start;gap:16px}.annual-plan-head strong,.annual-plan-head small{display:block}.annual-plan-head small{color:var(--muted);margin-top:4px;font-weight:400}
.annual-plan-list{display:grid;gap:10px}.annual-plan-row{display:grid;grid-template-columns:minmax(260px,1.7fr) minmax(145px,.7fr) minmax(180px,.9fr) auto;gap:10px;align-items:end;border:1px solid #d8e2ea;border-radius:11px;padding:11px;background:#fff}.annual-plan-row.locked{border-left:4px solid #3978a3}.annual-plan-row.detail{border-left:4px solid #8b5cf6}.annual-plan-row label{display:grid!important;gap:5px!important;font-size:12px!important}.annual-plan-row input,.annual-plan-row select{width:100%;min-height:34px}.annual-plan-title{align-self:center;min-width:0}.annual-plan-title strong{display:block;margin-top:5px}.annual-plan-title input{font-weight:700}.annual-plan-row>small{grid-column:1/-1;color:var(--muted)}
.milestone-origin{display:inline-flex;align-items:center;border-radius:999px;padding:2px 7px;font-size:10px;font-weight:750;vertical-align:middle}.milestone-origin.unit{background:#e0f2fe;color:#075985}.milestone-origin.required{background:#fef3c7;color:#92400e}.milestone-origin.detail{background:#ede9fe;color:#5b21b6}
.task-source{display:inline-flex;border-radius:999px;padding:2px 8px;font-weight:700}.task-source.annual{background:#e8f1f8;color:#154e75}.task-source.adhoc{background:#f2f4f7;color:#475467}
.annual-template-toolbar{display:flex;flex-wrap:wrap;gap:10px;align-items:end;margin-bottom:14px}.annual-template-toolbar label{display:grid;gap:5px;min-width:240px}
@media(max-width:900px){.annual-plan-row{grid-template-columns:1fr 1fr}.annual-plan-title{grid-column:1/-1}.annual-plan-row>small{grid-column:1/-1}}
@media(max-width:560px){.annual-plan-row{grid-template-columns:1fr}.annual-plan-title,.annual-plan-row>small{grid-column:1}.annual-plan-head{flex-direction:column}}

/* ===== Biểu mẫu động theo phụ lục và hồ sơ tiến độ công việc ===== */
.ui-v9 .annual-dynamic-grid{display:grid;grid-template-columns:repeat(12,minmax(0,1fr));gap:10px 12px;align-items:start}
.ui-v9 .annual-dynamic-field{display:grid;gap:5px;min-width:0}.ui-v9 .annual-dynamic-field>span{font-size:11.5px;font-weight:650;color:#475467}.ui-v9 .annual-dynamic-field input,.ui-v9 .annual-dynamic-field select,.ui-v9 .annual-dynamic-field textarea{width:100%;max-width:100%}
.ui-v9 .annual-dynamic-grid .field-3{grid-column:span 3}.ui-v9 .annual-dynamic-grid .field-4{grid-column:span 4}.ui-v9 .annual-dynamic-grid .field-6{grid-column:span 6}.ui-v9 .annual-dynamic-grid .field-8{grid-column:span 8}.ui-v9 .annual-dynamic-grid .field-12{grid-column:1/-1}
.ui-v9 .annual-checkbox-field{align-self:end}.ui-v9 .annual-check-card{display:flex!important;align-items:center!important;gap:9px!important;min-height:36px;padding:7px 10px;border:1px solid #d8e2ea;border-radius:9px;background:#fff}.ui-v9 .annual-check-card input{width:auto!important;min-height:auto!important}.ui-v9 .annual-check-card span{font-size:12.5px;font-weight:650}
.ui-v9 #annualVariantHelp{display:block;margin-top:4px;color:var(--muted);font-size:11px;font-weight:400;line-height:1.35}
.ui-v9 .annual-participant-list{display:grid;gap:9px;margin-top:10px}.ui-v9 .annual-participant-row{display:grid;grid-template-columns:minmax(220px,1.5fr) minmax(170px,1fr) auto;gap:10px;align-items:end;padding:10px;border:1px solid #d8e2ea;border-radius:10px;background:#fbfcfd}.ui-v9 .annual-participant-row label{display:grid!important;gap:5px!important;font-size:11.5px!important}.ui-v9 .annual-participant-row select{width:100%;min-height:34px}.ui-v9 .empty.compact{padding:10px 0}
.ui-v9 .annual-template-toolbar{display:grid;grid-template-columns:minmax(210px,1fr) minmax(220px,1.15fr) minmax(220px,1.15fr) auto;align-items:end}.ui-v9 .annual-template-toolbar label{min-width:0}
.ui-v9 .annual-plan-title small{display:block;margin-top:3px;color:var(--muted);font-weight:500}
@container (max-width:760px){.ui-v9 .annual-dynamic-grid .field-3,.ui-v9 .annual-dynamic-grid .field-4,.ui-v9 .annual-dynamic-grid .field-6,.ui-v9 .annual-dynamic-grid .field-8{grid-column:span 6}.ui-v9 .annual-template-toolbar{grid-template-columns:1fr 1fr}.ui-v9 .annual-template-toolbar button{align-self:end}}
@container (max-width:540px){.ui-v9 .annual-dynamic-grid{grid-template-columns:1fr}.ui-v9 .annual-dynamic-grid .field-3,.ui-v9 .annual-dynamic-grid .field-4,.ui-v9 .annual-dynamic-grid .field-6,.ui-v9 .annual-dynamic-grid .field-8,.ui-v9 .annual-dynamic-grid .field-12{grid-column:1}.ui-v9 .annual-participant-row{grid-template-columns:1fr}.ui-v9 .annual-template-toolbar{grid-template-columns:1fr}}

/* ===== Tìm kiếm và ngày giờ theo định dạng Việt Nam ===== */
.toolbar-search{
  position:relative!important;
  isolation:isolate;
  min-width:0;
}
.toolbar-search>span{
  display:none!important;
}
.toolbar-search::before{
  content:"";
  position:absolute;
  z-index:3;
  left:15px;
  top:50%;
  width:12px;
  height:12px;
  border:2px solid #667789;
  border-radius:50%;
  transform:translateY(-61%);
  pointer-events:none;
  box-sizing:border-box;
}
.toolbar-search::after{
  content:"";
  position:absolute;
  z-index:3;
  left:26px;
  top:calc(50% + 4px);
  width:8px;
  height:2px;
  border-radius:2px;
  background:#667789;
  transform:rotate(45deg);
  transform-origin:left center;
  pointer-events:none;
}
.toolbar-search>input,
.toolbar-search>input.search-input-fixed,
.ui-v9 .data-toolbar .toolbar-search>input{
  box-sizing:border-box!important;
  width:100%!important;
  padding-left:50px!important;
  padding-inline-start:50px!important;
  text-indent:0!important;
  line-height:1.35!important;
  background-clip:padding-box;
}
.toolbar-search>input::placeholder{
  opacity:.76;
  white-space:nowrap;
  text-overflow:ellipsis;
}
input[type="date"],input[type="datetime-local"],input[type="time"],.vi-date,.vi-datetime{
  font-variant-numeric:tabular-nums;
}

/* KPIV1.4 - Danh mục quy đổi, hồ sơ tiến độ và ngày Việt Nam */
.vi-date-wrap{display:block;position:relative;width:100%}
.vi-date-wrap>input[type="hidden"]{display:none!important}
.vi-date-input{width:100%;font-variant-numeric:tabular-nums;letter-spacing:.01em}
.vi-date-input::placeholder{color:#98a2b3;opacity:1}
.vi-date-input.vi-date-invalid{border-color:#d92d20!important;box-shadow:0 0 0 3px rgba(217,45,32,.10)!important}
#annualActivityWrap{display:grid;gap:7px}
#annualActivityWrap>span{font-size:12px;font-weight:700;color:#344054}
#annualActivityWrap select{min-height:42px}
.annual-activity-info{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px;padding:12px;border:1px solid #d8e2ea;border-radius:12px;background:#f8fafc}
.annual-activity-info>span{grid-column:1/-1;color:var(--muted);font-size:12px}
.annual-activity-info>div{min-width:0;padding:9px 10px;border-radius:9px;background:#fff;border:1px solid #e4e7ec}
.annual-activity-info span,.annual-activity-info strong,.annual-activity-info small{display:block}
.annual-activity-info span{font-size:11px;color:#667085;margin-bottom:4px}
.annual-activity-info strong{font-size:13px;color:#101828;overflow-wrap:anywhere}
.annual-activity-info small{margin-top:4px;color:#667085;line-height:1.35}
@media(max-width:900px){.annual-activity-info{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:560px){.annual-activity-info{grid-template-columns:1fr}}

/* KPIV1.4 - Kế hoạch nhiệm vụ: panel gọn, combobox tìm kiếm và lịch chọn ngày */
.vi-date-wrap{display:grid;grid-template-columns:minmax(0,1fr) 42px;position:relative;width:100%;align-items:stretch}
.vi-date-wrap .vi-date-input{grid-column:1/2;border-top-right-radius:0!important;border-bottom-right-radius:0!important;padding-right:10px!important}
.vi-date-picker-button{grid-column:2/3;display:grid;place-items:center;min-width:42px;border:1px solid #cfd8e3;border-left:0;background:#f8fafc;border-radius:0 8px 8px 0;cursor:pointer;transition:.15s ease}
.vi-date-picker-button:hover{background:#eef4f8;border-color:#9fb3c4}.vi-date-picker-button:focus-visible{outline:2px solid #2f80ed;outline-offset:2px}.vi-date-picker-button:disabled{opacity:.55;cursor:not-allowed}
.vi-date-picker-button span{position:relative;width:17px;height:16px;border:1.7px solid #475467;border-radius:3px;display:block}
.vi-date-picker-button span:before{content:"";position:absolute;left:-1.7px;right:-1.7px;top:3px;border-top:1.7px solid #475467}
.vi-date-picker-button span:after{content:"";position:absolute;width:3px;height:3px;border-radius:50%;background:#475467;left:3px;top:7px;box-shadow:5px 0 #475467,0 4px #475467,5px 4px #475467}
.vi-date-native{position:absolute!important;right:0!important;bottom:0!important;width:1px!important;height:1px!important;opacity:0!important;pointer-events:none!important;padding:0!important;border:0!important}

.annual-task-drawer{width:min(900px,97vw)!important}
.annual-task-drawer>.drawer-head{flex:0 0 auto}
.annual-task-drawer>.annual-task-form{display:flex;flex:1 1 auto;min-height:0;flex-direction:column;overflow:hidden}
.annual-task-drawer .annual-task-body{flex:1 1 auto;min-height:0;overflow-y:auto;overflow-x:hidden;padding-bottom:22px;scrollbar-gutter:stable;scrollbar-width:thin;scrollbar-color:#9fb3c4 transparent}
.annual-task-drawer .annual-task-actions{position:static;flex:0 0 auto;z-index:3}
.annual-task-drawer .annual-task-body::-webkit-scrollbar,.annual-review-drawer .drawer-body::-webkit-scrollbar{width:9px}
.annual-task-drawer .annual-task-body::-webkit-scrollbar-track,.annual-review-drawer .drawer-body::-webkit-scrollbar-track{background:transparent}
.annual-task-drawer .annual-task-body::-webkit-scrollbar-thumb,.annual-review-drawer .drawer-body::-webkit-scrollbar-thumb{background:#a9bac8;border:2px solid transparent;background-clip:padding-box;border-radius:999px}
.annual-task-drawer .annual-task-body::-webkit-scrollbar-thumb:hover,.annual-review-drawer .drawer-body::-webkit-scrollbar-thumb:hover{background:#7f96a8;border:2px solid transparent;background-clip:padding-box}

.annual-task-body::-webkit-scrollbar,.annual-review-drawer .drawer-body::-webkit-scrollbar{width:10px}
.annual-task-body::-webkit-scrollbar-thumb,.annual-review-drawer .drawer-body::-webkit-scrollbar-thumb{background:#c5d1dc;border-radius:10px;border:2px solid #fff}
.annual-task-body::-webkit-scrollbar-track,.annual-review-drawer .drawer-body::-webkit-scrollbar-track{background:#f4f7f9}

.annual-step-section{border:1px solid #dbe4ec;border-radius:14px;background:#fff;padding:16px;margin-bottom:14px}
.annual-step-section .form-section-title{margin-bottom:14px}
.annual-step-section .form-section-title>div{position:relative;padding-left:42px;min-height:34px}
.annual-step-number{position:absolute;left:0;top:0;width:30px;height:30px;display:grid!important;place-items:center;border-radius:50%;background:#eaf3fb;color:#185f8d;font-weight:800;font-size:14px}
.annual-date-grid{max-width:680px}

.searchable-combobox{position:relative;width:100%}
.searchable-combobox>input{padding-right:44px!important}
.searchable-combobox-toggle{position:absolute;right:1px;top:1px;bottom:1px;width:40px;border:0;border-left:1px solid #d8e2ea;background:#f8fafc;border-radius:0 7px 7px 0;cursor:pointer}
.searchable-combobox-toggle:after{content:"";position:absolute;left:50%;top:48%;width:8px;height:8px;border-right:2px solid #667085;border-bottom:2px solid #667085;transform:translate(-50%,-65%) rotate(45deg)}
.searchable-combobox-dropdown{position:absolute;z-index:260;left:0;right:0;top:calc(100% + 5px);max-height:310px;overflow:auto;border:1px solid #cfd8e3;border-radius:11px;background:#fff;box-shadow:0 16px 42px rgba(15,42,67,.18);padding:6px}
.searchable-combobox-dropdown.hidden{display:none!important}
.searchable-combobox-group{padding:8px 10px 5px;color:#667085;font-size:11px;font-weight:750;text-transform:uppercase;letter-spacing:.035em;position:sticky;top:-6px;background:#fff;z-index:1}
.searchable-combobox-option{width:100%;display:grid;grid-template-columns:minmax(0,1fr) auto;gap:14px;align-items:center;text-align:left;padding:10px 11px;border:0;border-radius:8px;background:#fff;cursor:pointer;color:#1d2939}
.searchable-combobox-option:hover,.searchable-combobox-option:focus{background:#edf5fb;outline:none}
.searchable-combobox-option span{min-width:0;overflow-wrap:anywhere}.searchable-combobox-option strong{white-space:nowrap;font-size:12px;color:#185f8d;font-weight:750}
.searchable-combobox-empty{padding:16px;text-align:center;color:#667085;font-size:13px}
.annual-activity-native-select{position:absolute!important;width:1px!important;height:1px!important;opacity:0!important;pointer-events:none!important}

.annual-activity-info{grid-template-columns:repeat(3,minmax(0,1fr));padding:10px;background:#f7fafc}
.annual-activity-info>div:first-child{grid-column:span 1}.annual-activity-info>div:nth-child(4){display:none}
.annual-activity-info>div{padding:10px 11px}.annual-activity-info strong{font-size:13px}

.annual-disclosure{border:1px solid #dbe4ec;border-radius:14px;background:#fff;padding:0;margin-bottom:14px;overflow:visible}
.annual-disclosure>summary{list-style:none;display:flex;align-items:center;justify-content:space-between;gap:16px;padding:15px 16px;cursor:pointer;user-select:none}
.annual-disclosure>summary::-webkit-details-marker{display:none}
.annual-disclosure>summary:after{content:"";width:8px;height:8px;border-right:2px solid #667085;border-bottom:2px solid #667085;transform:rotate(45deg);transition:.15s ease;margin-left:4px}
.annual-disclosure[open]>summary{border-bottom:1px solid #e4eaf0}.annual-disclosure[open]>summary:after{transform:rotate(225deg);margin-top:6px}
.annual-disclosure summary span:first-child{display:block;flex:1}.annual-disclosure summary strong,.annual-disclosure summary small{display:block}.annual-disclosure summary small{margin-top:3px;color:#667085;font-weight:400}
.annual-disclosure-count{margin-left:auto;padding:4px 8px;border-radius:999px;background:#edf4f8;color:#35617b;font-size:11px;font-weight:700;white-space:nowrap}
.annual-disclosure>.annual-plan-head,.annual-disclosure>.annual-participant-list,.annual-disclosure>.annual-plan-list,.annual-disclosure>.form-grid{margin:14px 16px 16px}
.annual-plan-milestones{display:block;background:#fff}
.annual-plan-row.professional{grid-template-columns:minmax(250px,1.6fr) minmax(170px,.8fr) minmax(180px,.9fr);align-items:end;border-left:4px solid #3978a3}
.annual-milestone-range{grid-column:1/-1;font-size:11px;color:#667085;border-top:1px dashed #d8e2ea;padding-top:7px}

.annual-review-drawer>.drawer-head{flex:0 0 auto}.annual-review-drawer>form{display:flex;flex:1 1 auto;min-height:0;flex-direction:column;overflow:hidden}.annual-review-drawer .drawer-body{flex:1 1 auto;min-height:0;overflow-y:auto;scrollbar-gutter:stable}.annual-review-drawer .drawer-actions{position:static;flex:0 0 auto}
.annual-review-summary{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;margin-bottom:14px;padding:13px;border:1px solid #dbe4ec;border-radius:12px;background:#f8fafc}
.annual-review-summary>div{background:#fff;border:1px solid #e4eaf0;border-radius:9px;padding:9px 10px}.annual-review-summary .wide{grid-column:1/-1}.annual-review-summary span,.annual-review-summary strong{display:block}.annual-review-summary span{font-size:11px;color:#667085;margin-bottom:3px}.annual-review-summary strong{font-size:13px;overflow-wrap:anywhere}
.annual-inline-help{align-self:end;padding:10px 12px;border-radius:9px;background:#f8fafc;border:1px solid #e4eaf0}.annual-inline-help strong,.annual-inline-help small{display:block}.annual-inline-help small{margin-top:4px;color:#667085}
.annual-review-milestones{display:grid;gap:12px}.annual-review-milestone{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px 12px;border:1px solid #dbe4ec;border-radius:12px;padding:13px;background:#fbfcfd}.annual-review-milestone .wide{grid-column:1/-1}.annual-review-milestone-head{grid-column:1/-1;display:flex;justify-content:space-between;align-items:center}.annual-review-milestone-head span{font-weight:800;color:#185f8d}.annual-review-milestone-head small{color:#667085}.annual-check-line{display:flex!important;align-items:center;gap:8px!important}.annual-check-line input{width:auto!important}

@media(max-width:700px){.annual-activity-info{grid-template-columns:1fr}.annual-activity-info>div:first-child{grid-column:1}.annual-plan-row.professional{grid-template-columns:1fr}.annual-review-summary,.annual-review-milestone{grid-template-columns:1fr}.annual-review-summary .wide,.annual-review-milestone .wide{grid-column:1}.searchable-combobox-option{grid-template-columns:1fr}.searchable-combobox-option strong{white-space:normal}.annual-disclosure>summary{align-items:flex-start}.annual-disclosure-count{display:none}}

/* KPIV1.4.7 - Kế thừa bố cục Thêm nhiệm vụ: hai cột, nhãn trái thẳng lề */
.annual-task-drawer{
  width:min(900px,96vw)!important;
  --annual-label-width:138px;
  --annual-form-column-gap:22px;
  --annual-form-row-gap:12px;
}
.annual-task-body .form-section{margin-bottom:17px}
.annual-form-grid-2{
  display:grid;
  grid-template-columns:repeat(2,minmax(0,1fr));
  column-gap:var(--annual-form-column-gap);
  row-gap:var(--annual-form-row-gap);
  align-items:start;
  width:100%;
  min-width:0;
}
.annual-form-grid-2>.annual-field-wide,
.annual-form-grid-2>.annual-grid-wide,
.annual-form-grid-2>.annual-horizontal-dynamic-grid{
  grid-column:1/-1!important;
}
.annual-form-grid-2>.annual-grid-spacer{display:block;min-height:1px}

/* Mọi cặp nhãn/điều khiển dùng cùng một độ rộng nhãn. */
.annual-task-body label.annual-horizontal-field{
  display:grid!important;
  grid-template-columns:var(--annual-label-width) minmax(0,1fr)!important;
  column-gap:10px!important;
  row-gap:4px!important;
  align-items:center;
  width:100%;
  min-width:0;
  max-width:none!important;
  margin:0!important;
}
.annual-task-body label.annual-horizontal-field>.field-label{
  display:block!important;
  width:auto!important;
  min-width:0;
  margin:0!important;
  color:#475467;
  font-size:12px;
  font-weight:600;
  line-height:1.3;
  text-align:right;
  overflow-wrap:anywhere;
}
.annual-task-body label.annual-horizontal-field>.field-label b{color:#d92d20}
.annual-task-body label.annual-horizontal-field:has(textarea){align-items:start}
.annual-task-body label.annual-horizontal-field:has(textarea)>.field-label{padding-top:9px}

.annual-task-body label.annual-horizontal-field>input,
.annual-task-body label.annual-horizontal-field>select,
.annual-task-body label.annual-horizontal-field>textarea,
.annual-task-body label.annual-horizontal-field>.annual-field-control,
.annual-task-body label.annual-horizontal-field>.vi-date-wrap,
.annual-task-body label.annual-horizontal-field>.annual-percent-input{
  grid-column:2;
  width:100%!important;
  min-width:0!important;
  max-width:none!important;
  box-sizing:border-box;
}

/* Trường dài vẫn giữ đúng cột nhãn như trường ngắn, chỉ kéo dài phần điều khiển. */
.annual-task-body label.annual-field-wide{
  grid-column:1/-1!important;
  grid-template-columns:var(--annual-label-width) minmax(0,1fr)!important;
}
.annual-task-body .annual-activity-field{margin-top:0!important;justify-content:stretch}
.annual-task-body .annual-activity-control,
.annual-task-body .annual-activity-field .searchable-combobox-dropdown{max-width:none!important;width:100%}

/* Khối trường động là lưới hai cột độc lập, không được nhận quy tắc của một trường dài. */
.annual-horizontal-dynamic-grid{
  display:grid!important;
  grid-template-columns:repeat(2,minmax(0,1fr))!important;
  column-gap:var(--annual-form-column-gap)!important;
  row-gap:var(--annual-form-row-gap)!important;
  align-items:start;
  width:100%;
  min-width:0;
  margin:0!important;
}
.annual-horizontal-dynamic-grid>label.annual-dynamic-field{
  grid-column:auto!important;
  width:100%!important;
  min-width:0!important;
  max-width:none!important;
}
.annual-horizontal-dynamic-grid>label.annual-dynamic-field.annual-field-wide{
  grid-column:1/-1!important;
}
.annual-horizontal-dynamic-grid>label.annual-dynamic-field input,
.annual-horizontal-dynamic-grid>label.annual-dynamic-field select,
.annual-horizontal-dynamic-grid>label.annual-dynamic-field textarea,
.annual-horizontal-dynamic-grid>label.annual-dynamic-field input[type="number"]{
  width:100%!important;
  min-width:0!important;
  max-width:none!important;
}

.annual-participant-section-title{align-items:center}
.annual-participant-section-title>.actions{display:flex;align-items:center;gap:8px}
.annual-participant-list{display:grid;gap:10px}
.annual-note-section{border-bottom:0!important;padding-bottom:0!important}

/* Giữ bố cục panel phê duyệt. */
.annual-review-section-title{display:flex;align-items:flex-start;justify-content:space-between;gap:14px}
.annual-review-section-title .actions{display:flex;gap:8px;flex-wrap:wrap;justify-content:flex-end}
.annual-review-milestone .annual-horizontal-field{grid-template-columns:125px minmax(0,1fr)}
.annual-percent-input{display:grid;grid-template-columns:minmax(0,1fr) 30px;align-items:center}
.annual-percent-input input{border-top-right-radius:0!important;border-bottom-right-radius:0!important}
.annual-percent-input span{height:100%;display:grid;place-items:center;border:1px solid #cfd8e3;border-left:0;background:#f8fafc;border-radius:0 8px 8px 0;color:#667085;font-size:12px;font-weight:700}

@container (max-width:760px){
  .annual-task-drawer{--annual-label-width:125px;--annual-form-column-gap:14px}
}
@container (max-width:650px){
  .annual-form-grid-2,.annual-horizontal-dynamic-grid{grid-template-columns:1fr!important}
  .annual-form-grid-2>.annual-grid-spacer{display:none}
  .annual-form-grid-2>.annual-field-wide,
  .annual-form-grid-2>.annual-grid-wide,
  .annual-horizontal-dynamic-grid>label.annual-dynamic-field{grid-column:1!important}
  .annual-task-body label.annual-horizontal-field,
  .annual-task-body label.annual-field-wide{
    grid-template-columns:1fr!important;
    gap:5px!important;
  }
  .annual-task-body label.annual-horizontal-field>.field-label{text-align:left;padding-top:0!important}
  .annual-task-body label.annual-horizontal-field>input,
  .annual-task-body label.annual-horizontal-field>select,
  .annual-task-body label.annual-horizontal-field>textarea,
  .annual-task-body label.annual-horizontal-field>.annual-field-control,
  .annual-task-body label.annual-horizontal-field>.vi-date-wrap{grid-column:1}
  .annual-review-section-title{display:block}.annual-review-section-title .actions{margin-top:10px;justify-content:flex-start}
}


/* KPIV1.4.7 - Chuẩn hóa điều khiển của biểu mẫu Thêm nhiệm vụ theo mẫu dùng chung */
.annual-task-drawer{
  --annual-control-height:38px;
  --annual-control-border:#d5dde5;
  --annual-control-border-hover:#b8c7d3;
  --annual-control-border-focus:#5198c8;
  --annual-control-radius:8px;
  --annual-control-font-size:13.5px;
  --annual-control-text:#253648;
  --annual-control-placeholder:#98a2b3;
  --annual-control-focus-shadow:0 0 0 3px rgba(23,105,170,.09);
}

/* Input, select và textarea dùng đúng kích thước/viền của biểu mẫu Thêm lớp học phần. */
.ui-v9 #annualForm .annual-task-body input:not([type="checkbox"]):not([type="radio"]):not([type="hidden"]):not([type="file"]):not(.vi-date-native),
.ui-v9 #annualForm .annual-task-body select:not(.annual-activity-native-select),
.ui-v9 #annualForm .annual-task-body textarea,
.ui-v9 #annualForm .annual-participant-row select{
  box-sizing:border-box!important;
  width:100%!important;
  min-width:0!important;
  max-width:none!important;
  min-height:var(--annual-control-height)!important;
  height:var(--annual-control-height)!important;
  border:1px solid var(--annual-control-border)!important;
  border-radius:var(--annual-control-radius)!important;
  padding:7px 10px!important;
  background:#fff!important;
  color:var(--annual-control-text)!important;
  font-size:var(--annual-control-font-size)!important;
  font-weight:400!important;
  line-height:1.35!important;
  box-shadow:0 1px 1px rgba(16,42,67,.015)!important;
  outline:none!important;
  transition:border-color .15s ease,box-shadow .15s ease,background .15s ease!important;
}
.ui-v9 #annualForm .annual-task-body textarea{
  height:auto!important;
  min-height:72px!important;
  padding:9px 10px!important;
  line-height:1.45!important;
  resize:vertical;
}
.ui-v9 #annualForm .annual-task-body input::placeholder,
.ui-v9 #annualForm .annual-task-body textarea::placeholder{
  color:var(--annual-control-placeholder)!important;
  opacity:1;
}
.ui-v9 #annualForm .annual-task-body input:not([type="checkbox"]):not([type="radio"]):not([type="hidden"]):not(.vi-date-native):hover,
.ui-v9 #annualForm .annual-task-body select:not(.annual-activity-native-select):hover,
.ui-v9 #annualForm .annual-task-body textarea:hover,
.ui-v9 #annualForm .annual-participant-row select:hover{
  border-color:var(--annual-control-border-hover)!important;
}
.ui-v9 #annualForm .annual-task-body input:not([type="checkbox"]):not([type="radio"]):not([type="hidden"]):not(.vi-date-native):focus,
.ui-v9 #annualForm .annual-task-body select:not(.annual-activity-native-select):focus,
.ui-v9 #annualForm .annual-task-body textarea:focus,
.ui-v9 #annualForm .annual-participant-row select:focus{
  border-color:var(--annual-control-border-focus)!important;
  box-shadow:var(--annual-control-focus-shadow)!important;
  background:#fff!important;
}
.ui-v9 #annualForm .annual-task-body input:disabled,
.ui-v9 #annualForm .annual-task-body select:disabled,
.ui-v9 #annualForm .annual-task-body textarea:disabled,
.ui-v9 #annualForm .annual-participant-row select:disabled{
  background:#f2f4f7!important;
  color:#98a2b3!important;
  cursor:not-allowed;
}

/* Combobox Công việc có một đường viền chung như select chuẩn. */
.ui-v9 #annualForm .searchable-combobox{
  position:relative;
  width:100%;
  min-height:var(--annual-control-height);
  border:1px solid var(--annual-control-border);
  border-radius:var(--annual-control-radius);
  background:#fff;
  box-shadow:0 1px 1px rgba(16,42,67,.015);
  transition:border-color .15s ease,box-shadow .15s ease,background .15s ease;
}
.ui-v9 #annualForm .searchable-combobox:hover{border-color:var(--annual-control-border-hover)}
.ui-v9 #annualForm .searchable-combobox:focus-within{
  border-color:var(--annual-control-border-focus);
  box-shadow:var(--annual-control-focus-shadow);
}
.ui-v9 #annualForm .searchable-combobox>input{
  height:36px!important;
  min-height:36px!important;
  border:0!important;
  border-radius:calc(var(--annual-control-radius) - 1px)!important;
  padding:7px 46px 7px 10px!important;
  background:transparent!important;
  box-shadow:none!important;
}
.ui-v9 #annualForm .searchable-combobox>input:hover,
.ui-v9 #annualForm .searchable-combobox>input:focus{
  border:0!important;
  box-shadow:none!important;
}
.ui-v9 #annualForm .searchable-combobox-toggle{
  top:0!important;
  right:0!important;
  bottom:0!important;
  width:42px!important;
  min-height:36px!important;
  border:0!important;
  border-left:1px solid #e1e7ed!important;
  border-radius:0 calc(var(--annual-control-radius) - 1px) calc(var(--annual-control-radius) - 1px) 0!important;
  background:#f8fafc!important;
}
.ui-v9 #annualForm .searchable-combobox-toggle:hover{background:#eef4f8!important}
.ui-v9 #annualForm .searchable-combobox-dropdown{
  border-color:var(--annual-control-border)!important;
  border-radius:10px!important;
}

/* Ô ngày và nút lịch dùng một wrapper có viền chung, không còn hai đường viền khác nhau. */
.ui-v9 #annualForm .vi-date-wrap{
  display:grid;
  grid-template-columns:minmax(0,1fr) 42px;
  width:100%;
  min-height:var(--annual-control-height);
  border:1px solid var(--annual-control-border);
  border-radius:var(--annual-control-radius);
  background:#fff;
  box-shadow:0 1px 1px rgba(16,42,67,.015);
  transition:border-color .15s ease,box-shadow .15s ease,background .15s ease;
}
.ui-v9 #annualForm .vi-date-wrap:hover{border-color:var(--annual-control-border-hover)}
.ui-v9 #annualForm .vi-date-wrap:focus-within{
  border-color:var(--annual-control-border-focus);
  box-shadow:var(--annual-control-focus-shadow);
}
.ui-v9 #annualForm .vi-date-wrap>.vi-date-input{
  grid-column:1/2;
  height:36px!important;
  min-height:36px!important;
  border:0!important;
  border-radius:calc(var(--annual-control-radius) - 1px) 0 0 calc(var(--annual-control-radius) - 1px)!important;
  padding:7px 10px!important;
  background:transparent!important;
  box-shadow:none!important;
}
.ui-v9 #annualForm .vi-date-wrap>.vi-date-input:hover,
.ui-v9 #annualForm .vi-date-wrap>.vi-date-input:focus{
  border:0!important;
  box-shadow:none!important;
}
.ui-v9 #annualForm .vi-date-picker-button{
  grid-column:2/3;
  min-width:42px!important;
  min-height:36px!important;
  border:0!important;
  border-left:1px solid #e1e7ed!important;
  border-radius:0 calc(var(--annual-control-radius) - 1px) calc(var(--annual-control-radius) - 1px) 0!important;
  background:#f8fafc!important;
}
.ui-v9 #annualForm .vi-date-picker-button:hover{background:#eef4f8!important}
.ui-v9 #annualForm .vi-date-input.vi-date-invalid{
  border:0!important;
  box-shadow:none!important;
}
.ui-v9 #annualForm .vi-date-wrap:has(.vi-date-invalid){
  border-color:#d92d20!important;
  box-shadow:0 0 0 3px rgba(217,45,32,.10)!important;
}

/* Người cùng tham gia dùng cùng độ cao, cỡ chữ và đường viền với biểu mẫu chính. */
.ui-v9 #annualForm .annual-participant-row{
  border-color:#dfe7ee;
  border-radius:10px;
  background:#fbfcfd;
}
.ui-v9 #annualForm .annual-participant-row label{
  gap:6px!important;
  color:#475467!important;
  font-size:12px!important;
  font-weight:600!important;
}

/* KPIV1.4.12: xem và tải minh chứng */
.evidence-preview{height:68vh;display:flex;flex-direction:column;background:#f5f7fa}
.evidence-preview-toolbar{flex:0 0 auto;display:flex;align-items:center;justify-content:space-between;gap:12px;padding:9px 12px;background:#fff;border-bottom:1px solid var(--line)}
.evidence-preview-toolbar>strong{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.evidence-preview-toolbar .actions{display:flex;gap:7px;flex:0 0 auto}
.evidence-preview iframe{flex:1;min-height:0;width:100%;border:0;background:#fff}
@media(max-width:760px){.evidence-preview-toolbar{align-items:flex-start;flex-direction:column}.evidence-preview-toolbar .actions{width:100%}.evidence-preview-toolbar .btn{flex:1;text-align:center}}

/* ===== KPIV2.0: phân cấp menu trái ===== */
.nav-direct-icon svg,.nav-group-icon svg{width:18px;height:18px;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}
.nav-main-item:before{display:none!important}
.nav-group.single-item{background:transparent!important;border-color:transparent!important}
.nav-group.single-item>.nav-group-toggle{display:flex!important}
.nav-group.single-item>.nav-group-items{display:none!important;padding:0 7px 8px 17px!important}
.nav-group.single-item.open>.nav-group-items{display:flex!important}
.nav-group.single-item>.nav-group-items:before{display:block!important}
.nav-group.single-item .nav-item{margin-left:8px!important;width:calc(100% - 8px)!important;min-height:38px!important;padding:9px 10px 9px 18px!important;font-size:12.8px!important;font-weight:600!important}
.nav-group.single-item .nav-item:before{left:7px!important;width:5px!important;height:5px!important;margin-top:-2.5px!important}

/* ===== KPIV2.0: phê duyệt kế hoạch nhiệm vụ ===== */
.ui-v9 .annual-review-drawer{width:min(900px,97vw)}
.annual-review-form{display:flex;flex:1 1 auto;min-height:0;flex-direction:column;overflow:hidden}
.annual-review-drawer .drawer-body{padding:16px 20px 22px}
.annual-review-overview-section{background:#fbfcfe}
.annual-standard-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px 16px}
.annual-standard-grid.one-column{grid-template-columns:1fr}
.annual-standard-grid .full{grid-column:1/-1}
.annual-readonly-field,.annual-review-drawer .annual-horizontal-field{display:grid;grid-template-columns:138px minmax(0,1fr);align-items:center;gap:10px;margin:0;min-width:0}
.annual-readonly-field.full,.annual-review-drawer .annual-horizontal-field.full{grid-column:1/-1}
.annual-readonly-field>.field-label,.annual-review-drawer .annual-horizontal-field>.field-label{font-size:12px;font-weight:650;color:#475467;text-align:right;line-height:1.35}
.annual-readonly-field>strong{min-height:38px;display:flex;align-items:center;padding:7px 10px;border:1px solid #e0e7ee;border-radius:8px;background:#f6f8fa;color:#24384a;font-size:13.5px;font-weight:650;overflow-wrap:anywhere}
.annual-review-drawer input:not([type="checkbox"]),.annual-review-drawer select,.annual-review-drawer textarea{height:38px;border:1px solid #d5dde5;border-radius:8px;padding:7px 10px;background:#fff;font:inherit;font-size:13.5px;box-shadow:0 1px 1px rgba(16,42,67,.015);transition:border-color .15s ease,box-shadow .15s ease}
.annual-review-drawer textarea{height:auto;min-height:72px;resize:vertical;line-height:1.5}
.annual-review-drawer input:focus,.annual-review-drawer select:focus,.annual-review-drawer textarea:focus{outline:0;border-color:#5198c8;box-shadow:0 0 0 3px rgba(23,105,170,.09)}
.annual-review-hours-grid{align-items:start}
.annual-hour-reference{grid-template-columns:138px minmax(0,1fr)}
.annual-hour-reference:before{content:"Mức tham khảo";font-size:12px;font-weight:650;color:#475467;text-align:right}
.annual-hour-reference{min-height:38px;padding:8px 10px;border:1px dashed #cddae4;border-radius:8px;background:#f7fafc}
.annual-hour-reference strong,.annual-hour-reference small{display:block}.annual-hour-reference strong{font-size:13px;color:#174f75}.annual-hour-reference small{margin-top:3px;color:#667085}
.annual-review-toolbar{display:flex;gap:8px;justify-content:flex-end;margin:0 0 12px;flex-wrap:wrap}
.annual-review-milestones{display:grid;gap:12px}
.annual-review-milestone{border:1px solid #dce5ec;border-radius:12px;background:#fff;padding:13px 14px;box-shadow:0 2px 8px rgba(20,48,68,.035)}
.annual-review-milestone-head{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:12px;padding-bottom:9px;border-bottom:1px solid #e8edf1}
.annual-review-milestone-head>div{display:flex;align-items:center;gap:8px}.annual-review-milestone-head span{font-weight:800;color:#185f8d}.annual-review-milestone-head small{padding:3px 7px;border-radius:999px;background:#eef5fa;color:#47677e;font-size:10.5px;font-weight:700}
.annual-review-milestone-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px 16px}
.annual-review-milestone-grid .annual-horizontal-field{grid-template-columns:138px minmax(0,1fr)}
.annual-percent-input{display:grid;grid-template-columns:minmax(0,1fr) 34px;align-items:center;border:1px solid #d5dde5;border-radius:8px;overflow:hidden;background:#fff}
.annual-percent-input input{border:0!important;border-radius:0!important;box-shadow:none!important}.annual-percent-input>span{height:36px;display:grid;place-items:center;border-left:1px solid #dfe6ec;background:#f6f8fa;color:#667085;font-weight:700}
.annual-evidence-choice{align-items:center}.annual-switch-line{display:flex;align-items:center;gap:9px;min-height:38px;padding:7px 10px;border:1px solid #e0e7ee;border-radius:8px;background:#f8fafc;color:#475467;font-size:13px}.annual-switch-line input{width:16px!important;height:16px!important;margin:0}
.annual-review-empty{display:flex;flex-direction:column;align-items:center;justify-content:center;min-height:120px;border:1px dashed #cbd8e2;border-radius:12px;background:#f9fbfc;text-align:center;color:#667085}.annual-review-empty strong{color:#344054;margin-bottom:5px}
.annual-review-weight-summary{display:grid;grid-template-columns:1fr auto;gap:2px 14px;align-items:center;margin-top:12px;padding:11px 13px;border:1px solid #f1b9b5;border-radius:10px;background:#fff7f6}.annual-review-weight-summary span{font-size:12px;font-weight:700;color:#667085}.annual-review-weight-summary strong{grid-row:1/3;grid-column:2;font-size:20px;color:#b42318}.annual-review-weight-summary small{color:#b42318}.annual-review-weight-summary.valid{border-color:#a7dfba;background:#f2fbf5}.annual-review-weight-summary.valid strong,.annual-review-weight-summary.valid small{color:#067647}
@media(max-width:760px){.annual-standard-grid,.annual-review-milestone-grid{grid-template-columns:1fr}.annual-standard-grid .full,.annual-review-milestone-grid .full{grid-column:1}.annual-readonly-field,.annual-review-drawer .annual-horizontal-field,.annual-review-milestone-grid .annual-horizontal-field{grid-template-columns:1fr;gap:5px}.annual-readonly-field>.field-label,.annual-review-drawer .annual-horizontal-field>.field-label{text-align:left}.annual-hour-reference{grid-template-columns:1fr}.annual-hour-reference:before{text-align:left}.annual-review-toolbar{justify-content:flex-start}}

/* ===== KPIV2.0: không gian xem và tải minh chứng ===== */
.evidence-workspace-modal{padding:14px}
.evidence-workspace-card{width:min(1240px,98vw);height:min(820px,94vh);max-height:94vh;padding:0;overflow:hidden;display:flex;flex-direction:column;border-radius:16px}
.evidence-workspace-head{margin:0;padding:16px 18px 13px;flex:0 0 auto;background:#fff}
.evidence-head-actions{display:flex;align-items:center;gap:10px}.evidence-count-badge{display:inline-flex;align-items:center;min-height:28px;padding:4px 9px;border-radius:999px;background:#eef5fa;color:#185f8d;font-size:11px;font-weight:800}
.evidence-workspace{display:grid;grid-template-columns:340px minmax(0,1fr);flex:1 1 auto;min-height:0;background:#f3f6f9}
.evidence-browser{display:flex;flex-direction:column;min-height:0;background:#fff;border-right:1px solid #dce5ec}.evidence-browser-title{padding:12px 14px;border-bottom:1px solid #e5ebf0}.evidence-browser-title strong,.evidence-browser-title small{display:block}.evidence-browser-title strong{font-size:13px;color:#24384a}.evidence-browser-title small{margin-top:3px;font-size:11px;color:#7a8794}
.evidence-list{display:flex;flex-direction:column;gap:7px;padding:10px;overflow:auto;min-height:0}
.evidence-file-card{display:grid;grid-template-columns:45px minmax(0,1fr) 18px;align-items:center;gap:10px;padding:10px;border:1px solid #e1e8ee;border-radius:11px;background:#fff;cursor:pointer;transition:.15s ease;outline:0}.evidence-file-card:hover{border-color:#aac7db;background:#f8fbfd;transform:translateY(-1px)}.evidence-file-card.active{border-color:#5b9fc9;background:#eef7fc;box-shadow:0 0 0 2px rgba(37,128,185,.09)}
.evidence-file-copy{min-width:0}.evidence-file-copy strong{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:12.8px;color:#24384a}.evidence-file-copy small{display:block;margin-top:4px;color:#7a8794;font-size:10.8px;line-height:1.35}.evidence-file-badges{display:flex;gap:5px;flex-wrap:wrap;margin-top:6px}.evidence-file-chevron{font-size:23px;color:#8fa1ae}
.evidence-file-icon{width:43px;height:43px;display:grid;place-items:center;border-radius:10px;font-size:9.5px;font-weight:900;letter-spacing:.02em;background:#eef2f6;color:#536575;flex:0 0 43px}.evidence-file-icon.pdf{background:#feeceb;color:#b42318}.evidence-file-icon.word{background:#e8f1fc;color:#185aa6}.evidence-file-icon.excel{background:#e9f7ee;color:#167044}.evidence-file-icon.powerpoint{background:#fff0e8;color:#b74b18}.evidence-file-icon.image{background:#f3eafd;color:#7040a0}.evidence-file-icon.text{background:#eef2f6;color:#536575}.evidence-file-icon.archive{background:#fff5db;color:#8a6500}
.evidence-preview-badge{display:inline-flex;padding:3px 6px;border-radius:999px;font-size:9.8px;font-weight:800}.evidence-preview-badge.ready{background:#e5f7eb;color:#087443}.evidence-preview-badge.pending{background:#fff4d9;color:#8a6200}.evidence-preview-badge.error{background:#fee9e7;color:#b42318}.evidence-preview-badge.neutral{background:#edf2f6;color:#5b6b78}
.evidence-empty-list{display:flex;flex-direction:column;align-items:center;justify-content:center;min-height:160px;text-align:center;color:#7a8794}.evidence-empty-list strong{color:#344054;margin-bottom:4px}
.evidence-viewer{min-width:0;min-height:0;position:relative;display:flex;background:#e9eef3}
.evidence-viewer-empty{margin:auto;max-width:430px;display:flex;flex-direction:column;align-items:center;text-align:center;padding:30px;color:#6b7785}.evidence-viewer-empty strong{color:#344054;font-size:15px;margin:11px 0 5px}.evidence-viewer-empty span{font-size:12px;line-height:1.55}.evidence-empty-icon{width:64px;height:64px;display:grid;place-items:center;border-radius:18px;background:#fff;color:#4e83a8;box-shadow:0 7px 22px rgba(25,56,78,.10)}.evidence-empty-icon svg{width:32px;height:32px;fill:none;stroke:currentColor;stroke-width:1.6;stroke-linecap:round;stroke-linejoin:round}
.evidence-viewer-content{display:flex;flex-direction:column;min-width:0;min-height:0;width:100%;height:100%}.evidence-preview-toolbar{padding:10px 12px;background:#fff;border-bottom:1px solid #dce5ec}.evidence-preview-heading{display:flex;align-items:center;gap:10px;min-width:0}.evidence-preview-heading>div{min-width:0}.evidence-preview-heading strong,.evidence-preview-heading small{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.evidence-preview-heading strong{font-size:13px;color:#24384a}.evidence-preview-heading small{margin-top:3px;color:#7a8794;font-size:10.8px}.evidence-preview-toolbar .actions{display:flex;gap:6px;flex-wrap:wrap;justify-content:flex-end}
.evidence-viewer-status{margin:12px;border:1px solid #cbd9e4;border-radius:10px;padding:12px;background:#fff;color:#475467}.evidence-viewer-status>div{display:flex;flex-direction:column;gap:4px}.evidence-viewer-status strong{color:#344054}.evidence-viewer-status span{font-size:12px;line-height:1.45}.evidence-viewer-status.error{border-color:#f1b5b0;background:#fff7f6;color:#9b2c22}.evidence-viewer-status.warning{border-color:#ead193;background:#fffbef}.evidence-viewer-status.processing{border-color:#a9cce2;background:#f3f9fd}.evidence-processing{flex-direction:row!important;align-items:center;gap:10px!important}
.spinner{width:20px;height:20px;border:2px solid #bed7e7;border-top-color:#217eae;border-radius:50%;animation:kpiSpin .8s linear infinite;flex:0 0 20px}@keyframes kpiSpin{to{transform:rotate(360deg)}}
#evidencePreviewFrame{flex:1 1 auto;min-height:0;width:100%;border:0;background:#fff}
@media(max-width:850px){.evidence-workspace-card{width:100vw;height:100vh;max-height:100vh;border-radius:0}.evidence-workspace{grid-template-columns:1fr;grid-template-rows:220px minmax(0,1fr)}.evidence-browser{border-right:0;border-bottom:1px solid #dce5ec}.evidence-preview-toolbar{align-items:flex-start;flex-direction:column}.evidence-preview-toolbar .actions{width:100%;justify-content:flex-start}.evidence-preview-toolbar .btn{flex:1;text-align:center}.evidence-workspace-modal{padding:0}}
/* KPIV2.0: vô hiệu hóa các quy tắc card cũ trong panel phê duyệt */
.annual-review-summary{margin:0;padding:0;border:0;border-radius:0;background:transparent}
.annual-review-summary>div{padding:0;border:0;border-radius:0;background:transparent}
.annual-review-summary span,.annual-review-summary strong{display:initial}
.annual-review-milestone{display:block;grid-template-columns:none}
.annual-review-milestone .wide{grid-column:auto}

/* KPIV2.0.3: tài khoản có icon và minh chứng chỉ dùng PDF */
.user-box{display:flex;align-items:center;gap:10px;min-width:0}
.user-box-icon{width:34px;height:34px;display:grid;place-items:center;flex:0 0 34px;border-radius:10px;background:rgba(255,255,255,.10);color:#dff4ff;border:1px solid rgba(255,255,255,.08)}
.user-box-icon svg{width:19px;height:19px;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}
.user-box-copy{min-width:0;display:block}.user-box-copy strong,.user-box-copy small{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.file-help{display:block;margin-top:5px;color:#667085;font-size:11.5px;font-weight:500;line-height:1.4}
.login-card form{margin-top:2px}

/* KPIV2.1: trạng thái công tác dài hạn và lập lịch trực tự động */
.source-status{border-left-color:#0f8f83;background:#ecfdf8}
.calendar-status-band{margin-top:9px;padding:7px;border:1px solid #bfe5dc;border-radius:9px;background:#f2fcf9}
.calendar-status-band .v82-event{margin-bottom:5px}.calendar-status-band .v82-event:last-child{margin-bottom:0}
.status-range{border-left-width:4px;background:#eafaf5}.status-range .event-time-row b{color:#0f8f83}
.status-calendar-note{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin:-2px 0 12px;padding:9px 11px;border:1px solid #e3e9ee;border-radius:9px;background:#fafcfd;color:#5d6b78;font-size:12px}
.status-dot{width:9px;height:9px;border-radius:50%;display:inline-block}.status-dot.unavailable{background:#c53f3f}.status-dot.limited{background:#d98c1a}.status-dot.other-location{background:#1677a8}
.availability-badge{display:inline-flex;padding:4px 8px;border-radius:999px;font-size:11px;font-weight:700;background:#eef2f5;color:#51606d}.availability-badge.unavailable{background:#fdeaea;color:#a62d2d}.availability-badge.limited{background:#fff3da;color:#936000}.availability-badge.other_location{background:#e8f4fb;color:#146b97}.availability-badge.available{background:#e8f7ee;color:#167344}
.weekday-selector{padding:10px 12px;border:1px solid #e1e7ec;border-radius:9px;background:#fafcfd}.weekday-selector>.field-label{display:block;margin-bottom:8px;font-weight:700}.weekday-selector>div{display:flex;flex-wrap:wrap;gap:8px 14px}.weekday-selector label{display:flex;align-items:center;gap:5px;font-size:12px}.weekday-selector input{width:auto!important;height:auto!important}
.duty-head .actions{align-items:center}.duty-action-bar{display:flex;flex-wrap:wrap;gap:7px;margin:0 0 12px;padding:10px;border:1px solid #e0e7ed;border-radius:10px;background:#f8fafb}
.duty-metrics{margin-bottom:12px}.duty-metrics .metric{min-width:145px}.duty-metrics .metric.danger strong{color:#b42318}
.duty-schedule-notice{margin:0 0 12px;padding:10px 12px;border:1px solid #d6e1e9;border-radius:9px;background:#f5f9fc;color:#465b6c;font-size:12px}.duty-schedule-notice.hidden{display:none}
.duty-month-wrap{max-height:64vh}.duty-month-table{min-width:1180px}.duty-month-table th{position:sticky;top:0;z-index:2;background:#f8fafc}.duty-month-table td{vertical-align:top}.duty-month-table select,.duty-month-table input{min-width:135px;width:100%}.duty-month-table td:first-child{min-width:150px}.duty-month-table td:last-child{min-width:115px}
.duty-conflict-hint.blocking{background:#fff0ef;color:#a52b23}.duty-row-alert{padding-top:3px}.duty-alert{display:inline-flex;padding:4px 7px;border-radius:999px;font-size:10.5px;font-weight:800;white-space:nowrap}.duty-alert.ok{background:#e7f7ed;color:#167344}.duty-alert.warning{background:#fff3da;color:#936000}.duty-alert.blocking{background:#fde9e7;color:#b42318}.duty-source-label{display:block;margin-top:5px;color:#7b8792;font-size:10px}
.duty-member-config-wrap{max-height:360px}.duty-member-config-wrap table{min-width:900px}.duty-member-config-wrap input{width:100%;min-width:90px}.duty-member-config-wrap input[type=checkbox]{width:auto;min-width:auto}
.checkbox-field{display:flex!important;align-items:center;gap:8px;padding-top:24px}.checkbox-field input{width:auto!important;height:auto!important}.checkbox-field span{font-size:12px;font-weight:600;color:#344054}
.status.submitted{background:#fff3d6;color:#8a5a00}.status.approved{background:#e7f7ed;color:#146c3c}.status.locked{background:#e8edf2;color:#3e4d59}.status.mixed{background:#fdeaea;color:#a62d2d}
@media(max-width:900px){.duty-action-bar .btn{flex:1 1 160px}.duty-month-wrap{max-height:none}.weekday-selector>div{display:grid;grid-template-columns:repeat(2,minmax(0,1fr))}}

.duty-metrics .metric.warning strong{color:#9a6700}


/* KPIV2.2: đăng nhập, cấu phần mặc định và bảng quy tắc KPI */
.login-page{min-height:100vh;display:grid;place-items:center;padding:34px;background:linear-gradient(145deg,#09253b 0%,#0f4669 52%,#1b6f91 100%);position:relative;overflow:auto}
.login-page:before,.login-page:after{content:"";position:fixed;border-radius:50%;pointer-events:none;filter:blur(1px)}
.login-page:before{width:430px;height:430px;right:-120px;top:-170px;background:rgba(103,203,224,.17)}
.login-page:after{width:360px;height:360px;left:-130px;bottom:-160px;background:rgba(255,255,255,.08)}
.login-shell{position:relative;z-index:1;width:min(1120px,96vw);min-height:650px;display:grid;grid-template-columns:minmax(0,1.15fr) minmax(410px,.85fr);overflow:hidden;border:1px solid rgba(255,255,255,.18);border-radius:28px;background:rgba(255,255,255,.97);box-shadow:0 32px 90px rgba(2,22,36,.34)}
.login-intro{display:flex;flex-direction:column;padding:42px 46px;color:#fff;background:linear-gradient(150deg,rgba(7,36,57,.97),rgba(14,83,117,.94)),radial-gradient(circle at 80% 18%,rgba(84,198,218,.45),transparent 32%);position:relative;isolation:isolate}
.login-intro:after{content:"";position:absolute;inset:auto -80px -120px auto;width:330px;height:330px;border:1px solid rgba(255,255,255,.13);border-radius:50%;box-shadow:0 0 0 38px rgba(255,255,255,.035),0 0 0 78px rgba(255,255,255,.025);z-index:-1}
.login-brand-row{display:flex;align-items:center;gap:14px}.login-brand-row .brand-mark{box-shadow:none;border:1px solid rgba(255,255,255,.22);background:linear-gradient(135deg,#2e9cca,#58c7ce)}.login-brand-row span,.login-brand-row strong{display:block}.login-brand-row span{font-size:11px;letter-spacing:.12em;color:#a8dce9}.login-brand-row strong{margin-top:4px;font-size:14px;color:#fff}
.login-intro-content{margin:auto 0}.login-eyebrow{margin:0 0 14px;color:#72d2df;font-size:12px;font-weight:800;letter-spacing:.13em}.login-intro h1{max-width:620px;margin:0;font-size:clamp(33px,4vw,50px);line-height:1.13;letter-spacing:-.035em}.login-intro-content>p:not(.login-eyebrow){max-width:600px;margin:20px 0 30px;color:#c8e3eb;font-size:15px;line-height:1.7}
.login-feature-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px}.login-feature-grid>div{min-height:132px;padding:15px;border:1px solid rgba(255,255,255,.13);border-radius:15px;background:rgba(255,255,255,.065);backdrop-filter:blur(5px)}.login-feature-grid span,.login-feature-grid strong,.login-feature-grid small{display:block}.login-feature-grid span{color:#65cedd;font-size:11px;font-weight:800}.login-feature-grid strong{margin:12px 0 7px;font-size:13px}.login-feature-grid small{color:#b9d5de;line-height:1.45}
.login-version{display:flex;justify-content:space-between;gap:14px;align-items:center;color:#abd0dc}.login-version span{font-weight:800}.login-version small{font-size:10.5px}
.login-form-panel{display:grid;place-items:center;padding:46px;background:linear-gradient(180deg,#fff,#f8fbfd)}.login-form-card{width:min(390px,100%)}.login-form-heading>span{font-size:11px;font-weight:800;letter-spacing:.12em;color:#1877a5}.login-form-heading h2{margin:10px 0 8px;font-size:30px;letter-spacing:-.025em;color:#102f45}.login-form-heading p{margin:0 0 30px;color:#667885;line-height:1.55}.login-form-card form{display:grid;gap:18px}.login-form-card label{display:grid;gap:8px;color:#294254;font-size:12.5px;font-weight:700}.login-input-wrap{height:48px;display:flex;align-items:center;gap:10px;padding:0 13px;border:1px solid #cad7df;border-radius:11px;background:#fff;transition:.18s}.login-input-wrap:focus-within{border-color:#2487b5;box-shadow:0 0 0 4px rgba(36,135,181,.1)}.login-input-wrap svg,.login-security-note svg,.login-submit svg{width:19px;height:19px;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}.login-input-wrap svg{color:#6c8798;flex:0 0 auto}.login-input-wrap input{width:100%;height:100%;min-width:0;border:0!important;outline:0!important;box-shadow:none!important;padding:0!important;background:transparent!important;color:#1b3445}.login-submit{height:49px;margin-top:4px;display:flex!important;align-items:center;justify-content:center;gap:10px;border-radius:11px!important}.login-submit svg{width:18px}.login-security-note{display:flex;align-items:center;gap:9px;margin-top:24px;padding:11px 12px;border-radius:10px;background:#edf6fa;color:#527080;font-size:11.5px;line-height:1.4}.login-security-note svg{flex:0 0 18px;color:#2382aa}
.subject-default-card .component-card-head>div{min-width:0}.subject-default-card .component-card-head strong,.subject-default-card .component-card-head small{display:block}.subject-default-card .component-card-head small{margin-top:3px;color:#778692;font-size:10.5px;font-weight:500}.subject-default-card .form-grid{grid-template-columns:repeat(12,minmax(0,1fr))}.ui-v9 .subject-default-card .form-grid>label{grid-column:span 3!important}.ui-v9 .subject-default-card .form-grid>.span-2{grid-column:span 6!important}.subject-default-card .sdc-groups-field.hidden{display:none!important}
.panel-subhead{display:flex;align-items:center;justify-content:space-between;margin:18px 0 9px;padding-top:16px;border-top:1px solid #e4e9ed}.panel-subhead strong,.panel-subhead small{display:block}.panel-subhead small{margin-top:4px;color:#77838d}.violation-rule-table-wrap table{min-width:640px}.violation-rule-table-wrap td.num strong{color:#b42318}.compact-note strong,.compact-note span,.compact-note small{display:block}.compact-note span{margin-top:5px;line-height:1.55}.compact-note small{margin-top:5px;color:#657684}
@media(max-width:900px){.login-page{padding:18px}.login-shell{grid-template-columns:1fr;min-height:0}.login-intro{padding:30px}.login-intro-content{margin:46px 0 34px}.login-feature-grid{grid-template-columns:1fr}.login-feature-grid>div{min-height:0}.login-form-panel{padding:34px 26px}.login-version{align-items:flex-start;flex-direction:column}.subject-default-card .form-grid{grid-template-columns:1fr!important}.ui-v9 .subject-default-card .form-grid>label,.ui-v9 .subject-default-card .form-grid>.span-2{grid-column:1!important}}
@media(max-width:560px){.login-intro{display:none}.login-shell{width:min(440px,96vw);border-radius:20px}.login-form-panel{padding:34px 22px}.login-form-heading h2{font-size:26px}}

/* KPIV2.2.1: lịch công tác đơn vị theo tuần */
.department-calendar-toolbar{display:grid;grid-template-columns:repeat(4,minmax(150px,1fr)) auto;gap:12px;align-items:end;margin:14px 0}
.department-calendar-toolbar label{display:flex;flex-direction:column;gap:6px;font-size:13px;font-weight:650;color:#475569}
.department-calendar-toolbar input,.department-calendar-toolbar select{min-height:40px}
.department-calendar-check{flex-direction:row!important;align-items:center;padding-bottom:10px;white-space:nowrap}.department-calendar-check input{min-height:auto;width:17px;height:17px}
.department-calendar-range{font-weight:750;color:#174f75;margin:4px 0 12px}
.department-calendar-wrap{max-height:68vh;border:1px solid var(--line);border-radius:12px}
.department-calendar-table{border-collapse:separate;border-spacing:0;min-width:1500px;width:100%}
.department-calendar-table th,.department-calendar-table td{border-right:1px solid #e4e9ef;border-bottom:1px solid #e4e9ef;vertical-align:top;padding:8px;min-width:180px;background:#fff}
.department-calendar-table thead th{position:sticky;top:0;z-index:4;background:#eef4f8;text-align:center}.department-calendar-table thead th span,.department-calendar-table thead th small{display:block}.department-calendar-table thead th small{margin-top:3px;color:#667085}
.department-calendar-table .department-person-col{position:sticky;left:0;z-index:3;min-width:210px;max-width:210px;background:#f8fafc;text-align:left}.department-calendar-table thead .department-person-col{z-index:6;background:#e7f0f6}
.department-calendar-table .department-person-col strong,.department-calendar-table .department-person-col small{display:block}.department-calendar-table .department-person-col small{margin-top:4px;color:#667085;font-weight:500;white-space:normal}
.department-calendar-table .today{background:#fffbea}
.department-slot{border-top:1px dashed #d8e0e7;padding-top:5px;margin-top:5px}.department-slot:first-child{border-top:0;margin-top:0;padding-top:0}.department-slot>em{display:block;font-style:normal;text-transform:uppercase;font-size:10px;letter-spacing:.04em;color:#667085;font-weight:800;margin-bottom:4px}
.department-event{border-left:3px solid #64748b;background:#f8fafc;border-radius:7px;padding:5px 6px;margin:4px 0;line-height:1.3;overflow:hidden}.department-event b{font-size:10px;color:#475569;margin-right:4px}.department-event span{font-size:11px;font-weight:700;color:#25364a}.department-event small{display:block;font-size:10px;color:#667085;margin-top:2px}.department-event.type-teaching{border-color:#2563eb}.department-event.type-meeting{border-color:#7c3aed}.department-event.type-duty{border-color:#ea580c}.department-event.type-leave{border-color:#dc2626;background:#fff7f7}.department-event.type-business_trip,.department-event.type-long_term_status{border-color:#0891b2}.department-event.type-assigned_work{border-color:#16a34a}.department-event.type-progress{border-color:#9333ea}.department-event.type-personal{border-color:#64748b;background:#f8fafc}.department-event.source-department{background:#faf7ff}.department-event.source-duty{background:#fff9ed}
.department-calendar-empty{display:block;text-align:center;color:#98a2b3;padding:12px 0}.department-calendar-note{font-size:12px;color:#667085;margin-top:10px}
@media(max-width:1100px){.department-calendar-toolbar{grid-template-columns:repeat(2,minmax(150px,1fr))}.department-calendar-check{padding-bottom:0}}
@media(max-width:680px){.department-calendar-toolbar{grid-template-columns:1fr}.department-calendar-panel .panel-head{align-items:flex-start}.department-calendar-panel .panel-head .actions{width:100%;overflow-x:auto}.department-calendar-table .department-person-col{min-width:165px;max-width:165px}}


/* KPIV3.0 — phạm vi đào tạo, cân đối phân công, khối lượng dự kiến */
.scope-editor{display:grid;gap:10px}.scope-row{display:grid;grid-template-columns:minmax(150px,1fr) minmax(210px,1.4fr) minmax(160px,1fr) auto;gap:10px;align-items:end;padding:12px;border:1px solid var(--line,#dbe3ec);border-radius:12px;background:#f8fafc}.scope-row label{margin:0}.scope-chips{display:flex;flex-wrap:wrap;gap:6px;min-width:260px}.scope-chip{display:inline-flex;flex-direction:column;gap:1px;padding:5px 8px;border:1px solid #cbd5e1;border-radius:9px;background:#fff}.scope-chip b{font-size:12px}.scope-chip small{font-size:11px;color:#64748b}.workload-balance-panel{margin-bottom:16px}.workload-table-wrap{max-height:430px}.workload-breakdown{min-width:280px;font-size:12px;line-height:1.55}.workload-breakdown b{color:#334155}.assignment-suggestion-actions{display:flex;flex-direction:column;align-items:flex-start;justify-content:end;gap:5px}.assignment-suggestion-actions small{color:#64748b}.suggestion-panel{border:1px solid #dbeafe;border-radius:12px;padding:10px;background:#f8fbff}.warning-chip{display:block;margin:2px 0;padding:3px 6px;border-radius:6px;background:#fff7ed;color:#9a3412;font-size:11px}.annual-workload-summary{margin:12px 0 18px;padding:12px;border:1px solid #dbeafe;border-radius:14px;background:linear-gradient(135deg,#f8fbff,#fff)}.annual-workload-summary .panel-subhead{margin:0 0 10px}.annual-workload-summary .panel-subhead label{display:flex;align-items:center;gap:8px}.annual-workload-summary input{max-width:120px}.location-select{min-width:220px}
@media(max-width:1000px){.scope-row{grid-template-columns:1fr 1fr}.scope-row .scope-remove{grid-column:2;justify-self:end}.workload-table-wrap{overflow:auto}}
@media(max-width:640px){.scope-row{grid-template-columns:1fr}.scope-row .scope-remove{grid-column:1}.scope-chips{min-width:0}.workload-breakdown{min-width:220px}}

/* KPIV3.0.2 - system identity */
.app-brand-logo{display:block;object-fit:contain;flex:0 0 auto}.login-logo{width:62px;height:62px;border-radius:15px;box-shadow:0 10px 28px rgba(2,18,40,.28)}.sidebar-logo{width:40px;height:40px;border-radius:11px;box-shadow:0 5px 16px rgba(0,0,0,.2)}@media(max-width:760px){.login-logo{width:54px;height:54px}.sidebar-logo{width:36px;height:36px}}


/* ===== KPIV3.1: Hệ lưới biểu mẫu thống nhất theo panel Thêm lớp học phần ===== */
:root{
  --ui-form-label:132px;
  --ui-form-gap-x:24px;
  --ui-form-gap-y:12px;
  --ui-control-h:36px;
}

/* Panel/drawer: mặc định hai cột; mỗi cột là một cặp label + control. */
.ui-v9 .form-drawer .v9-compact-grid,
.ui-v9 .form-drawer .v9-enterprise-form .form-grid,
.ui-v9 .inline-form .v9-compact-grid,
.ui-v9 .inline-form .v9-enterprise-form .form-grid,
.ui-v9 .modal-card .v9-compact-grid,
.ui-v9 .modal-card .v9-enterprise-form .form-grid{
  grid-template-columns:repeat(2,minmax(0,1fr));
  column-gap:var(--ui-form-gap-x);
  row-gap:var(--ui-form-gap-y);
}

/* Mỗi cặp dùng cùng một trục nhãn và trục control. */
.ui-v9 .v9-horizontal-field,
.ui-v9 .v9-enterprise-form .stack-form>label{
  grid-template-columns:var(--ui-form-label) minmax(0,1fr);
  column-gap:10px;
  align-items:center;
}
.ui-v9 .v9-horizontal-field>.field-label,
.ui-v9 .v9-enterprise-form .stack-form>label>.field-label{
  justify-content:flex-start;
  text-align:left;
  white-space:normal;
}

/* Chỉ trường thật sự dài mới chiếm toàn hàng. */
.ui-v9 .v9-compact-grid>.v9-field-wide,
.ui-v9 .v9-enterprise-form .form-grid>.v9-field-wide,
.ui-v9 .v9-compact-grid>.span-3,
.ui-v9 .v9-compact-grid>.span-4,
.ui-v9 .v9-compact-grid>.span-12,
.ui-v9 .v9-enterprise-form .form-grid>.span-3,
.ui-v9 .v9-enterprise-form .form-grid>.span-4,
.ui-v9 .v9-enterprise-form .form-grid>.span-12{
  grid-column:1/-1!important;
}
.ui-v9 .v9-compact-grid>.span-2:not(.v9-field-wide),
.ui-v9 .v9-enterprise-form .form-grid>.span-2:not(.v9-field-wide){
  grid-column:auto!important;
}

/* Control thẳng mép trái/phải trong từng cột. */
.ui-v9 .v9-horizontal-field>input:not([type="checkbox"]):not([type="radio"]),
.ui-v9 .v9-horizontal-field>select,
.ui-v9 .v9-horizontal-field>textarea,
.ui-v9 .v9-horizontal-field>.smart-select{
  justify-self:stretch;
  width:100%;
  max-width:none;
}
.ui-v9 .v9-field-compact input,
.ui-v9 .v9-field-compact select{max-width:170px!important;justify-self:start}

/* Lưới dùng chung cho form thường: số cột có thể thay đổi theo ngữ cảnh. */
.ui-form-grid{display:grid;gap:var(--ui-form-gap-y) var(--ui-form-gap-x);align-items:start}
.ui-form-grid--1{grid-template-columns:1fr}
.ui-form-grid--2{grid-template-columns:repeat(2,minmax(0,1fr))}
.ui-form-grid--3{grid-template-columns:repeat(3,minmax(0,1fr))}
.ui-form-grid--4{grid-template-columns:repeat(4,minmax(0,1fr))}
.ui-form-field{display:grid;grid-template-columns:var(--ui-form-label) minmax(0,1fr);gap:10px;align-items:center;min-width:0}
.ui-form-field--full{grid-column:1/-1}

/* Toolbar/bộ lọc: ngang, gọn, cùng chiều cao và thẳng đường đáy. */
.ui-v9 .department-calendar-toolbar{
  display:grid;
  grid-template-columns:minmax(145px,0.8fr) minmax(180px,1fr) minmax(180px,1fr) minmax(200px,1.2fr) auto;
  gap:10px 12px;
  align-items:end;
  margin:14px 0 10px;
}
.ui-v9 .department-calendar-toolbar label:not(.department-calendar-check){
  display:grid;
  grid-template-columns:max-content minmax(0,1fr);
  align-items:center;
  gap:8px;
  min-width:0;
  margin:0;
  font-size:12px;
  font-weight:600;
  color:#475467;
}
.ui-v9 .department-calendar-toolbar input:not([type="checkbox"]),
.ui-v9 .department-calendar-toolbar select{
  width:100%;
  min-width:0;
  min-height:var(--ui-control-h);
  height:var(--ui-control-h);
  border:1px solid #ccd6df;
  border-radius:7px;
  padding:6px 9px;
  background:#fff;
}
.ui-v9 .department-calendar-toolbar #departmentCalendarWeek{max-width:150px}
.ui-v9 .department-calendar-check{
  display:flex!important;
  flex-direction:row!important;
  align-items:center;
  gap:7px;
  min-height:var(--ui-control-h);
  padding:0;
  margin:0;
  font-size:12px;
  font-weight:600;
  color:#475467;
  white-space:nowrap;
}
.ui-v9 .department-calendar-subnote{
  margin:4px 0 0!important;
  color:#667085!important;
  font-size:12px!important;
  line-height:1.45!important;
  font-weight:400!important;
}

@media(max-width:1180px){
  .ui-v9 .department-calendar-toolbar{grid-template-columns:repeat(2,minmax(220px,1fr))}
  .ui-v9 .department-calendar-check{min-height:auto}
}
@media(max-width:900px){
  .ui-v9 .form-drawer .v9-compact-grid,
  .ui-v9 .form-drawer .v9-enterprise-form .form-grid,
  .ui-v9 .inline-form .v9-compact-grid,
  .ui-v9 .inline-form .v9-enterprise-form .form-grid,
  .ui-v9 .modal-card .v9-compact-grid,
  .ui-v9 .modal-card .v9-enterprise-form .form-grid,
  .ui-form-grid--3,.ui-form-grid--4{grid-template-columns:repeat(2,minmax(0,1fr))}
}
@media(max-width:680px){
  .ui-v9 .form-drawer .v9-compact-grid,
  .ui-v9 .form-drawer .v9-enterprise-form .form-grid,
  .ui-v9 .inline-form .v9-compact-grid,
  .ui-v9 .inline-form .v9-enterprise-form .form-grid,
  .ui-v9 .modal-card .v9-compact-grid,
  .ui-v9 .modal-card .v9-enterprise-form .form-grid,
  .ui-form-grid--2,.ui-form-grid--3,.ui-form-grid--4,
  .ui-v9 .department-calendar-toolbar{grid-template-columns:1fr}
  .ui-v9 .v9-horizontal-field,
  .ui-v9 .v9-enterprise-form .stack-form>label,
  .ui-form-field{grid-template-columns:1fr;gap:5px}
  .ui-v9 .v9-horizontal-field>.field-label,
  .ui-v9 .v9-enterprise-form .stack-form>label>.field-label{text-align:left;padding-top:0!important}
  .ui-v9 .department-calendar-toolbar label:not(.department-calendar-check){grid-template-columns:1fr;gap:5px}
  .ui-v9 .department-calendar-toolbar #departmentCalendarWeek{max-width:none}
}

/* KPIV3.3.2: cố định lưới cột bảng Môn học theo nhóm để tiêu đề và nội dung luôn thẳng hàng */
.subject-table{table-layout:fixed;min-width:1420px}
.subject-table .subject-col-select{width:44px}
.subject-table .subject-col-code{width:115px}
.subject-table .subject-col-name{width:260px}
.subject-table .subject-col-group{width:190px}
.subject-table .subject-col-scope{width:255px}
.subject-table .subject-col-credit{width:82px}
.subject-table .subject-col-period{width:86px}
.subject-table .subject-col-component{width:220px}
.subject-table .subject-col-status{width:110px}
.subject-table .subject-col-action{width:100px}
.subject-table th,.subject-table td{box-sizing:border-box;overflow-wrap:anywhere}
.subject-table th{white-space:normal;line-height:1.25}
.subject-table .select-col{width:44px;min-width:44px;max-width:44px;text-align:center}
.subject-table .select-col-muted{color:transparent}
.subject-table .scope-chips,.subject-table .component-chips{min-width:0;max-width:100%}
.subject-table .component-chip{white-space:normal}

/* KPIV3.4.1: panel chính sách KPI dùng cùng lề trái/phải với panel Thêm môn học */
.ui-v9 #conversionFormWrap .drawer-panel,
.ui-v9 #adjustmentCriterionFormWrap .drawer-panel,
.ui-v9 #violationCriterionFormWrap .drawer-panel{
  margin-left:auto;
  width:min(860px,96vw);
  height:100vh;
  background:#fff;
  display:flex;
  flex-direction:column;
  border-left:1px solid #dfe6ed;
  box-shadow:-18px 0 56px rgba(5,22,35,.22);
  box-sizing:border-box;
}
.ui-v9 #conversionFormWrap .drawer-panel.drawer-panel-wide{width:min(900px,96vw)}
.ui-v9 #conversionFormWrap .drawer-panel>.drawer-head,
.ui-v9 #adjustmentCriterionFormWrap .drawer-panel>.drawer-head,
.ui-v9 #violationCriterionFormWrap .drawer-panel>.drawer-head{
  flex:0 0 auto;
  padding:17px 20px 14px;
  background:#fff;
  border-bottom:1px solid #e7edf2;
}
.ui-v9 #conversionForm,
.ui-v9 #adjustmentCriterionForm,
.ui-v9 #violationCriterionForm{
  flex:1 1 auto;
  min-height:0;
  overflow:auto;
  padding:15px 20px 78px;
  box-sizing:border-box;
}
.ui-v9 #conversionForm .form-actions,
.ui-v9 #adjustmentCriterionForm .form-actions,
.ui-v9 #violationCriterionForm .form-actions{
  margin-top:12px;
}
.ui-v9 #page-admin-classes .table-wrap table{min-width:1080px}

/* KPIV3.6.1: tổng hợp lịch đơn vị và kế hoạch lớp giảng dạy */
.department-calendar-table thead th{min-width:205px;padding:8px 9px 10px}
.department-date-title{padding-bottom:7px;margin-bottom:7px;border-bottom:1px solid #d8e2ea}
.department-date-title>span{font-size:13px;font-weight:800;color:#173f5f}
.department-day-summary{display:grid;gap:3px;text-align:left;font-size:10.5px;line-height:1.35;font-weight:500;color:#425466;white-space:normal}
.department-day-summary b{font-weight:800;color:#243b53}
.department-attendance-line{margin-top:2px}

/* KPIV4.8.15: chi tiết phản hồi và điểm danh họp theo từng cán bộ. */
.department-attendance-body{display:flex;flex-direction:column;gap:14px}.attendance-notice{padding:11px 13px;border:1px solid #f2cf88;border-radius:10px;background:#fff8e8;color:#7a5311;font-size:13px}.attendance-toolbar{margin:0}.attendance-toolbar .toolbar-search{min-width:260px}.attendance-metrics{grid-template-columns:repeat(auto-fit,minmax(125px,1fr));margin:0}.attendance-metrics .metric-card{padding:12px 14px}.attendance-metrics .metric-card strong{font-size:23px}.attendance-metrics .metric-card.warning{border-color:#f0ca80;background:#fffbef}.attendance-metrics .metric-card.danger{border-color:#efb2b2;background:#fff7f7}.attendance-metrics .metric-card.success{border-color:#a8dbc7;background:#f2fbf7}.department-attendance-table-wrap{max-height:calc(100vh - 365px);min-height:250px}.department-attendance-table{min-width:1040px}.department-attendance-table td{vertical-align:top}.department-attendance-table td:first-child{min-width:190px}.department-attendance-table td:nth-child(3){min-width:180px}.department-attendance-table select{min-width:145px}.department-attendance-table input{min-width:180px}.attendance-response{display:inline-flex;padding:4px 8px;border-radius:999px;background:#eef2f6;color:#475467;font-size:12px;font-weight:700;white-space:nowrap}.attendance-response.attending{background:#e8f7f0;color:#176b4a}.attendance-response.absent_reported{background:#fff3df;color:#885c13}.attendance-response.no_response{background:#fdeaea;color:#a33434}.attendance-response.pending{background:#eef2f6;color:#475467}
@media(max-width:760px){.department-attendance-table-wrap{max-height:calc(100vh - 420px)}.attendance-toolbar .toolbar-search{min-width:100%}.attendance-metrics{grid-template-columns:repeat(2,minmax(0,1fr))}}
.department-absence-line{min-height:14px;overflow-wrap:anywhere}
.department-absent-name{font-weight:700;color:#9f2d2d;cursor:help}
.department-group-row th{position:sticky;left:0;z-index:2!important;padding:7px 10px!important;background:#eaf1f6!important;color:#24455e;font-size:11px;letter-spacing:.035em;text-align:left!important;border-top:1px solid #cbd8e2}
.department-calendar-table tbody .department-person-col{z-index:3}
.department-calendar-table thead .department-person-col>span{font-size:13px;font-weight:800;color:#173f5f}

.annual-teaching-plan{margin-top:14px;padding-top:13px;border-top:1px solid #dbe6ef}
.annual-teaching-plan-list{display:grid;gap:12px}
.annual-semester-card{border:1px solid #dbe6ef;border-radius:12px;background:#fff;overflow:hidden}
.annual-semester-head{display:flex;align-items:center;justify-content:space-between;gap:14px;padding:10px 12px;background:#f2f7fb;border-bottom:1px solid #dbe6ef}
.annual-semester-head>div{display:flex;flex-direction:column;gap:2px}
.annual-semester-head strong{color:#173f5f}
.annual-semester-head small{color:#667085}
.annual-semester-head>span{font-weight:800;color:#174f75}
.annual-semester-card .table-wrap{border:0;border-radius:0}
.annual-semester-card table{min-width:820px}

@media(max-width:680px){
  .department-calendar-table thead th{min-width:190px}
  .department-day-summary{font-size:10px}
  .annual-workload-summary{padding:10px}
}

/* KPIV3.6.4 - phân bổ giờ nhiệm vụ nhiều người */
.ui-v9 #annualForm .annual-participant-row{grid-template-columns:minmax(190px,1.35fr) minmax(155px,1fr) minmax(115px,.65fr) minmax(110px,.65fr) auto;align-items:end}
.ui-v9 #annualForm .annual-participant-row .annual-percent-input{display:flex;align-items:center;gap:6px}
.ui-v9 #annualForm .annual-participant-row .annual-percent-input input{min-width:0;width:100%}
.ui-v9 #annualForm .annual-participant-hours{display:grid;gap:5px;padding-bottom:2px}
.ui-v9 #annualForm .annual-participant-hours span{font-size:11.5px;color:var(--muted,#667788)}
.ui-v9 #annualForm .annual-participant-hours strong{font-size:13px;white-space:nowrap}
.ui-v9 #annualForm .annual-participant-summary{margin-top:12px;padding:12px 14px;border:1px solid #d7e2ea;border-radius:10px;background:#f8fafc;display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px}
.ui-v9 #annualForm .annual-participant-summary>div{display:grid;gap:3px}
.ui-v9 #annualForm .annual-participant-summary span{font-size:11.5px;color:var(--muted,#667788)}
.ui-v9 #annualForm .annual-participant-summary strong{font-size:15px}
.ui-v9 #annualForm .annual-participant-summary small{grid-column:1/-1;color:var(--muted,#667788)}
.ui-v9 #annualForm .annual-participant-summary.invalid{border-color:#d97706;background:#fff7ed}
.annual-shared-badge{display:inline-flex;margin-top:5px;padding:2px 7px;border-radius:999px;background:#eef4f8;color:#40566a;font-size:10.5px;font-weight:600}
@container (max-width:760px){.ui-v9 #annualForm .annual-participant-row{grid-template-columns:1fr 1fr}.ui-v9 #annualForm .annual-participant-row .apr-remove{grid-column:2;justify-self:end}.ui-v9 #annualForm .annual-participant-summary{grid-template-columns:1fr}}
/* KPIV4.0.0 - teaching week grid */
/* KPIV4.0.1 - Panel nhập nhanh giờ giảng: giữ khoảng lề an toàn, không tràn hai mép */
#teachingQuickFormWrap{overflow:hidden}
#teachingQuickFormWrap .teaching-quick-form{
  box-sizing:border-box;
  width:100%;
  max-width:100%;
  height:100%;
  overflow-y:auto;
  overflow-x:hidden;
  padding:18px 22px 88px;
  align-content:start;
}
#teachingQuickFormWrap .teaching-quick-form>*{min-width:0;max-width:100%;box-sizing:border-box}
#teachingQuickFormWrap .teaching-quick-form input:not([type="checkbox"]):not([type="radio"]):not([type="hidden"]),
#teachingQuickFormWrap .teaching-quick-form select,
#teachingQuickFormWrap .teaching-quick-form textarea{width:100%;max-width:100%;min-width:0;box-sizing:border-box}
@media(max-width:680px){#teachingQuickFormWrap .teaching-quick-form{padding:14px 14px 84px}}

.teaching-week-head{align-items:flex-start}.teaching-week-toolbar{display:flex;align-items:center;justify-content:center;gap:10px;flex-wrap:wrap;margin:4px 0 12px}.teaching-week-toolbar strong{min-width:190px;text-align:center;font-size:14px;color:#25364a}.teaching-month-summary{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:8px;margin-bottom:12px}.teaching-month-card{border:1px solid #dbe6ef;border-radius:10px;padding:10px 12px;background:#f9fbfd;display:grid;gap:7px}.teaching-month-card>div:first-child{display:flex;justify-content:space-between;gap:8px;align-items:baseline}.teaching-month-card small{color:#667085}.teaching-month-metrics{display:flex;gap:12px;flex-wrap:wrap;font-size:11px;color:#667085}.teaching-month-metrics b{font-size:13px;color:#25364a}.teaching-grid-wrap{overflow:auto;border:1px solid #d8e2eb;border-radius:10px;background:white}.teaching-week-grid{width:100%;min-width:980px;border-collapse:separate;border-spacing:0;table-layout:fixed}.teaching-week-grid th,.teaching-week-grid td{border-right:1px solid #e6edf3;border-bottom:1px solid #e6edf3}.teaching-week-grid thead th{position:sticky;top:0;z-index:3;background:#f4f7fa;padding:9px 5px;font-size:12px}.teaching-week-grid .period-col{width:48px;text-align:center;background:#f7f9fb;font-size:11px;color:#667085}.teaching-day-head.today{background:#edf7ff;color:#145c8c}.teaching-empty-cell{height:34px;cursor:pointer;background:#fff;transition:background .12s}.teaching-empty-cell:hover{background:#eef8ff}.teaching-session-cell{padding:3px;vertical-align:top;background:#f8fbff}.teaching-session-block{position:relative;min-height:100%;height:100%;border:1px solid #b9d6ef;border-left:4px solid #2d7fb8;border-radius:8px;background:#eef7ff;padding:6px 22px 6px 7px;display:flex;flex-direction:column;gap:2px;overflow:hidden}.teaching-session-block.co_teaching{border-left-color:#7c3aed;background:#f6f1ff}.teaching-session-block.substitute{border-left-color:#d97706;background:#fff8e8}.teaching-session-block strong{font-size:11px;line-height:1.25;color:#173b57}.teaching-session-block span{font-size:10px;color:#425466}.teaching-session-block small{font-size:9px;color:#667085}.teaching-delete{position:absolute;right:4px;top:3px;border:0;background:transparent;color:#9b2c2c;font-size:17px;line-height:1;cursor:pointer}.teaching-session-block .actions{margin-top:3px;display:flex;gap:3px;flex-wrap:wrap}.teaching-session-block .btn.tiny{font-size:8px;padding:2px 4px}.teaching-special-box{border:1px dashed #cbd8e3;border-radius:9px;padding:10px;background:#f9fbfd}.teaching-rate-inputs{display:flex;gap:8px;flex-wrap:wrap;margin-top:8px}.teaching-rate-inputs label{display:grid;grid-template-columns:minmax(90px,1fr) 70px 14px;align-items:center;gap:4px;font-size:11px}.teaching-rate-inputs input{min-width:0}.teaching-legacy-list{margin-top:12px}.legacy-teaching-row{display:flex;justify-content:space-between;gap:12px;padding:8px 10px;border-bottom:1px solid #e6edf3;font-size:11px}.legacy-teaching-row span{color:#667085}
@media(max-width:800px){.teaching-week-head{display:block}.teaching-week-head .actions{margin-top:8px}.teaching-grid-wrap{margin-left:-4px;margin-right:-4px}.teaching-month-summary{grid-template-columns:1fr}.teaching-week-toolbar strong{order:-1;width:100%}}

/* KPIV4.1.0 - Quản lý kỳ báo cáo theo phân hệ */
.period-management-panel{margin-top:16px}
.period-management-summary{display:flex;align-items:flex-start;justify-content:space-between;gap:16px;padding:14px 16px;margin-bottom:14px;border:1px solid var(--line,#dfe5ec);border-radius:12px;background:var(--surface-soft,#f8fafc)}
.period-management-summary div{display:flex;flex-direction:column;gap:4px}.period-management-summary small{max-width:620px;line-height:1.45}
.period-module-cards{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:14px;margin-bottom:18px}
.period-module-card{border:1px solid var(--line,#dfe5ec);border-radius:14px;padding:14px;background:var(--surface,#fff);min-width:0}
.period-module-head{display:flex;align-items:flex-start;justify-content:space-between;gap:10px;margin-bottom:12px}.period-module-head>div{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.period-module-head small{text-align:right}
.period-window-grid{display:grid;grid-template-columns:1fr;gap:9px}.period-window-grid label{display:flex;flex-direction:column;gap:5px;font-size:12px}.period-window-grid input{width:100%;min-width:0;box-sizing:border-box}
.period-module-card .actions{margin-top:12px;display:flex;gap:8px;flex-wrap:wrap;align-items:center}.period-module-card .actions small{flex:1 1 100%;line-height:1.4}
.compact-period-form{margin-bottom:16px}.compact-period-form .period-target-field select{width:100%}
@media(max-width:1100px){.period-module-cards{grid-template-columns:1fr}.period-management-summary{flex-direction:column}}

/* ===== KPIV4.1.2: xem / ẩn mật khẩu ===== */
.password-field{position:relative;display:block;width:100%;min-width:0}
.password-field>input{width:100%;padding-right:44px!important}
.password-toggle{position:absolute;right:6px;top:50%;transform:translateY(-50%);width:34px;height:34px;display:grid;place-items:center;padding:0;border:0;border-radius:8px;background:transparent;color:#667085;cursor:pointer;z-index:2;transition:background .15s,color .15s}
.password-toggle:hover,.password-toggle:focus-visible{background:#eef3f7;color:#1769aa;outline:0}
.password-toggle svg{width:19px;height:19px;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round;pointer-events:none}
.password-toggle-login{position:static;transform:none;flex:0 0 34px;margin-right:-5px}
.login-input-wrap .password-toggle-login svg{width:19px;height:19px;color:inherit}
.password-reset-card{width:min(520px,96vw)}
.password-reset-help{display:block;margin:-2px 0 4px;color:var(--muted);line-height:1.5}
@media(max-width:760px){.password-toggle{right:4px}.password-reset-card{width:100%}}

/* KPIV4.2.0 - bảng hoạt động tháng / kỳ tự động */
.period-auto-note{display:block;margin:8px 0 2px;color:#667085;font-size:11px;line-height:1.4}.review-detail{margin-top:8px;border-top:1px solid #e6edf3;padding-top:7px}.review-detail summary{cursor:pointer;color:#315b7d;font-size:11px;font-weight:600}.review-activity-list{display:grid;gap:6px;margin-top:7px}.review-activity-list>div{padding:6px 8px;border:1px solid #e6edf3;border-radius:7px;background:#fafcfe;font-size:11px;line-height:1.45}

/* KPIV4.3.0 — phân công nhanh và chi tiết sự kiện */
.assignment-quick-drawer{width:min(1180px,96vw);max-width:none}
.assignment-quick-tools{display:flex;align-items:center;justify-content:space-between;gap:16px;margin-bottom:12px}
.assignment-quick-tools>div{display:flex;flex-direction:column;gap:4px}
.assignment-quick-table-wrap{max-height:62vh;overflow:auto}
.assignment-quick-table{min-width:880px}
.assignment-quick-table thead th{position:sticky;top:0;z-index:3;background:var(--surface,#fff)}
.quick-assignment-offering td{background:var(--surface-soft,#f6f8fb);border-top:2px solid var(--border,#dde2ea)}
.quick-assignment-class{display:flex;align-items:center;gap:12px;justify-content:flex-start;flex-wrap:wrap}
.quick-assignment-class>div:first-child{margin-right:auto;display:flex;flex-direction:column;gap:2px}
.quick-assignment-class label{display:flex;align-items:center;gap:8px;margin:0;min-width:300px}
.quick-assignment-class select{min-width:220px}
.qa-row td{vertical-align:middle}
.qa-row select,.qa-row input{width:100%;min-height:38px}
.qa-row .qa-periods{min-width:86px;text-align:right}
.qa-row.qa-complex{background:rgba(245,158,11,.06)}
.qa-complex-label{font-weight:600;line-height:1.35}
.event-detail-grid{display:grid;grid-template-columns:1fr 1fr;gap:12px}
.event-detail-grid>div{padding:12px;border:1px solid var(--border,#dde2ea);border-radius:10px;background:var(--surface,#fff);display:flex;flex-direction:column;gap:5px}
.event-detail-grid>div.span-2{grid-column:1/-1}
.event-detail-grid span{font-size:.82rem;color:var(--muted,#6b7280)}
.event-detail-grid strong{font-size:.98rem}
.event-detail-grid p{margin:0;white-space:pre-wrap}
.calendar-event[data-calendar-event-id],.calendar-year li[data-calendar-event-id]{cursor:pointer}
.calendar-event[data-calendar-event-id]:hover,.calendar-year li[data-calendar-event-id]:hover{filter:brightness(.98);box-shadow:0 0 0 2px rgba(59,130,246,.12)}
@media(max-width:760px){.assignment-quick-drawer{width:100vw}.assignment-quick-tools{align-items:stretch;flex-direction:column}.quick-assignment-class{align-items:stretch;flex-direction:column}.quick-assignment-class label{min-width:0;width:100%}.event-detail-grid{grid-template-columns:1fr}.event-detail-grid>div.span-2{grid-column:auto}}


/* KPIV4.3.1 — tối ưu Phân công nhanh và Lịch công tác cá nhân */
.assignment-quick-drawer{width:min(1240px,97vw)}
.assignment-quick-filter-section{padding-bottom:12px}
.assignment-quick-filter-grid{display:grid;grid-template-columns:190px 165px minmax(320px,1fr) minmax(220px,270px);gap:14px;align-items:end}
.assignment-quick-filter-grid label{min-width:0}
.assignment-quick-filter-grid input,.assignment-quick-filter-grid select{width:100%;min-height:40px}
.assignment-quick-content{padding-bottom:82px}
.assignment-quick-cards{display:grid;gap:14px;max-height:61vh;overflow:auto;padding:1px 4px 10px 1px}
.quick-assignment-offering{border:1px solid var(--line,#dde2ea);border-radius:12px;background:var(--surface,#fff);overflow:hidden}
.quick-assignment-class{padding:12px 14px;background:#f7f9fb;border-bottom:1px solid var(--line,#dde2ea);display:flex;align-items:center;justify-content:space-between;gap:16px;flex-wrap:wrap}
.qa-class-title{display:flex;flex-direction:column;gap:3px;min-width:220px}
.qa-class-title>strong{font-size:14px}.qa-class-title>small{color:var(--muted)}
.qa-class-actions{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin-left:auto}
.qa-class-actions label{display:flex;align-items:center;gap:8px;margin:0}.qa-class-actions label>span{white-space:nowrap;font-size:12px;font-weight:700;color:#475467}
.qa-class-actions select{min-width:260px;max-width:360px;min-height:38px}
.qa-grid-head,.qa-row{display:grid;grid-template-columns:minmax(170px,1.05fr) 74px 76px minmax(290px,1.8fr) 150px;gap:10px;align-items:center}
.qa-grid-head{padding:8px 14px;background:#fbfcfd;color:#667085;font-size:11px;font-weight:800;text-transform:uppercase;letter-spacing:.03em;border-bottom:1px solid var(--line,#dde2ea)}
.qa-row{padding:9px 14px;border-bottom:1px solid #edf0f3}.qa-row:last-child{border-bottom:0}.qa-row:hover{background:#fbfdff}
.qa-component{display:flex;flex-direction:column;gap:2px;min-width:0}.qa-component strong{font-size:13px}.qa-component small{color:var(--muted);white-space:normal}
.qa-group{text-align:center;color:#475467}.qa-period{text-align:center}.qa-period-display{display:inline-flex;align-items:baseline;gap:3px;font-weight:800;font-variant-numeric:tabular-nums}.qa-period-display small{font-weight:500;color:var(--muted)}
.qa-lecturer-cell{min-width:0}.qa-lecturer-cell select{width:100%;min-width:0;min-height:38px}.qa-actions{display:flex;gap:5px;justify-content:flex-end;align-items:center;flex-wrap:wrap}
.qa-row.qa-complex{background:rgba(245,158,11,.05)}
.assignment-quick-footer{position:sticky;bottom:0;z-index:5;background:rgba(255,255,255,.97);backdrop-filter:blur(5px);border-top:1px solid var(--line,#dde2ea);display:flex;align-items:center;justify-content:space-between;gap:14px}
.assignment-quick-footer-summary{font-size:12px;font-weight:700;color:#475467}.assignment-quick-footer-actions{display:flex;gap:8px;margin-left:auto}
.calendar-week-sessions .calendar-event{white-space:normal;overflow:visible;text-overflow:clip}
.calendar-week-sessions .calendar-event strong{display:block;white-space:normal;overflow-wrap:anywhere;line-height:1.35;margin-top:2px}
.calendar-week-sessions .calendar-event .event-time-row{display:flex;justify-content:space-between;gap:8px;align-items:center}
.calendar-month .calendar-event{white-space:normal;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;line-height:1.25;max-height:2.7em}
.calendar-year li{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.calendar-event.source-teaching{background:#e5f4ff;color:#135d8e;border-left-color:#1685c4}
.calendar-event.source-leave{background:#fff0ed;color:#a73a2c;border-left-color:#d95b49}
.calendar-event.source-assigned_work{background:#edf8f2;color:#166a45;border-left-color:#2d9b68}
.calendar-event.source-progress{background:#eef2ff;color:#3f51a2;border-left-color:#6574cc}
@media(max-width:980px){.assignment-quick-filter-grid{grid-template-columns:190px 165px 1fr}.qa-filter-offering{grid-column:1/-1}.qa-grid-head,.qa-row{grid-template-columns:minmax(160px,1fr) 64px 70px minmax(240px,1.5fr) 130px}}
@media(max-width:760px){.assignment-quick-filter-grid{grid-template-columns:1fr 1fr}.qa-filter-subject,.qa-filter-offering{grid-column:1/-1}.assignment-quick-cards{max-height:none;overflow:visible}.qa-grid-head{display:none}.qa-row{grid-template-columns:1fr 72px;gap:8px}.qa-component{grid-column:1/-1}.qa-group{text-align:left}.qa-period{text-align:right}.qa-lecturer-cell{grid-column:1/-1}.qa-actions{grid-column:1/-1;justify-content:flex-start}.qa-class-actions{width:100%}.qa-class-actions label{width:100%;flex-direction:column;align-items:stretch}.qa-class-actions select{max-width:none;width:100%}.assignment-quick-footer{align-items:stretch;flex-direction:column}.assignment-quick-footer-actions{width:100%;margin:0}.assignment-quick-footer-actions .btn{flex:1}}

/* KPIV4.3.2 — tinh gọn Phân công nhanh, giữ bố cục bảng */
.assignment-quick-filter-grid{
  grid-template-columns:190px 170px minmax(0,1fr);
  gap:14px;
  align-items:end;
}
.assignment-quick-filter-grid>*{min-width:0}
.assignment-quick-filter-grid .qa-filter-offering{grid-column:1/-1}
.assignment-quick-filter-grid input,
.assignment-quick-filter-grid select,
.assignment-quick-filter-grid .select2-container{
  width:100%!important;
  max-width:100%;
  min-width:0;
  box-sizing:border-box;
}
.qa-grid-head,.qa-row{
  grid-template-columns:minmax(150px,200px) 76px minmax(320px,1fr) 138px;
  gap:10px;
  align-items:center;
}
.qa-component{min-width:0;overflow:hidden}
.qa-component strong{
  display:-webkit-box;
  -webkit-line-clamp:2;
  -webkit-box-orient:vertical;
  overflow:hidden;
  white-space:normal;
  overflow-wrap:anywhere;
  line-height:1.3;
}
.qa-component small{
  overflow:hidden;
  text-overflow:ellipsis;
  white-space:nowrap;
}
.qa-period{min-width:0;text-align:center;white-space:nowrap}
.qa-lecturer-cell{min-width:0}
.qa-actions{min-width:0}
.quick-assignment-offering.qa-single-component .quick-assignment-class{padding-top:9px;padding-bottom:9px}
.quick-assignment-offering.qa-single-component .qa-row{padding-top:8px;padding-bottom:8px}
.quick-assignment-offering.qa-single-component .qa-class-title>small{font-size:11px}
.quick-assignment-offering.qa-single-component .qa-class-actions{margin-left:auto}
@media(max-width:980px){
  .assignment-quick-filter-grid{grid-template-columns:190px 170px minmax(0,1fr)}
  .assignment-quick-filter-grid .qa-filter-offering{grid-column:1/-1}
  .qa-grid-head,.qa-row{grid-template-columns:minmax(140px,185px) 70px minmax(250px,1fr) 124px}
}
@media(max-width:760px){
  .assignment-quick-filter-grid{grid-template-columns:1fr 1fr}
  .assignment-quick-filter-grid .qa-filter-subject,.assignment-quick-filter-grid .qa-filter-offering{grid-column:1/-1}
  .qa-grid-head{display:none}
  .qa-row{grid-template-columns:minmax(0,1fr) 68px;gap:8px}
  .qa-component{grid-column:1/2}
  .qa-period{grid-column:2/3;text-align:right}
  .qa-lecturer-cell{grid-column:1/-1}
  .qa-actions{grid-column:1/-1;justify-content:flex-start}
}

/* KPIV4.3.3 - Giờ học theo buổi của trường, không quy đổi sang giờ đồng hồ */
.teaching-week-grid .period-col{vertical-align:middle}
.teaching-week-grid .period-col b{display:block;font-size:11px}
.teaching-week-grid .period-col small{display:block;margin-bottom:2px;font-size:8px;line-height:1;text-transform:uppercase;letter-spacing:.03em;color:#667085}
.teaching-week-grid tr.teaching-period-start>th,.teaching-week-grid tr.teaching-period-start>td{border-top:2px solid #cbd5e1}
.teaching-week-grid tr.teaching-period-morning .period-col{background:#f8fafc}
.teaching-week-grid tr.teaching-period-afternoon .period-col{background:#f7f9fc}
.teaching-week-grid tr.teaching-period-evening .period-col{background:#f5f7fa}
.source-teaching{border-left-color:#2563eb;background:#eff6ff}
.calendar-week-sessions .calendar-session:nth-of-type(4){margin-bottom:0}

/* KPIV4.4.0 P1 - mobile-first daily workflow, desktop remains unchanged */
.remember-device-control{display:flex!important;flex-direction:row!important;align-items:flex-start;gap:9px;margin-top:-2px;cursor:pointer}.remember-device-control input{width:17px!important;height:17px!important;min-height:auto!important;margin-top:2px}.remember-device-control span{display:grid;gap:2px}.remember-device-control strong{font-size:12px;color:#344054}.remember-device-control small{font-size:10.5px;color:#667085;font-weight:400}
.mobile-p1-page,.mobile-bottom-nav,.mobile-quick-sheet,.mobile-teaching-picker,.mobile-day-view{display:none}

@media(max-width:760px){
  .main-content{padding-bottom:92px}
  .mobile-p1-page.active{display:block}
  .mobile-day-view{display:inline-flex}
  .mobile-today-head,.mobile-notification-head{display:flex;align-items:center;justify-content:space-between;gap:12px;margin:2px 0 12px}.mobile-today-head>div{display:grid;gap:2px}.mobile-today-head span{font-size:12px;text-transform:capitalize;color:#667085;font-weight:700}.mobile-today-head h3,.mobile-notification-head h3{margin:0;color:#183b56;font-size:22px}.mobile-notification-head p{margin:3px 0 0;font-size:11px;color:#667085}
  .mobile-summary-strip{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px;margin-bottom:14px}.mobile-summary-strip>div{display:grid;gap:1px;padding:10px 8px;border:1px solid #e2e8ef;border-radius:12px;background:#fff;box-shadow:0 3px 10px rgba(32,57,77,.04)}.mobile-summary-strip strong{font-size:20px;color:#174f75}.mobile-summary-strip span{font-size:9.5px;color:#667085}.mobile-summary-strip .attention strong{color:#b54708}
  .mobile-agenda-section{margin:0 0 14px}.mobile-section-head{display:flex;align-items:flex-end;justify-content:space-between;margin:0 2px 8px}.mobile-section-head strong,.mobile-section-head small{display:block}.mobile-section-head strong{font-size:13px;color:#26384a}.mobile-section-head small{font-size:10px;color:#7b8794;margin-top:2px;line-height:1.35}.mobile-agenda-list{display:grid;gap:8px}.mobile-agenda-part{display:grid;gap:6px}.mobile-agenda-part h4{margin:5px 2px 1px;color:#667085;font-size:10px;text-transform:uppercase;letter-spacing:.055em}.mobile-agenda-card{display:grid;grid-template-columns:78px minmax(0,1fr) 14px;gap:9px;align-items:start;width:100%;padding:10px 9px;border:1px solid #e0e7ee;border-left:4px solid #8ea2b2;border-radius:12px;background:#fff;text-align:left;color:inherit;box-shadow:0 3px 11px rgba(32,57,77,.04);cursor:pointer}.mobile-agenda-card.source-teaching{border-left-color:#2563eb;background:#f8fbff}.mobile-agenda-card.source-department{border-left-color:#7c3aed}.mobile-agenda-card.source-school{border-left-color:#0891b2}.mobile-agenda-card.source-duty{border-left-color:#d97706}.mobile-agenda-card.source-work,.mobile-agenda-card.source-assigned_work{border-left-color:#16a34a}.mobile-agenda-card.source-progress{border-left-color:#9333ea}.mobile-agenda-time{font-size:10px;font-weight:800;color:#344054;line-height:1.4}.mobile-agenda-copy{min-width:0;display:grid;gap:2px}.mobile-agenda-copy small{font-size:9.5px;color:#667085;text-transform:uppercase;letter-spacing:.03em}.mobile-agenda-copy strong{font-size:12.5px;line-height:1.35;color:#25364a;overflow-wrap:anywhere}.mobile-agenda-copy em{font-size:10.5px;line-height:1.35;color:#667085;font-style:normal;overflow-wrap:anywhere}.mobile-agenda-chevron{align-self:center;color:#98a2b3;font-size:20px}.mobile-agenda-list.compact .mobile-agenda-card{padding:8px 9px}.mobile-empty{display:grid;gap:3px;padding:18px 12px;border:1px dashed #d4dde6;border-radius:12px;text-align:center;background:#fafcfd}.mobile-empty strong{font-size:12px;color:#475467}.mobile-empty span{font-size:10.5px;color:#7a8794}
  .mobile-notification-list{display:grid;gap:8px}.mobile-notification-item{position:relative;width:100%;display:grid;grid-template-columns:34px minmax(0,1fr) 8px;gap:9px;align-items:start;padding:11px;border:1px solid #e1e7ed;border-radius:12px;background:#fff;text-align:left;color:inherit}.mobile-notification-item.unread{background:#f5f9fd;border-color:#cfe0ee}.mobile-notification-icon{width:32px;height:32px;display:grid;place-items:center;border-radius:10px;background:#edf3f8;color:#1e5d88;font-weight:800}.mobile-notification-copy{display:grid;gap:3px;min-width:0}.mobile-notification-copy strong{font-size:12px;color:#25364a;line-height:1.35}.mobile-notification-copy span{font-size:10.5px;color:#5e6c79;line-height:1.4}.mobile-notification-copy small{font-size:9.5px;color:#98a2b3}.mobile-notification-item>i{width:7px;height:7px;margin-top:5px;border-radius:50%;background:#2563eb}
  .mobile-bottom-nav{position:fixed;display:grid;grid-template-columns:repeat(5,1fr);left:0;right:0;bottom:0;height:68px;padding:5px max(5px,env(safe-area-inset-right)) calc(5px + env(safe-area-inset-bottom)) max(5px,env(safe-area-inset-left));z-index:95;background:rgba(255,255,255,.97);border-top:1px solid #dbe3ea;box-shadow:0 -8px 30px rgba(22,42,58,.09);backdrop-filter:blur(8px)}.mobile-bottom-item{position:relative;border:0;background:transparent;display:grid;place-items:center;align-content:center;gap:2px;color:#6b7885;min-width:0}.mobile-bottom-item>span{font-size:20px;line-height:1}.mobile-bottom-item>small{font-size:9.5px;font-weight:700;white-space:nowrap}.mobile-bottom-item.active{color:#155f8f}.mobile-bottom-add>span{display:grid;place-items:center;width:42px;height:42px;margin-top:-18px;border-radius:50%;background:#155f8f;color:#fff;font-size:27px;box-shadow:0 6px 18px rgba(21,95,143,.32)}.mobile-bottom-add>small{margin-top:-3px}.mobile-notification-badge{position:absolute;top:3px;left:calc(50% + 7px);min-width:16px;height:16px;padding:0 4px;border-radius:9px;background:#d92d20;color:#fff;font-size:9px;line-height:16px;text-align:center}
  .mobile-quick-sheet,.mobile-teaching-picker{position:fixed;display:block;inset:0;z-index:160}.mobile-quick-sheet.hidden,.mobile-teaching-picker.hidden{display:none}.mobile-quick-backdrop{position:absolute;inset:0;border:0;background:rgba(12,27,39,.48)}.mobile-quick-card,.mobile-teaching-picker-card{position:absolute;left:0;right:0;bottom:0;padding:8px 14px calc(18px + env(safe-area-inset-bottom));border-radius:20px 20px 0 0;background:#fff;box-shadow:0 -16px 45px rgba(16,33,46,.22);max-height:82vh;overflow:auto}.mobile-quick-handle{width:44px;height:4px;border-radius:3px;background:#d0d5dd;margin:0 auto 10px}.mobile-quick-head{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-bottom:10px}.mobile-quick-head strong,.mobile-quick-head small{display:block}.mobile-quick-head strong{font-size:15px;color:#25364a}.mobile-quick-head small{font-size:10.5px;color:#667085;margin-top:2px}.mobile-quick-head>button{width:34px;height:34px;border:0;border-radius:9px;background:#f2f4f7;color:#475467;font-size:22px}.mobile-quick-actions{display:grid;gap:7px}.mobile-quick-actions>button{display:grid;grid-template-columns:34px minmax(0,1fr);gap:9px;align-items:center;padding:10px;border:1px solid #e1e7ed;border-radius:12px;background:#fff;text-align:left}.mobile-quick-actions>button>span{width:32px;height:32px;display:grid;place-items:center;border-radius:9px;background:#edf5fb;color:#155f8f}.mobile-quick-actions strong,.mobile-quick-actions small{display:block}.mobile-quick-actions strong{font-size:12px;color:#25364a}.mobile-quick-actions small{font-size:10px;color:#667085;margin-top:2px}
  .mobile-teaching-picker-card section{margin-top:12px}.mobile-teaching-picker-card section h4{margin:0 0 6px;font-size:10.5px;color:#667085;text-transform:uppercase}.mobile-teaching-picker-card section>div{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:7px}.mobile-teaching-picker-card [data-period]{padding:10px 4px;border:1px solid #cedbe5;border-radius:9px;background:#f8fbfd;color:#24445d;font-size:11px;font-weight:700}
  .calendar-day-agenda{display:grid!important;grid-template-columns:1fr!important;gap:10px!important}.mobile-daypart{padding:10px;border:1px solid #e0e7ed;border-radius:12px;background:#fff}.mobile-daypart>h4{margin:0 0 8px;font-size:10.5px;color:#667085;text-transform:uppercase}.mobile-day-event{display:grid;grid-template-columns:82px minmax(0,1fr);gap:9px;width:100%;padding:9px 4px;border:0;border-top:1px solid #edf0f3;background:transparent;text-align:left;color:inherit}.mobile-day-event:first-of-type{border-top:0}.mobile-day-event-time{font-size:10px;font-weight:800;color:#344054;line-height:1.4}.mobile-day-event-copy{display:grid;gap:2px;min-width:0}.mobile-day-event-copy small{font-size:9px;color:#667085;text-transform:uppercase}.mobile-day-event-copy strong{font-size:12px;color:#25364a;line-height:1.35;white-space:normal;overflow-wrap:anywhere}.mobile-day-event-copy em{font-size:10px;color:#667085;font-style:normal;white-space:normal;overflow-wrap:anywhere}
  #calendarEventForm.mobile-quick-form .mobile-extra-event-field{display:none!important}#calendarEventForm.mobile-quick-form.mobile-extra-open .mobile-extra-event-field{display:flex!important}.mobile-event-more{grid-column:1/-1;width:100%;justify-content:center}.calendar-toolbar .segmented{display:grid;grid-template-columns:repeat(4,1fr)}.calendar-toolbar .segmented .calendar-view{width:auto}
  body.mobile-sheet-open{overflow:hidden}
}

/* ===== KPIV4.5.0 · P2 PWA / Push / thiết bị ===== */
.mobile-offline-notice{margin:10px 0 0;padding:9px 12px;border:1px solid #f0c36a;background:#fff8e7;color:#7b5811;border-radius:10px;font-size:12px;font-weight:600}
.mobile-pwa-prompt{display:flex;align-items:center;justify-content:space-between;gap:12px;margin:12px 0;padding:12px 14px;border:1px solid #c9d9ea;background:#f5f9fd;border-radius:14px}.mobile-pwa-prompt div{display:grid;gap:2px}.mobile-pwa-prompt strong{font-size:13px}.mobile-pwa-prompt small{color:var(--muted);font-size:11px}
.pwa-account-grid{margin-top:16px}.pwa-device-status{display:grid;gap:10px}.pwa-device-status>div{display:grid;gap:3px;padding:11px 12px;border:1px solid var(--line);border-radius:12px;background:#fbfcfe}.pwa-device-status strong{font-size:13px}.pwa-device-status span{font-size:12px;color:var(--muted)}.pwa-account-actions{display:flex;flex-wrap:wrap;gap:8px;margin-top:14px}.pwa-help{display:block;margin-top:12px;color:var(--muted);line-height:1.5}
.remembered-device-list{display:grid;gap:9px}.remembered-device-row{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:11px 12px;border:1px solid var(--line);border-radius:12px;background:#fff}.remembered-device-row.revoked{opacity:.58;background:#f6f7f9}.remembered-device-row>div:first-child{display:grid;gap:3px;min-width:0}.remembered-device-row strong{font-size:13px;overflow-wrap:anywhere}.remembered-device-row small,.remembered-device-row em{font-size:11px;color:var(--muted);font-style:normal}.remembered-device-row .actions{display:flex;gap:6px;flex-shrink:0}.device-current{display:inline-flex;width:max-content;margin-top:2px;padding:2px 7px;border-radius:999px;background:#e5f4ea;color:#24713b;font-size:10px;font-weight:700}
@media(max-width:760px){.pwa-account-grid{grid-template-columns:1fr!important}.remembered-device-row{align-items:flex-start;flex-direction:column}.remembered-device-row .actions{width:100%;justify-content:flex-end}.mobile-pwa-prompt{display:flex}.mobile-pwa-prompt.hidden{display:none!important}}

/* KPIV4.5.2 - Giờ giảng gối kỳ trước */
.teaching-carryover-drawer{width:min(1040px,96vw);max-width:none}
.carryover-toolbar{display:grid;grid-template-columns:190px minmax(0,1fr);gap:14px;align-items:end}
.carryover-toolbar label{min-width:0}.carryover-toolbar select{width:100%;min-height:40px}
.teaching-carryover-reports{display:grid;grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:8px;margin-top:12px}
.teaching-carryover-table-wrap{max-height:56vh;overflow:auto}
.teaching-carryover-table{min-width:760px}
.teaching-carryover-table th{position:sticky;top:0;z-index:2;background:var(--surface,#fff)}
.teaching-carryover-table th:nth-child(1){width:210px}.teaching-carryover-table th:nth-child(2){width:240px}.teaching-carryover-table th:nth-child(3){width:90px}.teaching-carryover-table th:nth-child(4){width:115px}.teaching-carryover-table th:nth-child(5){width:100px}.teaching-carryover-table th:nth-child(6){width:150px}
.carryover-period-input{width:82px;max-width:100%;text-align:right;margin-left:auto}
.carryover-summary{display:flex;justify-content:space-between;gap:18px;align-items:center;margin-top:12px;padding:10px 12px;border:1px solid #dbe6ef;border-radius:9px;background:#f9fbfd;font-size:12px}
.carryover-summary span{color:#667085;text-align:right}
.teaching-carryover-actions{position:sticky;bottom:0;background:rgba(255,255,255,.98);border-top:1px solid var(--line,#dde2ea)}
@media(max-width:760px){.teaching-carryover-drawer{width:100vw}.carryover-toolbar{grid-template-columns:1fr}.teaching-carryover-table-wrap{max-height:none}.carryover-summary{align-items:flex-start;flex-direction:column}.carryover-summary span{text-align:left}.teaching-carryover-actions .btn{flex:1}}

/* KPIV4.5.3 - thông báo cần xử lý */
.mobile-notification-item.action-required{border-color:#f1b84b;background:#fffaf0;box-shadow:inset 3px 0 0 #d97706}.mobile-notification-item.action-required .mobile-notification-icon{background:#fff0cf;color:#9a4f00}.notification-action-label{display:inline-flex;width:max-content;padding:2px 6px;border-radius:999px;background:#fff0cf;color:#9a4f00;font-size:9px;line-height:1.2;text-transform:uppercase;letter-spacing:.02em}.mobile-notification-badge.action{background:#b42318;box-shadow:0 0 0 2px #fff}

/* ===== KPIV4.5.5 · mobile account / navigation / notification focus ===== */
.mobile-sidebar-close{display:none;margin-left:auto;width:40px;height:40px;padding:0;line-height:0;align-items:center;justify-content:center;border:1px solid rgba(255,255,255,.12);border-radius:10px;background:rgba(255,255,255,.07);color:#dcebf5;cursor:pointer;flex:0 0 40px;box-sizing:border-box}
.mobile-sidebar-close svg{width:18px;height:18px;display:block;margin:0;flex:none;fill:none;stroke:currentColor;stroke-width:2;stroke-linecap:round;stroke-linejoin:round}
.mobile-menu-btn svg{width:21px;height:21px;display:block;fill:none;stroke:currentColor;stroke-width:1.9;stroke-linecap:round;stroke-linejoin:round}
.user-box-copy em{display:block;margin-top:3px;color:#7fa6bf;font-size:10.5px;font-style:normal;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.mobile-menu-btn{padding:0;font-size:0;align-self:flex-start}
.mobile-notification-filters{display:none}
.mobile-notification-badge.info{min-width:9px;width:9px;height:9px;padding:0;top:5px;left:calc(50% + 9px);font-size:0;line-height:9px;background:#2e79a8;box-shadow:0 0 0 2px #fff}

@media(max-width:900px){
  .sidebar{padding:14px 13px 12px}
  .sidebar-brand{padding:4px 5px 13px;margin-bottom:7px;gap:10px}
  .sidebar-brand-copy{flex:1 1 auto}
  .sidebar-brand-copy small{max-width:190px;overflow:hidden;text-overflow:ellipsis}
  .mobile-sidebar-close{display:flex}
  .sidebar-footer{display:block!important;margin-top:8px;padding:10px;border-radius:12px;background:rgba(255,255,255,.055);border:1px solid rgba(255,255,255,.10)}
  .sidebar-footer-label{display:none}
  .sidebar-footer .user-box{margin:0 0 9px;padding:1px 1px 8px;border-bottom:1px solid rgba(255,255,255,.08)}
  .sidebar-footer .user-box-icon{width:36px;height:36px;flex-basis:36px;border-radius:11px}
  .sidebar-footer .user-box-copy strong{font-size:12.5px}
  .sidebar-footer .user-box-copy small{font-size:10.5px;color:#a8c3d5}
  .sidebar-footer .user-box-copy em{font-size:10px;color:#7fa6bf}
  .sidebar-footer .btn{width:100%;min-height:38px;display:flex;align-items:center;justify-content:center;border-color:rgba(255,255,255,.13);background:rgba(255,255,255,.08)}
  .nav-accordion{padding-right:2px}
  .mobile-menu-btn{width:42px;height:42px;border-radius:11px;border-color:#d6e0e8;background:#fff;color:#155f8f;box-shadow:0 3px 10px rgba(15,42,67,.08)}
  .mobile-menu-btn:active{background:#eef6fb}
}

@media(max-width:760px){
  .mobile-notification-filters{display:grid;grid-template-columns:1fr 1fr 1fr;gap:5px;margin:0 0 12px;padding:4px;border:1px solid #dde5ec;border-radius:11px;background:#f5f7f9}
  .mobile-notification-filters button{min-height:34px;border:0;border-radius:8px;background:transparent;color:#637381;font-size:10.5px;font-weight:750;cursor:pointer;white-space:nowrap}
  .mobile-notification-filters button.active{background:#fff;color:#155f8f;box-shadow:0 1px 5px rgba(15,42,67,.10)}
  .mobile-notification-filters b{display:inline-grid;min-width:18px;height:18px;padding:0 4px;margin-left:3px;place-items:center;border-radius:9px;background:#e8eef3;color:#526575;font-size:9px}
  .mobile-notification-filters button.active b{background:#eaf4fb;color:#155f8f}
  .mobile-notification-filters button[data-notification-filter="action"] b:not(:empty){background:#fff0cf;color:#9a4f00}
  .mobile-notification-head{align-items:flex-start}
  .mobile-notification-head .btn{min-height:34px;padding:7px 10px;font-size:10.5px;white-space:nowrap}
}


/* KPIV4.5.7 - Tiến độ giảng dạy + xác nhận tham dự trước T-30 phút */
.teaching-progress-panel{margin-top:16px}.teaching-progress-head{align-items:flex-end}.teaching-progress-year{display:grid;gap:5px;min-width:150px;font-size:12px;color:#667085}.teaching-progress-year select{min-width:150px}.teaching-progress-summary{display:grid;grid-template-columns:repeat(4,minmax(120px,1fr));gap:10px;margin:4px 0 14px}.teaching-progress-summary>div{display:grid;grid-template-columns:1fr auto;align-items:end;gap:2px 8px;padding:10px 12px;border:1px solid var(--line);border-radius:10px;background:#fafbfc}.teaching-progress-summary span{grid-column:1/-1;font-size:11px;color:#667085}.teaching-progress-summary strong{font-size:20px;color:#25364a}.teaching-progress-summary small{font-size:10px;color:#667085}.teaching-progress-list{display:grid;gap:10px}.teaching-progress-class{padding:12px;border:1px solid var(--line);border-radius:12px;background:#fff}.teaching-progress-class-head{display:flex;justify-content:space-between;align-items:flex-start;gap:12px}.teaching-progress-class-head>div{display:grid;gap:2px}.teaching-progress-class-head small{color:#667085}.teaching-progress-class-head>b{white-space:nowrap;font-size:13px;color:#344054}.teaching-progress-track{height:10px;margin:10px 0 8px;border-radius:999px;background:#edf0f3;overflow:hidden}.teaching-progress-track>span{display:block;height:100%;border-radius:inherit;background:var(--primary)}.teaching-progress-breakdown{display:flex;flex-wrap:wrap;gap:6px 14px;font-size:11px;color:#667085}.teaching-progress-breakdown .pending{color:#9a6700}.teaching-progress-breakdown .over{color:#b42318}.teaching-progress-components{display:grid;gap:5px;margin-top:9px;padding-top:8px;border-top:1px solid #edf0f3}.teaching-progress-component{display:flex;justify-content:space-between;gap:10px;font-size:11px;color:#475467}.teaching-progress-component>span:first-child{display:flex;gap:5px;min-width:0}.teaching-progress-component small{color:#667085}.calendar-response-deadline{display:block;margin-top:5px;font-size:10px;color:#8a5a00}.calendar-response-state.no-response{color:#b42318}.calendar-response-state.attending{color:#067647}.calendar-response-state.absent{color:#9a6700}.mobile-day-response{grid-column:1/-1;display:flex;flex-wrap:wrap;gap:5px;margin-top:5px}.mobile-day-response-note{grid-column:1/-1;font-size:10px;color:#667085}
@media(max-width:760px){.teaching-progress-head{align-items:stretch}.teaching-progress-year{width:100%}.teaching-progress-year select{width:100%}.teaching-progress-summary{grid-template-columns:repeat(2,minmax(0,1fr))}.teaching-progress-class-head{display:grid}.teaching-progress-class-head>b{white-space:normal}.teaching-progress-breakdown{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:5px 8px}.teaching-progress-component{display:grid;gap:2px}.calendar-response .btn{min-height:32px}.mobile-day-response .btn{min-height:34px}}

/* ===== KPIV4.7.0 · Biểu mẫu kế hoạch PL2-PL13 + ví dụ nhập ===== */
.annual-field-hint{grid-column:2;display:block;margin-top:1px;color:#667085;font-size:10.5px;line-height:1.4;font-weight:400;text-align:left}
.annual-field-hint b{color:#475467;font-weight:700}
.annual-section-help{display:block;color:#667085;font-size:11px;line-height:1.45;margin-top:-2px}
.annual-checkbox-field{display:grid;align-content:start;gap:4px}.annual-checkbox-field .checkbox-hint{grid-column:1;margin:0 0 0 30px}
.annual-kpi-preview{display:grid;grid-template-columns:120px minmax(0,1fr);gap:2px 12px;align-items:start;padding:10px 12px;border:1px solid #d8e6ef;border-radius:10px;background:#f5f9fc}
.annual-kpi-preview>span{grid-row:1/3;color:#475467;font-size:11px;font-weight:700;padding-top:2px;text-align:right}.annual-kpi-preview>strong{font-size:13px;color:#155f8f}.annual-kpi-preview>small{color:#667085;line-height:1.4}
#annualActivityInfo.annual-activity-info{grid-column:1/-1;margin-top:-1px}
#annualDetailSectionHelp{display:block;margin-top:3px;color:#667085;font-size:11px;font-weight:400}
@media(max-width:650px){.annual-field-hint{grid-column:1}.annual-kpi-preview{grid-template-columns:1fr}.annual-kpi-preview>span{grid-row:auto;text-align:left}.annual-checkbox-field .checkbox-hint{margin-left:0}.annual-section-help{grid-column:1!important}}

/* KPIV4.8.1 */
.review-tabs{display:flex;gap:8px;align-items:center;margin:0 0 16px;flex-wrap:wrap}.review-tab-panel{min-height:120px}.review-history-toolbar{margin-bottom:12px}.review-history-kicker{font-size:.78rem;font-weight:700;text-transform:uppercase;letter-spacing:.03em;opacity:.68;margin-bottom:4px}.review-history-comment{margin-top:6px}.quick-cohort-context{grid-template-columns:minmax(280px,2fr) minmax(180px,1fr)}.col-check{width:44px;text-align:center}.quick-entry-wrap .table-secondary-text{display:block;margin-top:2px}
@media(max-width:760px){.quick-cohort-context{grid-template-columns:1fr}.review-tabs .btn{flex:1}.review-history-toolbar{grid-template-columns:1fr}}

/* KPIV4.8.2 — nhóm tổng hợp người cùng tham gia ngoài đơn vị */
.ui-v9 #annualForm .annual-participant-aggregate{background:#f8fafc;border-style:dashed}
.ui-v9 #annualForm .annual-participant-aggregate-name,.ui-v9 #annualForm .annual-participant-aggregate-role{display:grid;gap:4px;align-self:center}
.ui-v9 #annualForm .annual-participant-aggregate-name>span,.ui-v9 #annualForm .annual-participant-aggregate-role>span{font-size:11.5px;color:var(--muted,#667788)}
.ui-v9 #annualForm .annual-participant-aggregate-name>strong,.ui-v9 #annualForm .annual-participant-aggregate-role>strong{font-size:13px}
.ui-v9 #annualForm .annual-participant-aggregate-name>small{font-size:11.5px;line-height:1.4;color:var(--muted,#667788)}

/* KPIV4.8.5 — minh chứng đầy đủ ở giờ giảng, phê duyệt và lịch sử */
.teaching-evidence-action{margin-top:5px}.teaching-evidence-action .btn{max-width:100%;white-space:normal}
.review-detail-evidence-row{display:flex;align-items:flex-start;justify-content:space-between;gap:14px;padding:10px 12px;border:1px solid var(--line,#dde2ea);border-radius:10px;background:#fff}
.review-detail-evidence-row+ .review-detail-evidence-row{margin-top:8px}.review-detail-evidence-row>div:first-child{min-width:0;line-height:1.45}.review-detail-evidence-row>div:last-child{flex:0 0 auto}
.review-history-detail-content{max-height:68vh;overflow:auto;padding:2px}.review-activity-list .btn{margin-top:4px}
#workResultModal .modal-card,#violationExplanationModal .modal-card{max-width:620px}
@media(max-width:760px){.review-detail-evidence-row{display:grid}.review-detail-evidence-row>div:last-child{justify-self:start}.review-history-detail-content{max-height:none}}

/* KPIV4.8.5 - evidence replacement/version history */
.evidence-history-content{display:grid;gap:10px;padding:4px 0}
.evidence-history-row{display:flex;align-items:center;justify-content:space-between;gap:14px;padding:12px 14px;border:1px solid var(--border);border-radius:12px;background:var(--surface,#fff)}
.evidence-history-row>div:first-child{display:grid;gap:4px;min-width:0}.evidence-history-row strong{overflow-wrap:anywhere}.evidence-history-row small{color:var(--muted)}
.evidence-history-row.archived{opacity:.86}.evidence-history-row .actions{display:flex;align-items:center;gap:7px;flex-wrap:wrap;justify-content:flex-end}
@media(max-width:700px){.evidence-history-row{align-items:flex-start;flex-direction:column}.evidence-history-row .actions{justify-content:flex-start;width:100%}}

/* KPIV4.8.11 - nhóm hiển thị Kế hoạch nhiệm vụ theo Phụ lục và Nhóm chuyên môn */
#annualTable .annual-pl-separator td,#annualManageTable .annual-pl-separator td{padding:9px 12px;background:#eaf1f6;border-top:2px solid #c5d4df;border-bottom:1px solid #cbd8e2;color:#173f5f}
#annualTable .annual-pl-separator td,#annualManageTable .annual-pl-separator td,#annualTable .annual-group-separator td,#annualManageTable .annual-group-separator td{white-space:normal}
#annualTable .annual-pl-separator strong,#annualManageTable .annual-pl-separator strong{font-size:13px;font-weight:800}
#annualTable .annual-pl-separator span,#annualManageTable .annual-pl-separator span,#annualTable .annual-group-separator span,#annualManageTable .annual-group-separator span{margin-left:8px;font-size:11px;color:#60758a;font-weight:600}
#annualTable .annual-group-separator td,#annualManageTable .annual-group-separator td{padding:6px 14px;background:#f5f8fa;border-bottom:1px solid #dde6ed;color:#38546b;font-size:11.5px}
#annualTable .annual-group-separator strong,#annualManageTable .annual-group-separator strong{font-weight:800}

/* KPIV4.8.12 - không gian KPI gọn và tách ba cơ chế định mức */
.kpi-workspace-tabs,.kpi-subtabs{display:flex;gap:7px;align-items:center;flex-wrap:wrap;margin:0 0 14px;padding:5px;border:1px solid var(--line,#dde2ea);border-radius:12px;background:#f5f8fa}
.kpi-workspace-tabs .btn,.kpi-subtabs .btn{min-height:34px;padding:7px 12px;border-color:transparent;box-shadow:none}
.kpi-workspace-tabs .btn.active,.kpi-subtabs .btn.active{background:#fff;color:var(--primary,#155f8f);border-color:#cfdae3;box-shadow:0 1px 5px rgba(15,42,67,.08)}
#kpiSummaryPanel.kpi-summary-collapsed .kpi-metrics,#kpiSummaryPanel.kpi-summary-collapsed #kpiScaleNote,#kpiSummaryPanel.kpi-summary-collapsed .kpi-score-table-wrap{display:none}
#kpiSummaryPanel.kpi-summary-collapsed{padding-bottom:8px;margin-bottom:10px}
#kpiSummaryPanel.kpi-summary-collapsed .panel-head{margin-bottom:8px}
[data-kpi-norm-pane]>.table-wrap{margin-top:8px}
@media(max-width:760px){.kpi-workspace-tabs,.kpi-subtabs{display:grid;grid-template-columns:1fr 1fr}.kpi-workspace-tabs .btn,.kpi-subtabs .btn{width:100%;white-space:normal}.kpi-workspace-tabs .btn:first-child:last-child{grid-column:1/-1}}

/* KPIV4.8.12 hotfix - nhiều hoạt động và quản lý minh chứng */
.activity-existing-evidence{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:10px 12px;border:1px solid #d8e6ef;border-radius:10px;background:#f5f9fc}
.activity-existing-evidence>div{display:grid;grid-template-columns:auto auto;gap:2px 9px;align-items:center}.activity-existing-evidence span{color:#667085;font-size:11px}.activity-existing-evidence strong{color:#155f8f;font-size:12.5px}.activity-existing-evidence small{grid-column:1/-1;color:#667085;font-size:10.8px;font-weight:500}
.activity-selected-evidence-files{display:grid;gap:5px;margin-top:6px}.activity-selected-evidence{display:grid;grid-template-columns:minmax(0,1fr) auto 25px;align-items:center;gap:7px;padding:5px 6px 5px 9px;border:1px solid #dbe5ec;border-radius:8px;background:#fff;font-size:11px;font-weight:600}.activity-selected-evidence>span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.activity-selected-evidence>small{color:#667085;font-size:10px;font-weight:500}.activity-remove-selected-evidence{width:25px;height:25px;padding:0;border:0;border-radius:6px;background:#fee4e2;color:#b42318;font-size:17px;line-height:25px;cursor:pointer}.activity-remove-selected-evidence:hover{background:#fecdca}
@media(max-width:650px){.activity-existing-evidence{align-items:flex-start;flex-direction:column}.activity-existing-evidence .btn{width:100%}.activity-selected-evidence{grid-template-columns:minmax(0,1fr) 25px}.activity-selected-evidence>small{grid-column:1}.activity-remove-selected-evidence{grid-column:2;grid-row:1/3}}

/* KPIV4.8.16 - danh mục và phân công nhanh giảng viên mời/phối hợp */
.guest-lecturer-directory-panel{max-width:none;margin-inline:0}
.ui-v9 .guest-directory-summary{grid-template-columns:repeat(4,minmax(0,1fr));gap:10px;margin:0 0 13px}
.ui-v9 .guest-directory-summary .metric-card{min-height:88px;padding:13px 15px;border-radius:10px;box-shadow:none}
.ui-v9 .guest-directory-summary .metric-card:before{content:"";position:absolute;inset:0 auto 0 0;width:3px;background:#69a1c5}
.ui-v9 .guest-directory-summary .metric-card:nth-child(2):before{background:#2e8a70}.ui-v9 .guest-directory-summary .metric-card:nth-child(3):before{background:#b87a30}.ui-v9 .guest-directory-summary .metric-card:nth-child(4):before{background:#7257a8}
.ui-v9 .guest-directory-summary .metric-card span{font-size:11.5px}.ui-v9 .guest-directory-summary .metric-card strong{font-size:25px;line-height:1.1}.ui-v9 .guest-directory-summary .metric-card small{font-size:10.5px}
.ui-v9 .guest-directory-workload-card{background:#fbfaff}
.ui-v9 .guest-lecturer-toolbar{display:grid;grid-template-columns:minmax(290px,1fr) minmax(255px,.85fr) minmax(205px,.65fr) minmax(155px,.42fr) auto;gap:9px 12px;align-items:end}
.ui-v9 .guest-lecturer-toolbar .toolbar-search{min-width:0}.ui-v9 .guest-lecturer-toolbar label{min-width:0}.ui-v9 .guest-lecturer-toolbar .btn{white-space:nowrap}
.guest-lecturer-table{min-width:1260px;table-layout:fixed}.guest-lecturer-table th:nth-child(1){width:215px}.guest-lecturer-table th:nth-child(2){width:225px}.guest-lecturer-table th:nth-child(3){width:175px}.guest-lecturer-table th:nth-child(4){width:175px}.guest-lecturer-table th:nth-child(5){width:195px}.guest-lecturer-table th:nth-child(6){width:125px}.guest-lecturer-table th:nth-child(7){width:220px}.guest-lecturer-table td{vertical-align:top;overflow-wrap:anywhere}
.guest-person-cell{display:flex;align-items:flex-start;gap:9px;min-width:0}.guest-person-cell>div{min-width:0}.guest-person-cell strong{display:block;color:#243b53;line-height:1.35}.guest-avatar{flex:0 0 34px;width:34px;height:34px;display:grid;place-items:center;border:1px solid #c9dce9;border-radius:10px;background:#edf5fa;color:#1b608d;font-size:11px;font-weight:800;letter-spacing:.02em}
.guest-contact-cell{display:grid;gap:2px}.guest-contact-cell small{color:var(--muted,#667085);overflow-wrap:anywhere}.guest-type-pill{display:flex;width:max-content;max-width:100%;margin-top:5px;padding:3px 7px;border-radius:999px;background:#eef4f8;color:#36566e;font-size:10px;font-weight:750;line-height:1.3}.guest-type-pill.external{background:#fff4e5;color:#8a4b08}.guest-workload-active{color:#176b4a!important;font-weight:650}.guest-lecturer-table .actions{justify-content:flex-start}.guest-row-actions{gap:5px}.guest-row-actions .btn:disabled{opacity:.45;cursor:not-allowed}
.ui-v9 .guest-lecturer-drawer{width:min(840px,96vw)}.guest-lecturer-form{--ui-form-label:138px}.guest-lecturer-form .required-mark{color:#d92d20;font-size:12px}.guest-form-usage{display:flex;align-items:center;justify-content:space-between;gap:14px;margin:0 0 17px;padding:11px 13px;border:1px solid #cfe0ec;border-left:3px solid #347fac;border-radius:9px;background:#f5f9fc}.guest-form-usage>div{display:grid;gap:2px}.guest-form-usage span,.guest-form-usage small{color:#667085;font-size:11px}.guest-form-usage strong{color:#244f6e;font-size:13px}.guest-form-usage>small{text-align:right}.ui-v9 .guest-status-field>select{max-width:280px!important;justify-self:start}.guest-lecturer-form textarea{resize:vertical}
.qa-lecturer optgroup{font-weight:800;color:#344054}.qa-lecturer option{font-weight:500;color:#101828}.qa-grid-head,.qa-row{grid-template-columns:minmax(150px,200px) 76px minmax(310px,1fr) minmax(205px,230px)}
@media(max-width:1180px){.ui-v9 .guest-lecturer-toolbar{grid-template-columns:repeat(2,minmax(0,1fr))}.ui-v9 .guest-lecturer-toolbar .toolbar-search{grid-column:1/-1}.ui-v9 .guest-lecturer-toolbar .btn{justify-self:end}.qa-grid-head,.qa-row{grid-template-columns:minmax(140px,180px) 70px minmax(250px,1fr) minmax(185px,210px)}}
@media(max-width:760px){.guest-lecturer-directory-panel .panel-head{align-items:stretch;flex-direction:column}.guest-lecturer-directory-panel .panel-head .actions{display:grid;grid-template-columns:1fr}.ui-v9 .guest-directory-summary{grid-template-columns:repeat(2,minmax(0,1fr))}.guest-form-usage{align-items:flex-start;flex-direction:column}.guest-form-usage>small{text-align:left}.qa-grid-head{display:none}.qa-row{grid-template-columns:minmax(0,1fr) 68px}.qa-lecturer-cell,.qa-actions{grid-column:1/-1}}
@media(max-width:680px){.ui-v9 .guest-lecturer-toolbar{grid-template-columns:1fr}.ui-v9 .guest-lecturer-toolbar .toolbar-search{grid-column:auto}.ui-v9 .guest-lecturer-toolbar .btn{width:100%;justify-self:stretch}.ui-v9 .guest-status-field>select{max-width:none!important}}

/* KPIV4.8.18 - khóa toàn bộ chuỗi bố cục danh mục GV mời theo chiều rộng vùng nội dung */
.ui-v9 .main-content>#page-guest-lecturers.active{
  display:block;
  width:100%;
  min-width:0;
  max-width:none;
  margin:0;
  padding:0;
  justify-self:stretch;
  align-self:stretch;
}
.ui-v9 #page-guest-lecturers>.guest-lecturer-directory-panel{
  display:block;
  width:100%;
  min-width:0;
  max-width:100%;
  margin:0 0 18px;
}
.ui-v9 #page-guest-lecturers .guest-directory-summary,
.ui-v9 #page-guest-lecturers .guest-lecturer-toolbar,
.ui-v9 #page-guest-lecturers .guest-lecturer-table-wrap,
.ui-v9 #page-guest-lecturers .guest-lecturer-pagination{
  width:100%;
  min-width:0;
  max-width:none;
}
.ui-v9 #page-guest-lecturers .guest-lecturer-table-wrap{
  display:block;
  overflow-x:auto;
}
.ui-v9 #page-guest-lecturers .guest-lecturer-table{
  width:100%;
  max-width:none;
}

/* KPIV4.8.19 - tách ủy quyền tạm thời và chuyển giao hồ sơ vĩnh viễn. */
.delegation-management-panel>.panel-head{margin-bottom:12px}
.delegation-tabs{display:flex;gap:5px;margin:0 0 16px;padding:5px;border:1px solid var(--line);border-radius:12px;background:#f4f7fa;overflow:auto}
.delegation-tab{border:0;border-radius:8px;padding:10px 15px;background:transparent;color:#526273;font:inherit;font-weight:650;white-space:nowrap;cursor:pointer}
.delegation-tab:hover{background:#fff}.delegation-tab.active{background:#fff;color:var(--primary);box-shadow:0 2px 8px rgba(15,42,67,.09)}
.delegation-pane{display:none}.delegation-pane.active{display:block}
.delegation-section-head{display:flex;align-items:center;justify-content:space-between;gap:16px;margin:0 0 14px}
.delegation-section-head h4{margin:0 0 4px;font-size:15px;color:#26384a}.delegation-section-head p{margin:0;color:var(--muted);font-size:12.5px}
.transfer-form-wrap{border-color:#cbdce8;background:#f9fcfe}
.transfer-warning{padding:11px 13px;border:1px solid #efcf8d;border-left:4px solid #d39a2f;border-radius:9px;background:#fff9e9;color:#76531b;font-size:12.5px;line-height:1.5}
.transfer-preview-actions{padding-top:2px}.transfer-preview{padding-top:15px;border-top:1px solid #dbe5ec}
.transfer-preview-head{display:flex;align-items:center;justify-content:space-between;gap:14px;margin:0 0 10px}.transfer-preview-head h5{margin:0 0 3px;font-size:14px}.transfer-preview-head p{margin:0;color:var(--muted);font-size:12px}
.transfer-preview-head .checkbox-label{display:flex;grid-template-columns:auto auto;align-items:center;gap:7px;white-space:nowrap}.transfer-preview-head .checkbox-label input{width:16px;height:16px;padding:0}
.transfer-preview-table-wrap{max-height:390px}.transfer-preview-table-wrap table{min-width:760px}.transfer-check-col{width:62px;text-align:center}.transfer-preview-table-wrap td:first-child{text-align:center}.transfer-preview-table-wrap input[type="checkbox"]{width:17px;height:17px;padding:0}
.transfer-preview>.form-actions{align-items:center;justify-content:space-between;margin-top:11px}.approval-transfer-history-table{min-width:1050px}.approval-transfer-history-table td{vertical-align:top}.transfer-type-counts{display:flex;flex-wrap:wrap;gap:4px;margin-top:5px}.transfer-type-counts span{display:inline-flex;padding:3px 6px;border-radius:999px;background:#eef4f8;color:#36566e;font-size:10.5px;font-weight:650}.transfer-people{display:grid;gap:2px}.transfer-people strong{color:#8b2d2d}.transfer-people b{color:#176b4a}.transfer-scope-label{font-weight:650;color:#36566e}

/* Danh sách vắng nằm trên một dòng logic, mỗi người luôn kèm lý do. */
.department-absence-line{white-space:normal;line-height:1.45}
.department-absent-name{display:inline;font-weight:700;color:#9f2d2d;cursor:help}
.department-absent-reason{font-weight:550;color:#76531b}

@media(max-width:760px){
  .delegation-section-head{align-items:stretch;flex-direction:column}.delegation-section-head .btn{width:100%}
  .delegation-tabs{display:grid;grid-template-columns:1fr 1fr}.delegation-tab{white-space:normal;padding:9px 8px}
  .transfer-preview-head{align-items:flex-start;flex-direction:column}.transfer-preview>.form-actions{align-items:stretch;flex-direction:column}.transfer-preview>.form-actions .btn{width:100%}
}

/* KPIV4.8.20 - nguồn trách nhiệm lâu dài và danh sách vắng theo yêu cầu. */
.responsibility-check{display:flex;align-items:flex-start;gap:10px;padding:11px 12px;border:1px solid #cddce7;border-radius:10px;background:#f7fbfe}
.responsibility-check input{width:18px;height:18px;margin:2px 0 0;flex:0 0 auto}.responsibility-check span{display:grid;gap:3px}.responsibility-check strong{color:#173f5f}.responsibility-check small{color:#667788;line-height:1.45}
.responsibility-change-box{padding:12px 14px;border:1px solid #e0d3ae;border-left:4px solid #c69632;border-radius:10px;background:#fffbef}.responsibility-change-box>strong{color:#694d18}.responsibility-change-box>p{margin:4px 0 10px;color:#765f32;font-size:12px;line-height:1.45}.responsibility-change-box label{display:grid;gap:5px}.responsibility-change-box textarea{background:#fff}
.responsibility-chips{display:flex;flex-wrap:wrap;gap:4px;margin-top:7px}.responsibility-chip{display:inline-flex;padding:3px 7px;border-radius:999px;background:#eaf3f8;color:#28536e;font-size:10.5px;font-weight:700}.responsibility-chip.primary{background:#e8f5ed;color:#176140}
.department-absence-button{display:inline-flex;align-items:center;gap:3px;padding:1px 6px;border:1px solid #e4b5b5;border-radius:999px;background:#fff4f4;color:#9b2d2d;font:inherit;font-weight:800;cursor:pointer}.department-absence-button:hover{background:#ffe8e8;border-color:#d88e8e}.department-no-absence{color:#667788}
.department-absence-detail{padding-bottom:82px}.absence-detail-count{margin-bottom:10px;padding:10px 12px;border-radius:9px;background:#eef5f9;color:#264b63;font-weight:750}.absence-detail-list{display:grid;gap:9px}.absence-detail-item{padding:12px 13px;border:1px solid #dce5ec;border-radius:10px;background:#fff}.absence-detail-item>div{display:flex;align-items:center;justify-content:space-between;gap:10px}.absence-detail-item strong{color:#263c4d}.absence-detail-item p{margin:7px 0 0;color:#5d4d2c;line-height:1.45;overflow-wrap:anywhere}.absence-reason-chip{display:inline-flex;padding:3px 7px;border-radius:999px;background:#fff0dc;color:#825513;font-size:11px;font-weight:750;white-space:nowrap}
@media(max-width:680px){.responsibility-change-box{padding:11px}.absence-detail-item>div{align-items:flex-start;flex-direction:column}.absence-reason-chip{white-space:normal}.department-absence-button{min-height:25px}}

/* KPIV4.9.0 - dự thảo giờ giảng tương lai và hướng dẫn đúng nơi kê khai. */
.teaching-submission-note{display:none;margin:0 0 12px;padding:10px 12px;border:1px solid #cbdde9;border-left:4px solid #3b82a8;border-radius:9px;background:#f4f9fc;color:#34566d;font-size:12.5px;line-height:1.5}.teaching-submission-note.visible{display:block}.teaching-submission-note.future{border-color:#ead69d;border-left-color:#c89526;background:#fffaf0;color:#70551f}
.period-future-open-note{margin:10px 0 0;padding:9px 10px;border:1px dashed #b8cfdd;border-radius:8px;background:#f7fbfd;color:#456174;font-size:12px;line-height:1.45}.period-future-open-note .btn{margin-top:7px}
.activity-routing-guide{display:grid;grid-template-columns:minmax(220px,1fr) auto;align-items:center;gap:10px 18px;margin:0 0 14px;padding:12px 14px;border:1px solid #cddfea;border-left:4px solid #3f86ad;border-radius:10px;background:#f7fbfd}.activity-routing-guide strong{color:#244e69}.activity-routing-guide p{margin:3px 0 0;color:#5b6e7c;font-size:12px}.activity-routing-guide>small{grid-column:1/-1;color:#687b89;line-height:1.45}.activity-routing-actions{display:flex;flex-wrap:wrap;justify-content:flex-end;gap:6px}
@media(max-width:760px){.activity-routing-guide{grid-template-columns:1fr}.activity-routing-actions{justify-content:flex-start}.activity-routing-guide>small{grid-column:auto}.period-future-open-note .btn{width:100%}}
