/* ── Tenax ────────────────────────────────────────────────── */
*,*::before,*::after{box-sizing:border-box;margin:0;padding:0}
:root{
  --bg-0:#080b10;--bg-1:#0d1117;--bg-2:#151b25;--bg-3:#1c2333;
  --bg-h:#1e2940;--bg-a:#243050;
  --bd:#1e2838;--bd-s:#161d28;
  --t1:#e0e4ea;--t2:#a0a8b8;--t3:#606878;
  --ac:#3b82f6;--ac-d:#1d4ed8;--ac-bg:rgba(59,130,246,.1);
  --gn:#22c55e;--yl:#eab308;--rd:#ef4444;
  --fn:'Inter',-apple-system,BlinkMacSystemFont,'Segoe UI',system-ui,sans-serif;
  --mo:'SF Mono','Fira Code','JetBrains Mono','Cascadia Code',monospace;
  --bar:52px;--r:6px;--rs:4px;
}
html,body{height:100%;overflow:hidden}
body{background:var(--bg-0);color:var(--t1);font:13.5px/1.55 var(--fn);-webkit-font-smoothing:antialiased}
.hidden{display:none!important}
.scrollable{overflow-y:auto;flex:1;min-height:0}
.scrollable::-webkit-scrollbar{width:6px}
.scrollable::-webkit-scrollbar-track{background:0 0}
.scrollable::-webkit-scrollbar-thumb{background:var(--bg-3);border-radius:3px}

/* ── Login ────────────────────────────────────────────────── */
#login-view{
  display:flex;align-items:center;justify-content:center;
  height:100vh;background:var(--bg-0);
}
.login-card{
  width:340px;padding:40px 32px;
  background:var(--bg-1);border:1px solid var(--bd);border-radius:var(--r);
  text-align:center;
}
.login-logo{font-size:24px;font-weight:700;letter-spacing:5px;color:var(--t1);margin-bottom:4px}
.login-sub{font-size:12px;color:var(--t3);margin-bottom:28px}
#login-form{display:flex;flex-direction:column;gap:10px}
#login-form input{
  height:40px;background:var(--bg-2);border:1px solid var(--bd);color:var(--t1);
  font:13px var(--fn);padding:0 14px;border-radius:var(--rs);outline:0;
  transition:border-color .15s;
}
#login-form input:focus{border-color:var(--ac)}
.login-err{font-size:12px;color:var(--rd);margin-top:4px}

/* ── Buttons ──────────────────────────────────────────────── */
.btn{
  display:inline-flex;align-items:center;justify-content:center;gap:6px;
  height:32px;padding:0 14px;border:0;border-radius:var(--rs);
  font:500 12.5px var(--fn);cursor:pointer;transition:all .15s;white-space:nowrap;
}
.btn-primary{background:var(--ac);color:#fff}
.btn-primary:hover{background:var(--ac-d)}
.btn-primary:disabled{opacity:.4;cursor:not-allowed}
.btn-full{width:100%;height:40px;margin-top:6px;font-size:13.5px}
.btn-ghost{background:0 0;color:var(--t2);padding:0 8px}
.btn-ghost:hover{background:var(--bg-h);color:var(--t1)}
.btn-send{
  background:var(--ac);color:#fff;width:36px;height:36px;padding:0;
  border-radius:var(--r);flex-shrink:0;
}
.btn-send:hover{background:var(--ac-d)}
.btn-send:disabled{opacity:.3;cursor:not-allowed}

/* ── Toolbar ──────────────────────────────────────────────── */
#toolbar{
  height:var(--bar);background:var(--bg-1);border-bottom:1px solid var(--bd);
  display:flex;align-items:center;padding:0 16px;gap:16px;z-index:10;
}
.toolbar-left{display:flex;align-items:center;gap:10px}
.toolbar-right{margin-left:auto;display:flex;align-items:center;gap:8px}
.logo{font-size:14px;font-weight:600;letter-spacing:3px;color:var(--t1)}

/* ── Status ───────────────────────────────────────────────── */
.status-ind{display:flex;align-items:center;gap:6px;font-size:12px;color:var(--t3)}
.status-dot{width:7px;height:7px;border-radius:50%;background:var(--t3);flex-shrink:0}
.status-ind.ok .status-dot{background:var(--gn)}
.status-ind.warn .status-dot{background:var(--yl)}
.status-ind.err .status-dot{background:var(--rd)}
.status-ind.ok .status-text{color:var(--t2)}

