/* ============================================================
   Kompa UI — Signal (dashboard khách) & Console (Studio nội bộ)
   Chốt 13/09/2026. Chỉ giữ logo Kompa; thay hoàn toàn kompa-theme.css.
   Xem .claude/skills/kompa-ui/SKILL.md trước khi sửa.
   ============================================================ */
@font-face{font-family:"Inter";font-weight:400 700;font-style:normal;font-display:swap;src:local("Inter")}

/* ---------- Signal tokens (mặc định) ---------- */
:root{
  --bg:#F5F6F8; --sf:#FFFFFF; --sf2:#EEF1F5; --sf3:#E7EBF1; --bd:#E3E6EB; --bd2:#D5DAE2;
  --tx:#101319; --mu:#697084; --ac:#00A98F; --ac-h:#068B77; --ac2:#5B4BD6; --ink:#101319; --ink2:#1A1F29;
  --gn:#11916F; --rd:#D6365A; --am:#E08A1E;
  --r:12px; --r-s:8px; --sh:0 1px 2px rgba(16,19,25,.05);
  --f:"Inter",system-ui,-apple-system,"Segoe UI",sans-serif;
  --fd:"Plus Jakarta Sans","Inter",system-ui,sans-serif;
  color-scheme:light;
}
/* ---------- Console tokens ---------- */
.console{
  --bg:#0B0D11; --sf:#13161C; --sf2:#181C23; --sf3:#1E232B; --bd:#232830; --bd2:#2C3340;
  --tx:#E7EAF0; --mu:#8A929F; --ac:#5B7CFA; --ac-h:#7A94FF; --ac2:#6E5BD6; --ink:#0B0D11; --ink2:#13161C;
  --gn:#3FB950; --rd:#F85149; --am:#D29922;
  --r:8px; --r-s:6px; --sh:none;
  --fd:"Inter",system-ui,sans-serif;
  color-scheme:dark;
}
*{box-sizing:border-box}
html,body{height:100%}
body{margin:0;background:var(--bg);color:var(--tx);font-family:var(--f);font-size:13.5px;line-height:1.55;-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility}
.num,.kpi b,table td.num,.v{font-variant-numeric:tabular-nums}
a{color:var(--ac);text-decoration:none}a:hover{color:var(--ac-h)}
h1,h2,h3,h4{font-family:var(--fd);letter-spacing:-.015em;margin:0}
h2{font-size:19px;font-weight:700}h3{font-size:13.5px;font-weight:700}h4{font-size:12.5px;font-weight:600;margin:14px 0 6px}
.muted{color:var(--mu)}
.eyebrow{font-size:10px;letter-spacing:.11em;text-transform:uppercase;color:var(--ac);font-weight:700}
.console .eyebrow{color:var(--mu);font-weight:600}
.micro{font-size:10px;letter-spacing:.08em;text-transform:uppercase;color:var(--mu)}

