/* ============================================================
   HL DASHBOARD — style hợp nhất (quản trị + sale + mô phỏng khách)
   Bảng màu theo mục 10.1 của đặc tả
   ============================================================ */
:root{
  --blue-600:#1565D8; --blue-700:#0F4FAE; --blue-800:#0B3E86; --blue-900:#0A2540;
  --blue-100:#E8F1FD; --blue-050:#F5F9FF;
  --line:#D9E4F2; --ink:#14243A; --ink-2:#4A5C74; --ink-3:#7A8AA0; --white:#fff;
  --ok:#12855A; --warn:#D98B00; --warn-ink:#8A5A00; --block:#B3241C;
  --radius:10px;
  --shadow:0 1px 2px rgba(10,37,64,.06), 0 6px 20px rgba(10,37,64,.05);
}
*{box-sizing:border-box}
html,body{margin:0;padding:0;height:100%}
body{
  font-family:"Be Vietnam Pro","Segoe UI",Roboto,-apple-system,"Helvetica Neue",Arial,sans-serif;
  background:var(--blue-050); color:var(--ink); font-size:14px; line-height:1.55; overflow:hidden;
}

/* ---------- ĐĂNG NHẬP ---------- */
#login{position:fixed;inset:0;background:var(--blue-900);display:flex;align-items:center;justify-content:center;z-index:100}
.login-box{background:#fff;border-radius:16px;padding:34px 38px;width:420px;box-shadow:0 20px 60px rgba(0,0,0,.35)}
.login-box .logo{display:flex;align-items:center;gap:12px;margin-bottom:6px}
.login-box h1{font-size:18px;margin:0}
.login-box p.sub{color:var(--ink-2);font-size:13px;margin:4px 0 18px}
.user-card{display:flex;align-items:center;gap:12px;border:1px solid var(--line);border-radius:10px;padding:11px 14px;margin-bottom:9px;cursor:pointer;background:#fff;width:100%;font-family:inherit;text-align:left}
.user-card:hover{background:var(--blue-050);border-color:var(--blue-600)}
.user-card .nm{font-weight:700;font-size:14px}
.user-card .rl{font-size:12px;color:var(--ink-3)}

/* ---------- KHUNG ỨNG DỤNG ---------- */
.app{display:grid;grid-template-columns:236px 1fr;height:100vh}
.sidebar{background:var(--blue-900);color:#DCE7F6;padding:18px 0 0;height:100vh;overflow:auto;display:flex;flex-direction:column}
.brand{padding:0 20px 16px;border-bottom:1px solid rgba(255,255,255,.1);margin-bottom:12px}
.brand .logo{display:flex;align-items:center;gap:10px}
.mark{width:32px;height:32px;border-radius:8px;background:var(--blue-600);display:grid;place-items:center;color:#fff;font-weight:800;font-size:13px;letter-spacing:.5px;flex-shrink:0}
.brand h1{font-size:15px;margin:0;color:#fff;font-weight:700;letter-spacing:.3px}
.brand p{margin:2px 0 0;font-size:11.5px;color:#8FA8C9}
.nav{list-style:none;margin:0;padding:0 10px}
.nav li{margin-bottom:2px}
.nav button{width:100%;text-align:left;background:none;border:0;color:#C2D4EC;padding:9px 12px;border-radius:8px;cursor:pointer;font-size:13.5px;display:flex;align-items:center;gap:9px;font-family:inherit}
.nav button:hover{background:rgba(255,255,255,.07);color:#fff}
.nav button.on{background:var(--blue-600);color:#fff;font-weight:600}
.nav .ico{width:16px;text-align:center;opacity:.9}
.nav-sep{margin:14px 22px 6px;font-size:10.5px;letter-spacing:.9px;text-transform:uppercase;color:#6C86A8}
.nav .bdg{margin-left:auto;background:var(--block);color:#fff;border-radius:99px;font-size:10.5px;padding:1px 7px;font-weight:700}
.nav .bdg:empty{display:none}
.side-user{margin-top:auto;border-top:1px solid rgba(255,255,255,.1);padding:13px 16px;font-size:12px}
.side-user .mode{background:rgba(255,255,255,.12);border:1px solid rgba(255,255,255,.2);padding:3px 10px;border-radius:99px;font-size:11px;color:#DCE7F6;display:inline-block;margin-bottom:8px}
.side-user .who{display:flex;align-items:center;gap:9px}
.avatar{width:28px;height:28px;border-radius:50%;background:var(--blue-600);display:grid;place-items:center;font-size:11px;font-weight:700;color:#fff;flex-shrink:0}
.side-user .nm{color:#fff;font-weight:600}
.side-user .rl{color:#8FA8C9;font-size:11px}
.side-user a{color:#8FA8C9;font-size:11.5px;cursor:pointer;text-decoration:underline}

.main{height:100vh;overflow:hidden;display:flex;flex-direction:column}
.view{display:none;flex:1;overflow-y:auto;padding:22px 26px 60px}
.view.on{display:block}
#v-lam{padding:0;overflow:hidden}
#v-lam.on{display:flex;flex-direction:column}
.main-inner{max-width:1360px}

.topbar{display:flex;align-items:flex-start;justify-content:space-between;gap:20px;margin-bottom:20px;flex-wrap:wrap}
.topbar h2{margin:0;font-size:21px;letter-spacing:-.2px}
.topbar .sub{margin:3px 0 0;color:var(--ink-2);font-size:13px;max-width:640px}

.btn{background:var(--blue-600);color:#fff;border:0;padding:9px 15px;border-radius:8px;font-size:13px;cursor:pointer;font-family:inherit;font-weight:600;white-space:nowrap}
.btn:hover{background:var(--blue-700)}
.btn.ghost{background:#fff;color:var(--blue-700);border:1px solid var(--line)}
.btn.ghost:hover{background:var(--blue-100)}
.btn.sm{padding:6px 11px;font-size:12px}
.btn.danger{background:#fff;color:var(--block);border:1px solid #F0C9C6}
.btn:disabled{opacity:.45;cursor:not-allowed}

.card{background:#fff;border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow)}
.card .hd{padding:14px 18px;border-bottom:1px solid var(--line);display:flex;justify-content:space-between;align-items:center;gap:12px;flex-wrap:wrap}
.card .hd h3{margin:0;font-size:14.5px;font-weight:700}
.card .hd .note{font-size:12px;color:var(--ink-3)}
.card .bd{padding:18px}

.grid{display:grid;gap:16px}
.g-4{grid-template-columns:repeat(4,1fr)}
.g-3{grid-template-columns:repeat(3,1fr)}
.g-2{grid-template-columns:repeat(2,1fr)}
@media (max-width:1080px){.g-4{grid-template-columns:repeat(2,1fr)} .g-3,.g-2{grid-template-columns:1fr}}

/* ---------- Ô CHỈ SỐ ---------- */
.tile{background:#fff;border:1px solid var(--line);border-radius:var(--radius);padding:16px 17px;box-shadow:var(--shadow)}
.tile.chinh{border:2px solid var(--blue-600)}
.tile .lbl{font-size:12.5px;color:var(--ink-2);margin-bottom:7px}
.tile .val{font-size:29px;font-weight:700;letter-spacing:-.6px;line-height:1.1;color:var(--blue-900)}
.tile .val small{font-size:15px;font-weight:600;color:var(--ink-2);margin-left:3px}
.tile .foot{margin-top:8px;font-size:12px;color:var(--ink-3)}

.pill{display:inline-flex;align-items:center;gap:4px;font-size:11px;font-weight:600;padding:2px 8px;border-radius:99px;border:1px solid;white-space:nowrap}
.pill.ok{color:var(--ok);border-color:#BFE3D3;background:#EFF8F4}
.pill.warn{color:var(--warn-ink);border-color:#F0DCAE;background:#FDF6E7}
.pill.block{color:var(--block);border-color:#F0C9C6;background:#FCEFEE}
.pill.info{color:var(--blue-700);border-color:#C7DCF7;background:var(--blue-100)}
.pill.grey{color:var(--ink-3);border-color:var(--line);background:#F4F7FB}

/* ---------- BẢNG ---------- */
table{width:100%;border-collapse:collapse;font-size:13px}
th{text-align:left;font-weight:600;color:var(--ink-2);font-size:11.5px;letter-spacing:.5px;text-transform:uppercase;padding:9px 12px;border-bottom:1px solid var(--line);background:var(--blue-050);white-space:nowrap}
td{padding:11px 12px;border-bottom:1px solid #EEF3FA;vertical-align:top}
tbody tr:hover{background:var(--blue-050)}
td.num{text-align:right;font-variant-numeric:tabular-nums}
.mono{font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:12px}
.muted{color:var(--ink-3)}
tr.click{cursor:pointer}

/* ---------- FORM ---------- */
.field{margin-bottom:14px}
.field label{display:block;font-size:12.5px;font-weight:600;margin-bottom:5px;color:var(--ink-2)}
.field .hint{font-size:11.5px;color:var(--ink-3);margin-top:4px}
input[type=text],input[type=password],input[type=number],textarea,select{width:100%;padding:9px 11px;border:1px solid var(--line);border-radius:8px;font-family:inherit;font-size:13px;background:#fff;color:var(--ink)}
textarea{min-height:82px;resize:vertical;line-height:1.6}
input:focus,textarea:focus,select:focus{outline:2px solid var(--blue-100);border-color:var(--blue-600)}
textarea.loi{border-color:var(--block);outline:2px solid #FCEFEE}
.locked{background:#F3F6FB;color:var(--ink-2)}
.tag{display:inline-block;background:var(--blue-100);color:var(--blue-800);border-radius:6px;padding:2px 7px;font-size:11.5px;font-weight:600;margin:2px 4px 2px 0}
.tag.red{background:#FCEFEE;color:var(--block)}
.callout{border-left:3px solid var(--blue-600);background:var(--blue-050);padding:12px 14px;border-radius:0 8px 8px 0;font-size:13px;margin-bottom:16px}
.callout.danger{border-left-color:var(--block);background:#FDF4F3}
.callout b{color:var(--blue-900)}
.chart-wrap{position:relative}
.tt{position:absolute;pointer-events:none;background:var(--blue-900);color:#fff;font-size:12px;padding:6px 9px;border-radius:6px;opacity:0;transition:opacity .12s;white-space:nowrap;transform:translate(-50%,-130%);z-index:5}
.legend-note{font-size:11.5px;color:var(--ink-3);margin-top:8px}
.switch{position:relative;display:inline-block;width:38px;height:21px;vertical-align:middle}
.switch input{opacity:0;width:0;height:0}
.slider{position:absolute;inset:0;background:#C9D6E8;border-radius:99px;cursor:pointer;transition:.2s}
.slider:before{content:"";position:absolute;height:15px;width:15px;left:3px;top:3px;background:#fff;border-radius:50%;transition:.2s}
.switch input:checked + .slider{background:var(--blue-600)}
.switch input:checked + .slider:before{transform:translateX(17px)}
.switch input:disabled + .slider{opacity:.5;cursor:not-allowed}

/* ---------- MÀN HÌNH LÀM VIỆC 3 CỘT ---------- */
.work{display:grid;grid-template-columns:286px 1fr 356px;flex:1;overflow:hidden}
.col{overflow-y:auto;background:#fff;border-right:1px solid var(--line)}
.col:last-child{border-right:0;border-left:1px solid var(--line);background:var(--blue-050)}
.col-hd{padding:12px 14px;border-bottom:1px solid var(--line);position:sticky;top:0;background:#fff;z-index:2}
.col-hd h2{margin:0 0 8px;font-size:13px;text-transform:uppercase;letter-spacing:.6px;color:var(--ink-2)}
.chips{display:flex;gap:5px;flex-wrap:wrap}
.chip{border:1px solid var(--line);background:#fff;border-radius:99px;padding:3px 10px;font-size:11.5px;cursor:pointer;font-family:inherit;color:var(--ink-2)}
.chip.on{background:var(--blue-600);border-color:var(--blue-600);color:#fff;font-weight:600}

.conv{padding:11px 14px;border-bottom:1px solid #EEF3FA;cursor:pointer;display:block;width:100%;text-align:left;background:none;border-top:0;border-right:0;border-left:3px solid transparent;font-family:inherit}
.conv:hover{background:var(--blue-050)}
.conv.on{background:var(--blue-100);border-left-color:var(--blue-600)}
.conv .r1{display:flex;justify-content:space-between;gap:8px;align-items:baseline}
.conv .nm{font-weight:700;font-size:13.5px}
.conv .tm{font-size:11px;color:var(--ink-3);white-space:nowrap}
.conv .ms{font-size:12.5px;color:var(--ink-2);margin:3px 0 6px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.conv .r3{display:flex;gap:5px;align-items:center;flex-wrap:wrap}

.chat{display:flex;flex-direction:column;height:100%;background:#fff;overflow:hidden}
.chat-hd{padding:12px 18px;border-bottom:1px solid var(--line);display:flex;align-items:center;gap:12px;flex-shrink:0}
.chat-hd .nm{font-weight:700;font-size:15px}
.chat-hd .meta{font-size:12px;color:var(--ink-3)}
.chat-bd{flex:1;overflow-y:auto;padding:18px;background:var(--blue-050)}
.msg{max-width:74%;margin-bottom:12px;padding:9px 13px;border-radius:12px;font-size:13.5px;line-height:1.6;box-shadow:var(--shadow)}
.msg.them{background:#fff;border:1px solid var(--line);border-bottom-left-radius:3px}
.msg.us{background:var(--blue-600);color:#fff;margin-left:auto;border-bottom-right-radius:3px}
.msg .tm{font-size:10.5px;opacity:.65;margin-top:4px}
.msg.bot{background:#fff;border:1px dashed var(--blue-600);margin-left:auto;border-bottom-right-radius:3px}
.msg.bot .who{font-size:10.5px;font-weight:700;color:var(--blue-700);margin-bottom:3px;letter-spacing:.4px}
.msg.hethong{background:#FDF6E7;border:1px solid #F0DCAE;color:var(--warn-ink);margin:0 auto 12px;max-width:88%;font-size:12.5px;text-align:center}
.chat-ft{border-top:1px solid var(--line);padding:12px 18px;flex-shrink:0;background:#fff}
.composer{display:flex;gap:8px;align-items:flex-end}
.composer textarea{flex:1;border:1px solid var(--line);border-radius:10px;padding:10px 12px;font-family:inherit;font-size:13.5px;min-height:70px;resize:vertical;line-height:1.6}
.composer textarea:focus{outline:2px solid var(--blue-100);border-color:var(--blue-600)}
.mini{font-size:11.5px;color:var(--ink-3);margin-top:8px;line-height:1.5}

.panel{padding:14px}
.box{background:#fff;border:1px solid var(--line);border-radius:10px;margin-bottom:13px;box-shadow:var(--shadow)}
.box>.t{padding:10px 13px;border-bottom:1px solid var(--line);font-size:12px;font-weight:700;text-transform:uppercase;letter-spacing:.6px;color:var(--ink-2);display:flex;justify-content:space-between;align-items:center;gap:8px}
.box>.c{padding:13px}
.box.alert{border-color:#F0C9C6}
.box.alert>.t{background:#FCEFEE;color:var(--block);border-bottom-color:#F0C9C6}

.req{display:flex;align-items:center;gap:9px;padding:8px 0;border-bottom:1px solid #EEF3FA}
.req:last-child{border-bottom:0}
.req .dot{width:19px;height:19px;border-radius:50%;display:grid;place-items:center;font-size:11px;font-weight:700;flex-shrink:0;color:#fff}
.req .dot.y{background:var(--ok)}
.req .dot.n{background:#C9D6E8;color:var(--ink-2)}
.req .k{font-size:12.5px;color:var(--ink-2);width:74px;flex-shrink:0}
.req .v{font-weight:600;font-size:13px}
.req .v.miss{color:var(--warn-ink);font-weight:600}

.sug{background:var(--blue-050);border:1px solid var(--line);border-radius:8px;padding:11px 12px;font-size:13px;line-height:1.65;margin-bottom:10px;white-space:pre-wrap}
.sug.bad{background:#FDF4F3;border-color:#F0C9C6}
.row{display:flex;gap:7px;flex-wrap:wrap}
label.lb{display:block;font-size:12px;font-weight:600;margin-bottom:5px;color:var(--ink-2)}

/* ---------- MÔ PHỎNG PHÍA KHÁCH ---------- */
.sim-wrap{display:flex;gap:32px;flex-wrap:wrap;align-items:flex-start}
.phone{width:340px;flex-shrink:0;background:#fff;border:1px solid var(--line);border-radius:22px;overflow:hidden;box-shadow:0 12px 40px rgba(10,37,64,.13);display:flex;flex-direction:column}
.phone .top{background:var(--blue-600);color:#fff;padding:13px 16px;font-weight:700;font-size:14px}
.phone .top small{display:block;font-weight:400;font-size:11px;opacity:.85;margin-top:1px}
.phone .body{padding:14px;background:var(--blue-050);height:440px;overflow-y:auto}
.phone .m{max-width:82%;margin-bottom:10px;padding:8px 12px;border-radius:12px;font-size:13px;line-height:1.6;white-space:pre-wrap}
.phone .m.them{background:#fff;border:1px solid var(--line);border-bottom-left-radius:3px}
.phone .m.us{background:var(--blue-600);color:#fff;margin-left:auto;border-bottom-right-radius:3px}
.phone .m.cho{background:#FDF6E7;border:1px dashed #F0DCAE;color:var(--warn-ink);font-size:12px;text-align:center;max-width:95%;margin:0 auto 10px}
.phone .qr{display:flex;gap:6px;flex-wrap:wrap;padding:0 14px 10px;background:var(--blue-050)}
.phone .qr button{border:1px solid var(--blue-600);color:var(--blue-700);border-radius:99px;padding:4px 11px;font-size:12px;background:#fff;cursor:pointer;font-family:inherit}
.phone .ft{display:flex;gap:7px;padding:10px;border-top:1px solid var(--line);background:#fff}
.phone .ft input{flex:1}
.sim-side{flex:1;min-width:320px;max-width:460px}

/* ---------- KIỂM THỬ ---------- */
.test-row{display:flex;gap:11px;align-items:flex-start;padding:11px 0;border-bottom:1px solid #EEF3FA;font-size:13px}
.test-row .st{width:64px;flex-shrink:0}
.test-row .q{color:var(--ink-2)}
.test-row .kq{margin-top:3px;font-size:12px;color:var(--ink-3);white-space:pre-wrap}

/* ---------- MODAL & TOAST ---------- */
#modal-wrap{position:fixed;inset:0;background:rgba(10,37,64,.45);display:none;align-items:center;justify-content:center;z-index:60}
#modal-wrap.on{display:flex}
#modal{background:#fff;border-radius:14px;max-width:640px;width:92%;max-height:86vh;overflow-y:auto;padding:22px 24px;box-shadow:0 30px 80px rgba(0,0,0,.3)}
#modal h3{margin:0 0 14px;font-size:16px}
#toasts{position:fixed;right:18px;bottom:18px;z-index:70;display:flex;flex-direction:column;gap:8px}
.toast{background:var(--blue-900);color:#fff;padding:11px 16px;border-radius:10px;font-size:13px;box-shadow:var(--shadow);max-width:360px;animation:tin .25s ease}
.toast.ok{background:var(--ok)}
.toast.warn{background:var(--warn-ink)}
@keyframes tin{from{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}

/* ---------- MÁY TÍNH BẢNG ---------- */
@media (max-width:1100px){
  .work{grid-template-columns:240px 1fr 310px}
  .app{grid-template-columns:200px 1fr}
}
@media (max-width:860px){
  .work{grid-template-columns:1fr;grid-template-rows:auto 1fr auto;overflow-y:auto}
  .col{border-right:0;border-bottom:1px solid var(--line);max-height:40vh}
  .chat{height:60vh}
}
