
/* Self-hosted Inter — served from /assets/fonts/inter/ relative to site root.
   mock.css lives at /mock-app/mock.css so we resolve up one directory. */
@font-face{font-family:'Inter';font-style:normal;font-weight:400;font-display:swap;src:url('../assets/fonts/inter/inter-400.woff2') format('woff2')}
@font-face{font-family:'Inter';font-style:normal;font-weight:500;font-display:swap;src:url('../assets/fonts/inter/inter-500.woff2') format('woff2')}
@font-face{font-family:'Inter';font-style:normal;font-weight:600;font-display:swap;src:url('../assets/fonts/inter/inter-600.woff2') format('woff2')}
@font-face{font-family:'Inter';font-style:normal;font-weight:700;font-display:swap;src:url('../assets/fonts/inter/inter-700.woff2') format('woff2')}
*{box-sizing:border-box}
:root{
  --bg:#f9fafb;
  --bg-card:#ffffff;
  --bg-elev:#f4f5f7;
  --bg-rail:#1a2035;
  --bg-code:#f6f8fa;
  --fg:#111827;
  --fg-dim:#4b5563;
  --fg-mute:#9ca3af;
  --line:#e5e7eb;
  --line-strong:#d1d5db;
  --accent:#0e7e6e;      /* teal close to real product */
  --accent-soft:#e6f4f1;
  --accent-strong:#075e52;
  --primary:#111827;
  --link:#2563eb;
  --warning:#b45309;
  --warning-soft:#fef3c7;
  --success:#15803d;
  --success-soft:#dcfce7;
  --info:#1d4ed8;
  --info-soft:#dbeafe;
  --danger:#b91c1c;
  --danger-soft:#fee2e2;
  --purple:#7c3aed;
  --purple-soft:#ede9fe;
  --mono:'JetBrains Mono','SFMono-Regular',Menlo,Consolas,monospace;
  --sans:'Inter','InterVariable',-apple-system,BlinkMacSystemFont,'Segoe UI',system-ui,sans-serif;
  --display:'Inter','InterVariable',-apple-system,BlinkMacSystemFont,'Segoe UI',system-ui,sans-serif;
  --radius:10px;
  --radius-sm:6px;
  --shadow-sm:0 1px 2px rgba(0,0,0,.04);
  --shadow:0 4px 12px rgba(0,0,0,.06);
}

html,body{margin:0;padding:0;background:var(--bg);color:var(--fg);font-family:var(--sans);font-size:14px;line-height:1.5;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-feature-settings:'cv11','ss01','ss03','cv02','cv03','cv04';font-variant-numeric:tabular-nums}
a{color:var(--link);text-decoration:none}
a:hover{text-decoration:underline}
code,.mono{font-family:var(--mono);font-size:.88em;background:var(--bg-code);padding:1px 5px;border-radius:4px;border:1px solid var(--line);word-break:break-all;overflow-wrap:anywhere}
.wallet-tag{word-break:break-all;overflow-wrap:anywhere;max-width:100%}
pre.code{font-family:var(--mono);font-size:12px;line-height:1.55;background:var(--bg-code);border:1px solid var(--line);border-radius:8px;padding:12px 14px;overflow:auto;color:var(--fg)}
button{font-family:inherit;cursor:pointer}

