/* ============ assistant.css — Assistant chat + Knowledge Base ============
   Two modules, one stylesheet: asst-* (the chat surface) and kb-* (the
   verified-facts library). Existing design tokens only (app.css :root).
   A calm, institutional chat aesthetic — no toy bubbles, no bright blue. */

/* =====================================================================
 *  KNOWLEDGE BASE  (kb-*)
 * ===================================================================== */
.kb-loading{display:flex;align-items:center;gap:12px;color:var(--mute);font-size:13px;}
.kb-spin{width:15px;height:15px;border:2px solid var(--line);border-top-color:var(--gold);border-radius:50%;animation:kb-spin .7s linear infinite;flex:none;}
@keyframes kb-spin{to{transform:rotate(360deg);}}
.kb-err__act{margin-top:12px;}
.kb-empty{text-align:center;color:var(--mute);padding:42px 20px;font-size:13px;grid-column:1/-1;}

/* header band */
.kb-head{display:flex;gap:26px;align-items:flex-start;justify-content:space-between;
  background:linear-gradient(180deg,var(--paper),var(--gold-soft));
  border:1px solid var(--line);border-radius:var(--r);padding:20px 24px;box-shadow:var(--shadow);margin-bottom:18px;}
.kb-head__eyebrow{font-family:var(--mono);font-size:9.5px;letter-spacing:.16em;text-transform:uppercase;color:var(--gold);font-weight:700;}
.kb-head__lead{font-family:var(--serif);font-size:16px;line-height:1.5;color:var(--ink);margin-top:8px;max-width:56ch;}
.kb-head__stats{display:flex;gap:22px;flex:none;padding-top:4px;}
.kb-stat__v{font-family:var(--serif);font-size:26px;color:var(--ink);line-height:1;font-weight:600;}
.kb-stat__k{font-family:var(--mono);font-size:9px;letter-spacing:.08em;text-transform:uppercase;color:var(--mute);font-weight:700;margin-top:5px;}
@media(max-width:900px){.kb-head{flex-direction:column;gap:16px;}}

/* toolbar */
.kb-toolbar{display:flex;align-items:center;gap:12px;flex-wrap:wrap;margin-bottom:12px;}
.kb-chips{display:inline-flex;gap:6px;}
.kb-count{font-size:11px;color:var(--mute);letter-spacing:.03em;}
.kb-spacer{flex:1;}
.kb-ro{align-self:center;}
.kb-catbar{margin-bottom:18px;overflow-x:auto;padding-bottom:4px;}
.kb-catbar .kb-chips{flex-wrap:wrap;}

/* fact grid + card */
.kb-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:16px;}
@media(max-width:1000px){.kb-grid{grid-template-columns:1fr;}}
.kb-card{padding:16px 18px 14px;display:flex;flex-direction:column;gap:10px;position:relative;transition:.14s;}
.kb-card:hover{border-color:var(--rule);box-shadow:var(--shadow-lg);}
.kb-card__top{display:flex;align-items:center;justify-content:space-between;gap:10px;}
.kb-cat{font-family:var(--mono);font-size:9.5px;letter-spacing:.1em;text-transform:uppercase;color:var(--gold);font-weight:700;}
.kb-ver{display:inline-flex;align-items:center;gap:6px;font-family:var(--mono);font-size:10px;color:var(--grn);font-weight:600;}
.kb-ver__dot{width:6px;height:6px;border-radius:50%;background:var(--grn);flex:none;}
.kb-ver--none{color:var(--amber);}
.kb-ver--none .kb-ver__dot,.kb-ver--none::before{content:'';}
.kb-fact{font-size:14.5px;line-height:1.55;color:var(--ink);}
.kb-fact--empty{color:var(--faint);font-style:italic;}
.kb-fact-ar{font-size:14.5px;line-height:1.7;color:var(--body);border-top:1px dashed var(--line);padding-top:9px;}
.kb-fact-ar .ar{color:var(--ink);}
.kb-src{display:flex;gap:8px;align-items:baseline;font-size:11.5px;margin-top:auto;padding-top:4px;}
.kb-src__k{font-family:var(--mono);font-size:9px;letter-spacing:.08em;text-transform:uppercase;color:var(--mute);font-weight:700;flex:none;}
.kb-src__v{color:var(--body);}
.kb-src--none{color:var(--faint);font-style:italic;}
.kb-card__acts{display:flex;justify-content:flex-end;border-top:1px solid var(--line);margin:2px -18px -14px;padding:10px 18px 0;}

