/* =========== MEMORY BANK =========== */
/* Single-page reader for one knowledge pack. Sticky header (title +
   pack picker + audit verdict + search), scrollable body with 5 blocks:
   registry, knowledge graph, rules, dictionary, audit report. */

/* top:92px = under both topbar (48px) and metabar (44px). The memory bank
   now lives under the merged Mémoire section, which keeps the metabar
   visible (for the Visuel|Brut view toggle), so we must leave room for it. */
.memory-bank{position:fixed;top:92px;left:52px;right:0;bottom:0;overflow:auto;z-index:2;background:var(--bg)}
.memory-bank.hidden{display:none}
/* When the Agent chat panel is open, shrink the memory bank to leave room
   for the 420px-wide llm-panel pinned on the right. */
body.llm-open .memory-bank{right:420px}

/* ---- Sticky header ---- */
.mb-head{position:sticky;top:0;background:linear-gradient(180deg,var(--bg-2) 0%,var(--bg) 100%);border-bottom:1px solid var(--border);padding:20px 28px 14px;z-index:5}
.mb-title-row{display:flex;align-items:flex-end;gap:20px;margin-bottom:12px}
.mb-title-row h1{margin:0;font-size:20px;font-weight:600;letter-spacing:-.2px}
.mb-title-row .mb-sub{color:var(--text-3);font-size:12px;line-height:1.4;flex:1;max-width:520px}
.mb-pack-picker{display:flex;align-items:center;gap:8px;margin-left:auto}
.mb-pack-picker label{font-size:11px;text-transform:uppercase;letter-spacing:.4px;color:var(--text-3);font-family:var(--mono)}
.mb-pack-picker select{background:var(--panel);border:1px solid var(--border);color:var(--text);font-family:var(--mono);font-size:12px;padding:6px 10px;border-radius:6px;outline:none;cursor:pointer;min-width:200px;transition:border-color .15s}
.mb-pack-picker select:hover{border-color:var(--border-hover);background:var(--panel-2)}
.mb-pack-picker select:focus{border-color:rgba(56,189,248,.45)}

.mb-verdict-row{display:flex;align-items:center;gap:10px;flex-wrap:wrap}
.mb-verdict{display:inline-flex;align-items:center;gap:8px;padding:5px 11px 5px 9px;border-radius:6px;font-family:var(--mono);font-size:11px;letter-spacing:.3px;border:1px solid var(--border);background:var(--panel);color:var(--text-2)}
.mb-verdict .dot{width:6px;height:6px;border-radius:50%;background:var(--text-3)}
.mb-verdict.approved{background:rgba(52,211,153,.08);border-color:rgba(52,211,153,.3);color:var(--emerald)}
.mb-verdict.approved .dot{background:var(--emerald);box-shadow:0 0 6px var(--emerald)}
.mb-verdict.needs-revision{background:rgba(245,158,11,.08);border-color:rgba(245,158,11,.3);color:var(--amber)}
.mb-verdict.needs-revision .dot{background:var(--amber);box-shadow:0 0 6px var(--amber)}
.mb-verdict.rejected{background:rgba(245,158,11,.14);border-color:rgba(245,158,11,.5);color:var(--amber)}
.mb-verdict.rejected .dot{background:var(--amber);box-shadow:0 0 8px var(--amber)}
.mb-verdict.none{color:var(--text-3)}

.mb-score{display:inline-flex;align-items:center;gap:6px;font-family:var(--mono);font-size:11px;color:var(--text-3)}
.mb-score b{color:var(--text);font-weight:500}

.mb-counts{display:inline-flex;align-items:center;gap:10px;margin-left:auto;font-family:var(--mono);font-size:11px;color:var(--text-3)}
.mb-counts .count{display:inline-flex;align-items:baseline;gap:5px}
.mb-counts .count b{color:var(--text);font-weight:500;font-size:12px}