/* ── Workspace ────────────────────────────────────────────── */
#workspace{display:flex;height:calc(100vh - var(--bar));overflow:hidden}
#chat-panel{flex:1;min-width:0;display:flex;flex-direction:column;background:var(--bg-0)}
#divider{width:1px;cursor:col-resize;background:var(--bd);flex-shrink:0;transition:background .15s}
#divider:hover,#divider.drag{background:var(--ac);width:2px}
#explorer{width:380px;min-width:280px;display:flex;flex-direction:column;background:var(--bg-1);border-left:1px solid var(--bd)}

/* ── Welcome ──────────────────────────────────────────────── */
.welcome{
  display:flex;flex-direction:column;align-items:center;justify-content:center;
  padding:60px 24px 40px;text-align:center;flex:1;min-height:400px;
}
.welcome-mark{font-size:32px;font-weight:700;letter-spacing:6px;color:var(--t1);margin-bottom:4px}
.welcome-sub{font-size:13px;color:var(--t3);margin-bottom:20px}
.welcome-desc{max-width:520px;color:var(--t2);font-size:14px;line-height:1.65;margin-bottom:28px}
.welcome-action{
  display:flex;gap:8px;align-items:center;margin-bottom:14px;
}
.welcome-action input{
  height:40px;width:220px;background:var(--bg-2);border:1px solid var(--bd);
  color:var(--t1);font:13.5px var(--fn);padding:0 14px;border-radius:var(--rs);outline:0;
  transition:border-color .15s;
}
.welcome-action input:focus{border-color:var(--ac)}
.welcome-action .btn{height:40px;padding:0 20px;font-size:13.5px}
.welcome-hint{font-size:12.5px;color:var(--t3)}

