/* ===== themes ===== */
:root{                       /* dark (default) */
  --bg:#0b0d12; --panel:#14171f; --panel2:#1b1f29; --line:#252a36; --line2:#31384a;
  --fg:#e9ecf2; --muted:#98a1b2; --faint:#697386;
  --accent:#5b9dff; --accent2:#57d1c9; --on-accent:#06121f;
  --good:#3ecf8e; --warn:#e2b93b; --bad:#ff6b6b;
  --tA:#3ecf8e; --tB:#5b9dff; --tC:#e2b93b; --tD:#ff6b6b;
  --grad:linear-gradient(135deg,#5b9dff,#57d1c9);
  --shadow:0 8px 28px rgba(0,0,0,.38); --snip:#0d0f14; --sel:rgba(91,157,255,.14);
  --rail-w:clamp(320px,24vw,400px);
}
:root[data-theme="light"]{
  --bg:#f5f7fa; --panel:#ffffff; --panel2:#f2f4f8; --line:#e5e8ee; --line2:#d5dae2;
  --fg:#1b2230; --muted:#5b6576; --faint:#8b94a4;
  --accent:#2f6fed; --accent2:#0ea5a5; --on-accent:#ffffff;
  --good:#12a56c; --warn:#b8850f; --bad:#dc3838;
  --tA:#12a56c; --tB:#2f6fed; --tC:#b8850f; --tD:#dc3838;
  --grad:linear-gradient(135deg,#2f6fed,#0ea5a5);
  --shadow:0 8px 26px rgba(23,38,66,.09); --snip:#f5f7fb; --sel:rgba(47,111,237,.10);
}
*{box-sizing:border-box}
html,body{height:100%}
body{margin:0;background:var(--bg);color:var(--fg);
  font:15px/1.6 -apple-system,"Segoe UI",Roboto,Helvetica,Arial,sans-serif;overflow:hidden;
  transition:background .2s,color .2s}
::selection{background:var(--sel)}
button{font:inherit;cursor:pointer;border:0;border-radius:10px;color:inherit}
::-webkit-scrollbar{width:10px;height:10px}
::-webkit-scrollbar-thumb{background:var(--line2);border-radius:8px}
::-webkit-scrollbar-track{background:transparent}
code{background:var(--panel2);padding:1.5px 6px;border-radius:5px;color:var(--accent2);font-size:.85em}

/* ===== layout ===== */
.app{display:grid;grid-template-columns:246px 1fr;height:100vh}
.sidebar{background:var(--panel);border-right:1px solid var(--line);display:flex;flex-direction:column;padding:18px 12px}
.brand{display:flex;align-items:center;gap:10px;padding:4px 8px 18px}
.brand .logo{width:30px;height:30px;border-radius:9px;background:var(--grad);flex:0 0 auto;box-shadow:var(--shadow)}
.brand b{font-size:16px;letter-spacing:.2px}
.brand span{color:var(--muted);font-size:11.5px;display:block;margin-top:-1px}
.nav{display:flex;flex-direction:column;gap:5px}
.nav button{display:flex;align-items:center;gap:11px;padding:11px 13px;background:transparent;
  color:var(--muted);text-align:left;border-radius:11px;transition:.14s;font-size:14.5px}
.nav button .ic{width:20px;text-align:center;font-size:16px}
.nav button:hover{background:var(--panel2);color:var(--fg)}
.nav button.active{background:var(--panel2);color:var(--fg);box-shadow:inset 3px 0 0 var(--accent)}
.side-foot{margin-top:auto;padding:14px 10px 2px;border-top:1px solid var(--line);color:var(--faint);font-size:12px}
.userrow{display:flex;align-items:center;justify-content:space-between;gap:8px;margin-top:10px;
  padding-top:10px;border-top:1px solid var(--line)}
.userrow span{color:var(--muted);font-weight:600;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.userrow.hidden{display:none}
.side-foot .stat{display:flex;justify-content:space-between;margin:4px 0}
.side-foot .stat b{color:var(--fg);font-weight:600}
.pill{display:inline-flex;align-items:center;gap:6px;font-size:11.5px;color:var(--muted);
  background:var(--panel2);border:1px solid var(--line);border-radius:20px;padding:4px 10px}
.pill .dot{width:7px;height:7px;border-radius:50%;background:var(--good)}

/* ===== workspace ===== */
.workspace{position:relative;overflow:hidden;display:flex;flex-direction:column;min-width:0}
.topbar{height:56px;border-bottom:1px solid var(--line);display:flex;align-items:center;
  justify-content:space-between;padding:0 24px;flex:0 0 auto;background:var(--panel)}
.topbar h2{font-size:15.5px;margin:0;font-weight:600}
.topbar .actions{display:flex;gap:8px;align-items:center}
.iconbtn{width:34px;height:34px;border-radius:9px;background:var(--panel2);border:1px solid var(--line);
  color:var(--muted);display:flex;align-items:center;justify-content:center;font-size:15px}
.iconbtn:hover{color:var(--fg);border-color:var(--line2)}
#srcBtn{display:none}
.workspace.chat #srcBtn{display:inline-flex}       /* Sources button — opens the evidence drawer */
.view{flex:1;overflow-y:auto;padding:26px 28px 34px;scroll-behavior:smooth}
.view[hidden]{display:none}
.wrap{max-width:860px;margin:0 auto}               /* conversation centered, comfortable width */

/* ===== chat ===== */
.msg{margin:20px 0;display:flex;gap:13px}
.msg.user{justify-content:flex-end}
.msg.user .bubble{background:var(--grad);color:var(--on-accent);font-weight:500;
  border-radius:15px 15px 5px 15px;padding:11px 15px;max-width:76%;box-shadow:var(--shadow)}
.avatar{width:31px;height:31px;border-radius:9px;background:var(--panel);border:1px solid var(--line);
  display:flex;align-items:center;justify-content:center;flex:0 0 auto;font-size:14px;color:var(--accent)}
.msg.assistant .body{flex:1;min-width:0}

/* enterprise answer */
.answer{background:var(--panel);border:1px solid var(--line);border-radius:16px;overflow:hidden;box-shadow:var(--shadow)}
.answer .ahead{display:flex;align-items:center;justify-content:space-between;padding:12px 18px;
  border-bottom:1px solid var(--line);font-size:12px;color:var(--muted);text-transform:uppercase;letter-spacing:.6px}
.answer .ahead .copy{background:var(--panel2);border:1px solid var(--line);color:var(--muted);
  padding:4px 10px;border-radius:7px;font-size:11px;text-transform:none;letter-spacing:0}
.section{padding:6px 20px 4px}
.section+.section{border-top:1px solid var(--line)}
.shead{display:flex;align-items:center;gap:9px;margin:14px 0 8px;font-weight:700;font-size:14.5px;color:var(--fg)}
.shead .bar{width:4px;height:16px;border-radius:3px;background:var(--grad)}
.claim{margin:0 0 12px;color:var(--fg);line-height:1.72;font-size:14.7px;max-width:66ch}
.cref{display:inline-flex;align-items:center;font-size:10px;padding:0 6px;margin-left:5px;height:16px;
  border-radius:9px;background:var(--panel2);color:var(--accent);cursor:pointer;border:1px solid var(--line2);
  vertical-align:2px;font-weight:600;transition:.12s}
.cref:hover{background:var(--sel)}
.cref.bad{color:var(--bad)}
.afoot{padding:10px 20px 14px;border-top:1px solid var(--line);display:flex;gap:10px;flex-wrap:wrap;align-items:center;font-size:12px;color:var(--muted)}
.verdict{font-size:11px;padding:2px 9px;border-radius:6px;font-weight:700}
.verdict.pass{background:var(--good);color:var(--on-accent)}.verdict.warn{background:var(--warn);color:var(--on-accent)}.verdict.reject{background:var(--bad);color:var(--on-accent)}
.facets{display:flex;gap:8px;flex-wrap:wrap;margin-top:10px}
.facet{font-size:11.5px;padding:4px 11px;border-radius:20px;background:var(--panel);border:1px solid var(--line);color:var(--muted);cursor:pointer}
.facet:hover{border-color:var(--accent);color:var(--fg)}
.insufficient{border:1px dashed var(--warn);border-radius:15px;padding:18px;background:color-mix(in srgb,var(--warn) 8%,var(--panel));color:var(--fg)}
.insufficient b{color:var(--warn)}
.retrybar{margin-top:10px;display:flex;gap:8px}
.thinking{color:var(--muted);font-size:13px;display:flex;align-items:center;gap:8px;padding:2px}
.dots:after{content:"";animation:dots 1.2s steps(4,end) infinite}
@keyframes dots{0%{content:""}25%{content:"."}50%{content:".."}75%{content:"..."}}
.trace{background:var(--snip);border:1px solid var(--line);border-radius:11px;padding:13px;font-size:11px;
  color:var(--muted);max-height:320px;overflow:auto;margin-top:12px;white-space:pre-wrap;font-family:ui-monospace,Menlo,Consolas,monospace}

/* composer */
.composer{border-top:1px solid var(--line);padding:14px 28px 20px;flex:0 0 auto;background:var(--bg)}
.composer .inner{max-width:820px;margin:0 auto;display:flex;gap:10px;align-items:flex-end;
  background:var(--panel);border:1px solid var(--line2);border-radius:16px;padding:6px 6px 6px 14px}
.composer .inner:focus-within{border-color:var(--accent)}
.composer textarea{flex:1;resize:none;background:transparent;border:0;color:var(--fg);padding:8px 0;font:inherit;max-height:150px}
.composer textarea:focus{outline:none}
.send{background:var(--grad);color:var(--on-accent);font-weight:700;padding:10px 18px;border-radius:12px}
.send:disabled{opacity:.5;cursor:default}
.suggest{max-width:820px;margin:0 auto 12px;display:flex;gap:8px;flex-wrap:wrap}
.suggest button{background:var(--panel);border:1px solid var(--line);color:var(--muted);font-size:12.5px;padding:7px 13px;border-radius:20px}
.suggest button:hover{color:var(--fg);border-color:var(--line2)}

/* cards / fill / docs */
.card{border:1px solid var(--line);background:var(--panel);border-radius:16px;padding:20px 22px;margin:0 0 18px;box-shadow:var(--shadow)}
.card h3{margin:0 0 5px;font-size:16px}
.card .sub{color:var(--muted);font-size:13px;margin-bottom:16px;line-height:1.55}
.row{display:flex;gap:12px;align-items:center;flex-wrap:wrap}
.btn{background:var(--grad);color:var(--on-accent);font-weight:700;padding:10px 17px;border-radius:11px}
.btn:disabled{opacity:.5;cursor:default}
.btn.ghost{background:var(--panel2);border:1px solid var(--line2);color:var(--fg);font-weight:500}
.btn.sm{padding:6px 12px;font-size:12.5px;border-radius:9px}
.btn.link{background:transparent;border:1px solid var(--line);color:var(--accent);text-decoration:none;display:inline-block}
select,input[type=file]{background:var(--panel2);border:1px solid var(--line2);color:var(--fg);border-radius:10px;padding:10px 12px;font:inherit}
label.lab{color:var(--muted);font-size:12.5px;display:flex;flex-direction:column;gap:6px}
.drop{border:1.5px dashed var(--line2);border-radius:14px;padding:30px;text-align:center;color:var(--muted);transition:.15s;cursor:pointer}
.drop.over{border-color:var(--accent);background:var(--sel);color:var(--fg)}
.status{color:var(--muted);font-size:12.5px;margin-top:12px;min-height:18px;line-height:1.5}
.divider{display:flex;align-items:center;gap:12px;color:var(--faint);font-size:12px;margin:16px 0}
.divider:before,.divider:after{content:"";flex:1;height:1px;background:var(--line)}

/* progress + tiers + structure table */
.bar{height:9px;background:var(--panel2);border-radius:8px;overflow:hidden;margin:14px 0 8px}
.bar>i{display:block;height:100%;width:0;background:var(--grad);transition:width .35s}
.tiers{display:flex;gap:8px;flex-wrap:wrap;margin:10px 0;align-items:center}
.tbadge{font-weight:800;color:var(--on-accent);padding:3px 10px;border-radius:8px;font-size:12.5px}
.tbadge.A{background:var(--tA)}.tbadge.B{background:var(--tB)}.tbadge.C{background:var(--tC)}.tbadge.D{background:var(--tD)}
table{width:100%;border-collapse:collapse;margin-top:8px;font-size:13px}
th,td{border-bottom:1px solid var(--line);padding:9px 11px;text-align:left;vertical-align:top}
th{color:var(--muted);font-weight:600;position:sticky;top:0;background:var(--panel)}
.tflag{font-weight:800;padding:2px 8px;border-radius:6px;color:var(--on-accent);font-size:12px}
.tflag.A{background:var(--tA)}.tflag.B{background:var(--tB)}.tflag.C{background:var(--tC)}.tflag.D{background:var(--tD)}
td textarea{width:100%;min-width:170px;background:var(--snip);color:var(--fg);border:1px solid var(--line2);border-radius:7px;padding:6px;font:inherit;resize:vertical}
.tag{display:inline-block;font-size:11px;padding:2px 8px;border-radius:6px;background:var(--panel2);border:1px solid var(--line);color:var(--muted);margin:0 4px 4px 0}

/* ===== evidence drawer (hidden by default, opens on click) ===== */
#cite{position:absolute;top:56px;right:0;bottom:0;width:min(400px,90vw);z-index:6;
  background:var(--panel);border-left:1px solid var(--line);box-shadow:var(--shadow);
  transform:translateX(100%);transition:transform .22s;
  overflow-y:auto;overflow-x:hidden;padding:0;min-width:0}
#cite.open{transform:translateX(0)}
.railhead{position:sticky;top:0;z-index:2;display:flex;align-items:center;gap:8px;
  padding:13px 16px;background:var(--panel);border-bottom:1px solid var(--line);
  font-size:12px;letter-spacing:.6px;text-transform:uppercase;color:var(--muted)}
.railhead b{color:var(--fg);font-weight:700;text-transform:none;letter-spacing:0;font-size:12px}
#cite .x{margin-left:auto;display:block;position:static;width:auto;height:auto;
  background:none;color:var(--muted);font-size:22px;padding:0}
.railbody{padding:14px 16px 26px}
.railempty{color:var(--faint);font-size:12.5px;line-height:1.65;padding:26px 6px}
.railempty b{color:var(--muted)}
/* run-verdict card + KPI ribbon */
.verdictcard{border:1px solid var(--line);background:var(--panel2);border-radius:12px;padding:12px 13px;margin:0 0 14px}
.verdictcard .vtop{display:flex;align-items:center;gap:9px;margin-bottom:11px}
.verdictcard .vtop small{margin-left:auto;color:var(--faint);font-size:11px;text-transform:uppercase;letter-spacing:.5px}
.kpis{display:grid;grid-template-columns:1fr 1fr;gap:9px}
.kpi{background:var(--panel);border:1px solid var(--line);border-radius:9px;padding:8px 10px;display:flex;flex-direction:column;gap:3px}
.kpi .kl{font-size:10px;text-transform:uppercase;letter-spacing:.4px;color:var(--faint)}
.kpi .kv{font-size:15px;font-weight:700;color:var(--fg)}
.kpi .kv.good{color:var(--good)}.kpi .kv.warn{color:var(--warn)}.kpi .kv.bad{color:var(--bad)}.kpi .kv.muted{color:var(--muted)}
.kbar{height:5px;background:var(--line);border-radius:6px;overflow:hidden;margin-top:2px}
.kbar>i{display:block;height:100%;background:var(--good);border-radius:6px}
.kbar>i.warn{background:var(--warn)}.kbar>i.bad{background:var(--bad)}
/* source cards */
.srccard{border:1px solid var(--line);background:var(--panel);border-radius:12px;
  padding:12px 13px;margin:0 0 11px;scroll-margin-top:64px;transition:border-color .15s,box-shadow .15s}
.srccard:hover{border-color:var(--line2)}
.srccard.active{border-color:var(--accent);box-shadow:inset 0 0 0 1px var(--accent),var(--shadow)}
.srccard .sh{display:flex;align-items:center;gap:8px;margin-bottom:9px}
.srccard .hchip{flex:0 0 auto;font-size:10px;font-weight:700;color:var(--accent);
  background:var(--panel2);border:1px solid var(--line2);border-radius:8px;padding:1px 7px}
.srccard .src{min-width:0;flex:1;font-weight:600;font-size:13px;color:var(--fg);
  white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.srccard .cited{flex:0 0 auto;font-size:10px;color:var(--good);border:1px solid var(--good);border-radius:20px;padding:1px 7px}
.srccard .snippet{max-height:150px;margin:8px 0 6px}
/* facets + gaps footers */
.railfacets,.railgaps{border-top:1px solid var(--line);margin-top:14px;padding-top:14px}
.railfacets .lbl,.railgaps .lbl{font-size:11px;letter-spacing:.5px;text-transform:uppercase;color:var(--faint);margin-bottom:9px}
.railgaps .gap{font-size:12.5px;color:var(--muted);line-height:1.5;padding:6px 10px;margin-bottom:6px;
  background:var(--panel2);border-left:2px solid var(--warn);border-radius:0 7px 7px 0}
/* answer toolbar (Export beside Copy) + numbered sections */
.answer .ahead .atools{display:flex;gap:7px}
.answer .ahead .exp{background:var(--panel2);border:1px solid var(--line);color:var(--muted);
  padding:4px 10px;border-radius:7px;font-size:11px;text-transform:none;letter-spacing:0}
.answer .ahead .exp:hover{color:var(--fg);border-color:var(--line2)}
.shead .snum{display:inline-flex;align-items:center;justify-content:center;min-width:19px;height:19px;
  border-radius:6px;background:var(--panel2);border:1px solid var(--line2);color:var(--muted);font-size:11px;font-weight:700}
.smeta{color:var(--faint);font-size:11.5px;margin:0 0 12px;padding-top:2px}
/* chat empty state */
.chatwelcome{max-width:520px;margin:12vh auto 0;text-align:center;color:var(--muted)}
.chatwelcome .cwlogo{width:52px;height:52px;border-radius:15px;background:var(--grad);margin:0 auto 18px;
  display:flex;align-items:center;justify-content:center;font-size:22px;color:var(--on-accent);box-shadow:var(--shadow)}
.chatwelcome h3{color:var(--fg);font-size:19px;margin:0 0 8px}
.chatwelcome p{font-size:13.5px;line-height:1.6;margin:0}
#cite h4{margin:2px 0 12px;font-size:14px;padding-right:22px;line-height:1.4}
.badge{display:inline-block;font-size:10.5px;padding:2.5px 8px;border-radius:6px;margin:0 5px 6px 0;background:var(--panel2);color:var(--muted);border:1px solid var(--line)}
.badge.current{background:var(--good);color:var(--on-accent)}.badge.stale{background:var(--warn);color:var(--on-accent)}.badge.approved{background:var(--accent);color:var(--on-accent)}
.snippet{font-size:13px;background:var(--snip);border:1px solid var(--line);border-radius:10px;padding:12px;margin:9px 0;white-space:pre-wrap;max-height:320px;overflow:auto;color:var(--fg);line-height:1.55}
.deeplink{color:var(--accent2);font-size:12px;word-break:break-all}
/* tables lifted verbatim out of a document, rendered as real tables */
.claimwrap{margin:0 0 14px}
.tablewrap{overflow-x:auto;border:1px solid var(--line);border-radius:10px;margin:8px 0 6px;background:var(--panel)}
.mdtable{width:100%;min-width:min(100%,420px);border-collapse:collapse;margin:0;font-size:13px}
.mdtable th,.mdtable td{border-bottom:1px solid var(--line);border-right:1px solid var(--line);
  padding:7px 11px;text-align:left;vertical-align:top;white-space:normal}
.mdtable th{background:var(--panel2);color:var(--fg);font-weight:600;position:static;font-size:12.5px}
.mdtable tr:last-child td{border-bottom:0}
.mdtable th:last-child,.mdtable td:last-child{border-right:0}
.mdtable tbody tr:nth-child(even){background:color-mix(in srgb,var(--panel2) 45%,transparent)}
.citeline{display:block;margin-top:2px}
/* expiring source download link */
.srcactions{display:flex;align-items:center;gap:9px;flex-wrap:wrap;margin-top:9px}
.linknote{font-size:11px;color:var(--faint)}
.hidden{display:none}

/* ===== excel mapping wizard ===== */
.muted{color:var(--muted)}
.chk{display:inline-flex;align-items:center;gap:8px;cursor:pointer;font-size:14px}
.chk input{width:15px;height:15px;accent-color:var(--accent);cursor:pointer}
.chk.file b{font-size:14.5px}
.mapfile{padding:16px 18px}
.mapsheet{border:1px solid var(--line);border-radius:12px;padding:12px 14px;margin:12px 0 0;background:var(--panel2)}
.mapsheet .msh{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap;margin-bottom:10px}
.mapsheet .msh .muted{font-size:12px}
.hrow{width:56px;padding:3px 6px;margin-left:5px;background:var(--panel);border:1px solid var(--line2);
  border-radius:7px;color:var(--fg);font:inherit}
.mapscroll{overflow-x:auto;border:1px solid var(--line);border-radius:10px}
.maptbl{width:auto;min-width:100%;margin:0;font-size:12.5px;table-layout:auto}
.maptbl th,.maptbl td{border-bottom:1px solid var(--line);border-right:1px solid var(--line);
  padding:6px 9px;white-space:nowrap;max-width:220px;overflow:hidden;text-overflow:ellipsis}
.maptbl tr.roles th{position:static;background:var(--panel);padding:6px;text-align:center}
.maptbl tr.hdrs td{background:var(--panel);color:var(--fg);font-weight:600}
.maptbl td.ch .cl{display:inline-block;font-size:10px;color:var(--faint);margin-right:6px;font-weight:700}
.maptbl tbody td{color:var(--muted)}
.maptbl select.role{padding:5px 7px;border-radius:8px;font-size:12px;min-width:104px;
  background:var(--panel2);border:1px solid var(--line2)}
.maptbl select.role[data-col]:focus{border-color:var(--accent)}