.mb-search{margin-top:14px;display:flex;align-items:center;gap:10px;padding:6px 12px;background:var(--panel);border:1px solid var(--border);border-radius:6px;max-width:460px;transition:border-color .15s}
.mb-search:focus-within{border-color:rgba(56,189,248,.45)}
.mb-search input{flex:1;background:transparent;border:0;outline:0;color:var(--text);font-family:inherit;font-size:12.5px}
.mb-search input::placeholder{color:var(--text-3)}
.mb-search .hint{font-family:var(--mono);font-size:10px;color:var(--text-3)}

/* ---- Body ---- */
.mb-body{padding:20px 28px 40px;display:flex;flex-direction:column;gap:22px}

.mb-block{background:var(--panel);border:1px solid var(--border);border-radius:8px;overflow:hidden}
.mb-block-head{display:flex;align-items:center;gap:10px;padding:12px 16px;border-bottom:1px solid var(--border-soft);background:var(--bg-2)}
.mb-block-head h2{margin:0;font-size:13px;font-weight:600;letter-spacing:-.1px}
.mb-block-head .mb-tag{font-family:var(--mono);font-size:10px;text-transform:uppercase;letter-spacing:.4px;color:var(--text-3);padding:2px 7px;border-radius:10px;background:var(--bg);border:1px solid var(--border)}
.mb-block-head .mb-block-count{margin-left:auto;font-family:var(--mono);font-size:11px;color:var(--text-3)}
.mb-block-head .mb-block-count b{color:var(--text);font-weight:500}
.mb-block-body{padding:14px 16px}

/* ---- Tables ---- */
.mb-table{width:100%;border-collapse:collapse;font-size:12px}
.mb-table thead th{text-align:left;font-weight:500;font-size:10.5px;text-transform:uppercase;letter-spacing:.4px;color:var(--text-3);font-family:var(--mono);padding:6px 10px;border-bottom:1px solid var(--border);background:transparent}
.mb-table tbody tr{transition:background .12s}
.mb-table tbody tr:hover{background:var(--panel-2)}
.mb-table tbody tr.hidden{display:none}
.mb-table td{padding:7px 10px;border-bottom:1px solid var(--border-soft);color:var(--text-2);vertical-align:top}
.mb-table tbody tr:last-child td{border-bottom:0}
.mb-table td.mono{font-family:var(--mono);color:var(--text)}
.mb-table td.muted{color:var(--text-3);font-style:italic}

/* Kind badges for registry/dictionary/graph */
.mb-kind{display:inline-block;padding:2px 7px;border-radius:10px;font-family:var(--mono);font-size:10px;letter-spacing:.3px;border:1px solid var(--border);color:var(--text-2);background:var(--bg)}
.mb-kind.component,.mb-kind.ic,.mb-kind.pmic{color:var(--cyan);border-color:rgba(56,189,248,.3);background:rgba(56,189,248,.08)}
.mb-kind.capacitor,.mb-kind.resistor,.mb-kind.inductor,.mb-kind.crystal,.mb-kind.coil,.mb-kind.fuse,.mb-kind.switch,.mb-kind.connector{color:var(--text-2)}
.mb-kind.net,.mb-kind.power_rail,.mb-kind.signal,.mb-kind.reference,.mb-kind.clock,.mb-kind.data_bus{color:var(--emerald);border-color:rgba(52,211,153,.3);background:rgba(52,211,153,.08)}
.mb-kind.symptom{color:var(--amber);border-color:rgba(245,158,11,.3);background:rgba(245,158,11,.08)}

.mb-alias{display:inline-block;padding:1px 6px;border-radius:3px;font-family:var(--mono);font-size:10px;color:var(--text-3);background:var(--bg-2);border:1px solid var(--border-soft);margin-right:4px}

.mb-volt{font-family:var(--mono);font-size:11px;color:var(--cyan)}