/* ── Chat messages ────────────────────────────────────────── */
#chat-messages{padding:0;display:flex;flex-direction:column}
#chat-messages.has-msgs{padding:16px 20px;gap:16px}
.msg{max-width:80%;padding:10px 14px;border-radius:var(--r);font-size:13.5px;line-height:1.6;word-break:break-word}
.msg.user{align-self:flex-end;background:var(--ac-d);color:#e8edf5;border-bottom-right-radius:2px}
.msg.assistant{align-self:flex-start;background:var(--bg-2);color:var(--t1);border-bottom-left-radius:2px}
.msg.assistant .mc{overflow-x:auto}
.msg.assistant .mc h1,.msg.assistant .mc h2,.msg.assistant .mc h3{color:var(--t1);margin:12px 0 6px;font-size:14px}
.msg.assistant .mc h1{font-size:16px}
.msg.assistant .mc p{margin:6px 0}
.msg.assistant .mc ul,.msg.assistant .mc ol{padding-left:20px;margin:6px 0}
.msg.assistant .mc code{font:12.5px var(--mo);background:var(--bg-3);padding:1px 5px;border-radius:3px}
.msg.assistant .mc pre{background:var(--bg-0);border:1px solid var(--bd);border-radius:var(--rs);padding:10px 12px;margin:8px 0;overflow-x:auto}
.msg.assistant .mc pre code{background:0 0;padding:0}
.msg.assistant .mc a{color:var(--ac);text-decoration:none}
.msg.assistant .mc a:hover{text-decoration:underline}
.msg.assistant .mc table{border-collapse:collapse;margin:8px 0;width:100%}
.msg.assistant .mc th,.msg.assistant .mc td{border:1px solid var(--bd);padding:5px 10px;text-align:left;font-size:12.5px}
.msg.assistant .mc th{background:var(--bg-3);font-weight:600}
.msg.assistant .mc blockquote{border-left:3px solid var(--ac);padding-left:12px;color:var(--t2);margin:8px 0}
.msg-meta{font-size:11px;color:var(--t3);margin-top:6px}
.msg.thinking{align-self:flex-start;background:0 0;color:var(--t3);padding:10px 14px;font-style:italic}
.msg.thinking .dots::after{content:'';animation:dots 1.5s infinite}
@keyframes dots{0%,20%{content:'.'}40%{content:'..'}60%,100%{content:'...'}}
.msg.error{align-self:flex-start;background:rgba(239,68,68,.1);color:var(--rd);border:1px solid rgba(239,68,68,.2)}

/* ── Scan progress card ───────────────────────────────────── */
.scan-card{
  align-self:flex-start;max-width:520px;width:100%;
  background:var(--bg-2);border:1px solid var(--bd);border-radius:var(--r);
  padding:16px 18px;
}
.scan-card .sc-head{display:flex;align-items:center;gap:8px;margin-bottom:10px}
.scan-card .sc-type{
  font-size:11px;font-weight:600;padding:2px 8px;border-radius:10px;
  background:var(--ac-bg);color:var(--ac);text-transform:uppercase;
}
.scan-card .sc-name{font-size:14px;font-weight:600;color:var(--t1);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}

/* Company info preview */
.sc-company{
  padding:10px 12px;margin-bottom:12px;
  background:var(--bg-3);border-radius:var(--rs);border-left:3px solid var(--ac);
}
.sc-company-name{font-size:14px;font-weight:600;color:var(--t1);margin-bottom:2px}
.sc-company-desc{font-size:12.5px;color:var(--t2);line-height:1.5;
  display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;
}

/* Progress bar */
.sc-progress{display:flex;align-items:center;gap:10px;margin-bottom:14px}
.sc-bar{flex:1;height:6px;background:var(--bg-0);border-radius:3px;overflow:hidden}
.sc-bar-fill{height:100%;background:linear-gradient(90deg,var(--ac),var(--gn));border-radius:3px;transition:width .6s ease}
.sc-pct{font-size:12px;font-weight:600;color:var(--t2);font-family:var(--mo);min-width:32px;text-align:right}

/* Phase groups */
.sc-phases{display:flex;flex-direction:column;gap:2px;margin-bottom:12px}
.sc-phase-group{border-radius:var(--rs);overflow:hidden}

.sc-phase-head{
  display:flex;align-items:center;gap:8px;padding:8px 10px;
  cursor:pointer;transition:background .15s;font-size:13px;
  border-radius:var(--rs);
}
.sc-phase-head:hover{background:var(--bg-h)}
.sc-phase-head .ph-arrow{width:14px;font-size:11px;color:var(--t3);flex-shrink:0;text-align:center}
.sc-phase-head .ph-name{font-weight:500;color:var(--t2)}
.sc-phase-head .ph-count{font-size:11px;color:var(--t3);font-family:var(--mo)}
.sc-phase-head .ph-status{margin-left:auto;font-size:11px;font-family:var(--mo);color:var(--t3)}

.sc-phase-head.active .ph-name{color:var(--t1)}
.sc-phase-head.active .ph-status{color:var(--ac)}
.sc-phase-head.done .ph-name{color:var(--t2)}
.sc-phase-head.done .ph-status{color:var(--gn)}

/* Cluster list */
.sc-cluster-list{padding:2px 0 4px 22px}
.sc-cluster-list.collapsed{display:none}

.sc-cluster{
  display:flex;align-items:center;gap:8px;padding:4px 8px;
  font-size:12.5px;border-radius:3px;
}
.sc-cluster .cl-icon{width:14px;text-align:center;font-size:12px;flex-shrink:0}
.sc-cluster .cl-name{color:var(--t3)}

.sc-cluster.active .cl-icon{color:var(--ac);animation:pulse 1.5s infinite}
.sc-cluster.active .cl-name{color:var(--t1);font-weight:500}
.sc-cluster.active{background:var(--ac-bg)}

.sc-cluster.done .cl-icon{color:var(--gn)}
.sc-cluster.done .cl-name{color:var(--t2)}

.sc-cluster.pending .cl-icon{color:var(--t3)}

@keyframes pulse{0%,100%{opacity:1}50%{opacity:.35}}

/* Activity log */
.sc-activity{
  border-top:1px solid var(--bd);padding-top:10px;margin-top:4px;
}
.sc-act-title{font-size:10px;font-weight:600;text-transform:uppercase;letter-spacing:.5px;color:var(--t3);margin-bottom:6px}
.sc-act-lines{display:flex;flex-direction:column;gap:3px;max-height:120px;overflow:hidden}
.sc-act-line{display:flex;gap:8px;font-size:11.5px;line-height:1.4;animation:actIn .3s ease}
.sc-act-line .act-time{color:var(--t3);font-family:var(--mo);flex-shrink:0;font-size:11px}
.sc-act-line .act-text{color:var(--t2)}
@keyframes actIn{from{opacity:0;transform:translateY(-4px)}to{opacity:1;transform:translateY(0)}}

/* ── Scan complete card ───────────────────────────────────── */
.scan-done{
  align-self:flex-start;max-width:520px;width:100%;
  background:var(--bg-2);border:1px solid rgba(34,197,94,.2);border-radius:var(--r);
  padding:16px 18px;
}
.scan-done .sd-head{display:flex;align-items:center;gap:8px;margin-bottom:10px;font-size:14px;font-weight:600;color:var(--gn)}
.scan-done .sd-summary{font-size:13px;line-height:1.6;color:var(--t2);margin-bottom:12px}
.scan-done .sd-summary p{margin:4px 0}
.report-link{
  display:inline-flex;align-items:center;gap:6px;
  padding:8px 16px;background:var(--ac);color:#fff;
  border-radius:var(--rs);font-size:13px;font-weight:500;
  text-decoration:none;transition:background .15s;
}
.report-link:hover{background:var(--ac-d)}
.scan-done .sd-meta{margin-top:10px;font-size:11px;color:var(--t3)}

/* ── Chat input ───────────────────────────────────────────── */
#chat-form{padding:12px 20px;border-top:1px solid var(--bd);background:var(--bg-1)}
#chat-input-wrap{
  display:flex;align-items:flex-end;gap:8px;
  background:var(--bg-2);border:1px solid var(--bd);border-radius:var(--r);
  padding:6px 8px 6px 14px;transition:border-color .15s;max-width:720px;margin:0 auto;
}
#chat-input-wrap:focus-within{border-color:var(--ac)}
#chat-input{
  flex:1;background:0 0;border:0;color:var(--t1);font:13.5px var(--fn);
  line-height:1.5;resize:none;outline:0;max-height:150px;padding:4px 0;
}
#chat-input::placeholder{color:var(--t3)}