/* editor drawer */
.kb-drawer .drawer__hd{padding-bottom:16px;}
.kb-dr-eyebrow{font-family:var(--mono);font-size:9.5px;letter-spacing:.14em;text-transform:uppercase;color:var(--gold);font-weight:700;}
.kb-dr-title{font-family:var(--serif);font-size:18px;color:var(--ink);font-weight:600;margin:5px 0 8px;padding-right:34px;}
.kb-dr-warn{font-size:12px;line-height:1.5;color:var(--mute);background:var(--gold-soft);border-radius:var(--r-sm);padding:9px 12px;}
.kb-field{display:block;margin-bottom:14px;}
.kb-field__l{display:block;font-family:var(--mono);font-size:9.5px;letter-spacing:.08em;text-transform:uppercase;color:var(--mute);font-weight:700;margin-bottom:6px;}
.kb-in{width:100%;font-family:var(--sans);font-size:13.5px;padding:9px 12px;border:1px solid var(--rule);border-radius:var(--r-sm);background:var(--paper);color:var(--ink);outline:none;transition:.12s;resize:vertical;}
.kb-in:focus{border-color:var(--gold);box-shadow:0 0 0 3px var(--gold-soft);}
textarea.kb-in[dir="rtl"]{font-family:'Almarai',var(--sans);line-height:1.7;}
.kb-dr-err{font-size:12.5px;color:var(--red);background:var(--red-soft);border-radius:var(--r-sm);padding:9px 12px;margin-bottom:12px;}
.kb-dr-acts{display:flex;gap:10px;margin-top:6px;}

/* =====================================================================
 *  ASSISTANT CHAT  (asst-*)
 * ===================================================================== */
.asst{display:flex;flex-direction:column;height:calc(100vh - 150px);min-height:440px;
  border:1px solid var(--line);border-radius:var(--r);background:var(--paper);box-shadow:var(--shadow);overflow:hidden;}

/* message list */
.asst-list{flex:1;overflow-y:auto;padding:26px 26px 12px;scroll-behavior:smooth;
  background:
    radial-gradient(120% 60% at 50% -10%, var(--gold-soft) 0%, transparent 60%),
    var(--paper);}
.asst-row{display:flex;margin-bottom:16px;}
.asst-row--user{justify-content:flex-end;}
.asst-row--bot{justify-content:flex-start;}

.asst-botwrap{display:flex;gap:11px;max-width:82%;align-items:flex-start;}
.asst-avatar{width:28px;height:28px;border-radius:8px;flex:none;display:grid;place-items:center;
  font-family:var(--mono);font-size:10px;font-weight:700;letter-spacing:.02em;
  background:var(--ink);color:var(--gold-2);margin-top:2px;}
.asst-avatar--err{background:var(--red-soft);color:var(--red);}

