:root{
  --bg:#f3f5f4; --panel:#fff; --ink:#1d2622; --muted:#6b7772; --line:#e2e7e4; --soft:#f7f9f8;
  --brand:#1f5e4b; --brand2:#2f7d64; --danger:#d9534f; --warn:#d99a1e; --ok:#2f9e5f; --blue:#3b82d6;
  --radius:10px; --shadow:0 1px 2px rgba(0,0,0,.06),0 2px 8px rgba(0,0,0,.04);
  font-family: "Segoe UI", system-ui, -apple-system, Roboto, "Helvetica Neue", Arial, sans-serif;
}
*{box-sizing:border-box}
body{margin:0;background:var(--bg);color:var(--ink);font-size:1rem}
button,input,select,textarea{font:inherit;color:inherit}
a{color:var(--blue)}
.hidden{display:none!important}

/* ---------- topbar */
.top{position:sticky;top:0;z-index:20;display:flex;align-items:center;gap:6px;padding:8px 14px;
  background:var(--brand);color:#fff;overflow-x:auto}
.top .logo{font-weight:700;margin-right:10px;white-space:nowrap}
.top .tab{padding:6px 12px;border-radius:7px;color:#d9eee6;text-decoration:none;white-space:nowrap}
.top .tab.on,.top .tab:hover{background:rgba(255,255,255,.14);color:#fff}
.top .sp{flex:1}
.top .ico{position:relative;background:none;border:0;color:#fff;cursor:pointer;padding:6px 8px;border-radius:7px;white-space:nowrap}
.top .ico:hover{background:rgba(255,255,255,.14)}
.badge{position:absolute;top:0;right:0;background:#ef4444;color:#fff;border-radius:9px;font-size:0.7143rem;padding:0 5px}

/* ---------- toolbar */
.bar{display:flex;flex-wrap:wrap;gap:8px;align-items:center;padding:10px 14px;background:var(--panel);border-bottom:1px solid var(--line)}
.bar input[type=search]{min-width:240px;flex:1;max-width:380px}
input,select,textarea{border:1px solid var(--line);border-radius:7px;padding:7px 9px;background:#fff;outline:none}
input:focus,select:focus,textarea:focus{border-color:var(--brand2);box-shadow:0 0 0 3px color-mix(in srgb,var(--brand2) 12%,transparent)}
textarea{width:100%;resize:vertical}
.btn{border:1px solid var(--line);background:#fff;border-radius:7px;padding:7px 12px;cursor:pointer;white-space:nowrap}
.btn:hover{background:var(--soft)}
.btn.primary{background:var(--brand2);border-color:var(--brand2);color:#fff}
.btn.primary:hover{background:var(--brand)}
.btn.danger{background:var(--danger);border-color:var(--danger);color:#fff}
.btn.success{background:var(--ok);border-color:var(--ok);color:#fff}
.btn.warning{background:#f0ad2b;border-color:#f0ad2b;color:#fff}
.btn.ghost{background:transparent}
.btn.sm{padding:3px 8px;font-size:0.8571rem}
.btn:disabled{opacity:.45;cursor:not-allowed}
label.chk{display:flex;gap:5px;align-items:center;cursor:pointer;white-space:nowrap}

/* ---------- board */
.board{display:flex;gap:12px;padding:14px;overflow-x:auto;align-items:flex-start;height:calc(100vh - 108px)}
.col{flex:0 0 290px;background:#e9edeb;border-radius:var(--radius);display:flex;flex-direction:column;max-height:100%}
.col-h{padding:15px 14px;min-height:54px;font-size:1.1786rem;border-radius:var(--radius) var(--radius) 0 0;color:#fff;font-weight:600;display:flex;justify-content:space-between;align-items:center}
.col-h small{font-weight:500;opacity:.92}
.col-sum{font-size:0.8571rem;padding:4px 12px;color:var(--muted);background:#f1f4f2}
.col-b{padding:8px;overflow-y:auto;display:flex;flex-direction:column;gap:8px;min-height:60px}
.col.drop .col-b{background:color-mix(in srgb,var(--brand) 14%,#fff);outline:2px dashed var(--brand2);outline-offset:-4px}
.card{background:#fff;border-radius:8px;padding:10px;box-shadow:var(--shadow);cursor:pointer;border-left:3px solid transparent}
.card:hover{box-shadow:0 2px 10px rgba(0,0,0,.1)}
.card.dupe{border-left-color:var(--danger)}
.card .t{font-size:0.9643rem;line-height:1.4;word-break:break-word}
.card .m{display:flex;flex-wrap:wrap;gap:8px;margin-top:8px;color:var(--muted);font-size:0.8571rem;align-items:center}
.card .code{font-size:0.7857rem;color:var(--muted)}
.pill{display:inline-block;padding:1px 7px;border-radius:10px;font-size:0.7857rem;font-weight:600;white-space:nowrap}
.pill.red{background:#fde8e7;color:#b5302b}.pill.green{background:#e3f5ea;color:#1f7a45}
.pill.gray{background:#eef0ef;color:#5b6661}.pill.blue{background:#e5effb;color:#2563a8}.pill.amber{background:#fdf2dc;color:#94650b}
.av{display:inline-flex;width:22px;height:22px;border-radius:50%;background:#7cc49b;color:#fff;font-size:0.7143rem;align-items:center;justify-content:center;font-weight:700}
.more{text-align:center;color:var(--muted);font-size:0.8571rem;padding:6px}

/* ---------- drawer */
.shade{position:fixed;inset:0;background:rgba(15,25,20,.35);z-index:40}
.drawer{position:fixed;top:0;right:0;bottom:0;width:min(860px,100%);background:var(--panel);z-index:41;display:flex;flex-direction:column;box-shadow:-6px 0 24px rgba(0,0,0,.15)}
.dr-h{display:flex;gap:10px;align-items:center;padding:12px 16px;border-bottom:1px solid var(--line)}
.dr-b{flex:1;overflow-y:auto;padding:16px;display:grid;grid-template-columns:minmax(0,1fr) 250px;gap:18px}
.dr-b h2{margin:4px 0 6px;font-size:1.3571rem;line-height:1.35}
.sec{margin-top:18px}
.sec>h4{margin:0 0 8px;font-size:0.9286rem;color:var(--muted);text-transform:uppercase;letter-spacing:.03em;display:flex;justify-content:space-between;align-items:center}
.actbox{background:var(--soft);border:1px solid var(--line);border-radius:var(--radius);padding:12px;display:flex;flex-wrap:wrap;gap:8px;align-items:center}
.warnbox{background:#fff4f3;border:1px solid #f3c4c1;color:#8f2a26;border-radius:8px;padding:9px 11px;margin-top:10px}
.infobox{background:color-mix(in srgb,var(--brand2) 7%,#fff);border:1px solid color-mix(in srgb,var(--brand2) 23%,#fff);border-radius:8px;padding:9px 11px;margin-top:10px}
.grid2{display:grid;grid-template-columns:1fr 1fr;gap:10px}
.fld label{display:block;font-size:0.8571rem;color:var(--muted);margin-bottom:3px}
.fld input,.fld select,.fld textarea{width:100%}
.fld .ro{padding:7px 0;font-weight:500;word-break:break-word}
.req{color:var(--danger)}
.files{display:flex;flex-wrap:wrap;gap:8px}
.file{width:132px;border:1px solid var(--line);border-radius:8px;overflow:hidden;background:#fff;font-size:0.7857rem;position:relative}
.file .th{height:86px;background:#eef1ef;display:flex;align-items:center;justify-content:center;cursor:pointer;overflow:hidden}
.file .th img{width:100%;height:100%;object-fit:cover}
.file .nm{padding:4px 6px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.file .x{position:absolute;top:2px;right:2px;background:rgba(255,255,255,.9);border:0;border-radius:4px;cursor:pointer;font-size:0.7857rem}
.drop{border:1.5px dashed #b9c6bf;border-radius:8px;padding:12px;text-align:center;color:var(--muted);cursor:pointer;margin-top:8px}
.drop.on{background:color-mix(in srgb,var(--brand2) 8%,#fff);border-color:var(--brand2)}
.row{display:flex;gap:8px;align-items:center;padding:5px 0;border-bottom:1px solid #f0f2f1}
.row .grow{flex:1;word-break:break-word}
.done .grow{text-decoration:line-through;color:var(--muted)}
.prog{height:5px;background:#e6ebe8;border-radius:3px;overflow:hidden;margin-bottom:6px}
.prog>i{display:block;height:100%;background:var(--ok)}
.tabs{display:flex;gap:4px;border-bottom:1px solid var(--line);margin-bottom:10px}
.tabs button{border:0;background:none;padding:8px 10px;cursor:pointer;color:var(--muted);border-bottom:2px solid transparent}
.tabs button.on{color:var(--brand2);border-bottom-color:var(--brand2);font-weight:600}
.cmt{display:flex;gap:10px;margin-bottom:12px}
.cmt .bub{background:var(--soft);border-radius:8px;padding:8px 10px;flex:1}
.cmt .who{font-weight:600;font-size:0.9286rem}
.cmt .when{font-size:0.7857rem;color:var(--muted)}
.cmt img{max-width:200px;max-height:150px;border-radius:6px;margin-top:6px;cursor:pointer;display:block}
.act{font-size:0.8929rem;padding:6px 0;border-bottom:1px solid #f0f2f1}
.act .when{color:var(--muted);font-size:0.7857rem}
.side .blk{background:var(--soft);border-radius:8px;padding:10px;margin-bottom:10px}
.side .blk label{font-size:0.8571rem;color:var(--muted);display:block;margin-bottom:4px}
.side select,.side input{width:100%}

/* ---------- modal */
.modal{position:fixed;inset:0;z-index:60;display:flex;align-items:flex-start;justify-content:center;padding:6vh 12px;background:rgba(15,25,20,.4);overflow-y:auto}
.modal .box{background:#fff;border-radius:12px;width:min(620px,100%);padding:18px;box-shadow:0 10px 40px rgba(0,0,0,.25)}
.modal h3{margin:0 0 12px}
.modal .foot{display:flex;justify-content:flex-end;gap:8px;margin-top:16px}

/* ---------- pages */
.page{padding:16px;max-width:1200px;margin:0 auto}
.panel{background:#fff;border-radius:var(--radius);box-shadow:var(--shadow);padding:16px;margin-bottom:14px}
.panel h3{margin:0 0 10px;font-size:1.1429rem}
table.t{width:100%;border-collapse:collapse;font-size:0.9286rem}
table.t th{text-align:left;color:var(--muted);font-weight:600;padding:7px 8px;border-bottom:1px solid var(--line);white-space:nowrap}
table.t td{padding:7px 8px;border-bottom:1px solid #f0f2f1;vertical-align:top}
table.t tr.click{cursor:pointer}table.t tr.click:hover td{background:var(--soft)}
.num{text-align:right;font-variant-numeric:tabular-nums;white-space:nowrap}
.muted{color:var(--muted)}
.stat{display:inline-flex;flex-direction:column;padding:8px 14px;border-radius:8px;background:var(--soft);margin:0 8px 8px 0}
.stat b{font-size:1.2857rem}
code{background:#eef1ef;padding:1px 5px;border-radius:4px;font-size:0.8929rem}
.login{max-width:360px;margin:12vh auto;background:#fff;padding:26px;border-radius:14px;box-shadow:var(--shadow)}
.login h1{font-size:1.4286rem;margin:0 0 4px;color:var(--brand)}
.login input{width:100%;margin-top:10px}
.login .btn{width:100%;margin-top:14px;padding:10px}
.err{color:var(--danger);margin-top:8px;min-height:18px}
#toast{position:fixed;bottom:18px;left:50%;transform:translateX(-50%);z-index:90;display:flex;flex-direction:column;gap:6px}
#toast div{background:#1d2622;color:#fff;padding:9px 16px;border-radius:8px;box-shadow:var(--shadow);max-width:90vw}
#toast div.e{background:#a32b27}
.notif{position:fixed;top:48px;right:10px;width:min(380px,95vw);max-height:70vh;overflow:auto;background:#fff;border-radius:10px;box-shadow:0 8px 30px rgba(0,0,0,.2);z-index:50}
.notif div{padding:10px 12px;border-bottom:1px solid var(--line);cursor:pointer;white-space:pre-line;font-size:0.9286rem}
.notif div.u{background:color-mix(in srgb,var(--brand2) 7%,#fff)}
.ac{position:relative}
.ac-list{position:absolute;left:0;right:0;top:100%;background:#fff;border:1px solid var(--line);border-radius:7px;z-index:70;max-height:220px;overflow:auto;box-shadow:var(--shadow)}
.ac-list div{padding:6px 9px;cursor:pointer}.ac-list div:hover{background:var(--soft)}
.lightbox{position:fixed;inset:0;background:rgba(0,0,0,.85);z-index:95;display:flex;align-items:center;justify-content:center;cursor:zoom-out}
.lightbox img{max-width:95vw;max-height:92vh}

@media (max-width:760px) and (pointer:coarse){
  .dr-b{grid-template-columns:1fr}
  .grid2{grid-template-columns:1fr}
  .board{height:calc(100vh - 150px)}
  .col{flex-basis:84vw}
  .bar input[type=search]{min-width:0;width:100%;max-width:none}
}

/* ---------- bình luận & hoạt động */
.cmt{display:flex;gap:10px;margin-bottom:6px}
.cmt.pinned>div>.bub{background:#fff8e6;border:1px solid #f1dfae}
.cmt .ctext{white-space:pre-wrap;margin-top:2px;word-break:break-word}
.cacts{display:flex;gap:2px;margin:2px 0 6px 2px}
.cacts button{border:0;background:none;color:var(--muted);font-size:0.8571rem;cursor:pointer;padding:2px 6px;border-radius:5px}
.cacts button:hover{background:var(--soft);color:var(--ink)}
.cacts button.on{color:var(--brand2);font-weight:650}
.replies{border-left:2px solid color-mix(in srgb,var(--brand) 13%,#fff);padding-left:10px;margin:2px 0 6px}
.replies .av{width:20px;height:20px;font-size:0.6429rem}
.mention{color:#2563a8;background:#e8f0fb;border-radius:4px;padding:0 3px;font-weight:600}
.pinbox{background:#fff8e6;border:1px solid #f1dfae;border-radius:8px;padding:8px 10px;margin-bottom:10px;font-size:0.9286rem}
.pinrow{padding:3px 0;cursor:pointer;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.pinrow:hover{text-decoration:underline}
.composer{margin-top:10px;background:var(--soft);border:1px solid var(--line);border-radius:10px;padding:8px}
.composer textarea{background:#fff}
.composer .ac-list div{display:flex;align-items:center;gap:6px}
.composer .ac-list div.on{background:color-mix(in srgb,var(--brand2) 10%,#fff)}
.replyban{background:#e8f0fb;border-radius:7px;padding:5px 8px;margin-bottom:6px;font-size:0.8929rem;display:flex;gap:4px;align-items:center}
.replyban button{margin-left:auto;border:0;background:none;cursor:pointer}
.pend{display:flex;gap:6px;flex-wrap:wrap;margin-top:6px}
.pchip{position:relative;display:inline-flex;align-items:center;gap:4px;background:#fff;border:1px solid var(--line);border-radius:6px;padding:2px;font-size:0.8571rem}
.pchip img{width:48px;height:48px;object-fit:cover;border-radius:4px}
.pchip button{border:0;background:rgba(0,0,0,.55);color:#fff;border-radius:50%;width:16px;height:16px;font-size:0.6429rem;cursor:pointer;position:absolute;top:-6px;right:-6px}
.tlchips{display:flex;gap:6px;flex-wrap:wrap;margin-bottom:8px}
.tlchips button{border:1px solid var(--line);background:#fff;border-radius:14px;padding:3px 10px;font-size:0.8571rem;cursor:pointer}
.tlchips button.on{background:var(--brand2);border-color:var(--brand2);color:#fff}
.tl{display:flex;gap:10px;padding:8px 0;border-bottom:1px solid #f0f2f1;font-size:0.9286rem}
.tlic{flex:0 0 28px;height:28px;border-radius:50%;background:#eef1ef;display:flex;align-items:center;justify-content:center;font-size:1rem}
.k-transition .tlic{background:#e3f5ea}.k-comment .tlic{background:#e8f0fb}.k-file .tlic{background:#f3eafd}.k-view .tlic{background:#f1f3f2}
.tlnote{white-space:pre-wrap;color:#3b4642;background:var(--soft);border-radius:6px;padding:4px 7px;margin-top:3px;font-size:0.8929rem}
.tl .when{font-size:0.7857rem;color:var(--muted);margin-top:2px}
.tl.feed{cursor:pointer;border-radius:6px;padding:9px 6px}
.tl.feed:hover{background:var(--soft)}
.feeditem{font-size:0.8929rem;color:var(--muted);margin-top:2px}
.feeditem .code{font-weight:600;color:var(--ink)}
.dayh{font-weight:700;font-size:0.9286rem;color:var(--brand);padding:12px 0 4px;border-bottom:2px solid color-mix(in srgb,var(--brand) 13%,#fff)}
.srow{display:flex;justify-content:space-between;gap:8px;padding:4px 0;font-size:0.8929rem;border-bottom:1px dashed #e6eae8}
.srow>span:last-child{text-align:right}
.srow .when{font-size:0.7857rem;color:var(--muted)}

/* ---------- đối chiếu */
.matchbox{background:#eef5fd;border:1px solid #c7dbf3;border-radius:8px;padding:9px 11px;margin-top:10px}
.mrow,.mcand{display:flex;gap:10px;align-items:center;padding:8px 0;border-top:1px solid #dde8f5}
.mcand{border-top:1px solid #eef1ef}
.mbtns{display:flex;flex-direction:column;gap:5px}
.score{display:flex;align-items:center;gap:6px;font-size:0.8571rem;margin-top:3px;flex-wrap:wrap}
.sbar{display:inline-block;width:70px;height:6px;background:#e6ebe8;border-radius:3px;overflow:hidden}
.sbar i{display:block;height:100%}
.mgroup{display:grid;grid-template-columns:300px 1fr;gap:16px}
.mline{background:#f3f8f5;border-radius:8px;padding:10px 12px}
.mline .amt{font-size:1.5714rem;font-weight:700;margin:4px 0}
.mline .content{background:#fff;border-radius:6px;padding:6px 8px;margin:6px 0;font-size:0.9286rem}
@media (max-width:760px) and (pointer:coarse){.mgroup{grid-template-columns:1fr}}

/* ---------- đối chiếu kỳ */
.rc-tiles{display:grid;grid-template-columns:repeat(auto-fill,minmax(160px,1fr));gap:10px;margin-bottom:14px}
.rc-tile{background:#fff;border-radius:var(--radius);box-shadow:var(--shadow);padding:10px 12px;cursor:pointer;border:2px solid transparent}
.rc-tile:hover{border-color:color-mix(in srgb,var(--brand2) 23%,#fff)}.rc-tile.on{border-color:var(--brand2)}
.rc-tile.iss{background:#fffaf3}
.rc-tile .lb{font-size:0.8571rem;color:var(--muted);line-height:1.3;min-height:31px}
.rc-tile .n{font-size:1.7143rem;font-weight:700;margin:2px 0}
.rc-tile .muted{font-size:0.8571rem}
.rc-tile .cx{font-size:0.8214rem;font-weight:600;margin-top:2px}.rc-tile .cx.red{color:#b5302b}.rc-tile .cx.green{color:#1f7a45}
h4.rc-h{margin:16px 0 6px;font-size:1rem}
table.rc td{width:30%}table.rc td.rc-notes{width:25%;font-size:0.8929rem}table.rc td:last-child{width:15%}
table.rc tr.marked td{background:#f7fbf8}
.amt-s{font-weight:700;font-variant-numeric:tabular-nums}
.rc-mk .btns{display:flex;gap:4px;margin-top:4px;flex-wrap:wrap}

/* ---------- nhập nhanh 1 dòng */
.quick{background:color-mix(in srgb,var(--brand2) 7%,#fff);border:1px solid color-mix(in srgb,var(--brand2) 23%,#fff);border-radius:10px;padding:10px;margin-bottom:12px}
.quick-in{width:100%;font-size:1.1429rem;padding:10px 12px;border:2px solid var(--brand2)}
.quick-prev{margin-top:6px;font-size:0.8929rem;display:flex;flex-wrap:wrap;gap:6px;align-items:center}
.quick-t{width:100%;color:var(--ink);font-weight:600;font-size:0.9643rem}
.quick-w{width:100%;color:#94650b}
/* ---------- Kanban: đủ cột trên màn hình (kể cả Từ chối) */
.board .col{flex:1 1 0;min-width:200px;position:relative}
.col-rs{position:absolute;top:0;right:-7px;width:10px;height:42px;cursor:col-resize;z-index:2}
.col-rs::after{content:"";position:absolute;left:4px;top:8px;bottom:8px;width:2px;border-radius:2px;background:transparent}
.col:hover .col-rs::after{background:rgba(0,0,0,.18)}
body.resizing{cursor:col-resize;user-select:none}

.quick-dup{width:100%;background:#fff4f3;border:1px solid #f3c4c1;color:#8f2a26;border-radius:6px;padding:6px 8px}
.alloc-row{display:grid;grid-template-columns:2fr 1fr 1.3fr auto;gap:6px;margin-bottom:6px;align-items:start}
.alloc-row input{width:100%}
.alloc-foot{font-size:0.8929rem;color:var(--muted)}

/* ---------- lệnh chưa đủ thông tin: tiêu đề nền xám + dòng ghi chú nhỏ */
.card.gray{background:#f3f4f6}
.card.gray .t{background:#e5e7eb;color:#4b5563;margin:2px -10px 0;padding:4px 10px}
.card .gnote{font-size:0.8214rem;color:#6b7280;margin-top:4px;font-style:italic}
/* đọc ảnh chuyển khoản */
.unc-box{border:1px dashed #b9c6bf;border-radius:8px;padding:8px 10px;margin-bottom:10px;background:#fafcfb}
.unc-box.on{border-color:#2f7d57;background:color-mix(in srgb,var(--brand2) 8%,#fff)}
.unc-row{display:flex;gap:10px;align-items:center;flex-wrap:wrap}
.unc-thumb img{max-height:140px;max-width:100%;margin-top:8px;border-radius:6px;border:1px solid color-mix(in srgb,var(--brand) 16%,#fff);cursor:zoom-in}
.spin{display:inline-block;width:14px;height:14px;border:2px solid color-mix(in srgb,var(--brand) 23%,#fff);border-top-color:#2f7d57;border-radius:50%;animation:uncs .8s linear infinite;vertical-align:middle}
@keyframes uncs{to{transform:rotate(360deg)}}
/* thanh công cụ Kanban: lọc, tùy chỉnh hiển thị, nút + trên cột */
.fbadge{display:inline-block;margin-left:6px;background:var(--brand2);color:#fff;border-radius:9px;padding:0 6px;font-size:0.7857rem;line-height:17px}
.fchips{display:flex;flex-wrap:wrap;gap:6px;align-items:center;padding:6px 14px;background:#f6f8f7;border-bottom:1px solid var(--line)}
.fchips.hidden{display:none}
.fchip{display:inline-flex;align-items:center;gap:4px;background:#fff;border:1px solid var(--line);border-radius:14px;padding:2px 4px 2px 10px;font-size:0.8929rem;max-width:420px}
.fchip>span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.fchip button{border:0;background:transparent;cursor:pointer;color:var(--muted);padding:0 4px}
.fpanel{position:fixed;top:0;right:0;bottom:0;width:min(360px,100%);background:var(--panel);z-index:45;box-shadow:-6px 0 24px rgba(0,0,0,.15);display:flex;flex-direction:column;padding:14px}
.fpanel .fhead{display:flex;justify-content:space-between;align-items:center;margin-bottom:6px;font-size:1.1429rem}
.fpanel input[type=search]{width:100%;margin-bottom:8px}
.flist{flex:1;overflow:auto}
.fitem{padding:6px 2px;border-bottom:1px solid #f0f2f1}
.fitem.on{background:#f6faf8}
.fitem .chk{font-size:1rem}
.fed{display:flex;flex-wrap:wrap;gap:6px;align-items:center;margin:6px 0 2px 24px}
.fed input:not([type=checkbox]){flex:1;min-width:110px}
.fquick{width:100%;display:flex;flex-wrap:wrap;gap:2px}
.fopts{display:flex;flex-direction:column;gap:2px;max-height:200px;overflow:auto;width:100%}
.ffoot{display:flex;gap:8px;justify-content:flex-end;padding-top:10px;border-top:1px solid var(--line)}
.disp-btn{display:inline-flex;flex-direction:column;align-items:flex-start;line-height:1.15;padding:4px 10px}
.disp-btn small{font-size:0.7857rem;color:var(--muted);font-weight:400;max-width:260px;overflow:hidden;text-overflow:ellipsis}
.disp-pop{position:fixed;z-index:46;background:var(--panel);border:1px solid var(--line);border-radius:8px;box-shadow:0 8px 24px rgba(0,0,0,.15);padding:12px 14px;width:300px;display:flex;flex-direction:column;gap:3px}
.col-hr{display:inline-flex;align-items:center;gap:6px}
.col-name{cursor:default}
.col-plus{border:0;background:rgba(255,255,255,.28);color:#fff;border-radius:8px;width:32px;height:32px;font-size:1.7143rem;line-height:30px;font-weight:600;cursor:pointer;padding:0}
.col-plus:hover{background:rgba(255,255,255,.45)}
.unc-img{position:relative;display:inline-block}
.unc-img .x{position:absolute;top:12px;right:4px;background:rgba(255,255,255,.95);border:1px solid var(--line);border-radius:6px;cursor:pointer;font-size:0.8571rem;padding:2px 6px;color:#b5302b}
/* sửa thẳng trên tiêu đề lệnh */
.title-row{display:flex;gap:6px;align-items:center}
.title-in{flex:1;resize:none;overflow:hidden;line-height:1.35;font-family:inherit;font-size:1.3571rem;font-weight:700;border:1px solid transparent;border-radius:7px;padding:4px 6px;margin:4px 0 2px -7px;background:transparent;color:inherit}
.title-in:hover{border-color:var(--line);background:#fff}
.title-in:focus{border-color:var(--brand2);background:#fff;outline:none}
.title-btns{display:inline-flex;gap:4px}
.title-btns.hidden{display:none}
/* checklist / việc con khi tạo lệnh */
.xbox{margin-top:10px;border:1px solid var(--line);border-radius:8px;padding:6px 10px}
.xbox summary{cursor:pointer;font-weight:600;font-size:0.9643rem}
.xsec{margin-top:8px;display:flex;flex-direction:column;gap:4px}
.xsec input{width:100%}
.xrow{display:flex;align-items:center;gap:4px;font-size:0.9643rem}
.xrow .btn{margin-left:auto}
.xadd{display:grid;grid-template-columns:1fr 150px 140px auto;gap:6px}
.col-h small{font-size:0.9286rem}
.col-name{display:inline-flex;align-items:center;gap:6px}
.col-ren{border:0;background:rgba(255,255,255,.22);color:#fff;border-radius:6px;cursor:pointer;font-size:0.8571rem;padding:2px 6px;opacity:0;transition:opacity .15s}
.col-h:hover .col-ren{opacity:1}
.ren-row{display:flex;align-items:center;gap:6px;font-size:0.9286rem}
.ren-row .btn{margin-left:auto}
.ren-row .dot{width:10px;height:10px;border-radius:50%;display:inline-block}
.disp-pop{max-height:80vh;overflow:auto}
/* Đồng ý nhanh trên thẻ khi sao kê khớp */
.card .qa{display:flex;align-items:center;gap:8px;margin-top:8px;padding:6px 8px;background:color-mix(in srgb,var(--brand2) 7%,#fff);border:1px solid #bfe3cc;border-radius:7px}
.card .qa-note{font-size:0.8929rem;color:#1f7a45;font-weight:600}
.card .qa .btn{margin-left:auto}
/* vai trò trong hộp người dùng */
.sec-mini{font-weight:600;font-size:0.9286rem;margin:6px 0 4px;padding-top:8px;border-top:1px solid var(--line)}
.rolebox{margin-bottom:6px}
.rolegrid{display:grid;grid-template-columns:repeat(auto-fill,minmax(190px,1fr));gap:4px 12px}
.rolecell{display:flex;flex-direction:column}

/* v10 — chi tiết lệnh gọn */
.v10-head{background:var(--panel);border:1px solid var(--line);border-radius:10px;padding:14px 16px;margin-bottom:12px}
.v10-steps{display:flex;align-items:center;flex-wrap:wrap;gap:6px;margin-top:12px;font-size:0.8929rem;color:var(--muted)}
.v10-step{display:inline-flex;align-items:center;gap:5px}
.v10-step i{width:10px;height:10px;border-radius:50%;border:2px solid #a9b6af;background:#fff;display:inline-block}
.v10-step.done i{background:#1f6b4f;border-color:#1f6b4f}
.v10-step.cur{color:#b45309;font-weight:700}.v10-step.cur i{background:#e8590c;border-color:#e8590c}
.v10-line{width:22px;height:2px;background:color-mix(in srgb,var(--brand) 21%,#fff)}.v10-line.on{background:#1f6b4f}
.v10-menu{position:absolute;right:0;top:40px;z-index:5;background:#fff;border:1px solid var(--line);border-radius:10px;box-shadow:0 8px 24px rgba(0,0,0,.14);padding:6px;min-width:220px;display:flex;flex-direction:column}
.v10-menu.hidden{display:none}
.v10-mi{font:inherit;font-size:1rem;text-align:left;background:none;border:0;padding:8px 10px;border-radius:6px;cursor:pointer;color:inherit}
.v10-mi:hover{background:var(--soft)}.v10-mi.red{color:#b3261e}
.v10-sep{border-top:1px solid var(--line);margin:4px 0}
.v10-todos{background:#fffaf2;border:1px solid #f2c48d;border-radius:10px;padding:12px 14px;margin-bottom:12px}
.v10-todo{display:flex;gap:10px;align-items:flex-start;padding:10px 0;border-top:1px solid #f0e2cc;flex-wrap:wrap}
.v10-num{display:inline-flex;align-items:center;justify-content:center;width:22px;height:22px;border-radius:50%;background:#e8590c;color:#fff;font-size:0.8571rem;font-weight:700;flex:none}
.v10-btns{display:flex;gap:6px;align-items:center;flex-wrap:wrap}
.v10-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px 18px}
.v10-lbl{font-size:0.8571rem;color:var(--muted);margin-bottom:2px}.v10-val{font-size:1.0357rem;word-break:break-word}
.v10-chips{display:flex;gap:8px;flex-wrap:wrap;margin:14px 0 6px}
.v10-chip{font:inherit;font-size:0.9286rem;padding:7px 12px;border:1px solid var(--line);border-radius:8px;background:#fff;cursor:pointer}
.v10-chip.on{background:color-mix(in srgb,var(--brand2) 13%,#fff);border-color:#9fcdb6}
.v10-save{display:flex;gap:10px;align-items:center;padding:10px 16px;background:#1b2420;color:#fff}
.v10-save .btn:not(.primary){background:transparent;color:#fff;border-color:#6b7a73}
@media (max-width:760px) and (pointer:coarse){.v10-grid{grid-template-columns:1fr 1fr}}

/* v10 — kết quả nạp */
.kq-grid{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1.05fr);gap:18px}.kq-grid.one{grid-template-columns:320px minmax(0,1fr)}
.kq-frame{align-self:start;position:sticky;top:0;background:#1d4e89;border:3px solid #1d4e89;border-radius:12px;padding:8px;box-shadow:0 6px 18px rgba(29,78,137,.28)}
.kq-fh{display:flex;align-items:center;gap:8px;color:#fff;font-size:0.8571rem;padding:2px 4px 8px}
.kq-fh b{letter-spacing:.04em}
.kq-zoom{font:inherit;font-size:0.8571rem;background:rgba(255,255,255,.15);color:#fff;border:0;border-radius:6px;padding:4px 8px;cursor:pointer}
.kq-scroll{max-height:68vh;overflow:auto;border-radius:4px}
.kq-legend{color:#dbe7f6;font-size:0.8214rem;padding:8px 4px 2px}
.kq-hl{position:absolute;left:0;right:0;background:rgba(255,200,0,.28);border:2px solid #e0a800;display:none;pointer-events:none}
.kq-done{position:absolute;left:0;right:0;background:rgba(31,122,77,.13);pointer-events:none}
.kq-right{max-height:76vh;overflow:auto;display:flex;flex-direction:column;gap:10px;padding-right:4px}
.kq-sec{font-weight:700;font-size:1rem}
.kq-card{background:#fff;border:1px solid color-mix(in srgb,var(--brand) 15%,#fff);border-radius:10px;padding:12px 14px}
.kq-card:hover{border-color:#e0a800;box-shadow:0 0 0 2px #fff1c2}
.kq-card.done{background:#f4faf6;border-color:#cfe6d8}
.kq-cmp{display:grid;grid-template-columns:90px 1fr 1fr 20px;gap:5px 10px;font-size:0.9286rem;align-items:center;background:#f7f9f8;border:1px solid #e3e8e5;border-radius:8px;padding:8px 10px;margin-top:8px}
.kq-in{font:inherit;font-size:1rem;padding:8px 10px;border:1px solid color-mix(in srgb,var(--brand) 25%,#fff);border-radius:8px;width:100%;box-sizing:border-box}
.kq-lbl{display:block;font-size:0.8571rem;color:var(--muted);margin:8px 0 4px}
.kq-tag{display:inline-block;font-size:0.8571rem;padding:2px 8px;border-radius:20px;background:color-mix(in srgb,var(--brand2) 13%,#fff);color:var(--brand);font-weight:600}
.kq-tag.warn{background:#fff3dc;color:#8a4b00}
@media (max-width:900px) and (pointer:coarse){.kq-grid,.kq-grid.one{grid-template-columns:1fr}.kq-frame{position:static}}

/* ================================================================ App Đại Lộc · khung menu trái (portal.js) */
:root{--side:#173f33;--side2:var(--brand);--side-ink:#cfe3da;--side-mute:#88a99b;--side-hi:#fff;--side-ov:255,255,255;--side-acc:#8fe0bb;--side-line:transparent;--brand-d:color-mix(in srgb,var(--brand) 70%,#000)}
.pt-shell{display:grid;grid-template-columns:232px minmax(0,1fr);min-height:100vh}
.pt-shell.pt-mini{grid-template-columns:60px minmax(0,1fr)}
.pt-side{position:sticky;top:0;height:100vh;display:flex;flex-direction:column;background:var(--side);color:var(--side-ink);z-index:30}
.pt-brand{display:flex;align-items:center;gap:10px;padding:14px 14px 12px;border-bottom:1px solid rgba(var(--side-ov),.08)}
.pt-mark{flex:none;width:34px;height:34px;border-radius:8px;background:color-mix(in srgb,var(--brand2) 10%,#fff);color:var(--brand-d);display:grid;place-items:center;
  font-weight:800;font-size:1rem;letter-spacing:-.5px}
.pt-name{display:flex;flex-direction:column;line-height:1.2;min-width:0}
.pt-name b{color:var(--side-hi);font-size:1.0714rem}
.pt-name span{font-size:0.8571rem;color:var(--side-mute)}
.pt-scroll{flex:1;overflow-y:auto;padding:8px 8px 12px}
.pt-grp{margin-top:10px}
.pt-gname{font-size:0.8214rem;color:var(--side-mute);padding:6px 10px 4px}
.pt-link{display:flex;align-items:center;gap:9px;padding:7px 10px;border-radius:7px;color:var(--side-ink);text-decoration:none;font-size:0.9643rem}
.pt-link:hover{background:rgba(var(--side-ov),.07);color:var(--side-hi)}
.pt-link.on{background:rgba(var(--side-ov),.13);color:var(--side-hi);font-weight:600}
.pt-link:focus-visible,.pt-fold:focus-visible{outline:2px solid var(--side-acc);outline-offset:1px}
.pt-dot{flex:none;width:6px;height:6px;border-radius:50%;background:currentColor;opacity:.45}
.pt-link.on .pt-dot{opacity:1;background:var(--side-acc)}
.pt-lbl{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.pt-count{background:#ef4444;color:#fff;border-radius:9px;font-size:0.75rem;padding:0 6px;line-height:16px}
.pt-soon{font-size:0.75rem;color:var(--side-mute);border:1px solid rgba(var(--side-ov),.18);border-radius:8px;padding:0 6px}
.pt-fold{display:flex;align-items:center;justify-content:center;gap:8px;font-size:0.8929rem;margin:8px;border:0;background:rgba(var(--side-ov),.06);color:var(--side-ink);border-radius:7px;padding:6px;cursor:pointer}
.pt-fold:hover{background:rgba(var(--side-ov),.12)}
.pt-mini .pt-foldi{transform:scaleX(-1)}
.pt-mini .pt-name,.pt-mini .pt-gname,.pt-mini .pt-lbl,.pt-mini .pt-soon,.pt-mini .pt-count{display:none}
.pt-mini .pt-brand{justify-content:center;padding:14px 0 12px}
.pt-mini .pt-link{justify-content:center}
.pt-mini .pt-dot{width:8px;height:8px}
.pt-main{min-width:0}
.pt-top{background:#fff;color:var(--ink);border-bottom:1px solid var(--line)}
.pt-top .ico{color:var(--ink)}
.pt-top .ico:hover{background:var(--soft)}
.pt-title{font-weight:650;font-size:1.0714rem;white-space:nowrap}
.pt-top .ver{font-size:0.7857rem;color:var(--muted);cursor:pointer}
.pt-code{margin-left:6px;font-size:0.7857rem;color:var(--muted);font-variant-numeric:tabular-nums}
.pt-burger{display:none}
@media (max-width:900px) and (pointer:coarse){
  .pt-shell,.pt-shell.pt-mini{grid-template-columns:minmax(0,1fr)}
  .pt-side{position:fixed;left:0;top:0;width:250px;transform:translateX(-100%);transition:transform .18s ease}
  .pt-shell.pt-open .pt-side{transform:none;box-shadow:0 0 30px rgba(0,0,0,.25)}
  .pt-mini .pt-name,.pt-mini .pt-gname,.pt-mini .pt-lbl,.pt-mini .pt-soon,.pt-mini .pt-count{display:revert}
  .pt-fold{display:none}
  .pt-burger{display:inline-block}
}
@media (prefers-reduced-motion:reduce){.pt-side{transition:none}}

/* ---------- Thành viên / Phiên đăng nhập */
.pt-head{display:flex;justify-content:space-between;align-items:flex-end;gap:12px;flex-wrap:wrap;margin-bottom:12px}
.pt-head h2{margin:0 0 2px;font-size:1.4286rem}
.pt-head p{margin:0}
.pt-actions{display:flex;gap:8px}
.pt-bar{border:0;background:none;padding:0 0 10px}
.pt-chips{display:flex;gap:6px;flex-wrap:wrap;align-items:center}
.pt-chip{border:1px solid var(--line);background:#fff;border-radius:16px;padding:4px 11px;cursor:pointer;font-size:0.8929rem}
.pt-chip span{margin-left:6px;color:var(--muted);font-variant-numeric:tabular-nums}
.pt-chip.on{background:var(--side2);border-color:var(--side2);color:#fff}
.pt-chip.on span{color:#d6efe4}
.pt-online{font-size:0.8929rem;color:var(--muted);margin-left:6px}
.pt-tablewrap{padding:4px 6px;overflow-x:auto}
.pt-tablewrap td,.pt-tablewrap th{white-space:nowrap}
.pt-mono{font-variant-numeric:tabular-nums;letter-spacing:.2px}
.pt-off td{color:#8a958f}
.pt-live{color:var(--ok);margin-left:6px;font-size:0.7857rem}
.pt-empty{padding:28px 10px;text-align:center;color:var(--muted)}
.modal .box.pt-wide{width:min(760px,100%)}
.pt-form .pt-sec{font-weight:650;color:var(--brand);margin:16px 0 8px;padding-bottom:4px;border-bottom:1px solid var(--line)}
.pt-form .pt-sec:first-child{margin-top:0}
.pt-req{color:var(--danger)}
.pt-hint{font-size:0.8571rem;color:var(--muted);margin-top:3px;line-height:1.45}
.pt-checks{display:flex;gap:18px;flex-wrap:wrap}
.pt-sess{margin-top:12px}
.pt-cfg td,.pt-cfg th{vertical-align:middle}
.pt-cfg input[type=text],.pt-cfg td>input:not([type=checkbox]){width:100%}
.pt-cfg td>input+input{margin-top:4px}
.pt-cat{display:grid;grid-template-columns:repeat(3,1fr);gap:10px}
@media (max-width:760px) and (pointer:coarse){.pt-cat{grid-template-columns:1fr}}
.pt-narrow{max-width:820px}
.panel .pt-sec{font-weight:650;color:var(--brand);margin:18px 0 6px}
.pt-srow{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:16px;align-items:center;padding:10px 0;border-bottom:1px solid #f0f2f1}
.pt-slbl{font-weight:600}
.pt-sctl{display:flex;align-items:center;gap:8px;white-space:nowrap}
.pt-unit{color:var(--muted)}
.pt-def{font-size:0.8214rem;color:var(--muted);min-width:84px}
.pt-save{display:flex;justify-content:flex-end;gap:8px;margin-top:14px}
@media (max-width:600px) and (pointer:coarse){.pt-srow{grid-template-columns:1fr}}


/* ---------- Chứng từ › Phiếu giao hàng */
.ct-page{max-width:1500px}
.ct-search{padding:12px 14px}
.ct-row{display:flex;gap:8px;align-items:center;flex-wrap:wrap}
.ct-q{flex:1;min-width:240px;font-size:1.0714rem;padding:9px 11px}
.ct-filters{margin-top:10px;align-items:flex-end}
.ct-f{display:flex;flex-direction:column;gap:3px;font-size:0.8571rem;color:var(--muted)}
.ct-checks{display:flex;gap:14px;flex-wrap:wrap;padding-bottom:7px}
.ct-range{display:block;margin-top:8px;font-size:0.8571rem;color:var(--muted)}
.ct-split{display:grid;grid-template-columns:minmax(330px,440px) minmax(0,1fr);gap:14px;align-items:start}
.ct-list{padding:0;overflow:hidden}
.ct-meta{padding:9px 14px;border-bottom:1px solid var(--line);color:var(--muted);font-size:0.8929rem}
.ct-item{display:block;padding:9px 14px;border-bottom:1px solid #f0f2f1;color:inherit;text-decoration:none;border-left:3px solid transparent}
.ct-item:hover{background:var(--soft)}
.ct-item.on{background:color-mix(in srgb,var(--brand2) 10%,#fff);border-left-color:var(--brand2)}
.ct-item:focus-visible{outline:2px solid var(--brand2);outline-offset:-2px}
.ct-l1{display:flex;gap:6px;align-items:center;flex-wrap:wrap}
.ct-kh{margin-top:2px}
.ct-l3{margin-top:2px;font-size:0.8571rem;color:var(--muted)}
.ct-tag{display:inline-block;padding:0 7px;border-radius:9px;font-size:0.8214rem;background:#eef0ef;color:#4f5a55;white-space:nowrap}
.ct-tag.ban{background:color-mix(in srgb,var(--brand2) 13%,#fff);color:var(--brand)}.ct-tag.bb{background:#e5effb;color:#2563a8}.ct-tag.pdx{background:#f3e8fb;color:#7a3ea8}
.ct-tag.lien{background:#e3f5ea;color:#1f7a45}.ct-tag.xe{background:#fff;border:1px solid var(--line)}.ct-tag.warn{background:#fdf2dc;color:#94650b}
.ct-pager{display:flex;gap:4px;justify-content:center;padding:10px;flex-wrap:wrap}
.ct-pager button,.ct-pager span{min-width:30px;padding:3px 8px;border:1px solid var(--line);border-radius:6px;background:#fff;cursor:pointer;font:inherit}
.ct-pager span{cursor:default;border-color:transparent}.ct-pager span.on{background:var(--brand2);border-color:var(--brand2);color:#fff}
.ct-viewer{position:sticky;top:58px;max-height:calc(100vh - 72px);overflow-y:auto;min-height:50vh}
.ct-dbar{display:flex;gap:8px;align-items:center;flex-wrap:wrap;margin-bottom:6px}
.ct-so{font-size:1.1429rem}
.ct-back{display:none}
.ct-dinfo{margin-bottom:6px}
.ct-pages img{display:block;width:100%;margin:10px 0;border:1px solid var(--line);border-radius:6px;background:#fff}
.ct-foot{font-size:0.8571rem;margin:4px 0 6px}
.ct-thumbs{display:grid;grid-template-columns:repeat(auto-fill,minmax(130px,1fr));gap:10px;margin-top:8px}
.ct-thumbs a{display:block;border:1px solid var(--line);border-radius:6px;padding:4px;background:#fff;color:var(--muted);font-size:0.8571rem;text-align:center;text-decoration:none}
.ct-thumbs a:hover{border-color:var(--brand2)}
.ct-thumbs img{display:block;width:100%;border-radius:4px;margin-bottom:3px}
@media (max-width:900px) and (pointer:coarse){
  .ct-split{grid-template-columns:minmax(0,1fr)}
  .ct-split .ct-viewer{display:none;position:static;max-height:none}
  .ct-split.ct-has .ct-viewer{display:block}
  .ct-split.ct-has .ct-list{display:none}
  .ct-back{display:inline-block}
}
@media print{
  .pt-side,.pt-top,.ct-search,.ct-list,.ct-dbar button,.ct-dbar a,.ct-thumbs,.ct-pdxh,.pt-hint,.ct-foot{display:none!important}
  .pt-shell{display:block}.ct-split{display:block}.ct-viewer{position:static;max-height:none;overflow:visible;box-shadow:none}
  .ct-pages img{page-break-after:always;border:0;margin:0}
  .ct-pages.noprint{display:none}
}
a.btn{text-decoration:none;display:inline-block}
.ct-ftoggle{display:none}
@media (max-width:600px) and (pointer:coarse){
  .ct-ftoggle{display:inline-block}
  .ct-search .ct-filters,.ct-search .ct-range{display:none}
  .ct-search.ct-fopen .ct-filters{display:flex}.ct-search.ct-fopen .ct-range{display:block}
  .ct-q{min-width:0;flex-basis:100%}
  .ct-reading .ct-search{display:none}
  .pt-top .ver,.pt-top .pt-code{display:none}
  .pt-top{gap:2px;padding:8px}
  .pt-top .ico{padding:6px 6px}
  .pt-top .pt-acct{max-width:96px;overflow:hidden;text-overflow:ellipsis}
  .pt-title{overflow:hidden;text-overflow:ellipsis;min-width:0}
}

/* ---------- v1.1 (VT 24/10/2026) */
/* Kanban «Bằng nhau, vừa vùng hiển thị»: cột chia đều theo vùng nội dung (đã trừ menu trái) — không tràn ngang */
.board .col{flex:1 1 0;min-width:150px}
.col-h{gap:6px;padding:12px 12px;min-height:50px;font-size:1.1071rem}
.col-name{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;flex:1 1 auto}
.col-hr{flex:none;white-space:nowrap}
.col-h small{font-size:0.8571rem}
.v11-lines{display:flex;flex-direction:column;gap:1px;margin-top:6px;font-size:0.8571rem;line-height:1.35}
.v11-wait{color:#4f5a55}
.v11-appr{color:var(--brand)}
.v11-title.can{cursor:text;border-radius:6px;padding:2px 4px;margin-left:-4px!important}
.v11-title.can:hover{background:#f1f5f3;box-shadow:inset 0 0 0 1px color-mix(in srgb,var(--brand) 20%,#fff)}
.v11-talk{margin-top:14px}
/* menu thư mục (v1.1) */
.pt-grp{margin-top:2px}
.pt-gbtn{display:flex;align-items:center;gap:9px;width:100%;border:0;background:transparent;color:var(--side-hi);font:inherit;font-size:1.0357rem;font-weight:700;
  text-align:left;padding:9px 10px;min-height:42px;border-radius:8px;cursor:pointer}
.pt-gbtn:hover{background:rgba(var(--side-ov),.07)}
.pt-gbtn:focus-visible,.pt-link:focus-visible,.pt-tab:focus-visible{outline:2px solid var(--side-acc);outline-offset:1px}
.pt-gbtn.soon{cursor:default;color:var(--side-mute)}
.pt-gbtn.soon:hover{background:transparent}
.pt-gbtn.soon .pt-ico{opacity:.55}
.pt-gbtn .pt-lbl{flex:1}
.pt-ico{display:inline-grid;place-items:center;color:var(--side-acc);flex:none}
.pt-chev{display:inline-grid;color:color-mix(in srgb,var(--brand2) 43%,#fff);transition:transform .15s}
.pt-chev.open{transform:rotate(90deg)}
.pt-kids{display:flex;flex-direction:column;gap:1px;margin:0 0 6px 19px;padding-left:9px;border-left:1px solid rgba(var(--side-ov),.18)}
.pt-link{padding:7px 10px;min-height:36px;font-size:0.9643rem}
.pt-link.soon{color:var(--side-mute);cursor:default}
.pt-link.soon:hover{background:transparent;color:var(--side-mute)}
.pt-link.on{box-shadow:inset 3px 0 0 var(--side-acc)}
.pt-nrow{display:flex;align-items:baseline;gap:6px}
.pt-ver{font-size:0.7857rem;font-weight:600;color:color-mix(in srgb,var(--brand2) 21%,#fff);background:rgba(255,255,255,.12);border-radius:6px;padding:1px 6px;cursor:pointer}
.pt-mini .pt-kids,.pt-mini .pt-chev,.pt-mini .pt-ver{display:none}
.pt-mini .pt-gbtn{justify-content:center}
/* thanh trên: nhóm › tên phân hệ, dưới là tab con */
.pt-top{flex-direction:column;align-items:stretch;gap:0;padding:8px 16px 0}
.pt-top:not(.has-tabs){padding-bottom:8px}
.pt-trow{display:flex;align-items:center;gap:6px}
.pt-heading{display:flex;flex-direction:column;line-height:1.2;min-width:0}
.pt-crumb{font-size:0.8571rem;color:var(--muted)}
.pt-title{font-size:1.2857rem;font-weight:700}
.pt-tabs{display:flex;gap:2px;flex-wrap:wrap;margin-top:6px}
.pt-tab{display:inline-flex;align-items:center;gap:6px;padding:9px 14px 10px;min-height:40px;color:#4f5a55;text-decoration:none;border-bottom:3px solid transparent;font-size:1rem}
.pt-tab:hover{color:var(--brand);background:var(--soft)}
.pt-tab.on{color:var(--brand);font-weight:700;border-bottom-color:var(--brand2)}
.pt-tab .pt-count{position:static}
.pt-tab .pt-count.hidden{display:none}
.pt-main .board{height:calc(100vh - 176px)}
input:disabled,select:disabled,textarea:disabled{background:#eef1ef;color:#5f6b66;cursor:not-allowed;border-style:dashed}
/* v1.1b (VT 24/10 tối): cột Kanban đều tuyệt đối + tiêu đề cột cao cố định (cột có nút + không cao hơn cột khác) */
.board.eq{display:grid;grid-template-columns:repeat(var(--ncol,5),minmax(150px,1fr));gap:12px;align-items:start}
.board.eq>.col{min-width:0;max-width:none;width:auto;flex:none}
.col-h{height:52px;min-height:52px;max-height:52px;box-sizing:border-box;padding:0 10px 0 12px;flex:none;overflow:hidden}
.col-h .col-plus{width:28px;height:28px;line-height:26px;font-size:1.5rem;flex:none}
.col-name{display:block}
.col-ren{display:none}
.col-h:hover .col-ren{display:inline-block}

/* ---------- v1.2 Thiết lập quy trình */
.wb .pt-head{display:flex;justify-content:space-between;gap:16px;align-items:flex-start;flex-wrap:wrap;margin-bottom:12px}
.wb .pt-head h2{margin:0 0 4px}
.wb-small{font-size:0.8571rem}
.wb-list td{vertical-align:top}
.wb-list .wb-acts,.wb-tbl .wb-acts{white-space:nowrap}
.wb-acts .btn{margin-right:4px;text-decoration:none;display:inline-block}
.wb-off{opacity:.55}
.wb-warn{color:#b45309;font-weight:600}
.wb-top{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin-bottom:10px}
.wb-top .sp,.wb-trf .sp{flex:1}
.wb-ttl h2{margin:2px 0 0;font-size:1.4286rem;display:flex;gap:6px;align-items:center;flex-wrap:wrap}
.wb-ttl a{font-size:0.8929rem;text-decoration:none}
.wb-lock{margin:0 0 10px}
.wb-tabs{background:var(--panel);border:1px solid var(--line);border-radius:var(--radius);padding:0 8px;margin-bottom:10px;display:flex;gap:2px;overflow-x:auto}
.wb-tabs .pt-tab{border:0;background:none;cursor:pointer;font:inherit}
.wb-errs,.wb-warns{margin:0 0 10px}
.wb-errs ul,.wb-warns ul{margin:4px 0 0 18px;padding:0}
.wb-form{max-width:900px}
.wb-row{display:grid;grid-template-columns:220px minmax(0,1fr);gap:12px;padding:9px 0;border-bottom:1px solid var(--line);align-items:start}
.wb-row:last-child{border-bottom:0}
.wb-row>label{font-weight:600;padding-top:7px}
.wb-row input:not([type=checkbox]):not([type=color]),.wb-row select{width:100%;max-width:520px}
.wb-chips{display:flex;flex-wrap:wrap;gap:6px;align-items:center}
.wb-chip{display:inline-flex;align-items:center;gap:4px;background:color-mix(in srgb,var(--brand2) 10%,#fff);border:1px solid color-mix(in srgb,var(--brand2) 24%,#fff);border-radius:999px;padding:3px 6px 3px 10px;font-size:0.9286rem}
.wb-chip button{border:0;background:none;cursor:pointer;color:var(--muted);padding:0 3px;font-size:0.9286rem}
.wb-chips select{width:auto!important}
.wb-checks{display:flex;flex-wrap:wrap;gap:4px 16px}
.wb-checks.wb-col{flex-direction:column}
.wb-checks .chk{white-space:nowrap}
.wb-tbl td{vertical-align:top}
.wb-tbl input:not([type=checkbox]):not([type=color]),.wb-tbl select{width:100%;min-width:120px}
.wb-tbl td.c,.wb-matrix th{text-align:center}
.wb-tbl input[type=color]{width:42px;height:32px;padding:2px;border-radius:6px}
.wb-dot{display:none}
.wb-add{margin-top:10px}
.wb-inl{display:flex;gap:8px;align-items:center;flex-wrap:wrap}
.wb-inl input{max-width:320px}
.wb-row .wb-inl input:not([type=checkbox]),.wb-row .wb-inl select{width:auto;flex:1 1 180px;max-width:320px}
.wb-lk{font-size:0.8571rem;margin-left:4px;opacity:.75}
.wb-trs{display:flex;flex-direction:column;gap:6px}
.wb-tr{border:1px solid var(--line);border-radius:8px;background:#fff}
.wb-tr.open{border-color:var(--brand2);box-shadow:0 0 0 3px color-mix(in srgb,var(--brand2) 8%,transparent)}
.wb-trh{display:flex;align-items:center;gap:10px;padding:9px 12px;cursor:pointer;flex-wrap:wrap}
.wb-trh:hover{background:var(--soft)}
.wb-chev{display:inline-block;transition:transform .15s;color:var(--muted)}
.wb-chev.open{transform:rotate(90deg)}
.wb-path{flex:1;min-width:200px}
.wb-tags{display:flex;gap:4px}
.wb-trb{padding:4px 14px 12px;border-top:1px solid var(--line)}
.wb-trf{display:flex;gap:6px;padding-top:10px}
.wb-btnprev{display:inline-block;padding:3px 10px;border-radius:6px;font-size:0.8929rem;font-weight:600;color:#fff;background:var(--brand2);white-space:nowrap}
.wb-btnprev.s-success{background:var(--ok)}.wb-btnprev.s-warning{background:var(--warn)}.wb-btnprev.s-danger{background:var(--danger)}
.wb-btnprev.s-ghost{background:#fff;color:var(--muted);border:1px solid var(--line)}
.wb-map{display:flex;gap:12px;overflow-x:auto;padding-bottom:6px;align-items:flex-start}
.wb-node{flex:0 0 220px;background:#f1f4f2;border-radius:var(--radius);overflow:hidden;border:1px solid var(--line)}
.wb-node.start{box-shadow:0 0 0 2px var(--brand2)}
.wb-nh{color:#fff;font-weight:600;padding:10px 12px}
.wb-nh small{font-weight:400;opacity:.9}
.wb-nt{font-size:0.8571rem;color:var(--muted);padding:6px 12px 0}
.wb-out{background:#fff;margin:8px;border-radius:6px;padding:7px 9px;font-size:0.9286rem}
.wb-node>.muted{padding:8px 12px 10px}
.wb-tpls{display:grid;grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:8px;margin-top:6px}
.wb-tpl{text-align:left;border:1px solid var(--line);background:#fff;border-radius:8px;padding:10px;cursor:pointer;display:flex;flex-direction:column;gap:4px;font:inherit}
.wb-tpl span{font-size:0.8571rem;color:var(--muted)}
.wb-tpl.on{border-color:var(--brand2);box-shadow:0 0 0 3px color-mix(in srgb,var(--brand2) 15%,transparent);background:color-mix(in srgb,var(--brand2) 5%,#fff)}
.wb-lbl{display:block;font-weight:600;margin-top:12px}
.modal .box:has(.wb-new){width:min(780px,94vw);max-width:94vw}
.wb-new input::placeholder{text-transform:none}
.wb-new .grid2{align-items:end}
.wb-json{width:100%;font-family:ui-monospace,Consolas,monospace;font-size:0.8929rem}
@media (max-width:760px) and (pointer:coarse){.wb-row{grid-template-columns:1fr;gap:4px}.wb-row>label{padding-top:0}}

/* ---------- v1.3 Khung quản trị (chứng từ, danh mục, báo cáo, cổng hạch toán) */
.ex{max-width:1400px}
.ex .sp{flex:1}
.ex-bar{border:1px solid var(--line);border-radius:var(--radius);margin-bottom:10px}
.ex-bar input[type=search]{min-width:240px}
.ex-tablewrap{overflow-x:auto}
.ex-list td{vertical-align:top}
.ex-row{cursor:pointer}
.ex-row:hover td{background:var(--soft)}
.ex-off{opacity:.5}
.ex-dg{max-width:280px;color:var(--muted)}
.ex-sum td{font-weight:700;border-top:2px solid var(--line)}
.ex-empty{color:var(--muted);padding:18px;text-align:center}
.ex-s{font-size:0.8929rem;margin-top:4px}
.ex-neg{color:var(--danger);font-weight:700}
.ex-acts{white-space:nowrap}
.ex-acts .btn{margin-right:4px;text-decoration:none;display:inline-block}
.ex-top{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin-bottom:10px}
.ex-top>a.ex-back{font-size:0.8929rem;text-decoration:none;width:100%}
a.pt-chip{text-decoration:none;color:inherit}
.ex-top h2{margin:0;font-size:1.4286rem;display:flex;gap:8px;align-items:center;flex-wrap:wrap}
.ex-so{font-family:ui-monospace,Consolas,monospace;font-size:1.1429rem;color:var(--muted)}
.ex-danger{color:var(--danger)}
.ex-dirty{border-color:var(--warn);box-shadow:0 0 0 2px rgba(217,154,30,.2)}
.ex-grid{display:grid;grid-template-columns:minmax(0,1fr) 300px;gap:14px;align-items:start}
.ex-head{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px 12px}
.ex-head .ex-wide{grid-column:span 2}
.ex-side{display:flex;flex-direction:column;gap:10px}
.ex-card{background:#fff;border-radius:var(--radius);box-shadow:var(--shadow);padding:12px 14px}
.ex-k{font-size:0.8571rem;color:var(--muted);font-weight:600;text-transform:uppercase;letter-spacing:.03em;margin-bottom:6px}
.ex-lines{overflow-x:auto}
.ex-lt input,.ex-lt select{width:100%;min-width:60px}
.ex-lt td{vertical-align:middle}
.ex-lt input.num{text-align:right;min-width:90px}
.ex-lt .ex-ck input{min-width:56px;width:64px}
.ex-prod{min-width:260px}
.ex-tot{display:flex;flex-direction:column;align-items:flex-end;gap:4px;margin-top:12px;font-size:1rem}
.ex-tot>div{display:flex;gap:24px;min-width:280px;justify-content:space-between}
.ex-grand{font-size:1.2143rem;border-top:1px solid var(--line);padding-top:6px}
.ex-pick{position:relative}
.ex-pick input{width:100%}
.ex-pl{position:absolute;z-index:60;left:0;right:0;top:100%;background:#fff;border:1px solid var(--line);border-radius:8px;box-shadow:0 8px 24px rgba(0,0,0,.12);max-height:280px;overflow:auto;min-width:300px}
.ex-pi{padding:7px 10px;cursor:pointer;font-size:0.9286rem}
.ex-pi.on,.ex-pi:hover{background:color-mix(in srgb,var(--brand2) 10%,#fff)}
.ex-dmf .ex-wide{grid-column:1/-1}
.ex-quy{display:flex;gap:6px;align-items:center;margin-bottom:6px}
.ex-quy input{width:110px}
.ex-cards{display:flex;gap:12px;flex-wrap:wrap;margin-bottom:12px}
.ex-qcard{background:#fff;border-radius:var(--radius);box-shadow:var(--shadow);padding:14px 18px;min-width:200px;display:flex;flex-direction:column;gap:4px;text-decoration:none;color:inherit;border:2px solid transparent}
.ex-qcard b{font-size:1.4286rem}
.ex-qcard.on{border-color:var(--brand2)}
.ex-gatehint{margin:0 0 10px}
.ex-gh{display:flex;align-items:center;gap:8px;margin-bottom:6px}
.ex-gh h3{margin:0}
.ex-savebar{position:sticky;bottom:0;padding:10px 0;background:linear-gradient(transparent,var(--bg) 30%);display:flex;justify-content:flex-end}
.t.pt-erp td{vertical-align:middle;padding:6px 8px}
@media (max-width:1100px) and (pointer:coarse){.ex-grid{grid-template-columns:1fr}.ex-head{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media (max-width:640px) and (pointer:coarse){.ex-head{grid-template-columns:1fr}.ex-head .ex-wide{grid-column:auto}.ex-bar input[type=search]{min-width:0;width:100%}}
.ex-head .chk input{width:auto}
.ex-lt td select{min-width:72px}
.ex-prod{min-width:220px}
.ex-grid>div{min-width:0}
/* v1.4 chính sách giá */
.ex-gia{min-width:120px}
.ex-cs{font-size:0.8214rem;margin-top:3px;display:flex;gap:4px;justify-content:flex-end;align-items:center;flex-wrap:wrap;white-space:nowrap}
.ex-cs .pill{font-size:0.75rem;padding:1px 6px}
.ex-reset{cursor:pointer;text-decoration:none;color:var(--brand2);font-weight:700}
.ex-lock{padding:6px 8px;background:var(--soft);border-radius:6px;text-align:right;font-weight:600}
.ex-ckdoc{margin-top:12px;padding:10px 12px;background:var(--soft);border-radius:var(--radius);display:flex;flex-direction:column;gap:6px}
.ex-ckrow{display:grid;grid-template-columns:minmax(0,1fr) 84px 130px auto 110px;gap:6px;align-items:center}
.ex-ckrow .num{text-align:right}
.ex-dn{margin-top:10px}
.ex-dn ul{margin:6px 0 8px 18px;padding:0}
.ex-dn textarea{width:100%}
.ex-pvw{display:flex;gap:6px;align-items:center}
.ex-pvw .ex-pv{width:140px;min-width:140px;flex:0 0 140px}
.ex-prl td select{min-width:110px}
.ex-prl td:nth-child(5) select{min-width:230px}
.ex-pvw>.ex-pick,.ex-pvw>input{flex:1}
.ex-prl td{vertical-align:middle}
.ex-under td{background:#fff4f2}
.ex-btnrow{display:flex;gap:10px;align-items:center;flex-wrap:wrap;margin-top:8px}
.ex-sheetpick{min-width:300px}
.ex-cspr{color:var(--brand2)}
@media (max-width:760px) and (pointer:coarse){.ex-ckrow{grid-template-columns:1fr 70px 1fr auto}.ex-ckrow>.num{grid-column:1/-1}.ex-sheetpick{min-width:0;width:100%}}
/* v1.5 — chiết khấu nhiều tầng trên dòng */
.ex-lt td.ex-ckt{min-width:200px}
.ex-ckt-r{display:flex;align-items:center;gap:4px;margin:2px 0;white-space:nowrap}
.ex-ckt-r .muted{font-size:0.7857rem}
.ex-lt .ex-ckt input.ex-ckp{width:54px;min-width:54px}
.ex-lt .ex-ckt input.ex-ckm{width:84px;min-width:84px}
.ex-ckt input.src{border-color:var(--brand2);background:color-mix(in srgb,var(--brand2) 5%,#fff)}
.ex-ckt .btn.sm.ghost{padding:0 6px}
.ex-ckt .pill{margin-top:3px;display:inline-block}
.ex-ckt-tot{white-space:nowrap;font-size:0.8571rem}
/* v1.5 — đánh lại số chứng từ */
.ex-renum-box{margin-top:10px}
.ex-renum-sort{margin:4px 0}
.ex-renum-sort select{width:auto;min-width:170px;max-width:240px}
.ex-renum-act{display:flex;justify-content:flex-end;gap:8px;margin:10px 0}
/* v1.6 — bảng dòng hàng theo mẫu giao diện */
.ex-lt6{table-layout:fixed;border-collapse:separate;border-spacing:0}
.ex-lt6 th{position:relative;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;user-select:none}
.ex-lt6 td{overflow:hidden}
.ex-lt6 td input,.ex-lt6 td select{width:100%;min-width:0;box-sizing:border-box}
.ex-lt6 .ex-stick{position:sticky;z-index:2;background:var(--card,#fff)}
.ex-lt6 th.ex-stick{z-index:3;background:var(--th,color-mix(in srgb,var(--brand) 7%,#fff))}
.ex-lt6 .ex-ten{white-space:nowrap;text-overflow:ellipsis}
.ex-lt6 .ex-prod{overflow:visible}
.ex-rs{position:absolute;right:0;top:0;bottom:0;width:6px;cursor:col-resize}
.ex-rs:hover{background:#2f7d6455}
.ex-ctx{position:absolute;z-index:999;background:#fff;border:1px solid #ccc;border-radius:6px;box-shadow:0 4px 14px #0002;padding:4px 0;font-size:0.9286rem}
.ex-ctx div{padding:6px 14px;cursor:pointer}.ex-ctx div:hover{background:color-mix(in srgb,var(--brand) 7%,#fff)}
.ex-chg{margin:3px 0 4px 16px;padding:0;font-size:0.8571rem}.ex-chg li{margin:1px 0}
.ex-logi{margin-bottom:6px}
.ex-lyd{min-width:640px}
.ex-lt6 td input,.ex-lt6 td select{min-width:0!important;width:100%!important;max-width:none!important;padding-left:4px!important;padding-right:4px!important}
.ex-lt6 td .ex-pick{width:100%}
.modal .box:has(.ex-lyd){width:min(960px,96vw);max-width:96vw}
.ex-lyd{min-width:0}
/* v1.7 — điều xe */
.ex-pickbox{margin-top:14px;border-top:1px dashed #ccd;padding-top:8px}
.ex-tot .big b{font-size:1.2857rem}
tr.clk{cursor:pointer}tr.clk:hover td{background:#f3f8f5}

/* ---------- v1.8: Kanban không kéo thả, sửa cột trên bảng, tiến độ */
.board.eq.has-add{grid-template-columns:repeat(var(--ncol,5),minmax(150px,1fr)) 44px}
.col-add{flex:0 0 44px;align-self:stretch;min-height:120px;border:1.5px dashed color-mix(in srgb,var(--brand) 33%,#fff);background:transparent;border-radius:var(--radius);color:var(--muted);
  cursor:pointer;display:flex;flex-direction:column;align-items:center;justify-content:flex-start;gap:8px;padding:16px 0;font-size:0.8571rem}
.col-add span{font-size:1.5714rem;line-height:1}
.col-add em{font-style:normal;writing-mode:vertical-rl}
.col-add:hover{border-color:var(--brand2);color:var(--brand2);background:color-mix(in srgb,var(--brand2) 5%,#fff)}
.col-menu{border:0;background:rgba(255,255,255,.22);color:#fff;border-radius:6px;width:26px;height:26px;cursor:pointer;font-size:1.0714rem;line-height:24px;padding:0;opacity:.85}
.col-menu:hover,.col-menu:focus-visible{background:rgba(255,255,255,.42);opacity:1}
.card .kprog{display:inline-flex;align-items:center;gap:5px;font-size:0.8214rem}
.card .kprog-b{width:46px;height:5px;background:color-mix(in srgb,var(--brand) 15%,#fff);border-radius:3px;overflow:hidden;display:inline-block}
.card .kprog-b i{display:block;height:100%;background:var(--ok)}
.card-mv{border:1px solid var(--line);background:#fff;border-radius:6px;font-size:0.8214rem;padding:2px 7px;cursor:pointer;color:var(--muted)}
.card-mv:hover,.card-mv:focus-visible{border-color:var(--brand2);color:var(--brand)}
.kb-pop{position:fixed;z-index:60;background:#fff;border:1px solid var(--line);border-radius:9px;box-shadow:0 10px 28px rgba(0,0,0,.16);padding:6px;min-width:220px;max-width:320px;display:flex;flex-direction:column;gap:2px}
.kb-pop-h{font-size:0.8571rem;font-weight:600;color:var(--muted);padding:4px 8px 6px}
.kb-pop-n{font-size:0.8214rem;padding:6px 8px}
.kb-pop-i{display:flex;align-items:center;gap:6px;text-align:left;border:0;background:none;border-radius:6px;padding:7px 8px;cursor:pointer;font-size:0.9286rem}
.kb-pop-i:hover:not([disabled]),.kb-pop-i:focus-visible{background:var(--soft)}
.kb-pop-i[disabled]{opacity:.45;cursor:not-allowed}
.kb-pop-i.s-danger{color:var(--danger)}
.kb-pop-i.s-success b{color:var(--ok)}
.kb-pop-i .pill{margin-left:auto}
.kb-colors{display:flex;gap:6px;padding:4px 8px 6px;flex-wrap:wrap}
.kb-sw{width:22px;height:22px;border-radius:50%;border:2px solid #fff;box-shadow:0 0 0 1px var(--line);cursor:pointer;padding:0}
.kb-sw.on{box-shadow:0 0 0 2px var(--ink)}
.kb-add .fld{margin-bottom:10px}
.pt-link.pt-new{color:var(--side-ink);font-size:0.8929rem}

/* ---------- v1.8: hộp Tạo quy trình — 3 kiểu + mẫu trực quan */
.modal .box.wb-newbox{width:min(860px,95vw);max-width:95vw}
.wb-kinds{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px;margin:4px 0 12px}
.wb-kind{display:grid;grid-template-columns:28px 1fr;gap:2px 8px;text-align:left;border:1px solid var(--line);background:#fff;border-radius:9px;padding:10px;cursor:pointer}
.wb-kind .wb-kind-i{grid-row:span 2;width:28px;height:28px;border-radius:7px;background:var(--soft);display:flex;align-items:center;justify-content:center;font-size:1.0714rem;color:var(--brand2)}
.wb-kind span:last-child{font-size:0.8571rem;color:var(--muted);line-height:1.35}
.wb-kind.on{border-color:var(--brand2);background:color-mix(in srgb,var(--brand2) 5%,#fff);box-shadow:0 0 0 3px color-mix(in srgb,var(--brand2) 13%,transparent)}
.wb-kind.on .wb-kind-i{background:var(--brand2);color:#fff}
.wb-sugg{font-size:0.8929rem;color:var(--brand2);min-height:18px;margin:2px 0 6px}
.wb-gal{display:grid;grid-template-columns:repeat(auto-fill,minmax(250px,1fr));gap:10px}
.wb-gt{text-align:left;border:1px solid var(--line);background:#fff;border-radius:10px;padding:0;cursor:pointer;overflow:hidden;display:flex;flex-direction:column}
.wb-gt:hover{border-color:color-mix(in srgb,var(--brand) 33%,#fff)}
.wb-gt.on{border-color:var(--brand2);box-shadow:0 0 0 3px color-mix(in srgb,var(--brand2) 15%,transparent)}
.wb-mini{display:flex;gap:4px;padding:10px 10px 8px;background:#eef2f0;min-height:86px}
.wb-mini-c{flex:1 1 0;min-width:0;background:#fff;border-radius:5px;display:flex;flex-direction:column;gap:4px;padding-bottom:6px;overflow:hidden}
.wb-mini-c.fin{opacity:.75}
.wb-mini-h{height:5px}
.wb-mini-n{font-size:0.75rem;line-height:1.2;padding:0 5px;color:var(--ink);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.wb-mini-k{height:9px;margin:0 5px;border-radius:3px;background:#e7ecea}
.wb-mini-k.short{width:55%}
.wb-gt-b{padding:9px 11px 11px;display:flex;flex-direction:column;gap:3px}
.wb-gt-n{display:flex;align-items:center;gap:6px}
.wb-gt-tag{font-size:0.7857rem;background:var(--brand2);color:#fff;border-radius:5px;padding:1px 6px}
.wb-gt-f{font-size:0.8929rem;color:var(--ink);line-height:1.35}
.wb-gt-m{font-size:0.8214rem;color:var(--muted)}
@media (max-width:700px) and (pointer:coarse){.wb-kinds{grid-template-columns:1fr}}

/* ---------- v1.8: ⚡ Cột & tự động hóa */
.wa-top{margin-bottom:10px}
.wa-top-h{display:flex;align-items:baseline;gap:10px}
.wa-top-h h3{margin:0 0 6px;font-size:1.0714rem}
.wa-row{display:flex;flex-wrap:wrap;gap:8px;align-items:center}
.wa-row .wa-blk{min-width:240px}
.wa-hint{margin:2px 2px 10px}
.wa-lane{display:flex;gap:12px;overflow-x:auto;padding-bottom:10px;align-items:flex-start}
.wa-col{flex:0 0 268px;background:#e9edeb;border-radius:var(--radius);padding:0 10px 10px;display:flex;flex-direction:column;gap:10px}
.wa-col.fin{background:#eef0ef}
.wa-col-h{border-top:5px solid #94a3b8;margin:0 -10px;padding:10px 12px 2px;border-radius:var(--radius) var(--radius) 0 0;display:flex;flex-direction:column;gap:2px}
.wa-col-h b{font-size:1.0357rem}
.wa-kind{font-size:0.8214rem;color:var(--muted)}
.wa-sec{display:flex;flex-direction:column;gap:6px}
.wa-sec-h{font-size:0.8214rem;font-weight:600;color:var(--muted)}
.wa-blk{display:flex;align-items:center;gap:8px;background:#fff;border-radius:8px;padding:7px 8px;box-shadow:var(--shadow)}
.wa-ico{flex:0 0 24px;height:24px;border-radius:6px;background:#eef2f0;color:var(--brand2);display:flex;align-items:center;justify-content:center;font-size:0.8571rem;font-weight:700}
.wa-txt{flex:1;text-align:left;border:0;background:none;padding:0;cursor:pointer;font-size:0.8929rem;line-height:1.35}
.wa-txt[disabled]{cursor:default}
.wa-txt:hover:not([disabled]){color:var(--brand)}
.wa-x{border:0;background:none;color:var(--muted);cursor:pointer;font-size:0.8571rem;padding:2px 4px;border-radius:4px}
.wa-x:hover{color:var(--danger);background:#fbeceb}
.wa-merged{font-size:0.8214rem;color:var(--muted);display:flex;align-items:center;gap:6px}
.wa-add{font-size:0.8929rem;padding:5px 7px;background:transparent;border:1px dashed color-mix(in srgb,var(--brand) 33%,#fff);color:var(--muted)}
.wa-btn{background:#fff;border-radius:8px;padding:7px 9px;box-shadow:var(--shadow);border-left:4px solid var(--blue);display:flex;flex-direction:column;gap:2px}
.wa-btn.s-success{border-left-color:var(--ok)}.wa-btn.s-danger{border-left-color:var(--danger)}
.wa-btn.s-warning{border-left-color:var(--warn)}.wa-btn.s-ghost{border-left-color:#c3ccc8}
.wa-btn-n{border:0;background:none;padding:0;text-align:left;font-weight:600;font-size:0.9286rem;cursor:pointer}
.wa-btn-n:hover{color:var(--brand)}
.wa-arrow{font-size:0.8929rem}
.wa-btns-add{display:flex;gap:6px;flex-wrap:wrap}
.wa-form .fld{margin-bottom:10px}
.wa-form .chk{display:flex;margin:6px 0}

/* ---------- v1.12 Danh mục: thẻ KH / NCC / VTHH theo AMIS (danhmuc.js) */
.pt-mark{background:#fff;overflow:hidden;padding:2px}.pt-mark img{width:100%;height:100%;object-fit:contain;display:block}
.login-logo{display:block;width:220px;max-width:80%;margin:0 auto 14px}
.modal .box.dm-box{width:min(1080px,96vw);max-width:96vw;padding:18px 22px}
.modal .box.dm-box-sm{width:min(460px,96vw)}
.dm-card{display:flex;flex-direction:column;gap:12px}
.dm-headrow{display:flex;align-items:center;gap:16px;flex-wrap:wrap;padding-bottom:4px}
.dm-sep{flex:0 0 1px;height:18px;background:var(--line)}
.dm-radio,.dm-chk{display:inline-flex;align-items:center;gap:7px;cursor:pointer;white-space:nowrap;font-size:1rem;color:var(--ink);margin:0}
.dm-radio input,.dm-chk input{width:16px!important;height:16px;margin:0;flex:none;accent-color:var(--brand)}
.dm-grid{display:grid;gap:10px 14px;align-items:start}
.dm-g1{grid-template-columns:1fr}.dm-g2{grid-template-columns:1fr 1fr}.dm-g3{grid-template-columns:repeat(3,minmax(0,1fr))}
.dm-g5{grid-template-columns:repeat(5,minmax(0,1fr))}
.dm-f{display:flex;flex-direction:column;min-width:0}
.dm-f>label{font-size:0.9286rem;color:#3d4a44;margin-bottom:4px;font-weight:500}
.dm-req{color:var(--danger)}.dm-hint{color:var(--muted);cursor:help}
.dm-card input:not([type=checkbox]):not([type=radio]),.dm-card select,.dm-card textarea{width:100%;min-width:0;border:1px solid color-mix(in srgb,var(--brand) 23%,#fff);border-radius:6px;padding:7px 9px;background:#fff}
.dm-card input:focus,.dm-card select:focus,.dm-card textarea:focus{outline:none;border-color:var(--brand2);box-shadow:0 0 0 2px color-mix(in srgb,var(--brand2) 15%,transparent)}
.dm-card input:disabled,.dm-card select:disabled,.dm-card textarea:disabled{background:var(--soft);color:#55625c}
.dm-card textarea{resize:vertical}
.dm-card .num{text-align:right}
.dm-inline{display:flex;gap:6px;align-items:center;flex-wrap:wrap}.dm-inline>input{flex:1 1 120px}
.dm-xh{flex:0 0 112px!important;width:112px!important}
.dm-sub{font-weight:600;margin:4px 0 6px;font-size:0.9286rem}
.dm-g2>div>input,.dm-g2>div>.dm-inline{margin-bottom:8px}
.dm-tabs{display:flex;gap:2px;border-bottom:1px solid var(--line);overflow-x:auto;margin-top:4px}
.dm-tab{border:0;background:none;padding:9px 14px;border-bottom:3px solid transparent;color:#4f5a55;cursor:pointer;white-space:nowrap}
.dm-tab:hover{color:var(--brand);background:var(--soft)}
.dm-tab.on{color:var(--brand);border-bottom-color:var(--brand);font-weight:600}
.dm-tabbody{padding:14px 2px 4px;min-height:190px}
.dm-mini{width:100%}.dm-mini th{font-size:0.8571rem;text-align:left;color:var(--muted);font-weight:500;padding:4px 6px}
.dm-mini td{padding:3px 4px;vertical-align:middle}
.dm-rows>button{margin-top:6px}
.dm-ptop{display:grid;grid-template-columns:minmax(0,1fr) 150px;gap:18px;align-items:start}
.dm-img{display:flex;flex-direction:column;align-items:center;gap:4px}
.dm-imgframe{width:130px;height:130px;border:1px solid color-mix(in srgb,var(--brand) 23%,#fff);border-radius:8px;display:grid;place-items:center;overflow:hidden;cursor:pointer;background:#fafbfa}
.dm-imgframe img{width:100%;height:100%;object-fit:contain}
.dm-imgph{font-size:3.1429rem;opacity:.35}
.dm-imgact{display:flex;gap:4px}
.dm-thumb{width:32px;height:32px;object-fit:contain;border-radius:4px;border:1px solid var(--line);background:#fff;display:block}
.dm-tcicon{width:30px;height:30px;border-radius:50%;background:color-mix(in srgb,var(--brand2) 13%,#fff);display:grid;place-items:center;font-size:1.0714rem}
.dm-link{color:var(--brand2);text-decoration:underline;font-size:0.9286rem}
.dm-headrow select{width:auto!important}
.dm-hr{border:0;border-top:1px solid var(--line);margin:2px 0}
.dm-sec{border-top:1px solid var(--line);padding-top:8px}
.dm-sec>summary{cursor:pointer;font-weight:600;font-size:1.0714rem;padding:4px 0 10px;list-style:none;display:flex;align-items:center;gap:6px}
.dm-sec>summary::before{content:"›";display:inline-block;transition:transform .15s;font-size:1.2857rem;line-height:1;color:#555}
.dm-sec[open]>summary::before{transform:rotate(90deg)}
.dm-sec>summary::-webkit-details-marker{display:none}
.dm-ro{padding:7px 0;min-height:34px}
@media (max-width:900px) and (pointer:coarse){.dm-g5{grid-template-columns:1fr 1fr}.dm-g5>*{grid-column:auto!important}.dm-g3{grid-template-columns:1fr 1fr}.dm-ptop{grid-template-columns:1fr}}
@media (max-width:600px) and (pointer:coarse){.dm-g2,.dm-g3,.dm-g5{grid-template-columns:1fr}.dm-grid>*{grid-column:auto!important}}
/* sửa lỗi chung: ô tích trong .fld không bị kéo giãn 100% (thẻ cũ: Kho hàng…) */
.fld label.chk input[type=checkbox]{width:auto}
.dm-mini select{min-width:96px}

/* ---------- v1.13 danh mục chung, chọn nhóm, danh sách tùy chỉnh, tìm ảnh */
.dm-gp{display:flex;flex-direction:column;gap:4px;min-width:0}
.dm-gp-chips{display:flex;flex-wrap:wrap;gap:4px}
.dm-gp-chip{display:inline-flex;align-items:center;gap:2px;background:color-mix(in srgb,var(--brand2) 10%,#fff);border:1px solid color-mix(in srgb,var(--brand2) 22%,#fff);border-radius:99px;padding:1px 4px 1px 9px;font-size:0.8571rem;max-width:100%}
.dm-gp-x{border:0;background:none;cursor:pointer;color:#5b6a63;font-size:1.0714rem;line-height:1;padding:0 4px}
.dm-gp-in{position:relative}
.dm-gp-list{position:absolute;z-index:80;left:0;right:0;top:100%;max-height:260px;overflow:auto;background:#fff;border:1px solid color-mix(in srgb,var(--brand) 23%,#fff);border-radius:8px;box-shadow:0 6px 20px rgba(0,0,0,.12);margin-top:2px}
.dm-gp-it{padding:6px 8px;cursor:pointer;font-size:0.9286rem;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.dm-gp-it:hover{background:var(--soft)}.dm-gp-it.on{background:color-mix(in srgb,var(--brand2) 13%,#fff)}.dm-gp-it.on::after{content:" ✓";color:var(--brand)}
.dm-gp-empty{padding:8px}
.dm-mst input{flex:1 1 80px}
.dm-pager{display:flex;align-items:center;gap:8px;flex-wrap:wrap;padding:10px 4px 2px;font-size:0.9286rem}
.dm-pager select{width:auto}
.lv-scroll{overflow-x:auto}
.lv-t{table-layout:fixed}
.lv-t td,.lv-t th{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.lv-t td.lv-wrap{white-space:normal;word-break:break-word}
.modal .box.lv-czbox{width:min(760px,96vw)}
.lv-cz{max-height:58vh;overflow:auto;border:1px solid var(--line);border-radius:8px}
.lv-cz tr[draggable]{cursor:default}.lv-grip{cursor:grab;color:#9aa6a0;text-align:center}
.lv-cz th{position:sticky;top:0;background:color-mix(in srgb,var(--brand) 7%,#fff);z-index:1}
.dm-tree{border:0;background:none;cursor:pointer;color:#5b6a63;width:20px;padding:0;font-size:1rem}
.dm-tree-sp{display:inline-block;width:20px}
.dm-anh-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(130px,1fr));gap:10px;min-height:80px}
.dm-anh-grid.sm{grid-template-columns:repeat(6,minmax(70px,96px))}
.dm-anh-it{border:1px solid var(--line);background:#fff;border-radius:8px;padding:4px;cursor:pointer;display:flex;flex-direction:column;align-items:center;gap:3px;font-size:0.7857rem;color:var(--muted)}
.dm-anh-it:hover{border-color:var(--brand2);box-shadow:0 0 0 2px color-mix(in srgb,var(--brand2) 20%,transparent)}
.dm-anh-it img{width:100%;aspect-ratio:1;object-fit:contain;background:#fafbfa}
.dm-anh-row{display:grid;grid-template-columns:220px 1fr;gap:12px;padding:10px 0;border-bottom:1px solid var(--line);align-items:start}
.dm-anh-row.dm-anh-ok{background:color-mix(in srgb,var(--brand2) 6%,#fff)}
.dm-anh-info{display:flex;flex-direction:column;gap:3px}
.dm-anh-done{width:96px;height:96px;object-fit:contain;border:2px solid var(--ok);border-radius:8px}
.modal .foot .sp{flex:1}
.dm-anh-grid>.warnbox,.dm-anh-grid>.muted{grid-column:1/-1}

/* ================================================================ v1.14 phân hệ Mua hàng (mua.js) + ghi chú 1–3 + sửa nhanh ở danh sách */
.gc-wrap{display:flex;flex-direction:column;gap:4px}
.gc-tabs{display:flex;gap:2px;flex-wrap:wrap;border-bottom:1px solid var(--line)}
.gc-tab{border:0;background:none;padding:4px 10px;font-size:0.8571rem;color:var(--muted,#667);cursor:pointer;border-bottom:2px solid transparent;margin-bottom:-1px}
.gc-tab.on{color:var(--brand);border-bottom-color:var(--brand);font-weight:600}
.gc-tab.co:not(.on)::after{content:" •";color:var(--brand)}
.gc-tab.gc-cfg{margin-left:auto}
.ex-inl2{display:flex;gap:6px}.ex-inl2>*{flex:1;min-width:0}
.mua-bulk{display:flex;align-items:center;gap:8px;flex-wrap:wrap;padding:8px 10px;margin:0 0 8px;background:color-mix(in srgb,var(--brand) 7%,#fff);border:1px solid color-mix(in srgb,var(--brand2) 24%,#fff);border-radius:8px;font-size:0.9286rem}
.mua-bulk select{width:auto}
.mua-fn-h{text-align:right}.mua-fn{text-align:right;white-space:nowrap}
.mua-fn a{font-size:0.8571rem;text-decoration:none;color:var(--brand)}
.mua-btns{display:flex;gap:6px;flex-wrap:wrap;margin-top:6px}
.mua-kv{border-collapse:collapse;font-size:0.9286rem;margin:6px 0}.mua-kv td{padding:2px 10px 2px 0;vertical-align:top}
.mua-mini{font-size:0.8571rem;margin:6px 0}.mua-mini td,.mua-mini th{padding:2px 6px}
.mua-warn{color:#b45309;font-weight:600}
.mua-th td{vertical-align:top}.mua-th select{max-width:170px}
.mua-ncc{font-size:0.8571rem;line-height:1.3}
.mua-grp td{background:#f3f6f4;font-weight:600;font-size:0.9286rem}
tr.mua-sel td{background:color-mix(in srgb,var(--brand2) 7%,#fff)}
tr.mua-app td{background:#fff8f0}
.mua-hien{display:flex;gap:10px;font-size:0.8571rem}
.mua-sum{display:flex;gap:10px;flex-wrap:wrap;margin:6px 0 10px}
.mua-box{border:1px solid var(--line);border-radius:8px;padding:6px 14px;min-width:110px}.mua-box b{font-size:1.4286rem}
.mua-box.green{border-color:#9fd3b6}.mua-box.amber{border-color:#f2c98a}.mua-box.red{border-color:#f0a8a8}
.mua-bc{display:grid;grid-template-columns:300px minmax(0,1fr);gap:12px;align-items:start}
.mua-bc-left{max-height:calc(100vh - 160px);overflow:auto}
.mua-bc-i{display:flex;justify-content:space-between;gap:6px;padding:4px 6px;border-radius:6px;font-size:0.9286rem}
.mua-bc-i.on{background:color-mix(in srgb,var(--brand) 7%,#fff);font-weight:600}.mua-bc-i a{text-decoration:none;color:inherit}
.mua-star{color:#ccc;cursor:pointer}.mua-star.on{color:#1f9d55}
@media (max-width:900px) and (pointer:coarse){.mua-bc{grid-template-columns:1fr}}
.lv-t th.mua-fn-h,.lv-t td.mua-fn{position:sticky;right:0;background:var(--panel);box-shadow:-6px 0 6px -6px #0002;z-index:1}
.mua-rep td,.mua-rep th{white-space:nowrap}.mua-rep td.lv-wrap{white-space:normal;min-width:160px;max-width:320px}
/* v1.14b: danh sách như AMIS (lọc / sắp xếp theo cột, khung chi tiết), trang Quy trình */
.mua-th-c{cursor:pointer;user-select:none}.mua-th-c:hover{background:color-mix(in srgb,var(--brand2) 11%,#fff)}
.mua-th-i{color:var(--muted);font-size:0.7857rem}.mua-th-loc{color:var(--brand)}
.mua-colpop{position:absolute;z-index:1000;background:#fff;border:1px solid color-mix(in srgb,var(--brand) 24%,#fff);border-radius:8px;box-shadow:0 6px 18px #0002;padding:8px 10px;min-width:220px;display:flex;flex-direction:column;gap:4px;font-size:0.9286rem}
.mua-colitem{padding:4px 6px;border-radius:5px;cursor:pointer}.mua-colitem:hover{background:color-mix(in srgb,var(--brand) 7%,#fff)}.mua-colitem.on{font-weight:600;color:var(--brand)}
.mua-colrange{display:flex;gap:6px}.mua-colrange input{width:100px}
.mua-locbar{display:flex;flex-wrap:wrap;gap:6px;align-items:center;margin:0 0 8px}.mua-locbar:empty{display:none}
.mua-pill a{cursor:pointer;margin-left:2px}
tr.mua-cur td{background:color-mix(in srgb,var(--brand2) 13%,#fff)!important}
a.mua-so{font-weight:700;color:var(--blue);text-decoration:none}
.mua-ct{margin-top:10px}.mua-ct-h{display:flex;align-items:center;gap:6px;margin-bottom:6px}
.mua-seg{display:inline-flex;border:1px solid var(--line);border-radius:8px;overflow:hidden;margin:0 0 10px;background:#fff}
.mua-seg a{padding:6px 14px;text-decoration:none;color:var(--ink);font-size:0.9286rem}.mua-seg a.on{background:var(--brand);color:#fff}
.mua-seg .pt-count{margin-left:4px}
.mua-qt{display:grid;grid-template-columns:minmax(0,1fr) 320px;gap:12px;align-items:start}
.mua-qt-flow{display:flex;flex-wrap:wrap;align-items:center;gap:10px 6px;padding:14px 0}
.mua-qt-step{display:flex;flex-direction:column;align-items:center;gap:4px;width:118px;padding:10px 6px;border-radius:10px;text-decoration:none;color:var(--ink);text-align:center;position:relative}
.mua-qt-step:hover{background:color-mix(in srgb,var(--brand) 7%,#fff)}
.mua-qt-ico{width:52px;height:52px;border-radius:12px;background:color-mix(in srgb,var(--brand2) 11%,#fff);display:flex;align-items:center;justify-content:center;font-size:1.8571rem}
.mua-qt-ten{font-size:0.9286rem;line-height:1.25}
.mua-qt-badge{font-size:0.7857rem;background:#fff4e0;color:#9a5b00;border-radius:10px;padding:1px 7px}
.mua-qt-arrow{color:#9fb3aa;font-size:1.2857rem}
.mua-qt-bc{display:block;padding:6px 4px;border-bottom:1px dashed var(--line);text-decoration:none;color:var(--ink);font-size:0.9286rem}
@media (max-width:1000px) and (pointer:coarse){.mua-qt{grid-template-columns:1fr}}
/* v1.14.2 Kanban đề nghị mua + thiết lập tab */
.mua-kb-nhanh{margin-bottom:10px}.mua-kb-row{display:flex;gap:8px;flex-wrap:wrap;align-items:center}
.mua-kb-gio{display:flex;gap:6px;flex-wrap:wrap;align-items:center;margin-top:8px}.mua-kb-gio:empty{display:none}
.mua-kb-chip{background:color-mix(in srgb,var(--brand) 7%,#fff);border:1px solid color-mix(in srgb,var(--brand2) 24%,#fff);border-radius:14px;padding:3px 10px;font-size:0.9286rem}.mua-kb-chip a{cursor:pointer;color:var(--danger)}
.mua-kb{display:grid;grid-auto-flow:column;grid-auto-columns:minmax(250px,1fr);gap:10px;overflow-x:auto;align-items:start;padding-bottom:8px}
.mua-kb-col{background:#eef1ef;border-radius:10px;padding:8px;min-height:120px}
.mua-kb-h{display:flex;justify-content:space-between;align-items:center;font-weight:600;font-size:0.9286rem;padding:2px 4px 8px;text-transform:uppercase;letter-spacing:.02em;color:#41524b}
.mua-kb-n{background:#fff;border-radius:10px;padding:0 8px;font-size:0.8571rem}
.mua-kb-cho .mua-kb-h{color:#9a5b00}.mua-kb-da_ve .mua-kb-h{color:var(--ok)}.mua-kb-khong_dat .mua-kb-h{color:var(--muted)}
.mua-kb-list{display:flex;flex-direction:column;gap:8px;max-height:calc(100vh - 330px);overflow:auto}
.mua-kb-card{background:#fff;border-radius:8px;padding:8px 10px;box-shadow:var(--shadow);font-size:0.9286rem;border-left:3px solid transparent}
.mua-kb-card.cham{border-left-color:#e0a030}
.mua-kb-t{line-height:1.3}.mua-kb-sl{margin-top:2px}.mua-kb-gc{margin-top:4px;color:#334}.mua-kb-gc1{font-size:0.8571rem;color:var(--brand)}
.mua-kb-xl{font-size:0.8571rem;color:#7a5a00;margin-top:2px}
.mua-kb-f{display:flex;gap:8px;justify-content:space-between;font-size:0.8571rem;margin-top:6px;color:#556}
.mua-kb-btns{display:flex;gap:10px;flex-wrap:wrap;margin-top:6px;padding-top:6px;border-top:1px dashed var(--line);font-size:0.8571rem}
a.pt-tab.mua-tabcfg{margin-left:auto;color:var(--muted)}
.mua-gh th.mua-gh-th{font-size:0.7857rem;font-weight:600;max-width:80px;white-space:normal;text-align:center}
/* v1.15 phân hệ Bán hàng */
.mua-box.blue{border-color:#9cc0ef}
.ban-pts{display:flex;gap:12px;flex-wrap:wrap;align-items:flex-start}.ban-pt{min-width:280px;flex:1}
.ban-nx-loi td{background:#fff4f2}
.ban .mua-bulk select{max-width:220px}
.modal .box.ban-nx-box{width:min(1040px,96vw);max-width:96vw}
/* v1.15.1 bảng nổi phân hệ (như AMIS) */
.pt-fly{position:fixed;z-index:60;display:flex;gap:28px;background:#1f2329;color:#e8eaed;border-radius:8px;padding:16px 22px 14px;box-shadow:0 10px 32px rgba(0,0,0,.35);max-height:calc(100vh - 16px);overflow:auto}
.pt-fly-col{display:flex;flex-direction:column;min-width:200px}
.pt-fly-h{font-weight:600;font-size:0.9286rem;margin:0 0 8px;color:#fff}
.pt-fly-i{color:#d7dbe0;text-decoration:none;font-size:0.9643rem;padding:7px 4px;border-radius:5px;white-space:nowrap}
.pt-fly-i:hover{background:rgba(255,255,255,.08);color:#fff}.pt-fly-i.on{color:#7fd6a6;font-weight:600}

/* ================================================================ v1.16 phân hệ Kho */
.kho-hint{margin:-4px 0 8px}
.kho-chips{display:inline-flex;gap:4px;flex-wrap:wrap}
.kho-head .kho-h1{display:flex;align-items:center;gap:6px;font-size:1.0714rem;margin-bottom:6px}
.kho-khu .kho-kh{display:flex;align-items:center;gap:6px;flex-wrap:wrap;margin-bottom:8px}
.kho-khu .kho-kh .sp{flex:1}
.kho-kpill{margin:0 4px 2px 0;display:inline-block}
.kho-in{width:90px;text-align:right}
.kho-ld{max-width:170px}
tr.kho-done td{background:color-mix(in srgb,var(--brand) 5%,transparent)}
.kho-thua{color:var(--brand);font-weight:600}
.kho-loc{display:flex;gap:6px;flex-wrap:wrap;align-items:center;margin-bottom:8px}
.kho-khubox{display:flex;gap:10px;flex-wrap:wrap}
.kho-card .ex-s{margin-top:4px}
.ex-head .kho-lock,button.kho-lock{opacity:.45;cursor:not-allowed}

/* ================================================================ v1.17 — menu trái phẳng, Hay dùng, Vai trò & quyền hạn */
.pt-sech{display:flex;align-items:center;gap:6px;font-size:0.8214rem;font-weight:600;letter-spacing:.02em;color:var(--side-mute);padding:10px 10px 4px}
.pt-sech-btn{border:0;background:transparent;font:inherit;font-size:0.8214rem;font-weight:600;cursor:pointer;color:var(--side-mute)}
.pt-sech-btn:hover{color:var(--side-hi)}
.pt-sech-btn:focus-visible,.pt-hdedit:focus-visible,.pt-hdadd:focus-visible,.pt-hdx:focus-visible,.pt-star:focus-visible{outline:2px solid var(--side-acc);outline-offset:1px}
.pt-chev.open-up{transform:rotate(-90deg)}
.pt-hdh{display:flex;align-items:center}
.pt-hdedit{margin-left:auto;border:0;background:transparent;color:var(--side-mute);font:inherit;font-size:0.8214rem;cursor:pointer;padding:4px 8px;border-radius:5px}
.pt-hdedit:hover{color:var(--side-hi);background:rgba(var(--side-ov),.07)}
.pt-hdlist{display:flex;flex-direction:column;gap:1px;padding-bottom:4px;border-bottom:1px solid rgba(var(--side-ov),.1);margin-bottom:4px}
.pt-hd{position:relative;padding-right:28px}
.pt-hdo{flex:none;width:22px;height:22px;border-radius:50%;display:grid;place-items:center;font-size:0.8214rem;font-weight:700;background:color-mix(in srgb,var(--brand2) 10%,#fff);color:var(--brand-d);box-shadow:inset 0 0 0 2px color-mix(in srgb,var(--brand2) 10%,#fff)}
.pt-hdo.hd-thuchi{box-shadow:inset 0 0 0 2px #7fd6a6}.pt-hdo.hd-banhang{box-shadow:inset 0 0 0 2px #8fbff0}.pt-hdo.hd-muahang{box-shadow:inset 0 0 0 2px #f0c27f}
.pt-hdo.hd-kho{box-shadow:inset 0 0 0 2px #c7a9ef}.pt-hdo.hd-danhmuc{box-shadow:inset 0 0 0 2px color-mix(in srgb,var(--brand2) 43%,#fff)}
.pt-hdx{position:absolute;right:4px;top:50%;transform:translateY(-50%);width:20px;height:20px;border:0;border-radius:4px;background:transparent;color:var(--side-mute);cursor:pointer;opacity:0;font-size:1rem;line-height:1}
.pt-hd:hover .pt-hdx,.pt-hdx:focus-visible{opacity:1}.pt-hdx:hover{background:rgba(var(--side-ov),.12);color:var(--side-hi)}
.pt-hdempty{font-size:0.8571rem;color:var(--side-mute);padding:4px 10px 6px;line-height:1.45}
.pt-hdadd{margin:6px 6px 4px;border:1px solid rgba(var(--side-ov),.22);background:rgba(var(--side-ov),.06);color:var(--side-ink);border-radius:6px;padding:5px 8px;font:inherit;font-size:0.8929rem;cursor:pointer}
.pt-hdadd:hover{background:rgba(var(--side-ov),.12);color:var(--side-hi)}
.pt-mini .pt-hdx,.pt-mini .pt-hdadd,.pt-mini .pt-hdedit,.pt-mini .pt-sech,.pt-mini .pt-hdempty{display:none}
.pt-mini .pt-hd{padding-right:10px}
.pt-grp.pt-flat .pt-chev{opacity:.55}
.pt-fly-row{display:flex;align-items:center;gap:4px}.pt-fly-row .pt-fly-i{flex:1}
.pt-star{border:0;background:transparent;color:#8a949e;font-size:1.0714rem;line-height:1;width:24px;height:24px;border-radius:5px;cursor:pointer;opacity:.0}
.pt-fly-row:hover .pt-star,.pt-star.on,.pt-star:focus-visible{opacity:1}.pt-star:hover{background:rgba(255,255,255,.1);color:#fff}.pt-star.on{color:#f3c74c}
.hd-edit{display:flex;flex-direction:column;gap:6px;min-width:min(520px,80vw)}
.hd-erow{display:flex;align-items:center;gap:6px}.hd-erow input{flex:1}
.hd-erow .pt-hdo{box-shadow:inset 0 0 0 2px color-mix(in srgb,var(--brand2) 23%,#fff)}
/* Thành viên */
.pt-vtchips{gap:8px 18px}
.pt-vtsel{margin-left:6px;max-width:220px}
.pt-vtcell{display:flex;flex-wrap:wrap;gap:3px}
.pt-remote{display:flex;gap:8px;align-items:center;flex-wrap:wrap;font-size:0.9286rem;margin-top:6px}
.pt-rieng{margin-top:14px;border:1px solid var(--line);border-radius:8px;padding:2px 12px 10px}
.pt-rieng>summary{cursor:pointer;font-weight:650;color:var(--brand);padding:8px 0}
.pt-thucte{display:flex;flex-direction:column;gap:3px;font-size:0.9286rem;background:#f6f9f7;border-radius:7px;padding:8px 10px}
/* Vai trò & quyền hạn */
.vt-grid{display:grid;grid-template-columns:minmax(220px,280px) minmax(0,1fr);gap:14px;align-items:start}
@media (max-width:900px) and (pointer:coarse){.vt-grid{grid-template-columns:minmax(0,1fr)}}
.vt-left{position:sticky;top:8px;display:flex;flex-direction:column;gap:8px}
.vt-lhead{display:flex;align-items:center;justify-content:space-between;gap:8px}.vt-lhead h3{margin:0}
.vt-list{display:flex;flex-direction:column;gap:2px;max-height:60vh;overflow:auto}
.vt-li{display:flex;align-items:center;gap:8px;text-align:left;border:0;background:transparent;padding:8px 10px;border-radius:7px;font:inherit;cursor:pointer;color:inherit}
.vt-li:hover{background:#f1f5f3}.vt-li.on{background:color-mix(in srgb,var(--brand2) 13%,#fff);box-shadow:inset 3px 0 0 var(--side2)}
.vt-li:focus-visible{outline:2px solid var(--side2);outline-offset:1px}
.vt-lit{flex:1;font-weight:600}.vt-lin{font-size:0.8571rem;color:#6b7772}
.vt-edh{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.vt-edh h3{margin:0}.vt-edh .sp{flex:1}
.btn.pulse{box-shadow:0 0 0 3px color-mix(in srgb,var(--brand) 25%,transparent)}
.vt-pwrap{display:flex;flex-direction:column;gap:8px}.vt-pwrap select{max-width:320px}
.vt-people{display:flex;flex-wrap:wrap;gap:6px}
.vt-chip{display:inline-flex;align-items:center;gap:4px;background:color-mix(in srgb,var(--brand) 7%,#fff);border-radius:14px;padding:3px 4px 3px 10px;font-size:0.9286rem}
.vt-chip button{border:0;background:transparent;cursor:pointer;width:20px;height:20px;border-radius:50%;color:#5b6661}.vt-chip button:hover{background:color-mix(in srgb,var(--brand) 17%,#fff)}
.vt-area{border:1px solid var(--line);border-radius:8px;margin:8px 0;padding:0 12px}
.vt-area>summary{cursor:pointer;padding:10px 0;display:flex;gap:10px;align-items:baseline;flex-wrap:wrap}
.vt-sum{font-size:0.8929rem;color:color-mix(in srgb,var(--brand) 93%,#fff)}.vt-sum.muted{color:#8a948f}
.vt-mat{margin-bottom:8px}.vt-mat th,.vt-mat td{padding:5px 8px}
.vt-mat th.vt-c,.vt-mat td.vt-c{text-align:center;width:1%;white-space:nowrap;font-size:0.8929rem}
.vt-mat tr.vt-all td{background:#f4f8f6;font-weight:600}
.vt-cb{display:inline-grid;place-items:center;width:28px;height:24px;cursor:pointer}
.vt-ke{opacity:.55;cursor:default}
.pt-grp.pt-flat .pt-gbtn.cur{background:rgba(var(--side-ov),.12);box-shadow:inset 3px 0 0 var(--side-acc)}
.pt-tuvt{display:inline-block;align-self:flex-start;font-size:0.7857rem;color:#5b6661;background:#eef0ef;border-radius:9px;padding:0 7px;margin-left:24px}

/* ---------- v1.18 (BOI-CANH 11.60 mục 3, 5): kẻ mờ dòng + cột, hàng tiêu đề màu riêng, tay kéo cột nhìn thấy */
:root{--grid:color-mix(in srgb,var(--brand) 15%,#fff);--grid-h:color-mix(in srgb,var(--brand) 26%,#fff);--th-bg:color-mix(in srgb,var(--brand2) 13%,#fff);--th-ink:var(--brand-d)}
table.t th,.ex-lt th{background:var(--th-bg);color:var(--th-ink);border:1px solid var(--grid-h)}
table.t td,.ex-lt td{border:1px solid var(--grid)}
table.t,.ex-lt{border-collapse:collapse}
.ex-lt6{border-collapse:separate}
.ex-lt6 th,.ex-lt6 td{border-width:0 1px 1px 0}
.ex-lt6 tr>*:first-child{border-left-width:1px}
.ex-lt6 thead tr:first-child th,.ex-lt6 tr:first-child th{border-top-width:1px}
.ex-rs{border-right:2px solid transparent}
th:hover>.ex-rs{border-right-color:color-mix(in srgb,var(--brand2) 53%,transparent)}
/* v1.19 (q69): màn chi tiết việc — sửa tại chỗ, dòng tóm tắt */
.q69-info h4{display:flex;align-items:center;gap:8px}
.q69-cell{padding:4px 6px;border-radius:6px;min-width:0}
.q69-cell.wide{grid-column:1/-1}
.q69-cell.miss{background:#fdecec}
.q69-v.can{cursor:text;border-bottom:1px dashed transparent}
.q69-cell:hover .q69-v.can{border-bottom-color:color-mix(in srgb,var(--brand) 46%,#fff);background:#f3f8f5}
.q69-cell.editing{background:#f3f8f5;outline:1px solid color-mix(in srgb,var(--brand2) 35%,#fff)}
.q69-ed input,.q69-ed select,.q69-ed textarea{width:100%}
.q69-edb{display:flex;gap:6px;align-items:center;margin-top:4px;flex-wrap:wrap}
.q69-rest{margin-top:8px;padding-top:8px;border-top:1px dashed color-mix(in srgb,var(--brand) 15%,#fff)}
.q69-title{display:flex;align-items:center;gap:6px;flex-wrap:wrap}
.tlnote.chg div{margin:1px 0}

/* ================================================================ v1.19 (q60e, q60i, q61-b): Tùy chọn giao diện theo từng người
   Bộ màu = đổi biến gốc; mọi màu thương hiệu trong tệp này đã quy về --brand / --brand2 (color-mix). Cỡ chữ = cỡ gốc của html (rem). */
html{font-size:14px}
html[data-fs="13"]{font-size:13px}html[data-fs="15"]{font-size:15px}html[data-fs="16"]{font-size:16px}
html[data-mau="bien"]{--brand:#1d4e89;--brand2:#2a6db5;--side:#143457;--side-ink:#d3e0f1;--side-mute:#8da7c6;--side-acc:#9ccbf5;--bg:#f2f4f7;--soft:#f6f8fb;--line:#e1e5eb}
html[data-mau="ngoc"],html[data-mau="dao"],html[data-mau="oaihuong"]{--side-ink:#2d3a37;--side-mute:#74817d;--side-ov:0,0,0;--side-hi:var(--brand);--side-acc:var(--brand2);--side-line:var(--line)}
html[data-mau="ngoc"]{--brand:#0b655c;--brand2:#0f7f74;--side:#eef7f5;--bg:#f2f6f5}
html[data-mau="dao"]{--brand:#9d4318;--brand2:#c2541f;--side:#fdf4ee;--bg:#f7f4f2;--soft:#fbf8f6;--line:#eae4df}
html[data-mau="oaihuong"]{--brand:#5237b0;--brand2:#6a4bd1;--side:#f4f1fc;--bg:#f4f3f8;--soft:#f8f7fb;--line:#e5e2ee}
.pt-side{border-right:1px solid var(--side-line)}
html[data-mau="ngoc"] .pt-count,html[data-mau="dao"] .pt-count,html[data-mau="oaihuong"] .pt-count{color:#fff}
/* mật độ dòng bảng */
html[data-md="gon"] table.t th,html[data-md="gon"] table.t td{padding-top:3px;padding-bottom:3px}
html[data-md="gon"] .ex-lt td,html[data-md="gon"] .ex-lt th{padding-top:1px;padding-bottom:1px}
html[data-md="thoang"] table.t th,html[data-md="thoang"] table.t td{padding-top:10px;padding-bottom:10px}
html[data-md="thoang"] .ex-lt td,html[data-md="thoang"] .ex-lt th{padding-top:6px;padding-bottom:6px}
/* đường kẻ ô rõ */
html[data-ke="ro"]{--grid:color-mix(in srgb,var(--brand) 34%,#fff);--grid-h:color-mix(in srgb,var(--brand) 50%,#fff)}
/* hộp Tùy chọn giao diện */
.gd-row{display:grid;grid-template-columns:150px minmax(0,1fr);gap:12px;align-items:center;padding:9px 0;border-bottom:1px solid var(--line)}
.gd-row>b{font-weight:600}
.gd-opts{display:flex;gap:6px;flex-wrap:wrap}
.gd-o{border:1px solid var(--line);background:var(--panel);border-radius:8px;padding:5px 11px;cursor:pointer;display:inline-flex;align-items:center;gap:7px}
.gd-o.on{border-color:var(--brand2);box-shadow:0 0 0 2px color-mix(in srgb,var(--brand2) 25%,transparent);font-weight:600}
.gd-sw{width:26px;height:16px;border-radius:4px;display:inline-block;border:1px solid #0002}

/* ================================================================ v1.19 (q60g, q60h, q61-a): khung trang máy tính
   Máy có chuột: trang tối thiểu 1024 px, cửa sổ hẹp hơn → giữ bố cục + cuộn ngang (không xếp chồng). Màn cảm ứng giữ kiểu co cũ. */
@media (hover:hover) and (pointer:fine){
  body{min-width:1024px}
  .pt-shell{min-width:1024px}
}
.pt-shell.pt-full{grid-template-columns:minmax(0,1fr)}
.pt-shell.pt-full>.pt-side{display:none}
.pt-fullbar{display:flex;align-items:center;gap:8px;padding:6px 14px;background:var(--brand);color:#fff;position:sticky;top:0;z-index:25}
.pt-fullbar a,.pt-fullbar button{color:#fff;background:rgba(255,255,255,.12);border:0;border-radius:7px;padding:5px 11px;cursor:pointer;text-decoration:none;font:inherit;white-space:nowrap}
.pt-fullbar a:hover,.pt-fullbar button:hover{background:rgba(255,255,255,.24)}
.pt-fullbar .sp{flex:1}
.pt-fullbar b{white-space:nowrap}

/* ================================================================ v1.19 (q60d–f, q61-c): dòng lọc dưới tiêu đề ở mọi danh sách */
tr.dl-row td.dl-c{padding:2px 3px!important;background:color-mix(in srgb,var(--brand2) 5%,#fff);border:1px solid var(--grid);overflow:visible;vertical-align:middle}
tr.dl-row td.dl-x{background:repeating-linear-gradient(135deg,transparent 0 5px,color-mix(in srgb,var(--brand) 7%,#fff) 5px 6px)}
.dl-w{display:flex;align-items:stretch;border:1px solid var(--line);border-radius:5px;background:#fff;min-width:0}
.dl-w:focus-within{border-color:var(--brand2)}
.dl-op{flex:none;min-width:22px;border:0;border-right:1px solid var(--line);background:var(--soft);color:var(--brand);font-size:0.7857rem;font-weight:700;cursor:pointer;padding:0 3px;border-radius:4px 0 0 4px}
.dl-op:hover{background:color-mix(in srgb,var(--brand2) 14%,#fff)}
.dl-i{flex:1;min-width:0;width:100%;border:0!important;box-shadow:none!important;padding:3px 5px!important;border-radius:0 4px 4px 0;font-size:0.8929rem;background:transparent}
select.dl-i{border:1px solid var(--line)!important;border-radius:5px;background:#fff}
.dl-i.dl-loi{background:#fdecec}
.dl-pop{position:absolute;z-index:1200;background:#fff;border:1px solid var(--line);border-radius:8px;box-shadow:0 6px 18px #0002;padding:4px;min-width:190px;font-size:0.9286rem}
.dl-popi{display:flex;gap:8px;padding:5px 8px;border-radius:5px;cursor:pointer;white-space:nowrap}
.dl-popi b{min-width:24px;color:var(--brand)}
.dl-popi:hover,.dl-popi.on{background:color-mix(in srgb,var(--brand2) 11%,#fff)}
tr.dl-an{display:none}
.dl-nut.on{border-color:var(--brand2);color:var(--brand)}
.dl-nutrow{display:flex;justify-content:flex-end;margin:0 0 4px}
.dl-xoa{font-size:0.8214rem;white-space:nowrap;text-decoration:none;color:var(--danger)}
.dl-dem{font-size:0.7857rem}
/* danh sách: cột giữ độ rộng đã đặt, không giãn theo màn — chỗ dư để trống bên phải (q60f-1) */
.lv-t{width:auto}
.lv-t th{position:relative}

/* ================================================================ v1.19 (q60-5, q60a, q60c, q60f, q61-d): form chứng từ kiểu AMIS */
.ex-hd{display:grid;grid-template-columns:minmax(0,940px) minmax(12px,1fr) 250px;align-items:start}
.ex-hdl{grid-template-columns:repeat(12,minmax(0,1fr));gap:8px 10px}
.ex-hdl>.ex-c3{grid-column:span 3}.ex-hdl>.ex-c6{grid-column:span 6}.ex-hdl>.ex-c9{grid-column:span 9}.ex-hdl>.ex-c12{grid-column:span 12}
.ex-hdl .fld input:not([type=checkbox]),.ex-hdl .fld select,.ex-hdr .fld input{width:100%}
.ex-hdr{display:flex;flex-direction:column;gap:8px}
.ex-hd-so{font-weight:700;font-variant-numeric:tabular-nums}
.ex-hd-tw{margin-top:4px;text-align:right;border-top:1px solid var(--line);padding-top:8px}
.ex-hd-tw span{display:block;font-size:0.8571rem;color:var(--muted)}
.ex-hd-tong{font-size:1.7143rem;color:var(--brand);font-variant-numeric:tabular-nums;white-space:nowrap}
.ex-hd-ma .ex-pick{display:flex;gap:4px}.ex-hd-ma .ex-pick>input{flex:1;min-width:0}
.ex-hd-ma .ex-pl{min-width:420px}
.ex-hd-them{flex:none;padding:3px 9px}
.ex-hd-ten{font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.ex-hd-no{align-self:end}
.ex-nocu{display:inline-flex;flex-direction:column;text-decoration:none;color:inherit;cursor:pointer;line-height:1.25;padding-bottom:3px}
.ex-nocu span{font-size:0.8214rem;color:var(--muted)}
.ex-nocu b{border-bottom:1px dotted var(--muted);font-variant-numeric:tabular-nums}
.ex-nocu:empty{display:none}
.ex-ngay{font-variant-numeric:tabular-nums;max-width:130px}
.ex-hdr .ex-ngay{max-width:none}
.ex-lk{display:flex;gap:4px;flex-wrap:wrap;margin-top:4px}
.ex-lkc{font-size:0.8214rem;padding:1px 7px;border-radius:9px;background:color-mix(in srgb,var(--brand2) 11%,#fff);color:var(--brand);text-decoration:none;white-space:nowrap}
.ex-cuoi{margin-top:12px}
.ex-giaw{display:flex;align-items:stretch}.ex-giaw>input{flex:1;min-width:0;border-radius:7px 0 0 7px}
.ex-giab{flex:none;border:1px solid var(--line);border-left:0;background:var(--soft);border-radius:0 7px 7px 0;cursor:pointer;padding:0 4px;color:var(--brand);font-size:0.7857rem}
.ex-giab:hover{background:color-mix(in srgb,var(--brand2) 14%,#fff)}
.ex-giam{min-width:270px}.ex-giam>div{display:flex;justify-content:space-between;gap:14px}.ex-giam>div.off{color:var(--muted);cursor:default}
.ex-giam small{color:var(--muted)}
.ex-pl table.ex-tra{border-collapse:collapse;width:100%;font-size:0.9286rem}
.ex-tra th{position:sticky;top:0;background:var(--th-bg);color:var(--th-ink);text-align:left;padding:4px 8px;font-weight:600;white-space:nowrap}
.ex-tra td{padding:4px 8px;white-space:nowrap;border-bottom:1px solid var(--grid)}
.ex-tra td.ex-tra-ten{max-width:280px;overflow:hidden;text-overflow:ellipsis}
.ex-tra th.num,.ex-tra td.num{text-align:right}
.ex-tra tr.ex-pi{cursor:pointer}.ex-tra tr.ex-pi.on td,.ex-tra tr.ex-pi:hover td{background:color-mix(in srgb,var(--brand2) 11%,#fff)}
.ex-tra-f{display:flex;gap:14px;align-items:center;padding:6px 8px;border-top:1px solid var(--line);font-size:0.8571rem;position:sticky;bottom:0;background:#fff}
.ex-tra-f a,.ex-tra-f label{cursor:pointer;color:var(--brand);white-space:nowrap}
.ex-prod .ex-pl{min-width:640px;max-height:340px;overflow:auto}
.ex-rowfn{white-space:nowrap;padding-left:0!important;padding-right:0!important}.ex-rowfn .btn{padding:3px 5px}
.ex-sidew{min-width:0}
.ex-sidet{display:block;margin:0 0 6px auto;border:0;background:none;color:var(--muted);cursor:pointer;font-size:0.8571rem;padding:2px 4px}
.ex-sidet:hover{color:var(--brand)}
.ex-grid.ex-noside{grid-template-columns:minmax(0,1fr) auto}
.ex-grid.ex-noside .ex-side{display:none}
.ex-grid.ex-noside .ex-sidet{writing-mode:vertical-rl;margin:0;padding:8px 2px;background:var(--panel);border:1px solid var(--line);border-radius:8px}
/* cửa sổ < 1180 px: thu nhỏ cột, khối phải vẫn bên phải (q60f-1) */
@media (max-width:1180px){.ex-hd{grid-template-columns:minmax(0,1fr) 12px 210px}}
.ex-ctx>div.off{color:var(--muted);cursor:default}
.ex-tim{min-width:260px}

/* ================================================================ v1.19 (q61-f): đính kèm + bình luận cuối trang chứng từ */
.ex-cuoi-them{margin-top:12px}
.td-wrap{display:flex;flex-direction:column;gap:12px}
.td-h{display:flex;align-items:center;gap:8px;margin-bottom:8px}
.td-teps{display:flex;flex-wrap:wrap;gap:8px}
.td-tep{display:inline-flex;align-items:center;gap:6px;border:1px solid var(--line);border-radius:8px;padding:4px 8px;background:var(--soft);max-width:100%}
.td-tep img{width:34px;height:34px;object-fit:cover;border-radius:5px}
.td-tep a{text-decoration:none;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:260px}
.td-xoa{color:var(--danger)!important}
.td-dk.td-tha{outline:2px dashed var(--brand2);outline-offset:-4px}
.td-bl{padding:8px 0;border-top:1px solid var(--line)}
.td-bl.td-con{margin-left:30px;border-top:1px dashed var(--line)}
.td-dau{display:flex;gap:8px;align-items:center;flex-wrap:wrap;font-size:0.8929rem}
.td-dau a{text-decoration:none;font-size:0.8214rem}
.td-than{margin:4px 0 0 30px}
.td-chu{white-space:pre-wrap;word-break:break-word}
.td-nhac{color:var(--brand);font-weight:600;background:color-mix(in srgb,var(--brand2) 11%,#fff);border-radius:4px;padding:0 3px}
.td-viet{position:relative;margin-top:10px}
.td-goiy{position:absolute;left:0;bottom:100%;z-index:50;background:#fff;border:1px solid var(--line);border-radius:8px;box-shadow:0 6px 18px #0002;min-width:240px;padding:4px}
.td-gi{padding:5px 8px;border-radius:5px;cursor:pointer;white-space:nowrap}.td-gi.on,.td-gi:hover{background:color-mix(in srgb,var(--brand2) 11%,#fff)}
.td-nut{display:flex;gap:8px;align-items:center;margin-top:6px}
.td-tl{margin-top:8px;font-size:0.8929rem;color:var(--muted)}
.nk-t td.nk-n{white-space:nowrap}.nk-t td.nk-ct{min-width:260px;max-width:520px;word-break:break-word;font-size:0.8929rem}
.vt-db{display:flex;gap:14px;flex-wrap:wrap;align-items:center;margin:4px 0 8px;font-size:0.9286rem}.vt-tq{margin-left:auto;font-weight:400}

/* ================================================================ v1.19 (q61-j): hộp thoại In + thiết kế mẫu chứng từ */
.modal .box.mi-box{width:min(1180px,96vw);max-width:96vw}
.modal .box.mi-box-ql{width:min(1500px,98vw);max-width:98vw}
.mi-in{display:grid;grid-template-columns:250px minmax(0,1fr);gap:14px}
.mi-trai{display:flex;flex-direction:column;gap:10px}
.mi-xt{width:100%;height:64vh;border:1px solid var(--line);border-radius:8px;background:#fff}
.mi-ql{display:grid;grid-template-columns:210px minmax(380px,460px) minmax(0,1fr);gap:14px;min-width:1180px}
.mi-ds{display:flex;flex-direction:column;gap:4px}
.mi-li{display:flex;flex-direction:column;padding:6px 8px;border:1px solid var(--line);border-radius:7px;cursor:pointer}
.mi-li.on{border-color:var(--brand2);background:color-mix(in srgb,var(--brand2) 8%,#fff)}.mi-li.off{opacity:.55}
.mi-nut{display:flex;flex-direction:column;gap:6px;margin-top:8px}
.mi-tk{max-height:70vh;overflow:auto;padding-right:6px;display:flex;flex-direction:column;gap:8px}
.mi-tk .fld input:not([type=checkbox]):not([type=number]),.mi-tk textarea{width:100%}
.mi-khoi{display:flex;flex-direction:column;gap:6px}
.mi-k{border:1px solid var(--line);border-radius:8px;padding:6px 8px}.mi-k.off{background:var(--soft)}
.mi-kh{display:flex;align-items:center;gap:6px}
.mi-ktt{margin-top:6px;display:flex;flex-direction:column;gap:6px}
.mi-tick{display:flex;gap:6px 14px;flex-wrap:wrap;align-items:center;font-size:0.9286rem}
.mi-xtw .mi-xt{height:70vh}
.gv-tt{margin-bottom:10px}
