:root{--bg:#f6f7fb;--card:#fff;--text:#222;--muted:#666;--line:#e8eaf0;--primary:#1667d9;--primary-dark:#0f55b8;--danger:#b42318;--warn:#b06000;--ok:#137333}
*{box-sizing:border-box}body{font-family:Arial,Helvetica,sans-serif;background:var(--bg);margin:0;color:var(--text);font-size:15px;line-height:1.35}.wrap{max-width:1120px;margin:auto;padding:16px}.card{background:var(--card);border-radius:14px;padding:16px;margin:12px 0;box-shadow:0 2px 12px #0001}.btn{display:inline-block;background:var(--primary);color:#fff;border:0;border-radius:10px;padding:10px 14px;text-decoration:none;margin:4px 0;cursor:pointer;min-height:40px}.btn:hover{background:var(--primary-dark)}.btn.secondary{background:#555}.btn.danger{background:var(--danger)}.btn.light{background:#eef3ff;color:#174ea6}input,select,textarea{width:100%;box-sizing:border-box;padding:10px;border:1px solid #ddd;border-radius:10px;margin:6px 0 12px;background:#fff;font-size:15px}input[type=checkbox]{width:auto;margin-right:6px}table{width:100%;border-collapse:collapse;background:#fff;min-width:720px}th,td{border-bottom:1px solid #eee;padding:9px;text-align:left;font-size:14px;vertical-align:top}th{background:#f0f2f5}.table-scroll{width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch}.nav{display:flex;flex-wrap:wrap;align-items:center;gap:8px;background:#fff;border-radius:14px;padding:10px 12px;box-shadow:0 2px 12px #0001;margin-bottom:12px}.nav b{margin-right:4px}.nav a{display:inline-block;padding:7px 9px;border-radius:9px;text-decoration:none;color:#174ea6;background:#f3f6ff}.nav a:hover{background:#e5edff}.muted{color:var(--muted);font-size:13px}.ok{color:var(--ok)}.warn{color:var(--warn)}.bad,.err{color:var(--danger)}video,canvas,img.photo{max-width:100%;border-radius:12px}.grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:12px}.linkbtn{background:none;border:0;color:#1667d9;text-decoration:underline;cursor:pointer;padding:0;font:inherit}.app-footer{max-width:1120px;margin:18px auto;padding:10px 16px;color:#667085;font-size:12px;display:flex;justify-content:space-between;align-items:center;gap:10px;border-top:1px solid var(--line)}.footer-brand{display:flex;align-items:center;gap:8px;font-weight:600;color:#344054}.footer-logo{width:14px;height:14px;object-fit:contain;border-radius:50%;background:#fff}.footer-version{white-space:nowrap}.version-pill{display:inline-block;background:#eef3ff;color:#174ea6;border-radius:999px;padding:4px 8px;font-size:12px;margin-left:6px}.gps-status{font-size:13px;margin-top:4px}.actions{display:flex;gap:8px;flex-wrap:wrap;align-items:center}
@media (max-width:700px){body{font-size:14px}.wrap{padding:10px}.card{border-radius:12px;padding:14px;margin:10px 0;box-shadow:0 1px 8px #0001}h1{font-size:24px}h2{font-size:20px}.grid{grid-template-columns:1fr;gap:6px}.btn{width:100%;text-align:center;padding:11px 12px}.actions .btn{width:auto;flex:1}.nav{display:block;white-space:nowrap;overflow-x:auto;padding:9px}.nav a,.nav b{margin:2px 4px 2px 0}.nav a{padding:8px 10px}.app-footer{display:flex;align-items:center;padding:10px;margin:10px auto}.footer-brand{gap:7px}.footer-logo{width:12px;height:12px}.app-footer span{display:block;margin:3px 0}.footer-version{white-space:normal}table{display:block;overflow-x:auto;white-space:nowrap;min-width:680px}th,td{font-size:13px;padding:8px}input,select,textarea{font-size:16px} }
@media (min-width:701px){.form-actions{align-self:end}}

.accepted{color:var(--ok);font-weight:600}.rejected{color:var(--danger);font-weight:600}.sunday-row{background:#fff7e6}.sunday-row td{background:#fff7e6}.summary-ok{color:var(--ok);font-weight:600}.summary-miss{color:var(--danger);font-weight:600}.summary-leave{color:#174ea6;font-weight:600}
.monthly-grid{min-width:1100px}.monthly-grid th,.monthly-grid td{text-align:center;vertical-align:middle}.monthly-grid .sticky-name{text-align:left;min-width:150px;position:sticky;left:0;z-index:2;background:#fff}.monthly-grid th.sticky-name{background:#f0f2f5;z-index:3}.day-col{min-width:46px}.day-col span{font-size:11px;color:#667085}.sunday-col{background:#fff3cd!important}.cell-work{color:var(--ok);font-weight:700}.cell-leave{color:#174ea6;font-weight:700}.cell-unpaid{color:var(--danger);font-weight:700}.note-cell{text-align:left!important;min-width:220px;max-width:360px;white-space:normal}
@media (max-width:700px){.monthly-grid{min-width:1250px}.monthly-grid .sticky-name{min-width:130px}.day-col{min-width:42px}.note-cell{max-width:260px}}


.print-title{display:none;text-align:center;margin:0 0 10px}.print-title h1{font-size:20px;margin:0 0 4px;text-transform:uppercase}.print-title p{margin:0 0 8px;font-size:13px}
.print-hide{}

/* Bảng công tháng: kẻ ô rõ để có thể in trực tiếp */
.monthly-grid th,.monthly-grid td{border:1px solid #cfd4dc!important}
.monthly-grid{border-collapse:collapse!important}
@media print{
  body{background:#fff;font-size:11px}
  .wrap{max-width:none;padding:0}
  .card{box-shadow:none;border:0;padding:0;margin:0}
  .nav,.btn,form,.muted,.app-footer{display:none!important}
  .print-title{display:block!important}
  .print-hide{display:none!important}
  .table-scroll{overflow:visible!important}
  table,.monthly-grid{min-width:0!important;width:100%!important;border-collapse:collapse!important}
  th,td{border:1px solid #999!important;padding:4px!important;font-size:10px!important}
  .monthly-grid .sticky-name{position:static!important;min-width:80px!important}
  .day-col{min-width:22px!important}
  .note-cell{display:none}
}

/* v16: menu admin dọc */
.admin-page{max-width:1280px;display:grid;grid-template-columns:220px minmax(0,1fr);gap:14px;align-items:start}
.admin-page>.nav{grid-column:1;grid-row:1 / span 30}
.admin-page>.card{grid-column:2}
.admin-sidebar{display:block;position:sticky;top:12px;padding:12px}
.admin-sidebar .nav-title{display:flex;align-items:center;justify-content:space-between;gap:8px;margin-bottom:10px;padding-bottom:10px;border-bottom:1px solid var(--line)}
.admin-menu-toggle{display:none;border:0;background:#1667d9;color:#fff;border-radius:10px;padding:9px 11px;font-weight:700}.admin-nav-links{display:none}.admin-sidebar .nav-link{display:block;margin:6px 0;padding:10px 12px;border-radius:10px;text-decoration:none;color:#174ea6;background:#f3f6ff}
.admin-sidebar .nav-link:hover,.admin-sidebar .nav-link.active{background:#1667d9;color:#fff}
@media(min-width:801px){.admin-nav-links{display:block!important}}
.row-pending{background:#fffdf2}.inactive-row{opacity:.68;background:#fafafa}.notice{background:#f8fafc;border:1px solid #e4e7ec;border-radius:12px;padding:12px;margin:12px 0}.form-actions{align-self:end}
@media(max-width:800px){
  .admin-page{display:block;padding-top:8px}
  .admin-sidebar{position:sticky;top:0;z-index:20;display:block;margin:0 0 12px;padding:8px 10px;border-radius:12px;box-shadow:0 2px 12px #0002}
  .admin-sidebar .nav-title{margin:0;padding:0;border:0}
  .admin-menu-toggle{display:inline-block;min-height:38px;background:#fff;color:#222;border:1px solid #555}
  body .admin-sidebar .admin-nav-links{display:none!important;margin-top:8px;padding-top:8px;border-top:1px solid var(--line);max-height:65vh;overflow:auto}
  body .admin-sidebar.open .admin-nav-links{display:grid!important;grid-template-columns:1fr 1fr;gap:8px}
  .admin-sidebar .nav-link{display:block;margin:0;padding:10px 9px;text-align:center;font-size:13px}
  .admin-page>.card{grid-column:auto}
  .version-pill{font-size:11px;padding:3px 6px;margin-left:4px}
}
@media print{.admin-sidebar{display:none!important}.admin-page{display:block!important}}

/* v18: tiện hơn cho nhân viên và admin */
.quick-stats{display:grid;grid-template-columns:repeat(auto-fit,minmax(130px,1fr));gap:10px;margin:12px 0}
.quick-stats>div{background:#f8fafc;border:1px solid #e4e7ec;border-radius:12px;padding:12px;text-align:center}
.quick-stats span{display:block;color:#667085;font-size:12px;margin-bottom:4px}.quick-stats b{font-size:24px;color:#111827}
.employee-actions{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin-top:12px}.btn.big{font-size:17px;font-weight:700;padding:13px 16px;min-height:48px}
.employee-hero table{min-width:780px}.employee-hero h2{margin-top:0}
.quick-cards{display:grid;grid-template-columns:repeat(auto-fit,minmax(210px,1fr));gap:12px;margin-top:14px}.quick-cards a{display:block;text-decoration:none;color:#1f2937;background:#f8fafc;border:1px solid #e4e7ec;border-radius:14px;padding:14px}.quick-cards a:hover{border-color:#1667d9;background:#eef3ff}.quick-cards b{display:block;font-size:16px;margin-bottom:6px;color:#174ea6}.quick-cards span{display:block;color:#667085;font-size:13px}.rules-list{margin:8px 0 0;padding-left:20px}.rules-list li{margin:7px 0}.event-outside{background:#fff7ed}.event-rejected{background:#fff1f1}.status-chip{display:inline-block;padding:3px 7px;border-radius:999px;font-size:12px;font-weight:700}.status-chip.ok{background:#eaf6ee;color:#137333}.status-chip.bad{background:#fdecec;color:#b42318}.status-chip.warn{background:#fff4e5;color:#b06000}
@media(max-width:700px){.employee-actions{grid-template-columns:1fr}.quick-stats{grid-template-columns:repeat(3,1fr);gap:6px}.quick-stats>div{padding:8px}.quick-stats b{font-size:20px}.quick-cards{grid-template-columns:1fr}}

.check-row{display:flex;gap:8px;align-items:center;margin:12px 0;font-weight:500}
.check-row input{width:auto;margin:0}
.small{font-size:13px}

/* v28: mobile admin menu collapsed by default; opens only when admin-sidebar has .open */

/* v28.1: báo cáo đi muộn/về sớm */
.summary-cards{display:grid;grid-template-columns:repeat(auto-fit,minmax(160px,1fr));gap:10px;margin:12px 0}
.mini-card{background:#f8fafc;border:1px solid #e4e7ec;border-radius:12px;padding:12px;text-align:center}
.mini-card b{display:block;font-size:22px;color:#111827}.mini-card span{display:block;font-size:13px;color:#667085;margin-top:4px}
.check-label{display:inline-flex;gap:6px;align-items:center;white-space:nowrap}

/* v28.4: bảng công thô gọn hơn, lý do ẩn khi xem, nút thao tác nhỏ hơn */
.reason-badge{border:0;background:#eef3ff;color:#174ea6;border-radius:999px;padding:4px 8px;font-size:12px;font-weight:700;cursor:pointer;white-space:nowrap}
.reason-badge:hover{background:#dbe8ff}
.reason-cell{min-width:62px;text-align:center}
.reason-print-text{display:none!important}
.raw-attendance-table th,.raw-attendance-table td{vertical-align:middle}
.raw-attendance-table .btn.compact-action{min-height:30px;padding:5px 8px;border-radius:8px;font-size:12px;line-height:1.15;margin:0;min-width:86px;max-width:96px;white-space:normal}
.raw-attendance-table .print-hide form{margin:0}
.raw-attendance-table .status-chip{font-size:12px;padding:3px 7px}

@media print{
  .raw-attendance-table th.print-hide,.raw-attendance-table td.print-hide{display:none!important}
  .reason-badge{display:none!important}
  .reason-print-text{display:inline!important;white-space:normal!important}
  .reason-cell{text-align:left!important;min-width:80px!important}
}


/* v28.5: ký hiệu Vào/Ra có màu để nhìn nhanh hơn */
.event-badge{display:inline-flex;align-items:center;justify-content:center;min-width:42px;border-radius:999px;padding:4px 9px;font-size:12px;font-weight:800;line-height:1.1;white-space:nowrap;border:1px solid transparent}
.event-in{background:#e8f5e9;color:#137333;border-color:#b7e1c1}
.event-out{background:#fff3e0;color:#b06000;border-color:#ffd59a}
@media print{
  .event-badge{background:#fff!important;color:#111!important;border:1px solid #777!important;padding:2px 6px;font-size:11px}
}
@media print {
  @page { size: A4 landscape; margin: 8mm 6mm; }
  body { margin: 0; }
  .monthly-grid { font-size: 10px; }
  .monthly-grid th, .monthly-grid td { padding: 3px 4px; }
  .print-title h1 { font-size: 18px; margin: 0 0 4px; }
  .print-title p { margin: 0 0 8px; }
}
.warn-box{background:#fff7ed;border:1px solid #fed7aa;border-radius:12px;padding:10px 12px;margin:10px 0}
.cell-bs{background:#eef6ff!important;font-weight:700;color:#1d4ed8}

/* v30.2: in bảng công tổng hợp vừa A4 ngang hơn */
@media print {
  @page { size: A4 landscape; margin: 4mm 3mm; }
  body { margin: 0 !important; font-size: 7px !important; -webkit-print-color-adjust: exact; print-color-adjust: exact; }
  .print-title h1 { font-size: 13px !important; margin: 0 0 2mm !important; }
  .print-title p { font-size: 9px !important; margin: 0 0 2mm !important; }
  .monthly-grid { width: 100% !important; table-layout: fixed !important; min-width: 0 !important; border-collapse: collapse !important; }
  .monthly-grid th, .monthly-grid td {
    font-size: 6.8px !important;
    line-height: 1.05 !important;
    padding: 1.2px 1px !important;
    word-break: break-word !important;
    overflow-wrap: anywhere !important;
    white-space: normal !important;
    text-align: center !important;
  }
  .monthly-grid th:nth-child(1), .monthly-grid td:nth-child(1) { width: 5.5mm !important; }
  .monthly-grid .sticky-name { width: 27mm !important; min-width: 0 !important; max-width: 27mm !important; position: static !important; text-align: left !important; }
  .monthly-grid th:nth-child(3), .monthly-grid td:nth-child(3) { width: 15mm !important; }
  .monthly-grid .day-col { width: 6mm !important; min-width: 0 !important; max-width: 6mm !important; }
  .monthly-grid .day-col span { font-size: 5.2px !important; }
  .monthly-grid th:nth-last-child(3), .monthly-grid td:nth-last-child(3),
  .monthly-grid th:nth-last-child(2), .monthly-grid td:nth-last-child(2),
  .monthly-grid th:nth-last-child(1), .monthly-grid td:nth-last-child(1) { width: 9mm !important; }
}
/* v31.1: theo dõi phép cá nhân */
.leave-balance-stats small{display:block;color:#667085;font-size:11px;margin-top:2px}
.leave-balance-stats>div:last-child{background:#eef6ff;border-color:#bfdbfe}
.leave-balance-stats>div:last-child b{color:#1d4ed8}
@media(max-width:700px){.leave-balance-stats{grid-template-columns:repeat(2,1fr)!important}.leave-balance-stats span{font-size:11px}.leave-balance-stats b{font-size:18px}}

/* v31.2: duyệt phép tách đơn chưa thao tác/đã thao tác, tránh ghi chú che nút */
.leave-approval-table{min-width:1100px}
.leave-approval-table th,.leave-approval-table td{vertical-align:middle}
.leave-approval-table textarea{min-height:54px;margin:0;resize:vertical}
.leave-approval-table select{margin:0;min-width:132px}
.leave-action-cell{min-width:150px}
.leave-action-select{font-weight:700;background:#fff}
.leave-status-chip{display:inline-block;border-radius:999px;padding:4px 9px;font-size:12px;font-weight:800;white-space:nowrap}
.leave-status-approved{background:#eaf6ee;color:#137333}.leave-status-rejected{background:#fdecec;color:#b42318}.leave-status-cancelled{background:#f2f4f7;color:#475467}.leave-status-pending{background:#fff4e5;color:#b06000}
.note-short{max-width:260px;white-space:normal;word-break:break-word}
.inline-status-form{display:grid;grid-template-columns:1fr;gap:6px;min-width:150px}
.inline-status-form select,.inline-status-form textarea{margin:0}.inline-status-form .btn.compact-action{min-height:30px;padding:5px 8px;border-radius:8px;font-size:12px;margin:0;width:auto}
.leave-reason-cell{text-align:center;min-width:62px}
@media(max-width:700px){.leave-approval-table{min-width:1050px}.leave-approval-table th,.leave-approval-table td{font-size:12px;padding:6px}.leave-approval-table textarea{font-size:13px}.leave-approval-table select{font-size:13px}}
/* v32.0 */
.device-warning{border:1px solid #f6b73c;background:#fff8e8;border-radius:12px;padding:12px;margin:12px 0}
.row-warn td{background:#fff7ed!important}
.status-chip.bad{background:#fee2e2;color:#991b1b;border-color:#fecaca}
.status-chip.ok{background:#dcfce7;color:#166534;border-color:#bbf7d0}


/* v33.0: kết quả chấm công sau khi gửi */
.check-result-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;margin:12px 0}
.check-result-item{border:1px solid #e5e7eb;border-radius:12px;padding:12px;background:#fff}
.check-result-item b{display:block;font-size:14px;margin-bottom:4px;color:#344054}
.check-result-ok{border-color:#bbf7d0;background:#f0fdf4;color:#166534}
.check-result-warn{border-color:#fed7aa;background:#fff7ed;color:#9a3412}
.check-result-bad{border-color:#fecaca;background:#fef2f2;color:#991b1b}
.check-photo-preview{max-width:260px;width:100%;border-radius:14px;border:1px solid #ddd;display:block;margin:8px 0}
.result-actions{display:flex;gap:8px;flex-wrap:wrap;margin-top:12px}
@media(max-width:700px){.check-result-grid{grid-template-columns:1fr}.check-photo-preview{max-width:100%}}
.inline-approval-form{display:flex;flex-direction:column;gap:6px;min-width:190px}.inline-approval-form input{padding:7px 8px;font-size:13px}.action-row{display:flex;gap:5px;flex-wrap:wrap}.row-rejected td{background:#fff1f1!important}

.dashboard-alerts{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:12px;margin:16px 0 18px}.dashboard-alert-card{display:block;text-decoration:none;border:1px solid #dbeafe;background:#f8fbff;border-radius:16px;padding:14px;color:#1f2937;box-shadow:0 2px 8px rgba(15,23,42,.04)}.dashboard-alert-card:hover{border-color:#1667d9;background:#eef5ff}.dashboard-alert-card span{display:block;font-weight:800;color:#174ea6}.dashboard-alert-card b{display:block;font-size:34px;line-height:1.1;margin:6px 0;color:#111827}.dashboard-alert-card em{display:block;font-style:normal;color:#667085;font-size:13px}
@media(max-width:700px){.dashboard-alerts{grid-template-columns:1fr}.dashboard-alert-card b{font-size:28px}}
.bad-box{background:#fef2f2;border:1px solid #fecaca;border-radius:12px;padding:10px 12px;margin:10px 0;color:#991b1b}
.inline-action{display:inline-block;margin:2px 2px 2px 0}.danger-outline{background:#fff;border:1px solid #dc2626;color:#b91c1c}.danger-outline:hover{background:#fee2e2}
/* v39.1 - gọn trang chấm công, linh hoạt theo giờ không chia buổi */
.cell-hourly{background:#eef6ff;color:#174ea6;font-weight:700}
.monthly-grid th:nth-last-child(4),.monthly-grid td:nth-last-child(4){background:#f8fbff}


/* v39.1 - giao diện nhân viên gọn hơn */
.check-compact .check-user-box{font-size:15px;padding:10px 12px;margin:8px 0 12px}
.check-compact .check-user-box b{font-size:18px}
.check-compact h2{margin-bottom:8px}
.check-compact .check-note{background:#f8fafc;border:1px solid #e5e7eb;border-radius:12px;padding:10px 12px;margin:10px 0;color:#475569}
.check-compact video{margin-top:10px;max-height:430px;object-fit:cover;border-radius:14px}
.check-actions-row{display:flex;gap:10px;flex-wrap:wrap;align-items:center;margin-top:12px}
.check-actions-row .btn{min-width:150px;text-align:center}
.hourly-mini{display:flex;gap:10px;flex-wrap:wrap;margin:12px 0}
.hourly-mini .pill-card{background:#f1f5f9;border:1px solid #e2e8f0;border-radius:12px;padding:10px 14px;min-width:130px}
.hourly-mini .pill-card span{display:block;color:#64748b;font-size:13px}.hourly-mini .pill-card b{font-size:20px}
.employee-hero.compact-hero .table-scroll table th,.employee-hero.compact-hero .table-scroll table td{padding:8px 10px}
.employee-hero.compact-hero .muted{margin:6px 0}

/* v40.2 - bảng công tháng gọn lại, tránh chữ dựng đứng/lẹm A4 ngang */
.monthly-grid .name-col{min-width:150px;max-width:180px}
.monthly-grid .office-col{min-width:76px;max-width:90px}
.monthly-grid .workmode-col{min-width:46px;max-width:56px}
.monthly-grid .stt-col{width:42px;min-width:42px}
.monthly-grid .sum-col{min-width:54px;max-width:64px;font-weight:700}
.monthly-grid .day-col{min-width:30px;max-width:36px;white-space:normal;word-break:normal;overflow-wrap:normal;font-size:11px;line-height:1.15}
.monthly-grid .day-col span{font-size:8px;color:#667085}
.monthly-grid th,.monthly-grid td{word-break:normal;overflow-wrap:normal}

@media print{
  @page{size:A4 landscape;margin:5mm 4mm}
  body{background:#fff!important;margin:0!important;font-size:7px!important;-webkit-print-color-adjust:exact;print-color-adjust:exact}
  .wrap{max-width:none!important;width:100%!important;padding:0!important;margin:0!important}
  .card{box-shadow:none!important;border-radius:0!important;padding:0!important;margin:0!important}
  body>h1,.card>h2{display:none!important}
  .print-title{display:block!important;text-align:center!important;margin:0 0 3mm!important}
  .print-title h1{font-size:12px!important;line-height:1.1!important;margin:0 0 1mm!important;font-weight:800!important}
  .print-title p{font-size:8px!important;line-height:1.1!important;margin:0!important}
  .table-scroll{overflow:visible!important;width:100%!important}
  .monthly-grid{width:100%!important;min-width:0!important;table-layout:fixed!important;border-collapse:collapse!important}
  .monthly-grid th,.monthly-grid td{border:0.5px solid #bdbdbd!important;padding:1px 0.6px!important;font-size:6px!important;line-height:1.05!important;text-align:center!important;vertical-align:middle!important;white-space:normal!important;word-break:normal!important;overflow-wrap:normal!important;color:#111!important}
  .monthly-grid .stt-col{width:5mm!important;min-width:0!important;max-width:none!important}
  .monthly-grid .sticky-name,.monthly-grid .name-col{position:static!important;left:auto!important;width:25mm!important;min-width:0!important;max-width:none!important;text-align:left!important;background:#fff!important;font-size:6px!important;font-weight:700!important;padding-left:1mm!important}
  .monthly-grid .office-col{width:13mm!important;min-width:0!important;max-width:none!important}
  .monthly-grid .workmode-col{width:7mm!important;min-width:0!important;max-width:none!important}
  .monthly-grid .day-col{width:5.05mm!important;min-width:0!important;max-width:none!important;font-size:5.4px!important;line-height:1.02!important;padding:0.7px 0.2px!important}
  .monthly-grid .day-col span{font-size:4.5px!important;display:block!important;line-height:1!important}
  .monthly-grid .sum-col{width:7.5mm!important;min-width:0!important;max-width:none!important;font-size:5.7px!important;font-weight:800!important}
  .monthly-grid .hourly-total-col{width:8.5mm!important}
  .monthly-grid .print-hide{display:none!important}
  .sunday-col{background:#f2f2f2!important}
}


/* v41.2 - bảng công tháng: xuống dòng ký hiệu, chú thích cuối bảng, ẩn VP khi đã lọc */
.monthly-grid .day-col{line-height:1.15;vertical-align:middle}
.monthly-legend,.monthly-note-list{font-size:12px;color:#475467;margin-top:8px;line-height:1.4}
.monthly-legend b,.monthly-note-list b{color:#1f2937}
.print-title p{margin:2px 0;color:#344054}
@media print{
  .monthly-grid .day-col{font-size:5.2px!important;line-height:1.02!important}
  .monthly-legend,.monthly-note-list{font-size:6px!important;line-height:1.2!important;margin-top:1.5mm!important;color:#111!important}
  .print-title p{font-size:7px!important;line-height:1.1!important;margin:0!important}
}


/* v41.4 - tăng cỡ in bảng công tháng, ghi chú xuống dòng từng nhân sự */
.monthly-note-items{margin-top:4px}
.monthly-note-item{margin:2px 0;white-space:normal}
@media print{
  @page{size:A4 landscape;margin:4mm 3mm}
  .print-title{margin:0 0 2.5mm!important}
  .print-title h1{font-size:14px!important;line-height:1.1!important;margin:0 0 1mm!important}
  .print-title p{font-size:8.5px!important;line-height:1.12!important;margin:0.2mm 0!important}
  .monthly-grid th,.monthly-grid td{font-size:6.8px!important;line-height:1.08!important;padding:1.2px 0.8px!important}
  .monthly-grid .sticky-name,.monthly-grid .name-col{width:27mm!important;font-size:6.8px!important;padding-left:1.1mm!important}
  .monthly-grid .office-col{width:14mm!important}
  .monthly-grid .workmode-col{width:7.5mm!important}
  .monthly-grid .day-col{width:5.4mm!important;font-size:5.9px!important;line-height:1.05!important;padding:0.8px 0.25px!important}
  .monthly-grid .day-col span{font-size:4.9px!important;line-height:1!important}
  .monthly-grid .sum-col{width:8.2mm!important;font-size:6.2px!important}
  .monthly-grid .hourly-total-col{width:9mm!important}
  .monthly-legend,.monthly-note-list{font-size:6.8px!important;line-height:1.25!important;margin-top:1.2mm!important}
  .monthly-note-items{margin-top:0.7mm!important}
  .monthly-note-item{margin:0.35mm 0!important;page-break-inside:avoid!important}
}

/* v42.0 - kiểm soát muộn/sớm, hạn mức chấm bổ sung, cài nhân viên gọn */
.quota-box{border:1px solid #dbeafe;background:#f8fbff;border-radius:14px;padding:12px;margin:12px 0}
.employee-settings-table input,.employee-settings-table select{min-width:120px;margin:4px 0 6px;padding:7px 8px;font-size:13px}
.employee-settings-table td{vertical-align:top}
button:disabled,.btn:disabled{opacity:.55;cursor:not-allowed;background:#98a2b3!important}
.policy-box{border:1px solid #d0d5dd;border-radius:12px;padding:12px;margin:10px 0;background:#fff}
.policy-box label{display:block;margin:8px 0}
.policy-box input[type=radio]{width:auto;margin-right:8px}
@media print{
  .quota-box,.print-hide{display:none!important}
  .late-report-table th,.late-report-table td{font-size:7px!important;padding:2px!important;border:0.5px solid #bbb!important}
}

/* v42.1 - báo cáo không tuân thủ và luồng phát sinh ngoài hạn mức */
.policy-disabled{opacity:.55;background:#f2f4f7;border-radius:10px;padding:8px;color:#667085}
.policy-forced{background:#fff7ed;border:1px solid #fed7aa;border-radius:10px;padding:8px;color:#9a3412;font-weight:700}
.policy-note{margin:8px 0 0;color:#b42318;font-weight:700}
.compliance-kpis{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:10px;margin:12px 0 16px}
.compliance-kpis div{border:1px solid #e5e7eb;border-radius:14px;background:#f8fafc;padding:12px}
.compliance-kpis span{display:block;color:#667085;font-size:13px}.compliance-kpis b{display:block;font-size:28px;margin-top:4px;color:#111827}
.compliance-table th,.compliance-table td{font-size:13px;vertical-align:top}.status-chip.light{background:#f2f4f7;color:#344054;border-color:#e5e7eb}.small{font-size:12px}
@media print{
  .compliance-kpis{grid-template-columns:repeat(4,1fr)!important;gap:2mm!important;margin:0 0 3mm!important}
  .compliance-kpis div{padding:2mm!important;border:0.5px solid #bbb!important}.compliance-kpis span{font-size:7px!important}.compliance-kpis b{font-size:12px!important}
  .compliance-table th,.compliance-table td{font-size:6.7px!important;padding:1.5px!important;border:0.5px solid #bbb!important;line-height:1.12!important}
}

/* v42.9 - chấm tăng ca riêng */
.btn.warn{background:#d97706;color:#fff}.btn.warn:hover{background:#b45309}.overtime-mini{margin-top:12px;border:1px solid #fed7aa;background:#fff7ed;border-radius:14px;padding:12px}.overtime-mini h3{margin:0 0 8px}
@media (min-width:701px){.employee-actions{grid-template-columns:repeat(3,1fr)}}

/* v42.18 - sửa lỗi SQL year_month; kế thừa sửa in bảng công tháng: cột ngày đều nhau, cột Công/Phép/KL gọn lại.
   Dùng selector mạnh hơn nth-child cũ để khi ẩn cột VP, ngày 01 không bị kéo rộng. */
@media print{
  .monthly-grid.monthly-grid{table-layout:fixed!important;width:100%!important;min-width:0!important}
  .monthly-grid th.day-col.day-col,.monthly-grid td.day-col.day-col{
    width:var(--monthly-day-w,6.8mm)!important;
    min-width:0!important;
    max-width:var(--monthly-day-w,6.8mm)!important;
    font-size:5.8px!important;
    line-height:1.04!important;
    padding:0.7px 0.2px!important;
  }
  .monthly-grid th.sum-col.sum-col,.monthly-grid td.sum-col.sum-col{
    width:var(--monthly-sum-w,6.2mm)!important;
    min-width:0!important;
    max-width:var(--monthly-sum-w,6.2mm)!important;
    font-size:6px!important;
    line-height:1.05!important;
    padding:0.8px 0.25px!important;
    white-space:normal!important;
  }
  .monthly-grid th.stt-col.stt-col,.monthly-grid td.stt-col.stt-col{width:5mm!important;min-width:0!important;max-width:5mm!important}
  .monthly-grid th.name-col.name-col,.monthly-grid td.name-col.name-col,.monthly-grid th.sticky-name.sticky-name,.monthly-grid td.sticky-name.sticky-name{width:27mm!important;min-width:0!important;max-width:27mm!important}
  .monthly-grid th.office-col.office-col,.monthly-grid td.office-col.office-col{width:13mm!important;min-width:0!important;max-width:13mm!important}
  .monthly-grid th.workmode-col.workmode-col,.monthly-grid td.workmode-col.workmode-col{width:7mm!important;min-width:0!important;max-width:7mm!important}
}

/* v42.22 - Trang nhân viên gọn hơn: nút nhỏ, nội dung tự xuống dòng, trạng thái ngắn */
.employee-list-card{padding:14px}
.employee-list-head{display:flex;justify-content:space-between;align-items:flex-start;gap:12px;flex-wrap:wrap;margin-bottom:8px}
.employee-list-head h2{margin:0 0 4px}
.employee-list-head>div:first-child{min-width:260px;flex:1}
.employee-kpis{display:flex;gap:6px;flex-wrap:wrap;align-items:center;justify-content:flex-end}
.employee-kpis span{background:#f3f6ff;color:#174ea6;border-radius:999px;padding:5px 8px;font-size:12px;line-height:1.15;white-space:nowrap}
.employee-toolbar{display:grid;grid-template-columns:minmax(230px,1fr) 190px;gap:8px;margin:10px 0}
.employee-toolbar input,.employee-toolbar select{margin:0;padding:8px 9px;font-size:14px}
.employee-clean-table{min-width:820px;white-space:normal;table-layout:auto}
.employee-clean-table th,.employee-clean-table td{padding:7px 6px;font-size:13px;line-height:1.22;vertical-align:middle;white-space:normal}
.employee-clean-table th{white-space:normal;font-size:12px;line-height:1.15}
.employee-clean-table b{overflow-wrap:anywhere}
.th-stack{display:inline-flex;flex-direction:column;gap:1px}.th-stack>span{font-weight:400;color:#667085;font-size:11px}
.employee-name-cell{min-width:145px;max-width:210px}.employee-subline{display:flex;gap:6px;flex-wrap:wrap;align-items:center;margin-top:2px}.emp-inline-id{color:#98a2b3;font-size:11px;white-space:nowrap}
.employee-role-cell{width:82px}.employee-office-cell{min-width:120px;max-width:175px;overflow-wrap:anywhere}.employee-note-line{margin-top:2px;color:#8a5a00}
.employee-leave-cell{min-width:92px}.employee-supp-cell{min-width:104px;max-width:138px}.employee-status-cell{width:86px}.employee-action-cell{width:138px}
.pill,.status-pill{display:inline-flex;align-items:center;justify-content:center;border-radius:999px;padding:3px 7px;font-size:11.5px;font-weight:700;line-height:1.1;white-space:nowrap}
.pill.neutral{background:#f2f4f7;color:#344054}.okpill{background:#dcfae6;color:#067647}.badpill{background:#fee4e2;color:#b42318}
.employee-row-actions{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:4px;min-width:132px;max-width:142px;align-items:stretch}.employee-row-actions .mini-form{display:block;margin:0}.employee-row-actions .btn.mini{display:block;width:100%;min-height:26px;padding:3px 5px;border-radius:6px;font-size:11.5px;font-weight:700;line-height:1.1;margin:0;white-space:nowrap}.btn.warn{background:#d97706;color:#fff}.btn.warn:hover{background:#b45309}
.employee-panel-row td{background:#fbfcff;border-bottom:1px solid #dbe7ff}.employee-panel{border:1px solid #dbe7ff;background:#fff;border-radius:12px;padding:14px;margin:2px 0}.employee-panel h3{margin:0 0 10px;font-size:17px}.employee-panel.slim{max-width:780px}.employee-panel .grid{align-items:end}.employee-panel input,.employee-panel select{margin-top:4px;margin-bottom:8px}.inactive-row{opacity:.72;background:#fafafa}
@media(max-width:760px){.employee-list-card{padding:10px}.employee-toolbar{grid-template-columns:1fr}.employee-kpis{justify-content:flex-start}.employee-clean-table{min-width:790px}.employee-clean-table th,.employee-clean-table td{padding:6px 5px;font-size:12px}.employee-row-actions{min-width:124px;max-width:128px}.employee-row-actions .btn.mini{width:100%;padding:3px 4px;font-size:11px}.employee-action-cell{width:128px}}

/* v43.0 - thông tin liên hệ nhân sự và phân hệ tiền lương */
.employee-contact-cell{min-width:150px;max-width:190px;overflow-wrap:anywhere;word-break:break-word}
.employee-contact-cell a{display:inline-block;max-width:100%;overflow-wrap:anywhere;text-decoration:none}
.employee-clean-table{min-width:980px}
.employee-action-cell{width:158px}
.employee-row-actions{grid-template-columns:repeat(2,minmax(0,1fr));min-width:152px;max-width:162px}
.employee-row-actions .btn.mini{white-space:normal;min-height:28px}

.payroll-page{padding:16px}
.payroll-head,.payslip-head{display:flex;justify-content:space-between;align-items:flex-start;gap:12px;flex-wrap:wrap}
.payroll-head h2,.payslip-head h2{margin:0 0 4px}
.payroll-filter{display:flex;gap:10px;align-items:end;flex-wrap:wrap;margin:12px 0}
.payroll-filter>div{min-width:160px}.payroll-filter label{display:block;margin-bottom:4px}.payroll-filter input,.payroll-filter select{margin:0}
.payroll-kpis{display:grid;grid-template-columns:repeat(5,minmax(135px,1fr));gap:8px;margin:12px 0}
.payroll-kpis>div{border:1px solid #dbe4f0;background:#f8fafc;border-radius:12px;padding:10px}
.payroll-kpis span{display:block;color:#667085;font-size:12px}.payroll-kpis b{display:block;font-size:19px;margin-top:3px;color:#111827}
.payroll-actions{display:flex;gap:7px;align-items:center;flex-wrap:wrap;margin:10px 0}.payroll-actions form{margin:0}
.payroll-period-form{grid-template-columns:minmax(220px,1.5fr) 150px minmax(220px,1.4fr) auto;align-items:end;border:1px solid #e5e7eb;border-radius:12px;padding:10px;background:#fbfcfe;margin:10px 0}
.payroll-empty,.payroll-add{border:1px dashed #cbd5e1;background:#f8fafc;border-radius:14px;padding:16px;margin:12px 0}
.payroll-table{min-width:1560px;table-layout:fixed;font-size:12px}
.payroll-table th,.payroll-table td{padding:6px;vertical-align:top;white-space:normal;line-height:1.2}
.payroll-table th:nth-child(1),.payroll-table td:nth-child(1){width:220px}
.payroll-table th:nth-child(2),.payroll-table td:nth-child(2){width:175px}
.payroll-table th:nth-child(3),.payroll-table td:nth-child(3){width:170px}
.payroll-table th:nth-child(4),.payroll-table td:nth-child(4){width:150px}
.payroll-table th:nth-child(5),.payroll-table td:nth-child(5){width:170px}
.payroll-table th:nth-child(6),.payroll-table td:nth-child(6){width:145px}
.payroll-table th:nth-child(7),.payroll-table td:nth-child(7){width:165px}
.payroll-table th:nth-child(8),.payroll-table td:nth-child(8){width:150px}
.payroll-table label{display:block;color:#667085;font-size:10.5px;font-weight:700;margin:4px 0 2px}
.payroll-table input,.payroll-table select,.payroll-table textarea{width:100%;min-width:0;margin:0 0 4px;padding:5px 6px;font-size:12px;border-radius:6px}
.payroll-table textarea{resize:vertical;min-height:48px}
.payroll-person{position:relative}.payroll-stt{display:inline-flex;align-items:center;justify-content:center;width:22px;height:22px;border-radius:999px;background:#eef2ff;color:#3730a3;font-weight:800;margin-bottom:4px}
.inline-two{display:grid;grid-template-columns:1fr 1fr;gap:5px}.inline-rate{display:grid;grid-template-columns:1fr 68px;align-items:center;gap:5px}.inline-rate label{margin:0}
.payroll-result{display:flex;justify-content:space-between;gap:8px;border-top:1px dashed #d0d5dd;margin-top:5px;padding-top:5px}.payroll-result span{color:#667085}.payroll-result b{white-space:nowrap}
.payroll-net{background:#f0fdf4!important}.payroll-net span{display:block;color:#667085;font-size:11px;margin-bottom:2px}.payroll-net b{display:block;margin-bottom:12px}.payroll-net strong{display:block;font-size:17px;color:#067647;white-space:nowrap}
.small-check{display:flex!important;gap:5px;align-items:flex-start;font-size:11px!important;color:#344054!important}.small-check input{width:auto!important;margin:1px 0 0!important}
.payroll-table .btn.mini{width:100%;margin:3px 0;padding:5px 7px;min-height:28px}
.payroll-table tfoot th{background:#eef2f7;font-size:13px}
.payroll-add .grid{align-items:end}

.payslip-page{max-width:980px;margin:0 auto}
.payslip-identity{display:grid;grid-template-columns:repeat(4,1fr);gap:8px;margin:12px 0}
.payslip-identity>div{border:1px solid #e5e7eb;border-radius:12px;padding:10px;background:#fafafa}
.payslip-identity span{display:block;color:#667085;font-size:12px}.payslip-identity b{display:block;margin-top:4px}
.payslip-net{border-radius:16px;padding:18px;text-align:center;background:#ecfdf3;border:1px solid #abefc6;margin:12px 0}
.payslip-net span{display:block;color:#067647;font-weight:800;font-size:13px}.payslip-net strong{display:block;font-size:30px;color:#05603a;margin-top:4px}
.payslip-grid{display:grid;grid-template-columns:1fr 1fr;gap:12px}.payslip-grid section{border:1px solid #e5e7eb;border-radius:14px;padding:12px}.payslip-grid h3{margin:0 0 8px;font-size:16px}
.payslip-grid dl{margin:0}.payslip-grid dl>div{display:flex;justify-content:space-between;gap:15px;padding:7px 0;border-bottom:1px dashed #e5e7eb}.payslip-grid dl>div:last-child{border-bottom:0}.payslip-grid dt{color:#475467}.payslip-grid dd{margin:0;font-weight:700;white-space:nowrap}.payslip-grid .total{font-weight:800;background:#f8fafc;margin:0 -6px;padding:8px 6px}
.payslip-summary{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin:12px 0}.payslip-summary>div{display:flex;justify-content:space-between;border:1px solid #d0d5dd;border-radius:12px;padding:12px}.payslip-summary .highlight{background:#f0fdf4;border-color:#bbf7d0}.payslip-summary span{color:#475467}.payslip-summary b{font-size:18px}.payslip-note{border-left:4px solid #94a3b8;background:#f8fafc;padding:10px 12px;border-radius:6px}.payslip-print-title{display:none}

@media(max-width:900px){.payroll-kpis{grid-template-columns:repeat(2,1fr)}.payroll-period-form{grid-template-columns:1fr 1fr}.payslip-identity{grid-template-columns:repeat(2,1fr)}}
@media(max-width:700px){.employee-clean-table{min-width:940px}.employee-row-actions{min-width:145px;max-width:150px}.payroll-page{padding:10px}.payroll-kpis{grid-template-columns:1fr 1fr}.payroll-kpis b{font-size:16px}.payroll-period-form{grid-template-columns:1fr}.payslip-grid,.payslip-summary{grid-template-columns:1fr}.payslip-net strong{font-size:24px}}

@media print{
  .payroll-page{padding:0!important}.payroll-page .print-title,.payslip-print-title{display:block!important}
  .payroll-kpis{grid-template-columns:repeat(5,1fr)!important;gap:2mm!important}.payroll-kpis>div{padding:1.5mm!important;border:0.5px solid #999!important}.payroll-kpis span{font-size:6px!important}.payroll-kpis b{font-size:8px!important}
  .payroll-table{min-width:0!important;width:100%!important;table-layout:fixed!important;font-size:5.8px!important}.payroll-table th,.payroll-table td{font-size:5.8px!important;padding:0.8px!important;border:0.5px solid #888!important;line-height:1.05!important}.payroll-table input,.payroll-table select,.payroll-table textarea,.payroll-table label,.payroll-table .muted,.payroll-stt{display:none!important}.payroll-result{border:0!important;margin:0!important;padding:0!important}.payroll-result span{font-size:5px!important}.payroll-net strong{font-size:7px!important}.payroll-net b{margin-bottom:2px!important}.payroll-table th:nth-child(n),.payroll-table td:nth-child(n){width:auto!important}
  .payslip-page{max-width:none!important;padding:0!important}.payslip-head{display:none!important}.payslip-identity{grid-template-columns:repeat(4,1fr)!important;gap:2mm!important}.payslip-identity>div{padding:2mm!important;border:0.5px solid #888!important}.payslip-net{padding:4mm!important}.payslip-net strong{font-size:20px!important}.payslip-grid{grid-template-columns:1fr 1fr!important;gap:3mm!important}.payslip-grid section{border:0.5px solid #888!important;padding:3mm!important}.payslip-summary{grid-template-columns:1fr 1fr!important}.payslip-note{font-size:9px!important}
}

/* v43.03 - lịch sử lương và cột tăng ca */
.salary-setting-head{display:flex;justify-content:space-between;gap:12px;align-items:flex-start;flex-wrap:wrap}.salary-current{background:#eef7ff;border:1px solid #c7e0ff;border-radius:12px;padding:8px 12px;min-width:150px;text-align:right}.salary-current span{display:block;color:#667085;font-size:11px}.salary-current b{display:block;font-size:18px;color:#174ea6;margin-top:2px}.salary-setting-form{margin-bottom:10px}.salary-note-field{grid-column:span 2}.salary-history{border-top:1px solid #e5e7eb;margin-top:8px;padding-top:10px}.salary-history h4{margin:0 0 8px}.salary-history table{min-width:1050px;font-size:12px}.salary-history th,.salary-history td{padding:6px;white-space:normal;vertical-align:top}.payroll-kpis{grid-template-columns:repeat(5,minmax(125px,1fr))}.payroll-table{min-width:1740px}.payroll-table th:nth-child(1),.payroll-table td:nth-child(1){width:215px}.payroll-table th:nth-child(2),.payroll-table td:nth-child(2){width:170px}.payroll-table th:nth-child(3),.payroll-table td:nth-child(3){width:165px}.payroll-table th:nth-child(4),.payroll-table td:nth-child(4){width:150px}.payroll-table th:nth-child(5),.payroll-table td:nth-child(5){width:145px}.payroll-table th:nth-child(6),.payroll-table td:nth-child(6){width:165px}.payroll-table th:nth-child(7),.payroll-table td:nth-child(7){width:140px}.payroll-table th:nth-child(8),.payroll-table td:nth-child(8){width:160px}.payroll-table th:nth-child(9),.payroll-table td:nth-child(9){width:145px}.payroll-overtime{background:#fffaf0!important}.payroll-overtime .payroll-result b{color:#b54708}@media(max-width:900px){.salary-note-field{grid-column:auto}.payroll-kpis{grid-template-columns:repeat(2,1fr)}}
.employee-salary-subsection{border-top:1px solid #dbe4f0;margin-top:16px;padding-top:16px}
.employee-salary-subsection .salary-setting-head h3{margin:0 0 4px}
.employee-salary-subsection .salary-setting-form{background:#f8fafc;border:1px solid #e5e7eb;border-radius:12px;padding:10px}


/* v43.04 - bảng lương mở riêng toàn màn hình và định dạng số theo nhóm nghìn */
.payroll-fullscreen-wrap{max-width:none!important;width:100%;padding:8px 10px 14px}
.payroll-fullscreen-page{margin:0;min-height:calc(100vh - 72px);border-radius:10px;padding:12px}
.payroll-window-bar{position:sticky;top:0;z-index:30;display:flex;justify-content:space-between;align-items:center;gap:12px;background:#fff;border:1px solid #e5e7eb;border-radius:10px;padding:7px 10px;margin-bottom:8px;box-shadow:0 2px 10px #00000010}
.payroll-window-actions{display:flex;gap:6px;align-items:center;flex-wrap:wrap}.payroll-window-actions .btn.mini{min-height:30px;padding:5px 9px;margin:0;font-size:12px}
.payroll-fullscreen-page .table-scroll{max-height:calc(100vh - 220px);overflow:auto;border:1px solid #e5e7eb;border-radius:9px}
.payroll-fullscreen-page .payroll-table{margin:0}
.payroll-fullscreen-page .payroll-table thead th{position:sticky;top:0;z-index:8;box-shadow:0 1px 0 #d0d5dd}
.payroll-table .money-input{text-align:right;font-variant-numeric:tabular-nums;font-weight:600;background:#fff}
.payroll-table .money-input:focus{background:#fffde8;border-color:#e0a800;outline:2px solid #f7d46a55}
@media(max-width:700px){.payroll-fullscreen-wrap{padding:5px}.payroll-window-bar{align-items:flex-start}.payroll-window-actions{justify-content:flex-end}.payroll-fullscreen-page .table-scroll{max-height:none}}
@media print{.payroll-fullscreen-wrap{padding:0!important}.payroll-fullscreen-page{min-height:0!important;margin:0!important;box-shadow:none!important}.payroll-fullscreen-page .table-scroll{max-height:none!important;border:0!important;overflow:visible!important}}

/* v43.05 - cài lương/BHXH theo ID nhân sự và lưu kết quả ghép */
.employee-clean-table{min-width:1040px}
.employee-salary-cell{min-width:130px;max-width:155px;font-variant-numeric:tabular-nums}
.employee-salary-cell>b{display:block;color:#174ea6;font-size:14px;margin-bottom:2px}
.employee-name-cell .pill{margin-top:4px}
.employee-row-actions{grid-template-columns:repeat(2,minmax(0,1fr));min-width:158px;max-width:168px}
.employee-row-actions .action-wide{grid-column:1/-1}
.employee-row-actions .salary-btn{background:#e8f1ff;color:#174ea6;border-color:#b8d2ff}
.employee-row-actions .salary-btn:hover{background:#dbeaff}
.employee-salary-subsection{border-top:0;margin-top:0;padding-top:0}
.employee-salary-subsection .money-input{text-align:right;font-variant-numeric:tabular-nums;font-weight:600}
.employee-salary-subsection .decimal-input{text-align:right;font-variant-numeric:tabular-nums}
.payroll-head-badges{display:flex;gap:6px;flex-wrap:wrap;justify-content:flex-end}
.compact-pill{padding:2px 6px;font-size:10.5px}
.payroll-fixed-name{display:block;margin:2px 0 5px;font-size:13px}
.payroll-source-value{display:flex;justify-content:space-between;gap:8px;border:1px solid #e5e7eb;background:#f8fafc;border-radius:7px;padding:5px 6px;margin:0 0 5px}
.payroll-source-value span{color:#667085;font-size:10.5px}
.payroll-source-value b{white-space:nowrap;font-variant-numeric:tabular-nums}
.payroll-linked-row .payroll-person{background:#f8fff9}
.payroll-unlinked-row .payroll-person{background:#fff4f2}
.payroll-table .decimal-input{text-align:right;font-variant-numeric:tabular-nums;background:#fff}
.payroll-table .decimal-input:focus{background:#fffde8;border-color:#e0a800;outline:2px solid #f7d46a55}
@media(max-width:760px){.employee-clean-table{min-width:1010px}.employee-row-actions{min-width:152px;max-width:158px}.employee-salary-cell{min-width:122px}}
@media print{
  .payroll-source-value{border:0!important;background:transparent!important;padding:0!important;margin:0!important}
  .payroll-source-value span{font-size:5px!important}
  .payroll-fixed-name{font-size:6px!important;margin:0!important}
  .payroll-head-badges{display:none!important}
}
.upgrade-map-table{min-width:1050px;font-size:12px}.upgrade-map-table th,.upgrade-map-table td{padding:7px;white-space:normal;vertical-align:top}

/* v43.06 - Admin điều chỉnh/tách đơn nghỉ phép */
.leave-approval-table .compact-action{display:inline-flex;align-items:center;justify-content:center;white-space:nowrap;min-height:30px;padding:5px 8px;font-size:12px}
.leave-edit-head{display:flex;align-items:flex-start;justify-content:space-between;gap:12px;flex-wrap:wrap}.leave-edit-head h2{margin-bottom:4px}
.leave-edit-summary{display:grid;grid-template-columns:repeat(4,minmax(145px,1fr));gap:9px;margin:12px 0}
.leave-edit-summary>div{border:1px solid #dfe5ec;border-radius:12px;background:#f8fafc;padding:10px}
.leave-edit-summary span{display:block;color:#667085;font-size:11px}.leave-edit-summary b{display:block;font-size:19px;margin:3px 0;color:#172b4d}.leave-edit-summary small{display:block;color:#667085;line-height:1.3}
.leave-split-box{border:1px solid #f2c66d;background:#fffaf0;border-radius:14px;padding:13px;margin:14px 0}
.leave-split-box h3{margin:0 0 4px;color:#8a4b00}.leave-split-form{align-items:end}.leave-split-form input[name="annual_days"]{font-size:18px;font-weight:800;text-align:center}
.leave-direct-edit{align-items:start}.leave-wide-field{grid-column:span 2}.leave-direct-edit textarea{min-height:76px}
@media(max-width:900px){.leave-edit-summary{grid-template-columns:repeat(2,1fr)}}
@media(max-width:650px){.leave-edit-summary{grid-template-columns:1fr}.leave-wide-field{grid-column:auto}.leave-edit-head .btn{width:100%}}

/* v43.07 - điều chỉnh chấm bổ sung có lịch sử */
.supplement-edit-grid{display:grid;grid-template-columns:minmax(0,1.6fr) minmax(300px,.8fr);gap:16px;align-items:start}
.supplement-edit-grid .card{margin:0}
.supplement-current-box{background:#f7f9fc;border:1px solid #dce3ec;border-radius:10px;padding:12px}
.supplement-history-list{display:grid;gap:10px}
.supplement-history-item{border:1px solid #dfe5ec;border-radius:10px;padding:10px;background:#fff}
.supplement-history-item .history-meta{display:flex;gap:8px;flex-wrap:wrap;margin-bottom:6px}
.supplement-actual-events{display:flex;gap:8px;flex-wrap:wrap}
.supplement-actual-events .event-chip{border:1px solid #d5dce5;border-radius:999px;padding:5px 9px;background:#fff}
@media(max-width:900px){.supplement-edit-grid{grid-template-columns:1fr}}

/* v43.09 - bảng lương dạng Excel, mỗi nhân sự một dòng */
.payroll-excel-form{margin:10px 0 0}
.payroll-excel-toolbar{position:sticky;top:48px;z-index:24;display:flex;justify-content:space-between;align-items:center;gap:12px;border:1px solid #d7dee8;border-bottom:0;background:#f8fafc;padding:7px 9px;border-radius:8px 8px 0 0}
.payroll-excel-toolbar>div{display:flex;gap:10px;align-items:center;flex-wrap:wrap}.payroll-excel-toolbar span{color:#667085;font-size:12px}
.payroll-fullscreen-page .payroll-excel-scroll{max-height:calc(100vh - 286px);border-radius:0 0 8px 8px;background:#fff}
.payroll-excel-table{min-width:2160px!important;width:max-content;table-layout:fixed!important;border-collapse:separate;border-spacing:0;margin:0;font-size:12px;line-height:1.15;font-variant-numeric:tabular-nums}
.payroll-excel-table th,.payroll-excel-table td{box-sizing:border-box;border-right:1px solid #cfd6df;border-bottom:1px solid #cfd6df;padding:4px 5px!important;height:38px;vertical-align:middle!important;white-space:nowrap!important;overflow:hidden;text-overflow:ellipsis}
.payroll-excel-table th:first-child,.payroll-excel-table td:first-child{border-left:1px solid #cfd6df}
.payroll-excel-table thead th{font-weight:800;text-align:center;color:#1f2937;background:#e9edf2;box-shadow:none!important}
.payroll-fullscreen-page .payroll-excel-table thead tr:first-child th{position:sticky;top:0!important;height:32px;z-index:14}
.payroll-fullscreen-page .payroll-excel-table thead tr:nth-child(2) th{position:sticky;top:32px!important;height:44px;z-index:13;white-space:normal!important;line-height:1.1}
.payroll-excel-table .group-salary{background:#e8eef8}.payroll-excel-table .group-overtime{background:#fff0cf}.payroll-excel-table .group-addition{background:#eaf5e8}.payroll-excel-table .group-deduction{background:#f7e8e6}.payroll-excel-table .group-result{background:#ddf4e7}.payroll-excel-table .group-company{background:#e8edf7}
.payroll-excel-table tbody tr:nth-child(even) td{background:#fbfcfe}.payroll-excel-table tbody tr:hover td{background:#f1f6ff}
.payroll-excel-table .sticky-col{position:sticky!important;background:#fff;z-index:7}
.payroll-excel-table .sticky-col-1{left:0;width:42px;min-width:42px;max-width:42px;text-align:center}
.payroll-excel-table .sticky-col-2{left:42px;width:190px;min-width:190px;max-width:190px}
.payroll-excel-table .sticky-col-3{left:232px;width:105px;min-width:105px;max-width:105px;box-shadow:2px 0 3px #00000012}
.payroll-excel-table thead .sticky-col{z-index:20!important;background:#e9edf2}
.payroll-excel-table thead tr:nth-child(2) .sticky-col{z-index:19!important}
.payroll-excel-table tbody tr:nth-child(even) .sticky-col{background:#fbfcfe}.payroll-excel-table tbody tr:hover .sticky-col{background:#f1f6ff}
.payroll-excel-table .payroll-linked-row .sticky-col-2{background:#f5fff7}.payroll-excel-table .payroll-unlinked-row .sticky-col-2{background:#fff1ef}
.payroll-excel-name{white-space:normal!important;line-height:1.18!important;overflow:visible!important}.payroll-excel-name>b{display:block;white-space:normal;max-height:30px;overflow:hidden}.payroll-person-meta{margin-top:2px;color:#667085;font-size:10.5px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.bad-text{color:#b42318;font-weight:700}
.payroll-map-details{margin-top:2px}.payroll-map-details summary{cursor:pointer;color:#175cd3;font-size:10.5px;list-style:none}.payroll-map-details summary::-webkit-details-marker{display:none}.payroll-map-details select{margin:3px 0 0!important;height:27px!important;padding:2px 4px!important;font-size:11px!important;background:#fff}
.payroll-excel-table .excel-input{display:block;width:100%!important;height:28px!important;min-height:28px!important;margin:0!important;padding:3px 5px!important;border:1px solid #d5aa00!important;border-radius:3px!important;background:#fffbe6!important;font-size:12px!important;line-height:1.1!important;color:#111827;box-shadow:none!important}
.payroll-excel-table .excel-input:focus{background:#fff7bf!important;border-color:#b88700!important;outline:2px solid #facc1555!important}
.payroll-excel-table .employee-name-input,.payroll-excel-table .note-input{text-align:left!important}.payroll-excel-table .note-input{font-size:11px!important}
.payroll-excel-table .money-input,.payroll-excel-table .decimal-input{text-align:right!important;font-weight:600}
.payroll-excel-table .money-cell,.payroll-excel-table .number-cell{text-align:right}.payroll-excel-table .number-cell{text-align:center}.payroll-excel-table .text-cell{white-space:normal!important;text-align:left}
.payroll-excel-table .formula-cell{background:#f7f9fc}.payroll-excel-table tbody tr:nth-child(even) .formula-cell{background:#f3f6fa}.payroll-excel-table .strong-cell{font-weight:800}.payroll-excel-table .overtime-cell{background:#fffaf0}.payroll-excel-table .result-cell{background:#f3fbf6;font-weight:700}.payroll-excel-table .net-cell{background:#e7f8ed!important;color:#067647;font-size:13px}.payroll-excel-table .company-cell{background:#f2f5fb;font-weight:800}
.payroll-excel-table td small{display:block;margin-top:2px;color:#667085;font-size:9.5px;text-align:right}
.payroll-excel-table .payroll-row-actions{display:grid;grid-template-columns:1fr;gap:3px;min-width:0;max-width:none}.payroll-excel-table .payroll-row-actions .btn.mini{width:100%;min-height:24px!important;height:24px;padding:2px 4px!important;margin:0!important;font-size:10.5px!important;border-radius:4px}
.payroll-excel-table tfoot th{position:sticky;bottom:0;z-index:12;height:34px!important;background:#dfe6ef!important;text-align:right;font-size:11px;white-space:nowrap!important}.payroll-excel-table tfoot .total-label{left:0!important;text-align:left!important;padding-left:12px!important;z-index:18!important;box-shadow:2px 0 3px #00000012}
.cell-center{text-align:center!important}
@media(max-width:700px){.payroll-excel-toolbar{top:42px;align-items:flex-start}.payroll-fullscreen-page .payroll-excel-scroll{max-height:none}.payroll-excel-table{min-width:2160px!important}}
@media print{
  @page{size:A4 landscape;margin:6mm}
  .payroll-kpis,.payroll-period-form,.payroll-excel-toolbar{display:none!important}
  .payroll-excel-scroll{overflow:visible!important;max-height:none!important}
  .payroll-excel-table{min-width:0!important;width:100%!important;table-layout:fixed!important;font-size:6.2px!important}
  .payroll-excel-table col{width:auto!important}
  .payroll-excel-table th,.payroll-excel-table td{position:static!important;height:auto!important;padding:.45mm .35mm!important;font-size:6.2px!important;line-height:1.05!important;border:.3px solid #777!important;white-space:normal!important;overflow:visible!important;text-overflow:clip!important}
  .payroll-excel-table thead th{background:#e9edf2!important;color:#000!important}
  .payroll-excel-table .sticky-col{position:static!important;box-shadow:none!important}
  .payroll-excel-table .excel-input{display:block!important;height:auto!important;min-height:0!important;padding:0!important;margin:0!important;border:0!important;background:transparent!important;outline:0!important;font-size:6.2px!important;font-weight:400!important;text-align:right!important}
  .payroll-excel-table .employee-name-input,.payroll-excel-table .note-input{text-align:left!important}
  .payroll-excel-table input[type="hidden"],.payroll-map-details,.payroll-person-meta,.print-hide-col{display:none!important}
  .payroll-excel-table tfoot th{position:static!important;font-size:6.2px!important}
  .payroll-excel-name>b{font-size:5.8px!important;max-height:none!important}
}
.payroll-excel-table th:nth-child(n),.payroll-excel-table td:nth-child(n){width:auto!important}
.payroll-excel-table .sticky-col-1{width:42px!important;min-width:42px!important;max-width:42px!important}
.payroll-excel-table .sticky-col-2{width:190px!important;min-width:190px!important;max-width:190px!important}
.payroll-excel-table .sticky-col-3{width:105px!important;min-width:105px!important;max-width:105px!important}

/* v43.13 - một nút Chấm công, hệ thống tự nhận diện Vào/Ra */
.auto-check-preview{display:flex;flex-direction:column;gap:3px;margin-top:12px;padding:10px 12px;border:1px solid #b2ddff;border-radius:12px;background:#eff8ff}
.auto-check-preview span{font-size:12px;color:#475467}.auto-check-preview b{font-size:18px;color:#175cd3}.auto-check-preview small{color:#667085}
.employee-actions.employee-actions-auto{grid-template-columns:minmax(240px,2fr) minmax(180px,1fr)}
.employee-actions-auto .auto-check-main{font-size:20px;background:#175cd3}
.employee-actions-auto .auto-check-main:hover{background:#1849a9}
.raw-attendance-table td:last-child .inline-action{margin-bottom:4px}
@media(max-width:700px){.employee-actions.employee-actions-auto{grid-template-columns:1fr}.auto-check-preview b{font-size:17px}}

/* v43.15 - chỉ rõ lượt chấm còn thiếu và bổ sung ngay từ công tháng */
.attendance-missing-box{margin:14px 0;border:1px solid #f5b7b1;border-radius:14px;background:#fff8f7;overflow:hidden}
.attendance-missing-head{display:flex;justify-content:space-between;gap:12px;padding:12px 14px;border-bottom:1px solid #f4d0cc;background:#fff1ef}
.attendance-missing-head b{display:block;color:#b42318;font-size:16px}.attendance-missing-head span{display:block;margin-top:2px;color:#667085;font-size:12px}
.attendance-missing-list{display:grid}.attendance-missing-item{display:flex;justify-content:space-between;align-items:center;gap:12px;padding:10px 14px;border-bottom:1px solid #f2e4e2}.attendance-missing-item:last-child{border-bottom:0}
.attendance-missing-item>div{min-width:0}.attendance-missing-item b{display:block;color:#344054}.attendance-missing-item span{display:block;margin-top:3px;color:#667085;font-size:12px;line-height:1.35}
.attendance-missing-label,.attendance-pending-label{display:inline-flex;align-items:center;border-radius:999px;padding:4px 8px;font-size:12px;font-weight:700;white-space:nowrap}
.attendance-missing-label{color:#b42318;background:#fee4e2;border:1px solid #fda29b}.attendance-pending-label{color:#93370d;background:#fef0c7;border:1px solid #fedf89}
.attendance-session-cell small{display:block;margin-top:4px;color:#667085;font-size:11px;white-space:nowrap}
.attendance-result-warnings{display:flex;flex-wrap:wrap;gap:4px;margin-top:5px}.attendance-result-warnings span{border-radius:999px;padding:2px 6px;font-size:10px;font-weight:700;white-space:nowrap}.attendance-result-warnings .missing{color:#b42318;background:#fee4e2}.attendance-result-warnings .pending{color:#93370d;background:#fef0c7}
.attendance-actions-cell{min-width:112px}.attendance-add-link{display:block!important;margin:0 0 5px!important;text-align:center;white-space:nowrap}.attendance-actions-cell .status-chip{display:block;margin-bottom:5px;text-align:center}
.supplement-prefill{margin:10px 0 14px;padding:10px 12px;border:1px solid #b2ddff;border-radius:10px;background:#eff8ff;color:#175cd3}
@media(max-width:700px){
  .attendance-missing-item{align-items:flex-start;flex-direction:column}.attendance-missing-item .btn{width:100%;text-align:center}
  .my-attendance-table{min-width:1120px}.attendance-missing-head{padding:10px 12px}.attendance-missing-item{padding:10px 12px}
}
@media print{.attendance-missing-box,.attendance-result-warnings,.attendance-actions-cell{display:none!important}}

/* v43.16 - Lịch sử chấm công thô của nhân viên */
.raw-attendance-stats b{font-size:18px}
.employee-raw-attendance-table{min-width:1160px}
.employee-raw-attendance-table td:nth-child(10){min-width:180px;white-space:normal}
@media(max-width:700px){.raw-attendance-stats{grid-template-columns:repeat(2,1fr)}.raw-attendance-stats>div:first-child{grid-column:1/-1}}