/* ---------- shell ---------- */
.k-shell{display:grid;grid-template-columns:214px 1fr;min-height:100dvh}
.k-sidebar{background:var(--ink);color:#8F97A8;padding:16px 10px;display:flex;flex-direction:column;gap:1px;position:sticky;top:0;height:100dvh;overflow-y:auto}
.console .k-sidebar{background:var(--bg);border-right:1px solid var(--bd)}
.k-logo{height:19px;margin:2px 8px 6px;align-self:flex-start}
.k-sidebar .brand{font-size:9.5px;letter-spacing:.12em;text-transform:uppercase;color:#5D6475;margin:0 8px 16px}
.k-sidebar nav{display:flex;flex-direction:column;gap:1px}
.k-sidebar a{display:flex;align-items:center;gap:9px;padding:7px 10px;border-radius:var(--r-s);color:inherit;font-size:12.5px;font-weight:500}
.k-sidebar a svg{width:15px;height:15px;flex:none;stroke-width:1.9}
.k-sidebar a:hover{background:rgba(255,255,255,.06);color:#fff}
.console .k-sidebar a:hover{background:var(--sf2);color:var(--tx)}
.k-sidebar a.active{background:rgba(255,255,255,.1);color:#fff}
.console .k-sidebar a.active{background:var(--sf2);color:var(--tx)}
.k-sidebar .foot{margin-top:auto;padding:14px 10px 2px;font-size:10.5px;color:#5D6475;line-height:1.5}
.k-main{min-width:0;display:flex;flex-direction:column}
.topbar{position:sticky;top:0;z-index:40;background:var(--bg);border-bottom:1px solid var(--bd);display:flex;align-items:center;gap:10px;flex-wrap:wrap;padding:12px clamp(14px,2.6vw,26px)}
.topbar .ttl{min-width:0}
.topbar .kicker{font-size:10px;letter-spacing:.11em;text-transform:uppercase;color:var(--ac);font-weight:700}
.console .topbar .kicker{color:var(--mu);font-weight:600}
.topbar h1{font-family:var(--fd);font-size:17px;font-weight:700;letter-spacing:-.02em;margin:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.topbar .tools{margin-left:auto;display:flex;gap:7px;align-items:center;flex-wrap:wrap}
.page{padding:18px clamp(14px,2.6vw,26px) 60px;max-width:1560px;width:100%}
.mobnav{display:none;gap:6px;overflow-x:auto;padding:10px 14px 2px;scrollbar-width:none}
.mobnav::-webkit-scrollbar{display:none}
.mobnav a{flex:none;padding:6px 12px;border-radius:var(--r-s);background:var(--sf);border:1px solid var(--bd);color:var(--tx);font-size:12.5px;font-weight:600}
.mobnav a.active{background:var(--ac);border-color:var(--ac);color:#fff}
@media (max-width:900px){.k-shell{grid-template-columns:1fr}.k-sidebar{display:none}.mobnav{display:flex}}

/* ---------- controls ---------- */
.k-btn,button.k-btn{display:inline-flex;align-items:center;gap:6px;border:1px solid var(--bd2);background:var(--sf);color:var(--tx);font:inherit;font-size:12.5px;font-weight:600;padding:7px 13px;border-radius:var(--r-s);cursor:pointer;min-height:32px}
.k-btn:hover{border-color:var(--ac);color:var(--ac)}
.k-btn-primary{background:var(--ac);border-color:var(--ac);color:#fff}.k-btn-primary:hover{background:var(--ac-h);border-color:var(--ac-h);color:#fff}
.k-btn-outline{background:transparent}
.k-btn-ghost{background:transparent;border-color:transparent;color:var(--mu)}.k-btn-ghost:hover{background:var(--sf2);color:var(--tx);border-color:transparent}
.k-btn.ok{background:var(--gn);border-color:var(--gn);color:#fff}.k-btn.bad{background:var(--rd);border-color:var(--rd);color:#fff}
.k-btn.sm{min-height:27px;padding:4px 10px;font-size:11.5px}
.k-btn:focus-visible,select:focus-visible,input:focus-visible,textarea:focus-visible{outline:2px solid var(--ac);outline-offset:1px}
select,input,textarea,.f{border:1px solid var(--bd2);border-radius:var(--r-s);padding:6px 10px;font:inherit;font-size:12.5px;background:var(--sf);color:var(--tx);min-height:32px}
textarea.f{min-height:auto;line-height:1.5}
textarea.q{width:100%;min-height:150px;font-family:ui-monospace,Menlo,monospace;font-size:12px}
label{font-size:12.5px;color:var(--mu);display:inline-flex;align-items:center;gap:6px}
.pill{display:inline-flex;align-items:center;gap:6px;background:var(--sf);border:1px solid var(--bd);border-radius:var(--r-s);padding:5px 10px;font-size:11.5px;color:var(--mu);white-space:nowrap}
.pill.live{color:var(--gn);border-color:var(--bd)}
.pill.live::before{content:"";width:6px;height:6px;border-radius:50%;background:var(--gn)}
.pill.warn{color:var(--am)}
.dot{width:6px;height:6px;border-radius:50%;display:inline-block;flex:none;vertical-align:middle}
.dot.on{background:var(--gn)}.dot.off{background:var(--mu)}.dot.alert{background:var(--rd)}
.pill:has(.dot)::before{display:none}
.tag{display:inline-block;padding:2px 8px;border-radius:5px;font-size:10.5px;font-weight:600;background:var(--sf2);color:var(--mu);white-space:nowrap;border:1px solid transparent}
.tag.pos,.tag.good{background:color-mix(in srgb,var(--gn) 14%,transparent);color:var(--gn)}
.tag.neg,.tag.high,.tag.bad{background:color-mix(in srgb,var(--rd) 14%,transparent);color:var(--rd)}
.tag.medium,.tag.warn{background:color-mix(in srgb,var(--am) 16%,transparent);color:var(--am)}
.tag.A{background:color-mix(in srgb,var(--gn) 14%,transparent);color:var(--gn)}
.tag.B{background:color-mix(in srgb,var(--ac) 14%,transparent);color:var(--ac)}
.tag.C{background:color-mix(in srgb,var(--am) 16%,transparent);color:var(--am)}
.tag.status-applied,.tag.status-verified{background:color-mix(in srgb,var(--gn) 14%,transparent);color:var(--gn)}
.tag.status-pending_write{background:color-mix(in srgb,var(--ac) 14%,transparent);color:var(--ac)}
.tag.status-rejected,.tag.status-dismissed,.tag.status-rolled_back,.tag.status-apply_failed{background:color-mix(in srgb,var(--rd) 12%,transparent);color:var(--rd)}
.chip{display:inline-block;padding:3px 9px;border-radius:6px;background:var(--sf2);font-size:11.5px;margin:2px 3px 2px 0;cursor:pointer;color:var(--tx)}
.chip.x{background:color-mix(in srgb,var(--rd) 10%,transparent)}
.chip.site{background:color-mix(in srgb,var(--ac) 10%,transparent)}
.kbd{font:10px/1 ui-monospace,Menlo,monospace;color:var(--mu);border:1px solid var(--bd2);border-bottom-width:2px;border-radius:4px;padding:2px 5px}
.row{display:flex;gap:9px;align-items:center;flex-wrap:wrap}
.grow{flex:1;min-width:0}
.seg{display:flex;gap:3px;background:var(--sf2);padding:3px;border-radius:var(--r-s);width:max-content;flex-wrap:wrap}
.seg button{border:0;background:transparent;color:var(--mu);font:inherit;font-size:12.5px;font-weight:600;padding:5px 12px;border-radius:5px;cursor:pointer}
.seg button.on{background:var(--ac);color:#fff}
.sticky-h{position:sticky;top:56px;z-index:5;background:var(--bg);padding:8px 0}

/* ---------- surfaces ---------- */
.k-card{background:var(--sf);border:1px solid var(--bd);border-radius:var(--r);padding:14px 16px;box-shadow:var(--sh)}
.k-card h3{margin:0 0 11px;display:flex;align-items:center;gap:8px}
.k-card h3 span.meta{margin-left:auto;font-weight:500;font-size:11px;color:var(--mu)}
.two{display:grid;grid-template-columns:1fr 1fr;gap:14px}
@media (max-width:900px){.two{grid-template-columns:1fr}}
.grid12{display:grid;grid-template-columns:repeat(12,1fr);gap:14px;align-items:start}
.blk{min-width:0;background:var(--sf);border:1px solid var(--bd);border-radius:var(--r);padding:14px 16px;box-shadow:var(--sh)}
.blk h3{margin:0 0 11px}
.w12{grid-column:span 12}.w8{grid-column:span 8}.w7{grid-column:span 7}.w6{grid-column:span 6}.w5{grid-column:span 5}.w4{grid-column:span 4}.w3{grid-column:span 3}
@media (max-width:1000px){.grid12>.blk{grid-column:span 12!important}}
.callout{border-left:3px solid var(--ac);background:var(--sf2);padding:10px 14px;border-radius:0 var(--r-s) var(--r-s) 0;margin:10px 0;font-size:12.5px}
.callout.warn{border-left-color:var(--am)}.callout.bad{border-left-color:var(--rd)}
.diag{padding:9px 11px;border-radius:var(--r-s);background:var(--sf2);margin:6px 0;font-size:12.5px}
.diag b{display:block}
.sample{border-left:2px solid var(--bd2);padding:6px 10px;margin:6px 0;font-size:12.5px;background:var(--sf2);border-radius:0 var(--r-s) var(--r-s) 0}
.sample.bad{border-left-color:var(--rd)}.sample.good{border-left-color:var(--gn)}
.metric{display:inline-flex;flex-direction:column;padding:8px 12px;background:var(--sf2);border-radius:var(--r-s);min-width:88px}
.metric b{font-size:17px;font-weight:700;font-variant-numeric:tabular-nums;font-family:var(--fd)}
.metric span{font-size:10px;letter-spacing:.06em;text-transform:uppercase;color:var(--mu)}
.progress{height:6px;background:var(--sf3);border-radius:3px;overflow:hidden}.progress i{display:block;height:100%;background:var(--ac)}
.score{font-size:26px;font-weight:800;font-family:var(--fd);font-variant-numeric:tabular-nums}
.score.A,.score.B{color:var(--gn)}.score.C{color:var(--am)}.score.D,.score.F{color:var(--rd)}
.loading{color:var(--mu);padding:22px 0;font-size:12.5px}

/* ---------- KPI ---------- */
.kpi{display:grid;grid-template-columns:repeat(auto-fit,minmax(132px,1fr));gap:10px;margin-bottom:14px}
.kpi .k{background:var(--sf);border:1px solid var(--bd);border-radius:var(--r);padding:11px 13px;cursor:pointer;box-shadow:var(--sh)}
.kpi .k:hover{border-color:var(--ac)}
.kpi .k b{display:block;font-family:var(--fd);font-size:21px;font-weight:700;letter-spacing:-.02em;font-variant-numeric:tabular-nums;line-height:1.2}
.kpi .k span{font-size:10.5px;letter-spacing:.05em;text-transform:uppercase;color:var(--mu)}
.kpi .k .d{font-size:11.5px;font-weight:600;font-variant-numeric:tabular-nums;margin-top:2px}
.d.up{color:var(--gn)}.d.down{color:var(--rd)}
/* Console: KPI là dải liền, không phải thẻ rời */
.console .kpi{display:grid;gap:0;border:1px solid var(--bd);border-radius:var(--r);overflow:hidden;background:var(--sf)}
.console .kpi .k{border:0;border-right:1px solid var(--bd);border-radius:0;box-shadow:none}
.console .kpi .k:last-child{border-right:0}
.console .kpi .k b{font-size:20px;font-weight:600}

/* ---------- tables & bars ---------- */
table.t{width:100%;border-collapse:collapse;font-size:12.5px}
table.t th{text-align:left;font-size:10px;letter-spacing:.08em;text-transform:uppercase;color:var(--mu);font-weight:600;padding:6px 8px;border-bottom:1px solid var(--bd)}
table.t td{padding:7px 8px;border-bottom:1px solid var(--bd);vertical-align:top}
table.t tbody tr:hover{background:var(--sf2)}
table.t td.num,table.t th.num{text-align:right;font-variant-numeric:tabular-nums}
.barrow{display:grid;grid-template-columns:minmax(0,1fr) 84px 62px;gap:9px;align-items:center;padding:5px 0;cursor:pointer;font-size:12.5px}
.barrow>span:first-child{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.barrow .b{height:6px;border-radius:3px;background:var(--ac)}
.barrow .b.neg{background:var(--rd)}.barrow .b.pos{background:var(--gn)}
.barrow>span:last-child{text-align:right;color:var(--mu);font-variant-numeric:tabular-nums;font-size:11.5px}
.chart-box{position:relative;height:250px}
.spark{height:32px}

/* ---------- posts / evidence ---------- */
.post{background:var(--sf2);border-radius:var(--r-s);padding:9px 11px;margin:7px 0;font-size:12.5px}
.post .h{display:flex;gap:7px;align-items:center;flex-wrap:wrap;font-size:10.5px;color:var(--mu);margin-bottom:4px}
.post .c{white-space:pre-wrap;margin:4px 0}
.stream{display:grid;gap:7px;max-height:300px;overflow:auto}

/* ---------- AI hero (Signal) ---------- */
.hero-ai{background:var(--ink);color:#E8EBF2;border-radius:14px;padding:18px 22px;margin-bottom:14px}
.hero-ai .tag-ai{display:inline-flex;align-items:center;gap:6px;font-size:10px;letter-spacing:.11em;text-transform:uppercase;color:#5FE3CB;font-weight:700;margin-bottom:8px}
.hero-ai .tag-ai::before{content:"";width:6px;height:6px;border-radius:50%;background:#5FE3CB}
.hero-ai h3{font-size:17px;font-weight:700;line-height:1.36;margin:0 0 8px;color:#fff}
.hero-ai ul{margin:0;padding-left:17px;color:#A7AFC0;font-size:12.5px}
.hero-ai li{margin-bottom:4px}
.hero-ai li b,.hero-ai p b{color:#E8EBF2;font-weight:600}
.hero-ai p{margin:0 0 8px;color:#A7AFC0;font-size:12.5px}
.hero-ai p.cav{margin:10px 0 0;font-size:11.5px;opacity:.85;border-top:1px solid rgba(255,255,255,.1);padding-top:8px}
.console .hero-ai p.cav{border-top-color:var(--bd)}
.console .hero-ai{background:var(--sf);border:1px solid var(--bd);color:var(--tx)}
.console .hero-ai h3{color:var(--tx)}.console .hero-ai ul,.console .hero-ai p{color:var(--mu)}
.console .hero-ai .tag-ai{color:var(--ac)}.console .hero-ai .tag-ai::before{background:var(--ac)}
.hello{font-family:var(--fd);font-size:20px;font-weight:700;line-height:1.32;margin:0 0 8px;letter-spacing:-.02em}
.hello em{font-style:normal;color:var(--ac)}
.item{display:flex;gap:10px;background:var(--sf2);border-radius:var(--r-s);padding:10px 12px;margin:7px 0}
.lvl{width:30px;height:30px;border-radius:8px;display:grid;place-items:center;color:#fff;font-weight:700;flex:none;font-size:12px}
.lvl.high{background:var(--rd)}.lvl.medium{background:var(--am)}.lvl.good{background:var(--gn)}
.ev{margin-top:5px;font-size:11.5px;border-left:2px solid var(--bd2);padding-left:8px;color:var(--mu)}

/* ---------- drilldown ---------- */
.drill{position:fixed;inset:0;background:rgba(11,13,17,.5);z-index:100;display:flex;justify-content:flex-end;backdrop-filter:blur(2px)}
.drill[hidden]{display:none!important}
.drill-in{width:min(720px,100%);background:var(--bg);height:100%;overflow:auto;padding:16px 20px;border-left:1px solid var(--bd)}
.toast{position:fixed;left:50%;bottom:22px;transform:translateX(-50%) translateY(20px);background:var(--ink2);color:#fff;padding:10px 16px;border-radius:var(--r-s);font-size:12.5px;opacity:0;pointer-events:none;transition:.2s;z-index:200;max-width:86vw}
.toast.show{opacity:1;transform:translateX(-50%)}
.toast.bad{background:var(--rd)}

/* ---------- queue / composer (Console) ---------- */
.qcard{background:var(--sf);border:1px solid var(--bd);border-radius:var(--r);padding:11px 13px;margin-bottom:7px;cursor:pointer}
.qcard:hover{border-color:var(--ac)}
.qcard.sel{border-color:var(--ac);box-shadow:0 0 0 2px color-mix(in srgb,var(--ac) 22%,transparent)}
.qcard .t{font-weight:600;font-size:13px}
.qcard .s{font-size:12.5px;color:var(--mu);margin-top:3px}
.qcard .m{margin-top:6px;display:flex;gap:6px;flex-wrap:wrap;align-items:center}
.split{display:grid;grid-template-columns:minmax(0,1.05fr) minmax(0,1fr);gap:14px}
@media (max-width:1000px){.split{grid-template-columns:1fr}}
.drawer{position:sticky;top:64px;max-height:calc(100dvh - 80px);overflow:auto;background:var(--sf);border:1px solid var(--bd);border-radius:var(--r);padding:14px 16px}
#p-editor label{display:block;font-size:10.5px;letter-spacing:.05em;text-transform:uppercase;color:var(--mu);margin:10px 0 3px}
#p-editor .f,#p-editor textarea,#p-editor input,#p-editor select{width:100%}
#p-editor .row .f{width:auto}
.composer{display:grid;grid-template-columns:minmax(0,1fr) 320px;gap:14px}
@media (max-width:1100px){.composer{grid-template-columns:1fr}}
.blkedit{border:1px solid var(--bd);border-radius:var(--r-s);padding:8px 10px;margin-bottom:7px;background:var(--sf);cursor:grab}
.blkedit.drag{opacity:.4}
.blkedit .h{display:flex;gap:8px;align-items:center;font-size:12.5px}
.gal{display:grid;grid-template-columns:repeat(auto-fill,minmax(210px,1fr));gap:9px}
.gal .g{border:1px solid var(--bd);border-radius:var(--r-s);padding:9px 11px;background:var(--sf);cursor:pointer}
.gal .g:hover{border-color:var(--ac)}
.gal .g.off{opacity:.45;cursor:not-allowed}
.gal .g b{display:block;font-size:12.5px}.gal .g span{font-size:11px;color:var(--mu)}
.tree li{list-style:none;padding:3px 0 3px 12px;border-left:1px dashed var(--bd2)}
.tree ul{padding-left:8px;margin:0}
.tree .def{color:var(--mu);font-size:11.5px}
.nav-badge{margin-left:auto;background:var(--am);color:#0B0D11;border-radius:5px;padding:0 6px;font-size:10px;font-weight:700}
.ask-box{display:flex;gap:7px}.ask-box input{flex:1}
.answer{background:var(--sf);border:1px solid var(--bd);border-radius:var(--r);padding:13px 16px;margin:10px 0}
.report .sec{background:var(--sf);border:1px solid var(--bd);border-radius:var(--r);padding:12px 14px;margin:8px 0}
.report [contenteditable]{outline:1px dashed transparent;border-radius:4px}
.report [contenteditable]:focus{outline-color:var(--ac);background:var(--sf2)}
.nar{background:var(--sf);border:1px solid var(--bd);border-radius:var(--r);padding:13px 16px;margin-bottom:11px;cursor:pointer;box-shadow:var(--sh)}
.nar.high{border-left:3px solid var(--rd)}.nar.medium{border-left:3px solid var(--am)}.nar.low{border-left:3px solid var(--gn)}
.big{font-size:34px;font-weight:800;font-family:var(--fd);letter-spacing:-.03em;line-height:1;font-variant-numeric:tabular-nums}
.livep{display:inline-flex;align-items:center;gap:6px;font-weight:700}
.livep i{width:7px;height:7px;border-radius:50%;background:var(--gn);animation:blink 1.4s infinite}
@keyframes blink{50%{opacity:.35}}
@media (prefers-reduced-motion:reduce){.livep i,.stream .post{animation:none}}
@media print{.k-sidebar,.topbar,.mobnav,.k-btn,.drill{display:none!important}.k-shell{grid-template-columns:1fr}.page{padding:0}.blk,.k-card{break-inside:avoid;box-shadow:none}}
