:root{
  --bg:#f3f5f8; --panel:#fff; --text:#1d2633; --muted:#6b7686; --line:#e1e6ed;
  --pri:#0b5cad; --pri-d:#084785; --side:#0f2a47; --side-t:#c9d6e5;
  --red:#c62828; --red-bg:#fdecec; --amber:#b26a00; --amber-bg:#fff4e0;
  --green:#2e7d32; --green-bg:#e8f5e9; --blue-bg:#e6f0fb; --gray-bg:#eef1f4;
}
*{box-sizing:border-box}
body{margin:0;font-family:"Segoe UI",Arial,sans-serif;font-size:14px;color:var(--text);background:var(--bg)}
.hidden{display:none!important}
a{color:var(--pri);cursor:pointer;text-decoration:none}
a:hover{text-decoration:underline}
.muted{color:var(--muted)}
.err{color:var(--red);min-height:18px;margin:6px 0}
h3{margin:0 0 10px}

/* Login */
.login{min-height:100vh;display:flex;align-items:center;justify-content:center;background:linear-gradient(rgba(10,30,60,.55),rgba(10,30,60,.75)),url(img/slider2.jpg) center/cover}
.login-box{background:#fff;padding:32px;border-radius:10px;width:min(380px,92vw);box-shadow:0 10px 40px rgba(0,0,0,.25)}
.login-box h1{font-size:20px;margin:8px 0 2px;text-align:center}
.login-box p{text-align:center;margin:0 0 18px}
.brand-big{display:block;width:120px;height:100px;margin:0 auto}
.banner{position:relative;border-radius:10px;overflow:hidden;margin-bottom:16px;min-height:150px;display:flex;align-items:center;gap:18px;padding:20px 24px;color:#fff;
  background:linear-gradient(90deg,rgba(8,30,70,.92) 0%,rgba(8,30,70,.7) 45%,rgba(8,30,70,.15) 100%),url(img/slider2.jpg) center 60%/cover}
.banner img{width:96px;height:80px;flex-shrink:0;border-radius:8px;box-shadow:0 2px 10px rgba(0,0,0,.3)}
.banner h1{margin:0 0 4px;font-size:22px;letter-spacing:.02em}
.banner .tag{color:#ffd2bf;font-weight:600;margin-bottom:6px}
.banner small{color:#d6e4f5;display:block}
.banner .stripe{position:absolute;left:0;right:0;bottom:0;height:4px;background:linear-gradient(90deg,#1E88E5 0 33%,#FF4500 33% 66%,#1E88E5 66%)}

/* Layout */
.app{display:flex;min-height:100vh}
.side{width:230px;background:var(--side);color:var(--side-t);flex-shrink:0;position:sticky;top:0;height:100vh;overflow:auto}
.brand{display:flex;gap:10px;align-items:center;padding:16px;border-bottom:1px solid rgba(255,255,255,.1)}
.brand b{color:#fff;display:block;font-size:13px}.brand small{font-size:11px}
.logo{width:54px;height:45px;border-radius:6px;flex-shrink:0}
nav a{display:flex;gap:10px;align-items:center;color:var(--side-t);padding:10px 16px;border-left:3px solid transparent}
nav a:hover{background:rgba(255,255,255,.06);text-decoration:none}
nav a.active{background:rgba(255,255,255,.1);color:#fff;border-left-color:#5aa9ff}
nav .grp{font-size:11px;text-transform:uppercase;letter-spacing:.06em;padding:14px 16px 4px;color:#7f93ab}
nav .cnt{margin-left:auto;background:var(--red);color:#fff;border-radius:9px;padding:0 7px;font-size:11px}
.main{flex:1;min-width:0}
.top{display:flex;align-items:center;gap:12px;background:var(--panel);border-bottom:1px solid var(--line);padding:10px 20px;position:sticky;top:0;z-index:5}
.top h2{margin:0;font-size:18px;flex:1}
.me{display:flex;gap:6px;align-items:center;flex-wrap:wrap}
.menu-btn{display:none}
main{padding:20px}

/* Controls */
.btn{border:1px solid var(--line);background:#fff;color:var(--text);padding:7px 12px;border-radius:6px;cursor:pointer;font:inherit;white-space:nowrap}
.btn:hover{border-color:#b9c3cf}
.btn.primary{background:var(--pri);border-color:var(--pri);color:#fff}
.btn.primary:hover{background:var(--pri-d)}
.btn.danger{color:var(--red);border-color:#f0c4c4}
.btn.ghost{border-color:transparent;background:transparent}
.btn.sm{padding:3px 8px;font-size:12px}
.btn.wide{width:100%;padding:10px}
input,select,textarea{font:inherit;padding:7px 9px;border:1px solid #cdd5df;border-radius:6px;background:#fff;width:100%}
textarea{min-height:70px;resize:vertical}
label{display:block;font-size:12px;color:var(--muted);margin-bottom:10px}
label input,label select,label textarea{margin-top:3px;color:var(--text);font-size:14px}
.grid{display:grid;grid-template-columns:repeat(2,1fr);gap:0 14px}
.grid3{display:grid;grid-template-columns:repeat(3,1fr);gap:0 14px}
.span2{grid-column:span 2}.span3{grid-column:1/-1}
.toolbar{display:flex;gap:8px;flex-wrap:wrap;align-items:center;margin-bottom:14px}
.toolbar input,.toolbar select{width:auto;min-width:140px}
.toolbar .grow{flex:1;min-width:200px}
.actions{display:flex;gap:8px;justify-content:flex-end;margin-top:6px;flex-wrap:wrap}

/* Panels */
.card{background:var(--panel);border:1px solid var(--line);border-radius:8px;padding:16px;margin-bottom:16px}
.cards{display:grid;grid-template-columns:repeat(auto-fit,minmax(170px,1fr));gap:12px;margin-bottom:16px}
.kpi{background:var(--panel);border:1px solid var(--line);border-radius:8px;padding:14px;cursor:pointer;border-top:4px solid var(--pri)}
.kpi .n{font-size:28px;font-weight:700}.kpi .l{color:var(--muted);font-size:12px}
.kpi.red{border-top-color:var(--red)}.kpi.red .n{color:var(--red)}
.kpi.amber{border-top-color:#f0a500}.kpi.amber .n{color:var(--amber)}
.kpi.green{border-top-color:var(--green)}.kpi.green .n{color:var(--green)}
.kpi.gray{border-top-color:#8a96a6}
.two{display:grid;grid-template-columns:1fr 1fr;gap:16px}
.two>.card{margin-bottom:0}

/* Tables */
.tbl-wrap{overflow-x:auto;background:var(--panel);border:1px solid var(--line);border-radius:8px}
table{width:100%;border-collapse:collapse}
th,td{padding:8px 10px;border-bottom:1px solid var(--line);text-align:left;vertical-align:top}
th{background:#f7f9fb;font-size:12px;color:var(--muted);font-weight:600;white-space:nowrap}
tr.click{cursor:pointer}tr.click:hover td{background:#f5f9ff}
tr.late td:first-child{box-shadow:inset 3px 0 var(--red)}
td.num{text-align:right}
.empty{padding:24px;text-align:center;color:var(--muted)}

.badge{display:inline-block;padding:1px 8px;border-radius:10px;font-size:12px;white-space:nowrap;background:var(--gray-bg);color:#3c4757}
.b-red{background:var(--red-bg);color:var(--red)}.b-amber{background:var(--amber-bg);color:var(--amber)}
.b-green{background:var(--green-bg);color:var(--green)}.b-blue{background:var(--blue-bg);color:var(--pri)}
.bar{height:8px;background:var(--gray-bg);border-radius:4px;overflow:hidden;min-width:80px}
.bar>i{display:block;height:100%;background:var(--pri)}
.bar.red>i{background:var(--red)}.bar.green>i{background:var(--green)}.bar.amber>i{background:#f0a500}
.pct{font-size:12px;color:var(--muted)}

.alert-item{display:flex;gap:10px;align-items:flex-start;padding:8px 0;border-bottom:1px dashed var(--line);cursor:pointer}
.alert-item:last-child{border-bottom:0}
.alert-item .dot{width:9px;height:9px;border-radius:50%;margin-top:5px;flex-shrink:0}
.dot.red{background:var(--red)}.dot.amber{background:#f0a500}.dot.blue{background:var(--pri)}.dot.green{background:var(--green)}
.chk-list{display:flex;flex-wrap:wrap;gap:4px 14px;max-height:160px;overflow:auto;border:1px solid var(--line);border-radius:6px;padding:8px;margin-top:3px}
.chk-list label{display:flex;gap:6px;align-items:center;color:var(--text);margin:0;width:calc(50% - 14px);font-size:13px}
.chk-list input{width:auto;margin:0}
@media(max-width:700px){.chk-list label{width:100%}}
.role-tag{display:inline-block;font-size:11px;padding:1px 7px;border-radius:9px;background:var(--blue-bg);color:var(--pri);margin-left:6px}
.alert-item .t{flex:1}.alert-item small{color:var(--muted);display:block}

.files{display:flex;flex-direction:column;gap:4px;margin:4px 0 10px}
.file{display:flex;gap:8px;align-items:center;background:#f7f9fb;border:1px solid var(--line);border-radius:6px;padding:5px 8px;font-size:13px}
.file span{flex:1;overflow:hidden;text-overflow:ellipsis}
.kv{display:grid;grid-template-columns:150px 1fr;gap:6px 12px;margin-bottom:12px}
.kv dt{color:var(--muted)}.kv dd{margin:0}
.timeline{border-left:2px solid var(--line);margin:6px 0 10px 6px;padding-left:14px}
.timeline div{margin-bottom:8px;position:relative}
.timeline div:before{content:"";position:absolute;left:-20px;top:5px;width:10px;height:10px;border-radius:50%;background:var(--pri)}
.timeline small{color:var(--muted)}
.tabs{display:flex;gap:4px;margin-bottom:14px;border-bottom:1px solid var(--line)}
.tabs a{padding:8px 14px;border-bottom:2px solid transparent;color:var(--muted)}
.tabs a.active{border-bottom-color:var(--pri);color:var(--pri);font-weight:600}
.tabs a:hover{text-decoration:none}
.stars{color:#f0a500;letter-spacing:1px}

/* Modal */
.modal{position:fixed;inset:0;background:rgba(15,25,40,.45);display:flex;align-items:flex-start;justify-content:center;padding:40px 12px;overflow:auto;z-index:20}
.modal-box{background:#fff;border-radius:10px;width:min(760px,100%);box-shadow:0 10px 40px rgba(0,0,0,.25)}
.modal-head{display:flex;align-items:center;padding:14px 18px;border-bottom:1px solid var(--line)}
.modal-head h3{flex:1;margin:0;font-size:16px}
.x{border:0;background:none;font-size:24px;cursor:pointer;color:var(--muted);line-height:1}
#modalBody{padding:18px}
.toast{position:fixed;bottom:20px;right:20px;background:#1d2633;color:#fff;padding:10px 16px;border-radius:6px;z-index:30;max-width:400px}
.toast.bad{background:var(--red)}

@media (max-width:860px){
  .side{position:fixed;left:-240px;z-index:10;transition:left .2s}
  .side.open{left:0}
  .menu-btn{display:inline-block}
  .two,.grid,.grid3{grid-template-columns:1fr}
  .span2{grid-column:auto}
  main{padding:12px}
  .me span{display:none}
  .kv{grid-template-columns:1fr}
}
@media print{.side,.top,.toolbar,.btn{display:none!important}main{padding:0}}

/* ---------- Hỗ trợ AI ---------- */
.ai-status{font-size:12.5px;margin:-4px 0 10px}
.ai-chat{display:flex;flex-direction:column;height:calc(100vh - 210px);min-height:420px}
.ai-msgs{flex:1;overflow-y:auto;padding:4px 2px 10px}
.ai-msg{display:flex;margin:8px 0}
.ai-msg>div:first-child{max-width:min(860px,92%);padding:10px 14px;border-radius:12px;line-height:1.55}
.ai-msg.me{justify-content:flex-end}
.ai-msg.me>div{background:var(--pri);color:#fff;border-bottom-right-radius:3px}
.ai-msg.bot{flex-direction:column;align-items:flex-start}
.ai-msg.bot>div:first-child{background:var(--gray-bg);border-bottom-left-radius:3px}
.ai-msg.bad>div:first-child{background:var(--red-bg);color:var(--red)}
.ai-meta{font-size:11.5px;color:var(--muted);margin:4px 6px}
.ai-meta a,.ai-sample,.ref{cursor:pointer;color:var(--pri)}
.ref{background:var(--blue-bg);border-radius:5px;padding:0 5px;white-space:nowrap;text-decoration:none}
.ref:hover{text-decoration:underline}
.ai-files{margin:6px 4px;font-size:12.5px;max-width:860px}
.ai-files summary{cursor:pointer;color:var(--muted)}
.ai-files a{display:block;white-space:normal;margin:3px 0;background:none;padding:0}
.ai-empty{padding:20px;color:var(--text)}
.ai-sample{display:block;margin:6px 0;padding:8px 12px;border:1px solid var(--line);border-radius:8px;max-width:620px}
.ai-sample:hover{background:var(--blue-bg)}
.ai-input{display:flex;gap:8px;border-top:1px solid var(--line);padding-top:10px;align-items:flex-end}
.ai-input textarea{flex:1;resize:vertical;min-height:46px}
.ai-btns{display:flex;flex-direction:column;gap:4px}
.ai-typing span{animation:aiDot 1.2s infinite}.ai-typing span:nth-child(2){animation-delay:.2s}.ai-typing span:nth-child(3){animation-delay:.4s}
@keyframes aiDot{0%,100%{opacity:.2}50%{opacity:1}}
.md h3,.md h4{margin:10px 0 4px}.md p{margin:4px 0}.md ul,.md ol{margin:4px 0;padding-left:22px}.md table{font-size:13px}
.report h1{text-align:center;font-size:20px}.report h2{font-size:16px;margin-top:18px;color:var(--pri-d)}.report h3{font-size:14.5px;margin:14px 0 6px}
.ai-prov{border:1px solid var(--line);border-radius:8px;margin:10px 0;padding:6px 12px 10px}
.ai-prov legend{font-weight:600;padding:0 4px}.ai-prov.dim{opacity:.55}
label.chk{display:flex;align-items:center;gap:6px;flex-direction:row}label.chk input{width:auto}

/* MCE: tác giả, đơn vị BKG / STIC, Quản lý tài chính */
.login-box .author{text-align:center;font-size:12px;color:var(--muted);margin:12px 0 0}
.side-author{padding:12px 16px;font-size:11px;opacity:.75;border-top:1px solid rgba(255,255,255,.1)}
.b-dv-bkg{background:#e3efff;color:#0b5cad;font-weight:700}.b-dv-stic{background:#fff1dc;color:#b45309;font-weight:700}
.dv-tabs{align-items:center}.dv-tabs a{cursor:pointer}
label.inline{display:flex;gap:6px;align-items:center;margin:0;white-space:nowrap}label.inline input{width:auto;margin:0}
table.tc-lines input{margin:0}table.tc-lines td{padding:4px}
input.num{text-align:right}

/* ---------- Trao đổi nội bộ (chat) ---------- */
.ch-wrap{display:grid;grid-template-columns:320px 1fr;height:calc(100vh - 100px);min-height:460px;background:var(--panel);border:1px solid var(--line);border-radius:8px;overflow:hidden}
.ch-side{border-right:1px solid var(--line);display:flex;flex-direction:column;min-height:0}
.ch-tools{display:flex;gap:6px;padding:10px;border-bottom:1px solid var(--line);flex-wrap:wrap}
.ch-tools input{flex:1 1 100%}.ch-tools .btn{flex:1}
.ch-perm{padding:6px 12px;font-size:12.5px;background:var(--amber-bg)}
.ch-list{flex:1;overflow-y:auto}
.ch-item{display:flex;gap:10px;align-items:center;padding:9px 12px;color:var(--text);border-left:3px solid transparent;cursor:pointer}
.ch-item:hover{background:#f5f9ff;text-decoration:none}
.ch-item.active{background:var(--blue-bg);border-left-color:var(--pri)}
.ch-item.unread b{color:var(--pri-d)}.ch-item.unread .ch-pre{color:var(--text);font-weight:600}
.ch-it{flex:1;min-width:0}
.ch-row{display:flex;gap:6px;align-items:center;justify-content:space-between}
.ch-row b{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.ch-row small{color:var(--muted);white-space:nowrap}
.ch-pre{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;flex:1}
.ch-item .cnt{background:var(--red);color:#fff;border-radius:9px;padding:0 7px;font-size:11px}
.ch-kind{font-size:10.5px;background:var(--gray-bg);border-radius:6px;padding:0 5px;color:var(--muted)}
.ch-sep{font-size:11px;text-transform:uppercase;color:var(--muted);padding:10px 12px 4px}
.ch-av{width:36px;height:36px;border-radius:50%;background:linear-gradient(135deg,#1E88E5,#0b5cad);color:#fff;display:inline-flex;align-items:center;justify-content:center;font-weight:700;flex-shrink:0;font-size:15px}
.ch-av.grp{background:#fff1dc;font-size:18px}
.ch-av-sp{width:36px;flex-shrink:0}
.ch-main{display:flex;flex-direction:column;min-height:0;min-width:0;position:relative}
.ch-main.drag{outline:3px dashed var(--pri);outline-offset:-6px}
.ch-empty{margin:auto;text-align:center;color:var(--muted);padding:30px;font-size:15px;line-height:1.7}
.ch-head{display:flex;gap:10px;align-items:center;padding:10px 14px;border-bottom:1px solid var(--line)}
.ch-back{display:none;font-size:22px;padding:0 8px}
.ch-msgs{flex:1;overflow-y:auto;padding:10px 14px;background:#f7f9fc}
.ch-day{text-align:center;margin:12px 0 6px}.ch-day span{background:var(--gray-bg);color:var(--muted);font-size:11.5px;padding:2px 10px;border-radius:10px}
.ch-sys{text-align:center;color:var(--muted);font-size:12px;margin:6px 0}
.ch-more{text-align:center;margin:4px 0 8px;font-size:12.5px}
.ch-msg{display:flex;gap:8px;align-items:flex-end;margin-top:2px}.ch-msg.first{margin-top:10px}
.ch-msg.me{flex-direction:row-reverse}.ch-msg.me .ch-av-sp{display:none}
.ch-bub-w{max-width:min(620px,75%);display:flex;flex-direction:column}
.ch-msg.me .ch-bub-w{align-items:flex-end}
.ch-name{font-size:11.5px;color:var(--muted);margin:0 0 2px 4px}
.ch-bub{background:#fff;border:1px solid var(--line);border-radius:14px;padding:7px 11px 5px;line-height:1.45;word-wrap:break-word;overflow-wrap:anywhere}
.ch-msg.me .ch-bub{background:var(--pri);border-color:var(--pri);color:#fff}
.ch-msg.me .ch-bub a{color:#fff;text-decoration:underline}
.ch-at{display:block;text-align:right;font-size:10.5px;opacity:.6;margin-top:2px}
.ch-imgs{display:flex;flex-wrap:wrap;gap:4px;margin:2px 0}
.ch-imgs img{max-width:240px;max-height:200px;border-radius:8px;display:block;object-fit:cover;background:#eee}
.ch-file{display:flex;gap:6px;align-items:center;background:rgba(0,0,0,.05);border-radius:8px;padding:5px 8px;margin:3px 0;color:inherit}
.ch-msg.me .ch-file{background:rgba(255,255,255,.18);text-decoration:none!important}
.ch-file span{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.ch-file small{opacity:.7}
.ch-seen{font-size:11px;color:var(--muted);margin:2px 4px 0}
.ch-recall{visibility:hidden;color:var(--muted);font-size:15px;padding:0 4px;align-self:center}
.ch-msg:hover .ch-recall{visibility:visible}
.ch-files{display:flex;flex-wrap:wrap;gap:6px;padding:0 12px}
.ch-files:not(:empty){padding:8px 12px 0}
.ch-chip{background:var(--blue-bg);border-radius:12px;padding:2px 10px;font-size:12.5px}
.ch-input{display:flex;gap:8px;align-items:flex-end;padding:10px 12px;border-top:1px solid var(--line)}
.ch-input textarea{flex:1;min-height:38px;max-height:160px;resize:none}
.ch-attach{font-size:16px;margin:0;padding:7px 10px;color:var(--text)}
.ch-pick{max-height:60vh;overflow-y:auto;margin-top:8px}
.ch-members{max-height:46vh;overflow-y:auto;border:1px solid var(--line);border-radius:6px;padding:6px 10px;margin:4px 0 10px}
.ch-dept{margin:4px 0 8px}.ch-dept .chk-list{border:0;padding:2px 0 0 18px;margin:0}
.ch-mq{margin-bottom:4px}
@media (max-width:860px){
  .ch-wrap{grid-template-columns:1fr;height:calc(100vh - 80px)}
  .ch-wrap .ch-main{display:none}.ch-wrap.open .ch-side{display:none}.ch-wrap.open .ch-main{display:flex}
  .ch-back{display:inline-block}.ch-bub-w{max-width:85%}
}
.ch-bub.rec,.ch-msg.me .ch-bub.rec{background:transparent;border:1px dashed #b9c3cf;color:var(--muted)}.ch-bub.rec i{color:var(--muted)}