.asst-bubble{border-radius:12px;padding:11px 15px;font-size:14px;line-height:1.6;}
.asst-bubble p{margin:0;}
.asst-bubble p + p{margin-top:9px;}
.asst-bubble--user{background:var(--ink);color:#f2efe8;border-bottom-right-radius:4px;max-width:78%;}
.asst-bubble--user .ar{color:#f2efe8;}
.asst-bubble--bot{background:var(--panel);border:1px solid var(--line);color:var(--ink);border-bottom-left-radius:4px;
  font-family:var(--mono);font-size:13px;line-height:1.65;letter-spacing:-.005em;}
.asst-bubble--err{background:var(--red-soft);border:1px solid var(--red-soft);color:var(--red);}

.asst-grounded{display:inline-flex;align-items:center;gap:6px;margin-top:9px;
  font-family:var(--mono);font-size:9.5px;letter-spacing:.06em;text-transform:uppercase;font-weight:700;
  color:var(--grn);background:var(--grn-soft);border-radius:20px;padding:3px 9px;}
.asst-grounded__dot{width:6px;height:6px;border-radius:50%;background:var(--grn);flex:none;}

/* thinking dots */
.asst-dots{display:inline-flex;gap:5px;align-items:center;padding:14px 16px;}
.asst-dots span{width:6px;height:6px;border-radius:50%;background:var(--faint);animation:asst-blink 1.2s infinite ease-in-out;}
.asst-dots span:nth-child(2){animation-delay:.18s;}
.asst-dots span:nth-child(3){animation-delay:.36s;}
@keyframes asst-blink{0%,80%,100%{opacity:.25;transform:translateY(0);}40%{opacity:1;transform:translateY(-2px);}}

/* welcome empty state */
.asst-welcome{text-align:center;padding:56px 24px 40px;max-width:52ch;margin:auto;}
.asst-welcome__mark{width:52px;height:52px;border-radius:14px;margin:0 auto 16px;display:grid;place-items:center;
  font-family:var(--mono);font-size:16px;font-weight:700;background:var(--ink);color:var(--gold-2);box-shadow:var(--shadow);}
.asst-welcome__t{font-family:var(--serif);font-size:20px;color:var(--ink);font-weight:600;}
.asst-welcome__p{font-size:13.5px;line-height:1.6;color:var(--mute);margin-top:10px;}

/* suggested chips */
.asst-chips{padding:2px 26px 6px;border-top:1px solid transparent;}
.asst-chips--off{opacity:.5;pointer-events:none;}
.asst-chips__lbl{font-family:var(--mono);font-size:9px;letter-spacing:.14em;text-transform:uppercase;color:var(--mute);font-weight:700;margin-bottom:8px;}
.asst-chips__row{display:flex;flex-wrap:wrap;gap:8px;}
.asst-chip{font-size:12.5px;font-weight:500;padding:7px 13px;border-radius:20px;border:1px solid var(--rule);
  background:var(--paper);color:var(--body);text-align:left;transition:.12s;line-height:1.35;max-width:100%;}
.asst-chip:hover{border-color:var(--gold);color:var(--gold);background:var(--gold-soft);}

/* composer */
.asst-composer{padding:14px 26px 16px;border-top:1px solid var(--line);background:var(--paper);}
.asst-inwrap{display:flex;align-items:flex-end;gap:10px;
  border:1px solid var(--rule);border-radius:14px;background:var(--paper);padding:8px 8px 8px 14px;transition:.12s;}
.asst-inwrap:focus-within{border-color:var(--gold);box-shadow:0 0 0 3px var(--gold-soft);}
.asst-input{flex:1;border:0;outline:none;resize:none;background:transparent;color:var(--ink);
  font-family:var(--sans);font-size:14px;line-height:1.5;padding:5px 0;max-height:160px;}
.asst-input::placeholder{color:var(--faint);}
.asst-input:disabled{color:var(--mute);}
.asst-send{flex:none;width:36px;height:36px;border-radius:10px;border:0;background:var(--gold);color:#fff;
  display:grid;place-items:center;transition:.12s;}
.asst-send:hover:not(:disabled){background:#886b30;}
.asst-send:disabled{background:var(--panel-2);color:var(--faint);cursor:default;}
.asst-send svg{width:16px;height:16px;}
.asst-hint{font-family:var(--mono);font-size:10px;color:var(--faint);letter-spacing:.03em;margin-top:9px;text-align:center;}

@media(max-width:700px){
  .asst-botwrap{max-width:92%;}
  .asst-bubble--user{max-width:88%;}
  .asst-list{padding:20px 16px 10px;}
  .asst-chips,.asst-composer{padding-left:16px;padding-right:16px;}
}

/* markdown rendering in assistant answers */
.asst-bubble--bot .asst-ul{margin:6px 0;padding-left:20px;}
.asst-bubble--bot .asst-ul li{margin:3px 0;line-height:1.6;}
.asst-bubble--bot .asst-h{font-weight:700;color:var(--ink);margin:10px 0 4px;font-size:13.5px;}
.asst-bubble--bot code{font-family:var(--mono);font-size:12px;background:var(--panel-2);padding:1px 5px;border-radius:4px;}
.asst-bubble--bot b{color:var(--ink);}
.asst-bubble--bot p{margin:6px 0;}

/* delivered-file chips (fetch_document) */
.asst-docs{display:flex;flex-wrap:wrap;gap:8px;margin-top:10px;}
.asst-doc{display:inline-flex;align-items:center;gap:7px;max-width:100%;
  font-family:var(--sans);font-size:12.5px;font-weight:600;color:var(--ink);
  background:var(--panel-2);border:1px solid var(--line);border-radius:9px;
  padding:7px 11px;cursor:pointer;transition:.12s;text-align:left;}
.asst-doc:hover:not(:disabled){border-color:var(--gold);background:var(--panel);}
.asst-doc svg{width:15px;height:15px;color:var(--gold);flex:0 0 auto;}
.asst-doc span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
.asst-doc--load{opacity:.55;cursor:default;}
.asst-doc--load svg{animation:asst-pulse 1s ease-in-out infinite;}
@keyframes asst-pulse{0%,100%{opacity:.4;}50%{opacity:1;}}