/* ---- Graph block stats ---- */
.mb-graph-stats{display:flex;gap:10px;flex-wrap:wrap;margin-bottom:14px}
.mb-stat{padding:8px 12px;background:var(--bg-2);border:1px solid var(--border-soft);border-radius:6px;display:flex;flex-direction:column;gap:2px;min-width:96px}
.mb-stat .label{font-size:10px;text-transform:uppercase;letter-spacing:.4px;color:var(--text-3);font-family:var(--mono)}
.mb-stat .value{font-family:var(--mono);font-size:16px;color:var(--text);font-weight:500}
.mb-stat.sym .value{color:var(--amber)}
.mb-stat.cmp .value{color:var(--cyan)}
.mb-stat.net .value{color:var(--emerald)}
.mb-stat.edge .value{color:var(--text)}

/* Edges list — compact 3-col grid */
.mb-edges{display:grid;grid-template-columns:1fr auto 1fr;gap:4px 10px;font-family:var(--mono);font-size:11.5px;align-items:center}
.mb-edge-row{display:contents}
.mb-edge-row.hidden{display:none}
.mb-edge-row .src,.mb-edge-row .dst{padding:4px 8px;background:var(--bg-2);border:1px solid var(--border-soft);border-radius:4px;color:var(--text);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.mb-edge-row .rel{font-size:10px;text-transform:uppercase;letter-spacing:.4px;padding:3px 7px;border-radius:10px;color:var(--text-3);border:1px solid var(--border);text-align:center;min-width:86px;white-space:nowrap}
.mb-edge-row .rel.causes{color:var(--amber);border-color:rgba(245,158,11,.3);background:rgba(245,158,11,.08)}
.mb-edge-row .rel.powers{color:var(--emerald);border-color:rgba(52,211,153,.3);background:rgba(52,211,153,.08)}
.mb-edge-row .rel.decouples{color:var(--emerald);border-color:rgba(52,211,153,.2);background:rgba(52,211,153,.04)}
.mb-edge-row .rel.connects{color:var(--text-2)}
.mb-edge-row .rel.measured_at{color:var(--cyan);border-color:rgba(56,189,248,.3);background:rgba(56,189,248,.08)}
.mb-edge-row .rel.part_of{color:var(--violet);border-color:rgba(192,132,252,.3);background:rgba(192,132,252,.08)}

/* ---- Rules block ---- */
.mb-rule{border:1px solid var(--border-soft);border-radius:6px;background:var(--bg-2);margin-bottom:10px;overflow:hidden;transition:border-color .15s}
.mb-rule:hover{border-color:var(--border)}
.mb-rule.hidden{display:none}
.mb-rule-head{display:flex;align-items:center;gap:12px;padding:10px 14px;cursor:pointer;user-select:none}
.mb-rule-head .mb-rule-id{font-family:var(--mono);font-size:10.5px;color:var(--text-3);letter-spacing:.3px}
.mb-rule-head .mb-rule-sym{flex:1;color:var(--text);font-size:12.5px}
.mb-rule-head .mb-rule-sym b{color:var(--amber);font-weight:500}
.mb-rule-head .mb-rule-conf{font-family:var(--mono);font-size:11px;color:var(--text-2);padding:2px 7px;background:var(--panel);border:1px solid var(--border);border-radius:10px}
.mb-rule-head .caret{width:10px;height:10px;border-right:1.5px solid var(--text-3);border-bottom:1.5px solid var(--text-3);transform:rotate(-45deg);transition:transform .2s;margin-right:2px}
.mb-rule.open .mb-rule-head .caret{transform:rotate(45deg)}
.mb-rule-body{display:none;padding:0 14px 12px;border-top:1px solid var(--border-soft)}
.mb-rule.open .mb-rule-body{display:block}

.mb-rule-section{margin-top:10px}
.mb-rule-section h4{margin:0 0 6px;font-size:10.5px;text-transform:uppercase;letter-spacing:.4px;color:var(--text-3);font-family:var(--mono);font-weight:500}
.mb-rule-symptoms{display:flex;flex-wrap:wrap;gap:6px}
.mb-rule-symptoms .sym{padding:3px 9px;border-radius:12px;background:rgba(245,158,11,.08);border:1px solid rgba(245,158,11,.3);color:var(--amber);font-size:11.5px}
.mb-cause{display:flex;align-items:center;gap:10px;padding:6px 0;border-top:1px solid var(--border-soft);font-size:12px}
.mb-cause:first-child{border-top:0}
.mb-cause .refdes{font-family:var(--mono);color:var(--cyan);min-width:64px}
.mb-cause .mech{flex:1;color:var(--text-2)}
.mb-cause .prob-bar{width:110px;height:6px;background:var(--bg);border-radius:3px;overflow:hidden;border:1px solid var(--border-soft)}
.mb-cause .prob-fill{height:100%;background:linear-gradient(90deg,oklch(0.68 0.16 25) 0%,var(--amber) 100%)}
.mb-cause .prob-val{font-family:var(--mono);font-size:10.5px;color:var(--text-3);min-width:40px;text-align:right}
.mb-step{display:flex;gap:10px;padding:5px 0;font-size:12px}
.mb-step .act{flex:1;color:var(--text)}
.mb-step .exp{font-family:var(--mono);font-size:10.5px;color:var(--violet);padding:2px 7px;background:rgba(192,132,252,.08);border:1px solid rgba(192,132,252,.3);border-radius:4px;white-space:nowrap}
.mb-rule-sources{display:flex;flex-wrap:wrap;gap:4px;margin-top:4px}
.mb-rule-sources .src{font-family:var(--mono);font-size:10px;color:var(--text-3);padding:1px 6px;background:var(--bg);border:1px solid var(--border-soft);border-radius:3px}

/* ---- Audit block ---- */
.mb-audit-summary{display:flex;gap:20px;margin-bottom:14px;align-items:center;flex-wrap:wrap}
.mb-audit-summary .headline{font-size:13.5px;color:var(--text);font-weight:500}
.mb-audit-brief{padding:10px 12px;background:var(--bg-2);border-left:2px solid var(--amber);border-radius:0 4px 4px 0;color:var(--text-2);font-size:12.5px;line-height:1.5;margin-bottom:14px;white-space:pre-wrap}
.mb-drift{margin-top:4px}
.mb-drift h4{margin:0 0 6px;font-size:10.5px;text-transform:uppercase;letter-spacing:.4px;color:var(--text-3);font-family:var(--mono);font-weight:500}
.mb-drift-item{padding:8px 10px;border:1px solid var(--border-soft);border-radius:5px;margin-bottom:6px;background:var(--bg-2);font-size:12px}
.mb-drift-item .file{font-family:var(--mono);font-size:10px;text-transform:uppercase;letter-spacing:.4px;color:var(--amber);padding:2px 6px;background:rgba(245,158,11,.08);border:1px solid rgba(245,158,11,.3);border-radius:3px;margin-right:8px}
.mb-drift-item .reason{color:var(--text-2)}
.mb-drift-item .mentions{margin-top:4px;display:flex;flex-wrap:wrap;gap:4px}
.mb-drift-item .mentions code{font-family:var(--mono);font-size:10.5px;color:var(--text);padding:1px 6px;background:var(--bg);border:1px solid var(--border);border-radius:3px}

/* ---- Empty / placeholder ---- */
.mb-empty{display:flex;align-items:center;justify-content:center;padding:80px 20px;text-align:center}
.mb-empty.hidden{display:none}
.mb-empty-card{max-width:440px}
.mb-empty-card h3{margin:0 0 8px;font-size:16px;font-weight:600}
.mb-empty-card p{margin:0;color:var(--text-3);line-height:1.5;font-size:12.5px}

.mb-missing{padding:14px 16px;color:var(--text-3);font-size:12px;font-style:italic;text-align:center}

/* ---- Scrollbar ---- */
.memory-bank::-webkit-scrollbar{width:6px}
.memory-bank::-webkit-scrollbar-thumb{background:var(--border);border-radius:3px}
.memory-bank::-webkit-scrollbar-thumb:hover{background:var(--border-hover)}
.memory-bank::-webkit-scrollbar-track{background:transparent}
