/* ─── Process console — SHARED styles (owner /processes + spaces viewer) ───
 *
 * Extracted verbatim from public/processes.html's inline stylesheet and
 * scoped under `.proc-console` so the console renders identically on both
 * pages without clobbering the host page's own generic classes (spaces.html
 * has its own `.btn`, `.card`, …). Colors/typography flow from the host
 * page's CSS variables — both pages load the same font set and define the
 * same palette variables, which is what keeps the two renders identical.
 */

/* Sub-tabs */
.proc-console .subtab-row{display:flex;gap:0;border-bottom:1px solid var(--border-dim);margin-bottom:20px}
.proc-console .subtab{font-size:13px;font-weight:600;color:var(--text-muted);background:none;border:none;padding:10px 14px;cursor:pointer;position:relative}
.proc-console .subtab:hover{color:var(--text-secondary)}
.proc-console .subtab.active{color:var(--accent)}
.proc-console .subtab.active::after{content:'';position:absolute;bottom:-1px;left:12px;right:12px;height:2px;background:var(--accent)}

.proc-console .section{display:none}
.proc-console .section.active{display:block}

/* Cards & tables */
.proc-console .h2{font-size:14px;font-weight:700;color:var(--text-secondary);text-transform:uppercase;letter-spacing:.06em;margin:18px 0 10px}
.proc-console .muted{color:var(--text-muted);font-size:12px}
.proc-console .tbl{width:100%;border-collapse:collapse;font-size:13px}
.proc-console .tbl th,.proc-console .tbl td{padding:10px 12px;border-bottom:1px solid var(--border-dim);text-align:left}
.proc-console .tbl th{color:var(--text-muted);font-weight:600;font-size:11px;text-transform:uppercase;letter-spacing:.06em}
.proc-console .tbl tr:hover{background:var(--bg-card)}

.proc-console .pill{display:inline-block;padding:2px 8px;border-radius:999px;font-size:11px;font-weight:600;font-family:var(--font-mono)}
.proc-console .pill-green{background:var(--green-bg);color:var(--green)}
.proc-console .pill-amber{background:var(--amber-bg);color:var(--amber)}
.proc-console .pill-red{background:var(--red-bg);color:var(--red)}
.proc-console .pill-muted{background:var(--bg-input);color:var(--text-muted)}
.proc-console .pill-accent{background:var(--accent-bg);color:var(--accent)}

/* Run selector */
.proc-console .run-selector{display:flex;align-items:center;gap:8px;margin-top:8px;padding:8px 10px;background:var(--bg-card);border:1px solid var(--border-dim);border-radius:var(--radius)}
.proc-console .run-selector-label{font-size:11px;font-weight:700;color:var(--text-muted);text-transform:uppercase;letter-spacing:.08em}
.proc-console .run-selector select{height:30px;background:var(--bg-input);border:1px solid var(--border-dim);border-radius:6px;padding:4px 26px 4px 8px;color:var(--text-primary);font-family:var(--font-sans);font-size:11px;font-weight:600;min-width:190px;max-width:280px;cursor:pointer}
.proc-console .run-selector select:hover{border-color:var(--border-glow)}
.proc-console .run-selector select:disabled{opacity:.55;cursor:not-allowed}
.proc-console .run-selector .run-empty{font-family:var(--font-mono);font-size:12px;color:var(--text-muted)}

/* Flow / DAG */
.proc-console .flow-canvas{background:var(--bg-card);border:1px solid var(--border-dim);border-radius:var(--radius);padding:18px;min-height:360px;font-family:var(--font-mono);font-size:12px;white-space:pre;overflow:auto;color:var(--text-secondary)}

/* Flow tab — view toggle (Map / Architecture) */
.proc-console .flow-viewtoggle{display:inline-flex;gap:0;padding:3px;background:var(--bg-input);border:1px solid var(--border-dim);border-radius:8px;margin-bottom:14px}
.proc-console .flow-viewtoggle button{font-family:var(--font-sans);font-size:12px;font-weight:600;color:var(--text-muted);background:transparent;border:none;padding:6px 14px;border-radius:6px;cursor:pointer}
.proc-console .flow-viewtoggle button:hover{color:var(--text-secondary)}
.proc-console .flow-viewtoggle button.active{background:var(--bg-card);color:var(--accent);box-shadow:var(--shadow)}