/* ─── Mock banner (always at top) ─── */
.mock-banner{background:#fdf6e3;border-bottom:1px solid #f0d990;color:#7a5d00;padding:6px 16px;font-size:12.5px;display:flex;align-items:center;gap:8px;justify-content:center}
.mock-banner b{color:#5a4500}
.mock-banner a{color:#3b6f8c;font-weight:500}

/* ─── App shell: rail + content ─── */
.app{display:grid;grid-template-columns:240px 1fr;min-height:calc(100vh - 32px)}

/* ─── Left rail (dark navy) ─── */
.rail{background:var(--bg-rail);border-right:1px solid #2d3a52;padding:0;display:flex;flex-direction:column;overflow-y:auto}
.rail-brand{display:flex;align-items:center;gap:10px;padding:18px 16px 14px;font-weight:700;color:#ffffff;font-size:15px;border-bottom:1px solid #2d3a52}
.rail-brand .mark{width:24px;height:24px;border-radius:6px;background:linear-gradient(135deg,#0e7e6e,#7c3aed);flex-shrink:0}

/* ─── Nav groups ─── */
.rail-group{margin:0}
.rail-group-hdr{display:flex;align-items:center;justify-content:space-between;padding:10px 16px 4px;font-size:10px;font-weight:700;letter-spacing:.08em;text-transform:uppercase;color:#64748b;user-select:none;cursor:pointer;border-bottom:none}
.rail-group-hdr .grp-badge{background:#3b82f6;color:#fff;font-size:10px;font-weight:700;padding:1px 6px;border-radius:999px;letter-spacing:0}
.rail-group-hdr .grp-badge.alert{background:#dc2626;animation:nav-alert-pulse 2.4s ease-in-out infinite}
.rail-group-body a .nav-alert{margin-left:auto;background:#dc2626;color:#fff;font-size:10px;font-weight:700;padding:1px 6px;border-radius:999px;letter-spacing:0;min-width:18px;text-align:center;animation:nav-alert-pulse 2.4s ease-in-out infinite}
@keyframes nav-alert-pulse{0%,100%{box-shadow:0 0 0 0 rgba(220,38,38,.55)}50%{box-shadow:0 0 0 4px rgba(220,38,38,0)}}
.rail-group-hdr .chev{color:#64748b;font-size:10px;transition:transform .15s}
.rail-group-body{display:flex;flex-direction:column;gap:0;padding:0 8px 4px}
.rail-group-body a{display:flex;align-items:center;gap:8px;padding:8px 10px;border-radius:6px;color:#94a3b8;font-size:13px;font-weight:500;transition:background .1s,color .1s;min-height:36px;-webkit-tap-highlight-color:rgba(96,165,250,.2)}
.rail-group-body a:hover{background:#243050;color:#e2e8f0;text-decoration:none}
.rail-group-body a:focus-visible{outline:2px solid #60a5fa;outline-offset:-2px}
.rail-group-body a.active{background:#1e3a5f;color:#60a5fa}
.rail-group-body a.uc{opacity:.6}
.rail-group-body a.uc::after{content:"UC";font-size:9px;background:#374151;color:#9ca3af;padding:1px 4px;border-radius:3px;margin-left:auto;font-family:var(--mono)}
.rail-group-body .ico{width:14px;height:14px;flex-shrink:0;opacity:.75}

/* Flat rail items (no group) */
.rail-flat{display:flex;flex-direction:column;gap:0;padding:4px 8px}
.rail-flat a{display:flex;align-items:center;gap:8px;padding:9px 10px;border-radius:6px;color:#94a3b8;font-size:13px;font-weight:500;min-height:36px;-webkit-tap-highlight-color:rgba(96,165,250,.2)}
.rail-flat a:hover{background:#243050;color:#e2e8f0;text-decoration:none}
.rail-flat a:focus-visible{outline:2px solid #60a5fa;outline-offset:-2px}
.rail-flat a.active{background:#1e3a5f;color:#60a5fa}
.rail-flat .ico{width:14px;height:14px;flex-shrink:0;opacity:.75}

.rail-collapse{margin-top:auto;padding:12px 16px;border-top:1px solid #2d3a52;font-size:11.5px;color:#64748b}

/* ─── Mobile menu toggle (hamburger) ─── */
.rail-toggle{display:none;align-items:center;justify-content:center;width:36px;height:36px;border-radius:7px;background:var(--bg-elev);border:1px solid var(--line);color:var(--fg);cursor:pointer;padding:0;flex-shrink:0}
.rail-toggle:hover{background:var(--bg-card)}
.rail-toggle .rt-dot{position:absolute;top:-3px;right:-3px;background:#dc2626;color:#fff;font-size:9px;font-weight:700;padding:1px 4px;border-radius:999px;min-width:14px;text-align:center;line-height:1.2;animation:nav-alert-pulse 2.4s ease-in-out infinite}
.rail-toggle{position:relative}
.rail-backdrop{display:none;position:fixed;inset:0;background:rgba(15,23,42,.55);z-index:998;opacity:0;transition:opacity .2s}
.rail-backdrop.open{display:block;opacity:1}

/* ─── Mobile responsive (≤900px) ─── */
@media(max-width:900px){
  .app{grid-template-columns:1fr;min-height:auto}
  .rail{position:fixed;top:0;left:0;height:100vh;width:280px;z-index:999;transform:translateX(-100%);transition:transform .25s cubic-bezier(.4,0,.2,1);box-shadow:0 8px 32px rgba(0,0,0,.25)}
  .app.rail-open .rail{transform:translateX(0)}
  .rail-toggle{display:inline-flex}
  .mock-banner{padding:5px 10px;font-size:11px;text-align:center;line-height:1.4;flex-wrap:wrap;justify-content:center}
  .mock-banner b{font-size:11px}
  .topbar{padding:9px 12px;gap:6px;flex-wrap:nowrap}
  .topbar .crumbs{font-size:12.5px;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;flex:1}
  .user{gap:6px;flex-shrink:0}
  .user .wallet-tag{display:none}
  .user .cmdK-chip span:not(:first-of-type){display:none}
  .user .cmdK-chip{padding:6px 9px}
  .user .cmdK-chip svg{margin:0}
  .user #cfg-open-btn{padding:6px 9px;font-size:0}
  .user #cfg-open-btn svg{margin:0;width:14px;height:14px}
  .user .notif{display:none}
  .user > span:last-child{display:none}
  .user .help-menu-wrap{display:none}
  .content{padding:14px 14px 40px;max-width:100%}
  .page-h{flex-direction:column;gap:10px;margin-bottom:14px}
  .page-h h1{font-size:19px;line-height:1.25;letter-spacing:-.005em}
  .page-h .sub{font-size:12.5px}
  .page-h .actions{width:100%;flex-wrap:wrap}
  .kpi-row{grid-template-columns:repeat(2,1fr);gap:8px}
  .kpi{padding:10px 12px}
  .kpi .value{font-size:18px}
  .card{padding:14px;margin-bottom:10px}
  .card h3{font-size:14px}
  .chart-wrap{padding:14px;overflow-x:auto}
  .pipeline-row{min-width:560px}
  .foot{padding:14px;font-size:11.5px;line-height:1.6;flex-wrap:wrap}
  .tbl thead th{padding:8px 10px;font-size:10.5px}
  .tbl tbody td{padding:9px 10px;font-size:12.5px}
}
@media(max-width:600px){
  .mock-banner a{display:inline-block}
  .kpi-row{grid-template-columns:1fr 1fr}
  .topbar{padding:8px 10px}
}

/* ─── Main content area ─── */
.main{display:flex;flex-direction:column;min-width:0}
.topbar{display:flex;align-items:center;justify-content:space-between;padding:12px 28px;border-bottom:1px solid var(--line);background:var(--bg-card)}
.crumbs{font-size:12.5px;color:var(--fg-dim);display:flex;align-items:center;gap:6px;font-weight:500;letter-spacing:.005em;font-feature-settings:'cv11','ss01'}
.crumbs a{color:var(--accent);font-weight:500}
.crumbs .sep{color:var(--fg-mute);font-weight:400}
.crumbs .here{color:var(--fg);font-weight:600;letter-spacing:0}
.crumbs .here:last-child{color:var(--fg);font-weight:600}
.user{display:flex;align-items:center;gap:12px;font-size:13px;color:var(--fg-dim)}
.user .avatar{width:30px;height:30px;border-radius:50%;background:#dcfce7;color:#166534;display:inline-flex;align-items:center;justify-content:center;font-weight:700;font-size:11px;flex-shrink:0}
.user .wallet-tag{font-family:var(--mono);font-size:11px;background:var(--bg-elev);border:1px solid var(--line);border-radius:6px;padding:3px 8px;color:var(--fg-dim);max-width:380px;line-height:1.4;word-break:break-all;overflow-wrap:anywhere}
.user .notif{position:relative;display:inline-flex;align-items:center;justify-content:center;width:28px;height:28px;border-radius:6px;background:var(--bg-elev);border:1px solid var(--line);cursor:pointer}
.user .notif-badge{position:absolute;top:-4px;right:-4px;background:var(--danger);color:#fff;font-size:9px;font-weight:700;padding:1px 4px;border-radius:999px}

.content{padding:24px 28px 60px;max-width:1280px;width:100%;align-self:flex-start}

/* ─── Page header ─── */
.page-h{display:flex;align-items:flex-start;justify-content:space-between;gap:24px;margin-bottom:18px}
.page-h h1{font-family:var(--display);font-size:26px;font-weight:680;letter-spacing:-.018em;margin:0 0 6px;line-height:1.18;color:var(--fg);font-feature-settings:'cv11','ss01','ss03','cv02','cv03','cv04'}
.page-h .sub{color:var(--fg-dim);font-size:13.5px;margin:0;font-weight:400;line-height:1.5;letter-spacing:.002em;max-width:78ch}
.page-h .actions{display:flex;gap:8px;flex-shrink:0;flex-wrap:wrap}

/* ─── Buttons ─── */
.btn{display:inline-flex;align-items:center;gap:6px;padding:7px 14px;border-radius:7px;font-size:13px;font-weight:500;border:1px solid var(--line-strong);background:var(--bg-card);color:var(--fg);text-decoration:none;min-height:32px;cursor:pointer;-webkit-tap-highlight-color:rgba(14,126,110,.2)}
.btn:hover{background:var(--bg-elev);text-decoration:none}
.btn:focus-visible{outline:2px solid var(--accent);outline-offset:2px}
.btn.primary{background:var(--primary);color:#fff;border-color:var(--primary)}
.btn.primary:hover{background:#000}
.btn.accent{background:var(--accent);color:#fff;border-color:var(--accent)}
.btn.accent:hover{background:var(--accent-strong)}
.btn.danger{background:var(--danger);color:#fff;border-color:var(--danger)}
.btn-sm{padding:4px 10px;font-size:12px;border-radius:6px;min-height:28px}
/* Mobile: bump every tap target to 44×44 per WCAG / Apple HIG. */
@media (max-width: 720px){
  .btn{padding:10px 16px;font-size:14px;min-height:44px}
  .btn-sm{padding:8px 14px;font-size:13px;min-height:40px}
  .btn svg{width:14px;height:14px}
  .cmdK-chip{padding:9px 12px;font-size:13px;min-height:40px}
  .cfg-close{padding:9px 14px;font-size:13px;min-height:40px}
}

/* ─── Cards / counters ─── */
.kpi-row{display:grid;grid-template-columns:repeat(auto-fit,minmax(160px,1fr));gap:12px;margin-bottom:16px}
.kpi{background:var(--bg-card);border:1px solid var(--line);border-radius:10px;padding:13px 16px;position:relative}
.kpi .label{font-size:11px;color:var(--fg-mute);text-transform:uppercase;letter-spacing:.05em;font-weight:600;margin:0 0 4px}
.kpi .value{font-size:22px;font-weight:700;color:var(--fg);margin:0;letter-spacing:-.01em}
.kpi .sub-val{font-size:11.5px;color:var(--fg-dim);margin:2px 0 0}
.kpi .ico{position:absolute;top:13px;right:13px;width:14px;height:14px;color:var(--fg-mute);opacity:.6}

.card{background:var(--bg-card);border:1px solid var(--line);border-radius:10px;padding:18px 20px;margin-bottom:14px}
.card h3{margin:0 0 4px;font-size:15px;font-weight:600}
.card .sub{color:var(--fg-dim);font-size:12.5px;margin:0 0 14px}

/* ─── Tables ─── */
.tbl{width:100%;border-collapse:collapse;font-size:13px}
.tbl thead th{text-align:left;font-size:11px;font-weight:600;color:var(--fg-mute);text-transform:uppercase;letter-spacing:.05em;padding:10px 14px;border-bottom:1px solid var(--line);background:var(--bg-card)}
.tbl tbody td{padding:11px 14px;border-bottom:1px solid var(--line);vertical-align:middle}
.tbl tbody tr:last-child td{border-bottom:none}
.tbl tbody tr:hover{background:var(--bg-elev)}
.tbl-wrap{background:var(--bg-card);border:1px solid var(--line);border-radius:10px;overflow-x:auto;overflow-y:hidden;-webkit-overflow-scrolling:touch}
.tbl .num{font-variant-numeric:tabular-nums}

/* ─── Pills ─── */
.pill{display:inline-flex;align-items:center;gap:5px;padding:2px 9px;border-radius:999px;font-size:11.5px;font-weight:600;letter-spacing:.02em;border:1px solid transparent;white-space:nowrap}
.pill.demo{background:var(--info-soft);color:var(--info);border-color:#bfdbfe}
.pill.shadow{background:var(--purple-soft);color:var(--purple);border-color:#ddd6fe}
.pill.runtime{background:var(--warning-soft);color:var(--warning);border-color:#fde68a}
.pill.prod{background:var(--success-soft);color:var(--success);border-color:#bbf7d0}
.pill.pending{background:#f3f4f6;color:#6b7280;border-color:#e5e7eb}
.pill.frozen{background:#f3f4f6;color:#6b7280;border-color:#e5e7eb}
.pill.live{background:#111827;color:#fff;border-color:#111827}
.pill.paper{background:var(--accent-soft);color:var(--accent-strong);border-color:#a7e0d4}
.pill.warn{background:var(--warning-soft);color:var(--warning);border-color:#fde68a}
.pill.danger{background:var(--danger-soft);color:var(--danger);border-color:#fecaca}
.pill.critical{background:var(--danger);color:#fff;border-color:var(--danger)}
.pill.high{background:#fed7aa;color:#9a3412;border-color:#fdba74}
.pill.medium{background:var(--warning-soft);color:var(--warning);border-color:#fde68a}
.pill.low{background:#f3f4f6;color:#6b7280;border-color:#e5e7eb}

/* ─── Reason code badge ─── */
.rc{display:inline-flex;align-items:center;font-family:var(--mono);font-size:11.5px;font-weight:600;padding:2px 8px;border-radius:5px;border:1px solid;letter-spacing:.01em;position:relative}
.rc.RISK{background:var(--danger-soft);color:var(--danger);border-color:#fecaca}
.rc.EXEC{background:var(--info-soft);color:var(--info);border-color:#bfdbfe}
.rc.STRAT{background:var(--accent-soft);color:var(--accent-strong);border-color:#a7e0d4}
.rc.DISC{background:var(--purple-soft);color:var(--purple);border-color:#ddd6fe}
.rc.INTEL{background:var(--warning-soft);color:var(--warning);border-color:#fde68a}
.rc.SEC{background:#fed7aa;color:#9a3412;border-color:#fdba74}
.rc.GOV{background:#f3f4f6;color:#4b5563;border-color:#d1d5db}

/* ─── Reason code tooltip ─── */
.rc[data-tip]{cursor:help;border-bottom:1px dotted currentColor}
.rc[data-tip]::after{
  content:attr(data-tip);
  position:absolute;bottom:calc(100% + 6px);left:50%;transform:translateX(-50%) translateY(2px);
  background:#0f172a;color:#f8fafc;font-family:var(--sans,-apple-system,sans-serif);font-weight:400;
  font-size:11.5px;line-height:1.45;letter-spacing:0;
  padding:7px 10px;border-radius:6px;
  white-space:normal;width:max-content;max-width:280px;
  box-shadow:0 6px 20px rgba(0,0,0,.18);
  opacity:0;pointer-events:none;transition:opacity .15s, transform .15s;
  z-index:9999;text-align:left;
}
.rc[data-tip]::before{
  content:"";position:absolute;bottom:calc(100% + 1px);left:50%;transform:translateX(-50%);
  border:5px solid transparent;border-top-color:#0f172a;
  opacity:0;pointer-events:none;transition:opacity .15s;
  z-index:9999;
}
.rc[data-tip]:hover::after,.rc[data-tip]:focus::after,
.rc[data-tip]:hover::before,.rc[data-tip]:focus::before{opacity:1;transform:translateX(-50%) translateY(0)}
.rc[data-tip]:focus{outline:2px solid var(--accent);outline-offset:2px}

/* ─── Bot Library: family colors (aligned with .rc colors) ─── */
.fam{display:inline-flex;align-items:center;font-size:11.5px;font-weight:700;padding:2px 9px;border-radius:999px;letter-spacing:.02em;white-space:nowrap;border:1px solid transparent}
.fam.INTEL{background:var(--warning-soft);color:var(--warning);border-color:#fde68a}
.fam.DISC{background:var(--purple-soft);color:var(--purple);border-color:#ddd6fe}
.fam.STRAT{background:var(--accent-soft);color:var(--accent-strong);border-color:#a7e0d4}
.fam.RISK{background:var(--danger-soft);color:var(--danger);border-color:#fecaca}
.fam.EXEC{background:var(--info-soft);color:var(--info);border-color:#bfdbfe}
.fam.SEC{background:#fed7aa;color:#9a3412;border-color:#fdba74}
.fam.GOV{background:#f3f4f6;color:#4b5563;border-color:#d1d5db}
.botchip{display:inline-flex;align-items:center;font-family:var(--mono);font-size:11.5px;font-weight:600;padding:2px 8px;border-radius:5px;border:1px solid;letter-spacing:.01em;text-decoration:none;cursor:pointer}
.botchip:hover{opacity:.8;text-decoration:none}
.botchip.INTEL{background:var(--warning-soft);color:var(--warning);border-color:#fde68a}
.botchip.DISC{background:var(--purple-soft);color:var(--purple);border-color:#ddd6fe}
.botchip.STRAT{background:var(--accent-soft);color:var(--accent-strong);border-color:#a7e0d4}
.botchip.RISK{background:var(--danger-soft);color:var(--danger);border-color:#fecaca}
.botchip.EXEC{background:var(--info-soft);color:var(--info);border-color:#bfdbfe}
.botchip.SEC{background:#fed7aa;color:#9a3412;border-color:#fdba74}
.botchip.GOV{background:#f3f4f6;color:#4b5563;border-color:#d1d5db}
.fam-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:16px;margin-bottom:24px}
@media(max-width:900px){.fam-grid{grid-template-columns:1fr}}
.fam-card{background:var(--bg-card);border:1px solid var(--line);border-radius:10px;overflow:hidden;display:flex;flex-direction:column}
.fam-stripe{height:4px;flex-shrink:0}
.fam-stripe.INTEL{background:var(--warning)}
.fam-stripe.DISC{background:var(--purple)}
.fam-stripe.STRAT{background:var(--accent)}
.fam-stripe.RISK{background:var(--danger)}
.fam-stripe.EXEC{background:var(--info)}
.fam-stripe.SEC{background:#ea580c}
.fam-stripe.GOV{background:#6b7280}
.fam-card-body{padding:16px 18px;flex:1;display:flex;flex-direction:column;gap:10px}
.fam-card-title{font-size:15px;font-weight:700;display:flex;align-items:center;gap:8px}
.fam-card-desc{font-size:13px;color:var(--fg-dim);line-height:1.5}
.fam-card-stats{display:flex;gap:12px;font-size:12px;color:var(--fg-mute);flex-wrap:wrap}
.fam-card-stats b{color:var(--fg)}
.fam-card-footer{padding:10px 18px;border-top:1px solid var(--line);background:var(--bg-elev)}
.fam-card-footer a{font-size:13px;font-weight:500;color:var(--accent)}
.bot-pipeline{margin:24px 0;padding:20px;background:var(--bg-card);border:1px solid var(--line);border-radius:10px;overflow-x:auto}
.bot-pipeline-title{font-size:12px;font-weight:700;text-transform:uppercase;letter-spacing:.06em;color:var(--fg-mute);margin:0 0 12px}
.pipeline-row{display:flex;align-items:center;gap:0;flex-wrap:nowrap;min-width:600px}
.pipeline-node{display:flex;flex-direction:column;align-items:center;gap:3px;flex:1;min-width:80px}
.pipeline-node .pn-label{font-size:10.5px;font-weight:700;text-align:center;padding:6px 8px;border-radius:6px;white-space:nowrap}
.pipeline-node .pn-count{font-size:10px;color:var(--fg-mute)}
.pipeline-node .pn-label.INTEL{background:var(--warning-soft);color:var(--warning)}
.pipeline-node .pn-label.DISC{background:var(--purple-soft);color:var(--purple)}
.pipeline-node .pn-label.STRAT{background:var(--accent-soft);color:var(--accent-strong)}
.pipeline-node .pn-label.RISK{background:var(--danger-soft);color:var(--danger)}
.pipeline-node .pn-label.EXEC{background:var(--info-soft);color:var(--info)}
.pipeline-arrow{color:var(--fg-mute);font-size:16px;flex-shrink:0;margin:0 2px;padding-bottom:14px}
.pipeline-cross{display:flex;gap:16px;margin-top:10px;padding-top:10px;border-top:1px dashed var(--line)}
.pipeline-cross-label{font-size:10.5px;font-weight:700;padding:4px 10px;border-radius:6px}
.pipeline-cross-label.SEC{background:#fed7aa;color:#9a3412}
.pipeline-cross-label.GOV{background:#f3f4f6;color:#4b5563;border:1px solid #d1d5db}
.pipeline-cross-note{font-size:11px;color:var(--fg-mute);display:flex;align-items:center;gap:6px}
.bot-hero{background:var(--bg-card);border:1px solid var(--line);border-radius:10px;padding:20px 24px;margin-bottom:16px;display:flex;flex-direction:column;gap:10px}
.bot-hero h1{font-size:22px;font-weight:700;margin:0}
.bot-hero .bot-registry-id{font-family:var(--mono);font-size:14px;color:var(--fg-dim)}
.bot-hero-badges{display:flex;flex-wrap:wrap;gap:6px;align-items:center}
.bot-hero-purpose{font-size:13.5px;color:var(--fg-dim);line-height:1.6;max-width:800px;margin:0}
.why-table{width:100%;border-collapse:collapse;font-size:13px}
.why-table th{text-align:left;font-size:11px;font-weight:600;color:var(--fg-mute);text-transform:uppercase;letter-spacing:.05em;padding:8px 14px;border-bottom:1px solid var(--line);background:var(--bg-card)}
.why-table td{padding:10px 14px;border-bottom:1px solid var(--line);vertical-align:top}
.why-table tr:last-child td{border-bottom:none}
.why-table .failure{font-weight:600;color:var(--danger)}
.worked-example{margin-top:8px;padding:10px 14px;background:var(--accent-soft);border:1px solid #a7e0d4;border-left:3px solid var(--accent);border-radius:6px;font-size:12.5px;color:var(--accent-strong)}
.worked-example b{color:var(--accent-strong)}
.spotlight-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:14px;margin-bottom:16px}
.spotlight-card{background:var(--bg-card);border:1px solid var(--line);border-radius:10px;overflow:hidden}
.spotlight-card .sp-stripe{height:3px}
.spotlight-card .sp-body{padding:14px 16px}
.spotlight-card .sp-name{font-size:14px;font-weight:700;margin:0 0 3px}
.spotlight-card .sp-reg{font-family:var(--mono);font-size:11.5px;color:var(--fg-dim);margin:0 0 6px}
.spotlight-card .sp-desc{font-size:12.5px;color:var(--fg-dim);line-height:1.5}
.spotlight-card .sp-footer{padding:8px 16px;border-top:1px solid var(--line);background:var(--bg-elev);display:flex;gap:8px;align-items:center}
.pipeline-mini{display:flex;align-items:center;gap:6px;flex-wrap:wrap;padding:10px 14px;background:var(--bg-elev);border-radius:8px;font-size:12px;margin:8px 0}
.pipeline-mini .pm-node{padding:4px 10px;border-radius:5px;font-weight:600;font-size:11.5px}
.pipeline-mini .pm-node.current{background:var(--accent);color:#fff}
.pipeline-mini .pm-node.context{background:var(--bg-card);border:1px solid var(--line);color:var(--fg-dim)}
.pipeline-mini .pm-arrow{color:var(--fg-mute)}
.io-tbl{width:100%;border-collapse:collapse;font-size:12.5px}
.io-tbl th{text-align:left;font-size:10.5px;font-weight:700;text-transform:uppercase;letter-spacing:.05em;color:var(--fg-mute);padding:7px 12px;border-bottom:1px solid var(--line);background:var(--bg-elev)}
.io-tbl td{padding:8px 12px;border-bottom:1px solid var(--line);vertical-align:top}
.io-tbl tr:last-child td{border-bottom:none}
.io-tbl .req-yes{color:var(--success);font-weight:600;font-size:11px}
.io-tbl .req-no{color:var(--fg-mute);font-size:11px}

/* ─── Progress bar ─── */
.progress{display:flex;align-items:center;gap:8px;font-size:12px;color:var(--fg-dim)}
.progress .bar{position:relative;flex:1;max-width:100px;height:6px;background:#f3f4f6;border-radius:3px;overflow:hidden}
.progress .bar > span{position:absolute;left:0;top:0;bottom:0;background:var(--accent);border-radius:3px}

/* ─── Annotation / sticky note — floats into a right rail on desktop ─── */
.anno{
  margin:0 0 16px 18px;
  padding:12px 14px;
  background:#fffbeb;
  border:1px solid #fde68a;
  border-left:3px solid #d97706;
  border-radius:8px;
  font-size:12.5px;
  line-height:1.5;
  color:#78350f;
  /* Float to the right so the .anno acts like a rail callout, not a column-blocking note. */
  float:right;
  clear:right;
  width:280px;
  max-width:32%;
}
.anno b{color:#7c2d12}
.anno .anno-h{font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.06em;color:#92400e;margin:0 0 4px;display:flex;align-items:center;gap:6px}
.anno .anno-h::before{content:"❖";font-size:9px;color:#d97706}
.anno code{background:#fef3c7;border-color:#fde68a;color:#7c2d12;font-size:11px}
/* On narrow screens, drop to full-width inline so it doesn't squeeze the main column. */
@media (max-width: 900px){
  .anno{float:none;width:auto;max-width:none;margin:14px 0}
}
/* Full-width blocks must NOT shrink-wrap around .anno — they break grid columns when forced narrow. */
.trader-kpi-row, .syshealth, .health, .now-strip, .kpi-row, .grid, .grid-2, .grid-3, .grid-4,
.content > table, .content > div[style*="grid-template"], .content > div[style*="display:grid"],
.section > table, .section > div[style*="grid-template"]{ clear:right }

.callout{margin:14px 0;padding:14px 16px;background:var(--accent-soft);border:1px solid #a7e0d4;border-left:3px solid var(--accent);border-radius:8px;font-size:13px;color:var(--accent-strong)}
.callout .anno-h{font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.06em;color:var(--accent-strong);margin:0 0 4px}

/* ─── Form rows (for create wizards) ─── */
.form-section{margin-bottom:20px}
.form-section h4{margin:0 0 2px;font-size:14px;font-weight:600}
.form-section .desc{font-size:12.5px;color:var(--fg-dim);margin:0 0 12px}
.field{margin-bottom:14px}
.field label{display:block;font-size:12.5px;font-weight:500;margin:0 0 4px;color:var(--fg)}
.field .hint{font-size:12px;color:var(--fg-dim);margin:0 0 6px}
.field input[type=text],.field select,.field textarea{width:100%;padding:8px 11px;border-radius:6px;border:1px solid var(--line-strong);background:var(--bg-card);font-family:inherit;font-size:13px;color:var(--fg)}
.field input[disabled]{background:var(--bg-elev);color:var(--fg-mute)}
.field-grid-2{display:grid;grid-template-columns:1fr 1fr;gap:14px}

/* ─── Drawer (envelope viewer) ─── */
.drawer-demo{display:grid;grid-template-columns:1fr 1.2fr;gap:14px;align-items:start}
.drawer-demo .left{background:var(--bg-elev);border:1px solid var(--line);border-radius:10px;padding:14px}
.drawer-demo .right{background:var(--bg-card);border:1px solid var(--line);border-radius:10px;padding:14px}

/* ─── Pipeline ladder ─── */
.ladder{display:grid;grid-template-columns:repeat(4,1fr);gap:14px;margin:18px 0 6px}
.lane{background:var(--bg-card);border:1px solid var(--line);border-radius:10px;padding:14px;min-height:200px;display:flex;flex-direction:column}
.lane-h{display:flex;align-items:center;justify-content:space-between;margin-bottom:6px}
.lane-h h4{margin:0;font-size:13.5px;font-weight:600}
.lane-h .count{font-size:12px;color:var(--fg-mute);font-variant-numeric:tabular-nums}
.lane-desc{font-size:11.5px;color:var(--fg-mute);margin:0 0 12px}
.lane-card{background:#fafafa;border:1px solid var(--line);border-radius:7px;padding:8px 10px;margin-bottom:6px;font-size:12.5px}
.lane-card .nm{font-weight:600;color:var(--fg);font-size:12.5px}
.lane-card .meta{color:var(--fg-mute);font-size:11px;margin-top:2px;font-family:var(--mono)}

/* ─── Tab bar ─── */
.tabs{display:flex;gap:0;border-bottom:1px solid var(--line);margin-bottom:18px}
.tabs a,.tabs span{padding:10px 14px;font-size:13px;color:var(--fg-dim);border-bottom:2px solid transparent;font-weight:500;cursor:pointer}
.tabs a.active,.tabs span.active{color:var(--fg);border-bottom-color:var(--accent);font-weight:600}
.tabs a:hover{color:var(--fg);text-decoration:none}

/* ─── Empty state ─── */
.empty{padding:22px 18px;text-align:center;color:var(--fg-mute);font-size:13px;border:1px dashed var(--line);border-radius:8px;background:var(--bg)}
.empty-h{font-weight:600;color:var(--fg-dim);margin:0 0 6px;font-size:12.5px}
.empty-sub{font-size:11.5px;color:var(--fg-mute);margin:0;line-height:1.55}
.empty code{font-size:11px;background:var(--bg-elev);padding:1px 5px;border-radius:3px}

/* ─── Two-column splits ─── */
.split-2{display:grid;grid-template-columns:1.4fr 1fr;gap:14px;align-items:start}
.split-eq{display:grid;grid-template-columns:1fr 1fr;gap:14px;align-items:start}

/* ─── Health bar ─── */
.health{background:var(--bg-card);border:1px solid var(--line);border-radius:10px;padding:14px 18px;display:flex;align-items:center;gap:24px;flex-wrap:wrap;margin-bottom:18px}
.health-item{display:flex;flex-direction:column;font-size:12px;color:var(--fg-dim)}
.health-item .v{font-size:18px;font-weight:700;color:var(--fg);letter-spacing:-.01em}
.health-item .v.demo{color:var(--info)}
.health-item .v.shadow{color:var(--purple)}
.health-item .v.runtime{color:var(--warning)}
.health-item .v.prod{color:var(--success)}
.health-divider{width:1px;height:36px;background:var(--line)}

/* ─── Small icons (inline SVG sized via CSS) ─── */
.ico-12{width:12px;height:12px;vertical-align:-1px}
.dot{display:inline-block;width:7px;height:7px;border-radius:50%;background:var(--success);margin-right:4px}
.dot.shadow{background:var(--purple)}
.dot.demo{background:var(--info)}
.dot.runtime{background:var(--warning)}
.dot.prod{background:var(--success)}

/* ─── Pipeline graph (bot stages) ─── */
.bot-flow{display:grid;grid-template-columns:repeat(5,1fr);gap:8px;margin:12px 0 6px}
.flow-stage{background:var(--bg-card);border:1px solid var(--line);border-radius:8px;padding:10px;position:relative;min-height:96px;display:flex;flex-direction:column}
.flow-stage .stage-label{font-size:10px;text-transform:uppercase;letter-spacing:.06em;font-weight:700;color:var(--fg-mute);margin:0 0 6px}
.flow-stage .stage-bot{font-family:var(--mono);font-size:11.5px;font-weight:600;color:var(--fg);background:var(--bg-elev);border:1px solid var(--line);border-radius:5px;padding:3px 6px;margin-bottom:4px;display:inline-block;width:fit-content;max-width:100%;overflow:hidden;text-overflow:ellipsis}
.flow-stage .stage-empty{font-size:11px;color:var(--fg-mute);font-style:italic;margin-top:auto}
.flow-stage.disc{border-top:3px solid var(--purple)}
.flow-stage.intel{border-top:3px solid var(--warning)}
.flow-stage.strat{border-top:3px solid var(--accent)}
.flow-stage.risk{border-top:3px solid var(--danger)}
.flow-stage.exec{border-top:3px solid var(--info)}

/* ─── Parameter rows for strategy detail ─── */
.param-row{display:grid;grid-template-columns:1fr 200px 80px;gap:14px;padding:10px 0;border-bottom:1px solid var(--line);align-items:center}
.param-row:last-child{border-bottom:none}
.param-row .nm{font-weight:600;font-size:13px}
.param-row .desc{font-size:12px;color:var(--fg-dim);margin-top:2px}
.param-row .val{font-family:var(--mono);font-size:12.5px}
.param-row input{width:100%;padding:5px 9px;border-radius:5px;border:1px solid var(--line-strong);font-family:var(--mono);font-size:12.5px}
.param-row .src{font-size:11px;color:var(--fg-mute);font-family:var(--mono);text-align:right}

/* ─── Market quality / liquidity bars ─── */
.q-bar{display:inline-flex;align-items:center;gap:5px;font-size:11.5px;color:var(--fg-dim);font-variant-numeric:tabular-nums}
.q-bar .bar{position:relative;width:60px;height:5px;background:#f3f4f6;border-radius:3px;overflow:hidden}
.q-bar .bar > span{position:absolute;left:0;top:0;bottom:0;border-radius:3px}
.q-bar.good .bar > span{background:var(--success)}
.q-bar.ok .bar > span{background:var(--warning)}
.q-bar.bad .bar > span{background:var(--danger)}

/* ─── Trade trace timeline (audit) ─── */
.trace-timeline{position:relative;margin:8px 0 0;padding-left:22px}
.trace-timeline::before{content:"";position:absolute;left:9px;top:6px;bottom:6px;width:2px;background:var(--line-strong)}
.trace-step{position:relative;padding:0 0 18px 14px}
.trace-step:last-child{padding-bottom:0}
.trace-step::before{content:"";position:absolute;left:-17px;top:6px;width:12px;height:12px;border-radius:50%;background:var(--bg-card);border:2px solid var(--line-strong);box-shadow:0 0 0 3px var(--bg)}
.trace-step.intel::before{border-color:#6366f1}
.trace-step.disc::before{border-color:#0e7e6e}
.trace-step.strat::before{border-color:#0ea5e9}
.trace-step.risk::before{border-color:#d97706}
.trace-step.exec::before{border-color:#16a34a}
.trace-step.reject::before{border-color:var(--danger);background:var(--danger)}
.trace-step .ts-head{display:flex;align-items:center;gap:10px;flex-wrap:wrap;font-size:12.5px}
.trace-step .ts-head .ts-bot{font-family:var(--mono);font-weight:600}
.trace-step .ts-head .ts-time{color:var(--fg-mute);font-family:var(--mono);font-size:11.5px}
.trace-step .ts-head .ts-stage{font-size:10px;text-transform:uppercase;letter-spacing:.05em;font-weight:700;color:var(--fg-mute)}
.trace-step .ts-body{margin-top:6px;font-size:12.5px;color:var(--fg-dim);line-height:1.55}
.trace-step .ts-env{margin-top:8px;background:var(--bg-elev);border:1px solid var(--line);border-radius:7px;padding:8px 11px;font-family:var(--mono);font-size:11.5px;line-height:1.55;color:var(--fg);overflow-x:auto;white-space:pre}
.trace-meta{display:grid;grid-template-columns:repeat(4,1fr);gap:10px;margin:0 0 12px}
.trace-meta .m{background:var(--bg-elev);border:1px solid var(--line);border-radius:8px;padding:9px 12px}
.trace-meta .m .lbl{font-size:10.5px;text-transform:uppercase;letter-spacing:.05em;color:var(--fg-mute);font-weight:700;margin:0 0 4px}
.trace-meta .m .v{font-family:var(--mono);font-size:12.5px;font-weight:600;color:var(--fg);word-break:break-all}
/* Sticky stage stepper for trade trace */
.tt-stepper{position:sticky;top:0;z-index:5;background:var(--bg-card);border:1px solid var(--line);border-bottom-color:var(--line-strong);border-radius:8px 8px 0 0;padding:9px 12px;margin:6px 0 0;display:flex;align-items:center;gap:6px;flex-wrap:wrap;font-size:11.5px}
.tt-stepper .tt-s{display:inline-flex;align-items:center;gap:6px;padding:5px 9px;border-radius:6px;background:var(--bg-elev);border:1px solid var(--line);color:var(--fg-mute);font-weight:600;cursor:pointer;text-decoration:none}
.tt-stepper .tt-s .tt-dot{width:8px;height:8px;border-radius:50%;background:var(--line-strong);display:inline-block}
.tt-stepper .tt-s.intel .tt-dot{background:#6366f1}.tt-stepper .tt-s.disc .tt-dot{background:#0e7e6e}.tt-stepper .tt-s.strat .tt-dot{background:#0ea5e9}.tt-stepper .tt-s.risk .tt-dot{background:#d97706}.tt-stepper .tt-s.exec .tt-dot{background:#16a34a}
.tt-stepper .tt-s.active{color:var(--fg);background:var(--bg);border-color:var(--accent);box-shadow:0 0 0 1px var(--accent) inset}
.tt-stepper .tt-arrow{color:var(--fg-mute);font-size:11px;margin:0 -1px}
/* JSON syntax highlighting inside pre.code / pre.ts-env */
pre.code .k,pre.ts-env .k{color:#7c3aed}
pre.code .s,pre.ts-env .s{color:#0e7e6e}
pre.code .n,pre.ts-env .n{color:#b45309}
pre.code .b,pre.ts-env .b{color:#c026d3;font-weight:600}
pre.code .nl,pre.ts-env .nl{color:var(--fg-mute)}

/* ─── Chart bars (trading volume) ─── */
.chart-wrap{background:var(--bg-card);border:1px solid var(--line);border-radius:10px;padding:18px 20px;margin-bottom:14px}
.chart-title{font-size:13px;font-weight:600;margin:0 0 4px}
.chart-sub{font-size:12px;color:var(--fg-dim);margin:0 0 16px}
.bar-chart{display:flex;align-items:flex-end;gap:6px;height:120px;padding-bottom:24px;position:relative;border-bottom:1px solid var(--line)}
.bar-chart .bar-col{display:flex;flex-direction:column;align-items:center;gap:3px;flex:1}
.bar-chart .bar-seg{width:100%;border-radius:3px 3px 0 0;transition:opacity .2s}
.bar-chart .bar-label{position:absolute;bottom:4px;font-size:10px;color:var(--fg-mute);white-space:nowrap}
.chart-legend{display:flex;gap:16px;margin-top:10px;flex-wrap:wrap}
.chart-legend .lg{display:flex;align-items:center;gap:5px;font-size:11.5px;color:var(--fg-dim)}
.chart-legend .lg-dot{width:8px;height:8px;border-radius:2px;flex-shrink:0}

/* ─── Signal cards ─── */
.signal-card{background:var(--bg-card);border:1px solid var(--line);border-radius:10px;padding:16px 18px;margin-bottom:12px;border-left:4px solid var(--accent)}
.signal-card.buy{border-left-color:var(--success)}
.signal-card.sell{border-left-color:var(--danger)}
.signal-card .sc-head{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin-bottom:10px}
.signal-card .sc-title{font-weight:700;font-size:14px;color:var(--fg)}
.signal-card .sc-meta{display:grid;grid-template-columns:repeat(auto-fit,minmax(120px,1fr));gap:8px;margin:10px 0}
.signal-card .sc-meta-item .lbl{font-size:10px;text-transform:uppercase;letter-spacing:.05em;color:var(--fg-mute);font-weight:600}
.signal-card .sc-meta-item .val{font-size:15px;font-weight:700;color:var(--fg)}
.signal-card .sc-reasons{margin:10px 0;font-size:12.5px;color:var(--fg-dim);line-height:1.7}
.signal-card .sc-reasons li{margin:0}
.signal-card .sc-actions{display:flex;gap:8px;margin-top:12px}

/* ─── Under construction stub ─── */
.uc-stub{display:flex;flex-direction:column;align-items:center;justify-content:center;min-height:340px;text-align:center;padding:40px}
.uc-stub .uc-icon{font-size:48px;margin-bottom:16px;opacity:.3}
.uc-stub h2{font-size:20px;font-weight:700;margin:0 0 6px;color:var(--fg)}
.uc-stub p{font-size:14px;color:var(--fg-mute);margin:0}
.uc-box{background:var(--bg-card);border:2px dashed var(--line-strong);border-radius:14px;padding:48px 40px;max-width:480px}

/* ─── Attention queue rows ─── */
.aq-row{display:flex;align-items:flex-start;gap:14px;padding:14px 16px;border-bottom:1px solid var(--line);background:var(--bg-card)}
.aq-row:last-child{border-bottom:none}
.aq-row:hover{background:var(--bg-elev)}
.aq-row .sev-bar{width:4px;border-radius:2px;flex-shrink:0;align-self:stretch;min-height:44px}
.aq-row .sev-bar.critical{background:var(--danger)}
.aq-row .sev-bar.high{background:#f97316}
.aq-row .sev-bar.medium{background:#f59e0b}
.aq-row .sev-bar.low{background:#9ca3af}
.aq-row .aq-body{flex:1;min-width:0}
.aq-row .aq-title{font-weight:600;font-size:13.5px;margin:0 0 3px;color:var(--fg)}
.aq-row .aq-meta{font-size:12px;color:var(--fg-mute)}
.aq-row .aq-actions{display:flex;gap:6px;align-items:center;flex-shrink:0}

/* ─── Pie chart (SVG inline) ─── */
.pie-wrap{display:flex;align-items:center;gap:24px;flex-wrap:wrap}
.pie-legend{display:flex;flex-direction:column;gap:8px}
.pie-legend .pl-row{display:flex;align-items:center;gap:8px;font-size:12.5px;color:var(--fg-dim)}
.pie-legend .pl-dot{width:10px;height:10px;border-radius:50%;flex-shrink:0}

/* ─── Incident timeline ─── */
.inc-timeline{border-left:2px solid var(--line-strong);padding-left:18px;margin:14px 0}
.inc-step{position:relative;margin-bottom:18px}
.inc-step::before{content:"";position:absolute;left:-24px;top:5px;width:10px;height:10px;border-radius:50%;background:var(--accent);border:2px solid var(--bg-card)}
.inc-step .inc-time{font-family:var(--mono);font-size:11.5px;color:var(--fg-mute);margin:0 0 3px}
.inc-step .inc-body{font-size:13px;color:var(--fg);line-height:1.5}

/* ─── Mini sparkline SVG ─── */
.sparkline{overflow:visible}

/* ─── Footer ─── */
.foot{padding:20px 28px;color:var(--fg-mute);font-size:11.5px;text-align:center;border-top:1px solid var(--line);background:var(--bg-card)}
.foot a{color:var(--fg-dim)}

/* ─── Heatmap (correlation matrix) ─── */
.heatmap{border-collapse:collapse;font-size:11.5px;font-family:var(--mono);width:100%;table-layout:fixed}
.heatmap th{text-align:center;font-size:10px;font-weight:700;color:var(--fg-mute);padding:6px 4px;background:var(--bg-elev);border:1px solid var(--line);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.heatmap th.row-hdr{text-align:right;font-size:10px;font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.heatmap td{border:1px solid rgba(0,0,0,.06);padding:0;position:relative;height:40px;cursor:default}
.heatmap td:hover::after{content:attr(data-tip);position:absolute;z-index:99;background:#111;color:#fff;font-size:10px;padding:4px 7px;border-radius:5px;white-space:nowrap;bottom:calc(100% + 4px);left:50%;transform:translateX(-50%);pointer-events:none}
.heatmap .cell-val{display:flex;align-items:center;justify-content:center;height:100%;font-size:11px;font-weight:700;color:inherit}
.hm-neg-strong{background:#ef4444;color:#fff}
.hm-neg-med{background:#fca5a5;color:#7f1d1d}
.hm-neutral{background:#f3f4f6;color:#9ca3af}
.hm-pos-med{background:#99f6e4;color:#065f46}
.hm-pos-strong{background:#0e7e6e;color:#fff}
.hm-diag{background:#1a2035;color:#fff}

/* ─── Import workflow steps ─── */
.import-step{background:var(--bg-card);border:1px solid var(--line);border-radius:10px;padding:18px 20px;margin-bottom:14px}
.import-step-hdr{display:flex;align-items:center;gap:10px;margin-bottom:12px}
.import-step-num{width:26px;height:26px;border-radius:50%;background:var(--accent);color:#fff;font-size:12px;font-weight:700;display:flex;align-items:center;justify-content:center;flex-shrink:0}
.import-step-num.done{background:var(--success)}
.import-step-title{font-size:15px;font-weight:600}
.import-step-sub{font-size:12.5px;color:var(--fg-dim);margin:0 0 10px}
.import-tabs{display:flex;gap:0;border-bottom:1px solid var(--line);margin-bottom:12px}
.import-tabs .it{padding:7px 14px;font-size:12.5px;font-weight:500;color:var(--fg-dim);cursor:pointer;border-bottom:2px solid transparent}
.import-tabs .it.active{color:var(--fg);border-bottom-color:var(--accent)}
.import-textarea{width:100%;min-height:84px;padding:9px 12px;border:1px solid var(--line-strong);border-radius:6px;font-family:var(--mono);font-size:12px;background:var(--bg-code);color:var(--fg);resize:vertical;box-sizing:border-box}

/* ─── Duplicate warning ─── */
.dup-warn{display:flex;align-items:flex-start;gap:8px;background:var(--warning-soft);border:1px solid #fde68a;border-left:3px solid #d97706;border-radius:6px;padding:8px 12px;font-size:12.5px;color:#78350f;margin:6px 0}
.dup-warn b{color:#7c2d12}

/* ─── Cluster chip colors ─── */
.cl-chip{display:inline-flex;align-items:center;padding:2px 9px;border-radius:999px;font-size:11px;font-weight:700;letter-spacing:.02em;white-space:nowrap}
.cl-US_ELECT_2028_A{background:#dbeafe;color:#1e40af;border:1px solid #bfdbfe}
.cl-CRYPTO_Q2{background:#ffedd5;color:#9a3412;border:1px solid #fed7aa}
.cl-SPORTS_NBA{background:#dcfce7;color:#166534;border:1px solid #bbf7d0}
.cl-FED_RATES{background:#ede9fe;color:#5b21b6;border:1px solid #ddd6fe}
.cl-AI_FRONTIER{background:#fce7f3;color:#9d174d;border:1px solid #fbcfe8}

/* ─── Import audit timeline ─── */
.imp-timeline{padding-left:20px;border-left:2px solid var(--line-strong);margin:10px 0}
.imp-event{position:relative;margin-bottom:14px;padding-left:12px}
.imp-event::before{content:"";position:absolute;left:-17px;top:5px;width:10px;height:10px;border-radius:50%;background:var(--accent);border:2px solid var(--bg-card)}
.imp-event.warn::before{background:var(--warning)}
.imp-event.fail::before{background:var(--danger)}
.imp-event .ie-time{font-family:var(--mono);font-size:11px;color:var(--fg-mute)}
.imp-event .ie-body{font-size:12.5px;color:var(--fg)}

/* ─── Confidence bar ─── */
.conf-bar{display:inline-flex;align-items:center;gap:5px;font-size:11.5px;font-variant-numeric:tabular-nums}
.conf-bar .bar{position:relative;width:64px;height:5px;background:#f3f4f6;border-radius:3px;overflow:hidden}
.conf-bar .bar>span{position:absolute;left:0;top:0;bottom:0;background:var(--accent);border-radius:3px}

/* ─── Pass A: Purpose strip ─── */
.purpose-wrap{margin-bottom:14px}
.purpose-wrap[open]{margin-bottom:16px}
.purpose-summary{display:flex;align-items:center;gap:10px;list-style:none;cursor:pointer;background:#f0fdfa;border-left:4px solid #0e7e6e;border-radius:0 6px 6px 0;padding:7px 12px;font-size:12.5px;user-select:none}
.purpose-summary::-webkit-details-marker{display:none}
.purpose-summary:hover{background:#dcfaf3}
.purpose-summary .ps-summary-text{color:#064e3b;flex:1 1 auto;font-weight:500;line-height:1.4}
.purpose-summary .ps-summary-when{font-size:11.5px;color:#065f46;opacity:.78;flex:0 1 auto;line-height:1.4}
.purpose-summary .ps-summary-lbl{font-weight:600;text-transform:uppercase;letter-spacing:.04em;font-size:10px;margin-right:2px}
.purpose-summary .ps-chev{color:#0e7e6e;font-size:11px;transition:transform .15s ease;flex-shrink:0}
.purpose-summary .ps-hint{font-size:10.5px;color:#0e7e6e;font-weight:600;text-transform:uppercase;letter-spacing:.05em;opacity:.7}
.purpose-wrap[open] .ps-chev{transform:rotate(180deg)}
.purpose-wrap[open] .purpose-summary{border-radius:0 6px 0 0;border-bottom:1px solid rgba(14,126,110,.22)}
.purpose-wrap[open] .ps-summary-text,.purpose-wrap[open] .ps-summary-when{display:none}
@media(max-width:760px){.purpose-summary .ps-summary-when{display:none}.purpose-summary .ps-hint{display:none}}
.purpose-wrap .purpose-strip{margin-bottom:0;border-radius:0 0 6px 0;border-top:none}
.purpose-strip{display:grid;grid-template-columns:1fr 1fr 1fr auto;gap:12px 16px;align-items:start;background:#f0fdfa;border-left:4px solid #0e7e6e;border-radius:0 8px 8px 0;padding:12px 16px;margin-bottom:16px;font-size:12.5px}
@media(max-width:900px){.purpose-strip{grid-template-columns:1fr}}
.ps-item{display:flex;flex-direction:column;gap:3px}
.ps-label{font-size:10px;font-weight:700;text-transform:uppercase;letter-spacing:.06em;color:#065f46;opacity:.8}
.ps-value{color:#064e3b;line-height:1.45}
.ps-role{display:inline-flex;align-items:center;gap:5px;padding:3px 10px;border-radius:999px;font-size:11.5px;font-weight:600;background:#0e7e6e;color:#fff;white-space:nowrap;align-self:flex-start}
.ps-help{display:inline-flex;align-items:center;justify-content:center;width:18px;height:18px;border-radius:50%;background:#a7e0d4;color:#065f46;font-size:10px;font-weight:700;cursor:pointer;border:none;flex-shrink:0;position:relative}
.ps-help:hover .ps-tooltip{display:block}
.ps-tooltip{display:none;position:absolute;z-index:200;bottom:calc(100% + 6px);right:0;width:260px;background:#111827;color:#f9fafb;font-size:12px;line-height:1.55;padding:10px 12px;border-radius:8px;font-weight:400;pointer-events:none;box-shadow:0 4px 16px rgba(0,0,0,.3)}
.ps-tooltip::after{content:"";position:absolute;bottom:-5px;right:6px;width:10px;height:10px;background:#111827;clip-path:polygon(0 0,100% 0,50% 100%)}

/* ─── Quick / Full column density toggle (Trader Home blotter, Signals Radar, Strategies) ─── */
.pt-dens{display:inline-flex;align-items:stretch;border:1px solid var(--line);border-radius:6px;overflow:hidden;background:var(--bg-card);font-size:11.5px;line-height:1;user-select:none;margin-left:4px;height:28px}
.pt-dens-lbl{padding:0 8px;font-size:10px;font-weight:700;text-transform:uppercase;letter-spacing:.05em;color:var(--fg-mute);border-right:1px solid var(--line);display:flex;align-items:center;background:var(--bg-elev)}
.pt-dens button{appearance:none;border:none;background:transparent;padding:0 10px;font-size:11.5px;font-weight:600;color:var(--fg-dim);cursor:pointer;font-family:inherit;line-height:1}
.pt-dens button.on{background:var(--accent);color:#fff}
.pt-dens button:not(.on):hover{background:var(--bg-elev);color:var(--fg)}
.pt-dens button + button{border-left:1px solid var(--line)}
/* Hide "full-only" columns when table is in quick mode. Reason codes never carry .col-full */
table[data-density="quick"] th.col-full,
table[data-density="quick"] td.col-full{display:none}

/* ─── Promoted purpose headline (always-visible intent line under H1) ─── */
.purpose-headline{display:flex;align-items:center;gap:10px;flex-wrap:wrap;background:#f0fdfa;border-left:4px solid #0e7e6e;border-radius:0 6px 6px 0;padding:9px 14px;margin:0 0 14px;font-size:13px;line-height:1.45}
.purpose-headline .ph-role{display:inline-flex;align-items:center;padding:3px 10px;border-radius:999px;font-size:11px;font-weight:700;background:#0e7e6e;color:#fff;text-transform:uppercase;letter-spacing:.04em;flex-shrink:0;white-space:nowrap}
.purpose-headline .ph-intent{color:#064e3b;font-weight:600;flex:1 1 320px;min-width:0}
.purpose-headline .ph-when{font-size:11.5px;color:#065f46;opacity:.82;flex:0 1 auto;line-height:1.4;font-weight:500}
.purpose-headline .ph-when-lbl{font-weight:700;text-transform:uppercase;letter-spacing:.05em;font-size:10px;margin-right:3px;opacity:.85}
.purpose-headline .ph-more{flex-shrink:0;margin-left:auto}
.purpose-headline .ph-more-sum{list-style:none;cursor:pointer;font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.05em;color:#0e7e6e;padding:3px 8px;border:1px solid rgba(14,126,110,.3);border-radius:5px;user-select:none;background:#fff}
.purpose-headline .ph-more-sum::-webkit-details-marker{display:none}
.purpose-headline .ph-more-sum:hover{background:#dcfaf3;border-color:#0e7e6e}
.purpose-headline .ph-more[open]{flex:1 1 100%;margin-left:0}
.purpose-headline .ph-more[open] .ph-more-sum{margin-bottom:8px}
.purpose-headline .ph-more .purpose-strip{margin:0;border-radius:6px;border-left:none;background:#e7f8f3;padding:10px 12px}
@media(max-width:760px){.purpose-headline .ph-when{flex-basis:100%;order:3}.purpose-headline .ph-more{margin-left:0}}

/* ─── Pass A: Configure drawer ─── */
.cfg-backdrop{display:none;position:fixed;inset:0;background:rgba(0,0,0,.35);z-index:1000}
.cfg-backdrop.open{display:block}
.cfg-drawer{position:fixed;top:0;right:-62%;width:60%;max-width:720px;height:100vh;background:var(--bg-card);border-left:1px solid var(--line);z-index:1001;display:flex;flex-direction:column;transition:right .25s cubic-bezier(.4,0,.2,1);overflow:hidden}
.cfg-drawer.open{right:0}
@media(max-width:700px){.cfg-drawer{width:100%;right:-100%;max-width:none}}
.cfg-drawer-header{display:flex;align-items:center;justify-content:space-between;padding:16px 20px;border-bottom:1px solid var(--line);flex-shrink:0;background:var(--bg-elev)}
.cfg-drawer-title{font-size:15px;font-weight:700;color:var(--fg)}
.cfg-drawer-sub{font-size:12px;color:var(--fg-dim);margin-top:2px}
.cfg-close{background:none;border:1px solid var(--line);border-radius:6px;padding:4px 10px;font-size:12px;cursor:pointer;color:var(--fg-dim)}
.cfg-body{flex:1;overflow-y:auto;padding:16px 20px}
.cfg-section{margin-bottom:18px}
.cfg-section-hdr{display:flex;align-items:center;justify-content:space-between;cursor:pointer;padding:8px 0 6px;border-bottom:1px solid var(--line);margin-bottom:10px;user-select:none}
.cfg-section-title{font-size:12.5px;font-weight:700;color:var(--fg);text-transform:uppercase;letter-spacing:.05em}
.cfg-section-chev{font-size:10px;color:var(--fg-mute);transition:transform .15s}
.cfg-section[open] .cfg-section-chev{transform:rotate(180deg)}
.cfg-check-row{display:flex;align-items:center;gap:8px;padding:5px 0;font-size:13px;color:var(--fg-dim)}
.cfg-check-row input[type=checkbox]{accent-color:var(--accent);width:14px;height:14px}
.cfg-input-row{margin-bottom:10px}
.cfg-input-row label{display:block;font-size:12px;font-weight:500;color:var(--fg-dim);margin-bottom:3px}
.cfg-input-row input[type=text],.cfg-input-row input[type=number],.cfg-input-row select{width:100%;padding:7px 10px;border:1px solid var(--line-strong);border-radius:6px;font-family:inherit;font-size:13px;background:var(--bg-elev)}
.cfg-footer{padding:14px 20px;border-top:1px solid var(--line);display:flex;gap:8px;flex-shrink:0;background:var(--bg-elev)}
.cfg-no-config{padding:20px;text-align:center;color:var(--fg-mute);font-size:13px}

/* ─── Pass A: Command palette ─── */
.palette-backdrop{display:none;position:fixed;inset:0;background:rgba(0,0,0,.45);z-index:2000}
.palette-backdrop.open{display:flex;align-items:flex-start;justify-content:center;padding-top:12vh}
.palette-box{background:var(--bg-card);border:1px solid var(--line-strong);border-radius:12px;width:min(620px,92vw);box-shadow:0 20px 60px rgba(0,0,0,.25);display:flex;flex-direction:column;overflow:hidden}
.palette-input-wrap{display:flex;align-items:center;gap:10px;padding:14px 16px;border-bottom:1px solid var(--line)}
.palette-search-ico{color:var(--fg-mute);flex-shrink:0}
.palette-input{flex:1;border:none;outline:none;font-size:15px;font-family:inherit;background:transparent;color:var(--fg)}
.palette-input::placeholder{color:var(--fg-mute)}
.palette-list{max-height:360px;overflow-y:auto}
.palette-empty{padding:24px;text-align:center;color:var(--fg-mute);font-size:13px}
.palette-result{display:flex;align-items:center;gap:10px;padding:10px 16px;cursor:pointer;border-bottom:1px solid var(--line)}
.palette-result:last-child{border-bottom:none}
.palette-result.active,.palette-result:hover{background:var(--accent-soft)}
.palette-result .pr-label{font-size:13.5px;font-weight:500;color:var(--fg);flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.palette-result .pr-sub{font-size:11.5px;color:var(--fg-mute);font-family:var(--mono);min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:180px}
.palette-cat{font-size:10.5px;font-weight:700;padding:2px 7px;border-radius:999px;white-space:nowrap;flex-shrink:0}
.palette-cat.page{background:var(--accent-soft);color:var(--accent-strong)}
.palette-cat.bot{background:var(--warning-soft);color:var(--warning)}
.palette-cat.market{background:var(--info-soft);color:var(--info)}
.palette-cat.strategy{background:var(--purple-soft);color:var(--purple)}
.palette-cat.action{background:#111827;color:#fff}
.palette-cat.rc{background:var(--danger-soft);color:var(--danger)}
.palette-footer{padding:8px 14px;border-top:1px solid var(--line);display:flex;gap:14px;font-size:11.5px;color:var(--fg-mute);background:var(--bg-elev)}
.palette-hint{display:inline-flex;align-items:center;gap:4px}
.palette-hint kbd{background:var(--bg-card);border:1px solid var(--line-strong);border-radius:4px;padding:1px 5px;font-family:var(--mono);font-size:10.5px;color:var(--fg-dim)}
.cmdK-chip{display:inline-flex;align-items:center;gap:5px;padding:3px 9px;border-radius:6px;background:var(--bg-elev);border:1px solid var(--line);font-size:11.5px;color:var(--fg-dim);cursor:pointer;font-family:var(--mono)}
.cmdK-chip:hover{background:var(--line);text-decoration:none}

/* ─── Pass A: Bulk-select bar ─── */
.bulk-bar{display:none;position:sticky;top:0;z-index:100;background:#111827;color:#fff;padding:10px 16px;align-items:center;gap:12px;border-radius:8px;margin-bottom:8px;flex-wrap:wrap}
.bulk-bar.visible{display:flex}
.bulk-bar .bulk-count{font-size:13px;font-weight:600;flex:1}
.bulk-bar .bulk-action{padding:5px 12px;border-radius:6px;background:rgba(255,255,255,.12);border:1px solid rgba(255,255,255,.2);color:#fff;font-size:12.5px;cursor:pointer;font-family:inherit}
.bulk-bar .bulk-action:hover{background:rgba(255,255,255,.22)}
.bulk-bar .bulk-cancel{background:none;border:none;color:rgba(255,255,255,.6);font-size:12.5px;cursor:pointer;margin-left:auto}

/* ─── Pass A: Toast notifications ─── */
.toast-root{position:fixed;bottom:20px;right:20px;z-index:3000;display:flex;flex-direction:column;gap:8px;pointer-events:none}
.toast{display:flex;align-items:center;gap:10px;background:#111827;color:#fff;padding:10px 16px;border-radius:8px;font-size:13px;box-shadow:0 4px 16px rgba(0,0,0,.25);pointer-events:auto;animation:toastIn .2s ease;max-width:340px}
.toast.success{border-left:3px solid var(--success)}
.toast.info{border-left:3px solid var(--accent)}
.toast.warn{border-left:3px solid var(--warning)}
@keyframes toastIn{from{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}

/* ─── Pass A: Background hygiene strip ─── */
.bg-hygiene-strip{background:var(--bg-card);border:1px solid var(--line);border-radius:10px;padding:14px 18px;margin-bottom:16px}
.bgh-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:12px}
.bgh-title{font-size:13px;font-weight:700;color:var(--fg)}
.bgh-sub{font-size:11.5px;color:var(--fg-dim)}
.bgh-bots{display:flex;gap:8px;flex-wrap:wrap}
.hygiene-bot{display:inline-flex;align-items:center;gap:6px;padding:5px 10px;border-radius:8px;background:var(--bg-elev);border:1px solid var(--line);font-size:12px;text-decoration:none}
.hygiene-bot:hover{background:#e5e7eb;text-decoration:none}
.hygiene-bot .hb-name{font-family:var(--mono);font-size:11.5px;font-weight:600;color:var(--fg)}
.hygiene-bot .hb-status{font-size:11px;font-weight:600}
.hygiene-bot .hb-status.ok{color:var(--success)}
.hygiene-bot .hb-status.warn{color:var(--warning)}
.hygiene-bot .hb-status.paused{color:var(--fg-mute)}
.hygiene-bot .hb-dot{width:7px;height:7px;border-radius:50%;flex-shrink:0}
.hygiene-bot .hb-dot.ok{background:var(--success)}
.hygiene-bot .hb-dot.warn{background:var(--warning)}
.hygiene-bot .hb-dot.paused{background:var(--fg-mute)}

/* ─── Pass A: Settings pages ─── */
.settings-section{background:var(--bg-card);border:1px solid var(--line);border-radius:10px;margin-bottom:16px;overflow:hidden}
.settings-section-hdr{padding:14px 18px;border-bottom:1px solid var(--line);background:var(--bg-elev)}
.settings-section-hdr h3{margin:0 0 2px;font-size:14px;font-weight:600}
.settings-section-hdr p{margin:0;font-size:12.5px;color:var(--fg-dim)}
.settings-body{padding:16px 18px}
.team-row{display:flex;align-items:center;gap:12px;padding:10px 0;border-bottom:1px solid var(--line)}
.team-row:last-child{border-bottom:none}
.team-avatar{width:32px;height:32px;border-radius:50%;background:var(--accent-soft);color:var(--accent-strong);display:flex;align-items:center;justify-content:center;font-weight:700;font-size:12px;flex-shrink:0}
.team-info{flex:1}
.team-name{font-size:13.5px;font-weight:600;color:var(--fg)}
.team-email{font-size:12px;color:var(--fg-mute)}
.notif-rule-row{display:flex;align-items:flex-start;gap:12px;padding:10px 0;border-bottom:1px solid var(--line)}
.notif-rule-row:last-child{border-bottom:none}
.notif-rule-body{flex:1}
.notif-rule-title{font-size:13px;font-weight:500;color:var(--fg)}
.notif-rule-meta{font-size:12px;color:var(--fg-mute);margin-top:2px}
.audit-row{display:flex;align-items:flex-start;gap:10px;padding:9px 0;border-bottom:1px solid var(--line);font-size:12.5px}
.audit-row:last-child{border-bottom:none}
.audit-row .at-time{font-family:var(--mono);font-size:11.5px;color:var(--fg-mute);white-space:nowrap;flex-shrink:0;min-width:130px}
.audit-row .at-actor{font-weight:600;color:var(--fg);white-space:nowrap;flex-shrink:0;min-width:70px}
.audit-row .at-action{color:var(--fg-dim);flex:1}
.api-key-row{display:flex;align-items:center;gap:10px;padding:10px 0;border-bottom:1px solid var(--line);font-size:13px}
.api-key-row:last-child{border-bottom:none}
.api-key-row .ak-label{font-weight:500;flex:1}
.api-key-row .ak-val{font-family:var(--mono);font-size:11.5px;background:var(--bg-code);border:1px solid var(--line);border-radius:4px;padding:2px 7px;color:var(--fg-dim)}
/* ─── Tour overlay ─── */
.tour-overlay{position:fixed;inset:0;background:rgba(15,23,42,.55);z-index:9999;}
.tour-card{position:fixed;background:#fff;border-radius:10px;box-shadow:0 20px 50px rgba(0,0,0,.3);padding:18px 20px;max-width:340px;z-index:10000;}
.tour-card h4{margin:0 0 6px;font-size:14.5px;}
.tour-card p{margin:0 0 12px;font-size:12.5px;line-height:1.5;color:#475569;}
.tour-card .actions{display:flex;justify-content:space-between;align-items:center;}
.tour-progress{font-size:11px;color:#94a3b8;}
.tour-card .btn{font-size:12px;padding:6px 12px;}
.tour-spotlight{position:fixed;border-radius:8px;box-shadow:0 0 0 9999px rgba(15,23,42,.55),0 0 0 3px #14b8a6;transition:all .25s ease;z-index:9999;pointer-events:none;}
/* ─── Help menu ─── */
.help-menu-wrap{position:relative;display:inline-block;}
.help-btn{display:inline-flex;align-items:center;justify-content:center;width:26px;height:26px;border-radius:50%;background:var(--bg-elev);border:1px solid var(--line);font-size:12px;font-weight:700;color:var(--fg-dim);cursor:pointer;}
.help-btn:hover{background:var(--line);}
.help-dropdown{display:none;position:absolute;right:0;top:30px;background:#fff;border:1px solid var(--line);border-radius:8px;box-shadow:0 8px 24px rgba(0,0,0,.12);min-width:180px;z-index:500;}
.help-dropdown.open{display:block;}
.help-dropdown a,.help-dropdown button{display:block;width:100%;padding:9px 14px;font-size:12.5px;color:var(--fg);text-align:left;background:none;border:none;cursor:pointer;text-decoration:none;border-bottom:1px solid var(--line);}
.help-dropdown a:last-child,.help-dropdown button:last-child{border-bottom:none;}
.help-dropdown a:hover,.help-dropdown button:hover{background:var(--bg-elev);}

/* ─── Mobile fixes (late-order overrides) ─── */
@media(max-width:900px){
  /* Topbar: force-hide secondary elements */
  .topbar .user .wallet-tag,
  .topbar .user .notif,
  .topbar .user .help-menu-wrap,
  .topbar .user > span:last-of-type{display:none !important}
  /* Collapse any two/three-column inline grids on the content area */
  .content [style*="grid-template-columns"]{grid-template-columns:minmax(0,1fr) !important}
  /* But preserve KPI/auto-fit grids that fit naturally with 2 columns */
  .content .kpi-row{grid-template-columns:repeat(2,minmax(0,1fr)) !important}
  /* Inline charts: allow horizontal scroll inside their card */
  .chart-wrap{overflow-x:auto;-webkit-overflow-scrolling:touch}
  .bar-chart{min-width:340px}
  /* Inline tables inside .card need scroll */
  .card{overflow-x:auto;-webkit-overflow-scrolling:touch}
  .card > .tbl{min-width:0}
  /* Long monospace strings (hashes, builderCodes) must wrap */
  .mono,.rc,.botchip,code{word-break:break-all}
  /* Purpose-strip on mobile already 1col, just tighten */
  .purpose-strip{padding:10px 12px;font-size:12px}
  /* Buttons in actions row spread evenly */
  .page-h .actions .btn{flex:1;justify-content:center}
  /* Foot links: each on its own line */
  .foot{text-align:center}
  /* Help-show-tour: hide on mobile */
  #help-show-tour{display:none}
  /* aq-row stack so action sits below text */
  .aq-row{flex-wrap:wrap;gap:8px;padding:12px}
  .aq-row .aq-body{flex:1 1 100%;min-width:0;word-break:break-word}
  .aq-row .aq-title,.aq-row .aq-meta{word-break:break-word;overflow-wrap:anywhere}
  .aq-row .aq-actions{margin-left:auto}
  /* Pipeline-row was a wide flex, allow scroll */
  .pipeline-row{min-width:540px}
  /* Prevent off-screen fixed drawers from creating horizontal scroll */
  body{overflow-x:hidden}
  .cfg-drawer{max-width:100vw}
}
@media(max-width:600px){
  /* Mock banner: single tight row */
  .mock-banner{font-size:10.5px;padding:4px 8px}
  .mock-banner b{font-size:10.5px}
  /* Crumbs: truncate to last segment only */
  .topbar .crumbs a{display:none}
  .topbar .crumbs .sep{display:none}
}

/* ─── Pass B: UC mockup banner ─── */
.uc-coming-banner{background:#f0fdfa;border:1px solid #a7e0d4;border-left:4px solid #0e7e6e;border-radius:8px;padding:12px 16px;margin-bottom:16px;display:flex;align-items:flex-start;gap:12px}
.uc-coming-banner .ucb-ico{font-size:20px;flex-shrink:0;margin-top:1px}
.uc-coming-banner .ucb-body h4{margin:0 0 3px;font-size:14px;font-weight:700;color:#065f46}
.uc-coming-banner .ucb-body p{margin:0;font-size:12.5px;color:#047857;line-height:1.5}

/* ─── Pass B: Wizard ─── */
.wizard-shell{display:grid;grid-template-columns:200px 1fr;gap:0;min-height:500px;background:var(--bg-card);border:1px solid var(--line);border-radius:10px;overflow:hidden;margin-bottom:16px}
.wizard-steps{background:var(--bg-elev);border-right:1px solid var(--line);padding:20px 0}
.wizard-step{display:flex;align-items:center;gap:10px;padding:10px 16px;font-size:13px;color:var(--fg-dim);cursor:pointer;border-left:3px solid transparent}
.wizard-step.active{color:var(--accent-strong);font-weight:600;border-left-color:var(--accent);background:var(--accent-soft)}
.wizard-step.done{color:var(--success);border-left-color:var(--success)}
.wizard-step .ws-num{width:22px;height:22px;border-radius:50%;background:var(--line);color:var(--fg-dim);font-size:11px;font-weight:700;display:flex;align-items:center;justify-content:center;flex-shrink:0}
.wizard-step.active .ws-num{background:var(--accent);color:#fff}
.wizard-step.done .ws-num{background:var(--success);color:#fff}
.wizard-body{padding:24px 28px}
.wizard-pane{display:none}
.wizard-pane.active{display:block}
.wizard-footer{display:flex;gap:10px;align-items:center;padding-top:16px;border-top:1px solid var(--line);margin-top:20px}

/* ─── Pass B: Heatmap exposure ─── */
.exp-matrix{width:100%;border-collapse:collapse;font-size:12px}
.exp-matrix th{text-align:center;font-size:10px;font-weight:700;color:var(--fg-mute);text-transform:uppercase;letter-spacing:.05em;padding:6px 8px;border:1px solid var(--line);background:var(--bg-elev)}
.exp-matrix th.row-hdr{text-align:right;min-width:110px}
.exp-matrix td{border:1px solid var(--line);padding:6px 8px;text-align:center;font-variant-numeric:tabular-nums}
.exp-heat-low{background:#dcfce7;color:#166534}
.exp-heat-med{background:#fef3c7;color:#78350f}
.exp-heat-high{background:#fee2e2;color:#991b1b}

/* ─── Pass B: Kill-switch grid ─── */
.ks-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:12px;margin-bottom:14px}
.ks-card{background:var(--bg-card);border:1px solid var(--line);border-radius:8px;padding:14px 16px;display:flex;flex-direction:column;gap:8px}
.ks-card.armed{border-color:var(--danger);background:var(--danger-soft)}
.ks-card-name{font-size:13px;font-weight:600;color:var(--fg)}
.ks-card-meta{font-size:11.5px;color:var(--fg-mute)}
.ks-toggle{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-top:2px}
.ks-toggle label{font-size:12px;color:var(--fg-dim)}
.ks-toggle input[type=checkbox]{width:32px;height:18px;accent-color:var(--danger);cursor:pointer}

/* ─── Pass B: Bot config panel ─── */
.bot-cfg-panel{background:var(--bg-card);border:1px solid var(--line);border-radius:10px;padding:18px 20px;margin-bottom:14px;position:relative}
.bot-cfg-panel.frozen-overlay::after{content:"Bot frozen — configuration locked until promotion to demo-wired";position:absolute;inset:0;background:rgba(249,250,251,.88);border-radius:10px;display:flex;align-items:center;justify-content:center;font-size:13px;font-weight:600;color:var(--fg-mute);text-align:center;padding:20px;pointer-events:none}
.bot-cfg-panel.frozen-overlay{overflow:hidden}
.cfg-grid-2{display:grid;grid-template-columns:1fr 1fr;gap:14px}
.cfg-grid-3{display:grid;grid-template-columns:1fr 1fr 1fr;gap:14px}
.cfg-field{margin-bottom:12px}
.cfg-field label{display:block;font-size:12px;font-weight:600;color:var(--fg-dim);margin-bottom:4px;text-transform:uppercase;letter-spacing:.04em}
.cfg-field input[type=text],.cfg-field input[type=number],.cfg-field select,.cfg-field textarea{width:100%;padding:7px 10px;border:1px solid var(--line-strong);border-radius:6px;font-family:inherit;font-size:13px;background:var(--bg-card);color:var(--fg)}
.cfg-field input[type=range]{width:100%;accent-color:var(--accent)}
.cfg-field .range-val{font-family:var(--mono);font-size:12px;color:var(--accent-strong);font-weight:600;margin-left:6px}
.cfg-field .hint{font-size:11.5px;color:var(--fg-mute);margin-top:3px}
.cfg-toggle-row{display:flex;align-items:center;gap:10px;padding:5px 0}
.cfg-toggle-row input[type=checkbox]{accent-color:var(--accent);width:15px;height:15px}
.cfg-toggle-row label{font-size:13px;color:var(--fg-dim)}
.cfg-footnote{font-size:11.5px;color:var(--fg-mute);margin-top:10px;font-style:italic}
.cfg-save-row{display:flex;gap:8px;align-items:center;margin-top:14px;padding-top:12px;border-top:1px solid var(--line)}

/* ─── Pass B: Data probe cards ─── */
.probe-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:12px;margin-bottom:14px}
.probe-card{background:var(--bg-card);border:1px solid var(--line);border-radius:8px;padding:14px 16px}
.probe-card.ok{border-top:3px solid var(--success)}
.probe-card.warn{border-top:3px solid var(--warning)}
.probe-card.err{border-top:3px solid var(--danger)}
.probe-name{font-size:13px;font-weight:600;color:var(--fg);margin-bottom:4px}
.probe-stats{display:flex;gap:14px;flex-wrap:wrap;margin:6px 0;font-size:12px;color:var(--fg-dim)}
.probe-stats .ps-val{font-weight:700;color:var(--fg);font-variant-numeric:tabular-nums}
.probe-action{margin-top:8px}

/* ─── Pass B: RC routing table ─── */
.rc-routing{width:100%;border-collapse:collapse;font-size:12.5px}
.rc-routing th{text-align:left;font-size:10.5px;font-weight:700;text-transform:uppercase;letter-spacing:.05em;color:var(--fg-mute);padding:8px 10px;border-bottom:1px solid var(--line);background:var(--bg-card)}
.rc-routing td{padding:8px 10px;border-bottom:1px solid var(--line);vertical-align:middle}
.rc-routing tr:last-child td{border-bottom:none}
.rc-routing tr:hover td{background:var(--bg-elev)}

/* ─── Pass B: Per-cluster/strategy editable table ─── */
.editable-tbl{width:100%;border-collapse:collapse;font-size:12.5px}
.editable-tbl th{text-align:left;font-size:10.5px;font-weight:700;text-transform:uppercase;letter-spacing:.05em;color:var(--fg-mute);padding:8px 10px;border-bottom:1px solid var(--line);background:var(--bg-card)}
.editable-tbl td{padding:6px 10px;border-bottom:1px solid var(--line);vertical-align:middle}
.editable-tbl input[type=number],.editable-tbl input[type=text]{width:90px;padding:4px 7px;border:1px solid var(--line-strong);border-radius:5px;font-family:var(--mono);font-size:12px;background:var(--bg-card)}

/* ─── Pass B: Strategy config accordion ─── */
.strat-cfg-accordion{background:var(--bg-card);border:1px solid var(--line);border-radius:10px;overflow:hidden;margin-bottom:14px}
.strat-cfg-summary{display:flex;align-items:center;gap:10px;padding:13px 18px;cursor:pointer;user-select:none;list-style:none;background:var(--bg-elev);border-bottom:1px solid var(--line)}
.strat-cfg-summary::-webkit-details-marker{display:none}
.strat-cfg-summary .scs-title{font-size:14px;font-weight:600;color:var(--fg);flex:1}
.strat-cfg-body{padding:16px 18px}

/* ─── Pass B: Suppression rule row ─── */
.supp-rule{display:flex;align-items:flex-start;gap:12px;padding:12px 16px;border-bottom:1px solid var(--line);background:var(--bg-card)}
.supp-rule:last-child{border-bottom:none}
.supp-rule:hover{background:var(--bg-elev)}
.supp-rule-body{flex:1}
.supp-rule-title{font-weight:600;font-size:13px;color:var(--fg);margin:0 0 3px}
.supp-rule-meta{font-size:11.5px;color:var(--fg-mute)}
.supp-rule-actions{display:flex;gap:6px;flex-shrink:0}

/* ─── Pass B: heartbeat probe row ─── */
.hb-probe-row{display:grid;grid-template-columns:180px 120px 1fr 80px 90px;gap:10px;align-items:center;padding:10px 14px;border-bottom:1px solid var(--line)}
.hb-probe-row:last-child{border-bottom:none}
.hb-probe-row:hover{background:var(--bg-elev)}
.hb-mini-chart{display:flex;align-items:flex-end;gap:2px;height:28px}
.hb-mini-chart .bar{width:6px;border-radius:2px 2px 0 0;background:var(--accent);opacity:.7}
.hb-mini-chart .bar.hi{background:var(--warning)}
.hb-mini-chart .bar.err{background:var(--danger)}

/* ─── Pack 4: promotion ladder ─── */
.promo-card{background:var(--bg-card);border:1px solid var(--line);border-radius:10px;padding:18px 20px;margin-bottom:14px}
.promo-card-hdr{display:flex;align-items:center;gap:12px;margin-bottom:12px}
.promo-card-name{font-size:14px;font-weight:700;color:var(--fg);flex:1}
.promo-stepper{display:flex;align-items:center;gap:0;margin-bottom:14px}
.promo-step-dot{width:22px;height:22px;border-radius:50%;border:2px solid var(--line);background:#fff;display:flex;align-items:center;justify-content:center;font-size:10px;font-weight:700;flex-shrink:0;z-index:1}
.promo-step-dot.done{background:#16a34a;border-color:#16a34a;color:#fff}
.promo-step-dot.current{background:#14b8a6;border-color:#14b8a6;color:#fff}
.promo-step-line{flex:1;height:2px;background:var(--line)}
.promo-step-line.done{background:#16a34a}
.promo-stage{border:1px solid var(--line);border-radius:8px;overflow:hidden;margin-bottom:8px}
.promo-stage summary{padding:10px 14px;font-size:13px;font-weight:600;color:var(--fg);cursor:pointer;user-select:none;background:var(--bg-elev);list-style:none;display:flex;align-items:center;justify-content:space-between}
.promo-stage summary::-webkit-details-marker{display:none}
.promo-stage summary::after{content:'▾';font-size:11px;color:var(--fg-mute)}
.promo-stage[open] summary::after{content:'▴'}
.promo-stage-body{padding:12px 14px}
.promo-check-row{display:flex;align-items:flex-start;gap:8px;padding:5px 0;font-size:12.5px;color:var(--fg-dim)}
.promo-check-row .pck-mark{width:16px;height:16px;border-radius:3px;border:2px solid var(--line);flex-shrink:0;display:flex;align-items:center;justify-content:center;font-size:10px;margin-top:1px}
.promo-check-row.checked .pck-mark{background:#16a34a;border-color:#16a34a;color:#fff}
.promo-check-row .pck-reason{font-size:11px;color:var(--danger);margin-left:4px;font-style:italic}
.stage-legend{display:flex;gap:0;border-radius:8px;overflow:hidden;margin-bottom:18px;border:1px solid var(--line)}
.stage-legend-chunk{flex:1;padding:10px 14px;font-size:12px;font-weight:600;text-align:center;color:#fff}
.stage-legend-chunk.demo-chunk{background:#0ea5e9}
.stage-legend-chunk.shadow-chunk{background:#7c3aed}
.stage-legend-chunk.runtime-chunk{background:#d97706}
.stage-legend-chunk.prod-chunk{background:#16a34a}
/* ─── Pack 4: workbench v2 ─── */
.wb-heatmap{display:grid;grid-template-columns:repeat(6,1fr);gap:2px;margin-bottom:12px;font-size:11px}
.wb-heatmap .wbh-cell{border-radius:4px;padding:5px 3px;text-align:center;font-weight:600}
.wb-heatmap .wbh-head{font-weight:700;font-size:10px;color:var(--fg-mute);padding:3px;text-align:center}
.wb-heat-high{background:#fee2e2;color:#991b1b}
.wb-heat-med{background:#fef3c7;color:#78350f}
.wb-heat-low{background:#dcfce7;color:#166534}
.wb-heat-zero{background:var(--bg-elev);color:var(--fg-mute)}
.wb-action-list{list-style:none;padding:0;margin:0}
.wb-action-list li{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:8px 0;border-bottom:1px solid var(--line);font-size:12.5px;color:var(--fg-dim)}
.wb-action-list li:last-child{border-bottom:none}
.cluster-form .cf-row{display:flex;align-items:center;gap:10px;padding:9px 0;border-bottom:1px solid var(--line)}
.cluster-form .cf-row:last-child{border-bottom:none}
.cluster-form .cf-label{font-size:12.5px;font-weight:600;color:var(--fg-dim);flex:1;min-width:180px}
.cluster-form .cf-ctrl{flex-shrink:0;min-width:160px}
.cluster-form input[type=number],.cluster-form select{width:100%;padding:5px 8px;border:1px solid var(--line-strong);border-radius:5px;font-family:var(--mono);font-size:12.5px;background:var(--bg-card)}
.cluster-form input[type=range]{width:100%;accent-color:var(--accent)}
.cluster-form .cf-toggle{display:flex;align-items:center;gap:8px}
.cluster-form .cf-toggle input[type=checkbox]{width:15px;height:15px;accent-color:var(--accent)}

