  /* ── Knowledge Base tab ──────────────────────────────────────────────── */
  .kb-layout { display:grid; grid-template-columns:280px 1fr; gap:0; height:calc(100vh - 120px); overflow:hidden; }
  .kb-sidebar { background:var(--surface); border-right:1px solid var(--border); display:flex; flex-direction:column; overflow:hidden; }
  .kb-sidebar-header { padding:16px; border-bottom:1px solid var(--border); display:flex; justify-content:space-between; align-items:center; flex-shrink:0; }
  .kb-sidebar-title { font-size:12px; font-weight:700; text-transform:uppercase; letter-spacing:0.08em; color:var(--muted); }
  .kb-list { flex:1; overflow-y:auto; padding:8px; }
  .kb-item { padding:12px 14px; border-radius:8px; cursor:pointer; margin-bottom:4px; border:1px solid transparent; transition:all 0.15s; }
  .kb-item:hover { background:var(--border-subtle); border-color:var(--border); }
  .kb-item.active { background:var(--info-bg-tint); border-color:var(--info-border); }
  .kb-item-name { font-size:13px; font-weight:600; margin-bottom:4px; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
  .kb-item-meta { font-size:11px; color:var(--muted); display:flex; gap:8px; }
  .kb-item-meta span { display:flex; align-items:center; gap:3px; }
  .kb-main { display:flex; flex-direction:column; overflow:hidden; }
  .kb-main-header { padding:16px 20px; border-bottom:1px solid var(--border); display:flex; justify-content:space-between; align-items:center; flex-shrink:0; gap:12px; }
  .kb-main-title { font-size:15px; font-weight:700; }
  .kb-main-desc { font-size:12px; color:var(--muted); margin-top:2px; }
  .kb-main-actions { display:flex; gap:8px; align-items:center; flex-shrink:0; }
  .kb-entries { flex:1; overflow-y:auto; padding:16px 20px; }
  .kb-empty { display:flex; flex-direction:column; align-items:center; justify-content:center; height:300px; color:var(--muted); gap:12px; }
  .kb-empty-icon { font-size:48px; opacity:0.3; }
  .kb-empty-text { font-size:13px; text-align:center; }

  /* Scraper bar */
  .kb-scraper { background:var(--bg); border-top:1px solid var(--border); padding:14px 20px; display:flex; gap:10px; align-items:center; flex-shrink:0; }
  .kb-scraper-label { font-size:11px; font-weight:600; color:var(--muted); text-transform:uppercase; letter-spacing:0.06em; white-space:nowrap; }
  .kb-scraper-input { flex:1; padding:8px 12px; background:var(--surface); border:1px solid var(--border); border-radius:6px; color:inherit; font-size:13px; font-family:inherit; outline:none; }
  .kb-scraper-input:focus { border-color:var(--accent-bg); }
  .kb-scraper-btn { padding:8px 16px; background:var(--accent-bg); color:var(--text-inverted); border:none; border-radius:6px; font-size:12px; font-weight:600; cursor:pointer; white-space:nowrap; display:flex; align-items:center; gap:6px; }
  .kb-scraper-btn:hover { background:var(--accent-bg-hover); }
  .kb-scraper-btn:disabled { opacity:0.5; cursor:not-allowed; }

  /* Entry cards */
  .kb-entry-card { background:var(--surface); border:1px solid var(--border); border-radius:10px; padding:14px 16px; margin-bottom:10px; position:relative; }
  .kb-entry-header { display:flex; align-items:flex-start; gap:10px; margin-bottom:8px; }
  .kb-entry-badge { padding:2px 8px; border-radius:4px; font-size:10px; font-weight:700; text-transform:uppercase; letter-spacing:0.06em; flex-shrink:0; margin-top:2px; }
  .badge-text { background:var(--success-bg-tint); color:var(--success); }
  .badge-qa   { background:var(--warning-bg-tint); color:var(--warning); }
  .badge-url  { background:var(--info-bg-tint);    color:var(--accent); }
  .kb-entry-title { font-size:13px; font-weight:600; flex:1; }
  .kb-entry-del { background:none; border:none; color:var(--muted); cursor:pointer; padding:2px 6px; border-radius:4px; font-size:14px; line-height:1; }
  .kb-entry-del:hover { background:var(--danger-bg-tint); color:var(--danger); }
  .kb-entry-content { font-size:12px; color:var(--muted); line-height:1.6; max-height:80px; overflow:hidden; text-overflow:ellipsis; display:-webkit-box; -webkit-line-clamp:4; -webkit-box-orient:vertical; }
  .kb-entry-qa-q { font-size:12px; font-weight:600; color:var(--warning); margin-bottom:4px; }
  .kb-entry-qa-a { font-size:12px; color:var(--muted); line-height:1.5; }
  .kb-entry-url-src { font-size:10px; color:var(--accent); margin-top:6px; text-overflow:ellipsis; overflow:hidden; white-space:nowrap; }
  .kb-entry-date { font-size:10px; color:var(--muted); margin-top:8px; }

  /* Modals */
  .kb-modal-overlay { display:none; position:fixed; inset:0; background:var(--bg-overlay); z-index:1000; align-items:center; justify-content:center; }
  .kb-modal-overlay.active { display:flex; }
  .kb-modal { background:var(--surface); border:1px solid var(--border); border-radius:14px; padding:28px; width:560px; max-width:95vw; max-height:90vh; overflow-y:auto; }
  .kb-modal-title { font-size:16px; font-weight:700; margin-bottom:20px; }
  .kb-modal-type-grid { display:grid; grid-template-columns:repeat(3,1fr); gap:10px; margin-bottom:20px; }
  .kb-type-btn { padding:12px 8px; border:1px solid var(--border); border-radius:8px; background:none; color:inherit; cursor:pointer; font-size:12px; font-weight:600; text-align:center; transition:all 0.15s; }
  .kb-type-btn:hover { border-color:var(--accent-bg); }
  .kb-type-btn.selected { border-color:var(--accent-bg); background:var(--info-bg-tint); color:var(--accent); }
  .kb-type-icon { font-size:22px; display:block; margin-bottom:6px; }
  .kb-field { margin-bottom:14px; }
  .kb-field label { display:block; font-size:11px; font-weight:600; text-transform:uppercase; letter-spacing:0.06em; color:var(--muted); margin-bottom:6px; }
  .kb-field input, .kb-field textarea, .kb-field select { width:100%; padding:9px 12px; background:var(--bg); border:1px solid var(--border); border-radius:6px; color:inherit; font-size:13px; font-family:inherit; outline:none; box-sizing:border-box; resize:vertical; }
  .kb-field input:focus, .kb-field textarea:focus, .kb-field select:focus { border-color:var(--accent-bg); }
  .kb-field textarea { min-height:100px; }
  .kb-modal-actions { display:flex; gap:10px; justify-content:flex-end; margin-top:20px; }
  .kb-btn-cancel { padding:9px 20px; border:1px solid var(--border); border-radius:6px; background:none; color:inherit; cursor:pointer; font-size:13px; }
  .kb-btn-save { padding:9px 20px; background:var(--accent-bg); color:var(--text-inverted); border:none; border-radius:6px; cursor:pointer; font-size:13px; font-weight:600; }
  .kb-btn-save:hover { background:var(--accent-bg-hover); }
  .kb-btn-save:disabled { opacity:0.5; cursor:not-allowed; }

  /* Scrape preview */
  .kb-scrape-preview { background:var(--bg); border:1px solid var(--border); border-radius:8px; padding:12px; margin-top:12px; max-height:200px; overflow-y:auto; font-size:12px; color:var(--muted); line-height:1.6; white-space:pre-wrap; }
  .kb-scrape-status { padding:8px 12px; border-radius:6px; font-size:12px; margin-top:8px; }
  .kb-scrape-status.loading { background:var(--info-bg-tint);    color:var(--accent); }
  .kb-scrape-status.success { background:var(--success-bg-tint); color:var(--success); }
  .kb-scrape-status.error   { background:var(--danger-bg-tint);  color:var(--danger); }
  .spinner-inline { display:inline-block; width:12px; height:12px; border:2px solid currentColor; border-top-color:transparent; border-radius:50%; animation:spin 0.6s linear infinite; vertical-align:middle; margin-right:6px; }

  /* Create KB modal */
  .kb-create-form { display:flex; flex-direction:column; gap:14px; }

  /* No KB selected state */
  .kb-no-selection { display:flex; flex-direction:column; align-items:center; justify-content:center; height:100%; gap:16px; color:var(--muted); }
  .kb-no-selection-icon { font-size:56px; opacity:0.2; }
  .kb-no-selection-text { font-size:14px; }