/* ── Scan timer bar (replaces chat input during scan) ────── */
#scan-timer-bar{
  padding:14px 20px;border-top:1px solid var(--bd);background:var(--bg-1);
}
.timer-row{
  display:flex;align-items:center;justify-content:center;gap:32px;
  max-width:720px;margin:0 auto;
}
.timer-cell{display:flex;flex-direction:column;align-items:center;gap:2px}
.timer-label{font-size:10px;font-weight:600;text-transform:uppercase;letter-spacing:.5px;color:var(--t3)}
.timer-value{font-size:15px;font-weight:600;font-family:var(--mo);color:var(--t1)}
.timer-cell:last-child .timer-value{color:var(--ac)}
.timer-scan-label{
  text-align:center;margin-top:8px;font-size:11px;color:var(--t3);
}

/* ── Panel headers ────────────────────────────────────────── */
.pan-head{
  height:40px;min-height:40px;display:flex;align-items:center;
  justify-content:space-between;padding:0 14px;border-bottom:1px solid var(--bd);background:var(--bg-1);
}
.pan-head h2{font-size:12.5px;font-weight:600;text-transform:uppercase;letter-spacing:.5px;color:var(--t2)}
.pan-head h3{font-size:12.5px;font-weight:500;color:var(--t2);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.pan-actions{display:flex;gap:2px}
.preview-head{border-top:1px solid var(--bd);border-bottom:1px solid var(--bd-s)}

/* ── Breadcrumb ───────────────────────────────────────────── */
#breadcrumb{
  display:flex;align-items:center;gap:2px;padding:6px 14px;font-size:12px;color:var(--t3);
  border-bottom:1px solid var(--bd-s);background:var(--bg-1);min-height:30px;flex-wrap:wrap;
}
.crumb{cursor:pointer;color:var(--t2);padding:1px 4px;border-radius:3px;transition:all .1s}
.crumb:hover{color:var(--ac);background:var(--ac-bg)}
.crumb-sep{color:var(--t3);margin:0 1px;user-select:none}

