(()=>{const O=window.React,ee=window.KIND_REGISTRY;if(!O)return;const e=O.createElement,g=O.useState,ae=O.useRef,le=O.useEffect,y=window.CONTEXT_TAXONOMY||{},G=window.CONTEXT_DASHBOARDS||[],te=window.CONTEXT_SOURCES||[],L=Object.keys(y),R={};G.forEach(u=>{R[u.id]=u});const P="2026-07-06",se="context-suite-style";function de(){if(document.getElementById(se))return;const u=`
    .ctxsuite{display:flex;flex-direction:column;gap:14px;height:100%;min-height:0;font-size:14px;line-height:1.45;color:var(--app-ink,#e6e3da);font-family:var(--app-font-body,"Inter",system-ui,sans-serif);}
    .ctxsuite *,.ctxsuite *::before,.ctxsuite *::after{box-sizing:border-box;}
    .ctxsuite button{font:inherit;color:inherit;background:none;border:0;cursor:pointer;padding:0;}
    .ctxsuite .mono{font-family:var(--app-font-mono,"JetBrains Mono",SFMono-Regular,monospace);font-variant-numeric:tabular-nums;}

    /* ---- buttons ---- */
    .ctxsuite .btn{display:inline-flex;align-items:center;gap:6px;padding:9px 14px;border-radius:var(--app-radius-sm,6px);font-size:13px;font-weight:600;border:1px solid transparent;white-space:nowrap;}
    .ctxsuite .btn-primary{background:var(--app-accent,#00f3ff);color:var(--app-accent-ink,#0e0e10);}
    .ctxsuite .btn-secondary{background:transparent;border-color:var(--app-accent,#00f3ff);color:var(--app-accent,#00f3ff);}
    .ctxsuite .btn-red{background:var(--app-signal,#f43f6c);color:#fff;border-color:var(--app-signal,#f43f6c);}
    .ctxsuite .btn-ghost{background:transparent;color:var(--app-ink-soft);border-color:var(--app-rule);}
    .ctxsuite .btn-ghost:hover{background:var(--app-elevated,#2a2a2e);color:var(--app-ink,#e6e3da);}
    .ctxsuite .btn-sm{padding:6px 10px;font-size:12px;}
    .ctxsuite .btn:disabled{opacity:.45;cursor:default;}

    /* ---- control row: mode-switch + search + role-switch ---- */
    .ctxsuite .ctrl-row{display:flex;align-items:center;gap:12px;flex-wrap:wrap;}
    .ctxsuite .mode-switch,.ctxsuite .role-switch{display:inline-flex;background:var(--app-elevated,#2a2a2e);border:1px solid var(--app-rule);border-radius:8px;padding:3px;gap:2px;}
    .ctxsuite .mode-switch button,.ctxsuite .role-switch button{display:inline-flex;align-items:center;gap:6px;padding:7px 14px;border-radius:6px;font-size:13px;font-weight:600;color:var(--app-ink-soft);}
    .ctxsuite .mode-switch button.on{background:var(--app-accent-dim);color:var(--app-accent,#00f3ff);}
    .ctxsuite .role-switch button{font-family:var(--app-font-mono,"JetBrains Mono",SFMono-Regular,monospace);font-size:11px;letter-spacing:.04em;padding:6px 11px;}
    .ctxsuite .role-switch button.on{background:var(--app-bg,#0e0e10);color:var(--app-accent,#00f3ff);}
    .ctxsuite .ctx-search{display:flex;align-items:center;gap:8px;height:38px;padding:0 12px;border-radius:8px;background:var(--app-bg,#0e0e10);border:1px solid var(--app-rule);color:var(--app-ink-faint);min-width:200px;flex:1;max-width:360px;}
    .ctxsuite .ctx-search input{background:none;border:0;outline:none;color:var(--app-ink,#e6e3da);font:inherit;font-size:13px;flex:1;}

    /* ---- KPI strip ---- */
    .ctxsuite .kpi-strip{display:grid;grid-template-columns:repeat(auto-fit,minmax(140px,1fr));gap:8px;padding:10px 0;border-top:1px solid var(--app-rule);border-bottom:1px solid var(--app-rule);flex:0 0 auto;}
    .ctxsuite .kpi-tile{padding:8px 14px;border-right:1px solid var(--app-rule-soft);}
    .ctxsuite .kpi-tile:last-child{border-right:none;}
    .ctxsuite .kpi-label{font-size:10px;color:var(--app-ink-faint);text-transform:uppercase;letter-spacing:.14em;}
    .ctxsuite .kpi-value{margin-top:5px;font-family:var(--app-font-mono,"JetBrains Mono",SFMono-Regular,monospace);font-size:22px;color:var(--app-ink,#e6e3da);font-weight:500;font-variant-numeric:tabular-nums;display:flex;align-items:baseline;gap:8px;}
    .ctxsuite .kpi-value small{font-size:12px;color:var(--app-ink-faint);font-weight:400;}

    /* ---- Browse: 3-pane layout ---- */
    .ctxsuite .br-panes{display:grid;grid-template-columns:236px 328px 1fr;gap:12px;align-items:start;flex:1 1 auto;min-height:0;}
    .ctxsuite .br-pane{background:var(--app-surface,#1a1a1c);border:1px solid var(--app-rule);border-radius:var(--app-radius,12px);overflow:hidden;display:flex;flex-direction:column;min-height:0;max-height:100%;}
    .ctxsuite .br-pane.detail{background:var(--app-elevated,#2a2a2e);}
    .ctxsuite .brp-head{padding:10px 13px;border-bottom:1px solid var(--app-rule);display:flex;align-items:center;gap:8px;flex:0 0 auto;}
    .ctxsuite .brp-head .t{font-family:var(--app-font-mono,"JetBrains Mono",SFMono-Regular,monospace);font-size:10px;letter-spacing:.14em;text-transform:uppercase;color:var(--app-ink-faint);}
    .ctxsuite .brp-sort{margin-left:auto;font-family:var(--app-font-mono,"JetBrains Mono",SFMono-Regular,monospace);font-size:10px;color:var(--app-ink-soft);cursor:pointer;}
    .ctxsuite .brp-body{overflow:auto;flex:1;min-height:0;}
    .ctxsuite .seg-row{display:flex;align-items:center;gap:9px;padding:9px 12px;cursor:pointer;border-left:2px solid transparent;}
    .ctxsuite .seg-row:hover{background:var(--app-elevated,#2a2a2e);}
    .ctxsuite .seg-row.on{background:var(--app-accent-dim);border-left-color:var(--app-accent,#00f3ff);}
    .ctxsuite .seg-ic{font-size:15px;flex-shrink:0;}
    .ctxsuite .seg-nm{font-size:13px;font-weight:600;color:var(--app-ink,#e6e3da);flex:1;min-width:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
    .ctxsuite .seg-meta{display:flex;flex-direction:column;align-items:flex-end;gap:4px;flex-shrink:0;}
    .ctxsuite .seg-counts{font-family:var(--app-font-mono,"JetBrains Mono",SFMono-Regular,monospace);font-size:10px;color:var(--app-ink-faint);}
    .ctxsuite .seg-counts .gp{color:var(--app-warn,#f8d974);}
    .ctxsuite .seg-all{border-bottom:1px solid var(--app-rule);background:var(--app-bg,#0e0e10);}
    .ctxsuite .sub-h{font-size:11px;font-weight:700;letter-spacing:.08em;text-transform:uppercase;color:var(--app-ink-faint);padding:9px 13px 5px;}
    .ctxsuite .dp-row{display:flex;align-items:center;gap:9px;padding:8px 13px;cursor:pointer;border-left:2px solid transparent;}
    .ctxsuite .dp-row:hover{background:var(--app-elevated,#2a2a2e);}
    .ctxsuite .dp-row.on{background:var(--app-accent-dim);border-left-color:var(--app-accent,#00f3ff);}
    .ctxsuite .dp-nm{font-size:13px;color:var(--app-ink,#e6e3da);flex:1;min-width:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
    .ctxsuite .dp-row.gap .dp-nm{color:var(--app-ink-faint);}
    .ctxsuite .dp-feeds{font-family:var(--app-font-mono,"JetBrains Mono",SFMono-Regular,monospace);font-size:9px;color:var(--app-accent,#00f3ff);background:var(--app-accent-dim);border-radius:999px;padding:1px 6px;flex-shrink:0;}
    .ctxsuite .dp-src{font-family:var(--app-font-mono,"JetBrains Mono",SFMono-Regular,monospace);font-size:10px;color:var(--app-ink-faint);flex-shrink:0;max-width:96px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
    .ctxsuite .dp-fill{font-family:var(--app-font-mono,"JetBrains Mono",SFMono-Regular,monospace);font-size:10px;color:var(--app-accent,#00f3ff);flex-shrink:0;}

    /* ---- detail pane ---- */
    .ctxsuite .det-wrap{padding:18px;overflow:auto;display:flex;flex-direction:column;gap:14px;min-height:0;}
    .ctxsuite .det-crumb{font-family:var(--app-font-mono,"JetBrains Mono",SFMono-Regular,monospace);font-size:11px;color:var(--app-ink-faint);}
    .ctxsuite .det-title{font-family:var(--app-font-display,"Inter",system-ui,sans-serif);font-weight:800;font-size:22px;letter-spacing:-.01em;line-height:1.15;color:var(--app-ink,#e6e3da);}
    .ctxsuite .det-chips{display:flex;flex-wrap:wrap;gap:8px;align-items:center;}
    .ctxsuite .det-mono{font-family:var(--app-font-mono,"JetBrains Mono",SFMono-Regular,monospace);font-size:11px;color:var(--app-ink-faint);display:inline-flex;align-items:center;gap:5px;}
    .ctxsuite .det-card{background:var(--app-surface,#1a1a1c);border:1px solid var(--app-rule);border-radius:var(--app-radius,12px);padding:15px;}
    .ctxsuite .dc-h{display:flex;align-items:center;gap:8px;margin-bottom:10px;flex-wrap:wrap;}
    .ctxsuite .dc-h .lbl{font-size:11px;font-weight:700;letter-spacing:.06em;text-transform:uppercase;color:var(--app-ink-faint);}
    .ctxsuite .dc-h .edit{margin-left:auto;font-size:12px;color:var(--app-accent,#00f3ff);cursor:pointer;}
    .ctxsuite .det-value{font-size:14px;line-height:1.65;color:var(--app-ink,#e6e3da);white-space:pre-wrap;}
    .ctxsuite .det-value.empty{color:var(--app-ink-faint);font-style:italic;}
    .ctxsuite .det-hint{font-family:var(--app-font-mono,"JetBrains Mono",SFMono-Regular,monospace);font-size:11px;color:var(--app-ink-faint);margin-top:10px;}
    .ctxsuite .det-ta{width:100%;min-height:110px;background:var(--app-bg,#0e0e10);border:1px solid var(--app-rule);border-radius:var(--app-radius-sm,6px);color:var(--app-ink,#e6e3da);padding:11px;font-family:inherit;font-size:14px;line-height:1.6;resize:vertical;margin-bottom:10px;}
    .ctxsuite .det-row{display:flex;gap:9px;align-items:center;flex-wrap:wrap;}
    .ctxsuite .hist{display:flex;flex-direction:column;gap:0;}
    .ctxsuite .hist-item{display:grid;grid-template-columns:14px 1fr;gap:10px;}
    .ctxsuite .hist-rail{display:flex;flex-direction:column;align-items:center;}
    .ctxsuite .hist-node{width:9px;height:9px;border-radius:50%;background:var(--app-ink-faint);margin-top:4px;flex-shrink:0;}
    .ctxsuite .hist-node.ok{background:var(--app-success,#00d4b8);}
    .ctxsuite .hist-node.no{background:var(--app-signal,#f43f6c);}
    .ctxsuite .hist-node.pend{background:var(--app-pending,#b06bff);}
    .ctxsuite .hist-line{width:2px;flex:1;background:var(--app-rule);min-height:14px;}
    .ctxsuite .hist-body{padding-bottom:12px;}
    .ctxsuite .hist-t{font-size:12.5px;color:var(--app-ink,#e6e3da);}
    .ctxsuite .hist-d{font-family:var(--app-font-mono,"JetBrains Mono",SFMono-Regular,monospace);font-size:10px;color:var(--app-ink-faint);}

    /* ---- DatapointDot / TrustBadge / ctx-chip / CoverageMeter (shared primitives) ---- */
    .ctxsuite .dp-dot{width:8px;height:8px;border-radius:50%;display:inline-block;flex-shrink:0;box-sizing:border-box;}
    .ctxsuite .dp-dot.current{background:var(--app-success,#00d4b8);}
    .ctxsuite .dp-dot.stale{background:var(--app-warn,#f8d974);}
    .ctxsuite .dp-dot.gap{background:transparent;border:1.5px solid var(--app-ink-faint);}
    .ctxsuite .dp-dot.pending{background:var(--app-pending,#b06bff);animation:ctxsuitePendPulse 1.8s ease-out infinite;}
    @keyframes ctxsuitePendPulse{0%{box-shadow:0 0 0 0 var(--app-pending-dim);}100%{box-shadow:0 0 0 6px transparent;}}
    .ctxsuite .trust-badge{display:inline-flex;align-items:center;gap:4px;font-size:11px;font-weight:600;padding:2px 8px;border-radius:var(--app-radius-pill,9999px);white-space:nowrap;}
    .ctxsuite .trust-badge.trusted{background:var(--app-accent-dim);color:var(--app-accent,#00f3ff);border:1px solid var(--app-accent,#00f3ff);}
    .ctxsuite .trust-badge.self{background:transparent;color:var(--app-ink-soft);border:1px solid var(--app-rule);}
    .ctxsuite .trust-badge.ai{background:var(--app-pending-dim);color:var(--app-pending,#b06bff);border:1px solid var(--app-pending,#b06bff);}
    .ctxsuite .trust-badge.unverified{background:rgba(248,217,116,.12);color:var(--app-warn,#f8d974);border:1px solid var(--app-warn,#f8d974);}
    .ctxsuite .ctx-chip{display:inline-flex;align-items:center;gap:6px;font-size:11px;font-weight:600;padding:2px 9px;border-radius:var(--app-radius-pill,9999px);white-space:nowrap;border:1px solid var(--app-rule);}
    .ctxsuite .ctx-chip.current{background:rgba(0,212,184,.14);color:var(--app-success,#00d4b8);border-color:var(--app-success,#00d4b8);}
    .ctxsuite .ctx-chip.stale{background:rgba(248,217,116,.14);color:var(--app-warn,#f8d974);border-color:var(--app-warn,#f8d974);}
    .ctxsuite .ctx-chip.gap{background:var(--app-elevated,#2a2a2e);color:var(--app-ink-faint);}
    .ctxsuite .ctx-chip.pending{background:var(--app-pending-dim);color:var(--app-pending,#b06bff);border-color:var(--app-pending,#b06bff);}
    .ctxsuite .cov-meter{display:inline-flex;align-items:center;gap:7px;}
    .ctxsuite .cov-bar{display:flex;height:6px;width:60px;border-radius:999px;overflow:hidden;background:var(--app-bg,#0e0e10);flex-shrink:0;}
    .ctxsuite .cov-bar>span{height:100%;display:block;}
    .ctxsuite .cov-bar .f{background:var(--app-success,#00d4b8);}
    .ctxsuite .cov-bar .s{background:var(--app-warn,#f8d974);}
    .ctxsuite .cov-pct{font-family:var(--app-font-mono,"JetBrains Mono",SFMono-Regular,monospace);font-size:11px;color:var(--app-ink-soft);}

    /* ---- FeedsChips ---- */
    .ctxsuite .feeds-wrap{display:flex;flex-wrap:wrap;gap:7px;}
    .ctxsuite .feed-chip{display:inline-flex;align-items:center;gap:6px;font-size:12px;padding:5px 11px;border-radius:var(--app-radius-pill,9999px);background:var(--app-elevated,#2a2a2e);border:1px solid var(--app-rule);color:var(--app-ink-soft);cursor:pointer;}
    .ctxsuite .feed-chip.on{background:var(--app-accent-dim);border-color:var(--app-accent,#00f3ff);color:var(--app-accent,#00f3ff);}
    .ctxsuite .feed-chip[data-readonly]{cursor:default;}

    /* ---- HoldToConfirm ---- */
    .ctxsuite .hold-btn{position:relative;display:inline-flex;align-items:center;justify-content:center;gap:7px;padding:10px 16px;border-radius:var(--app-radius-sm,6px);font-size:13px;font-weight:700;color:var(--app-accent-ink,#0e0e10);background:var(--app-accent,#00f3ff);overflow:hidden;border:1px solid transparent;user-select:none;touch-action:none;}
    .ctxsuite .hold-btn.signal{background:var(--app-signal,#f43f6c);color:#fff;}
    .ctxsuite .hold-btn .hb-fill{position:absolute;inset:0 auto 0 0;width:0;background:rgba(0,0,0,.28);z-index:0;}
    .ctxsuite .hold-btn.done{background:var(--app-success,#00d4b8);color:var(--app-accent-ink,#0e0e10);}
    .ctxsuite .hold-btn>span{position:relative;z-index:1;}
    .ctxsuite .hold-btn:disabled{opacity:.45;}
    .ctxsuite .hold-hint{font-family:var(--app-font-mono,"JetBrains Mono",SFMono-Regular,monospace);font-size:11px;color:var(--app-ink-faint);}

    /* ---- Assembly ---- */
    .ctxsuite .as-panes{display:grid;grid-template-columns:236px 1fr;gap:12px;align-items:start;flex:1 1 auto;min-height:0;}
    .ctxsuite .as-pane{background:var(--app-surface,#1a1a1c);border:1px solid var(--app-rule);border-radius:var(--app-radius,12px);overflow:auto;display:flex;flex-direction:column;}
    .ctxsuite .as-pane.right{background:transparent;border:0;gap:12px;overflow:visible;}
    .ctxsuite .asp-head{padding:11px 13px;border-bottom:1px solid var(--app-rule);font-family:var(--app-font-mono,"JetBrains Mono",SFMono-Regular,monospace);font-size:10px;letter-spacing:.12em;text-transform:uppercase;color:var(--app-ink-faint);}
    .ctxsuite .dash-row{display:flex;align-items:center;gap:10px;padding:10px 12px;cursor:pointer;border-left:2px solid transparent;}
    .ctxsuite .dash-row:hover{background:var(--app-elevated,#2a2a2e);}
    .ctxsuite .dash-row.on{background:var(--app-accent-dim);border-left-color:var(--app-accent,#00f3ff);}
    .ctxsuite .dash-check{width:17px;height:17px;border-radius:5px;border:1.5px solid var(--app-ink-faint);display:flex;align-items:center;justify-content:center;flex-shrink:0;font-size:11px;color:var(--app-accent-ink,#0e0e10);}
    .ctxsuite .dash-row.on .dash-check{background:var(--app-accent,#00f3ff);border-color:var(--app-accent,#00f3ff);}
    .ctxsuite .dash-ic{font-size:15px;color:var(--app-ink-soft);}
    .ctxsuite .dash-row.on .dash-ic{color:var(--app-accent,#00f3ff);}
    .ctxsuite .dash-nm{font-size:13px;font-weight:600;flex:1;min-width:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
    .ctxsuite .dash-dp{font-family:var(--app-font-mono,"JetBrains Mono",SFMono-Regular,monospace);font-size:10px;color:var(--app-ink-faint);}
    .ctxsuite .combine-hint{padding:9px 13px;font-family:var(--app-font-mono,"JetBrains Mono",SFMono-Regular,monospace);font-size:11px;color:var(--app-accent,#00f3ff);border-top:1px solid var(--app-rule);}
    .ctxsuite .as-title{font-family:var(--app-font-display,"Inter",system-ui,sans-serif);font-weight:800;font-size:22px;letter-spacing:-.01em;color:var(--app-ink,#e6e3da);}
    .ctxsuite .as-crumb{font-family:var(--app-font-mono,"JetBrains Mono",SFMono-Regular,monospace);font-size:11px;color:var(--app-ink-faint);margin-bottom:4px;}
    .ctxsuite .as-note{font-size:12.5px;color:var(--app-ink-soft);margin-top:4px;margin-bottom:10px;}
    .ctxsuite .gauge-card{background:var(--app-surface,#1a1a1c);border:1px solid var(--app-rule);border-radius:var(--app-radius,12px);border-top:3px solid var(--app-accent,#00f3ff);padding:18px;display:flex;flex-direction:column;gap:14px;margin-bottom:12px;}
    .ctxsuite .gauge-card.over{border-top-color:var(--app-fail,#f43f6c);}
    .ctxsuite .gauge-top{display:flex;align-items:flex-end;gap:16px;flex-wrap:wrap;}
    .ctxsuite .token-gauge{display:flex;flex-direction:column;gap:10px;flex:1;min-width:220px;}
    .ctxsuite .tg-track{position:relative;height:22px;border-radius:6px;background:var(--app-bg,#0e0e10);border:1px solid var(--app-rule);overflow:hidden;}
    .ctxsuite .tg-fill{position:absolute;inset:0 auto 0 0;height:100%;background:linear-gradient(90deg,var(--app-success,#00d4b8),var(--app-accent,#00f3ff));transition:width 420ms cubic-bezier(.23,1,.32,1);}
    .ctxsuite .tg-fill.warn{background:linear-gradient(90deg,var(--app-warn,#f8d974),var(--app-warn,#f8d974));}
    .ctxsuite .tg-fill.over{background:linear-gradient(90deg,var(--app-warn,#f8d974),var(--app-fail,#f43f6c));}
    .ctxsuite .tg-ticks{position:absolute;inset:0;display:flex;pointer-events:none;}
    .ctxsuite .tg-ticks span{border-right:1px solid rgba(14,14,16,.55);}
    .ctxsuite .tg-nums{display:flex;align-items:baseline;gap:8px;font-family:var(--app-font-mono,"JetBrains Mono",SFMono-Regular,monospace);}
    .ctxsuite .tg-nums .used{font-size:26px;font-weight:700;color:var(--app-ink,#e6e3da);}
    .ctxsuite .tg-nums .budget{font-size:14px;color:var(--app-ink-faint);}
    .ctxsuite .gauge-right{text-align:right;font-family:var(--app-font-mono,"JetBrains Mono",SFMono-Regular,monospace);font-size:12px;color:var(--app-ink-soft);display:flex;flex-direction:column;gap:8px;align-items:flex-end;}
    .ctxsuite .budget-step{display:inline-flex;align-items:center;gap:8px;font-family:var(--app-font-mono,"JetBrains Mono",SFMono-Regular,monospace);font-size:12px;color:var(--app-ink-soft);background:var(--app-bg,#0e0e10);border:1px solid var(--app-rule);border-radius:var(--app-radius-sm,6px);padding:4px 6px;}
    .ctxsuite .budget-step button{width:22px;height:22px;border-radius:4px;background:var(--app-elevated,#2a2a2e);color:var(--app-ink,#e6e3da);display:flex;align-items:center;justify-content:center;}
    .ctxsuite .budget-step button:hover{background:var(--app-accent-dim);color:var(--app-accent,#00f3ff);}
    .ctxsuite .over-banner{display:flex;align-items:center;gap:10px;padding:10px 13px;border-radius:var(--app-radius-sm,6px);background:rgba(244,63,108,.10);border:1px solid var(--app-fail,#f43f6c);font-size:13px;color:var(--app-ink,#e6e3da);}
    .ctxsuite .over-banner b{color:var(--app-fail,#f43f6c);}
    .ctxsuite .gauge-actions{display:flex;gap:8px;flex-wrap:wrap;}
    .ctxsuite .seg-block{background:var(--app-surface,#1a1a1c);border:1px solid var(--app-rule);border-radius:var(--app-radius,12px);overflow:hidden;margin-bottom:10px;}
    .ctxsuite .seg-block-h{display:flex;align-items:center;gap:8px;padding:9px 14px;background:var(--app-bg,#0e0e10);border-bottom:1px solid var(--app-rule);}
    .ctxsuite .seg-block-h .nm{font-size:11px;font-weight:700;letter-spacing:.06em;text-transform:uppercase;color:var(--app-ink-faint);flex:1;}
    .ctxsuite .seg-block-h .sub{font-family:var(--app-font-mono,"JetBrains Mono",SFMono-Regular,monospace);font-size:11px;color:var(--app-ink-soft);}
    .ctxsuite .ic-row{display:flex;align-items:center;gap:10px;padding:9px 14px;border-bottom:1px solid var(--app-rule-soft);}
    .ctxsuite .ic-row:last-child{border-bottom:0;}
    .ctxsuite .ic-row.stale{box-shadow:inset 3px 0 0 var(--app-warn,#f8d974);}
    .ctxsuite .ic-nm{font-size:13px;color:var(--app-ink,#e6e3da);flex:1;min-width:0;}
    .ctxsuite .ic-x{font-family:var(--app-font-mono,"JetBrains Mono",SFMono-Regular,monospace);font-size:9px;color:var(--app-ink-faint);background:var(--app-elevated,#2a2a2e);border-radius:999px;padding:1px 6px;}
    .ctxsuite .ic-tok{font-family:var(--app-font-mono,"JetBrains Mono",SFMono-Regular,monospace);font-size:12px;color:var(--app-ink-soft);flex-shrink:0;}
    .ctxsuite .miss-card{background:rgba(248,217,116,.07);border:1px solid var(--app-warn,#f8d974);border-radius:var(--app-radius,12px);overflow:hidden;}
    .ctxsuite .miss-h{display:flex;align-items:center;gap:8px;padding:11px 14px;border-bottom:1px solid rgba(248,217,116,.22);font-size:13px;font-weight:600;color:var(--app-warn,#f8d974);}
    .ctxsuite .miss-row{display:flex;align-items:center;gap:10px;padding:9px 14px;border-bottom:1px dashed var(--app-rule);}
    .ctxsuite .miss-row:last-child{border-bottom:0;}
    .ctxsuite .miss-seg{font-family:var(--app-font-mono,"JetBrains Mono",SFMono-Regular,monospace);font-size:10px;color:var(--app-ink-faint);}
    .ctxsuite .miss-nm{font-size:13px;color:var(--app-ink-faint);flex:1;}
    .ctxsuite .miss-fill{font-family:var(--app-font-mono,"JetBrains Mono",SFMono-Regular,monospace);font-size:11px;color:var(--app-accent,#00f3ff);cursor:pointer;}

    /* ---- preview-prompt modal ---- */
    .ctxsuite .pv-scrim{position:fixed;inset:0;background:rgba(14,14,16,.74);backdrop-filter:blur(5px);z-index:70;display:flex;align-items:center;justify-content:center;padding:32px;}
    .ctxsuite .pv{width:min(760px,94vw);max-height:86vh;display:flex;flex-direction:column;background:var(--app-surface,#1a1a1c);border:1px solid var(--app-rule);border-radius:var(--app-radius,12px);box-shadow:var(--app-shadow,0 10px 30px -12px rgba(0,0,0,.6));}
    .ctxsuite .pv-head{display:flex;align-items:center;gap:10px;padding:14px 18px;border-bottom:1px solid var(--app-rule);}
    .ctxsuite .pv-head .t{font-family:var(--app-font-display,"Inter",system-ui,sans-serif);font-weight:800;font-size:16px;flex:1;}
    .ctxsuite .pv-head .x{font-size:18px;color:var(--app-ink-faint);cursor:pointer;}
    .ctxsuite .pv-doc{overflow:auto;padding:18px;font-family:var(--app-font-mono,"JetBrains Mono",SFMono-Regular,monospace);font-size:12px;line-height:1.7;color:var(--app-ink-soft);white-space:pre-wrap;}
    .ctxsuite .pv-foot{display:flex;gap:8px;padding:12px 18px;border-top:1px solid var(--app-rule);}

    /* ---- Sources ---- */
    .ctxsuite .gov-panes{display:grid;grid-template-columns:1fr 340px;gap:12px;align-items:start;flex:1 1 auto;min-height:0;}
    .ctxsuite .reg-card{background:var(--app-surface,#1a1a1c);border:1px solid var(--app-rule);border-radius:var(--app-radius,12px);overflow:auto;}
    .ctxsuite .reg-h{padding:14px 16px;border-bottom:1px solid var(--app-rule);}
    .ctxsuite .reg-h .t{font-size:15px;font-weight:700;color:var(--app-ink,#e6e3da);}
    .ctxsuite .reg-h .s{font-size:12px;color:var(--app-ink-soft);margin-top:3px;max-width:70ch;}
    .ctxsuite .reg-actions{display:flex;gap:8px;padding:12px 16px;border-bottom:1px solid var(--app-rule);align-items:center;}
    .ctxsuite .reg-thead,.ctxsuite .reg-row{display:grid;grid-template-columns:1.9fr .8fr 1fr .8fr 1fr auto;gap:10px;align-items:center;}
    .ctxsuite .reg-thead{padding:9px 16px;background:var(--app-bg,#0e0e10);border-bottom:1px solid var(--app-rule);font-size:10px;font-weight:600;letter-spacing:.1em;text-transform:uppercase;color:var(--app-ink-faint);}
    .ctxsuite .reg-row{padding:11px 16px;border-bottom:1px solid var(--app-rule-soft);}
    .ctxsuite .reg-row:last-child{border-bottom:0;}
    .ctxsuite .reg-row:hover{background:var(--app-elevated,#2a2a2e);}
    .ctxsuite .reg-src b{display:block;font-size:13px;color:var(--app-ink,#e6e3da);}
    .ctxsuite .reg-src .n{font-size:11px;color:var(--app-ink-faint);}
    .ctxsuite .reg-type{font-size:11px;color:var(--app-ink-soft);}
    .ctxsuite .reg-feeds{font-family:var(--app-font-mono,"JetBrains Mono",SFMono-Regular,monospace);font-size:12px;color:var(--app-accent,#00f3ff);}
    .ctxsuite .reg-sync{font-family:var(--app-font-mono,"JetBrains Mono",SFMono-Regular,monospace);font-size:11px;color:var(--app-ink-soft);}
    .ctxsuite .reg-check{font-size:11px;color:var(--app-ink-soft);display:inline-flex;align-items:center;gap:4px;cursor:pointer;white-space:nowrap;padding:5px 9px;border:1px solid var(--app-rule);border-radius:var(--app-radius-sm,6px);}
    .ctxsuite .reg-check:hover{border-color:var(--app-accent,#00f3ff);color:var(--app-accent,#00f3ff);}
    .ctxsuite .role-note{font-family:var(--app-font-mono,"JetBrains Mono",SFMono-Regular,monospace);font-size:11px;color:var(--app-ink-faint);}

    /* ---- acceptance queue rail ---- */
    .ctxsuite .queue{background:var(--app-elevated,#2a2a2e);border:1px solid var(--app-rule);border-radius:var(--app-radius,12px);display:flex;flex-direction:column;overflow:hidden;position:sticky;top:12px;max-height:100%;}
    .ctxsuite .queue-h{display:flex;align-items:center;gap:8px;padding:14px 16px;border-bottom:1px solid var(--app-rule);}
    .ctxsuite .queue-h .t{font-size:14px;font-weight:700;}
    .ctxsuite .queue-badge{font-family:var(--app-font-mono,"JetBrains Mono",SFMono-Regular,monospace);font-size:11px;background:var(--app-pending-dim);color:var(--app-pending,#b06bff);border-radius:999px;padding:2px 9px;}
    .ctxsuite .policy-line{padding:9px 16px;background:rgba(176,107,255,.07);border-bottom:1px solid var(--app-rule);font-size:11.5px;color:var(--app-ink-soft);}
    .ctxsuite .queue-body{display:flex;flex-direction:column;gap:10px;padding:12px;overflow:auto;}

    /* ---- AcceptanceCard ---- */
    .ctxsuite .accept-card{background:var(--app-surface,#1a1a1c);border:1px solid var(--app-rule);border-radius:var(--app-radius,12px);padding:14px;display:flex;flex-direction:column;gap:11px;}
    .ctxsuite .accept-card.ai{border-color:var(--app-pending,#b06bff);box-shadow:inset 2px 0 0 var(--app-pending,#b06bff);}
    .ctxsuite .ac-head{display:flex;align-items:center;gap:8px;flex-wrap:wrap;}
    .ctxsuite .ac-type{font-family:var(--app-font-mono,"JetBrains Mono",SFMono-Regular,monospace);font-size:10px;letter-spacing:.1em;text-transform:uppercase;padding:2px 8px;border-radius:var(--app-radius-pill,9999px);background:var(--app-accent-dim);color:var(--app-accent,#00f3ff);}
    .ctxsuite .ac-type.trust{background:rgba(0,212,184,.14);color:var(--app-success,#00d4b8);}
    .ctxsuite .ac-type.source{background:var(--app-elevated,#2a2a2e);color:var(--app-ink-soft);}
    .ctxsuite .ac-target{font-size:13px;font-weight:600;color:var(--app-ink,#e6e3da);}
    .ctxsuite .ac-meta{font-family:var(--app-font-mono,"JetBrains Mono",SFMono-Regular,monospace);font-size:11px;color:var(--app-ink-faint);}
    .ctxsuite .ac-diff{display:flex;flex-direction:column;gap:3px;background:var(--app-bg,#0e0e10);border:1px solid var(--app-rule);border-radius:var(--app-radius-sm,6px);padding:9px 11px;font-family:var(--app-font-mono,"JetBrains Mono",SFMono-Regular,monospace);font-size:11.5px;line-height:1.5;max-height:100px;overflow:auto;}
    .ctxsuite .ac-diff .del{color:var(--app-signal,#f43f6c);}
    .ctxsuite .ac-diff .add{color:var(--app-success,#00d4b8);}
    .ctxsuite .ac-actions{display:flex;align-items:center;gap:8px;flex-wrap:wrap;}
    .ctxsuite .ac-locked{font-family:var(--app-font-mono,"JetBrains Mono",SFMono-Regular,monospace);font-size:11px;color:var(--app-ink-faint);}
    .ctxsuite .queue-empty{padding:20px 12px;text-align:center;font-size:12px;color:var(--app-ink-faint);}

    @media(max-width:980px){.ctxsuite .br-panes,.ctxsuite .as-panes,.ctxsuite .gov-panes{grid-template-columns:1fr;}}
    `,m=document.createElement("style");m.id=se,m.textContent=u,document.head.appendChild(m)}function _(){const u=[];for(const m of L){const h=y[m];for(const x in h.subs)for(const z of h.subs[x].dps)u.push({dp:z,seg:m,sub:x,subLabel:h.subs[x].label})}return u}function $(){const u=_().map(b=>b.dp),m=u.length,h=u.filter(b=>b.status==="filled").length,x=u.filter(b=>b.status==="empty").length,z=u.filter(b=>b.status==="stale").length,v=u.filter(b=>b.status==="pending").length,S=m?Math.round(h/m*100):0;return{total:m,filled:h,gaps:x,stale:z,pending:v,coverage:S}}function W(u){return u==="filled"?"current":u==="empty"?"gap":u}function oe(u){const[m,h]=g(0),[x,z]=g(!1),v=ae(null),S=ae(0);le(()=>()=>{v.current&&clearInterval(v.current)},[]);function b(F){u.disabled||x||(F.preventDefault(),S.current=Date.now(),v.current&&clearInterval(v.current),v.current=setInterval(()=>{const V=Math.min((Date.now()-S.current)/3e3,1);h(V),V>=1&&(clearInterval(v.current),z(!0),u.onConfirm&&u.onConfirm())},50))}function B(){v.current&&clearInterval(v.current),x||h(0)}return e("button",{className:`hold-btn${u.tone==="signal"?" signal":""}${x?" done":""}`,disabled:u.disabled,onPointerDown:b,onPointerUp:B,onPointerLeave:B},[e("span",{className:"hb-fill",key:"f",style:{width:`${m*100}%`}}),e("span",{key:"l"},x?u.doneLabel||"Done \u2713":u.label)])}function Y(u){de();const[m,h]=g("browse"),[x,z]=g("admin"),[v,S]=g(L[0]),[b,B]=g(!1),[F,V]=g("gaps"),[w,j]=g(null),[J,ue]=g(""),[fe,H]=g(null),[A,xe]=g(["marketing"]),[ge,ne]=g(0),[me,U]=g(!1),[K,T]=g([]),[,ve]=g(0),Q=()=>ve(a=>a+1),C=x==="admin"||x==="director",E=$(),[ie,re]=g(null);async function X(a,n){try{const i=window.CANVAS_ACTIONS;if(!i||typeof i.dispatch!="function")throw new Error("write-engine unavailable (view-only mode?)");return await i.dispatch(`context.${a}`,n,{confirm:!0}),re(null),!0}catch(i){return re(`Sync failed (${i&&i.message}). Your change is saved locally.`),!1}}function pe(a){if(navigator.clipboard&&navigator.clipboard.writeText){navigator.clipboard.writeText(a).catch(()=>{});return}try{const n=document.createElement("textarea");n.value=a,n.style.position="fixed",n.style.opacity="0",document.body.appendChild(n),n.select(),document.execCommand("copy"),document.body.removeChild(n)}catch{}}function D(a,n,i,c){const o={success:"var(--app-success,#00d4b8)",warn:"var(--app-warn,#f8d974)",pending:"var(--app-pending,#b06bff)"};return e("div",{className:"kpi-tile",key:a},[e("div",{className:"kpi-label",key:"l"},a),e("div",{className:"kpi-value",key:"v",style:i?{color:o[i]}:void 0},[String(n),c?e("small",{key:"s"},c):null])])}function be(){return e("div",{className:"ctrl-row",key:"ctrl"},[e("div",{className:"mode-switch",key:"m"},["browse","assembly","sources"].map(a=>e("button",{key:a,className:m===a?"on":"",onClick:()=>h(a)},a[0].toUpperCase()+a.slice(1)))),e("div",{className:"ctx-search",key:"s"},e("input",{placeholder:"Find a snippet\u2026 (tone, VAT, ICP)",value:J,onChange:a=>{ue(a.target.value),a.target.value&&h("browse")}})),e("div",{className:"role-switch",key:"r"},["viewer","admin","director"].map(a=>e("button",{key:a,className:x===a?"on":"",onClick:()=>z(a)},a[0].toUpperCase()+a.slice(1))))])}function ke(){return e("div",{className:"kpi-strip",key:"kpi"},[D("Datapoints",E.total),D("Filled",E.filled,"success"),D("Gaps",E.gaps),D("Stale",E.stale,"warn"),D("Coverage",E.coverage,null,"%"),D("Pending",E.pending,"pending")])}function ye(a){if(!J)return!0;const n=J.toLowerCase();return`${a.name} ${a.val} ${a.src}`.toLowerCase().indexOf(n)>=0}function he(){return L.map(a=>{const n=y[a];let i=0,c=0,o=0;for(const p in n.subs)for(const t of n.subs[p].dps)i++,t.status==="filled"?c++:t.status==="empty"&&o++;return{sk:a,seg:n,n:i,f:c,g:o,other:i-c-o}})}function ce(a){const n=a.n||1,i=Math.round(a.f/n*100),c=Math.round(a.other/n*100),o=a.n?Math.round(a.f/a.n*100):0;return e("span",{className:"cov-meter"},[e("span",{className:"cov-bar",key:"b"},[e("span",{className:"f",key:"f",style:{width:`${i}%`}}),e("span",{className:"s",key:"s",style:{width:`${c}%`}})]),e("span",{className:"cov-pct",key:"p"},`${o}%`)])}function we(){const a=he(),n=a.reduce((o,p)=>({n:o.n+p.n,f:o.f+p.f,g:o.g+p.g,other:o.other+p.other}),{n:0,f:0,g:0,other:0}),i=[...a];F==="gaps"?i.sort((o,p)=>p.g-o.g):F==="stale"?i.sort((o,p)=>p.other-o.other):i.sort((o,p)=>o.seg.label.localeCompare(p.seg.label));const c=F==="gaps"?"Most gaps":F==="stale"?"Most stale":"A\u2013Z";return e("div",{className:"br-pane",key:"segcol"},[e("div",{className:"brp-head",key:"h"},[e("span",{className:"t",key:"t"},"Segments"),e("span",{className:"brp-sort",key:"s",onClick:()=>V(o=>o==="gaps"?"stale":o==="stale"?"az":"gaps")},`${c} \u2195`)]),e("div",{className:"brp-body",key:"b"},[e("div",{key:"all",className:`seg-row seg-all${b?" on":""}`,onClick:()=>{B(!0),j(null)}},[e("span",{className:"seg-ic",key:"i"},"\u25CE"),e("span",{className:"seg-nm",key:"n"},"All segments"),e("span",{className:"seg-meta",key:"m"},[ce(n),e("span",{className:"seg-counts",key:"c"},[`${n.n}`,n.g?e("span",{className:"gp",key:"g"},` \xB7 ${n.g}\u2300`):null])])]),...i.map(o=>e("div",{key:o.sk,className:`seg-row${!b&&o.sk===v?" on":""}`,onClick:()=>{S(o.sk),B(!1),j(null)}},[e("span",{className:"seg-ic",key:"i"},o.seg.icon),e("span",{className:"seg-nm",key:"n"},o.seg.label),e("span",{className:"seg-meta",key:"m"},[ce(o),e("span",{className:"seg-counts",key:"c"},[`${o.n}`,o.g?e("span",{className:"gp",key:"g"},` \xB7 ${o.g}\u2300`):null])])]))])])}function Z(a,n,i,c){const o=w&&w.ref.id===a.id&&w.seg===n,p=a.status==="empty",t=[e("span",{className:`dp-dot ${W(a.status)}`,key:"d"}),e("span",{className:"dp-nm",key:"n"},a.name)];return p?t.push(e("span",{className:"dp-fill",key:"f"},"+ fill")):(a.feeds.length&&t.push(e("span",{className:"dp-feeds",key:"fe"},`\u25B8${a.feeds.length}`)),t.push(e("span",{className:"dp-src",key:"s"},a.src))),e("div",{key:n+i+a.id,className:`dp-row${o?" on":""}${p?" gap":""}`,onClick:()=>j({ref:a,seg:n,sub:i,subLabel:c})},t)}function Ne(){const a=[];let n,i;if(J){n=`Search: "${J}"`,i=0;for(const c of L){const o=y[c];for(const p in o.subs){const t=o.subs[p],r=t.dps.filter(ye);if(r.length){i+=r.length,a.push(e("div",{className:"sub-h",key:`${c}${p}`},`${o.label} \u203A ${t.label}`));for(const k of r)a.push(Z(k,c,p,t.label))}}}i||a.push(e("div",{className:"det-mono",key:"no",style:{padding:14}},`No snippet matches "${J}".`))}else if(b){n="All segments",i=0;for(const c of L){const o=y[c];for(const p in o.subs){const t=o.subs[p];i+=t.dps.length,a.push(e("div",{className:"sub-h",key:`${c}${p}`},`${o.label} \u203A ${t.label}`));for(const r of t.dps)a.push(Z(r,c,p,t.label))}}}else{n=y[v].label;const c=y[v];i=0;for(const o in c.subs){const p=c.subs[o];i+=p.dps.length,a.push(e("div",{className:"sub-h",key:o},p.label));for(const t of p.dps)a.push(Z(t,v,o,p.label))}}return e("div",{className:"br-pane",key:"subcol"},[e("div",{className:"brp-head",key:"h"},[e("span",{className:"t",key:"t"},n),e("span",{className:"det-mono",key:"c",style:{marginLeft:"auto"}},`${i} dp`)]),e("div",{className:"brp-body",key:"b"},a)])}function Me(a){return a==="trusted"?e("span",{className:"trust-badge trusted",key:"tr"},"\u2713 trusted"):a==="self"?e("span",{className:"trust-badge self",key:"tr"},"self-authored"):a==="ai"?e("span",{className:"trust-badge ai",key:"tr"},"\u2726 AI-proposed"):null}function $e(a){const n=[];return a.trust==="ai"?n.push({k:"pend",t:`AI-drafted from ${a.src} \u2014 awaiting review`,d:a.updated}):a.status==="stale"?n.push({k:"no",t:"Marked stale \u2014 upstream source drifted",d:a.updated}):n.push({k:"ok",t:`Verified via ${a.src}`,d:a.updated}),n.push({k:"ok",t:`Owned by ${a.owner}`,d:a.updated}),n}function ze(){if(!w)return e("div",{className:"br-pane detail",key:"detail"},[e("div",{className:"det-wrap",key:"w"},e("div",{className:"det-mono",style:{textAlign:"center",marginTop:60}},"Pick a datapoint to view it \u2014 one at a time, never a wall of text."))]);const a=w.ref,n=a.status==="empty",i=fe===a.id;function c(){const f=document.getElementById("ctxsuite-edit-ta"),d=f?f.value:a.val;x==="director"?(a.val=d,a.status="filled",a.trust==="-"&&(a.trust="self"),a.updated=P,X("datapoint.update",{segment:w.seg,subsegment:w.sub,datapoint_id:a.id,patch:{val:d,status:"filled",trust:a.trust}})):(a.status="pending",T(M=>[...M,{type:"update",seg:w.seg,sub:w.sub,ref:a,name:a.name,was:a.val,val:d,by:"Admin"}])),H(null),Q()}function o(){x==="director"?a.trust="trusted":T(f=>[...f,{type:"trust",seg:w.seg,sub:w.sub,ref:a,name:a.name,by:"Admin"}]),Q()}const p=[e("span",{className:`ctx-chip ${W(a.status)}`,key:"st"},n?"gap \xB7 unfilled":a.status),Me(a.trust),e("span",{className:"det-mono",key:"sr"},`src: ${a.src}`),e("span",{className:"det-mono",key:"ow"},`owner: ${a.owner}`),e("span",{className:"det-mono",key:"up"},`updated: ${a.updated}`),e("span",{className:"det-mono",key:"tk"},`~${a.tokens} tok`)];let t;i?t=e("div",{className:"det-card",key:"v"},[e("div",{className:"dc-h",key:"h"},e("span",{className:"lbl"},"Context value")),e("textarea",{key:"ta",id:"ctxsuite-edit-ta",className:"det-ta",defaultValue:n?"":a.val}),e("div",{className:"det-row",key:"r"},[e(oe,{key:"hc",label:n?"Hold to propose fill (3s)":"Hold to propose update (3s)",doneLabel:"Queued \u2713",onConfirm:c}),e("button",{className:"btn btn-ghost btn-sm",key:"c",onClick:()=>H(null)},"Cancel")]),ie?e("div",{className:"det-row",key:"err",style:{color:"var(--app-signal,#ff5f6e)",fontSize:"12px"}},ie):null]):n?t=e("div",{className:"det-card",key:"v",style:{borderStyle:"dashed",textAlign:"center",padding:"26px"}},[e("div",{key:"m",className:"det-mono",style:{marginBottom:10}},"\u2014 no context captured yet for this datapoint \u2014"),C?e("button",{className:"btn btn-secondary btn-sm",key:"b",onClick:()=>H(a.id)},"Propose a value"):e("div",{className:"det-mono",key:"b"},"Viewer role \u2014 read-only.")]):t=e("div",{className:"det-card",key:"v"},[e("div",{className:"dc-h",key:"h"},[e("span",{className:"lbl",key:"l"},"Context value"),C?e("span",{className:"edit",key:"e",onClick:()=>H(a.id)},"Edit"):null]),e("div",{className:"det-value",key:"v"},a.val)]);const r=e("div",{className:"det-card",key:"f"},[e("div",{className:"dc-h",key:"h"},e("span",{className:"lbl"},`Feeds these dashboards\u2019 LLM context${C?" \u2014 click to toggle":""}`)),e("div",{className:"feeds-wrap",key:"w"},G.map(f=>{const d=a.feeds.indexOf(f.id)>=0,M={key:f.id,className:`feed-chip${d?" on":""}`};return C?M.onClick=()=>{const I=a.feeds.indexOf(f.id);I>=0?a.feeds.splice(I,1):a.feeds.push(f.id),Q()}:M["data-readonly"]="true",e("span",M,`${f.icon} ${f.label}${d?" \u2713":""}`)}))]),k=n?null:e("div",{className:"det-card",key:"lin"},[e("div",{className:"dc-h",key:"h"},e("span",{className:"lbl"},"Lineage")),e("div",{className:"hist",key:"hi"},$e(a).map((f,d,M)=>e("div",{className:"hist-item",key:d},[e("div",{className:"hist-rail",key:"r"},[e("span",{className:`hist-node ${f.k}`,key:"n"}),d<M.length-1?e("span",{className:"hist-line",key:"l"}):null]),e("div",{className:"hist-body",key:"b"},[e("div",{className:"hist-t",key:"t"},f.t),e("div",{className:"hist-d",key:"d"},f.d)])])))]);return e("div",{className:"br-pane detail",key:"detail"},[e("div",{className:"det-wrap",key:"w"},[e("div",{className:"det-crumb",key:"c"},`${y[w.seg].label} \u203A ${w.subLabel}`),e("div",{className:"det-title",key:"t"},a.name),e("div",{className:"det-chips",key:"ch"},p),t,!i&&C?e("div",{className:"det-row",key:"a"},[e("button",{className:"btn btn-ghost btn-sm",key:"tr",onClick:o},"Mark trusted-source"),e("span",{className:"det-mono",key:"h"},x==="director"?"As Director you can approve directly.":"Admin edits become acceptance requests for a Director.")]):null,r,k])])}function Se(){return e("div",{className:"br-panes",key:"view"},[we(),Ne(),ze()])}function Ce(){const a=new Set(A),n=_().filter(s=>s.dp.feeds.some(l=>a.has(l))),i=n.filter(s=>s.dp.status==="filled"||s.dp.status==="stale"),c=n.filter(s=>s.dp.status==="empty"),o=i.reduce((s,l)=>s+l.dp.tokens,0),p=A.reduce((s,l)=>s+R[l].budget,0),t=Math.max(1e3,p+ge),r=o>t,k=Math.min(100,Math.round(o/t*100)),f=!r&&k>=85,d={};for(const s of i)d[s.seg]||(d[s.seg]=[]),d[s.seg].push(s);function M(s){return A.filter(l=>s.feeds.indexOf(l)>=0).length}function I(){let s=`# Assembled context \u2014 ${A.map(l=>`${R[l].icon} ${R[l].label}`).join(" + ")}
`;s+=`# ${o} / ${t} tokens \xB7 ${i.length} datapoints

`;for(const l of Object.keys(d)){s+=`## ${y[l].icon} ${y[l].label}
`;for(const N of d[l])s+=`- ${N.dp.name}: ${N.dp.val}
`;s+=`
`}return s}const Fe=e("div",{className:"as-pane",key:"pick"},[e("div",{className:"asp-head",key:"h"},"Dashboards (combine)"),...G.map(s=>{const l=a.has(s.id),N=_().filter(q=>q.dp.feeds.indexOf(s.id)>=0).length;return e("div",{key:s.id,className:`dash-row${l?" on":""}`,onClick:()=>xe(q=>l?q.length>1?q.filter(De=>De!==s.id):q:[...q,s.id])},[e("span",{className:"dash-check",key:"c"},l?"\u2713":""),e("span",{className:"dash-ic",key:"i"},s.icon),e("span",{className:"dash-nm",key:"n"},s.label),e("span",{className:"dash-dp",key:"d"},`${N} dp`)])}),e("div",{className:"combine-hint",key:"hint"},"Click to combine multiple dashboards \u2014 union view, deduplicated.")]),Je=e("div",{className:`gauge-card${r?" over":""}`,key:"gauge"},[e("div",{className:"gauge-top",key:"top"},[e("div",{className:"token-gauge",key:"tg"},[e("div",{className:"tg-nums",key:"n"},[e("span",{className:"used",key:"u"},`${o}`),e("span",{className:"budget",key:"b"},`/ ${t} tok`)]),e("div",{className:"tg-track",key:"t"},[e("div",{className:`tg-fill${r?" over":f?" warn":""}`,key:"f",style:{width:`${k}%`}}),e("div",{className:"tg-ticks",key:"tk"},Object.keys(d).map(s=>e("span",{key:s,style:{flexGrow:d[s].reduce((l,N)=>l+N.dp.tokens,0)||1}})))])]),e("div",{className:"gauge-right",key:"r"},[e("div",{key:"c"},`${i.length} datapoints \xB7 ${c.length} gaps`),e("div",{className:"budget-step",key:"s"},[e("button",{key:"m",onClick:()=>ne(s=>s-1e3)},"\u2212"),e("span",{key:"v"},"budget"),e("button",{key:"p",onClick:()=>ne(s=>s+1e3)},"+")])])]),r?e("div",{className:"over-banner",key:"over"},[e("b",{key:"b"},"Over budget. "),"Trim datapoints or raise the budget before assembling."]):null,e("div",{className:"gauge-actions",key:"actions"},[e("button",{className:"btn btn-primary",key:"pv",onClick:()=>U(!0)},"Preview assembled prompt"),e("button",{className:"btn btn-secondary",key:"cp",onClick:()=>pe(I())},"Copy context")])]),Ae=e("div",{key:"in"},[...Object.keys(d).flatMap(s=>[e("div",{className:"seg-block",key:`blk${s}`},[e("div",{className:"seg-block-h",key:"h"},[e("span",{key:"i"},y[s].icon),e("span",{className:"nm",key:"n"},y[s].label),e("span",{className:"sub",key:"s"},`${d[s].reduce((l,N)=>l+N.dp.tokens,0)} tok`)]),...d[s].map(l=>{const N=M(l.dp);return e("div",{key:l.dp.id,className:`ic-row${l.dp.status==="stale"?" stale":""}`},[e("span",{className:`dp-dot ${W(l.dp.status)}`,key:"d"}),e("span",{className:"ic-nm",key:"n"},l.dp.name),N>1?e("span",{className:"ic-x",key:"x"},`\xD7${N} dashboards`):null,e("span",{className:"ic-tok",key:"t"},`${l.dp.tokens} tok`)])})])])]),Te=c.length?e("div",{className:"miss-card",key:"miss"},[e("div",{className:"miss-h",key:"h"},`\u26A0 Missing from context (${c.length}) \u2014 bound but empty`),...c.map(s=>e("div",{key:s.seg+s.dp.id,className:"miss-row"},[e("span",{className:"dp-dot gap",key:"d"}),e("span",{className:"miss-seg",key:"s"},y[s.seg].label),e("span",{className:"miss-nm",key:"n"},s.dp.name),e("span",{className:"miss-fill",key:"f",onClick:()=>{h("browse"),B(!1),S(s.seg),j({ref:s.dp,seg:s.seg,sub:s.sub,subLabel:s.subLabel})}},"fill \u2192")]))]):null,Ee=me?e("div",{className:"pv-scrim",key:"scrim",onClick:s=>{s.target===s.currentTarget&&U(!1)}},e("div",{className:"pv",onClick:s=>s.stopPropagation()},[e("div",{className:"pv-head",key:"h"},[e("span",{className:"t",key:"t"},"Preview assembled prompt"),e("span",{className:"x",key:"x",onClick:()=>U(!1)},"\xD7")]),e("div",{className:"pv-doc",key:"d"},I()),e("div",{className:"pv-foot",key:"f"},[e("button",{className:"btn btn-primary",key:"c",onClick:()=>pe(I())},"Copy"),e("button",{className:"btn btn-ghost",key:"x",onClick:()=>U(!1)},"Close")])])):null;return e("div",{className:"as-panes",key:"view"},[Fe,e("div",{className:"as-pane right",key:"body"},[e("div",{className:"as-crumb",key:"c"},"Assembled LLM context"),e("div",{className:"as-title",key:"t"},A.map(s=>`${R[s].icon} ${R[s].label}`).join("  +  ")),e("div",{className:"as-note",key:"note"},A.length>1?"Combined context = union of the selected dashboards\u2019 datapoints (deduplicated).":"The exact context this dashboard\u2019s agent receives."),Je,Ae,Te]),Ee])}function Re(a){return a?e("span",{className:"trust-badge trusted"},"\u2713 trusted"):e("span",{className:"trust-badge unverified"},"\u25CB unverified")}function Be(){const a=t=>_().filter(r=>r.dp.src===t).length;function n(t){const r=_().find(k=>k.dp.src===t.id&&k.dp.status==="stale");return r?{type:"source",seg:r.seg,sub:r.sub,ref:r.dp,name:r.dp.name,was:r.dp.val,val:`${r.dp.val} [refreshed from ${t.name} ${P}]`,by:`${t.name} (auto-diff)`}:{type:"source",srcName:t.name,name:"(no drift)",note:`No changes detected in ${t.name}.`,by:t.name,noop:!0}}function i(t,r){t.noop||(t.type==="update"&&t.ref?(t.ref.val=t.val,t.ref.status="filled",t.ref.trust==="ai"&&(t.ref.trust="self"),t.ref.updated=P,X("datapoint.update",{segment:t.seg,subsegment:t.sub,datapoint_id:t.ref.id,patch:{val:t.val,status:"filled",trust:t.ref.trust}})):t.type==="trust"&&t.ref?(t.ref.trust="trusted",X("datapoint.update",{segment:t.seg,subsegment:t.sub,datapoint_id:t.ref.id,patch:{trust:"trusted"}})):t.type==="source"&&t.ref&&(t.ref.val=t.val,t.ref.status="filled",t.ref.updated=P,X("datapoint.update",{segment:t.seg,subsegment:t.sub,datapoint_id:t.ref.id,patch:{val:t.val,status:"filled"}}))),T(k=>k.filter((f,d)=>d!==r))}function c(t,r){t.ref&&t.ref.status==="pending"&&(t.ref.status="stale"),T(k=>k.filter((f,d)=>d!==r))}const o=e("div",{className:"reg-card",key:"reg"},[e("div",{className:"reg-h",key:"h"},[e("div",{className:"t",key:"t"},"Sources feeding the context framework"),e("div",{className:"s",key:"s"},"Registering a source lets it auto-diff its datapoints and file update/acceptance requests into the Director queue.")]),e("div",{className:"reg-actions",key:"a"},C?e("button",{className:"btn btn-ghost btn-sm",key:"scan",onClick:()=>T(t=>[...t,...te.filter(r=>r.verified).map(n)])},"Scan all for updates"):e("span",{className:"role-note"},"Viewer \u2014 read-only registry")),e("div",{className:"reg-thead",key:"thead"},["Source","Type","Trust","Feeds","Last sync",""].map((t,r)=>e("div",{key:r},t))),...te.map(t=>e("div",{className:"reg-row",key:t.id},[e("div",{className:"reg-src",key:"n"},[e("b",{key:"b"},t.name),e("div",{className:"n",key:"note"},t.note)]),e("div",{className:"reg-type mono",key:"t"},t.type),e("div",{key:"tr"},Re(t.verified)),e("div",{className:"reg-feeds",key:"f"},`${a(t.id)} dp`),e("div",{className:"reg-sync",key:"s"},t.sync),e("div",{key:"act"},C?e("span",{className:"reg-check",onClick:()=>T(r=>[...r,n(t)])},"Check"):"\u2014")]))]),p=e("div",{className:"queue",key:"queue"},[e("div",{className:"queue-h",key:"h"},[e("span",{className:"t",key:"t"},"Acceptance queue"),e("span",{className:"queue-badge",key:"b"},`${K.length}`)]),e("div",{className:"policy-line",key:"p"},"AI-proposed values never auto-merge \u2014 a Director must approve or decline each request."),e("div",{className:"queue-body",key:"body"},K.length===0?e("div",{className:"queue-empty",key:"e"},"No pending requests."):K.map((t,r)=>{const k=t.type==="update"?"Update":t.type==="trust"?"Mark trusted":"Source auto-diff",f=t.ref&&t.ref.trust==="ai",d=t.type==="update"||t.type==="source"?t.noop?[e("div",{key:"n"},t.note)]:[e("div",{className:"del",key:"d"},`- ${(t.was||"(empty)").slice(0,140)}`),e("div",{className:"add",key:"a"},`+ ${(t.val||"").slice(0,140)}`)]:null;return e("div",{className:`accept-card${f?" ai":""}`,key:r},[e("div",{className:"ac-head",key:"h"},[e("span",{className:`ac-type${t.type==="trust"?" trust":t.type==="source"?" source":""}`,key:"ty"},k),f?e("span",{className:"trust-badge ai",key:"ai"},"\u2726 AI-proposed"):null]),e("div",{className:"ac-target",key:"tg"},t.name),e("div",{className:"ac-meta",key:"m"},`by ${t.by}${t.seg?` \xB7 ${y[t.seg].label}`:""}`),d?e("div",{className:"ac-diff",key:"d"},d):null,x==="director"?e("div",{className:"ac-actions",key:"act"},[e(oe,{key:"ok",label:"Hold to approve (3s)",doneLabel:"Approved \u2713",onConfirm:()=>i(t,r)}),e("button",{className:"btn btn-ghost btn-sm",key:"no",onClick:()=>c(t,r)},"Decline")]):e("div",{className:"ac-locked",key:"act"},"Director approval required")])}))]);return e("div",{className:"gov-panes",key:"view"},[o,p])}return e("div",{className:"ctxsuite"},[be(),ke(),m==="browse"?Se():m==="assembly"?Ce():Be()])}Y.displayName="ContextSuiteView",window.CONTEXT_SUITE_VIEW_FN=Y,window.VIEWS=window.VIEWS||{},window.VIEWS.contextSuite=Y,ee&&(ee.contextManager={id:"contextManager",label:"Context",workspaceLabel:"Context Suite",workspaceIcon:"hub",description:"The overarching oversight of organised context management. Segment \u2192 subsegment \u2192 datapoint; per-dashboard assembled LLM context + token budget; roles, acceptance requests, and a trusted-source registry.",defaultView:"contextSuite",defaultDetail:"none",agentTreatment:"implicit",primaryAction:{label:"Scan sources",kind:"primary",icon:"sync"},secondaryActions:[{label:"Assembly view",icon:"dashboard_customize"}],heroKpis:[{label:"datapoints",value:`${$().total}`,trend:"flat"},{label:"filled",value:`${$().filled}`,trend:"up"},{label:"gaps",value:`${$().gaps}`,trend:"down"},{label:"stale",value:`${$().stale}`,trend:"flat"},{label:"coverage",value:`${$().coverage}%`,trend:"up"},{label:"pending",value:`${$().pending}`,trend:"flat"}]})})();