/* Flow Map — SVG DAG */
.proc-console .flow-workspace{display:grid;grid-template-columns:238px minmax(0,1fr);gap:12px;align-items:stretch}
.proc-console .flow-map-pane{min-width:0}
.proc-console .flow-stage-rail{display:flex;flex-direction:column;min-height:620px;max-height:min(720px,calc(100vh - 240px));overflow:hidden;border:1px solid var(--border-dim);border-radius:var(--radius);background:var(--bg-card)}
.proc-console .flow-stage-rail-head{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:12px 13px;border-bottom:1px solid var(--border-dim)}
.proc-console .flow-stage-rail-head strong{font-family:var(--font-mono);font-size:9.5px;letter-spacing:.09em;text-transform:uppercase;color:var(--text-muted)}
.proc-console .flow-stage-rail-head span{font-family:var(--font-mono);font-size:10px;color:var(--accent)}
.proc-console .flow-stage-rail-list{flex:1;min-height:0;overflow-y:auto;padding:7px;scrollbar-gutter:stable}
.proc-console .flow-stage-item{display:grid;grid-template-columns:26px minmax(0,1fr);gap:8px;align-items:center;width:100%;padding:8px;border:1px solid transparent;border-radius:7px;background:transparent;color:var(--text-secondary);text-align:left;cursor:pointer}
.proc-console .flow-stage-item:hover,.proc-console .flow-stage-item:focus-visible{border-color:var(--border-active);background:var(--accent-bg);outline:none}.proc-console .flow-stage-item.active{border-color:var(--accent);background:var(--accent-bg);color:var(--text-primary)}
.proc-console .flow-stage-index{display:grid;place-items:center;width:24px;height:24px;border:1px solid var(--border-dim);border-radius:6px;background:var(--bg-input);font:700 9px var(--font-mono);color:var(--text-muted)}
.proc-console .flow-stage-copy{min-width:0}.proc-console .flow-stage-copy strong,.proc-console .flow-stage-copy small{display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.proc-console .flow-stage-copy strong{font-size:11px}.proc-console .flow-stage-copy small{margin-top:3px;font:9px var(--font-mono);text-transform:capitalize;color:var(--text-muted)}
.proc-console .flow-stage-item.status-done .flow-stage-index{border-color:var(--green);color:var(--green);background:var(--green-bg)}
/* Routing (R11): `skipped` has two meanings and the stage rail had NO
   `.status-skipped` rule at all, so an off-route step was pixel-identical to
   one that had not run yet. A ROUTED skip is a deliberate, settled decision —
   solid, dimmed, muted-purple. A CANCELLED skip is unfinished work — dashed,
   like `pending`, because that is what it is. */
.proc-console .flow-stage-item.status-skipped{opacity:.62}
.proc-console .flow-stage-item.status-skipped .flow-stage-index{border-color:var(--border-dim);color:var(--text-muted);background:var(--bg-input)}
.proc-console .flow-stage-item.status-skipped.skip-routing .flow-stage-index{border-color:var(--purple,var(--text-muted));color:var(--purple,var(--text-muted));border-style:solid}
.proc-console .flow-stage-item.status-skipped.skip-cancelled .flow-stage-index{border-style:dashed}
.proc-console .flow-stage-item.status-skipped .flow-stage-copy small{text-transform:none}.proc-console .flow-stage-item.status-running .flow-stage-index{border-color:var(--accent);color:var(--accent);background:var(--accent-bg)}.proc-console .flow-stage-item.status-awaiting_human .flow-stage-index{border-color:var(--amber);color:var(--amber);background:var(--amber-bg)}.proc-console .flow-stage-item.status-error .flow-stage-index,.proc-console .flow-stage-item.status-failed .flow-stage-index{border-color:var(--red);color:var(--red);background:var(--red-bg)}
.proc-console .flow-map-tools{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:8px;color:var(--text-muted);font-size:11.5px}
.proc-console .flow-reset-layout{height:28px;padding:0 10px;border:1px solid var(--border-dim);border-radius:7px;background:transparent;color:var(--text-secondary);font-family:var(--font-sans);font-size:11px;font-weight:600;cursor:pointer}
.proc-console .flow-reset-layout:hover,.proc-console .flow-reset-layout:focus-visible{border-color:var(--border-active);color:var(--accent);outline:none}
.proc-console .flowgraph{position:relative;background:var(--bg-card);border:1px solid var(--border-dim);border-radius:var(--radius);overflow:auto;padding:34px 30px;min-height:620px;height:min(720px,calc(100vh - 240px))}
.proc-console .flowinner{position:relative;min-width:1080px;min-height:540px;padding-bottom:34px}
.proc-console .flowedges{position:absolute;inset:0;width:100%;height:100%;pointer-events:none;z-index:0;overflow:visible}
.proc-console .flowgrid{position:relative;z-index:1;display:grid;grid-template-columns:repeat(var(--flow-cols,4),minmax(150px,1fr));grid-auto-rows:minmax(78px,auto);gap:30px 28px;align-items:center}
.proc-console .flow-empty{padding:42px 24px;text-align:center;color:var(--text-muted);font-size:13px}
.proc-console .flow-legend{display:flex;flex-wrap:wrap;gap:18px;padding:14px 4px 0;font-size:11.5px;color:var(--text-muted);font-family:var(--font-mono)}
.proc-console .flow-legend i{display:inline-block;width:18px;height:8px;margin-right:6px;vertical-align:middle;border-radius:2px}
.proc-console .flow-legend .lg-done{background:var(--green)}
.proc-console .flow-legend .lg-running{background:var(--accent)}
.proc-console .flow-legend .lg-paused{background:var(--amber)}
.proc-console .flow-legend .lg-error{background:var(--red)}
.proc-console .flow-legend .lg-pending{background:var(--text-muted);opacity:.5}
.proc-console .flow-legend .lg-feedback{background:var(--purple)}

/* Node card */
.proc-console .fnode{position:relative;background:var(--bg-surface);border:1px solid var(--border-dim);border-radius:10px;padding:10px 12px 11px;box-shadow:var(--shadow);display:flex;flex-direction:column;gap:5px;min-height:78px;cursor:grab;touch-action:none;user-select:none;transform:translate(var(--flow-drag-x,0),var(--flow-drag-y,0));transition:border-color .2s,box-shadow .2s}
.proc-console .fnode:hover{border-color:var(--border-active);box-shadow:0 6px 18px rgba(0,0,0,0.35)}
.proc-console .fnode:focus-visible{outline:2px solid var(--accent);outline-offset:3px}
.proc-console .fnode.stage-focused{outline:2px solid var(--accent);outline-offset:4px}
.proc-console .fnode.is-dragging{cursor:grabbing;z-index:3;box-shadow:0 10px 28px rgba(0,0,0,0.4)}
.proc-console .fn-head{display:flex;align-items:center;gap:7px}
.proc-console .fn-ord{width:22px;height:22px;border-radius:6px;background:var(--bg-input);border:1px solid var(--border-dim);display:grid;place-items:center;font-family:var(--font-mono);font-weight:700;font-size:11px;color:var(--text-secondary);flex:none}
.proc-console .fn-chip{font-family:var(--font-mono);font-size:9.5px;font-weight:700;letter-spacing:.06em;text-transform:uppercase;padding:2px 6px;border-radius:5px;background:var(--bg-input);color:var(--text-muted)}
.proc-console .fn-chip.policy_based{color:var(--accent);background:var(--accent-bg)}
.proc-console .fn-chip.judgment_based{color:var(--purple);background:var(--purple-bg)}
.proc-console .fn-chip.mixed{color:var(--amber);background:var(--amber-bg)}
.proc-console .fn-chip.type-engine{color:var(--accent);background:var(--accent-bg)}
.proc-console .fn-chip.type-agent{color:var(--purple);background:var(--purple-bg)}
.proc-console .fn-gatetag{margin-left:auto;font-family:var(--font-mono);font-size:9px;font-weight:800;letter-spacing:.08em;color:var(--amber);background:var(--amber-bg);padding:2px 6px;border-radius:5px}
.proc-console .fn-name{font-weight:700;font-size:13px;color:var(--text-primary);line-height:1.25}
.proc-console .fn-desc{font-size:11px;line-height:1.35;color:var(--text-secondary);display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.proc-console .fn-src{font-family:var(--font-mono);font-size:10px;color:var(--text-muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.proc-console .fn-stat{font-family:var(--font-mono);font-size:11px;font-weight:600;color:var(--accent);min-height:14px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.proc-console .fn-stat:empty{display:none}
.proc-console .fn-art-row{display:flex;gap:4px;margin-top:4px}
.proc-console .fn-art-badge{font-family:var(--font-mono);font-size:8px;font-weight:700;letter-spacing:.06em;padding:1px 5px;border-radius:3px;background:var(--bg-input);color:var(--text-muted)}
.proc-console .fn-art-badge.out{color:var(--accent);background:var(--accent-bg)}
.proc-console .fn-art-badge.file{color:var(--green);background:var(--green-bg)}

/* Run-aware status (static — no animation) */
.proc-console .fnode.status-pending{opacity:.5;border-style:dashed}
.proc-console .fnode.status-pending .fn-stat{display:none}
.proc-console .fnode.status-skipped{opacity:.45}
.proc-console .fnode.status-skipped .fn-stat{display:none}
/* A routed skip is settled, deliberate work — readable, not ghosted; a
   cancelled skip is outstanding work and keeps the dashed `pending` idiom. */
.proc-console .fnode.status-skipped.skip-routing{opacity:.72;border-style:solid;border-color:var(--purple,var(--border-dim))}
.proc-console .fnode.status-skipped.skip-cancelled{opacity:.45;border-style:dashed}
.proc-console .fn-skiptag{margin-top:5px;font:9px var(--font-mono);letter-spacing:.04em;color:var(--text-muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.proc-console .fn-skiptag.skip-routing{color:var(--purple,var(--text-muted))}
.proc-console .fnode.status-running{border-color:var(--accent);box-shadow:0 0 0 2px var(--accent-bg),var(--shadow)}
.proc-console .fnode.status-running .fn-ord{background:var(--accent-bg);color:var(--accent);border-color:transparent}
.proc-console .fnode.status-awaiting_human{border-color:var(--amber);box-shadow:0 0 0 2px var(--amber-bg),var(--shadow)}
.proc-console .fnode.status-awaiting_human .fn-ord{background:var(--amber-bg);color:var(--amber);border-color:transparent}
.proc-console .fnode.status-done{border-color:var(--border-active)}
.proc-console .fnode.status-done .fn-ord{background:var(--green-bg);color:var(--green);border-color:transparent}
.proc-console .fnode.status-error{border-color:var(--red);box-shadow:0 0 0 2px var(--red-bg),var(--shadow)}
.proc-console .fnode.status-error .fn-ord{background:var(--red-bg);color:var(--red);border-color:transparent}
.proc-console .fnode.status-failed,.proc-console .fnode.status-cancelled{border-color:var(--red);box-shadow:0 0 0 2px var(--red-bg),var(--shadow)}
.proc-console .fnode.status-failed .fn-ord,.proc-console .fnode.status-cancelled .fn-ord{background:var(--red-bg);color:var(--red);border-color:transparent}
.proc-console .fnode.is-current{outline:2px solid var(--accent);outline-offset:3px}

@media(max-width:900px){.proc-console .flow-workspace{grid-template-columns:1fr}.proc-console .flow-stage-rail{min-height:0;max-height:none}.proc-console .flow-stage-rail-list{display:flex;overflow-x:auto;overflow-y:hidden}.proc-console .flow-stage-item{flex:0 0 210px}.proc-console .flowgraph{min-height:520px;height:65vh}}

/* Edges */
.proc-console .fedge{stroke:var(--text-muted);stroke-width:1.6;opacity:.4;fill:none}
.proc-console .fedge.depends.lit{stroke:var(--accent);opacity:.85}
.proc-console .fedge.feedback{stroke:var(--purple);stroke-dasharray:4 5;opacity:.6}
.proc-console .felabel{fill:var(--text-muted);font-family:var(--font-mono);font-size:9.5px;font-weight:600;opacity:.7}
.proc-console .felabel.feedback{fill:var(--purple)}

/* Flow Architecture (View B) — agent on top + three-rail schematic */
.proc-console .drill-wrap{background:var(--bg-card);border:1px solid var(--border-dim);border-radius:var(--radius);padding:22px 24px}
.proc-console .drill-agent{display:flex;align-items:center;gap:14px;padding:14px 18px;background:var(--accent-bg);border:1px solid var(--border-glow);border-radius:10px;margin-bottom:24px}
.proc-console .drill-agent-icon{width:34px;height:34px;border-radius:9px;background:var(--accent);color:var(--bg-deep);display:grid;place-items:center;font-size:15px;font-weight:700;flex:none;font-family:var(--font-display)}
.proc-console .drill-agent-meta{display:flex;flex-direction:column;gap:2px;flex:1;min-width:0}
.proc-console .drill-agent-name{font-size:14px;font-weight:700;color:var(--text-primary)}
.proc-console .drill-agent-sub{font-family:var(--font-mono);font-size:11px;color:var(--text-secondary)}
.proc-console .drill-agent-hud{display:flex;gap:14px;font-family:var(--font-mono);font-size:11px;color:var(--text-muted);flex:none}
.proc-console .drill-agent-hud .k{display:block;color:var(--text-muted);font-size:9.5px;letter-spacing:.06em;text-transform:uppercase;margin-bottom:2px}
.proc-console .drill-agent-hud .v{color:var(--text-primary);font-weight:600;font-size:12px}

.proc-console .drill-rails{display:grid;grid-template-columns:200px 1fr 220px;gap:18px;align-items:start}
.proc-console .drill-railhead{font-family:var(--font-mono);font-size:9.5px;font-weight:700;letter-spacing:.08em;text-transform:uppercase;color:var(--text-muted);padding:0 4px 8px;border-bottom:1px solid var(--border-dim);margin-bottom:10px}
.proc-console .drill-rail-policies, .proc-console .drill-rail-engines{display:flex;flex-direction:column;gap:8px}

.proc-console .drill-spine{display:flex;flex-direction:column;gap:14px;position:relative}
.proc-console .drill-spine::before{content:"";position:absolute;left:30px;top:14px;bottom:14px;width:2px;background:var(--border-dim);z-index:0}

.proc-console .drill-step{position:relative;display:flex;align-items:flex-start;gap:14px;padding:12px 14px 12px 14px;background:var(--bg-surface);border:1px solid var(--border-dim);border-radius:10px;cursor:pointer;z-index:1;transition:border-color .2s,box-shadow .2s,transform .15s}
.proc-console .drill-step:hover{transform:translateY(-1px);border-color:var(--border-active);box-shadow:0 5px 14px rgba(0,0,0,0.32)}
.proc-console .drill-step-ord{width:32px;height:32px;border-radius:50%;background:var(--bg-input);border:2px solid var(--border-dim);display:grid;place-items:center;font-family:var(--font-mono);font-weight:700;font-size:13px;color:var(--text-secondary);flex:none}
.proc-console .drill-step-body{flex:1;min-width:0;display:flex;flex-direction:column;gap:4px}
.proc-console .drill-step-name{font-size:13.5px;font-weight:700;color:var(--text-primary);line-height:1.25}
.proc-console .drill-step-desc{font-size:12px;line-height:1.4;color:var(--text-secondary)}
.proc-console .drill-step-meta{display:flex;flex-wrap:wrap;gap:6px;align-items:center;font-family:var(--font-mono);font-size:10.5px;color:var(--text-muted)}
.proc-console .drill-step-meta .chip{padding:2px 6px;border-radius:5px;background:var(--bg-input);color:var(--text-muted);font-weight:600;text-transform:uppercase;letter-spacing:.05em;font-size:9.5px}
.proc-console .drill-step-meta .chip.policy_based{color:var(--accent);background:var(--accent-bg)}
.proc-console .drill-step-meta .chip.judgment_based{color:var(--purple);background:var(--purple-bg)}
.proc-console .drill-step-meta .chip.mixed{color:var(--amber);background:var(--amber-bg)}
.proc-console .drill-step-meta .chip.gate{color:var(--amber);background:var(--amber-bg)}
.proc-console .drill-step-meta .chip.type-engine{color:var(--accent);background:var(--accent-bg)}
.proc-console .drill-step-meta .chip.type-agent{color:var(--purple);background:var(--purple-bg)}
.proc-console .drill-step-headline{font-family:var(--font-mono);font-size:11px;color:var(--accent);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.proc-console .drill-step-dataflow{font-family:var(--font-mono);font-size:10px;color:var(--text-muted);margin-top:3px;display:flex;align-items:center;flex-wrap:wrap;gap:2px}
.proc-console .drill-flow-tag{font-size:8px;font-weight:700;letter-spacing:.06em;padding:1px 4px;border-radius:3px;background:var(--bg-input);color:var(--text-muted);vertical-align:middle}
.proc-console .drill-flow-tag.in{color:var(--text-muted);background:var(--bg-input)}
.proc-console .drill-flow-tag.out{color:var(--accent);background:var(--accent-bg)}
.proc-console .drill-flow-tag.file{color:var(--green);background:var(--green-bg)}

/* Run-aware step status */
.proc-console .drill-step.status-pending{opacity:.55;border-style:dashed}
.proc-console .drill-step.status-pending .drill-step-headline{display:none}
.proc-console .drill-step.status-skipped{opacity:.5}
.proc-console .drill-step.status-skipped .drill-step-headline{display:none}
.proc-console .drill-step.status-skipped.skip-routing{opacity:.78;border-color:var(--purple,var(--border-dim))}
.proc-console .drill-step.status-skipped.skip-routing .drill-step-ord{border-color:var(--purple,var(--border-dim));color:var(--purple,var(--text-muted))}
.proc-console .drill-step.status-skipped.skip-cancelled{opacity:.5;border-style:dashed}
.proc-console .drill-step-skip{margin-top:3px;font:9.5px var(--font-mono);letter-spacing:.04em;color:var(--text-muted)}
.proc-console .drill-step-skip.skip-routing{color:var(--purple,var(--text-muted))}
.proc-console .drill-step.status-running{border-color:var(--accent);box-shadow:0 0 0 2px var(--accent-bg)}
.proc-console .drill-step.status-running .drill-step-ord{background:var(--accent-bg);color:var(--accent);border-color:var(--accent)}
.proc-console .drill-step.status-awaiting_human{border-color:var(--amber);box-shadow:0 0 0 2px var(--amber-bg)}
.proc-console .drill-step.status-awaiting_human .drill-step-ord{background:var(--amber-bg);color:var(--amber);border-color:var(--amber)}
.proc-console .drill-step.status-done{border-color:var(--border-active)}
.proc-console .drill-step.status-done .drill-step-ord{background:var(--green-bg);color:var(--green);border-color:var(--green)}
.proc-console .drill-step.status-error{border-color:var(--red);box-shadow:0 0 0 2px var(--red-bg)}
.proc-console .drill-step.status-error .drill-step-ord{background:var(--red-bg);color:var(--red);border-color:var(--red)}
.proc-console .drill-step.status-failed,.proc-console .drill-step.status-cancelled{border-color:var(--red);box-shadow:0 0 0 2px var(--red-bg)}
.proc-console .drill-step.status-failed .drill-step-ord,.proc-console .drill-step.status-cancelled .drill-step-ord{background:var(--red-bg);color:var(--red);border-color:var(--red)}

.proc-console .drill-pill{padding:8px 10px;border-radius:8px;background:var(--bg-surface);border:1px solid var(--border-dim);font-size:11.5px;line-height:1.3}
.proc-console .drill-pill .tag{display:inline-block;font-family:var(--font-mono);font-size:8.5px;font-weight:700;letter-spacing:.08em;padding:2px 5px;border-radius:4px;margin-bottom:4px}
.proc-console .drill-pill .tag.policy{background:var(--accent-bg);color:var(--accent)}
.proc-console .drill-pill .tag.engine{background:var(--purple-bg);color:var(--purple)}
.proc-console .drill-pill .nm{font-weight:600;color:var(--text-primary);display:block}
.proc-console .drill-pill .meta{font-family:var(--font-mono);font-size:10px;color:var(--text-muted);margin-top:2px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.proc-console .drill-rail-empty{padding:14px 4px;font-size:11px;color:var(--text-muted);font-style:italic}

/* Output / §5 dashboard template */
.proc-console .ov-hero{display:grid;grid-template-columns:1fr auto;gap:24px;padding:22px 24px;background:var(--bg-card);border:1px solid var(--border-dim);border-radius:var(--radius);margin-bottom:18px}
.proc-console .ov-state{display:inline-block;font-family:var(--font-mono);font-size:9.5px;font-weight:800;letter-spacing:.1em;text-transform:uppercase;padding:3px 8px;border-radius:5px;margin-bottom:8px}
.proc-console .ov-state.good{background:var(--green-bg);color:var(--green)}
.proc-console .ov-state.attention{background:var(--amber-bg);color:var(--amber)}
.proc-console .ov-state.live{background:var(--accent-bg);color:var(--accent)}
.proc-console .ov-state.pending{background:var(--bg-input);color:var(--text-muted)}
.proc-console .ov-state.error{background:var(--red-bg);color:var(--red)}
.proc-console .ov-state.posted{background:var(--green-bg);color:var(--green)}
.proc-console .ov-hero h1{font-family:var(--font-display);font-size:22px;font-weight:700;color:var(--text-primary);margin:0 0 6px;line-height:1.2}
.proc-console .ov-hero .ov-ctx{font-size:13px;color:var(--text-secondary);margin-bottom:10px;line-height:1.4}
.proc-console .ov-hero .ov-meta{display:flex;flex-wrap:wrap;gap:14px;font-family:var(--font-mono);font-size:11px;color:var(--text-muted)}
.proc-console .ov-hero .ov-meta b{color:var(--text-secondary);font-weight:700}
.proc-console .ov-figure{text-align:right;min-width:160px}
.proc-console .ov-figure .lab{font-family:var(--font-mono);font-size:10px;color:var(--text-muted);text-transform:uppercase;letter-spacing:.06em;margin-bottom:4px}
.proc-console .ov-figure .big{font-family:var(--font-display);font-size:32px;font-weight:800;color:var(--text-primary);line-height:1}
.proc-console .ov-figure .band{font-family:var(--font-mono);font-size:11px;color:var(--text-muted);margin-top:6px}
.proc-console .ov-figure .delta{font-family:var(--font-mono);font-size:11px;font-weight:700;margin-top:4px}
.proc-console .ov-figure .delta.win{color:var(--green)}
.proc-console .ov-figure .delta.loss{color:var(--red)}

.proc-console .ov-tiles{display:grid;grid-template-columns:repeat(auto-fit,minmax(160px,1fr));gap:10px;margin-bottom:18px}
.proc-console .ov-tile{padding:14px 16px;background:var(--bg-card);border:1px solid var(--border-dim);border-radius:10px;min-width:0}
.proc-console .ov-tile .lab{font-family:var(--font-mono);font-size:9.5px;color:var(--text-muted);text-transform:uppercase;letter-spacing:.06em;margin-bottom:4px}
.proc-console .ov-tile .val{font-family:var(--font-display);font-size:20px;font-weight:700;color:var(--text-primary);line-height:1.1;word-break:break-word;overflow-wrap:anywhere}
.proc-console .ov-tile .val.txt{font-size:14px;font-weight:600;font-family:var(--font-sans)}
.proc-console .ov-tile .note{font-family:var(--font-mono);font-size:10px;color:var(--text-muted);margin-top:4px;line-height:1.3}

.proc-console .ov-card{background:var(--bg-card);border:1px solid var(--border-dim);border-radius:var(--radius);margin-bottom:14px}
.proc-console .ov-card-h{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:14px 18px;border-bottom:1px solid var(--border-dim)}
.proc-console .ov-card-h h3{font-size:14px;font-weight:700;color:var(--text-primary);margin:0}
.proc-console .ov-card-h .sub{font-family:var(--font-mono);font-size:11px;color:var(--text-muted)}
.proc-console .ov-card-b{padding:14px 18px}

.proc-console .ov-insight-empty{color:var(--text-muted);font-size:13px;line-height:1.5;margin:0}
.proc-console .ai-gen-btn{margin-left:auto;height:28px;padding:0 12px;border-radius:6px;border:1px solid var(--accent);background:transparent;color:var(--accent);cursor:pointer;font-size:11px;font-weight:700;letter-spacing:.02em;display:inline-flex;align-items:center;gap:6px}
.proc-console .ai-gen-btn:hover:not(:disabled){background:var(--accent);color:var(--bg-primary)}
.proc-console .ai-gen-btn:disabled{opacity:.55;cursor:default}
.proc-console .ai-spinner{display:inline-block;width:12px;height:12px;border:2px solid var(--border-dim);border-top-color:var(--accent);border-radius:50%;animation:ai-spin 0.7s linear infinite;vertical-align:middle;margin-right:6px}
@keyframes ai-spin{to{transform:rotate(360deg)}}

.proc-console .ov-actions .ov-item{display:flex;gap:12px;padding:10px 18px;border-top:1px solid var(--border-dim);align-items:flex-start}
.proc-console .ov-actions .ov-item:first-of-type{border-top:0}
.proc-console .ov-actions .sev{width:8px;height:8px;border-radius:50%;margin-top:6px;flex:none;background:var(--text-muted)}
.proc-console .ov-actions .sev.escalate{background:var(--red)}
.proc-console .ov-actions .sev.review{background:var(--amber)}
.proc-console .ov-actions .sev.info{background:var(--accent)}
.proc-console .ov-actions .body{flex:1;min-width:0}
.proc-console .ov-actions .body .t{font-size:13.5px;font-weight:600;color:var(--text-primary)}
.proc-console .ov-actions .body .d{font-size:12px;color:var(--text-secondary);margin-top:3px;line-height:1.4}
.proc-console .ov-actions .amt-col{font-family:var(--font-mono);font-size:13px;font-weight:700;color:var(--text-primary);text-align:right;white-space:nowrap}

.proc-console .ov-zone-h{display:flex;align-items:baseline;gap:10px;margin:22px 0 10px;padding-bottom:6px;border-bottom:1px solid var(--border-dim)}
.proc-console .ov-zone-h h2{font-size:13px;font-weight:700;color:var(--text-secondary);text-transform:uppercase;letter-spacing:.06em;margin:0}
.proc-console .ov-zone-h .zsub{font-family:var(--font-mono);font-size:11px;color:var(--text-muted)}

.proc-console .ov-table{width:100%;border-collapse:collapse;font-size:12px}
.proc-console .ov-table thead th{font-family:var(--font-mono);font-size:9.5px;font-weight:700;color:var(--text-muted);text-transform:uppercase;letter-spacing:.06em;padding:9px 12px;text-align:left;border-bottom:1px solid var(--border-dim);background:var(--bg-input)}
.proc-console .ov-table thead th.num{text-align:right}
.proc-console .ov-table tbody td{padding:10px 12px;border-bottom:1px solid var(--border-dim);color:var(--text-secondary);vertical-align:top}
.proc-console .ov-table tbody tr:last-child td{border-bottom:0}
.proc-console .ov-table tbody tr.clickable{cursor:pointer}
.proc-console .ov-table tbody tr.clickable:hover{background:var(--bg-card)}
.proc-console .ov-artifact-row{display:flex;align-items:center;gap:10px;padding:6px 0;cursor:pointer;border-radius:6px;transition:background .12s}
.proc-console .ov-artifact-row:hover{background:var(--bg-input)}
/* File pill in the Step outcomes table — replaces the standalone Artifacts
   zone by co-locating input/output files with the row that produced them.
   Column is capped so long paths never steal space from Outcome; the pill
   shows only the basename (full path lives in the tooltip and the drawer). */
.proc-console .ov-table th.ov-file-col, .proc-console .ov-table td.ov-file-cell{min-width:240px;max-width:420px;white-space:normal}
.proc-console .ov-file-pill{display:block;font-size:11.5px;font-weight:500;color:var(--accent);cursor:pointer;text-decoration:none;padding:2px 6px;border-radius:5px;transition:background .12s;max-width:100%;vertical-align:middle;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;line-height:1.35}
.proc-console .ov-file-pill:hover{background:var(--accent-bg);text-decoration:underline}
.proc-console .ov-file-pill + .ov-file-pill{margin-top:4px}
.proc-console .ov-file-empty{color:var(--text-muted)}

.proc-console .ov-table .num{text-align:right;font-family:var(--font-mono)}
.proc-console .ov-table .chip-cell .chip{padding:2px 7px;border-radius:5px;font-family:var(--font-mono);font-size:9.5px;font-weight:700;letter-spacing:.05em;text-transform:uppercase;background:var(--bg-input);color:var(--text-secondary)}
.proc-console .ov-table .chip-cell .chip.done{background:var(--green-bg);color:var(--green)}
.proc-console .ov-table .chip-cell .chip.posted{background:var(--green-bg);color:var(--green)}
.proc-console .ov-table .chip-cell .chip.awaiting_human{background:var(--amber-bg);color:var(--amber)}
.proc-console .ov-table .chip-cell .chip.pending{background:var(--bg-input);color:var(--text-muted)}
.proc-console .ov-table .chip-cell .chip.error{background:var(--red-bg);color:var(--red)}
.proc-console .ov-table .chip-cell .chip.policy_based{background:var(--accent-bg);color:var(--accent)}
.proc-console .ov-table .chip-cell .chip.judgment_based{background:var(--purple-bg);color:var(--purple)}
.proc-console .ov-table .chip-cell .chip.mixed{background:var(--amber-bg);color:var(--amber)}
.proc-console .ov-table .chip-cell .chip.type-engine{background:var(--accent-bg);color:var(--accent)}
.proc-console .ov-table .chip-cell .chip.type-agent{background:var(--purple-bg);color:var(--purple)}

.proc-console .ov-notes{display:flex;flex-direction:column;gap:8px}
.proc-console .ov-notes li{list-style:none;display:flex;gap:10px;padding:9px 11px;border:1px solid var(--border-dim);border-radius:8px;background:var(--bg-card);font-size:12.5px;color:var(--text-secondary)}
.proc-console .ov-notes li .ic{width:10px;height:10px;border-radius:50%;flex:none;margin-top:4px;background:var(--accent)}

.proc-console .ov-empty-zone{padding:20px;color:var(--text-muted);font-size:13px;font-style:italic;background:var(--bg-card);border:1px solid var(--border-dim);border-radius:var(--radius)}

/* ── Result zone — Option A (Ore 2026-08-01) ─────────────────────
   Borrows the step drawer's Option A vocabulary. No .ov-card wrap
   in this zone: each shape of content is its own primitive:
     .rz-headline — accent-left one-line finding (per block)
     .rz-section-h — mono divider heading (only when we have >1 block)
     .rz-facts / .rz-fact — unified fact-grid (single container, no
       box-in-box); shared shape for notes label/body AND keyvalue
       label/value/note.
     .rz-flag — amber-left callout for a flagged note (color-tagged
       or matched by keyword).
     .rz-file — single-line artifact row.
     .rz-expander — <details> for raw JSON.
   Kills the "boxes-inside-a-box" look the old .ov-card + .ov-notes /
   .ov-tiles reuse produced. */
.proc-console .rz-wrap{display:flex;flex-direction:column;gap:16px}
.proc-console .rz-headline{background:var(--accent-bg);border-left:3px solid var(--accent);border-radius:0 10px 10px 0;padding:14px 18px}
.proc-console .rz-headline .lead{font-family:var(--font-display);font-size:18px;font-weight:800;line-height:1.35;color:var(--text-primary);letter-spacing:-.01em}
.proc-console .rz-headline .stamp{font-family:var(--font-mono);font-size:10.5px;color:var(--text-secondary);margin-top:5px;letter-spacing:.03em}
.proc-console .rz-section-h{font-family:var(--font-mono);font-size:10.5px;font-weight:700;text-transform:uppercase;letter-spacing:.09em;color:var(--text-muted);display:flex;align-items:center;gap:8px;margin:2px 2px 8px}
.proc-console .rz-section-h::after{content:'';flex:1;height:1px;background:var(--border-dim)}
.proc-console .rz-facts{background:var(--bg-input);border-radius:10px;overflow:hidden}
.proc-console .rz-fact{display:grid;grid-template-columns:minmax(140px,220px) 1fr auto;gap:12px 16px;padding:11px 16px;border-top:1px solid var(--border-dim);align-items:baseline}
.proc-console .rz-fact:first-child{border-top:0}
.proc-console .rz-fact .lbl{font-family:var(--font-mono);font-size:11px;letter-spacing:.05em;color:var(--text-muted)}
.proc-console .rz-fact .val{font-family:var(--font-display);font-size:15px;font-weight:700;color:var(--text-primary);word-break:break-word}
.proc-console .rz-fact .val.txt{font-family:var(--font-sans);font-size:13px;font-weight:500;color:var(--text-secondary);line-height:1.5}
.proc-console .rz-fact .note{font-family:var(--font-mono);font-size:10.5px;color:var(--text-muted);text-align:right;white-space:nowrap}
@media(max-width:640px){.proc-console .rz-fact{grid-template-columns:1fr;gap:2px}.proc-console .rz-fact .note{text-align:left}}
.proc-console .rz-flag{display:flex;gap:10px;align-items:flex-start;padding:10px 14px;background:var(--amber-bg);border-left:3px solid var(--amber);border-radius:0 8px 8px 0;font-size:12.5px;line-height:1.5;color:var(--text-secondary);margin-top:6px}
.proc-console .rz-flag .dot{color:var(--amber);font-weight:800;flex-shrink:0}
.proc-console .rz-flag b{color:var(--text-primary)}
.proc-console .rz-expander{background:var(--bg-input);border-radius:8px;padding:8px 14px;margin-top:2px}
.proc-console .rz-expander summary{cursor:pointer;font-family:var(--font-mono);font-size:11px;text-transform:uppercase;letter-spacing:.06em;color:var(--text-muted);list-style:none;display:flex;align-items:center;gap:8px}
.proc-console .rz-expander summary::before{content:'▸';display:inline-block;transition:transform .15s;font-size:9px}
.proc-console .rz-expander[open] summary::before{transform:rotate(90deg)}
.proc-console .rz-expander pre{background:rgba(0,0,0,.3);border-radius:6px;padding:12px;margin-top:10px;font-family:var(--font-mono);font-size:11px;color:var(--text-secondary);max-height:260px;overflow:auto}

.proc-console .ov-links{display:flex;flex-wrap:wrap;gap:8px}
.proc-console .ov-links a{font-family:var(--font-mono);font-size:11.5px;font-weight:600;padding:7px 12px;border:1px solid var(--border-glow);border-radius:8px;color:var(--text-primary);text-decoration:none;cursor:pointer}
.proc-console .ov-links a:hover{border-color:var(--border-active);background:var(--bg-card)}
.proc-console .ov-links a.ghost{border-color:var(--border-dim);color:var(--text-muted)}

/* Step-detail drawer (shared by Flow Map + Architecture) */
.proc-console .step-drawer-backdrop{position:fixed;inset:0;background:rgba(0,0,0,0.45);z-index:200;opacity:0;pointer-events:none;transition:opacity .2s}
.proc-console .step-drawer-backdrop.open{opacity:1;pointer-events:auto}
.proc-console .step-drawer{position:fixed;top:0;right:-780px;width:740px;max-width:94vw;height:100vh;background:var(--bg-surface);border-left:1px solid var(--border-glow);box-shadow:-8px 0 28px rgba(0,0,0,0.45);z-index:201;transition:right .25s cubic-bezier(.2,.7,.2,1);overflow-y:auto;padding:54px 24px 24px}
.proc-console .step-drawer.open{right:0}
.proc-console .step-drawer-close{position:absolute;top:14px;right:18px;z-index:2;width:30px;height:30px;border-radius:8px;border:1px solid var(--border-dim);background:var(--bg-card);color:var(--text-muted);font-size:18px;cursor:pointer;display:grid;place-items:center}
.proc-console .step-drawer-close:hover{color:var(--text-primary);border-color:var(--border-active)}
.proc-console .btn{display:inline-flex;align-items:center;justify-content:center;gap:6px;height:32px;padding:0 14px;border-radius:8px;border:1px solid var(--border-glow);background:transparent;color:var(--text-primary);font-size:12px;font-weight:600;cursor:pointer;font-family:var(--font-sans)}
.proc-console .btn:hover{border-color:var(--border-active);background:var(--bg-card)}
.proc-console .btn-primary{background:var(--accent);border-color:var(--accent);color:var(--bg-deep)}
.proc-console .btn-primary:hover{background:var(--accent-soft);border-color:var(--accent-soft)}
.proc-console .btn-ghost{border-color:transparent;color:var(--text-muted)}
.proc-console .btn-ghost:hover{border-color:var(--border-dim);color:var(--text-primary)}

.proc-console .empty{padding:40px 0;text-align:center;color:var(--text-muted);font-size:13px}

/* ── Decision-Step Standard ──────────────────────────────────────────
   Same declaration, two render modes: a promoted node draws labeled branch
   edges on the canvas; a baked-in declaration shows a badge here and its
   branches in the step drawer. `pause: true` branches are the real gates and
   carry the amber gate accent wherever they appear. */

/* Flow node — promoted decision renders as a DIAMOND.
   The element itself stays a square with no chrome of its own: the visible
   diamond is `.fnd-face`, a rotated square inside it. That matters for the
   edge router, which measures this element's box — the rotated face touches
   the midpoint of each side, so `right`/`left` attach points land exactly on
   the diamond's vertices with no special-casing. */
.proc-console .fnode.is-decision{
  background:transparent;border:0;box-shadow:none;padding:0;
  width:150px;height:150px;justify-self:center;align-self:center;
  display:block;position:relative;overflow:visible;
  /* The caption hangs OUTSIDE the box (so the box stays square for the edge
     router), so reserve its height here or it collides with the next row. */
  margin-bottom:58px
}
.proc-console .fnode.is-decision:hover{transform:none}
.proc-console .fnode.is-decision:hover .fnd-face{border-color:var(--border-active);box-shadow:0 6px 18px rgba(0,0,0,.35)}
.proc-console .fnd-face{
  position:absolute;inset:0;transform:rotate(45deg);border-radius:14px;
  background:var(--bg-surface);border:1.6px solid var(--purple);
  box-shadow:var(--shadow);transition:border-color .2s,box-shadow .2s
}
/* A pause:true branch makes this a real gate — carry the amber accent. */
.proc-console .fnode.is-decision.has-gate .fnd-face{border-color:var(--amber)}
/* Run state still reads on the shape itself. */
.proc-console .fnode.is-decision.status-done .fnd-face{border-color:var(--green)}
.proc-console .fnode.is-decision.status-error .fnd-face,
.proc-console .fnode.is-decision.status-failed .fnd-face{border-color:var(--red)}
.proc-console .fnode.is-decision.status-awaiting_human .fnd-face{border-color:var(--amber)}
.proc-console .fnode.is-decision.is-current .fnd-face{box-shadow:0 0 0 3px var(--accent-glow),var(--shadow)}
/* Only the question fits inside a diamond — everything else moves below. */
.proc-console .fnd-in{position:absolute;inset:0;display:flex;flex-direction:column;
  align-items:center;justify-content:center;text-align:center;padding:0 26px;pointer-events:none}
.proc-console .fnd-id{font-family:var(--font-mono);font-size:8.5px;font-weight:800;
  letter-spacing:.05em;color:var(--purple);margin-bottom:3px}
.proc-console .fnode.is-decision.has-gate .fnd-id{color:var(--amber)}
.proc-console .fnd-q{font-size:10.5px;font-weight:700;line-height:1.3;
  display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden}
.proc-console .fnd-cap{position:absolute;top:100%;left:50%;transform:translateX(-50%);
  width:186px;text-align:center;margin-top:2px}
.proc-console .fnd-cap .fn-name{font-size:11.5px;font-weight:700;line-height:1.25}
.proc-console .fnd-caprow{display:flex;gap:5px;justify-content:center;margin-top:3px}
.proc-console .fnd-cap .fn-src{margin-top:2px}
.proc-console .fnd-cap .fn-stat{margin-top:2px}
.fn-chip.fn-decision{background:var(--purple-bg);color:var(--purple);font-weight:700}
.fn-chip.fn-decision.has-gate{background:var(--amber-bg);color:var(--amber)}
.fn-decbadge{font-family:var(--font-mono);font-size:9px;font-weight:700;color:var(--purple);background:var(--purple-bg);border-radius:4px;padding:1px 5px;margin-left:2px}
.fn-decbadge.has-gate{color:var(--amber);background:var(--amber-bg)}

/* Branch edges on the canvas */
.fedge.branch{stroke:var(--purple);stroke-width:1.4;stroke-dasharray:5 4;fill:none}
.fedge.branch.gate{stroke:var(--amber);stroke-width:1.8;stroke-dasharray:none}
.fedge.branch.fired{stroke-width:2.4;stroke-dasharray:none;opacity:1}
.fedge-label{font-family:var(--font-mono);font-size:9px;fill:var(--purple)}
.fedge-label.gate{fill:var(--amber);font-weight:700}
.fedge-label.fired{font-weight:800}

/* Step drawer — the drill-in panel */
.sd-decisions .dec{border:1px solid var(--border-dim);border-left:3px solid var(--purple);border-radius:8px;padding:8px 10px;margin-bottom:8px;background:var(--bg-card)}
.sd-decisions .dec-hd{display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.sd-decisions .dec-id{font-family:var(--font-mono);font-size:10px;font-weight:800;color:var(--purple)}
.sd-decisions .dec-label{font-size:12.5px;font-weight:700}
.sd-decisions .dec-status{font-family:var(--font-mono);font-size:9px;font-weight:800;text-transform:uppercase;border-radius:4px;padding:1px 6px;margin-left:auto}
.sd-decisions .dec-status.st-built{color:var(--green);background:var(--green-bg)}
.sd-decisions .dec-status.st-partial{color:var(--amber);background:var(--amber-bg)}
.sd-decisions .dec-status.st-missing,.sd-decisions .dec-status.st-dead{color:var(--red);background:var(--red-bg)}
.sd-decisions .dec-q{font-size:11.5px;color:var(--text-secondary);margin-top:3px}
.sd-decisions .dec-sop{font-family:var(--font-mono);font-size:9.5px;color:var(--text-muted);margin-top:2px}
.sd-decisions .dec-branch{display:flex;align-items:center;gap:6px;flex-wrap:wrap;font-size:11px;padding:4px 0;border-top:1px dashed var(--border-dim);margin-top:5px}
.sd-decisions .dec-branch.gate{border-left:2px solid var(--amber);padding-left:6px}
.sd-decisions .dec-branch.fired{background:var(--accent-glow);border-radius:5px;padding-left:6px}
.sd-decisions .dec-when{font-family:var(--font-mono);font-size:10px;color:var(--text-secondary)}
.sd-decisions .dec-arrow{color:var(--text-muted)}
.sd-decisions .dec-outcome{font-weight:700}
.sd-decisions .dec-next{font-family:var(--font-mono);font-size:9.5px;color:var(--text-muted)}
.sd-decisions .dec-tag{font-family:var(--font-mono);font-size:8.5px;font-weight:800;letter-spacing:.05em;border-radius:3px;padding:1px 4px}
.sd-decisions .dec-tag.human{color:var(--purple);background:var(--purple-bg)}
.sd-decisions .dec-tag.gate{color:var(--amber);background:var(--amber-bg)}
.sd-decisions .dec-tag.fired{color:var(--accent);background:var(--accent-bg)}
.sd-decisions .dec-tag.st-partial{color:var(--amber);background:var(--amber-bg)}
.sd-decisions .dec-tag.st-missing,.sd-decisions .dec-tag.st-dead{color:var(--red);background:var(--red-bg)}
.sd-decisions .dec-warn{font-size:10.5px;color:var(--amber);margin-top:6px;padding-top:5px;border-top:1px dashed var(--border-dim)}

/* ── Step source provenance ("where this step came from") ────────────
   Build-time, so it sits with the description rather than in the run stages.
   The excerpt is verbatim source text — quoted styling makes it visibly
   somebody else's words, not ours. */
.proc-console .sd-src{margin:10px 0 4px;border:1px solid var(--border-dim);border-left:3px solid var(--accent);border-radius:8px;padding:9px 11px;background:var(--bg-card)}
.proc-console .sd-src.empty{border-left-color:var(--border-dim)}
.proc-console .sd-src-hd{font-family:var(--font-mono);font-size:9px;font-weight:800;letter-spacing:.1em;text-transform:uppercase;color:var(--text-muted);margin-bottom:6px}
.proc-console .sd-src-body{font-size:12px;line-height:1.55}
.proc-console .sd-src-body.sec{color:var(--text-muted);font-style:italic}
.proc-console .sd-srcitem{margin:0 0 8px}
.proc-console .sd-srcitem:last-child{margin-bottom:0}
.proc-console .sd-srcitem blockquote{margin:0;padding:0 0 0 10px;border-left:2px solid var(--border-glow);font-size:12px;line-height:1.6;color:var(--text-secondary);white-space:pre-wrap}
.proc-console .sd-srcitem figcaption{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin-top:5px;padding-left:12px}
.proc-console .sd-srckind{font-family:var(--font-mono);font-size:8.5px;font-weight:800;letter-spacing:.06em;text-transform:uppercase;border-radius:4px;padding:1px 6px;background:var(--accent-bg);color:var(--accent)}
.proc-console .sd-srckind.k-chat,.proc-console .sd-srckind.k-verbal{background:var(--purple-bg);color:var(--purple)}
.proc-console .sd-srckind.k-meeting,.proc-console .sd-srckind.k-email{background:var(--amber-bg);color:var(--amber)}
.proc-console .sd-srcmeta{font-size:11px;color:var(--text-secondary)}
.proc-console .sd-srcwhen{font-family:var(--font-mono);font-size:9.5px;color:var(--text-muted);margin-left:auto}

/* ── Decision Register + Source Coverage (flow views C and D) ────────
   Roll-ups over the same flow payload the map already loaded, so they can
   never disagree with the canvas. */
.proc-console .dreg,.proc-console .scov{padding:4px 2px}
.proc-console .dreg-tot{display:flex;gap:18px;flex-wrap:wrap;align-items:center;font-size:12px;
  color:var(--text-secondary);padding:10px 12px;margin-bottom:12px;background:var(--bg-card);
  border:1px solid var(--border-dim);border-radius:9px}
.proc-console .dreg-tot b{color:var(--text-primary);font-size:14px;margin-right:4px}
.proc-console .dreg-tot .st-built b{color:var(--green)}
.proc-console .dreg-tot .st-partial b{color:var(--amber)}
.proc-console .dreg-tot .st-missing b,.proc-console .dreg-tot .st-dead b{color:var(--red)}
.proc-console .dreg-ungated{margin-left:auto}
.proc-console .dreg-ungated.bad b{color:var(--amber)}
.proc-console .dreg-t{width:100%;border-collapse:collapse;font-size:12px}
.proc-console .dreg-t th{font-family:var(--font-mono);font-size:9px;font-weight:800;letter-spacing:.1em;
  text-transform:uppercase;color:var(--text-muted);text-align:left;padding:7px 9px;
  border-bottom:1px solid var(--border-dim)}
.proc-console .dreg-t td{padding:8px 9px;border-bottom:1px solid var(--border-dim);vertical-align:top}
.proc-console .dreg-t tr[data-dreg-step]{cursor:pointer}
.proc-console .dreg-t tr[data-dreg-step]:hover td{background:var(--accent-glow)}
.proc-console .dreg-id{font-family:var(--font-mono);font-weight:800;color:var(--purple)}
.proc-console .dreg-prom{color:var(--purple)}
.proc-console .dreg-warn{font-size:10px;color:var(--amber);margin-top:3px}
.proc-console .dreg-b{display:inline-block;font-size:10.5px;border:1px solid var(--border-dim);
  border-radius:5px;padding:1px 6px;margin:1px 3px 1px 0;color:var(--text-secondary)}
.proc-console .dreg-b.human{border-color:var(--purple);color:var(--purple)}
.proc-console .dreg-b.gate{border-color:var(--amber);color:var(--amber);font-weight:700}
.proc-console .dreg-st{font-family:var(--font-mono);font-size:9px;font-weight:800;text-transform:uppercase;
  border-radius:4px;padding:2px 7px}
.proc-console .dreg-st.st-built{background:var(--green-bg);color:var(--green)}
.proc-console .dreg-st.st-partial{background:var(--amber-bg);color:var(--amber)}
.proc-console .dreg-st.st-missing,.proc-console .dreg-st.st-dead{background:var(--red-bg);color:var(--red)}
.proc-console .scov-o{border:1px solid var(--border-dim);border-radius:9px;padding:10px 12px;margin-bottom:10px;background:var(--bg-card)}
.proc-console .scov-oh{display:flex;align-items:center;gap:9px;margin-bottom:7px;font-size:12.5px}
.proc-console .scov-oh .sec{margin-left:auto;font-size:11px;color:var(--text-muted)}
.proc-console .scov-l{display:flex;align-items:center;gap:7px;flex-wrap:wrap;padding:4px 0;border-top:1px dashed var(--border-dim)}
.proc-console .scov-loc{font-family:var(--font-mono);font-size:10.5px;color:var(--text-secondary);min-width:150px}
.proc-console .scov-step{font-size:11px;border:1px solid var(--border-dim);background:transparent;
  color:var(--text-secondary);border-radius:6px;padding:2px 9px;cursor:pointer;margin:2px 3px 2px 0}
.proc-console .scov-step:hover{border-color:var(--accent);color:var(--accent)}
.proc-console .scov-note{font-size:11.5px;color:var(--text-muted);line-height:1.6;padding:9px 12px;
  border-left:3px solid var(--border-glow);background:var(--bg-card);border-radius:0 8px 8px 0;margin:12px 0}
.proc-console .scov-un{border:1px solid var(--border-dim);border-left:3px solid var(--amber);
  border-radius:0 9px 9px 0;padding:10px 12px;background:var(--bg-card)}
.proc-console .scov-unh{font-size:12px;font-weight:700;color:var(--amber);margin-bottom:6px}
.proc-console .proc-run-summary{margin:0 0 16px;padding:14px 16px;border:1px solid var(--border-dim);border-radius:12px;background:var(--bg-card);display:grid;gap:9px;font-size:12px;color:var(--text-secondary)}
.proc-console .proc-run-summary>div{display:flex;align-items:center;gap:10px;flex-wrap:wrap}.proc-console .proc-run-state{font-weight:800;color:var(--accent)}
.proc-console .proc-run-action{padding:8px 10px;border-radius:8px;background:var(--amber-bg);color:var(--amber)}
.proc-console .proc-run-summary details summary{cursor:pointer;color:var(--text-muted)}.proc-console .proc-run-summary pre{margin-top:8px;max-height:180px;overflow:auto;font-size:10px;white-space:pre-wrap}
