/*
 * Tab Kế hoạch theo lệnh (issue 269, mockup "Kỹ thuật + Kế hoạch B" bản 56, anh Hiệp chốt 2026-10-13).
 * Dòng thời gian: hạng mục › Lệnh 1..N › giai đoạn › công đoạn; xem đã phát hành có tiến độ theo hệ số quá trình.
 * Chỉ dùng token --bms-*; vị trí thanh thời gian đặt bằng element.style trong production-plan-board.js.
 */
.khx[hidden]{display:none!important}
/* Giao diện mới thay khối thông tin, chỉ số và bảng hạng mục cũ của tab Kế hoạch. */
.production-plan-panel.is-plan-board>.production-project-facts,.production-plan-panel.is-plan-board>.production-metrics,.production-plan-panel.is-plan-board>.production-layout{display:none}
.khx-clip{overflow:hidden}
.khx-hc{align-items:center}
.khx-under{display:block;margin-top:4px}
.khx-count{font-size:13px}
.production-form .khx-full{grid-column:1/-1}
.production-form [data-khx-newstage][hidden],.production-form [data-khx-variance][hidden]{display:none}
.khx{display:flex;flex-direction:column;gap:16px;font-family:var(--bms-font-ui);color:var(--bms-text)}
.khx *{box-sizing:border-box}
.khx-card{background:var(--bms-surface);border:1px solid var(--bms-border);border-radius:12px}
.khx-status{display:flex;flex-wrap:wrap;align-items:center;gap:10px 24px;padding:14px 18px}
.khx-status .k{font-size:11px;letter-spacing:.04em;text-transform:uppercase;color:var(--bms-text-muted);display:block;margin-bottom:2px}
.khx-status .v{font-size:15px;font-weight:600;font-variant-numeric:tabular-nums}
.khx-one{flex-wrap:nowrap}
.khx-one .grow{flex:1 1 200px;min-width:180px}
.khx-one .khx-bar{margin-top:6px}
.khx-status .sep{width:1px;align-self:stretch;background:var(--bms-border)}
.khx-pill{display:inline-flex;align-items:center;gap:6px;border-radius:999px;padding:4px 10px;font-size:12px;font-weight:600;white-space:nowrap}
.khx-pill:before{content:"";width:6px;height:6px;border-radius:50%;background:currentColor}
.khx-ok{color:var(--bms-success);background:var(--bms-success-soft)}
.khx-warn{color:var(--bms-warning);background:var(--bms-warning-soft)}
.khx-info{color:var(--bms-info);background:var(--bms-info-soft)}
.khx-mute{color:var(--bms-text-muted);background:var(--bms-neutral-soft)}
.khx-bad{color:var(--bms-danger);background:var(--bms-danger-soft)}
.khx-bar{height:6px;border-radius:999px;background:var(--bms-neutral-soft);overflow:hidden;margin-top:8px}
.khx-bar i{display:block;height:100%;background:var(--bms-primary);border-radius:999px}
.khx-bar.ok i{background:var(--bms-success)}
.khx-h{display:flex;align-items:baseline;justify-content:space-between;gap:12px;padding:14px 18px;border-bottom:1px solid var(--bms-border)}
.khx-h strong{font-size:15px}
.khx-h span{font-size:12px;color:var(--bms-text-muted)}
.khx-tw{overflow-x:auto}
.khx-code{font-weight:700}
.khx-sub{font-size:12px;color:var(--bms-text-muted)}
.khx-empty{font-size:13px;color:var(--bms-text-muted);padding:6px 0}
.khx-acts2{display:flex;gap:8px;flex-wrap:wrap;justify-content:flex-end}
.khx-g.khx-gd{grid-template-columns:360px minmax(0,1fr)}
@media (max-width:900px){
  .khx-g.khx-gd{grid-template-columns:170px minmax(560px,1fr)}
  .khx-g.khx-gd .lab.op,.khx-g.khx-gd .lane.op{height:44px;min-height:44px}
  .khx-g.khx-gd .lab.op{flex-direction:column;align-items:flex-start;justify-content:center;gap:0;padding:0 8px 0 14px}
  .khx-g.khx-gd .lab.op>span{max-width:100%;overflow:hidden;text-overflow:ellipsis}
  .khx-g.khx-gd .lane.op .khx-x{top:10px}
  .khx-h:has(.khx-acts2){flex-wrap:wrap}
  .khx-acts2{width:100%;justify-content:flex-start}
}
.khx-g .lab.ph,.khx-g .lane.ph{min-height:30px;height:30px;padding-top:0;padding-bottom:0;background:var(--bms-surface-subtle)}
.khx-g .lab.ph b{font-size:12px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.khx-g .lab.op,.khx-g .lane.op{min-height:36px;height:36px}
.khx-g .lab.op{display:flex;flex-direction:row;align-items:center;justify-content:space-between;gap:8px;padding:0 12px 0 24px;background:var(--bms-surface);width:100%;font-size:12px;border-radius:0;outline-offset:-2px}
.khx-g .lab.op>span:first-child{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;min-width:0}
.khx-g .lab.op .khx-sub{white-space:nowrap;flex:0 0 auto}
.khx-gb.phb{top:11px;height:8px;background:color-mix(in srgb,var(--bms-primary) 28%,var(--bms-surface))}
.khx-gb.opb{top:11px;height:14px;border-radius:4px;background:var(--bms-primary)}
.khx-g .lane.op .khx-x{top:6px;opacity:0}
.khx-g .lane.op:hover .khx-x{opacity:1}
.khx-g.khx-gd .lab.br{position:relative;padding-left:34px}
.khx-g.khx-gd .lab.br:before{content:"";position:absolute;left:18px;top:0;bottom:0;border-left:1px solid color-mix(in srgb,var(--bms-primary) 32%,var(--bms-surface))}
.khx-g.khx-gd .lab.br:after{content:"";position:absolute;left:18px;top:50%;width:10px;border-top:1px solid color-mix(in srgb,var(--bms-primary) 32%,var(--bms-surface))}
.khx-g.khx-gd .lab.br.last:before{bottom:50%}
.khx-branch{position:absolute;top:4px;bottom:4px;display:flex;gap:6px}
.khx-branch .khx-ghost{position:static;flex:1;height:auto;justify-content:center;min-width:0}
.khx-x.arm{width:auto;padding:0 10px;border-radius:999px;background:var(--bms-danger);border-color:var(--bms-danger);color:var(--bms-surface)!important;font:600 12px var(--bms-font-ui);opacity:1!important}
.khx-mv{display:flex;gap:2px;flex:0 0 auto;opacity:0}
.khx-g .lab.op:hover .khx-mv,.khx-g .lab.op.moved .khx-mv{opacity:1}
.khx-mv{align-items:center}
.khx-g .lab.ph{display:flex;flex-direction:row;align-items:center;gap:6px}
.khx-g .lab.ph b{flex:1 1 auto;min-width:0}
.khx-phadd{width:22px!important;height:22px!important;min-height:22px!important;min-width:22px!important;margin-left:auto;border:1px solid var(--bms-border);border-radius:6px;background:var(--bms-surface);color:var(--bms-info);font-size:13px;line-height:1;cursor:pointer;padding:0;flex:0 0 auto}
.khx-phadd:hover{background:var(--bms-surface-selected)}
.khx-mv button{width:24px!important;height:24px!important;min-height:24px!important;min-width:24px!important;border:1px solid var(--bms-border);border-radius:6px;background:var(--bms-surface);color:var(--bms-info);font-size:12px;line-height:1;cursor:pointer;padding:0}
.khx-mv button:hover{background:var(--bms-surface-selected)}
.khx-mv button:disabled{opacity:.35;cursor:default}
.khx-g .lab.op.moved{background:var(--bms-warning-soft)}
@media (hover:none){
  .khx-mv{opacity:1}
}
@media (max-width:900px){
  .khx-g.khx-gd .lab.op .khx-mv{position:absolute;right:4px;top:50%;transform:translateY(-50%);background:var(--bms-surface)}
  .khx-g.khx-gd .lab.op{padding-right:56px}
}
.khx-g{display:grid;grid-template-columns:260px minmax(0,1fr)}
.khx-g .lab{padding:10px 16px;border-bottom:1px solid var(--bms-neutral-soft);min-height:52px;display:flex;flex-direction:column;justify-content:center}
.khx-g .lab.item{background:var(--bms-surface-subtle)}
.khx-g .lane{position:relative;border-bottom:1px solid var(--bms-neutral-soft);min-height:52px;cursor:pointer}
.khx-g .lane.item{background:var(--bms-surface-subtle);cursor:default}
.khx-g .lane.sel,.khx-g .lab.sel{background:var(--bms-surface-selected)}
.khx-dspace{height:66px;border-bottom:1px solid var(--bms-border)}
.khx-lanes{position:relative;background-image:linear-gradient(to right,var(--bms-neutral-soft) 1px,transparent 1px)}
.khx-mon{display:flex;height:24px;border-bottom:1px solid var(--bms-neutral-soft);background:var(--bms-surface)}
.khx-mon div{font-size:12px;font-weight:700;color:var(--bms-text);padding:4px 8px;border-left:1px solid var(--bms-border);white-space:nowrap;overflow:hidden}
.khx-mon div:first-child{border-left:0}
.khx-days{display:flex;border-bottom:1px solid var(--bms-border);height:42px;background:var(--bms-surface)}
.khx-days div{flex:1;min-width:0;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:1px;border-left:1px solid var(--bms-neutral-soft);line-height:1}
.khx-days small{font-size:10px;font-weight:600;color:var(--bms-text-muted)}
.khx-days b{font-size:14px;font-weight:700;color:var(--bms-text);font-variant-numeric:tabular-nums;min-width:24px;height:22px;display:grid;place-items:center;border-radius:999px}
.khx-days div.we{background:var(--bms-surface-subtle)}
.khx-days div.we small,.khx-days div.we b{color:var(--bms-danger)}
.khx-days div.today b{background:var(--bms-primary);color:var(--bms-surface)}
.khx-days div.today small{color:var(--bms-info)}
.khx-gb{position:absolute;top:14px;height:24px;border-radius:999px;background:color-mix(in srgb,var(--bms-primary) 16%,var(--bms-surface));overflow:hidden;display:flex;align-items:center}
.khx-gb i{position:absolute;left:0;top:0;bottom:0;background:var(--bms-primary)}
.khx-gb.ok{background:var(--bms-success-soft)}
.khx-gb.ok i{background:var(--bms-success)}
.khx-gb.plan{background:repeating-linear-gradient(135deg,color-mix(in srgb,var(--bms-primary) 10%,var(--bms-surface)) 0 6px,var(--bms-primary-soft) 6px 12px);border:1px dashed color-mix(in srgb,var(--bms-primary) 40%,var(--bms-surface))}
.khx-gb span{position:relative;font-size:11px;font-weight:700;color:var(--bms-surface);padding:0 10px;white-space:nowrap;text-shadow:0 1px 1px color-mix(in srgb,var(--bms-text) 15%,transparent)}
.khx-gb.plan span{color:var(--bms-info);text-shadow:none}
.khx-now{position:absolute;top:0;bottom:0;width:2px;background:var(--bms-info);opacity:.6;pointer-events:none}
.khx-ghost{position:absolute;top:12px;height:28px;border:1px dashed color-mix(in srgb,var(--bms-primary) 32%,var(--bms-surface));border-radius:6px;display:flex;align-items:center;padding:0 10px;font-size:12px;color:var(--bms-text-muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;box-sizing:border-box}
.khx-mini{min-height:32px!important;height:32px;padding:0 12px!important;font-size:12px!important}
.khx-addord{background:var(--bms-surface);cursor:pointer;justify-content:center;color:var(--bms-primary)!important;font:600 12px var(--bms-font-ui);border-color:color-mix(in srgb,var(--bms-primary) 45%,var(--bms-surface))}
.khx-addord:hover{background:var(--bms-surface-selected)}
.khx-x{position:absolute;right:8px;top:14px;width:24px;height:24px;border-radius:50%;border:1px solid var(--bms-border);background:var(--bms-surface);color:var(--bms-text-muted);cursor:pointer;font-size:14px;line-height:1}
.khx-x:hover{color:var(--bms-danger);border-color:var(--bms-danger)}
.khx-click{border:0;cursor:pointer;font:inherit;text-align:left}
.khx-click:hover{filter:brightness(.97);outline:2px solid color-mix(in srgb,var(--bms-primary) 45%,var(--bms-surface))}
@media (max-width:900px){
  .khx-status .sep{display:none}
  .khx-status{gap:10px 18px}
  .khx-one{flex-wrap:wrap}
  .khx-one>div{min-width:40%}
  .khx-one .grow{flex-basis:100%}
  .khx-g{grid-template-columns:132px minmax(560px,1fr)}
  .khx-g .lab,.khx-g .lane{height:56px;min-height:56px;box-sizing:border-box}
  .khx-g .lab{padding:8px 10px;overflow:hidden}
  .khx-g .lab>*{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
  /* Điện thoại: người phụ trách xuống dòng riêng để luôn bấm được. */
  .khx-ii{display:flex;flex-direction:column}
  .khx-ii>span{overflow:hidden;text-overflow:ellipsis}
  .khx-ii .khx-dot{display:none}
  .khx-g .lab.item,.khx-g .lane.item{height:68px;min-height:68px}
  .khx-own .khx-resp{max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;text-align:left;min-height:24px!important}
}
.khx-tpls{display:grid;grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:8px}
.khx-tpl{position:relative;display:block;border:1px solid var(--bms-border);border-radius:10px;padding:10px 12px;cursor:pointer;background:var(--bms-surface)}
.khx-tpl input{position:absolute;opacity:0;pointer-events:none}
.khx-tpl:has(input:checked){border-color:var(--bms-primary);box-shadow:inset 0 0 0 1px var(--bms-primary);background:var(--bms-surface-selected)}
.khx-tpl b{display:block;font-size:13px;color:var(--bms-text)}
.khx-tpl span{display:block;font-size:12px;color:var(--bms-text-muted);margin-top:3px}
.khx-endl.warn input{animation:khxBlink 1s ease-in-out infinite;border-color:var(--bms-danger)!important}
@keyframes khxBlink{
  50%{box-shadow:0 0 0 4px color-mix(in srgb,var(--bms-danger) 28%,transparent);background:var(--bms-danger-soft)}
}
#khxOrderForm .form-grid{align-items:start}
.khx-endw[hidden]{display:none}
.khx-endw{display:block;margin-top:6px;font-size:12px;color:var(--bms-danger);font-weight:500}
.khx-usesug{min-height:24px!important;height:24px!important;width:auto!important;line-height:1;margin-left:6px;border:1px solid var(--bms-danger);background:var(--bms-surface);color:var(--bms-danger);border-radius:999px;padding:2px 10px;font-size:12px;cursor:pointer}
.khx-tog{width:20px!important;height:20px!important;min-height:20px!important;min-width:20px!important;padding:0;margin-right:4px;border:0;background:none;color:var(--bms-info);font-size:12px;cursor:pointer;vertical-align:1px}
.khx-gd .lab.hov,.khx-gd .lane.hov{background-color:var(--bms-primary-soft)!important}
.khx-gd{position:relative}
.khx-hovbox{position:absolute;z-index:6;pointer-events:none;border:1.5px solid var(--bms-primary);border-radius:8px;box-sizing:border-box}
.khx-hovbox[hidden]{display:none}
.khx-w{color:var(--bms-info);font-weight:600}
.khx-w.fix{color:var(--bms-warning)}
.khx-row3{grid-column:1/-1;display:grid;grid-template-columns:1fr 1fr 1.4fr;gap:inherit;column-gap:12px}
@media (max-width:520px){
  .khx-row3{grid-template-columns:1fr 1fr}
  .khx-row3>label:last-child{grid-column:1/-1}
}
.khx-wt{color:var(--bms-info);font-weight:600;text-align:right}
.khx-sug{display:flex;flex-wrap:wrap;align-items:center;gap:4px 8px;font-size:12px;padding:8px 12px;border-radius:10px;background:var(--bms-review-soft);color:var(--bms-review)}
.khx-sugp{color:var(--bms-review);font-weight:600}
.khx-usesug2{min-height:24px!important;height:24px!important;width:auto!important;padding:0 10px;border:1px solid color-mix(in srgb,var(--bms-review) 35%,var(--bms-surface));border-radius:999px;background:var(--bms-surface);color:var(--bms-review);font-size:12px;font-weight:600;cursor:pointer}
.khx-sugb{display:inline-block;font-style:normal;font-size:11px;font-weight:600;color:var(--bms-review);background:var(--bms-review-soft);border-radius:999px;padding:1px 8px;margin-bottom:4px}
.khx-rb{border:0;padding:0;cursor:pointer}
.khx-rb span{position:relative;z-index:1;padding:0 10px;font-size:12px;font-weight:600;color:var(--bms-primary-active);white-space:nowrap}
.khx-rb.ok span{color:var(--bms-success)}
.khx-rb i{background:color-mix(in srgb,var(--bms-primary) 45%,var(--bms-surface))}
.khx-rb.ok i{background:color-mix(in srgb,var(--bms-success) 50%,var(--bms-surface))}
.khx-rl{font-style:normal;color:var(--bms-danger)!important;font-weight:600}
.khx-rph{overflow:hidden}
.khx-rph i{background:var(--bms-primary)}
.khx-ro{overflow:hidden}
.khx-ro.done{background:var(--bms-success)}
.khx-ro.run{background:color-mix(in srgb,var(--bms-primary) 28%,var(--bms-surface))}
.khx-ro.run i{background:var(--bms-primary)}
.khx-ro.late{background:var(--bms-danger-soft);box-shadow:inset 0 0 0 1.5px var(--bms-danger)}
.khx-ro.late i{background:var(--bms-danger)}
.khx-ro.wait{background:var(--bms-border)}
.khx-ro.wait i,.khx-ro.done i{display:none}
.khx-rp{margin-left:auto;padding-left:8px;font-size:12px;font-weight:600;color:var(--bms-info)}
.khx-rs{display:inline-block;white-space:nowrap;flex:none;margin-top:2px;width:max-content;font-size:11px;font-weight:600;border-radius:999px;padding:1px 8px}
.khx-rs.done{color:var(--bms-success);background:var(--bms-success-soft)}
.khx-rs.run{color:var(--bms-info);background:var(--bms-info-soft)}
.khx-rs.late{color:var(--bms-danger);background:var(--bms-danger-soft)}
.khx-rs.wait{color:var(--bms-text-muted);background:var(--bms-neutral-soft)}
.khx-gr .lab.op{grid-template-columns:none}
.khx-lg{display:inline-flex;align-items:center;gap:4px 6px;flex-wrap:wrap;font-size:12px;color:var(--bms-text-muted);margin-right:8px}
.khx-lg i{display:inline-block;width:12px;height:8px;border-radius:3px;margin-left:6px}
.khx-lg i.done{background:var(--bms-success)}
.khx-lg i.run{background:var(--bms-primary)}
.khx-lg i.late{background:var(--bms-danger)}
.khx-lg i.wait{background:var(--bms-border)}
.khx-now b{position:absolute;top:2px;left:4px;font-size:10px;font-weight:600;color:var(--bms-info);white-space:nowrap;background:var(--bms-surface);padding:0 4px;border-radius:4px}
.khx-rdet{display:grid;gap:10px}
.khx-rdet h4{margin:8px 0 0;font-size:13px}
.khx-rrow{display:flex;justify-content:space-between;gap:12px;font-size:13px;padding:8px 0;border-bottom:1px solid var(--bms-border)}
.khx-rrow span{color:var(--bms-text-muted)}
.khx-rrow b{text-align:right;font-weight:600}
@media (max-width:700px){
  .khx-lg{display:none}
}
@media (max-width:900px){
  .khx-gr .lab.op .khx-rs{display:none}
  .khx-g.khx-gr .lab.op{padding-right:12px}
}
.khx-corner{display:flex;flex-direction:column;justify-content:center;height:100%;padding:8px 16px;gap:2px;overflow:hidden}
.khx-corner .khx-sub{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.khx-resp{border:0;background:none;padding:0;min-height:0!important;height:auto!important;width:auto!important;font:inherit;color:var(--bms-info);cursor:pointer}
.khx-resp:hover{text-decoration:underline}
.khx-g .lab.ord{background:var(--bms-surface-subtle)}
.khx-g .lab.ord b{font-size:13px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.khx-g .lane.ord{background:var(--bms-surface-subtle)}
.khx-ob{border:0;padding:0;cursor:pointer;background:color-mix(in srgb,var(--bms-primary) 16%,var(--bms-surface))}
.khx-ob span{padding:0 10px;font-size:12px;font-weight:600;color:var(--bms-primary-active);white-space:nowrap}
.khx-gd .lab:not(.op):not(.ph),.khx-gd .lane:not(.op):not(.ph){height:52px;min-height:52px;max-height:52px;box-sizing:border-box;overflow:hidden}
.khx-gd .lab:not(.op):not(.ph) .khx-sub{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.khx-rs.pause{color:var(--bms-warning);background:var(--bms-warning-soft)}
.khx-tsum[hidden]{display:none!important}
.khx-tsum{display:flex;flex-wrap:wrap;gap:6px 18px;font-size:13px;padding:10px 12px;border-radius:10px;background:var(--bms-surface-subtle)}
.khx-tsum b{font-variant-numeric:tabular-nums}
.khx-tp{overflow-x:auto;border:1px solid var(--bms-border);border-radius:10px}
.khx-tp table{border-collapse:collapse;font-size:12px;min-width:100%}
.khx-tp th{font-size:11px;color:var(--bms-text-muted);font-weight:600;background:var(--bms-surface-subtle);padding:6px 8px;text-align:left;white-space:nowrap;border-bottom:1px solid var(--bms-border)}
.khx-tp td{padding:4px 8px;border-bottom:1px solid var(--bms-neutral-soft);white-space:nowrap}
.khx-tp td.nm{white-space:normal;min-width:240px}
.khx-tp tr.ph td{background:var(--bms-surface-subtle);font-weight:700}
.khx-tp th.dy,.khx-tp td.dy{width:26px;min-width:26px;padding:0;text-align:center;border-left:1px solid var(--bms-neutral-soft)}
.khx-tp td.dy.on{background:color-mix(in srgb,var(--bms-primary) 45%,var(--bms-surface))}
.khx-tp tr.ph td.dy.on{background:color-mix(in srgb,var(--bms-primary) 16%,var(--bms-surface))}
.khx-tp input.hr{width:64px!important;min-height:30px!important;height:30px;padding:2px 8px!important;text-align:right;border-radius:8px!important}
@media (max-width:720px){
  .khx-tpls{grid-template-columns:1fr}
}
/* Tạo kế hoạch mẫu bằng AI (đợt 3): dùng chung srm-scan-* của Quét AI bên Mua hàng. */
.khx-ai{display:inline-flex;align-items:center;gap:6px}
.khx-ai svg{width:14px;height:14px;fill:currentColor}
.khx-aiwait{display:flex;align-items:center;justify-content:center;gap:8px;font-size:13px}
.khx-spin{width:16px;height:16px;box-sizing:border-box;border:2px solid var(--bms-border);border-top-color:var(--bms-primary);border-radius:50%;animation:khxSpin .8s linear infinite}
@keyframes khxSpin{to{transform:rotate(360deg)}}
@media (prefers-reduced-motion:reduce){.khx-spin{animation:none}}
.khx-aitable td{vertical-align:middle;padding:3px 8px}
.khx-aitable .khx-aiph td{background:var(--bms-surface-subtle);font-weight:700}
/* Ô nhập gọn trong bảng kết quả (như .khx-tp input.hr): vượt kích thước ô chạm 48px của bms-primitives-v8. */
.khx-aitable input.khx-ain{width:100%!important;min-width:200px;min-height:30px!important;height:30px;padding:2px 8px!important;border-radius:8px!important;font-weight:inherit}
.khx-aitable input.khx-ain.khx-aih{min-width:72px;width:80px!important}
.khx-aiwarn{margin:0;padding:8px 12px 8px 28px;border-radius:10px;background:var(--bms-warning-soft);color:var(--bms-warning);font-size:12px}
.khx-aiacts{display:flex;justify-content:flex-end;gap:8px;flex-wrap:wrap}
