:root{--c-primary: #0b6bcb;--c-primary-dark: #08508f;--c-primary-soft: #e7f1fc;--c-noi: #0b6bcb;--c-ngoai: #0f8a5f;--c-san: #c2185b;--c-nhi: #ef6c00;--c-bg: #f4f6f9;--c-surface: #ffffff;--c-border: #dbe2ea;--c-text: #172b3f;--c-muted: #64748b;--c-danger: #d32f2f;--c-warn: #b26a00;--c-ok: #1b7a3d;--radius: 8px;--shadow: 0 1px 3px rgba(16,32,52,.09), 0 4px 14px rgba(16,32,52,.05);--font: "Segoe UI", Roboto, "Helvetica Neue", Arial, "Noto Sans", sans-serif}*{box-sizing:border-box}html,body,#root{height:100%;margin:0}body{font-family:var(--font);font-size:14px;color:var(--c-text);background:var(--c-bg)}a{color:var(--c-primary);text-decoration:none}h1,h2,h3,h4{margin:0 0 .5rem;font-weight:600;line-height:1.3}h1{font-size:1.35rem}h2{font-size:1.1rem}h3{font-size:.98rem}.app{display:grid;grid-template-columns:232px 1fr;grid-template-rows:56px 1fr;height:100%}.topbar{grid-column:1 / -1;display:flex;align-items:center;gap:1rem;padding:0 1rem;background:var(--c-primary);color:#fff;box-shadow:var(--shadow);z-index:5}.topbar .brand{font-weight:700;font-size:1rem;letter-spacing:.2px}.topbar .brand small{display:block;font-weight:400;font-size:.68rem;opacity:.85}.topbar .spacer{flex:1}.topbar .who{text-align:right;line-height:1.2;font-size:.82rem}.topbar .who b{display:block;font-size:.9rem}.sidebar{background:var(--c-surface);border-right:1px solid var(--c-border);overflow-y:auto;padding:.5rem 0}.sidebar .group{padding:.6rem 1rem .25rem;font-size:.7rem;text-transform:uppercase;letter-spacing:.06em;color:var(--c-muted);font-weight:700}.sidebar button{display:flex;align-items:center;gap:.55rem;width:100%;text-align:left;padding:.5rem 1rem;border:0;background:none;cursor:pointer;font-size:.875rem;color:var(--c-text);font-family:inherit;border-left:3px solid transparent}.sidebar button:hover{background:var(--c-primary-soft)}.sidebar button.active{background:var(--c-primary-soft);border-left-color:var(--c-primary);color:var(--c-primary-dark);font-weight:600}.sidebar .ico{width:18px;text-align:center;opacity:.85}.main{overflow-y:auto;padding:1rem 1.25rem 3rem}.page-head{display:flex;align-items:flex-start;gap:1rem;margin-bottom:.9rem;flex-wrap:wrap}.page-head .sub{color:var(--c-muted);font-size:.82rem;margin-top:.15rem}.page-head .spacer{flex:1}.card{background:var(--c-surface);border:1px solid var(--c-border);border-radius:var(--radius);box-shadow:var(--shadow);margin-bottom:1rem}.card>header{padding:.65rem .9rem;border-bottom:1px solid var(--c-border);font-weight:600;display:flex;align-items:center;gap:.5rem}.card>header .spacer{flex:1}.card>.body{padding:.9rem}.card>.body.tight{padding:0}.grid{display:grid;gap:.75rem}.grid.c2{grid-template-columns:repeat(2,minmax(0,1fr))}.grid.c3{grid-template-columns:repeat(3,minmax(0,1fr))}.grid.c4{grid-template-columns:repeat(4,minmax(0,1fr))}@media(max-width:1100px){.grid.c4,.grid.c3{grid-template-columns:repeat(2,minmax(0,1fr))}}@media(max-width:720px){.app{grid-template-columns:0 1fr}.sidebar{display:none}.grid.c2,.grid.c3,.grid.c4{grid-template-columns:1fr}}label.field,div.field{display:block;font-size:.78rem;color:var(--c-muted);margin-bottom:.8rem}label.field>span.lbl,div.field>span.lbl{display:block;margin-bottom:.22rem;font-weight:600;color:#3c4b5c}label.field>span.lbl .req,div.field>span.lbl .req{color:var(--c-danger);margin-left:.15rem}label.field .unit,div.field .unit{font-weight:400;color:var(--c-muted)}.span2{grid-column:span 2}input,select,textarea,.fakeinput{width:100%;padding:.42rem .55rem;font:inherit;font-size:.875rem;color:var(--c-text);border:1px solid var(--c-border);border-radius:6px;background:#fff}input:focus,select:focus,textarea:focus{outline:2px solid var(--c-primary-soft);border-color:var(--c-primary)}input[readonly],.fakeinput{background:#f6f8fa;color:#46586b}textarea{resize:vertical;min-height:60px}.checks{display:flex;flex-wrap:wrap;gap:.35rem .9rem;padding:.2rem 0}.checks label{display:inline-flex;align-items:center;gap:.3rem;font-size:.85rem;color:var(--c-text)}.checks input{width:auto}button.btn{font:inherit;font-size:.85rem;font-weight:600;padding:.45rem .9rem;border-radius:6px;border:1px solid var(--c-border);background:#fff;color:var(--c-text);cursor:pointer;display:inline-flex;align-items:center;gap:.35rem}button.btn:hover:not(:disabled){background:#f2f6fb}button.btn:disabled{opacity:.5;cursor:not-allowed}button.btn.primary{background:var(--c-primary);border-color:var(--c-primary);color:#fff}button.btn.primary:hover:not(:disabled){background:var(--c-primary-dark)}button.btn.danger{background:#fff;border-color:#f0c2c2;color:var(--c-danger)}button.btn.danger:hover:not(:disabled){background:#fdf1f1}button.btn.sm{padding:.25rem .55rem;font-size:.78rem}button.btn.link{border:0;background:none;color:var(--c-primary);padding:.2rem}.btn-row{display:flex;gap:.5rem;flex-wrap:wrap}table.tbl{width:100%;border-collapse:collapse;font-size:.85rem}table.tbl th{text-align:left;background:#f7f9fc;color:#46586b;font-weight:600;padding:.5rem .6rem;border-bottom:1px solid var(--c-border);white-space:nowrap}table.tbl td{padding:.45rem .6rem;border-bottom:1px solid #eef2f6;vertical-align:top}table.tbl tbody tr:hover{background:#fafcff}table.tbl tr.clickable{cursor:pointer}table.tbl .num{text-align:right;font-variant-numeric:tabular-nums}table.tbl .nowrap{white-space:nowrap}.table-wrap{overflow-x:auto}.tag{display:inline-block;padding:.1rem .45rem;border-radius:999px;font-size:.72rem;font-weight:600;border:1px solid transparent;white-space:nowrap}.tag.NOI{background:#e7f1fc;color:var(--c-noi);border-color:#c7ddf6}.tag.NGOAI{background:#e6f5ee;color:var(--c-ngoai);border-color:#c2e6d5}.tag.SAN{background:#fce7ef;color:var(--c-san);border-color:#f6c7da}.tag.NHI{background:#fff0e0;color:var(--c-nhi);border-color:#ffd9b3}.tag.CHUNG{background:#eef1f5;color:#556;border-color:#dfe4ea}.tag.ok{background:#e6f5ea;color:var(--c-ok);border-color:#c3e7cd}.tag.warn{background:#fff5e0;color:var(--c-warn);border-color:#f5dfae}.tag.danger{background:#fdeaea;color:var(--c-danger);border-color:#f6c9c9}.tag.info{background:var(--c-primary-soft);color:var(--c-primary-dark);border-color:#c7ddf6}.note{padding:.5rem .7rem;border-radius:var(--radius);border:1px solid var(--c-border);background:#f8fafc;font-size:.85rem}.note.ok{background:#e6f5ea;border-color:#c3e7cd;color:var(--c-ok)}.note.warn{background:#fff5e0;border-color:#f5dfae;color:var(--c-warn)}.note.danger{background:#fdeaea;border-color:#f6c9c9;color:var(--c-danger)}.note b{color:inherit}.stat{background:var(--c-surface);border:1px solid var(--c-border);border-radius:var(--radius);padding:.8rem .9rem;box-shadow:var(--shadow)}.stat .k{font-size:.74rem;color:var(--c-muted);text-transform:uppercase;letter-spacing:.04em}.stat .v{font-size:1.6rem;font-weight:700;line-height:1.2;margin-top:.15rem}.stat .d{font-size:.78rem;color:var(--c-muted)}.empty{padding:1.6rem;text-align:center;color:var(--c-muted);font-size:.875rem}.muted{color:var(--c-muted)}.small{font-size:.78rem}.err{background:#fdeaea;border:1px solid #f6c9c9;color:#922;padding:.55rem .7rem;border-radius:6px;font-size:.84rem;margin-bottom:.75rem;white-space:pre-wrap}.ok-box{background:#e9f7ee;border:1px solid #bfe3cb;color:#1b5e35;padding:.55rem .7rem;border-radius:6px;font-size:.84rem;margin-bottom:.75rem}.banner-bhyt{background:#fff8e6;border:1px solid #f0dcae;color:#7a5a00;padding:.5rem .7rem;border-radius:6px;font-size:.82rem;margin-bottom:.75rem}.modal-bg{position:fixed;top:0;right:0;bottom:0;left:0;background:#0f1c2a6b;display:flex;align-items:flex-start;justify-content:center;padding:3rem 1rem;z-index:60;overflow-y:auto}.modal{background:#fff;border-radius:10px;box-shadow:0 18px 48px #0a162647;width:min(920px,100%);max-height:100%;display:flex;flex-direction:column}.modal.wide{width:min(1180px,100%)}.modal>header{padding:.8rem 1rem;border-bottom:1px solid var(--c-border);display:flex;align-items:center;gap:.6rem;font-weight:600}.modal>.body{padding:1rem;overflow-y:auto}.modal>footer{padding:.7rem 1rem;border-top:1px solid var(--c-border);display:flex;gap:.5rem;justify-content:flex-end}.toasts{position:fixed;right:1rem;bottom:1rem;display:flex;flex-direction:column;gap:.5rem;z-index:80}.toast{background:#1f2d3d;color:#fff;padding:.6rem .85rem;border-radius:7px;box-shadow:0 8px 22px #00000040;font-size:.85rem;max-width:380px}.toast.error{background:#a02020}.toast.success{background:#17663a}.login-wrap{display:flex;align-items:center;justify-content:center;height:100%;background:linear-gradient(140deg,#0b6bcb,#08508f 55%,#063a68);padding:1rem}.login-card{background:#fff;border-radius:12px;box-shadow:0 20px 55px #0000004d;width:min(400px,100%);padding:1.6rem}.login-card h1{text-align:center;color:var(--c-primary-dark)}.login-card .sub{text-align:center;color:var(--c-muted);font-size:.82rem;margin-bottom:1.2rem}.login-hint{margin-top:1rem;font-size:.74rem;color:var(--c-muted);border-top:1px solid var(--c-border);padding-top:.7rem;line-height:1.6}.login-hint code{background:#f2f5f9;padding:.05rem .3rem;border-radius:4px}.tabs{display:flex;gap:.25rem;border-bottom:1px solid var(--c-border);margin-bottom:.9rem;overflow-x:auto}.tabs button{font:inherit;font-size:.86rem;padding:.5rem .85rem;border:0;background:none;cursor:pointer;color:var(--c-muted);border-bottom:2px solid transparent;white-space:nowrap}.tabs button.active{color:var(--c-primary-dark);border-bottom-color:var(--c-primary);font-weight:600}.picker{position:relative}.picker-list{position:absolute;z-index:30;left:0;right:0;top:100%;background:#fff;border:1px solid var(--c-border);border-radius:6px;box-shadow:var(--shadow);max-height:300px;overflow-y:auto;margin-top:2px}.picker-list button{display:block;width:100%;text-align:left;border:0;background:none;padding:.4rem .6rem;font:inherit;font-size:.84rem;cursor:pointer}.picker-list button:hover,.picker-list button.hi{background:var(--c-primary-soft)}.picker-list .code{color:var(--c-muted);font-size:.74rem}.chips{display:flex;flex-wrap:wrap;gap:.3rem;margin-top:.3rem}.chip{background:var(--c-primary-soft);border:1px solid #c7ddf6;color:var(--c-primary-dark);border-radius:999px;padding:.1rem .5rem;font-size:.76rem;display:inline-flex;align-items:center;gap:.3rem}.chip button{border:0;background:none;cursor:pointer;color:inherit;font-size:.9rem;padding:0}.print-sheet{background:#fff;color:#000;font-family:Times New Roman,Times,serif;font-size:13pt;line-height:1.45;padding:12mm 14mm}.print-sheet .ph{display:flex;justify-content:space-between;gap:1rem;font-size:11pt}.print-sheet .ph .r{text-align:center}.print-sheet h2.title{text-align:center;font-size:15pt;text-transform:uppercase;margin:.8rem 0 .3rem;font-family:inherit}.print-sheet .subtitle{text-align:center;font-size:11pt;font-style:italic;margin-bottom:.8rem}.print-sheet .row{display:flex;gap:1.2rem;flex-wrap:wrap;margin-bottom:.2rem}.print-sheet .row>div{flex:1 1 45%}.print-sheet .lbl{font-weight:700}.print-sheet table{width:100%;border-collapse:collapse;font-size:11.5pt;margin:.5rem 0}.print-sheet table th,.print-sheet table td{border:1px solid #000;padding:3px 5px}.print-sheet table th{background:#eee}.print-sheet .sign-row{display:flex;justify-content:space-around;margin-top:1.4rem;text-align:center;gap:1rem;flex-wrap:wrap}.print-sheet .sign-row .b{min-width:150px}.print-sheet .sign-row .role{font-weight:700}.print-sheet .sign-row .hint{font-style:italic;font-size:10pt}.print-sheet .sign-row .name{margin-top:42px;font-weight:700}.print-sheet .sign-row .signed{margin-top:6px;font-size:9.5pt;color:#14532d}.print-sheet .sec-title{font-weight:700;text-transform:uppercase;margin:.7rem 0 .25rem}@media print{.app{display:block!important;height:auto;overflow:visible}.sidebar,.topbar,.modal>header,.modal>footer,.no-print,.tabs,.page-head .btn-row,button.btn{display:none!important}.main{overflow:visible;padding:0}body.modal-open .main>*:not(.modal-bg){display:none!important}body.modal-open .page-head{display:none!important}.modal-bg{position:static;background:none;padding:0;overflow:visible;display:block}.modal{box-shadow:none;width:100%;max-width:none;max-height:none;border-radius:0}.modal>.body{padding:0;overflow:visible}.card{border:0;box-shadow:none}body{background:#fff}@page{size:A4;margin:10mm}}
