:root{--red:#f21735;--red2:#c80e29;--bg:#f4f6f8;--card:#fff;--text:#18212b;--muted:#6d7985;--line:#e0e6eb;--green:#187448;--amber:#a96800;--danger:#a52234;--blue:#2368c4;--shadow:0 8px 28px rgba(17,31,45,.07);--radius:14px}*{box-sizing:border-box}html,body{margin:0;min-height:100%;font-family:Inter,Segoe UI,Arial,sans-serif;background:var(--bg);color:var(--text)}button,input,select,textarea{font:inherit}button{cursor:pointer}.hidden{display:none!important}.muted{color:var(--muted);font-size:13px}.login-shell{min-height:100vh;display:grid;place-items:center;padding:22px;background:radial-gradient(circle at 20% 10%,#fbe8eb 0,transparent 32%),linear-gradient(135deg,#f7f8fa,#eef1f4)}.login-card{width:min(430px,100%);background:#fff;border-radius:22px;padding:36px;box-shadow:0 25px 80px #2b0a1230}.login-card h1{margin:15px 0 4px}.login-card p{color:var(--muted);margin:0 0 24px}.brand-mark{width:64px;height:64px;border-radius:18px;background:linear-gradient(135deg,var(--red),#e24858);display:grid;place-items:center;color:#fff;font-weight:900;font-size:24px;box-shadow:0 10px 25px #b91f3250}.brand-mark.small{width:42px;height:42px;border-radius:12px;font-size:16px;box-shadow:none}.stack{display:grid;gap:14px}label{display:grid;gap:7px;font-size:13px;font-weight:650;color:#44505d}input,select,textarea{width:100%;border:1px solid #cfd6de;border-radius:9px;padding:10px 11px;background:#fff;color:var(--text);outline:none}input:focus,select:focus,textarea:focus{border-color:var(--red);box-shadow:0 0 0 3px #b91f3215}.btn{border:0;border-radius:9px;padding:10px 15px;font-weight:750;display:inline-flex;align-items:center;justify-content:center;gap:7px;text-decoration:none}.btn.primary{background:var(--red);color:#fff}.btn.primary:hover{background:var(--red2)}.btn.secondary{background:#252e38;color:#fff}.btn.ghost{background:#fff;border:1px solid var(--line);color:#34404d}.btn.wide{width:100%;padding:13px}.btn:disabled{opacity:.45;cursor:not-allowed}.form-message{font-size:13px;color:var(--danger)}.app-shell{display:flex;min-height:100vh}.sidebar{width:250px;background:#171d24;color:#fff;position:fixed;inset:0 auto 0 0;display:flex;flex-direction:column;padding:18px 14px;z-index:20}.brand{display:flex;align-items:center;gap:11px;padding:3px 7px 22px}.brand strong,.brand span{display:block}.brand span{font-size:12px;color:#aeb6bf;margin-top:2px}.sidebar nav{display:grid;gap:5px}.nav-item{width:100%;display:flex;align-items:center;gap:11px;text-align:left;border:0;background:transparent;color:#cbd2da;padding:11px 12px;border-radius:9px;font-weight:650}.nav-item span{width:20px;text-align:center}.nav-item:hover,.nav-item.active{background:#ffffff14;color:#fff}.nav-item.active{box-shadow:inset 3px 0 var(--red)}.sidebar-footer{margin-top:auto;border-top:1px solid #ffffff18;padding:16px 9px 2px;display:grid;gap:3px}.sidebar-footer small,.sidebar-footer span{color:#9ca7b2;font-size:12px}.link-btn{background:none;border:0;color:var(--red);padding:6px;text-align:left;font-weight:750}.sidebar .link-btn{color:#f29aa4}.main-shell{margin-left:250px;width:calc(100% - 250px);min-width:0}.topbar{height:76px;background:#fff;border-bottom:1px solid var(--line);display:flex;align-items:center;gap:14px;padding:0 25px;position:sticky;top:0;z-index:10}.topbar h2{font-size:20px;margin:0}.topbar p{font-size:12px;color:var(--muted);margin:3px 0 0}.top-actions{margin-left:auto;display:flex;align-items:center;gap:12px;color:var(--muted);font-size:13px}.icon-btn{display:none;border:0;background:#f1f3f5;border-radius:8px;padding:8px 10px}.content{padding:22px;max-width:1800px;margin:auto}.page{display:none}.page.active{display:block}.metric-grid{display:grid;grid-template-columns:repeat(4,minmax(160px,1fr));gap:13px;margin-bottom:18px}.metric{background:#fff;border:1px solid var(--line);border-radius:12px;padding:15px;box-shadow:var(--shadow);min-height:92px}.metric span{font-size:12px;color:var(--muted);display:block;margin-bottom:9px}.metric strong{font-size:20px;display:block}.metric.bad strong{color:var(--danger)}.grid-2{display:grid;grid-template-columns:1.2fr .8fr;gap:16px;margin-bottom:16px}.grid-2.align-start{align-items:start}.card{background:var(--card);border:1px solid var(--line);border-radius:var(--radius);padding:18px;box-shadow:var(--shadow);margin-bottom:16px}.card.narrow{max-width:720px}.card-head{display:flex;align-items:flex-start;justify-content:space-between;gap:15px;margin-bottom:15px}.card h3{margin:0;font-size:16px}.card-head p{margin:4px 0 0;color:var(--muted);font-size:12px}.chart-wrap{height:280px}.list{display:grid;gap:9px}.list-row{display:flex;justify-content:space-between;align-items:center;gap:12px;padding:11px;border:1px solid var(--line);border-radius:9px}.list-row span{font-size:13px}.list-row span small,.data-table td small{display:block;color:var(--muted);font-size:11px;margin-top:4px}.list-row strong{font-size:14px}.alert-row span{min-width:0}.toolbar{display:flex;gap:10px;align-items:end;flex-wrap:wrap;margin-bottom:15px}.toolbar label{min-width:145px}.filter-toolbar label{min-width:132px;flex:1}.form-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:13px}.form-grid .full{grid-column:1/-1}.table-scroll{width:100%;overflow:auto;border:1px solid var(--line);border-radius:10px}.data-table{width:100%;border-collapse:collapse;white-space:nowrap;font-size:12.5px}.data-table th{position:sticky;top:0;background:#f6f8fa;text-align:left;color:#596674;padding:11px 10px;border-bottom:1px solid var(--line);z-index:1}.data-table td{padding:10px;border-bottom:1px solid #edf0f2;vertical-align:top}.data-table tbody tr:hover{background:#fafbfc}.data-table.compact input,.data-table.compact select{min-width:100px;padding:7px;font-size:12px}.data-table.compact .wide-field{min-width:180px}.data-table .wrap-cell{white-space:normal;min-width:260px;max-width:420px;line-height:1.45}.money{text-align:right;font-variant-numeric:tabular-nums;font-weight:700}.positive{color:var(--green)}.negative{color:var(--danger)}.status{display:inline-flex;padding:4px 8px;border-radius:999px;background:#eef1f4;color:#55616d;font-size:11px;font-weight:750}.status.completed,.status.approved,.status.normal,.status.paid,.status.income{background:#e6f5ec;color:#187344}.status.warning,.status.notice,.status.partial,.status.pending,.status.unpaid{background:#fff3d8;color:#946000}.status.critical,.status.rejected,.status.void,.status.expense{background:#fde8eb;color:#a51f31}.card-actions{display:flex;justify-content:flex-end;margin-top:14px}.section-tabs{display:flex;gap:5px;margin-bottom:15px;border-bottom:1px solid var(--line)}.tab{border:0;background:transparent;padding:11px 14px;color:var(--muted);font-weight:700;border-bottom:2px solid transparent}.tab.active{color:var(--red);border-color:var(--red)}.cash-panel{display:none}.cash-panel.active{display:block}.summary-strip{display:grid;grid-template-columns:repeat(5,minmax(150px,1fr));gap:9px;margin:5px 0 15px}.summary-strip>div{background:#f7f9fa;border:1px solid var(--line);border-radius:10px;padding:12px}.summary-strip span{display:block;color:var(--muted);font-size:11px;margin-bottom:6px}.summary-strip strong{font-size:17px}.pager{display:flex;align-items:center;justify-content:flex-end;gap:9px;margin-top:14px}.pager label{display:flex;align-items:center;gap:7px}.pager select{width:auto;padding:8px}.pager span{min-width:145px;text-align:center;color:var(--muted);font-size:12px}.flag-list{display:flex;gap:4px;flex-wrap:wrap;max-width:250px;margin-top:6px}.flag{padding:3px 6px;border-radius:5px;background:#fff0d5;color:#8b5900;font-size:10px;white-space:normal}.row-actions{display:flex;gap:4px;flex-wrap:wrap;margin-top:6px}.row-actions button{border:1px solid var(--line);background:#fff;border-radius:6px;padding:5px 7px;font-size:10px;font-weight:750;color:var(--red)}.image-links{line-height:1.55}.image-links a{color:var(--blue);font-weight:700;text-decoration:none}.image-links small{display:block}.alert-box{padding:12px;border-radius:9px;margin-top:12px;font-size:13px}.alert-box.normal{background:#e8f6ed;color:#176a3d}.alert-box.warning{background:#fff3d9;color:#8c5900}.master-grid{display:grid;grid-template-columns:repeat(3,minmax(260px,1fr));gap:16px}.report-grid{display:grid;grid-template-columns:repeat(4,minmax(220px,1fr));gap:12px}.report-grid button{text-align:left;border:1px solid var(--line);background:#fff;border-radius:11px;padding:16px;font-weight:800;color:var(--text)}.report-grid button:hover{border-color:var(--red);box-shadow:var(--shadow)}.report-grid span{display:block;margin-top:6px;color:var(--muted);font-size:12px;font-weight:400}.quick-link-cell{display:flex;gap:6px;align-items:center;min-width:420px}.quick-link-cell input{font-size:11px;min-width:240px;background:#f7f8fa}.check-line{display:flex!important;grid-template-columns:auto 1fr;align-items:center;justify-content:flex-start}.check-line input{width:auto}.toast-container{position:fixed;right:20px;bottom:20px;display:grid;gap:8px;z-index:100}.toast{background:#18212b;color:#fff;padding:12px 15px;border-radius:9px;box-shadow:0 10px 30px #0003;max-width:360px;font-size:13px}.toast.error{background:#9e2030}.toast.success{background:#197344}.modal-dialog{border:0;border-radius:16px;padding:0;box-shadow:0 25px 80px #0004;width:min(760px,calc(100% - 28px))}.modal-dialog::backdrop{background:#10182099;backdrop-filter:blur(3px)}.modal-dialog form{padding:22px}.dialog-head{display:flex;justify-content:space-between;gap:12px;margin-bottom:16px}.dialog-head h3{margin:0}.dialog-head p{margin:4px 0 0;color:var(--muted);font-size:12px}.dialog-head .icon-btn{display:block}.dialog-actions{display:flex;justify-content:flex-end;gap:8px;margin-top:8px}.photo-edit-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:9px;background:#f7f9fa;padding:12px;border-radius:10px}.current-images{padding:10px;border:1px dashed var(--line);border-radius:10px}.inline{display:flex;gap:8px;align-items:center}
@media(max-width:1200px){.metric-grid{grid-template-columns:repeat(3,1fr)}.master-grid,.report-grid{grid-template-columns:repeat(2,1fr)}.summary-strip{grid-template-columns:repeat(3,1fr)}}@media(max-width:900px){.sidebar{transform:translateX(-100%);transition:.2s}.sidebar.open{transform:translateX(0);box-shadow:15px 0 50px #0005}.main-shell{margin-left:0;width:100%}.icon-btn{display:block}.grid-2{grid-template-columns:1fr}.top-actions #todayText{display:none}.quick-link-cell{min-width:330px}.photo-edit-grid{grid-template-columns:1fr 1fr}}@media(max-width:620px){.content{padding:12px}.topbar{padding:0 12px;height:68px}.topbar .btn{display:none}.metric-grid{grid-template-columns:repeat(2,1fr);gap:9px}.metric{padding:12px;min-height:82px}.metric strong{font-size:16px}.form-grid{grid-template-columns:1fr}.form-grid .full{grid-column:auto}.master-grid,.report-grid,.summary-strip{grid-template-columns:1fr}.card{padding:13px;border-radius:11px}.card-head{flex-direction:column}.toolbar label{flex:1;min-width:130px}.toolbar .btn{flex:1}.pager{justify-content:center;flex-wrap:wrap}.pager label{width:100%;justify-content:center}.quick-link-cell{min-width:280px;flex-direction:column;align-items:stretch}.quick-link-cell input{min-width:0}.photo-edit-grid{grid-template-columns:1fr}.dialog-actions .btn{flex:1}.login-card{padding:27px}}

/* v1.3 - Nhận diện thương hiệu và báo cáo cuối ngày */
.login-logo{display:block;width:190px;max-height:150px;object-fit:contain;margin:0 auto 8px}.login-card{text-align:center}.login-card form{text-align:left}.sidebar-logo{width:62px;height:52px;object-fit:contain;flex:0 0 auto;filter:drop-shadow(0 4px 8px #0004)}.brand{padding-top:0}.brand strong{font-size:12px;letter-spacing:.3px}.brand span{color:#d9dee4}.daily-preview-empty{border:1px dashed var(--line);border-radius:11px;padding:28px;text-align:center;color:var(--muted)}.daily-report-metrics{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:9px}.daily-report-metrics>div,.daily-ops-box{border:1px solid var(--line);border-radius:10px;padding:11px;background:#fafbfc}.daily-report-metrics span{display:block;color:var(--muted);font-size:11px;margin-bottom:6px}.daily-report-metrics b{font-size:15px}.daily-ops-grid{display:grid;grid-template-columns:1fr 1fr;gap:9px;margin-top:9px}.daily-ops-box h4{margin:0 0 5px}.daily-ops-box p,.daily-ops-box small{display:block;color:var(--muted);font-size:11px;margin:4px 0}.daily-ops-box b{font-size:16px}.closing-success{margin-top:14px;background:#e9f7ee;border:1px solid #bee4cd;border-radius:11px;padding:14px;color:#145f38}.closing-success p{margin:5px 0 12px}.closing-history-head{align-items:end}.closing-history-filter label{min-width:135px}.closing-actions{display:flex;gap:5px;flex-wrap:wrap;min-width:250px}.btn-mini{border:1px solid var(--line);background:#fff;color:#34404d;border-radius:6px;padding:6px 8px;text-decoration:none;font-size:10px;font-weight:750;white-space:nowrap}.btn-mini.primary{background:var(--red);color:#fff;border-color:var(--red)}
@media(max-width:760px){.login-logo{width:155px}.sidebar-logo{width:55px}.daily-report-metrics,.daily-ops-grid{grid-template-columns:1fr}.closing-history-head{display:block}.closing-history-filter{margin-top:12px;flex-wrap:wrap}.closing-history-filter label{flex:1;min-width:130px}}

/* v1.4 */
.btn.danger{background:#a52234;color:#fff}.status.cancelled{background:#eceff2;color:#66717c;text-decoration:line-through}.cancelled-row{opacity:.62;background:#f7f8f9}.total-row{background:#fff7f8;border-color:#f3bbc4}.auto-balance-note{display:flex;flex-direction:column;gap:5px;padding:12px 14px;border:1px solid #f0c1c8;border-radius:10px;background:#fff7f8;color:#4e2530}.auto-balance-note span{font-size:12px;color:var(--muted)}.report-generated-time{padding:9px 11px;margin-bottom:9px;border-radius:8px;background:#eef5ff;color:#315d93;font-size:12px}.daily-report-metrics .wide-metric{grid-column:span 2;background:#fff7f8;border-color:#f0c1c8}.data-table .money-row{min-width:135px;text-align:right;font-weight:700}.dialog-actions .danger{margin-right:auto}
@media(max-width:760px){.daily-report-metrics .wide-metric{grid-column:span 1}.auto-balance-note{padding:11px}}

/* v1.5 - Xóa dữ liệu vận hành để nhập lại */
.danger-zone{border-color:#efb8c1}.reset-scope{display:grid;gap:12px;padding:13px;border:1px solid var(--line);border-radius:10px;background:#fafbfc}.reset-date-range{flex-wrap:wrap}.reset-date-range label{min-width:180px;flex:1}.reset-types{display:grid;gap:11px;margin:0;padding:14px;border:1px solid var(--line);border-radius:10px}.reset-types legend{padding:0 7px;font-size:13px;font-weight:800;color:#44505d}.reset-preview-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:9px}.reset-preview-grid>div{border:1px solid var(--line);background:#fafbfc;border-radius:10px;padding:12px}.reset-preview-grid span{display:block;color:var(--muted);font-size:11px;margin-bottom:6px}.reset-preview-grid b{font-size:16px}.guide-list{margin:15px 0;padding-left:22px;color:#4f5b66}.guide-list li{margin:10px 0;line-height:1.45}
@media(max-width:620px){.reset-preview-grid{grid-template-columns:1fr}.reset-date-range{display:grid}.reset-date-range label{min-width:0}}

/* v1.7 - Công, sản lượng, lương hiện tại và link cá nhân */
.payroll-panel{display:none}.payroll-panel.active{display:block}.payroll-tabs{overflow-x:auto;white-space:nowrap}.payroll-tabs .tab{flex:0 0 auto}.payroll-config-grid{padding:14px 0}.payroll-panel details{border:1px solid var(--line);border-radius:11px;padding:0 14px;margin-top:12px;background:#fafbfc}.payroll-panel details summary{cursor:pointer;padding:13px 0;font-weight:800;color:#3d4854}.component-fieldset{border:1px solid var(--line);border-radius:10px;padding:12px}.component-fieldset legend{font-size:12px;font-weight:800;padding:0 7px}.component-checks{display:grid;grid-template-columns:repeat(3,minmax(180px,1fr));gap:9px}.component-checks .check-line{padding:9px 10px;border:1px solid var(--line);border-radius:8px;background:#fff;font-size:12px}.dialog-components{grid-template-columns:repeat(2,minmax(190px,1fr));margin:13px 0}.payroll-daily-table input{min-width:85px}.payroll-daily-table .wide-field{display:block;margin-bottom:5px;min-width:190px}.payroll-daily-table td:first-child{position:sticky;left:0;background:#fff;z-index:1;min-width:190px}.payroll-daily-table th:first-child{left:0;z-index:2}.payroll-table td,.payroll-table th{font-size:11.5px}.payroll-table .money{min-width:110px}.payroll-period-actions{margin:12px 0;flex-wrap:wrap}.payroll-period-actions .btn:disabled,.btn-mini:disabled{opacity:.45;cursor:not-allowed}.new-employee-field.hidden{display:none}.payroll-panel small{display:block;color:var(--muted);margin-top:4px}.status.draft{background:#eef1f4;color:#596674}.status.confirmed{background:#e8f0ff;color:#315d93}.status.partially_paid{background:#fff3d8;color:#946000}.payroll-panel select[multiple]{min-height:125px}.guide-list p{margin:0 0 10px;line-height:1.5;color:#52606c}.payroll-panel .summary-strip{grid-template-columns:repeat(auto-fit,minmax(145px,1fr))}
@media(max-width:900px){.component-checks{grid-template-columns:repeat(2,minmax(160px,1fr))}}
@media(max-width:620px){.component-checks,.dialog-components{grid-template-columns:1fr}.payroll-period-actions .btn{flex:1 1 46%}.payroll-panel details{padding:0 11px}.payroll-tabs{margin-left:-12px;margin-right:-12px;padding-left:12px}}

/* v1.8 - Nhập sản lượng từ Excel và quản lý đơn trùng */
.excel-import-card{border-color:#d8e4ef}.excel-import-toolbar .excel-file-label{min-width:260px;flex:1}.excel-mapping-panel{margin-top:14px;padding:14px;border:1px solid var(--line);border-radius:11px;background:#fafbfc}.excel-mapping-panel h4{margin:0;font-size:14px}.excel-mapping-panel .compact-head{align-items:center;margin-bottom:8px}.excel-preview-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(145px,1fr));gap:9px;margin-top:13px}.excel-preview-grid>div{border:1px solid var(--line);background:#fff;border-radius:10px;padding:11px}.excel-preview-grid span{display:block;color:var(--muted);font-size:11px;margin-bottom:5px}.excel-preview-grid b{font-size:15px}.excel-preview-table{margin-top:12px}.excel-import-warning{margin-top:10px;padding:10px 12px;border-radius:9px;background:#fff3d8;color:#8a5c08;font-size:12px}.excel-import-success{margin-top:10px;padding:10px 12px;border-radius:9px;background:#e8f6ed;color:#176a3d;font-size:12px}.status.duplicate_pending{background:#fff3d8;color:#946000}.status.manual_approved{background:#e6f5ec;color:#187344}.duplicate-source{min-width:210px;white-space:normal}.duplicate-row-pending{background:#fffdf6}.excel-file-name{word-break:break-all}.batch-new-employees{white-space:normal;min-width:190px;max-width:320px}
@media(max-width:620px){.excel-import-toolbar .excel-file-label{min-width:100%}.excel-mapping-panel{padding:11px}.excel-preview-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}

/* v1.9.0 - Module đối soát vận chuyển tích hợp */
.reconcile-main-page{padding:0!important;background:#f7f9fc;overflow:hidden}
.reconcile-main-head{display:flex;align-items:center;justify-content:space-between;gap:16px;padding:16px 18px;background:#fff;border:1px solid #e6ebf2;border-radius:18px 18px 0 0}
.reconcile-main-head h3{margin:0 0 4px;font-size:18px}
.reconcile-main-head p{margin:0;color:#64748b;font-size:13px}
.reconcile-frame{display:block;width:100%;height:calc(100vh - 195px);min-height:680px;border:1px solid #e6ebf2;border-top:0;border-radius:0 0 18px 18px;background:#f7f9fc}
@media(max-width:800px){.reconcile-main-head{align-items:flex-start;flex-direction:column}.reconcile-frame{height:calc(100vh - 220px);min-height:620px}}