/* ── File tree ────────────────────────────────────────────── */
#file-tree{flex:1;padding:4px 0}
.fentry{
  display:flex;align-items:center;gap:8px;padding:5px 14px;cursor:pointer;
  font-size:13px;color:var(--t2);transition:all .1s;border-left:2px solid transparent;
}
.fentry:hover{background:var(--bg-h);color:var(--t1)}
.fentry.active{background:var(--bg-a);color:var(--t1);border-left-color:var(--ac)}
.ficon{width:16px;text-align:center;flex-shrink:0;font-size:13px}
.ficon.dir{color:var(--ac)}
.ficon.file{color:var(--t3)}
.fname{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.fsize{font-size:11px;color:var(--t3);font-family:var(--mo)}

/* ── File preview ─────────────────────────────────────────── */
#preview-wrap{display:flex;flex-direction:column;max-height:50%;border-top:1px solid var(--bd)}
#file-preview{padding:12px 16px;font-size:13px;line-height:1.6;background:var(--bg-0)}
#file-preview h1,#file-preview h2,#file-preview h3{color:var(--t1);margin:14px 0 6px}
#file-preview h1{font-size:18px;border-bottom:1px solid var(--bd);padding-bottom:4px}
#file-preview h2{font-size:15px}
#file-preview p{margin:6px 0;color:var(--t2)}
#file-preview ul,#file-preview ol{padding-left:20px;margin:6px 0;color:var(--t2)}
#file-preview code{font:12px var(--mo);background:var(--bg-2);padding:1px 5px;border-radius:3px}
#file-preview pre{background:var(--bg-1);border:1px solid var(--bd);border-radius:var(--rs);padding:10px 12px;margin:8px 0;overflow-x:auto}
#file-preview pre code{background:0 0;padding:0}
#file-preview a{color:var(--ac)}
#file-preview table{border-collapse:collapse;margin:8px 0;width:100%}
#file-preview th,#file-preview td{border:1px solid var(--bd);padding:4px 8px;font-size:12px}
#file-preview th{background:var(--bg-2)}
#file-preview blockquote{border-left:3px solid var(--ac);padding-left:12px;color:var(--t3);margin:8px 0}
#file-preview iframe{width:100%;height:100%;min-height:400px;border:0;background:#fff;border-radius:var(--rs)}
.code-view{font:12px/1.6 var(--mo);white-space:pre-wrap;color:var(--t2)}

/* ── Modal ────────────────────────────────────────────────── */
.modal{position:fixed;inset:0;z-index:100;display:flex;align-items:center;justify-content:center}
.modal-bg{position:absolute;inset:0;background:rgba(0,0,0,.6)}
.modal-box{
  position:relative;background:var(--bg-1);border:1px solid var(--bd);border-radius:var(--r);
  width:90%;max-width:700px;max-height:80vh;display:flex;flex-direction:column;
}
.modal-top{display:flex;align-items:center;justify-content:space-between;padding:12px 16px;border-bottom:1px solid var(--bd)}
.modal-top h3{font-size:14px;font-weight:600}
.modal-body{padding:16px;overflow-y:auto;flex:1}
.stbl{width:100%;border-collapse:collapse}
.stbl th,.stbl td{text-align:left;padding:8px 12px;font-size:12.5px;border-bottom:1px solid var(--bd-s)}
.stbl th{color:var(--t3);font-weight:500;text-transform:uppercase;letter-spacing:.3px;font-size:11px}
.stbl tr:hover td{background:var(--bg-h)}
.badge{display:inline-block;font-size:11px;padding:1px 7px;border-radius:10px;font-weight:500}
.badge.completed{background:rgba(34,197,94,.12);color:var(--gn)}
.badge.running{background:rgba(59,130,246,.12);color:var(--ac)}
.badge.failed,.badge.error{background:rgba(239,68,68,.12);color:var(--rd)}
.badge.started{background:rgba(234,179,8,.12);color:var(--yl)}
.hist-row[style*="cursor"]:hover td{background:var(--bg-3)}
.hist-action{color:var(--ac);font-size:11px;font-weight:500;white-space:nowrap}

/* ── Toast ────────────────────────────────────────────────── */
#toasts{position:fixed;bottom:16px;right:16px;z-index:200;display:flex;flex-direction:column;gap:8px}
.toast{padding:10px 16px;border-radius:var(--rs);font-size:12.5px;animation:tin .2s ease-out;max-width:360px}
.toast.info{background:var(--bg-3);color:var(--t1);border:1px solid var(--bd)}
.toast.success{background:rgba(34,197,94,.12);color:var(--gn);border:1px solid rgba(34,197,94,.2)}
.toast.error{background:rgba(239,68,68,.1);color:var(--rd);border:1px solid rgba(239,68,68,.2)}
@keyframes tin{from{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}

/* ── Empty state ──────────────────────────────────────────── */
.empty{text-align:center;padding:32px 16px;color:var(--t3);font-size:13px}

/* ── Responsive ───────────────────────────────────────────── */
@media(max-width:640px){
  #workspace{flex-direction:column}
  #divider{display:none!important}
  #explorer{width:100%!important;height:50%!important;border-left:0;border-top:1px solid var(--bd)}
  .welcome-action{flex-direction:column}
  .welcome-action input{width:100%}
  .timer-row{gap:16px}
}
