/* SHARED — do not edit copies under world-one/ones-shell.
 * Source: shared/css/aipp-sys-widgets.css
 * Sync: node shared/theme/generate-aipp-css.mjs
 */
/* Shared Host system widget layouts — no per-widget injected CSS.
 * Uses var(--aipp-*) only. Hand-maintained; extract source was sys widget JS.
 */

/* ── capability-tree.js ── */
.aipp-tree-root{display:flex;height:100%;min-height:100%;font-family:var(--aipp-font,-apple-system,BlinkMacSystemFont,'Segoe UI',sans-serif);font-size:var(--aipp-font-size,13px);color:var(--aipp-text,#d0d8f0);background:var(--aipp-surface,#13151f)}
.aipp-tree-root h3,.aipp-tree-root label{margin:0;padding:0;font:inherit;font-weight:inherit;line-height:inherit}

/* sidebar chrome */
.aipp-tree-sidebar{flex:0 0 32%;min-width:232px;max-width:340px;border-right:1px solid var(--aipp-border,#272b3e);display:flex;flex-direction:column;min-height:0;position:relative;z-index:3;background:color-mix(in srgb,var(--aipp-surface2,#191c29) 30%,transparent)}
.aipp-tree-sidebar-head{padding:14px 16px 12px;border-bottom:1px solid var(--aipp-border,#272b3e);flex-shrink:0}
.aipp-tree-sidebar-title{font-size:13px;font-weight:600;line-height:1.4;color:var(--aipp-text,#d0d8f0)}
.aipp-tree-sidebar-sub{margin-top:2px;font-size:11px;line-height:1.4;color:var(--aipp-text-muted,#7f849c)}
.aipp-tree-tree{flex:1;overflow:auto;padding:8px 8px 20px;position:relative;z-index:1}
.aipp-tree-app-head{padding:0 10px 5px;margin-top:14px;font-size:10.5px;font-weight:700;letter-spacing:.06em;text-transform:uppercase;color:var(--aipp-text-muted,#7f849c)}
.aipp-tree-app-head:first-child{margin-top:2px}
.aipp-tree-app-head-label{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}

/* tree rows */
.aipp-tree-node{display:flex;align-items:center;gap:6px;padding:5px 8px;margin:1px 0;border-radius:7px;cursor:pointer;font-size:12.5px;line-height:1.45;color:var(--aipp-text,#d0d8f0);user-select:none;position:relative;transition:background .1s}
.aipp-tree-node:hover{background:color-mix(in srgb,var(--aipp-accent,#7c6ff7) 8%,transparent)}
.aipp-tree-node.active{background:var(--aipp-active,rgba(124,111,247,.18));box-shadow:inset 2px 0 0 var(--aipp-accent,#7c6ff7);font-weight:500}
.aipp-tree-node.aipp-tree-kind-app{font-weight:600}
.aipp-tree-node.aipp-tree-folder{color:var(--aipp-text-dim,#9ba3c2)}
.aipp-tree-node.aipp-tree-folder:hover{background:color-mix(in srgb,var(--aipp-accent,#7c6ff7) 5%,transparent)}
.aipp-tree-node.aipp-tree-folder.active{background:transparent;box-shadow:none;color:var(--aipp-text-dim,#9ba3c2);font-weight:400}
.aipp-tree-node.aipp-tree-dragging{opacity:.4}
.aipp-tree-node.aipp-tree-drop-target{background:color-mix(in srgb,var(--aipp-accent,#7c6ff7) 14%,transparent);box-shadow:inset 0 0 0 1px var(--aipp-accent,#7c6ff7)}
.aipp-tree-node-toggle{width:14px;height:16px;flex-shrink:0;display:inline-flex;align-items:center;justify-content:center;color:var(--aipp-text-muted,#7f849c);user-select:none}
.aipp-tree-node-toggle svg{width:11px;height:11px;stroke:currentColor;fill:none;stroke-width:2.2;stroke-linecap:round;stroke-linejoin:round;display:block;transition:transform .12s}
.aipp-tree-node-toggle.open svg{transform:rotate(90deg)}
.aipp-tree-node-toggle.empty{visibility:hidden}
.aipp-tree-node-icon{width:16px;height:16px;flex-shrink:0;display:inline-flex;align-items:center;justify-content:center;color:var(--aipp-text-dim,#9ba3c2)}
.aipp-tree-node-icon svg{width:13px;height:13px;stroke:currentColor;fill:none;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round;display:block}
.aipp-tree-kind-app .aipp-tree-node-icon{color:var(--aipp-accent,#7c6ff7)}
.aipp-tree-kind-widget .aipp-tree-node-icon{color:var(--aipp-accent-hover,#9589fa)}
.aipp-tree-kind-skill .aipp-tree-node-icon{color:var(--aipp-success,#a6e3a1)}
.aipp-tree-kind-tool .aipp-tree-node-icon{color:var(--aipp-info,#89b4fa)}
.aipp-tree-kind-folder .aipp-tree-node-icon{color:var(--aipp-text-muted,#7f849c)}
.aipp-tree-node-label{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}

/* inspector chrome */
.aipp-tree-main{flex:1;display:flex;flex-direction:column;min-width:0;min-height:0;position:relative;z-index:1}
.aipp-tree-main-head{padding:0 16px;border-bottom:1px solid var(--aipp-border,#272b3e);display:flex;align-items:center;justify-content:space-between;gap:12px;min-height:52px;flex-shrink:0}
.aipp-tree-main-head-lead{display:flex;align-items:center;gap:10px;min-width:0;flex:1}
.aipp-tree-main-title{font-size:14px;font-weight:600;margin:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;min-width:0}
.aipp-tree-kind-chip{flex-shrink:0;font-size:10px;font-weight:700;letter-spacing:.05em;text-transform:uppercase;line-height:1;padding:3px 8px;border-radius:var(--aipp-radius-pill,999px);color:var(--aipp-text-dim,#9ba3c2);background:color-mix(in srgb,var(--aipp-text-dim,#9ba3c2) 14%,transparent)}
.aipp-tree-chip-app,.aipp-tree-chip-widget{color:var(--aipp-accent-hover,#9589fa);background:color-mix(in srgb,var(--aipp-accent,#7c6ff7) 16%,transparent)}
.aipp-tree-chip-skill{color:var(--aipp-success,#a6e3a1);background:color-mix(in srgb,var(--aipp-success,#a6e3a1) 14%,transparent)}
.aipp-tree-chip-tool{color:var(--aipp-info,#89b4fa);background:color-mix(in srgb,var(--aipp-info,#89b4fa) 14%,transparent)}
.aipp-tree-head-actions{display:flex;align-items:center;gap:6px;flex-shrink:0}
.aipp-tree-icon-btn{width:28px;height:28px;border:1px solid var(--aipp-border,#272b3e);border-radius:7px;background:transparent;color:var(--aipp-text-dim,#9ba3c2);cursor:pointer;display:inline-flex;align-items:center;justify-content:center;padding:0;transition:border-color .12s,background .12s,color .12s}
.aipp-tree-icon-btn svg{width:14px;height:14px;stroke:currentColor;fill:none;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round;display:block}
.aipp-tree-icon-btn:hover{border-color:color-mix(in srgb,var(--aipp-accent,#7c6ff7) 55%,var(--aipp-border,#272b3e));background:color-mix(in srgb,var(--aipp-accent,#7c6ff7) 10%,transparent);color:var(--aipp-text,#d0d8f0)}
.aipp-tree-icon-btn.aipp-tree-icon-danger:hover{border-color:color-mix(in srgb,var(--aipp-danger,#f38ba8) 55%,var(--aipp-border,#272b3e));background:color-mix(in srgb,var(--aipp-danger,#f38ba8) 12%,transparent);color:var(--aipp-danger,#f38ba8)}
.aipp-tree-save-hint{flex-shrink:0;font-size:11px;color:var(--aipp-text-muted,#7f849c)}
.aipp-tree-save-hint.dirty{color:var(--aipp-warning,#f9e2af)}
.aipp-tree-save-hint.ok{color:var(--aipp-success,#a6e3a1)}
.aipp-tree-save-hint.err{color:var(--aipp-danger,#f38ba8)}

/* inspector body + groups */
.aipp-tree-main-body{flex:1;overflow:hidden;padding:0;display:flex;flex-direction:column;min-height:0}
.aipp-tree-detail-groups{flex:1;min-height:0;overflow:auto;display:flex;flex-direction:column;gap:20px;padding:20px 24px 32px;max-width:760px;width:100%;box-sizing:border-box}
.aipp-tree-main-body.aipp-tree-has-widget-detail .aipp-tree-detail-groups{flex:0 1 auto;max-height:46%}
.aipp-tree-detail-group{border:1px solid var(--aipp-border,#272b3e);border-radius:12px;display:flex;flex-direction:column;background:color-mix(in srgb,var(--aipp-surface2,#191c29) 35%,transparent);overflow:hidden}
.aipp-tree-detail-group-title{margin:0;padding:11px 16px;font-size:11px;font-weight:650;letter-spacing:.06em;text-transform:uppercase;color:var(--aipp-text-dim,#9ba3c2);line-height:1.5;border-bottom:1px solid var(--aipp-border,#272b3e);background:color-mix(in srgb,var(--aipp-surface,#13151f) 55%,transparent)}
.aipp-tree-detail-group-body{display:flex;flex-direction:column;gap:16px;padding:16px}
.aipp-tree-group-instance{border-color:color-mix(in srgb,var(--aipp-accent,#7c6ff7) 26%,var(--aipp-border,#272b3e))}
.aipp-tree-group-instance .aipp-tree-detail-group-title{color:color-mix(in srgb,var(--aipp-accent,#7c6ff7) 78%,var(--aipp-text-dim,#9ba3c2))}
.aipp-tree-prop{display:flex;flex-direction:column;gap:4px;min-width:0}
.aipp-tree-dt{display:block;margin:0;font-size:11px;font-weight:550;color:var(--aipp-text-dim,#9ba3c2);line-height:1.45}
.aipp-tree-dd{display:block;margin:0;font-size:12.5px;font-weight:400;line-height:1.6;color:var(--aipp-text,#d0d8f0);white-space:pre-wrap;word-break:break-word}
.aipp-tree-dd-mono{font-family:var(--aipp-font-mono,ui-monospace,SFMono-Regular,Menlo,Consolas,monospace);font-size:11.5px}
.aipp-tree-footnote{display:block;margin:4px 0 0;padding-top:10px;border-top:1px dashed var(--aipp-border,#272b3e);font-family:var(--aipp-font-mono,ui-monospace,SFMono-Regular,Menlo,Consolas,monospace);font-size:10.5px;line-height:1.6;color:var(--aipp-text-muted,#7f849c);word-break:break-all}
.aipp-tree-meta{font-size:11px;color:var(--aipp-text-dim,#9ba3c2);word-break:break-all;line-height:1.55}
.aipp-tree-fn-block{display:flex;flex-direction:column;gap:8px;min-width:0}
.aipp-tree-fn-label{font-size:10px;font-weight:700;letter-spacing:.05em;text-transform:uppercase;color:var(--aipp-text-dim,#9ba3c2)}
.aipp-tree-fn-content{font-size:12.5px;line-height:1.6;color:var(--aipp-text,#d0d8f0);min-width:0}

/* form controls */
.aipp-tree-form-field{display:flex;flex-direction:column;align-items:stretch;gap:7px;width:100%;margin:0}
.aipp-tree-control{display:block;width:100%;box-sizing:border-box;border:1px solid var(--aipp-border,#272b3e);border-radius:8px;background:var(--aipp-surface,#13151f);color:var(--aipp-text,#d0d8f0);padding:8px 11px;font-size:12.5px;line-height:1.55;font-family:inherit;transition:border-color .15s,box-shadow .15s}
.aipp-tree-control::placeholder{color:var(--aipp-text-muted,#7f849c)}
.aipp-tree-control:hover{border-color:var(--aipp-border2,#585b70)}
.aipp-tree-control:focus{outline:none;border-color:color-mix(in srgb,var(--aipp-accent,#7c6ff7) 60%,var(--aipp-border,#272b3e));box-shadow:0 0 0 3px var(--aipp-accent-glow,rgba(124,111,247,.22))}
.aipp-tree-control-textarea{min-height:80px;resize:vertical}
.aipp-tree-control-compact{min-height:60px}
.aipp-tree-check-row{display:flex;align-items:flex-start;gap:10px;cursor:pointer;margin:0}
.aipp-tree-check-row input[type=checkbox]{margin:2px 0 0;flex-shrink:0;accent-color:var(--aipp-accent,#7c6ff7)}
.aipp-tree-check-label{font-size:12.5px;font-weight:500;line-height:1.5;color:var(--aipp-text,#d0d8f0)}
.aipp-tree-hint{margin:0;font-size:11px;line-height:1.55;color:var(--aipp-text-dim,#9ba3c2)}
.aipp-tree-placement-editor{display:flex;flex-direction:column;gap:14px}

/* tool / skill detail */
.aipp-tree-tool-detail-body{display:flex;flex-direction:column;gap:16px;min-width:0}
.aipp-tree-tool-kv{font-size:12.5px;line-height:1.6;color:var(--aipp-text,#d0d8f0)}
.aipp-tree-tool-kv code,.aipp-tree-fn-content code{font-family:var(--aipp-font-mono,ui-monospace,SFMono-Regular,Menlo,Consolas,monospace);font-size:11px;color:var(--aipp-accent-hover,#9589fa);background:color-mix(in srgb,var(--aipp-accent,#7c6ff7) 12%,transparent);padding:1px 5px;border-radius:4px}
.aipp-tree-tool-table{width:100%;border-collapse:separate;border-spacing:0;font-size:11.5px;border:1px solid var(--aipp-border,#272b3e);border-radius:8px;overflow:hidden}
.aipp-tree-tool-table th,.aipp-tree-tool-table td{border-bottom:1px solid var(--aipp-border,#272b3e);padding:8px 12px;text-align:left;vertical-align:top;line-height:1.55}
.aipp-tree-tool-table tr:last-child td,.aipp-tree-tool-table tr:last-child th{border-bottom:none}
.aipp-tree-tool-table th{background:color-mix(in srgb,var(--aipp-surface2,#191c29) 55%,transparent);color:var(--aipp-text-dim,#9ba3c2);font-weight:650;font-size:10px;text-transform:uppercase;letter-spacing:.05em}
.aipp-tree-tool-table td code{font-family:var(--aipp-font-mono,ui-monospace,SFMono-Regular,Menlo,Consolas,monospace);font-size:10.5px;color:var(--aipp-accent-hover,#9589fa)}
.aipp-tree-tool-hint{color:var(--aipp-text-muted,#7f849c);font-size:10.5px;margin-top:4px;line-height:1.55}
.aipp-tree-code-block{background:color-mix(in srgb,var(--aipp-surface,#13151f) 88%,#000);border:1px solid var(--aipp-border,#272b3e);border-radius:8px;color:var(--aipp-text,#d0d8f0);padding:10px 12px;font-size:11px;line-height:1.6;white-space:pre-wrap;word-break:break-word;overflow:auto;margin:0;max-height:300px;font-family:var(--aipp-font-mono,ui-monospace,SFMono-Regular,Menlo,Consolas,monospace)}
.aipp-tree-skill-file-tree{font-size:11.5px;line-height:1.6;color:var(--aipp-text-dim,#9ba3c2);user-select:text}
.aipp-tree-skill-file-tree ul{margin:0;padding-left:16px;list-style:none}
.aipp-tree-skill-file-tree li{margin:2px 0}
.aipp-tree-skill-file-tree .aipp-tree-file-name{color:var(--aipp-text,#d0d8f0);font-family:var(--aipp-font-mono,ui-monospace,SFMono-Regular,Menlo,Consolas,monospace);font-size:10.5px}
.aipp-tree-skill-file-tree .aipp-tree-file-dir{color:var(--aipp-accent-hover,#9589fa);font-weight:600}

/* widget preview */
.aipp-tree-widget-preview-wrap{flex:1;min-height:180px;display:flex;flex-direction:column;margin:4px 24px 24px;max-width:712px;pointer-events:none}
.aipp-tree-widget-preview-label{font-size:10px;font-weight:700;color:var(--aipp-text-dim,#9ba3c2);margin-bottom:8px;letter-spacing:.05em;text-transform:uppercase;flex-shrink:0}
.aipp-tree-widget-preview-frame{width:100%;flex:1;min-height:180px;border:1px solid var(--aipp-border,#272b3e);border-radius:12px;background:color-mix(in srgb,var(--aipp-surface2,#191c29) 45%,transparent);overflow:hidden;position:relative;pointer-events:none;contain:layout paint size;isolation:isolate;box-shadow:0 6px 24px rgba(0,0,0,.18)}
.aipp-tree-preview-pop{align-self:center;width:min(100%,460px)}
.aipp-tree-preview-chat{align-self:center;width:min(100%,420px)}
.aipp-tree-widget-preview-scaler{width:100%;height:100%;display:flex;align-items:center;justify-content:center;overflow:hidden;position:relative;pointer-events:none}
.aipp-tree-widget-preview-mount{flex-shrink:0;position:relative;pointer-events:none;transform-origin:center center;overflow:hidden;max-width:100%;max-height:100%}
.aipp-tree-widget-preview-mount,.aipp-tree-widget-preview-mount *{pointer-events:none!important;user-select:none}
.aipp-tree-widget-preview-loading{display:flex;align-items:center;justify-content:center;gap:8px;color:var(--aipp-text-dim,#9ba3c2);font-size:12px;padding:24px;text-align:center}
.aipp-tree-preview-shell{pointer-events:none;user-select:none}
.aipp-tree-preview-shell .aipp-tree-tree{overflow:hidden}
.aipp-tree-preview-shell .aipp-tree-main-body{overflow:hidden}
.aipp-tree-preview-mini-preview{border:1px dashed var(--aipp-border,#272b3e);margin-top:4px;display:flex;align-items:center;justify-content:center;min-height:72px;border-radius:10px;background:color-mix(in srgb,var(--aipp-surface2,#191c29) 35%,transparent);color:var(--aipp-text-muted,#7f849c);font-size:10.5px}

/* imported overlay */
.aipp-tree-import-actions{display:flex;gap:8px;flex-wrap:wrap;margin-top:4px}
.aipp-tree-import-btn{border:1px solid color-mix(in srgb,var(--aipp-accent,#7c6ff7) 35%,var(--aipp-border,#272b3e));border-radius:8px;background:transparent;color:var(--aipp-text,#d0d8f0);font-size:12px;padding:7px 14px;cursor:pointer;line-height:1.4;transition:border-color .12s,background .12s}
.aipp-tree-import-btn:hover{border-color:color-mix(in srgb,var(--aipp-accent,#7c6ff7) 60%,var(--aipp-border,#272b3e));background:color-mix(in srgb,var(--aipp-accent,#7c6ff7) 10%,transparent)}
.aipp-tree-imported-entries{display:flex;flex-direction:column;gap:6px}
.aipp-tree-imported-row{display:flex;align-items:center;gap:10px;padding:7px 10px;border:1px solid var(--aipp-border,#272b3e);border-radius:8px;background:color-mix(in srgb,var(--aipp-surface2,#191c29) 30%,transparent);min-width:0}
.aipp-tree-imported-id{font-family:var(--aipp-font-mono,ui-monospace,SFMono-Regular,Menlo,Consolas,monospace);font-size:11px;color:var(--aipp-text,#d0d8f0);flex-shrink:0}
.aipp-tree-imported-title{font-size:11.5px;color:var(--aipp-text-dim,#9ba3c2);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;min-width:0}

/* states */
.aipp-tree-empty{margin:auto;display:flex;flex-direction:column;align-items:center;gap:8px;padding:48px 24px;text-align:center}
.aipp-tree-empty-icon{display:flex;color:var(--aipp-text-muted,#7f849c);opacity:.75;margin-bottom:2px}
.aipp-tree-empty-icon svg{width:26px;height:26px;stroke:currentColor;fill:none;stroke-width:1.5;stroke-linecap:round;stroke-linejoin:round}
.aipp-tree-empty-msg{font-size:12.5px;color:var(--aipp-text-dim,#9ba3c2);line-height:1.5}
.aipp-tree-empty-hint{font-size:11px;color:var(--aipp-text-muted,#7f849c);line-height:1.5}
.aipp-tree-empty-side{margin:0;padding:32px 16px}
.aipp-tree-empty-inline{margin:0;padding:20px}
.aipp-tree-state{flex:1;min-height:160px;display:flex;align-items:center;justify-content:center;gap:10px;color:var(--aipp-text-dim,#9ba3c2);font-size:12.5px}
.aipp-tree-state-error{color:var(--aipp-danger,#f38ba8)}
.aipp-tree-error{color:var(--aipp-danger,#f38ba8);font-size:12px}
.aipp-tree-spinner{width:13px;height:13px;flex-shrink:0;border:2px solid color-mix(in srgb,var(--aipp-accent,#7c6ff7) 25%,transparent);border-top-color:var(--aipp-accent,#7c6ff7);border-radius:50%;animation:aipp-tree-spin .7s linear infinite;display:inline-block}
@keyframes aipp-tree-spin{to{transform:rotate(360deg)}}

/* ── configuration.js ── */
.sys-cfg{display:flex;flex-direction:column;gap:12px;padding:14px;font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',sans-serif;color:var(--aipp-text,#d0d8f0);min-height:100%;box-sizing:border-box}
.aipp-cfg-body{display:flex;flex-direction:column;gap:12px}
.aipp-cfg-group{display:flex;flex-direction:column;gap:10px;border:1px solid rgba(124,111,247,.22);border-radius:10px;background:rgba(18,20,32,.92);padding:12px 12px 10px;box-shadow:inset 0 1px 0 rgba(255,255,255,.04)}
.aipp-cfg-group-title{font-size:10px;font-weight:700;letter-spacing:.08em;text-transform:uppercase;color:#9aa3c4;padding:0 2px 8px;margin:0 0 2px;border-bottom:1px solid rgba(124,111,247,.18)}
.aipp-cfg-panel{display:flex;flex-direction:column;gap:6px;border:1px solid rgba(255,255,255,.08);border-radius:8px;background:rgba(255,255,255,.03);padding:10px 12px}
.aipp-cfg-panel-title{font-size:12px;font-weight:600;color:#c8d0ea;margin:0 0 4px;padding-bottom:6px;border-bottom:1px solid rgba(255,255,255,.06)}
.aipp-cfg-stream{display:flex;flex-direction:column;gap:6px;width:100%}
.aipp-cfg-fill{width:100%;box-sizing:border-box}
.aipp-cfg-field-row{display:flex;flex-direction:row;align-items:center;gap:12px;min-height:34px}
.aipp-cfg-field-row .aipp-cfg-label{flex:0 0 46%;max-width:220px;text-align:right;font-size:12px;font-weight:500;color:#9aa3c4;line-height:1.3;padding:0 4px 0 0}
.aipp-cfg-field-row .aipp-cfg-input,.aipp-cfg-field-row .aipp-cfg-select,.aipp-cfg-field-row .aipp-cfg-textarea{flex:1;min-width:0}
.aipp-cfg-field-row .aipp-cfg-radio-group{flex:1;min-width:0}
.aipp-cfg-row{display:flex;flex-direction:column;gap:4px}
.aipp-cfg-label{font-size:12px;font-weight:500}
.aipp-cfg-input,.aipp-cfg-select,.aipp-cfg-textarea{background:rgba(255,255,255,.09);border:1px solid rgba(255,255,255,.12);border-radius:6px;color:var(--aipp-text,#d0d8f0);padding:7px 10px;font-size:12px;width:100%;box-sizing:border-box}
.aipp-cfg-input:focus,.aipp-cfg-select:focus,.aipp-cfg-textarea:focus{outline:none;border-color:rgba(124,111,247,.55);background:rgba(255,255,255,.12)}
.aipp-cfg-textarea{min-height:72px;resize:vertical}
.aipp-cfg-check-row{display:flex;align-items:center;gap:8px;font-size:12px;color:#9aa3c4;line-height:1.3}
.aipp-cfg-radio-group{display:flex;flex-direction:column;gap:4px}
.aipp-cfg-checklist-box{background:rgba(255,255,255,.09);border:1px solid rgba(255,255,255,.12);border-radius:6px;padding:7px 10px;box-sizing:border-box}
.aipp-cfg-list{display:flex;flex-direction:column;gap:6px}
.aipp-cfg-list-row{display:flex;gap:6px;align-items:center}
.aipp-cfg-list-row input{flex:1}
.aipp-cfg-btn-sm{border:0;border-radius:6px;padding:4px 8px;font-size:11px;cursor:pointer;background:rgba(124,111,247,.2);color:#d0d8f0}
.aipp-cfg-actions{display:flex;gap:10px;align-items:center;justify-content:flex-end;margin-top:auto;padding-top:12px;border-top:1px solid rgba(255,255,255,.06)}
.aipp-cfg-action-btns{display:flex;gap:8px;flex-shrink:0}
.aipp-cfg-msg{margin-right:auto;min-width:0;text-align:left}
.aipp-cfg-cancel{background:transparent;border:1px solid rgba(255,255,255,.18);border-radius:7px;color:#d0d8f0;padding:7px 14px;font-size:12px;cursor:pointer}
.aipp-cfg-cancel:hover{background:rgba(255,255,255,.06)}
.aipp-cfg-save{background:var(--aipp-accent,#7c6ff7);border:0;border-radius:7px;color:#fff;padding:7px 14px;font-size:12px;cursor:pointer}
.aipp-cfg-save:disabled{opacity:.5;cursor:default}
.aipp-cfg-msg{font-size:12px}
.aipp-cfg-msg.err{color:var(--aipp-danger,#ff4f6a)}
.aipp-cfg-msg.ok{color:var(--aipp-success,#4fbf8f)}

/* ── parameter-missing.js ── */
.aipp-param-root{font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',sans-serif;color:var(--aipp-text,#d0d8f0);background:var(--aipp-surface,#13151f);border:1px solid var(--aipp-border,#272b3e);border-radius:10px;padding:12px;display:flex;flex-direction:column;gap:10px}
.aipp-param-title{font-size:14px;font-weight:700;color:var(--aipp-text,#d0d8f0);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.aipp-param-detail{font-size:12px;color:var(--aipp-text-dim,#9ba3c2);line-height:1.45}
.aipp-param-row{display:flex;flex-direction:column;gap:4px}
.aipp-param-section{display:flex;flex-direction:column;gap:8px}
.aipp-param-section-title{font-size:12px;font-weight:600;color:var(--aipp-text,#d0d8f0)}
.aipp-param-known{border:1px dashed var(--aipp-border,#272b3e);border-radius:8px;padding:6px 8px;background:var(--aipp-surface2,#191c29)}
.aipp-param-label{font-size:12px;font-weight:500;color:var(--aipp-text,#d0d8f0)}
.aipp-param-input{background:var(--aipp-surface2,#191c29);border:1px solid var(--aipp-border,#272b3e);border-radius:6px;color:var(--aipp-text,#d0d8f0);padding:7px 9px;font-size:12px;width:100%;box-sizing:border-box}
.aipp-param-input.aipp-param-error-frame{border-color:var(--aipp-danger,#ff4f6a)}
.aipp-param-btn{align-self:flex-start;background:var(--aipp-accent,#7c6ff7);border:0;border-radius:7px;color:white;padding:7px 12px;font-size:12px;cursor:pointer;display:inline-flex;align-items:center;gap:6px}
.aipp-param-btn:disabled{opacity:.55;cursor:default}
.aipp-param-btn.aipp-param-busy{opacity:.9;cursor:wait}
.aipp-param-btn-spinner{width:12px;height:12px;border:2px solid rgba(255,255,255,.35);border-top-color:#fff;border-radius:50%;animation:spm-spin .7s linear infinite;flex-shrink:0;display:none}
.aipp-param-btn.aipp-param-busy .aipp-param-btn-spinner{display:inline-block}
@keyframes spm-spin{to{transform:rotate(360deg)}}
.aipp-param-error{font-size:12px;color:var(--aipp-danger,#ff4f6a)}
.aipp-param-ok{font-size:12px;color:var(--aipp-success,#4fbf8f)}
.aipp-param-timing{font-size:11px;color:var(--aipp-text-dim,#9ba3c2);font-weight:400;margin-left:6px}
.aipp-param-btn-row{display:flex;align-items:center;flex-wrap:wrap;gap:6px}


/* ── Batch B: AIPP widgets (world-detail, memory-manager) ── */

/* world-detail.js */
.aipp-detail-root{box-sizing:border-box;font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',sans-serif;color:var(--aipp-text,#d0d8f0);background:var(--aipp-surface,#13151f);border:1px solid var(--aipp-border,#272b3e);border-radius:10px;overflow:hidden;min-width:0}
.aipp-detail-root *{box-sizing:border-box}
.aipp-detail-head{display:flex;align-items:center;gap:8px;padding:10px 12px;border-bottom:1px solid var(--aipp-border,#272b3e)}
.aipp-detail-title{font-size:13px;font-weight:600;flex:1;min-width:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.aipp-detail-badge{font-size:10px;color:var(--aipp-accent,#9a90ff);border:1px solid rgba(154,144,255,.35);border-radius:999px;padding:1px 7px;background:rgba(154,144,255,.08)}
.aipp-detail-body{padding:11px 12px;display:flex;flex-direction:column;gap:10px;max-height:100%;overflow:auto}
.aipp-detail-muted{color:var(--aipp-text-muted,#6b7a9e);font-size:12px}
.aipp-detail-row{display:grid;grid-template-columns:96px minmax(0,1fr);gap:8px;align-items:start;font-size:12px}
.aipp-detail-label{color:var(--aipp-text-muted,#6b7a9e)}
.aipp-detail-value{min-width:0;word-break:break-word}
.aipp-detail-code{font-family:'JetBrains Mono','Fira Code',monospace;font-size:11px;line-height:1.45;background:var(--aipp-surface3,#0d0f18);border:1px solid var(--aipp-border,#272b3e);border-radius:7px;padding:8px;white-space:pre-wrap;overflow:auto}
.aipp-detail-section{display:flex;flex-direction:column;gap:6px}
.aipp-detail-section-title{font-size:11px;color:var(--aipp-text-muted,#6b7a9e);text-transform:uppercase;letter-spacing:.04em}
.aipp-detail-list{display:flex;flex-wrap:wrap;gap:5px}
.aipp-detail-chip{font-size:11px;border:1px solid var(--aipp-border,#272b3e);border-radius:999px;padding:2px 7px;background:var(--aipp-surface2,#191c29)}
.aipp-detail-error{color:var(--aipp-danger,#ff4f6a);font-size:12px;padding:10px 12px}


/* memory-manager.js */
.aipp-mem-root { flex:1; display:flex; flex-direction:column; overflow:hidden; background:var(--aipp-bg); min-width:0; height:100%; }

.aipp-mem-type-bar {
  display: flex; align-items: center; gap: 3px; padding: 6px 10px;
  border-bottom: 1px solid var(--aipp-border); flex-shrink: 0; flex-wrap: wrap;
  background: var(--aipp-surface);
}
.aipp-mem-type-tab {
  display: flex; align-items: center; gap: 4px;
  padding: 3px 10px; border-radius: 5px; border: 1px solid var(--aipp-border2);
  background: none; cursor: pointer; font-size: 11.5px; color: var(--aipp-text-dim);
  white-space: nowrap; transition: all .12s;
}
.aipp-mem-type-tab:hover { color: var(--aipp-text); border-color: var(--aipp-border2); background: var(--aipp-surface2); }
.aipp-mem-type-tab.active { background: var(--aipp-active); color: var(--aipp-accent); border-color: var(--aipp-accent); }
.aipp-mem-type-tab .aipp-mem-type-count {
  font-size: 10px; background: var(--aipp-surface3); border-radius: 8px;
  padding: 0 4px; min-width: 14px; text-align: center; color: var(--aipp-text-muted);
}
.aipp-mem-type-tab.active .aipp-mem-type-count { background: rgba(124,111,247,.2); color: var(--aipp-accent); }
.aipp-mem-type-dot { width: 6px; height: 6px; border-radius: 50%; flex-shrink: 0; }
.aipp-mem-type-gap { flex: 1; }
.aipp-mem-tab-reload {
  background: none; border: 1px solid var(--aipp-border2); border-radius: 4px;
  padding: 2px 7px; color: var(--aipp-text-dim); cursor: pointer; font-size: 14px; line-height: 1.4;
}
.aipp-mem-tab-reload:hover { color: var(--aipp-accent); border-color: var(--aipp-accent); }
.aipp-mem-search {
  background: var(--aipp-surface2); border: 1px solid var(--aipp-border2); border-radius: 5px;
  color: var(--aipp-text); font-size: 11px; padding: 3px 8px; outline: none; width: 110px;
}
.aipp-mem-search:focus { border-color: var(--aipp-accent); }
.aipp-mem-total-count { font-size: 10.5px; color: var(--aipp-text-muted); white-space: nowrap; }

.aipp-mem-body { flex: 1; display: flex; flex-direction: row; overflow: hidden; min-width: 0; }

.aipp-mem-scope-nav {
  width: 130px; flex-shrink: 0; border-right: 1px solid var(--aipp-border);
  display: flex; flex-direction: column; overflow-y: auto; background: var(--aipp-surface);
}
.aipp-mem-scope-item {
  display: flex; align-items: center; gap: 6px; padding: 7px 10px;
  cursor: pointer; font-size: 12px; color: var(--aipp-text-dim);
  transition: background .1s; white-space: nowrap;
}
.aipp-mem-scope-item:hover { background: var(--aipp-surface2); }
.aipp-mem-scope-item.active { background: var(--aipp-active); color: var(--aipp-accent); }
.aipp-mem-scope-item .aipp-mem-scope-count {
  margin-left: auto; font-size: 10px; background: var(--aipp-surface3);
  border-radius: 8px; padding: 0 4px; min-width: 14px; text-align: center; color: var(--aipp-text-muted);
}
.aipp-mem-scope-item.active .aipp-mem-scope-count { background: rgba(124,111,247,.2); color: var(--aipp-accent); }
.aipp-mem-scope-group-hd {
  display: flex; align-items: center; gap: 6px; padding: 7px 10px;
  cursor: pointer; font-size: 11.5px; font-weight: 600; color: var(--aipp-text-dim);
  transition: background .1s; user-select: none; border-top: 1px solid var(--aipp-border);
}
.aipp-mem-scope-group-hd:hover { background: var(--aipp-surface2); }
.aipp-mem-scope-chevron { margin-left: auto; font-size: 10px; transition: transform .15s; }
.aipp-mem-scope-group.open .aipp-mem-scope-chevron { transform: rotate(0deg); }
.aipp-mem-scope-group:not(.open) .aipp-mem-scope-chevron { transform: rotate(-90deg); }
.aipp-mem-scope-group-body { overflow: hidden; }
.aipp-mem-scope-group:not(.open) .aipp-mem-scope-group-body { display: none; }
.aipp-mem-scope-sub {
  display: flex; align-items: center; gap: 5px; padding: 5px 10px 5px 22px;
  cursor: pointer; font-size: 11.5px; color: var(--aipp-text-dim);
  transition: background .1s; white-space: nowrap; overflow: hidden; text-overflow: ellipsis;
}
.aipp-mem-scope-sub:hover { background: var(--aipp-surface2); }
.aipp-mem-scope-sub.active { background: var(--aipp-active); color: var(--aipp-accent); }
.aipp-mem-scope-sub-dot { width: 5px; height: 5px; border-radius: 50%; background: var(--aipp-text-muted); flex-shrink: 0; }
.aipp-mem-scope-sub.active .aipp-mem-scope-sub-dot { background: var(--aipp-accent); }

.aipp-mem-main { flex: 1; display: flex; flex-direction: column; overflow: hidden; min-width: 0; }
.aipp-mem-card-list { flex: 1; overflow-y: auto; padding: 10px 12px; display: flex; flex-direction: column; gap: 7px; }
.aipp-mem-card-empty { padding: 32px 16px; text-align: center; color: var(--aipp-text-muted); font-size: 12px; }
.aipp-mem-card {
  background: var(--aipp-surface); border: 1px solid var(--aipp-border); border-radius: 8px;
  padding: 10px 12px; cursor: pointer; transition: border-color .12s, background .12s;
}
.aipp-mem-card:hover { background: var(--aipp-surface2); border-color: var(--aipp-border2); }
.aipp-mem-card.uncertain { border-left: 3px solid rgba(240,180,60,.6); }
.aipp-mem-card-top { display: flex; align-items: center; gap: 5px; margin-bottom: 6px; flex-wrap: wrap; }
.aipp-mem-badge {
  font-size: 9px; font-weight: 700; padding: 1px 5px; border-radius: 3px;
  text-transform: uppercase; letter-spacing: .4px; flex-shrink: 0;
}
.aipp-mem-badge.SEMANTIC   { background: rgba(124,111,247,.2); color: var(--aipp-accent); }
.aipp-mem-badge.EPISODIC   { background: rgba(80,180,255,.15); color: #50b4ff; }
.aipp-mem-badge.PROCEDURAL { background: rgba(80,220,160,.15); color: #50dca0; }
.aipp-mem-badge.GOAL       { background: rgba(240,180,60,.15); color: #f0b43c; }
.aipp-mem-badge.RELATION   { background: rgba(255,120,80,.15); color: #ff7850; }
.aipp-mem-badge.EMOTIONAL  { background: rgba(255,100,160,.15); color: #ff64a0; }
.aipp-mem-badge.GLOBAL     { background: rgba(255,100,100,.15); color: #ff6464; border: 1px solid rgba(255,100,100,.3); }
.aipp-mem-badge.WORKSPACE  { background: rgba(255,165,0,.12); color: #ffa500; border: 1px solid rgba(255,165,0,.3); }
.aipp-mem-badge.SESSION    { background: rgba(80,200,100,.12); color: #50c864; border: 1px solid rgba(80,200,100,.3); }
.aipp-mem-badge.LONG_TERM  { background: rgba(140,100,255,.12); color: #8c64ff; }
.aipp-mem-badge.MEDIUM_TERM{ background: rgba(100,180,255,.12); color: #64b4ff; }
.aipp-mem-badge.SHORT_TERM { background: rgba(100,220,180,.12); color: #64dca0; }
.aipp-mem-badge.uncertain  { background: rgba(240,180,60,.15); color: #f0b43c; }
.aipp-mem-card-content { font-size: 12.5px; color: var(--aipp-text); line-height: 1.5; word-break: break-word; }
.aipp-mem-triple { display: flex; align-items: center; gap: 6px; flex-wrap: wrap; font-size: 12px; color: var(--aipp-text); }
.aipp-mem-triple-entity { background: var(--aipp-surface3); border-radius: 4px; padding: 2px 7px; font-weight: 600; color: var(--aipp-text); }
.aipp-mem-triple-pred {
  font-size: 11px; color: var(--aipp-accent); padding: 1px 5px;
  border: 1px solid rgba(124,111,247,.3); border-radius: 10px; font-style: italic;
}
.aipp-mem-triple-arrow { color: var(--aipp-text-muted); font-size: 14px; }
.aipp-mem-card-meta { font-size: 10.5px; color: var(--aipp-text-muted); margin-top: 5px; }
.aipp-mem-card-actions {
  display: flex; align-items: center; gap: 3px; margin-top: 7px; padding-top: 6px;
  border-top: 1px solid var(--aipp-border); flex-wrap: wrap;
}
.aipp-mem-act-type {
  font-size: 9px; font-weight: 700; padding: 2px 6px; border-radius: 4px; cursor: pointer;
  border: 1px solid transparent; background: var(--aipp-surface3); color: var(--aipp-text-muted);
  text-transform: uppercase; letter-spacing: .3px; transition: all .12s;
}
.aipp-mem-act-type:hover { color: var(--aipp-text); border-color: var(--aipp-border2); }
.aipp-mem-act-type.active { background: rgba(124,111,247,.15); color: var(--aipp-accent); border-color: rgba(124,111,247,.3); }
.aipp-mem-act-sep { flex: 1; }
.aipp-mem-act-icon {
  font-size: 12px; padding: 2px 5px; border-radius: 4px; cursor: pointer;
  border: 1px solid transparent; background: none; color: var(--aipp-text-muted);
  transition: all .12s; line-height: 1;
}
.aipp-mem-act-icon:hover { background: var(--aipp-surface3); color: var(--aipp-text); border-color: var(--aipp-border2); }
.aipp-mem-act-icon.del:hover { color: var(--aipp-danger); background: rgba(255,79,106,.08); border-color: rgba(255,79,106,.2); }
.aipp-mem-act-icon:disabled { opacity: .3; cursor: default; pointer-events: none; }

.aipp-mem-graph-area { flex: 1; overflow: hidden; position: relative; background: var(--aipp-bg); display: flex; flex-direction: column; }
.aipp-mem-graph-area svg { flex: 1; width: 100%; height: 100%; }
.aipp-mem-graph-empty {
  position: absolute; top: 50%; left: 50%; transform: translate(-50%,-50%);
  color: var(--aipp-text-muted); font-size: 12px; text-align: center;
}


/* ── Batch C: entitir list widgets ── */

/* world-list/world-list.js */
.aipp-world-root *{box-sizing:border-box;margin:0;padding:0}
.aipp-world-root{font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',sans-serif;
  font-size:13px;line-height:1.5;background:transparent;color:var(--aipp-text);padding:6px 0}
.aipp-world-worlds{display:flex;flex-direction:column;gap:6px}
.aipp-world-card{background:var(--aipp-surface);border:1px solid var(--aipp-border);border-radius:8px;
  padding:10px 13px;cursor:pointer;transition:border-color .15s,background .15s;
  display:flex;align-items:center;gap:11px}
.aipp-world-card:hover{border-color:var(--aipp-accent);background:color-mix(in srgb, var(--aipp-accent) 6%, transparent)}
.aipp-world-card.aipp-world-active{border-color:var(--aipp-accent);background:color-mix(in srgb, var(--aipp-accent) 10%, transparent)}
.aipp-world-emoji{font-size:22px;flex-shrink:0;width:32px;text-align:center}
.aipp-world-info{flex:1;min-width:0}
.aipp-world-title{font-weight:600;font-size:13px;display:flex;align-items:center;gap:5px;
  white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.aipp-world-badge{font-size:10px;padding:1px 5px;border-radius:20px;font-weight:500;flex-shrink:0}
.aipp-world-bd{background:color-mix(in srgb, var(--aipp-text-dim) 20%, transparent);color:var(--aipp-text-dim)}
.aipp-world-bs{background:color-mix(in srgb, var(--aipp-warning) 15%, transparent);color:var(--aipp-warning)}
.aipp-world-bl{background:color-mix(in srgb, var(--aipp-success) 15%, transparent);color:var(--aipp-success)}
.aipp-world-ba{background:color-mix(in srgb, var(--aipp-accent) 25%, transparent);color:var(--aipp-accent-hover)}
.aipp-world-stats{margin-top:2px;font-size:11px;color:var(--aipp-text-dim);display:flex;gap:7px;flex-wrap:wrap}
.aipp-world-arrow{color:var(--aipp-text-muted);flex-shrink:0;font-size:16px}
.aipp-world-new{background:color-mix(in srgb, var(--aipp-accent) 4%, transparent);border:1px dashed var(--aipp-border);border-radius:8px;
  padding:8px 13px;display:flex;align-items:center;gap:8px;margin-top:6px}
.aipp-world-new-btn{background:none;border:none;color:var(--aipp-accent);font-size:20px;cursor:pointer;
  padding:0;line-height:1;flex-shrink:0;transition:color .15s}
.aipp-world-new-btn:hover{color:var(--aipp-accent-hover)}
.aipp-world-new-input{flex:1;background:none;border:none;outline:none;color:var(--aipp-text);
  font-size:13px;font-family:inherit}
.aipp-world-new-input::placeholder{color:var(--aipp-text-muted)}
.aipp-world-new-hint{font-size:12px;color:var(--aipp-text-muted)}
.aipp-world-empty{padding:20px;text-align:center;color:var(--aipp-text-muted);font-size:12px}
.aipp-world-typo{margin:0 0 10px;padding:10px 12px;border-radius:8px;font-size:12px;line-height:1.5;
  color:var(--aipp-text);background:color-mix(in srgb, var(--aipp-warning) 8%, transparent);border:1px solid color-mix(in srgb, var(--aipp-warning) 25%, transparent)}
.aipp-world-typo-query{font-weight:600;color:var(--aipp-warning)}


/* decision-list/decision-list.js */
.aipp-decision-root *{box-sizing:border-box;margin:0;padding:0}
.aipp-decision-root{font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',sans-serif;
  font-size:13px;line-height:1.5;background:transparent;color:var(--aipp-text);padding:6px 0}
.aipp-decision-header{font-size:11px;color:var(--aipp-text-dim);margin-bottom:8px;display:flex;gap:8px;flex-wrap:wrap}
.aipp-decision-env{font-size:10px;padding:1px 6px;border-radius:20px;background:color-mix(in srgb, var(--aipp-accent) 15%, transparent);color:var(--aipp-accent-hover)}
.aipp-decision-group{margin-bottom:10px}
.aipp-decision-world{font-size:11px;font-weight:600;color:var(--aipp-text-dim);text-transform:uppercase;letter-spacing:.04em;
  margin:0 0 4px 2px}
.aipp-decision-cards{display:flex;flex-direction:column;gap:5px}
.aipp-decision-card{background:var(--aipp-surface);border:1px solid var(--aipp-border);border-radius:8px;
  padding:9px 12px;cursor:pointer;transition:border-color .15s,background .15s}
.aipp-decision-card:hover{border-color:var(--aipp-accent);background:color-mix(in srgb, var(--aipp-accent) 6%, transparent)}
.aipp-decision-card.aipp-decision-busy{opacity:.55;pointer-events:none}
.aipp-decision-title{font-weight:600;font-size:13px;color:var(--aipp-text)}
.aipp-decision-meta{margin-top:3px;font-size:11px;color:var(--aipp-text-dim);display:flex;gap:8px;flex-wrap:wrap}
.aipp-decision-goal{color:var(--aipp-accent-hover)}
.aipp-decision-empty{padding:18px;text-align:center;color:var(--aipp-text-muted);font-size:12px}
.aipp-decision-status{margin-top:6px;font-size:11px;color:var(--aipp-warning);min-height:14px}


/* decision-chain-summary/decision-chain-summary.js */
.aipp-chain-root{font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',sans-serif;color:var(--aipp-text,var(--aipp-text));background:var(--aipp-surface,var(--aipp-surface));border:1px solid var(--aipp-border,var(--aipp-border));border-radius:10px;padding:12px;display:flex;flex-direction:column;gap:8px}
.aipp-chain-title{font-size:14px;font-weight:700;color:var(--aipp-text,var(--aipp-text))}
.aipp-chain-status{font-size:12px;font-weight:600;display:inline-block;padding:2px 8px;border-radius:10px}
.aipp-chain-status.success{background:color-mix(in srgb, var(--aipp-success) 18%, transparent);color:var(--aipp-success,#4fbf8f)}
.aipp-chain-status.rejected,.aipp-chain-status.failed{background:color-mix(in srgb, var(--aipp-danger) 16%, transparent);color:var(--aipp-danger,#ff4f6a)}
.aipp-chain-error{font-size:12px;line-height:1.35;border-radius:8px;padding:8px 10px;border:1px solid rgba(255,79,106,.35);background:color-mix(in srgb, var(--aipp-danger) 10%, transparent);color:var(--aipp-danger)}
.aipp-chain-item[data-tone="danger"]{border-left-color:var(--aipp-danger,#ff4f6a);background:color-mix(in srgb, var(--aipp-danger) 8%, transparent)}
.aipp-chain-icon[data-tone="danger"]{color:var(--aipp-danger,#ff4f6a)}
.aipp-chain-list{display:flex;flex-direction:column;gap:4px;margin-top:4px}
.aipp-chain-item{display:flex;align-items:center;gap:8px;font-size:12px;padding:5px 8px;background:var(--aipp-surface2,#191c29);border-radius:6px;border-left:3px solid var(--aipp-border,var(--aipp-border));white-space:nowrap;overflow:hidden;min-width:0}
.aipp-chain-item[data-tone="success"]{border-left-color:var(--aipp-success,#4fbf8f)}
.aipp-chain-item[data-tone="warn"]{border-left-color:var(--aipp-warning);background:color-mix(in srgb, var(--aipp-warning) 8%, transparent)}
.aipp-chain-item[data-tone="info"]{border-left-color:var(--aipp-accent,var(--aipp-accent))}
.aipp-chain-item[data-tone="muted"]{border-left-color:var(--aipp-text-muted,var(--aipp-text-dim));color:var(--aipp-text-dim,#9ba3c2)}
.aipp-chain-item[data-clickable="true"]{cursor:pointer}
.aipp-chain-item[data-clickable="false"]{cursor:default}
.aipp-chain-icon{flex-shrink:0;font-size:13px;font-weight:700;width:14px;text-align:center}
.aipp-chain-icon[data-tone="warn"]{color:var(--aipp-warning)}
.aipp-chain-icon[data-tone="info"]{color:var(--aipp-accent,var(--aipp-accent))}
.aipp-chain-icon[data-tone="success"]{color:var(--aipp-success,#4fbf8f)}
.aipp-chain-icon[data-tone="muted"]{color:var(--aipp-text-muted,var(--aipp-text-dim))}
.aipp-chain-id{font-weight:600;color:var(--aipp-text,var(--aipp-text));flex-shrink:0}
.aipp-chain-line{color:var(--aipp-text-dim,#9ba3c2);font-size:11px;overflow:hidden;text-overflow:ellipsis;min-width:0}
.aipp-chain-verdict{margin-left:auto;color:var(--aipp-text-dim,#9ba3c2);font-size:11px;overflow:hidden;text-overflow:ellipsis;flex-shrink:1;min-width:0}
.aipp-chain-missing{margin-left:4px;color:var(--aipp-warning);font-size:10px;background:color-mix(in srgb, var(--aipp-warning) 12%, transparent);padding:1px 5px;border-radius:8px;flex-shrink:0}
.aipp-chain-modal{position:fixed;inset:0;background:rgba(0,0,0,.46);display:flex;align-items:center;justify-content:center;z-index:9999}
.aipp-chain-modal-card{width:min(760px,92vw);max-height:78vh;overflow:auto;background:var(--aipp-surface,var(--aipp-surface));border:1px solid var(--aipp-border,var(--aipp-border));border-radius:10px;padding:12px;box-shadow:0 10px 30px rgba(0,0,0,.35)}
.aipp-chain-modal-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:8px}
.aipp-chain-modal-title{font-size:14px;font-weight:700;color:var(--aipp-text,var(--aipp-text))}
.aipp-chain-modal-close{border:1px solid var(--aipp-border,var(--aipp-border));background:var(--aipp-surface2,#191c29);color:var(--aipp-text,var(--aipp-text));border-radius:6px;cursor:pointer}
.aipp-chain-timeline{display:flex;flex-direction:column;gap:6px}
.aipp-chain-timeline-item{font-size:12px;padding:6px 8px;background:var(--aipp-surface2,#191c29);border-radius:6px;border-left:3px solid var(--aipp-border,var(--aipp-border));white-space:nowrap;overflow:hidden}
.aipp-chain-timeline-item[data-tone="warn"]{border-left-color:var(--aipp-warning);background:color-mix(in srgb, var(--aipp-warning) 8%, transparent)}
.aipp-chain-timeline-item[data-tone="success"]{border-left-color:var(--aipp-success,#4fbf8f)}
.aipp-chain-timeline-item[data-tone="info"]{border-left-color:var(--aipp-accent,var(--aipp-accent))}
.aipp-chain-time{color:var(--aipp-text-dim,#9ba3c2);font-size:11px;margin-right:8px}
.aipp-chain-duration{margin-left:auto;color:var(--aipp-text-dim,#9ba3c2);font-size:10px;flex-shrink:0;padding:1px 6px;border-radius:8px;background:color-mix(in srgb, var(--aipp-accent) 12%, transparent)}


/* ── Batch D: entity-graph ── */

/* entity-graph/entity-graph.js */
    /* Absolute overlays (#ae-overlay, #de-overlay) anchor to this box */
    .aipp-graph-root {
      position: relative;
      min-width: 0;
    }
    #aipp-canvas-mount > .aipp-graph-root {
      width: 100%; height: 100%;
      display: flex; flex-direction: row;
    }

/* migrated from host index.html lines 38-47 */
/* Action editor: full-width generated function signature above body */
.ae-fn-header-row { margin-bottom: 8px; min-width: 0; }
.ae-fn-header {
  display: block; width: 100%; box-sizing: border-box;
  font-size: 12px; line-height: 1.45; color: var(--aipp-accent-hover);
  font-family: 'JetBrains Mono', 'Fira Code', monospace;
  background: var(--aipp-surface3); border: 1px solid var(--aipp-border);
  border-radius: 6px; padding: 8px 10px;
  white-space: pre-wrap; word-break: break-word; overflow-wrap: anywhere;
}

/* migrated from host index.html lines 217-243 */
.session-badge {
  font-size: 9px; padding: 1px 5px; border-radius: 10px; flex-shrink: 0;
}
.session-badge.completed { background: var(--aipp-surface3); color: var(--aipp-text-muted); }
.session-badge.voided    { background: color-mix(in srgb, var(--aipp-danger) 8%, transparent); color: var(--aipp-text-muted); }
.session-badge.active    { background: color-mix(in srgb, var(--aipp-success) 12%, transparent); color: var(--aipp-success); }
.session-badge.internal  { background: color-mix(in srgb, var(--aipp-accent) 14%, transparent); color: var(--aipp-accent-hover); }
.session-badge.ready     { background: color-mix(in srgb, var(--aipp-info) 12%, transparent); color: var(--aipp-info); }
.session-badge.executing { background: color-mix(in srgb, var(--aipp-success) 12%, transparent); color: var(--aipp-success); }
.session-badge.pending   { background: color-mix(in srgb, var(--aipp-warning) 14%, transparent); color: var(--aipp-warning); }
.session-badge.done      { background: color-mix(in srgb, var(--aipp-success) 12%, transparent); color: var(--aipp-success); }
.session-badge.failed    { background: color-mix(in srgb, var(--aipp-danger) 12%, transparent); color: var(--aipp-danger); }
.session-badge.rejected  { background: color-mix(in srgb, var(--aipp-danger) 12%, transparent); color: var(--aipp-danger); }
.runtime-widget-sub {
  color: var(--aipp-text-dim); font-size: 12px; margin-top: 4px; line-height: 1.5;
}
.runtime-widget-json {
  width: 100%; min-height: 92px; resize: vertical; border-radius: 8px;
  border: 1px solid var(--aipp-border); background: var(--aipp-surface3); color: var(--aipp-text);
  padding: 10px; font: 12px/1.45 'JetBrains Mono','Fira Code',monospace;
  box-sizing: border-box; margin-top: 8px;
}
.runtime-widget-pills { display: flex; gap: 6px; flex-wrap: wrap; margin-top: 6px; }
.runtime-widget-pill {
  font-size: 11px; padding: 2px 8px; border-radius: 999px;
  background: var(--aipp-surface3); color: var(--aipp-text-dim); border: 1px solid var(--aipp-border);
}

/* migrated from host index.html lines 284-1286 */
/* ── World Designer Tab Bar ── */
.designer-tabs {
  display: none; position: absolute; top: 0; left: 0; right: 0; z-index: 10;
  height: 36px; background: var(--aipp-surface); border-bottom: 1px solid var(--aipp-border);
  display: none; align-items: center; padding: 0 10px; gap: 2px;
  overflow: hidden; flex-wrap: nowrap; min-width: 0;
}
body.canvas-mode .designer-tabs { display: flex; }
.designer-tab {
  display: flex; align-items: center; gap: 5px; padding: 5px 12px;
  border: none; background: none; color: var(--aipp-text-dim); font-size: 12px;
  cursor: pointer; border-radius: 6px; transition: background .12s, color .12s;
}
.designer-tab:hover { background: var(--aipp-surface2); color: var(--aipp-text); }
.designer-tab.active { background: var(--aipp-active); color: var(--aipp-accent); font-weight: 600; }

/* ── Pipeline strip (right side of tab bar) ─────────────────────────── */
.pipeline-strip {
  display: none;
  margin-left: auto; align-items: center; gap: 6px;
  font-size: 11px; color: var(--aipp-text-dim); user-select: none;
  flex-shrink: 1; min-width: 0; overflow: hidden;
}
body.canvas-mode .pipeline-strip { display: flex; }

/* Draft version label — only visible when dirty */
.pl-draft-ver {
  font-size: 10px; color: var(--aipp-text-dim); opacity: .7; letter-spacing: .02em;
  padding: 0 2px;
}

/* Env pill (Staging / Production) */
.pl-env {
  display: flex; align-items: center; gap: 5px;
  padding: 3px 10px 3px 7px; border-radius: 14px;
  background: var(--aipp-surface2); border: 1px solid var(--aipp-border);
  white-space: nowrap; color: var(--aipp-text-dim);
  transition: border-color .2s, box-shadow .2s, color .2s;
  position: relative;
}
/* Actionable: orange glow = can build/promote */
.pl-env.actionable {
  border-color: var(--aipp-warning); color: var(--aipp-text); cursor: pointer;
  box-shadow: 0 0 0 2px color-mix(in srgb, var(--aipp-warning) 15%, transparent);
}
.pl-env.actionable:hover  { box-shadow: 0 0 0 3px color-mix(in srgb, var(--aipp-warning) 25%, transparent); }
.pl-env.actionable:active { transform: scale(.97); }
/* Promote-ready: green glow */
.pl-env.promotable {
  border-color: #10b981; color: var(--aipp-text); cursor: pointer;
  box-shadow: 0 0 0 2px color-mix(in srgb, var(--aipp-success) 15%, transparent);
}
.pl-env.promotable:hover  { box-shadow: 0 0 0 3px color-mix(in srgb, var(--aipp-success) 25%, transparent); }
.pl-env.promotable:active { transform: scale(.97); }

/* Custom multiline tooltip for pipeline pills */
.pl-env[data-tip]:hover::after {
  content: attr(data-tip);
  position: absolute;
  right: 0;
  bottom: calc(100% + 8px);
  z-index: 50;
  min-width: 160px;
  max-width: 320px;
  padding: 7px 9px;
  border-radius: 8px;
  border: 1px solid var(--aipp-border2);
  background: var(--aipp-surface3);
  color: var(--aipp-text);
  font-size: 11px;
  line-height: 1.35;
  white-space: pre-line;
  text-align: left;
  box-shadow: 0 8px 20px rgba(0,0,0,.35);
  pointer-events: none;
}
.pl-env[data-tip]:hover::before {
  content: '';
  position: absolute;
  right: 14px;
  bottom: calc(100% + 2px);
  width: 9px;
  height: 9px;
  background: #111827;
  border-right: 1px solid #374151;
  border-bottom: 1px solid #374151;
  transform: rotate(45deg);
  z-index: 49;
  pointer-events: none;
}

/* Status dot */
.pl-dot {
  width: 7px; height: 7px; border-radius: 50%; flex-shrink: 0;
  transition: background .3s;
}
.pl-dot.grey   { background: #6b7280; }
.pl-dot.green  { background: #10b981; box-shadow: 0 0 4px rgba(16,185,129,.6); }
.pl-dot.yellow { background: var(--aipp-warning); box-shadow: 0 0 4px color-mix(in srgb, var(--aipp-warning) 70%, transparent); }
.pl-dot.red    { background: #dc2626; box-shadow: 0 0 4px rgba(220,38,38,.65); }

/* Arrow between stages */
.pl-arrow { font-size: 11px; color: var(--aipp-border); transition: color .2s; }
.pl-arrow.active { color: #10b981; }

/* Staging clickable but up-to-date (already synced with draft) */
.pl-env.actionable.synced {
  border-color: var(--aipp-border); box-shadow: none; opacity: .75;
  cursor: pointer;
}
.pl-env.actionable.synced:hover { opacity: 1; border-color: color-mix(in srgb, var(--aipp-warning) 25%, transparent); }

/* Error/warning banner below the strip */
.pl-error-msg {
  position: fixed; top: 10px; right: 10px; z-index: 9999;
  font-size: 11px; line-height: 1.35; padding: 6px 10px; border-radius: 8px;
  max-width: 520px; max-height: 160px; overflow: auto;
  white-space: pre-line; word-break: break-word;
  pointer-events: none;
}
.pl-error-msg.error   { background: #fef2f2; color: #dc2626; border: 1px solid #fca5a5; }
.pl-error-msg.warning { background: #fffbeb; color: #d97706; border: 1px solid #fde68a; }

/* Spinner for in-progress state */
@keyframes pl-spin { to { transform: rotate(360deg); } }
.pl-spinner {
  width: 7px; height: 7px; border: 1.5px solid transparent;
  border-top-color: currentColor; border-radius: 50%;
  animation: pl-spin .6s linear infinite; flex-shrink: 0;
}

/* ontology-graph-view: flex column so toolbar + scroll stack cleanly */
#ontology-graph-view { display: flex; flex-direction: column; }
body.canvas-mode .designer-tab-content.active { top: 36px; bottom: 0; left: 0; right: 0; position: absolute; }

/* ── Designer list panel (Decisions / Actions) ── */
.designer-tab-content { position: absolute; top: 0; bottom: 0; left: 0; right: 0; overflow: hidden; }
body.canvas-mode .designer-tab-content { top: 36px; }
/* Ontology tab: internal split layout */
#designer-tab-ontology { overflow: hidden; }
.ontology-split {
  position: absolute;
  inset: 0;
  display: grid;
  grid-template-columns: var(--ontology-list-width, 220px) 6px 1fr;
  min-width: 0;
}
.split-resizer {
  cursor: col-resize;
  background: var(--aipp-border);
  opacity: .62;
  transition: background .12s, opacity .12s;
}
.split-resizer:hover,
.split-resizer.dragging {
  background: var(--aipp-accent);
  opacity: .95;
}
.ontology-main {
  position: relative;
  min-width: 0;
  overflow: hidden;
}
.ontology-graph-scroll {
  flex: 1;
  min-height: 0;
  overflow: auto;
  position: relative;
  background-color: var(--aipp-bg);
  background-image: radial-gradient(
    circle,
    color-mix(in srgb, var(--aipp-border2) 32%, transparent) 1px,
    transparent 1px
  );
  background-size: 22px 22px;
}
.ontology-graph-scroll svg { display: block; }
.designer-list-header {
  padding: 10px 14px 8px; border-bottom: 1px solid var(--aipp-border);
  display: flex; align-items: center; justify-content: space-between;
  font-size: 12px; color: var(--aipp-text-dim); font-weight: 600; background: var(--aipp-surface);
}
.designer-add-btn {
  border: 1px solid var(--aipp-border); background: var(--aipp-surface2); color: var(--aipp-accent);
  font-size: 11px; padding: 3px 9px; border-radius: 5px; cursor: pointer;
  transition: background .12s;
}
.designer-add-btn:hover { background: var(--aipp-active); }
.act-th { color: var(--aipp-text-muted); font-size: 10px; font-weight: 600; text-transform: uppercase; letter-spacing: .4px; }
.act-th:hover { color: var(--aipp-text); background: var(--aipp-surface2); }
.act-th.sort-asc, .act-th.sort-desc { color: var(--aipp-accent); }
#actions-table tbody tr { border-bottom: 1px solid var(--aipp-border); cursor: pointer; transition: background .1s; }
#actions-table tbody tr:hover { background: var(--aipp-surface2); }
#actions-table td { padding: 7px 10px; vertical-align: middle; }
.actions-entity-row {
  background: rgba(124,111,247,.08);
  cursor: pointer;
}
.actions-entity-row:hover { background: color-mix(in srgb, var(--aipp-accent) 14%, transparent) !important; }
.actions-entity-caret {
  display: inline-block;
  width: 14px;
  color: var(--aipp-accent);
  font-size: 11px;
}
.actions-child-row td:first-child { padding-left: 28px !important; }
.action-decision-chip:hover { background: var(--aipp-accent) !important; color: #fff !important; border-color: var(--aipp-accent) !important; }
.designer-list { overflow-y: auto; height: calc(100% - 41px); padding: 8px 0; }
.designer-item {
  position: relative;
  padding: 9px 14px; cursor: pointer; border-bottom: 1px solid var(--aipp-border);
  transition: background .12s;
}
.designer-item:hover { background: var(--aipp-surface2); }
.designer-item.active { background: color-mix(in srgb, var(--aipp-accent) 14%, transparent); border-left: 2px solid var(--aipp-accent); padding-left: 12px; }
.designer-item-title { font-size: 12px; font-weight: 600; color: var(--aipp-text); margin-bottom: 2px; }
.designer-item-sub { font-size: 11px; color: var(--aipp-text-muted); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.designer-item-meta { font-size: 10px; color: var(--aipp-text-muted); margin-top: 3px; display: flex; gap: 8px; }
.designer-item-tag {
  display: inline-block; padding: 1px 6px; border-radius: 3px; font-size: 10px;
  background: var(--aipp-surface3); color: var(--aipp-text-dim);
}
.designer-item-tag.outline { background: rgba(80,180,255,.12); color: #50b4ff; }
.designer-item-tag.webhook { background: rgba(240,180,60,.12); color: #f0b43c; }
.decision-item-head { display: flex; align-items: center; justify-content: space-between; gap: 8px; }
.decision-edit-btn {
  border: 1px solid var(--aipp-border);
  background: var(--aipp-surface2);
  color: #dfdbee;
  border-radius: 5px;
  font-size: 10px;
  line-height: 1;
  padding: 3px 7px;
  cursor: pointer;
}
.decision-edit-btn:hover { color: var(--aipp-text); border-color: var(--aipp-accent); }
.decisions-split {
  height: calc(100% - 41px);
  display: grid;
  grid-template-columns: var(--decision-list-width, 220px) 6px 1fr;
}
.decisions-left {
  border-right: 1px solid var(--aipp-border);
  overflow-y: auto;
}
.decisions-right {
  position: relative;
  overflow: hidden;
  display: flex;
  flex-direction: column;
  background: linear-gradient(to bottom, rgba(255,255,255,.01), rgba(255,255,255,0));
}
.decision-graph-toolbar {
  position: sticky;
  top: 10px;
  left: 10px;
  z-index: 6;
  display: inline-flex;
  gap: 5px;
  pointer-events: none;
  margin: 10px;
  width: fit-content;
}
.decision-graph-scroll {
  flex: 1;
  min-height: 0;
  overflow: auto;
  position: relative;
}
.decision-graph-empty {
  position: absolute;
  inset: 0;
  display: flex;
  align-items: center;
  justify-content: center;
  color: var(--aipp-text-dim);
  font-size: 12px;
}
.decision-graph {
  width: 100%;
  height: 100%;
  display: block;
}
.decision-edge {
  stroke: var(--aipp-border2);
  stroke-width: 1.2;
  fill: none;
  marker-end: url(#decision-edge-arrow);
}
.decision-edge.active { stroke: var(--aipp-accent); stroke-width: 1.7; }
.decision-node { cursor: pointer; }
.decision-node-rect {
  fill: var(--aipp-surface2);
  stroke: var(--aipp-border2);
  stroke-width: 1.5;
  rx: 8;
}
.decision-node.active .decision-node-rect {
  stroke: var(--aipp-accent);
  stroke-width: 2.2;
  /* 必须用不透明色，否则下层 edge 会透过来，看起来像线浮到 shape 上 */
  fill: var(--aipp-surface3);
}
.decision-node-title {
  fill: var(--aipp-accent-hover);
  font-size: 11px;
  font-weight: 700;
  pointer-events: none;
}
.decision-node-kv {
  fill: var(--aipp-text-dim);
  font-size: 10px;
  pointer-events: none;
}
.decision-node-label {
  fill: var(--aipp-text-muted);
  font-size: 10px;
  font-weight: 700;
  pointer-events: none;
}
.decision-node-value {
  fill: var(--aipp-text);
  font-size: 10px;
  pointer-events: none;
}
.decision-node-type {
  fill: var(--aipp-text-dim);
  font-size: 10px;
  pointer-events: none;
}

/* ── Decision editor (compact, inline rows) ── */
.de-body { padding: 10px 14px; overflow-y: auto; flex: 1; display: flex; flex-direction: column; gap: 8px; }
.de-row {
  display: flex;
  align-items: center;
  gap: 8px;
}
.de-row-multi {
  display: flex;
  align-items: flex-start;
  gap: 8px;
}
.de-row-label {
  flex-shrink: 0;
  width: 70px;
  font-size: 11px;
  color: var(--aipp-text-dim);
  padding-top: 7px;
}
.de-row-ctrl { flex: 1; min-width: 0; display: flex; align-items: center; gap: 8px; }
.de-row-ctrl-idline {
  display: grid;
  grid-template-columns: 130px auto auto;
  align-items: center;
  gap: 8px;
}
.de-field {
  box-sizing: border-box;
  background: var(--aipp-surface2);
  border: 1px solid var(--aipp-border);
  border-radius: 5px;
  padding: 6px 9px;
  color: var(--aipp-text);
  font-size: 12.5px;
  outline: none;
}
.de-field:focus { border-color: var(--aipp-accent); }
.de-field.de-short { flex: 0 1 260px; min-width: 0; }
.de-field.de-grow { flex: 1; min-width: 0; }
textarea.de-field {
  resize: vertical;
  min-height: 44px;
  font-family: inherit;
  line-height: 1.5;
}
.de-select { appearance: none; padding-right: 24px; background-image: linear-gradient(45deg, transparent 50%, var(--aipp-text-dim) 50%), linear-gradient(135deg, var(--aipp-text-dim) 50%, transparent 50%); background-position: right 10px top 14px, right 6px top 14px; background-size: 4px 4px; background-repeat: no-repeat; }
.de-checkbox-lbl {
  display: inline-flex;
  align-items: center;
  gap: 4px;
  font-size: 12px;
  color: var(--aipp-text-dim);
  cursor: pointer;
  flex-shrink: 0;
}
.de-section {
  display: flex;
  flex-direction: column;
  gap: 4px;
  margin-top: 4px;
}
.de-section-head {
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding: 4px 0 2px;
  border-top: 1px solid var(--aipp-border);
  padding-top: 8px;
}
.de-section-title {
  font-size: 10.5px;
  font-weight: 600;
  color: var(--aipp-text-dim);
  text-transform: uppercase;
  letter-spacing: .5px;
}
.de-section-add {
  background: none;
  border: 1px solid var(--aipp-border);
  border-radius: 4px;
  color: var(--aipp-accent);
  cursor: pointer;
  font-size: 11px;
  padding: 2px 8px;
}
.de-section-add:hover { background: var(--aipp-surface3); }
.de-section-body { display: flex; flex-direction: column; gap: 4px; }
.de-save-status {
  font-size: 11px;
  color: var(--aipp-text-muted);
  min-width: 56px;
  text-align: right;
  transition: color .2s;
}
.de-save-status.ok { color: var(--aipp-success, #2ecc71); }
.de-save-status.err { color: var(--aipp-danger, var(--aipp-danger)); }
.de-save-status.busy { color: var(--aipp-text-dim); }
/* compact sub-row blocks (triggers/actionDefs/rules) */
.de-subrow {
  display: flex;
  flex-direction: column;
  gap: 4px;
  padding: 6px 8px;
  background: var(--aipp-surface2);
  border: 1px solid var(--aipp-border);
  border-radius: 5px;
}
.de-subrow-top { display: flex; gap: 6px; align-items: center; }
.de-del-btn {
  background: none;
  border: none;
  color: var(--aipp-text-muted);
  cursor: pointer;
  font-size: 14px;
  line-height: 1;
  padding: 0 4px;
  flex-shrink: 0;
}
.de-del-btn:hover { color: var(--aipp-danger, var(--aipp-danger)); }

/* Help tooltip (?) next to labels */
.de-help {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 13px; height: 13px;
  font-size: 9px; font-weight: 600;
  color: var(--aipp-text-muted);
  border: 1px solid var(--aipp-border);
  border-radius: 50%;
  margin-left: 5px;
  cursor: help;
  position: relative;
  background: transparent;
}
.de-help:hover { color: var(--aipp-text); border-color: var(--aipp-accent); }
.de-help::after {
  content: attr(data-tip);
  position: absolute;
  top: calc(100% + 6px); left: 0;
  background: var(--aipp-surface3, #1f2333);
  border: 1px solid var(--aipp-border);
  border-radius: 5px;
  padding: 7px 10px;
  font-size: 11px;
  font-weight: 400;
  color: var(--aipp-text);
  width: 240px;
  line-height: 1.5;
  letter-spacing: 0;
  text-transform: none;
  z-index: 400;
  box-shadow: 0 6px 16px rgba(0,0,0,.35);
  opacity: 0;
  pointer-events: none;
  transform: translateY(-4px);
  transition: opacity .12s, transform .12s;
  white-space: normal;
}
.de-help:hover::after { opacity: 1; transform: translateY(0); }

/* Collapsible Advanced section (for Rules) */
.de-advanced-toggle {
  background: none;
  border: none;
  color: var(--aipp-text-dim);
  cursor: pointer;
  font-size: 11px;
  padding: 6px 0;
  display: flex;
  align-items: center;
  gap: 6px;
  text-transform: uppercase;
  letter-spacing: .5px;
  font-weight: 600;
  border-top: 1px solid var(--aipp-border);
  margin-top: 4px;
}
.de-advanced-toggle:hover { color: var(--aipp-text); }
.de-advanced-toggle .de-caret { transition: transform .15s; display: inline-block; font-size: 9px; }
.de-advanced-toggle.open .de-caret { transform: rotate(90deg); }
.de-advanced-body { display: none; flex-direction: column; gap: 8px; padding-top: 4px; }
.de-advanced-body.open { display: flex; }

/* ── Chip picker (tag-style multi-select, used by decision activator) ── */
.de-chip-picker {
  background: var(--aipp-surface3);
  border: 1px solid var(--aipp-border);
  border-radius: 6px;
  padding: 6px 8px;
  display: flex;
  flex-wrap: wrap;
  gap: 5px;
  align-items: center;
  min-height: 32px;
}
.de-chip-list { display: contents; }
.de-chip {
  display: inline-flex;
  align-items: center;
  gap: 4px;
  background: rgba(124,111,247,.16);
  border: 1px solid color-mix(in srgb, var(--aipp-accent) 35%, transparent);
  color: var(--aipp-accent);
  padding: 2px 6px 2px 8px;
  font-size: 12px;
  border-radius: 12px;
  max-width: 100%;
}
.de-chip-label { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.de-chip-remove {
  background: none;
  border: none;
  color: inherit;
  font-size: 14px;
  line-height: 1;
  cursor: pointer;
  padding: 0 2px;
  opacity: .7;
}
.de-chip-remove:hover { opacity: 1; }
.de-chip-add-wrap { position: relative; display: inline-flex; }
.de-chip-add-btn {
  background: none;
  border: 1px dashed var(--aipp-border2);
  color: var(--aipp-text-dim);
  border-radius: 12px;
  padding: 2px 10px;
  font-size: 11px;
  cursor: pointer;
}
.de-chip-add-btn:hover { color: var(--aipp-text); border-color: var(--aipp-accent); }
.de-chip-menu {
  position: absolute;
  top: calc(100% + 4px);
  left: 0;
  min-width: 220px;
  max-width: 320px;
  background: var(--aipp-surface2);
  border: 1px solid var(--aipp-border2);
  border-radius: 8px;
  box-shadow: 0 8px 24px rgba(0,0,0,.45);
  z-index: 30;
  padding: 6px;
  display: flex;
  flex-direction: column;
  gap: 4px;
}
.de-chip-menu-search {
  background: var(--aipp-surface3);
  border: 1px solid var(--aipp-border);
  border-radius: 5px;
  padding: 5px 8px;
  font-size: 12px;
  color: var(--aipp-text);
  outline: none;
}
.de-chip-menu-list { max-height: 220px; overflow-y: auto; }
.de-chip-menu-item {
  padding: 6px 8px;
  font-size: 12px;
  color: var(--aipp-text);
  cursor: pointer;
  border-radius: 4px;
}
.de-chip-menu-item:hover { background: var(--aipp-surface3); }
.de-chip-menu-empty {
  padding: 8px;
  font-size: 11px;
  color: var(--aipp-text-muted);
  text-align: center;
}

/* ── Graph Outline Panel (left) ── */
.graph-outline {
  width: 100%; min-width: 0; background: var(--aipp-surface); border-right: 1px solid var(--aipp-border);
  display: flex; flex-direction: column; flex-shrink: 0; overflow: hidden;
}
.graph-outline-header {
  padding: 9px 12px 7px; border-bottom: 1px solid var(--aipp-border); flex-shrink: 0;
  font-size: 10px; font-weight: 600; color: var(--aipp-text-muted);
  text-transform: uppercase; letter-spacing: .7px;
}
.world-recipe-panel {
  display: flex;
  flex-direction: column;
  border-bottom: 1px solid var(--aipp-border);
  flex-shrink: 0;
  min-width: 0;
  overflow: hidden;
}
.world-recipe-input-wrap {
  position: relative;
  flex-shrink: 0;
}
.world-recipe-panel textarea {
  display: block;
  width: 100%;
  box-sizing: border-box;
  min-height: 72px;
  max-height: 140px;
  resize: none;
  margin: 0;
  padding: 8px 28px 22px 12px;
  border: none;
  border-top: 1px solid var(--aipp-border);
  background: var(--aipp-surface2);
  color: var(--aipp-text);
  font-size: 11px;
  line-height: 1.45;
  font-family: inherit;
  position: relative;
  z-index: 0;
}
.world-recipe-expand-btn {
  position: absolute;
  right: 6px;
  bottom: 6px;
  z-index: 2;
  width: 22px;
  height: 20px;
  padding: 0;
  border-radius: 4px;
  border: 1px solid var(--aipp-border);
  background: var(--aipp-surface2);
  color: var(--aipp-text-dim);
  cursor: pointer;
  font-size: 12px;
  line-height: 18px;
}
.world-recipe-expand-btn:hover {
  color: var(--aipp-text);
  border-color: var(--aipp-accent);
}
.world-recipe-expand-modal {
  position: fixed;
  inset: 0;
  z-index: 2400;
  display: none;
  background: color-mix(in srgb, var(--aipp-bg) 76%, transparent);
  backdrop-filter: blur(4px);
}
.world-recipe-expand-dialog {
  position: absolute;
  left: 4vw;
  right: 4vw;
  top: 8vh;
  bottom: 8vh;
  display: flex;
  flex-direction: column;
  background: var(--aipp-surface);
  border: 1px solid var(--aipp-border2);
  border-radius: var(--aipp-radius-lg);
  overflow: hidden;
  box-shadow: 0 24px 64px color-mix(in srgb, var(--aipp-bg) 55%, transparent);
}
.world-recipe-expand-head {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 8px;
  padding: 8px 10px;
  border-bottom: 1px solid var(--aipp-border);
}
.world-recipe-expand-title {
  font-size: 12px;
  font-weight: 600;
  color: var(--aipp-text);
}
.world-recipe-expand-actions {
  display: flex;
  gap: 6px;
}
.world-recipe-expand-textarea {
  flex: 1;
  min-height: 0;
  width: 100%;
  box-sizing: border-box;
  border: none;
  resize: none;
  padding: 12px 14px;
  background: var(--aipp-surface);
  color: var(--aipp-text);
  font-size: 13px;
  line-height: 1.5;
  font-family: inherit;
}
.world-recipe-expand-textarea:focus {
  outline: none;
}
.world-recipe-panel textarea:focus {
  outline: none;
  background: var(--aipp-surface);
}
.world-recipe-hint {
  display: block;
  flex-shrink: 0;
  position: relative;
  z-index: 1;
  font-size: 9px;
  color: var(--aipp-text-muted);
  padding: 4px 12px 8px;
  line-height: 1.35;
  border-top: 1px solid var(--aipp-border);
  background: var(--aipp-surface);
}
.outline-list { flex: 1; overflow-y: auto; padding-bottom: 8px; }
.outline-section-label {
  padding: 8px 12px 2px; font-size: 10px; color: var(--aipp-text-muted);
  text-transform: uppercase; letter-spacing: .6px; user-select: none;
  display: flex; align-items: center; justify-content: space-between; gap: 6px;
}
.outline-section-add {
  background: none; border: 1px solid var(--aipp-border); color: var(--aipp-text-dim);
  width: 18px; height: 18px; border-radius: 4px; cursor: pointer;
  display: inline-flex; align-items: center; justify-content: center;
  font-size: 13px; line-height: 1; padding: 0;
  transition: background .12s, color .12s, border-color .12s;
}
.outline-section-add:hover { background: var(--aipp-accent); color: #fff; border-color: var(--aipp-accent); }
.outline-item {
  padding: 5px 10px; cursor: pointer; font-size: 12px; color: var(--aipp-text-dim);
  display: flex; align-items: center; gap: 6px;
  transition: background .12s; white-space: nowrap; overflow: hidden;
}
.outline-item:hover { background: var(--aipp-surface2); color: var(--aipp-text); }
.outline-item.active { background: var(--aipp-active); color: var(--aipp-accent); }
.outline-item-del {
  margin-left: auto; flex-shrink: 0;
  background: none; border: none; color: var(--aipp-text-muted);
  width: 18px; height: 18px; border-radius: 3px; cursor: pointer;
  display: none; align-items: center; justify-content: center;
  font-size: 13px; line-height: 1; padding: 0;
}
.outline-item:hover .outline-item-del { display: inline-flex; }
.outline-item-del:hover { background: rgba(239,68,68,.2); color: #ef4444; }
.designer-item-title-row {
  display: flex;
  align-items: center;
  gap: 4px;
  min-width: 0;
}
.designer-item-title-row .designer-item-title {
  flex: 1;
  min-width: 0;
  overflow: hidden;
  text-overflow: ellipsis;
}
.designer-item-del {
  flex-shrink: 0;
  background: none;
  border: none;
  color: var(--aipp-text-muted);
  width: 18px;
  height: 18px;
  border-radius: 3px;
  cursor: pointer;
  display: none;
  align-items: center;
  justify-content: center;
  font-size: 13px;
  line-height: 1;
  padding: 0;
}
.designer-item:hover .designer-item-del,
.designer-item.active .designer-item-del { display: inline-flex; }
.designer-item-del:hover { background: rgba(239,68,68,.2); color: #ef4444; }
.oi-badge {
  font-size: 9px; padding: 1px 4px; border-radius: 3px; flex-shrink: 0;
  font-weight: 700; letter-spacing: .2px;
}
.oi-badge.entity { background: rgba(124,111,247,.2); color: var(--aipp-accent); }
.oi-badge.enum   { background: rgba(240,160,80,.15);  color: #f0a050; }

/* ── Graph Scroll Container ── */
.graph-scroll { flex: 1; overflow: auto; position: relative; min-width: 0; }
.graph-scroll svg { display: block; }

/* ── Ontology graph toolbar (mirrors .decision-graph-toolbar) ── */
.graph-toolbar-ov {
  position: sticky;
  top: 10px;
  left: 10px;
  z-index: 6;
  display: inline-flex;
  gap: 5px;
  pointer-events: none;
  margin: 10px;
  width: fit-content;
  flex-shrink: 0;
}
.graph-tool-btn {
  pointer-events: all; display: inline-flex; align-items: center; gap: 4px;
  padding: 4px 10px; font-size: 11px; background: var(--aipp-surface2);
  border: 1px solid var(--aipp-border2); border-radius: 6px; color: var(--aipp-text-dim);
  cursor: pointer; transition: background .15s, color .15s;
}
.graph-tool-btn:hover { background: var(--aipp-surface3); color: var(--aipp-text); }
.graph-tool-btn.active { background: var(--aipp-surface3); color: var(--aipp-text); border-color: var(--aipp-border2); }

/* ── Ontology view toggle (Graph | Schema) ── */
.ontology-view-tabs {
  display: flex; gap: 0; border-radius: 7px; overflow: hidden;
  border: 1px solid var(--aipp-border2); margin-left: 6px;
  pointer-events: all;
}
.ovt-btn {
  padding: 3px 12px; font-size: 11px; background: var(--aipp-surface2);
  border: none; color: var(--aipp-text-dim); cursor: pointer;
  transition: background .15s, color .15s;
}
.ovt-btn + .ovt-btn { border-left: 1px solid var(--aipp-border2); }
.ovt-btn.active { background: var(--aipp-accent); color: #fff; }
.ovt-btn:not(.active):hover { background: var(--aipp-surface3); color: var(--aipp-text); }

/* Schema editor container */
#ontology-schema-view {
  position: absolute; top: 0; bottom: 0; left: 0; right: 0;
  display: flex; flex-direction: column;
}
.schema-editor-bar {
  height: 36px; min-height: 36px; display: flex; align-items: center;
  padding: 0 10px; gap: 8px; border-bottom: 1px solid var(--aipp-border);
  background: var(--aipp-surface);
}
.schema-editor-bar .schema-status {
  flex: 1; font-size: 11px; color: var(--aipp-text-muted);
}
.schema-save-btn {
  padding: 4px 14px; font-size: 11px; border-radius: 6px;
  background: var(--aipp-accent); color: #fff; border: none; cursor: pointer;
  transition: background .15s;
}
.schema-save-btn:hover { background: var(--aipp-accent-hover); }
.schema-save-btn:disabled { opacity: .4; cursor: default; }
#schema-code-editor { flex: 1; min-height: 0; }

/* ── Node Detail Panel (right of graph) ── */
.node-detail {
  width: 325px; background: var(--aipp-surface); border-left: 1px solid var(--aipp-border);
  flex-shrink: 0; display: flex; flex-direction: column; overflow: hidden;
  transition: width .18s ease;
}
.node-detail.hidden { width: 0; border-left: none; overflow: hidden; }
.nd-header {
  padding: 12px 12px 10px; border-bottom: 1px solid var(--aipp-border); flex-shrink: 0;
  display: flex; align-items: flex-start; justify-content: space-between;
}
.nd-title { font-size: 13px; font-weight: 700; color: var(--aipp-text); word-break: break-all; }
.nd-type-badge {
  font-size: 10px; font-weight: 600; padding: 2px 6px; border-radius: 4px;
  flex-shrink: 0; margin-top: 2px;
}
.nd-type-badge.entity { background: rgba(124,111,247,.2); color: var(--aipp-accent); }
.nd-type-badge.enum   { background: rgba(240,160,80,.15);  color: #f0a050; }
.nd-close {
  width: 20px; height: 20px; border: none; background: none; border-radius: 4px;
  color: var(--aipp-text-muted); cursor: pointer; display: flex; align-items: center;
  justify-content: center; flex-shrink: 0; transition: background .12s;
}
.nd-close:hover { background: var(--aipp-surface2); color: var(--aipp-text); }
.nd-body { flex: 1; overflow-y: auto; padding: 10px 12px; }
.nd-sec { font-size: 10px; color: var(--aipp-text-dim); text-transform: uppercase;
  letter-spacing: .6px; margin: 12px 0 5px; }
.nd-sec:first-child { margin-top: 0; }
.nd-field {
  display: flex; align-items: baseline; gap: 4px; padding: 4px 0;
  border-bottom: 1px solid var(--aipp-border); font-size: 12px;
}
.nd-field:last-child { border-bottom: none; }
.nd-row-icon {
  width: 16px;
  height: 16px;
  border-radius: 5px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  flex-shrink: 0;
  font-size: 10px;
  line-height: 1;
  font-weight: 700;
  border: 1px solid var(--aipp-border);
  box-shadow: inset 0 1px 0 rgba(255,255,255,.06), 0 1px 2px rgba(0,0,0,.12);
}
.nd-row-icon.field { color: #7dd3fc; background: rgba(56,189,248,.12); }
.nd-row-icon.edge  { color: #c084fc; background: rgba(168,85,247,.13); }
.nd-row-icon.action{ color: #facc15; background: rgba(250,204,21,.14); }
.nd-row-icon.has-comment {
  box-shadow: 0 0 0 2px rgba(124,111,247,.55), inset 0 1px 0 rgba(255,255,255,.06);
}
.nd-comment-pop {
  position: fixed;
  z-index: 10050;
  width: min(300px, calc(100vw - 24px));
  padding: 10px;
  background: var(--aipp-surface);
  border: 1px solid var(--aipp-border);
  border-radius: 8px;
  box-shadow: 0 8px 28px rgba(0,0,0,.35);
}
.nd-comment-pop label {
  display: block;
  font-size: 10px;
  color: var(--aipp-text-dim);
  margin-bottom: 6px;
  text-transform: uppercase;
  letter-spacing: .5px;
}
.nd-comment-pop textarea {
  width: 100%;
  min-height: 72px;
  box-sizing: border-box;
  resize: vertical;
  background: var(--aipp-surface2);
  border: 1px solid var(--aipp-border);
  border-radius: 6px;
  padding: 8px;
  color: var(--aipp-text);
  font-size: 12px;
  line-height: 1.4;
}
.nd-comment-pop-actions {
  display: flex;
  justify-content: flex-end;
  gap: 6px;
  margin-top: 8px;
}
.nd-comment-pop-actions button {
  font-size: 11px;
  padding: 4px 10px;
  border-radius: 5px;
  border: 1px solid var(--aipp-border);
  background: var(--aipp-surface2);
  color: var(--aipp-text);
  cursor: pointer;
}
.nd-comment-pop-actions button.primary {
  background: var(--aipp-accent);
  border-color: var(--aipp-accent);
  color: #fff;
}
.nd-fname { color: var(--aipp-text); flex: 1; min-width: 0; overflow: hidden; text-overflow: ellipsis; }
.nd-ftype { color: var(--aipp-text-muted); font-size: 11px; flex-shrink: 0; }
.nd-val {
  display: inline-block; padding: 2px 7px; background: var(--aipp-surface2);
  border-radius: 4px; font-size: 11px; color: var(--aipp-text-dim); margin: 2px 2px 2px 0;
}
.nd-action { padding: 3px 0; font-size: 12px; color: var(--aipp-success); }
/* Property panel: registered actions — full-width name, row opens editor */
.nd-act-row {
  display: flex;
  align-items: center;
  gap: 6px;
  padding: 5px 0;
  border-bottom: 1px solid var(--aipp-border);
  cursor: pointer;
  border-radius: 4px;
  margin: 0 -4px;
  padding-left: 4px;
  padding-right: 4px;
}
.nd-act-row:last-child { border-bottom: none; }
.nd-act-row:hover { background: var(--aipp-surface2); }
.nd-act-name {
  flex: 1;
  min-width: 0;
  font-size: 12px;
  font-weight: 600;
  color: var(--aipp-text);
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.nd-act-del {
  flex-shrink: 0;
  background: none;
  border: none;
  border-radius: 4px;
  color: var(--aipp-text-muted);
  cursor: pointer;
  font-size: 16px;
  line-height: 1;
  padding: 2px 6px;
  transition: background .12s, color .12s;
}
.nd-act-del:hover { background: color-mix(in srgb, var(--aipp-danger) 12%, transparent); color: var(--aipp-danger); }
/* Custom tooltip (property panel → Actions): stable multi-line, not browser title */
#nd-action-tooltip.nd-action-tooltip {
  position: fixed;
  z-index: 10050;
  display: none;
  max-width: min(380px, calc(100vw - 20px));
  padding: 8px 11px;
  background:
    linear-gradient(180deg, rgba(124,111,247,.08), rgba(124,111,247,.035)),
    var(--aipp-surface2);
  border: 1px solid color-mix(in srgb, var(--aipp-accent) 35%, transparent);
  border-radius: 10px;
  box-shadow:
    0 18px 42px rgba(0, 0, 0, 0.34),
    0 4px 14px rgba(124,111,247,.16),
    inset 0 1px 0 rgba(255,255,255,.06);
  font-size: 12px;
  line-height: 1.28;
  color: #dfdbee;
  pointer-events: none;
  white-space: pre-wrap;
  word-break: break-word;
  transform: translateY(3px) scale(.985);
  opacity: 0;
  transition: opacity .12s ease, transform .12s ease;
}
#nd-action-tooltip.nd-action-tooltip.visible {
  opacity: 1;
  transform: translateY(0) scale(1);
}
#nd-action-tooltip.nd-action-tooltip::before {
  content: "";
  position: absolute;
  width: 9px;
  height: 9px;
  background: linear-gradient(135deg, rgba(124,111,247,.08), rgba(124,111,247,.035)), var(--aipp-surface2);
  border-left: 1px solid color-mix(in srgb, var(--aipp-accent) 35%, transparent);
  border-top: 1px solid color-mix(in srgb, var(--aipp-accent) 35%, transparent);
  transform: rotate(45deg);
  left: var(--nd-tip-arrow-x, 18px);
}
#nd-action-tooltip.nd-action-tooltip[data-placement="bottom"]::before {
  top: -5px;
}
#nd-action-tooltip.nd-action-tooltip[data-placement="top"]::before {
  bottom: -5px;
  transform: rotate(225deg);
}
.nd-phase { font-size: 12px; padding: 3px 0; }
.nd-footer { padding: 8px 12px 12px; border-top: 1px solid var(--aipp-border); flex-shrink: 0; }
.nd-ask-btn {
  width: 100%; padding: 6px 10px; background: var(--aipp-active);
  border: 1px solid color-mix(in srgb, var(--aipp-accent) 25%, transparent); border-radius: var(--aipp-radius);
  color: var(--aipp-accent); font-size: 12px; cursor: pointer;
  display: flex; align-items: center; gap: 5px; justify-content: center; transition: all .15s;
}
.nd-ask-btn:hover { background: rgba(124,111,247,.22); border-color: var(--aipp-accent); }

.de-executor-section {
  background: linear-gradient(180deg, color-mix(in srgb, var(--aipp-accent) 6%, transparent), rgba(124,111,247,.02));
  border: 1px solid rgba(124,111,247,.22);
  border-radius: 8px;
  padding: 8px;
  margin-top: 8px;
}
.de-exec-grid {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 8px;
  margin-bottom: 7px;
}
.de-exec-grid label {
  display: flex;
  flex-direction: column;
  gap: 3px;
  min-width: 0;
}
.de-exec-grid span {
  color: var(--aipp-text-muted);
  font-size: 10px;
}
.de-exec-head {
  display: flex;
  align-items: center;
  gap: 8px;
  margin-bottom: 6px;
}
#de-exec-fn-header {
  flex: 1;
  min-width: 0;
  background: var(--aipp-surface);
  border: 1px solid var(--aipp-border);
  border-radius: 4px;
  padding: 6px 10px;
  font-family: 'JetBrains Mono','Fira Code',monospace;
  font-size: 12px;
  line-height: 1.5;
  color: var(--aipp-text-dim);
  word-break: break-word;
  white-space: normal;
}
#de-exec-fn-header .pname  { color: #f0c674; }       /* param name */
#de-exec-fn-header .ptype  { color: #b5cea8; }       /* type */
#de-exec-fn-header .pnull  { color: #c586c0; font-weight: 600; }  /* trailing ? */
#de-exec-fn-header .punc   { color: var(--aipp-text-muted); }
#de-exec-fn-header .arrow  { color: var(--aipp-accent-hover); padding: 0 4px; font-weight: 600; }
#de-exec-fn-header .ret    { color: #4ec9b0; font-weight: 600; }
.de-exec-params {
  margin-top: 8px;
}
.de-exec-params-head {
  display: flex;
  align-items: center;
  justify-content: space-between;
  margin-bottom: 6px;
}
.de-exec-code {
  min-height: 150px;
  height: 180px;
  resize: vertical;
  font-family: 'JetBrains Mono','Fira Code',monospace;
  font-size: 12px;
  line-height: 1.42;
  white-space: pre;
  border: 1px solid var(--aipp-border);
  border-radius: 4px;
  overflow: hidden;
}
.ae-params-section,
.de-exec-params {
  background: var(--aipp-surface2);
  border: 1px solid var(--aipp-border);
  border-radius: 8px;
  padding: 8px 10px;
}
.ae-params-list,
.de-exec-params-list {
  display: flex;
  flex-direction: column;
  gap: 0;
  border: 1px solid var(--aipp-border);
  border-radius: 6px;
  background: var(--aipp-surface);
  min-height: 38px;
  overflow: visible;
}
.ae-param-row,
.de-exec-param-row {
  display: grid;
  grid-template-columns: 1fr 1fr auto 1.4fr 1.2fr auto;
  gap: 8px;
  align-items: center;
  padding: 6px;
  border-top: 1px solid var(--aipp-border);
}
.ae-param-row:first-child,
.de-exec-param-row:first-child {
  border-top: none;
}
.de-exec-param-row {
  grid-template-columns: 1fr 1fr auto;
}
.ae-param-row input,
.de-exec-param-row input {
  width: 100%;
  box-sizing: border-box;
  background: var(--aipp-surface2);
  border: 1px solid var(--aipp-border);
  border-radius: 5px;
  padding: 5px 7px;
  color: var(--aipp-text);
  font-size: 12px;
}
.type-combo-wrap {
  position: relative;
}
.type-combo-wrap input {
  padding-right: 22px !important;
}
.type-combo-caret {
  position: absolute;
  right: 6px;
  top: 50%;
  transform: translateY(-50%);
  font-size: 10px;
  color: var(--aipp-text-muted);
  cursor: pointer;
  user-select: none;
  padding: 2px 4px;
  border-radius: 3px;
}
.type-combo-caret:hover { color: var(--aipp-accent); background: var(--aipp-surface3); }
.type-combo-menu {
  position: absolute;
  left: 0;
  right: 0;
  top: calc(100% + 2px);
  background: var(--aipp-surface);
  border: 1px solid var(--aipp-border);
  border-radius: 6px;
  max-height: 180px;
  overflow-y: auto;
  z-index: 20;
  box-shadow: 0 8px 24px rgba(0,0,0,.35);
}
.type-combo-item {
  padding: 6px 8px;
  font-size: 12px;
  color: var(--aipp-text);
  cursor: pointer;
}
.type-combo-item:hover {
  background: var(--aipp-surface2);
}
.ae-param-add {
  background: none;
  border: 1px solid var(--aipp-border);
  border-radius: 5px;
  color: var(--aipp-accent);
  cursor: pointer;
  font-size: 11px;
  padding: 3px 8px;
}
.ae-param-add:hover { background: var(--aipp-surface3); }
.ae-param-del {
  background: none;
  border: none;
  border-radius: 4px;
  color: var(--aipp-text-muted);
  cursor: pointer;
  font-size: 16px;
  padding: 1px 6px;
}
.ae-param-del:hover { color: var(--aipp-danger); background: rgba(255,79,106,.1); }

/* ── Node field inline editor ── */
.nd-edit-row {
  display: flex; align-items: center; gap: 4px; padding: 3px 0;
  border-bottom: 1px solid var(--aipp-border);
}
.nd-edit-row:last-of-type { border-bottom: none; }
.nd-edit-name {
  flex: 1; min-width: 0; background: var(--aipp-surface2); border: 1px solid transparent;
  border-radius: 4px; padding: 3px 6px; font-size: 12px; color: var(--aipp-text);
  outline: none; transition: border-color .12s;
}
.nd-edit-name:focus { border-color: var(--aipp-accent); }
.nd-edit-type {
  width: 60px; background: var(--aipp-surface2); border: 1px solid transparent;
  border-radius: 4px; padding: 3px 4px; font-size: 11px; color: var(--aipp-text-dim);
  outline: none; cursor: pointer; transition: border-color .12s; flex-shrink: 0;
}
.nd-edit-type:focus { border-color: var(--aipp-accent); color: var(--aipp-text); }
.nd-edit-default {
  width: 60px; background: var(--aipp-surface2); border: 1px solid transparent;
  border-radius: 4px; padding: 3px 4px; font-size: 11px; color: var(--aipp-text-dim);
  outline: none; transition: border-color .12s; flex-shrink: 0;
}
select.nd-edit-default { cursor: pointer; }
.nd-edit-default::placeholder { color: var(--aipp-text-muted); }
.nd-edit-default:focus { border-color: var(--aipp-accent); color: var(--aipp-text); }
.nd-edit-nullable {
  width: 20px; height: 20px; border: 1px solid var(--aipp-border); background: var(--aipp-surface2);
  border-radius: 4px; cursor: pointer; display: flex; align-items: center;
  justify-content: center; flex-shrink: 0; font-size: 11px; font-weight: 700;
  line-height: 1; transition: background .12s, color .12s, border-color .12s;
  color: var(--aipp-text-muted); font-family: monospace;
}
.nd-edit-nullable:hover { border-color: var(--aipp-accent); }
.nd-edit-nullable.active { background: var(--aipp-accent); color: #fff; border-color: var(--aipp-accent); }
.nd-edit-del {
  width: 20px; height: 20px; border: none; background: none; border-radius: 4px;
  color: var(--aipp-text-muted); cursor: pointer; display: flex; align-items: center;
  justify-content: center; flex-shrink: 0; font-size: 14px; line-height: 1;
  transition: background .12s, color .12s;
}
.nd-edit-del:hover { background: color-mix(in srgb, var(--aipp-danger) 12%, transparent); color: var(--aipp-danger); }
.nd-add-field {
  display: flex; align-items: center; gap: 4px; padding: 5px 0 2px;
  font-size: 11px; color: var(--aipp-text-dim); cursor: pointer; border: none;
  background: none; transition: color .12s;
}
.nd-add-field:hover { color: var(--aipp-accent); }
.nd-save-row {
  display: flex; gap: 6px; padding-top: 8px; border-top: 1px solid var(--aipp-border); margin-top: 6px;
}
.nd-save-btn {
  flex: 1; padding: 5px 8px; background: var(--aipp-accent); border: none;
  border-radius: var(--aipp-radius); color: #fff; font-size: 12px; cursor: pointer;
  display: flex; align-items: center; gap: 4px; justify-content: center; transition: opacity .15s;
}
.nd-save-btn:hover { opacity: .88; }
.nd-save-btn:disabled { opacity: .45; cursor: not-allowed; }
.nd-save-status { font-size: 11px; padding: 5px 0; color: var(--aipp-text-dim); text-align: center; }


/* migrated from host index.html lines 1383-1396 */
/* ── body.session-readonly: disable editing interactions only ── */
/* Keep top-level tabs clickable in readonly; only block graph canvas gestures. */
body.session-readonly #ontology-graph-scroll,
body.session-readonly #decision-graph-scroll { pointer-events: none; }
/* Graph toolbar: all buttons are view-only (zoom/layout), keep them usable */
/* Node detail: disable ask-AI / edit actions */
body.session-readonly .nd-ask-btn,
body.session-readonly .nd-footer { pointer-events: none; opacity: .4; }
/* Memory manager: block card actions, create buttons */
body.session-readonly .mem-card-actions,
body.session-readonly .mem-create-btn { pointer-events: none; opacity: .4; }
/* data-aipp-disabled: widget-level disable marker (used by external widget embeddings) */
[data-aipp-disabled="true"] .mem-card-actions,
[data-aipp-disabled="true"] .mem-create-btn { pointer-events: none; opacity: .4; }
[data-aipp-disabled="true"] #ontology-graph-scroll,
[data-aipp-disabled="true"] #decision-graph-scroll { pointer-events: none; }

  

/* ── Batch E: decision-reactor-console + note-one-wiki ── */

/* decision-reactor-console/decision-reactor-console.js */
.aipp-drc-root{
  width:100%;height:100%;min-height:0;display:flex;flex-direction:row;
  font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',sans-serif;font-size:13px;
  color:var(--aipp-text);
}
.aipp-drc-left{width:280px;min-width:240px;max-width:320px;flex-shrink:0;background:var(--aipp-surface,var(--aipp-surface));border-right:1px solid var(--aipp-border,rgba(255,255,255,.1));display:flex;flex-direction:column;overflow:hidden}
.aipp-drc-left-hd{padding:9px 12px 7px;border-bottom:1px solid var(--aipp-border,rgba(255,255,255,.1));display:flex;align-items:center;justify-content:space-between;gap:8px;flex-shrink:0}
.aipp-drc-left-title{font-size:10px;font-weight:600;color:var(--aipp-text-dim);text-transform:uppercase;letter-spacing:.7px}
.aipp-drc-add-btn{background:none;border:1px solid var(--aipp-border,color-mix(in srgb, var(--aipp-text) 15%, transparent));color:var(--aipp-text);width:22px;height:22px;border-radius:4px;cursor:pointer;display:inline-flex;align-items:center;justify-content:center;font-size:16px;line-height:1;padding:0}
.aipp-drc-add-btn:hover{background:var(--aipp-accent,var(--aipp-accent));color:#fff;border-color:var(--aipp-accent,var(--aipp-accent))}
.aipp-drc-list{flex:1;overflow-y:auto;padding-bottom:8px}
.aipp-drc-item{padding:8px 10px;cursor:pointer;display:flex;align-items:flex-start;gap:6px;border-left:2px solid transparent;transition:background .12s}
.aipp-drc-item:hover{background:var(--aipp-surface2,color-mix(in srgb, var(--aipp-text) 4%, transparent))}
.aipp-drc-item.active{background:var(--aipp-active,color-mix(in srgb, var(--aipp-accent) 14%, transparent));border-left-color:var(--aipp-accent,var(--aipp-accent));color:var(--aipp-accent,var(--aipp-accent-hover))}
.aipp-drc-item-body{flex:1;min-width:0}
.aipp-drc-item-title{font-size:12px;font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.aipp-drc-item-sub{font-size:10px;color:var(--aipp-text-dim);margin-top:2px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.aipp-drc-item-del{margin-left:auto;flex-shrink:0;background:none;border:none;color:var(--aipp-text-dim);width:20px;height:20px;border-radius:3px;cursor:pointer;display:none;align-items:center;justify-content:center;font-size:14px;padding:0}
.aipp-drc-item:hover .aipp-drc-item-del{display:inline-flex}
.aipp-drc-item-del:hover{background:color-mix(in srgb, var(--aipp-danger) 20%, transparent);color:var(--aipp-danger)}
.aipp-drc-empty{padding:16px 12px;text-align:center;color:var(--aipp-text-dim);font-size:12px;line-height:1.5}
.aipp-drc-right{flex:1;min-width:0;display:flex;flex-direction:column;background:var(--aipp-bg,transparent);overflow:hidden}
.aipp-drc-right-inner{flex:1;display:flex;align-items:center;justify-content:center;padding:24px;color:var(--aipp-text-dim);text-align:center;line-height:1.6}
.aipp-drc-right-inner h3{margin:0 0 8px;font-size:15px;color:var(--aipp-text)}
.aipp-drc-modal-backdrop{position:fixed;inset:0;background:color-mix(in srgb, var(--aipp-bg) 55%, transparent);display:flex;align-items:center;justify-content:center;z-index:9999}
.aipp-drc-modal{width:min(420px,calc(100vw - 32px));max-height:80vh;background:var(--aipp-surface,var(--aipp-surface));border:1px solid var(--aipp-border,color-mix(in srgb, var(--aipp-text) 12%, transparent));border-radius:12px;display:flex;flex-direction:column;overflow:hidden;box-shadow:0 16px 48px rgba(0,0,0,.45)}
.aipp-drc-modal-hd{padding:12px 14px;border-bottom:1px solid var(--aipp-border,rgba(255,255,255,.1));font-weight:600;font-size:13px}
.aipp-drc-modal-body{padding:12px 14px;overflow-y:auto;flex:1}
.aipp-drc-modal-ft{padding:10px 14px;border-top:1px solid var(--aipp-border,rgba(255,255,255,.1));display:flex;justify-content:flex-end;gap:8px}
.aipp-drc-card{border:1px solid var(--aipp-border,rgba(255,255,255,.1));border-radius:8px;padding:9px 11px;cursor:pointer;margin-bottom:8px;transition:border-color .12s,background .12s;width:100%;box-sizing:border-box;text-align:left;background:transparent;color:inherit;font:inherit}
.aipp-drc-card:hover,.aipp-drc-card.active{border-color:var(--aipp-accent,var(--aipp-accent));background:color-mix(in srgb, var(--aipp-accent) 8%, transparent)}
.aipp-drc-card:focus-visible{outline:2px solid var(--aipp-accent,var(--aipp-accent));outline-offset:2px}
.aipp-drc-card-title{font-weight:600;font-size:12px}
.aipp-drc-card-sub{font-size:11px;color:var(--aipp-text-dim);margin-top:2px}
.aipp-drc-badge{display:inline-block;font-size:10px;padding:1px 6px;border-radius:10px;background:color-mix(in srgb, var(--aipp-accent) 18%, transparent);color:var(--aipp-accent,var(--aipp-accent-hover));margin-left:4px}
.aipp-drc-btn{border:0;border-radius:8px;padding:7px 12px;font-size:12px;cursor:pointer;background:color-mix(in srgb, var(--aipp-accent) 22%, transparent);color:var(--aipp-accent,var(--aipp-accent-hover))}
.aipp-drc-btn:hover{background:color-mix(in srgb, var(--aipp-accent) 35%, transparent)}
.aipp-drc-btn.secondary{background:color-mix(in srgb, var(--aipp-text) 8%, transparent);color:var(--aipp-text);border:1px solid var(--aipp-border,color-mix(in srgb, var(--aipp-text) 18%, transparent))}
.aipp-drc-btn:disabled{opacity:.45;cursor:not-allowed}
.aipp-drc-error{color:var(--aipp-danger);font-size:12px;margin-top:8px}
.aipp-drc-field{margin-bottom:12px}
.aipp-drc-label{display:block;font-size:11px;color:var(--aipp-text-dim);margin-bottom:6px}
.aipp-drc-select{width:100%;box-sizing:border-box;background:var(--aipp-surface2,color-mix(in srgb, var(--aipp-text) 4%, transparent));border:1px solid var(--aipp-border,color-mix(in srgb, var(--aipp-text) 12%, transparent));border-radius:8px;color:var(--aipp-text);font-size:12px;padding:8px 10px;outline:none}
.aipp-drc-select:focus{border-color:var(--aipp-accent,var(--aipp-accent))}
.aipp-drc-template-list{margin-top:4px}
.aipp-drc-template-hd{font-size:11px;color:var(--aipp-text-dim);margin:4px 0 8px}
.aipp-drc-detail{flex:1;min-height:0;display:flex;flex-direction:column;overflow:hidden}
.aipp-drc-summary{padding:12px 14px;border-bottom:1px solid var(--aipp-border,rgba(255,255,255,.1));flex-shrink:0}
.aipp-drc-summary-hd{display:flex;align-items:flex-start;justify-content:space-between;gap:12px}
.aipp-drc-summary-main{flex:1;min-width:0}
.aipp-drc-summary-title{font-size:14px;font-weight:600;margin:0 0 4px}
.aipp-drc-summary-sub{font-size:11px;color:var(--aipp-text-dim);line-height:1.5}
.aipp-drc-publish-bar{display:flex;flex-direction:column;align-items:flex-end;gap:6px;flex-shrink:0}
.aipp-drc-publish-badge{font-size:10px;padding:2px 8px;border-radius:10px;border:1px solid var(--aipp-border,color-mix(in srgb, var(--aipp-text) 15%, transparent));color:var(--aipp-text-dim);white-space:nowrap}
.aipp-drc-publish-badge.published{background:color-mix(in srgb, var(--aipp-success) 12%, transparent);border-color:color-mix(in srgb, var(--aipp-success) 35%, transparent);color:var(--aipp-success)}
.aipp-drc-publish-badge.dirty{background:color-mix(in srgb, var(--aipp-warning) 12%, transparent);border-color:color-mix(in srgb, var(--aipp-warning) 35%, transparent);color:var(--aipp-warning)}
.aipp-drc-publish-btn{min-width:72px}
.aipp-drc-world-grid{display:flex;flex-direction:column;gap:6px;margin-bottom:10px}
.aipp-drc-card.disabled{opacity:.5;cursor:not-allowed;pointer-events:none}
.aipp-drc-event-contract{padding:10px 14px 8px;border-bottom:1px solid var(--aipp-border,rgba(255,255,255,.1));display:flex;flex-direction:column;gap:6px}
.aipp-drc-event-title{font-size:10px;font-weight:600;color:var(--aipp-text-dim);text-transform:uppercase;letter-spacing:.6px}
.aipp-drc-event-signature{font-size:11px;padding:6px 8px;border-radius:6px;border:1px solid var(--aipp-border,color-mix(in srgb, var(--aipp-text) 12%, transparent));background:var(--aipp-surface2,color-mix(in srgb, var(--aipp-text) 4%, transparent));font-family:'JetBrains Mono','Fira Code',monospace;color:var(--aipp-text)}
.aipp-drc-event-param{font-size:11px;padding:6px 8px;border-radius:6px;border:1px solid var(--aipp-border,color-mix(in srgb, var(--aipp-text) 12%, transparent));background:var(--aipp-surface2,color-mix(in srgb, var(--aipp-text) 3%, transparent));color:var(--aipp-text)}
.aipp-drc-event-param-desc{margin-top:4px;color:var(--aipp-text-dim);line-height:1.35}
.aipp-drc-event-param ul{margin:6px 0 0 0;padding-left:14px}
.aipp-drc-event-param li{line-height:1.35;margin:2px 0}
.aipp-drc-event-actions{margin-top:6px;display:flex;flex-wrap:wrap;align-items:center;gap:10px}
.aipp-drc-event-toggle{border:0;background:transparent;color:var(--aipp-accent,var(--aipp-accent-hover));font-size:11px;cursor:pointer;padding:0}
.aipp-drc-event-more{margin-top:6px}
.aipp-drc-param-section{padding:10px 14px 8px;border-bottom:1px solid var(--aipp-border,rgba(255,255,255,.1));display:flex;flex-direction:column;gap:8px}
.aipp-drc-param-head{display:flex;align-items:center;justify-content:space-between;gap:8px}
.aipp-drc-param-title{font-size:10px;font-weight:600;color:var(--aipp-text-dim);text-transform:uppercase;letter-spacing:.6px}
.aipp-drc-param-add{border:1px solid var(--aipp-border,color-mix(in srgb, var(--aipp-text) 18%, transparent));background:transparent;color:var(--aipp-text);border-radius:5px;padding:2px 8px;font-size:11px;cursor:pointer}
.aipp-drc-param-add:hover{border-color:var(--aipp-accent,var(--aipp-accent));color:var(--aipp-accent,var(--aipp-accent-hover))}
.aipp-drc-param-list{display:flex;flex-direction:column;gap:6px}
.aipp-drc-param-empty{font-size:11px;color:var(--aipp-text-dim)}
.aipp-drc-param-row{display:grid;grid-template-columns:minmax(70px,1.1fr) minmax(80px,.9fr) minmax(120px,1.6fr) auto auto;gap:6px;align-items:center}
.aipp-drc-param-input{width:100%;box-sizing:border-box;background:var(--aipp-surface2,color-mix(in srgb, var(--aipp-text) 4%, transparent));border:1px solid var(--aipp-border,color-mix(in srgb, var(--aipp-text) 12%, transparent));border-radius:6px;color:var(--aipp-text);font-size:11px;padding:5px 7px;outline:none}
.aipp-drc-param-input:focus{border-color:var(--aipp-accent,var(--aipp-accent))}
.aipp-drc-param-req{display:inline-flex;align-items:center;gap:2px;font-size:11px;color:var(--aipp-text-dim);white-space:nowrap}
.aipp-drc-param-del{border:0;background:transparent;color:var(--aipp-text-dim);font-size:14px;cursor:pointer;line-height:1;padding:2px 4px}
.aipp-drc-param-del:hover{color:var(--aipp-danger)}
.aipp-drc-kv-settings{margin-top:4px}
.aipp-drc-kv-row{display:flex;align-items:center;gap:10px 14px;flex-wrap:wrap}
.aipp-drc-kv-key{font-size:11px;color:var(--aipp-text-dim);white-space:nowrap}
.aipp-drc-kv-val{display:inline-flex;align-items:center;gap:8px;flex-wrap:nowrap}
.aipp-drc-kv-confidence{display:inline-flex;align-items:center;gap:4px;white-space:nowrap}
.aipp-drc-threshold-input{width:56px;max-width:56px}
.aipp-drc-kv-unit{font-size:11px;color:var(--aipp-text)}
.aipp-drc-listen-opt{display:inline-flex;align-items:center;gap:4px;font-size:11px;color:var(--aipp-text);cursor:pointer}
.aipp-drc-editor-wrap{flex:1;min-height:0;display:flex;flex-direction:column;padding:10px 14px 12px;gap:8px}
.aipp-drc-editor-hd{display:flex;align-items:center;justify-content:space-between;gap:8px;flex-wrap:wrap}
.aipp-drc-editor-actions{display:flex;align-items:center;gap:8px}
.aipp-drc-preview-btn{font-size:11px;padding:3px 8px;border-radius:4px;border:1px solid var(--aipp-border,color-mix(in srgb, var(--aipp-text) 15%, transparent));background:transparent;color:var(--aipp-text-dim);cursor:pointer}
.aipp-drc-preview-btn:hover{border-color:var(--aipp-accent,var(--aipp-accent));color:var(--aipp-text)}
.aipp-drc-preview-modal{position:fixed;inset:0;z-index:12000;background:color-mix(in srgb, var(--aipp-bg) 55%, transparent);display:flex;align-items:center;justify-content:center;padding:24px}
.aipp-drc-preview-panel{width:min(960px,96vw);max-height:88vh;background:var(--aipp-surface,var(--aipp-surface));border:1px solid var(--aipp-border,color-mix(in srgb, var(--aipp-text) 12%, transparent));border-radius:10px;display:flex;flex-direction:column;overflow:hidden}
.aipp-drc-preview-hd{padding:12px 14px;border-bottom:1px solid var(--aipp-border,rgba(255,255,255,.1));display:flex;align-items:center;justify-content:space-between;gap:8px}
.aipp-drc-preview-title{font-size:14px;font-weight:600;color:var(--aipp-text)}
.aipp-drc-preview-body{flex:1;min-height:0;overflow:hidden;padding:12px 14px;display:flex;flex-direction:column;gap:0}
.aipp-drc-preview-section h4{margin:0 0 6px;font-size:11px;text-transform:uppercase;letter-spacing:.5px;color:var(--aipp-text-dim)}
.aipp-drc-preview-pre{margin:0;padding:10px;border-radius:6px;background:var(--aipp-surface2);border:1px solid var(--aipp-border,rgba(255,255,255,.1));color:var(--aipp-text);font-size:11px;line-height:1.45;overflow:auto;white-space:pre-wrap;word-break:break-word;font-family:'JetBrains Mono','Fira Code',ui-monospace,monospace}
.aipp-drc-preview-hint{margin:0 0 8px;font-size:11px;line-height:1.45;color:var(--aipp-text-dim)}
.aipp-drc-preview-pre-full{flex:1;min-height:200px;max-height:min(68vh,640px)}
.aipp-drc-editor-title{font-size:11px;font-weight:600;color:var(--aipp-text-dim);text-transform:uppercase;letter-spacing:.6px}
.aipp-drc-editor-status{font-size:11px;color:var(--aipp-text-dim)}
.aipp-drc-editor-status.ok{color:var(--aipp-success)}
.aipp-drc-editor-status.err{color:var(--aipp-danger)}
.aipp-drc-editor-box{
  flex:1;min-height:180px;height:200px;resize:vertical;
  border:1px solid var(--aipp-border,color-mix(in srgb, var(--aipp-text) 12%, transparent));border-radius:8px;overflow:hidden;
  background:var(--aipp-surface2);
  font-family:'JetBrains Mono','Fira Code',monospace;font-size:12px;line-height:1.42;
}


/* note-one-wiki/note-one-wiki.js */
.aipp-wiki-root { display:flex; flex-direction:column; height:100%; position:relative; font:13px/1.5 system-ui,sans-serif;
  color:var(--aipp-text); background:var(--aipp-bg); }
.aipp-wiki-bar { display:flex; align-items:center; gap:10px; padding:6px 14px; min-height:44px;
  border-bottom:1px solid var(--aipp-border); background:var(--aipp-surface); flex-shrink:0;
  flex-wrap:nowrap; overflow:hidden; }
.aipp-wiki-bar-start { display:flex; align-items:center; gap:12px; min-width:0; flex-shrink:0; }
.aipp-wiki-brand { margin:0; font-size:15px; font-weight:650; letter-spacing:-.02em; color:var(--aipp-text);
  white-space:nowrap; line-height:1.2; }
.aipp-wiki-bar .aipp-wiki-spacer { flex:1; min-width:8px; }
.aipp-wiki-view-tabs {
  display:inline-flex; align-items:center; gap:2px; padding:3px;
  border-radius:var(--aipp-radius); background:var(--aipp-surface2);
  border:1px solid var(--aipp-border); flex-shrink:0; }
.aipp-wiki-view-tab {
  display:inline-flex; align-items:center; gap:5px; padding:5px 10px;
  border:none; border-radius:calc(var(--aipp-radius) - 2px); background:transparent;
  color:var(--aipp-text-dim); font:inherit; font-size:12px; font-weight:500; cursor:pointer;
  transition:background .15s,color .15s,box-shadow .15s; line-height:1.2; white-space:nowrap; }
.aipp-wiki-view-tab svg { width:14px; height:14px; flex-shrink:0; opacity:.75; }
.aipp-wiki-view-tab:hover:not(.sel) {
  color:var(--aipp-text); background:color-mix(in srgb, var(--aipp-text) 4%, transparent); }
.aipp-wiki-view-tab.sel {
  color:var(--aipp-text); background:var(--aipp-surface);
  box-shadow:0 1px 3px color-mix(in srgb, var(--aipp-bg) 28%, transparent); }
.aipp-wiki-view-tab.sel svg { opacity:1; }
.aipp-wiki-ws {
  display:inline-flex; align-items:center; gap:6px;
  max-width:min(140px, 22vw); min-width:0; overflow:hidden;
  padding:4px 10px 4px 8px; border:1px solid var(--aipp-border); border-radius:var(--aipp-radius-pill);
  background:var(--aipp-surface2); color:var(--aipp-text-dim); font:inherit; font-size:11px;
  cursor:pointer; transition:border-color .15s,background .15s,color .15s; flex:0 1 auto; }
.aipp-wiki-ws svg { width:13px; height:13px; flex-shrink:0; opacity:.8; }
.aipp-wiki-ws:hover {
  border-color:color-mix(in srgb, var(--aipp-accent) 40%, var(--aipp-border));
  background:color-mix(in srgb, var(--aipp-accent) 6%, var(--aipp-surface2)); color:var(--aipp-text); }
.aipp-wiki-ws-label {
  overflow:hidden; text-overflow:ellipsis; white-space:nowrap; min-width:0; flex:1 1 0; }
.aipp-wiki-bar-actions { display:inline-flex; align-items:center; gap:6px; flex-shrink:0; }
.aipp-wiki-bar-divider { width:1px; height:20px; background:var(--aipp-border); margin:0 2px; flex-shrink:0; }
.aipp-wiki-action {
  display:inline-flex; align-items:center; gap:5px; padding:6px 10px;
  border:1px solid transparent; border-radius:var(--aipp-radius-sm); background:transparent;
  color:var(--aipp-text-dim); font:inherit; font-size:12px; font-weight:500; cursor:pointer;
  transition:background .15s,color .15s,border-color .15s; line-height:1; white-space:nowrap; }
.aipp-wiki-action svg { width:15px; height:15px; flex-shrink:0; }
.aipp-wiki-action:hover:not(:disabled) {
  background:var(--aipp-surface2); color:var(--aipp-text); border-color:var(--aipp-border); }
.aipp-wiki-action--primary {
  background:var(--aipp-accent); color:#fff; border-color:transparent; }
.aipp-wiki-action--primary:hover:not(:disabled) {
  background:var(--aipp-accent-hover); color:#fff; border-color:transparent; }
.aipp-wiki-action--icon { padding:6px; width:30px; height:30px; justify-content:center; }
.aipp-wiki-action[disabled] { opacity:.45; cursor:default; }
.aipp-wiki-btn { background:none; border:1px solid var(--aipp-border); border-radius:var(--aipp-radius-sm);
  color:inherit; cursor:pointer; padding:6px 12px; font-size:12px; font:inherit; }
.aipp-wiki-btn:hover { border-color:var(--aipp-accent); }
.aipp-wiki-btn[disabled] { opacity:.5; cursor:default; }
.aipp-wiki-btn--primary { background:var(--aipp-accent); color:#fff; border-color:transparent; }
.aipp-wiki-btn--primary:hover { background:var(--aipp-accent-hover); border-color:transparent; }
.aipp-wiki-ws-pulse {
  display:inline-flex; align-items:center; gap:6px; font-size:11px; color:var(--aipp-text-dim);
  white-space:nowrap; flex-shrink:1; min-width:0; max-width:min(220px, 28vw); overflow:hidden; }
.aipp-wiki-ws-pulse[hidden] { display:none !important; }
.aipp-wiki-ws-pulse-dot {
  width:7px; height:7px; border-radius:50%; flex-shrink:0;
  background:var(--aipp-text-dim); opacity:.55; }
.aipp-wiki-ws-pulse[data-mode="ok"] .aipp-wiki-ws-pulse-dot {
  background:var(--aipp-success); opacity:1; box-shadow:0 0 0 2px color-mix(in srgb, var(--aipp-success) 25%, transparent); }
.aipp-wiki-ws-pulse[data-mode="warn"] .aipp-wiki-ws-pulse-dot {
  background:var(--aipp-warning); opacity:1; box-shadow:0 0 0 2px color-mix(in srgb, var(--aipp-warning) 28%, transparent); }
.aipp-wiki-ws-pulse[data-mode="off"] .aipp-wiki-ws-pulse-dot { opacity:.35; }
.aipp-wiki-ws-pulse-label { overflow:hidden; text-overflow:ellipsis; }
.aipp-wiki-status { font-size:11.5px; color:var(--aipp-text-dim); white-space:nowrap; flex-shrink:1; min-width:0;
  overflow:hidden; text-overflow:ellipsis; max-width:min(320px, 36vw); }
.aipp-wiki-status .aipp-wiki-status-row {
  display:inline-flex; align-items:center; gap:6px; max-width:100%; min-width:0; overflow:hidden; }
.aipp-wiki-status .aipp-wiki-status-row > span:last-child {
  overflow:hidden; text-overflow:ellipsis; white-space:nowrap; min-width:0; }
.aipp-wiki-pending-badge { font-size:11px; padding:2px 8px; border-radius:10px;
  background:color-mix(in srgb, var(--aipp-warning) 20%, transparent); color:var(--aipp-warning); border:1px solid color-mix(in srgb, var(--aipp-warning) 35%, transparent); cursor:default; }
.aipp-wiki-body { flex:1; display:flex; min-height:0; position:relative; background:var(--aipp-bg); }
.aipp-wiki-drop { position:absolute; inset:0; display:none; align-items:center; justify-content:center;
  background:color-mix(in srgb, var(--aipp-accent) 12%, transparent); border:2px dashed var(--aipp-accent);
  border-radius:6px; font-size:14px; z-index:5; pointer-events:none; }
.aipp-wiki-body.drag .aipp-wiki-drop { display:flex; }

/* Centered operation banner (upload / parse / errors) */
.aipp-wiki-op-banner {
  position:absolute; left:50%; top:50%; z-index:12;
  transform:translate(-50%, -50%);
  min-width:min(400px, 88%); max-width:440px;
  padding:18px 22px; border-radius:12px;
  border:2px solid var(--aipp-border);
  background:var(--aipp-surface);
  box-shadow:0 16px 48px color-mix(in srgb, var(--aipp-bg) 55%, transparent);
  text-align:center; pointer-events:none; }
.aipp-wiki-op-banner.error,
.aipp-wiki-op-banner.progress {
  position:fixed; inset:0; left:0; top:0; z-index:10060;
  transform:none; min-width:0; max-width:none; width:100%; height:100%;
  margin:0; padding:20px; border:none; border-radius:0;
  background:color-mix(in srgb, var(--aipp-bg) 52%, transparent);
  box-shadow:none; pointer-events:auto; text-align:left;
  display:flex; align-items:center; justify-content:center; }
.aipp-wiki-op-banner.error .aipp-wiki-op-banner-panel {
  position:relative; width:min(480px, 100%); max-height:min(80vh, 560px);
  display:flex; flex-direction:column; padding:18px 20px; border-radius:12px;
  border:2px solid color-mix(in srgb, var(--aipp-danger) 65%, var(--aipp-border));
  background:color-mix(in srgb, var(--aipp-danger) 12%, var(--aipp-surface));
  box-shadow:0 16px 48px color-mix(in srgb, var(--aipp-bg) 55%, transparent);
  pointer-events:auto; overflow:hidden; }
.aipp-wiki-op-banner.progress .aipp-wiki-op-banner-panel {
  position:relative; width:min(440px, 100%); max-height:min(80vh, 560px);
  display:flex; flex-direction:column; padding:18px 20px; border-radius:12px;
  border:2px solid color-mix(in srgb, var(--aipp-accent) 45%, var(--aipp-border));
  background:var(--aipp-surface);
  box-shadow:0 16px 48px color-mix(in srgb, var(--aipp-bg) 55%, transparent);
  pointer-events:auto; overflow:hidden; text-align:center; }
.aipp-wiki-op-banner.progress .aipp-wiki-op-banner-title { justify-content:center; }
.aipp-wiki-op-banner.progress .aipp-wiki-op-banner-msg {
  text-align:center; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; max-width:100%; }
/* Block interaction while busy; dimming comes from the modal overlay — do not use
   filter:brightness on .aipp-wiki-main (it re-composites and flashes on every tick). */
.aipp-wiki-root.aipp-wiki-op-busy .aipp-wiki-main {
  pointer-events:none; user-select:none; }
.aipp-wiki-op-banner[hidden] { display:none !important; }
.aipp-wiki-op-banner-head {
  position:relative; display:flex; align-items:flex-start; justify-content:space-between;
  gap:10px; flex-shrink:0; }
.aipp-wiki-op-banner-actions {
  display:inline-flex; align-items:center; gap:6px; flex-shrink:0; }
.aipp-wiki-op-banner-close {
  display:inline-flex; align-items:center; justify-content:center;
  width:28px; height:28px; padding:0; cursor:pointer;
  border-radius:7px; border:1px solid var(--aipp-border);
  background:var(--aipp-surface); color:var(--aipp-text-dim);
  font-size:18px; line-height:1; transition:all .12s ease; }
.aipp-wiki-op-banner-close:hover {
  color:var(--aipp-text);
  background:color-mix(in srgb, var(--aipp-text) 7%, var(--aipp-surface)); }
.aipp-wiki-op-banner-copy { flex-shrink:0; }
.aipp-wiki-op-banner-title {
  display:flex; align-items:center; justify-content:center; gap:10px;
  font-size:16px; font-weight:700; line-height:1.35; color:var(--aipp-text); }
.aipp-wiki-op-banner-msg {
  margin-top:0; font-size:13px; line-height:1.5; color:var(--aipp-text-dim); }
.aipp-wiki-op-banner-body {
  margin-top:10px; flex:1; min-height:0; max-height:min(320px, 52vh);
  overflow:auto; -webkit-overflow-scrolling:touch;
  user-select:text !important; -webkit-user-select:text !important;
  overscroll-behavior:contain; cursor:text; }
.aipp-wiki-op-banner.error .aipp-wiki-op-banner-body,
.aipp-wiki-op-banner.error .aipp-wiki-op-banner-body * {
  user-select:text !important; -webkit-user-select:text !important; }
.aipp-wiki-op-banner.progress {
  border-color:color-mix(in srgb, var(--aipp-accent) 45%, var(--aipp-border)); }
.aipp-wiki-op-banner.success {
  border-color:color-mix(in srgb, var(--aipp-success) 55%, var(--aipp-border));
  background:color-mix(in srgb, var(--aipp-success) 8%, var(--aipp-surface)); }
.aipp-wiki-op-banner.success .aipp-wiki-op-banner-title {
  color:color-mix(in srgb, var(--aipp-success) 85%, white); }
.aipp-wiki-op-banner.error .aipp-wiki-op-banner-title {
  color:color-mix(in srgb, var(--aipp-danger) 90%, white); font-size:17px;
  justify-content:flex-start; text-align:left; flex:1; min-width:0; }
.aipp-wiki-op-banner.error .aipp-wiki-op-banner-msg {
  color:var(--aipp-text); font-weight:500; white-space:pre-wrap; word-break:break-word; }
.aipp-wiki-op-banner-details {
  margin:8px 0 0; padding:0 0 0 18px; max-height:none; overflow:visible;
  font-size:11.5px; line-height:1.45; color:var(--aipp-text-dim); }
.aipp-wiki-op-banner-details li { margin:2px 0; word-break:break-word; user-select:text !important; }

/* Explorer sidebar — narrow, elevated surface (Finder / VS Code style) */
.aipp-wiki-browse.aipp-wiki-sidebar {
  flex:0 0 250px; width:250px; max-width:250px; min-width:250px;
  display:flex; flex-direction:column; min-height:0;
  background:var(--aipp-surface);
  border-right:1px solid var(--aipp-border);
  box-shadow:inset -1px 0 0 color-mix(in srgb, var(--aipp-text) 3%, transparent); }
.aipp-wiki-sidebar-head {
  flex-shrink:0; padding:8px 10px 6px;
  font-size:10px; font-weight:600; letter-spacing:.06em; text-transform:uppercase;
  color:var(--aipp-text-dim); border-bottom:1px solid var(--aipp-border);
  background:color-mix(in srgb, var(--aipp-text) 2%, var(--aipp-surface)); }
.aipp-wiki-sidebar-tree {
  flex:1; min-height:0; overflow:auto; padding:4px 0 8px; }
.aipp-wiki-browse:not(.aipp-wiki-sidebar) {
  flex:1; min-width:0; overflow:auto; padding:8px; }

/* Sidebar split: explorer (top, ~2/3) + draggable splitter + change-log (bottom, ~1/3) */
.aipp-wiki-sidebar-explorer {
  display:flex; flex-direction:column; flex:1 1 auto; min-height:64px; overflow:hidden; }
.aipp-wiki-sidebar-splitter {
  flex:0 0 7px; cursor:row-resize; position:relative;
  background:color-mix(in srgb, var(--aipp-text) 4%, var(--aipp-surface));
  border-top:1px solid var(--aipp-border); border-bottom:1px solid var(--aipp-border); }
.aipp-wiki-sidebar-splitter::after {
  content:''; position:absolute; left:50%; top:50%; transform:translate(-50%,-50%);
  width:26px; height:3px; border-radius:2px;
  background:color-mix(in srgb, var(--aipp-text) 22%, transparent); }
.aipp-wiki-sidebar-splitter:hover,
.aipp-wiki-sidebar-splitter.dragging {
  background:color-mix(in srgb, var(--aipp-accent) 22%, var(--aipp-surface)); }
.aipp-wiki-sidebar-log {
  display:flex; flex-direction:column; flex:0 0 33%; min-height:64px; overflow:hidden;
  background:color-mix(in srgb, var(--aipp-text) 1.5%, var(--aipp-surface)); }
.aipp-wiki-log-list { flex:1; min-height:0; overflow:auto; padding:2px 0 8px; }
.aipp-wiki-log-empty { padding:14px 12px; font-size:12px; color:var(--aipp-text-dim); }
.aipp-wiki-log-more {
  display:block; width:calc(100% - 12px); margin:4px 6px 2px; padding:6px 10px;
  font-size:12px; cursor:pointer; color:var(--aipp-text-dim);
  background:transparent; border:0; border-radius:6px; text-align:center; }
.aipp-wiki-log-more:hover {
  background:color-mix(in srgb, var(--aipp-accent) 10%, transparent);
  color:var(--aipp-accent); }
.aipp-wiki-log-more:disabled { opacity:.5; cursor:default; background:transparent; }
.aipp-wiki-log-item {
  display:flex; align-items:center; gap:8px; padding:5px 10px; cursor:pointer;
  font-size:12px; line-height:1.3; border-left:2px solid transparent; }
.aipp-wiki-log-item:hover {
  background:color-mix(in srgb, var(--aipp-accent) 10%, transparent); }
.aipp-wiki-log-item.sel {
  background:color-mix(in srgb, var(--aipp-accent) 16%, transparent);
  border-left-color:var(--aipp-accent); }
.aipp-wiki-log-item.reverted { opacity:.5; }
.aipp-wiki-log-item.reverted .aipp-wiki-log-title { text-decoration:line-through; }
.aipp-wiki-log-icon {
  flex:0 0 auto; width:18px; height:18px; display:flex; align-items:center; justify-content:center;
  font-size:12px; border-radius:4px;
  background:color-mix(in srgb, var(--aipp-text) 8%, transparent); }
.aipp-wiki-log-icon.op-add    { background:color-mix(in srgb, var(--aipp-success) 22%, transparent); color:var(--aipp-success); }
.aipp-wiki-log-icon.op-modify { background:color-mix(in srgb, var(--aipp-accent) 22%, transparent);  color:var(--aipp-accent); }
.aipp-wiki-log-icon.op-move   { background:color-mix(in srgb, var(--aipp-warning) 22%, transparent); color:var(--aipp-warning); }
.aipp-wiki-log-icon.op-delete { background:color-mix(in srgb, var(--aipp-danger) 22%, transparent);  color:var(--aipp-danger); }
.aipp-wiki-log-main { flex:1; min-width:0; display:flex; flex-direction:column; }
.aipp-wiki-log-title {
  white-space:nowrap; overflow:hidden; text-overflow:ellipsis; color:var(--aipp-text); }
.aipp-wiki-log-sub { font-size:10px; color:var(--aipp-text-dim);
  white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
.aipp-wiki-log-revert-tag { flex:0 0 auto; font-size:9px; padding:1px 5px; border-radius:8px;
  color:var(--aipp-text-dim); border:1px solid var(--aipp-border); }
.aipp-wiki-log-revert-tag.redoable {
  color:var(--aipp-accent); border-color:color-mix(in srgb, var(--aipp-accent) 45%, transparent);
  background:color-mix(in srgb, var(--aipp-accent) 12%, transparent); }

/* Change-log detail (revert) view in the detail pane */
.aipp-wiki-change-detail { max-width:720px; margin:0 auto; display:flex; flex-direction:column; gap:18px; }
.aipp-wiki-change-head { display:flex; align-items:center; gap:12px; }
.aipp-wiki-change-op {
  font-size:13px; font-weight:700; padding:3px 10px; border-radius:8px; text-transform:capitalize; }
.aipp-wiki-change-op.op-add    { background:color-mix(in srgb, var(--aipp-success) 18%, transparent); color:var(--aipp-success); }
.aipp-wiki-change-op.op-modify { background:color-mix(in srgb, var(--aipp-accent) 18%, transparent);  color:var(--aipp-accent); }
.aipp-wiki-change-op.op-move   { background:color-mix(in srgb, var(--aipp-warning) 18%, transparent); color:var(--aipp-warning); }
.aipp-wiki-change-op.op-delete { background:color-mix(in srgb, var(--aipp-danger) 18%, transparent);  color:var(--aipp-danger); }
.aipp-wiki-change-grid { display:grid; grid-template-columns:1fr 1fr; gap:16px; }
.aipp-wiki-change-col { border:1px solid var(--aipp-border); border-radius:10px; padding:12px 14px;
  background:var(--aipp-surface); }
.aipp-wiki-change-col h4 { margin:0 0 8px; font-size:11px; letter-spacing:.05em; text-transform:uppercase;
  color:var(--aipp-text-dim); }
.aipp-wiki-change-row { font-size:12px; margin:3px 0; color:var(--aipp-text); word-break:break-word; }
.aipp-wiki-change-row .k { color:var(--aipp-text-dim); margin-right:6px; }
.aipp-wiki-revert-btn {
  align-self:flex-start; padding:8px 18px; border-radius:8px; cursor:pointer;
  font-size:13px; font-weight:600; border:1px solid var(--aipp-danger);
  color:white; background:var(--aipp-danger); }
.aipp-wiki-revert-btn[disabled] { opacity:.5; cursor:default; }
.aipp-wiki-revert-btn.aipp-wiki-redo-btn {
  border-color:var(--aipp-accent); background:var(--aipp-accent); color:#fff; }
.aipp-wiki-revert-note { font-size:12px; color:var(--aipp-text-dim); }

/* Detail pane — reading surface */
.aipp-wiki-detail {
  flex:1; min-width:0; overflow:auto;
  padding:20px 24px 32px;
  background:linear-gradient(180deg,
    color-mix(in srgb, var(--aipp-surface) 40%, var(--aipp-bg)) 0%,
    var(--aipp-bg) 120px); }
.aipp-wiki-detail-loading {
  padding:24px; color:var(--aipp-text-dim); font-size:13px; }
.aipp-wiki-detail-progress {
  position:absolute; left:50%; top:50%; transform:translate(-50%,-50%); z-index:13;
  display:flex; align-items:center; gap:12px;
  min-width:min(360px, 80%); max-width:420px;
  padding:18px 22px; border-radius:12px;
  background:var(--aipp-surface);
  border:1px solid color-mix(in srgb, var(--aipp-accent) 35%, var(--aipp-border));
  box-shadow:0 16px 48px color-mix(in srgb, var(--aipp-bg) 55%, transparent); }
.aipp-wiki-detail-progress[hidden] { display:none !important; }
.aipp-wiki-detail-progress-title {
  font-size:14px; font-weight:650; line-height:1.35; color:var(--aipp-text); }
.aipp-wiki-detail-progress-msg {
  margin-top:2px; font-size:12.5px; line-height:1.45; color:var(--aipp-text-dim); }
.aipp-wiki-detail.is-busy,
.aipp-wiki-detail.is-resummarizing {
  position:relative; pointer-events:none; }
.aipp-wiki-detail.is-busy::after,
.aipp-wiki-detail.is-resummarizing::after {
  content:''; position:absolute; inset:0; z-index:11; pointer-events:none;
  background:color-mix(in srgb, var(--aipp-bg) 55%, transparent); }
.aipp-wiki-detail-panel { max-width:920px; margin:0 auto; display:flex; flex-direction:column; gap:32px; }
.aipp-wiki-detail-hero {
  padding:4px 2px 16px; margin-bottom:6px;
  border-bottom:1px solid color-mix(in srgb, var(--aipp-border) 80%, transparent); }
.aipp-wiki-detail-hero-title {
  margin:0 0 14px; font-size:22px; font-weight:650; line-height:1.35;
  letter-spacing:-.02em; color:var(--aipp-text); }
.aipp-wiki-detail-chips { display:flex; flex-wrap:wrap; gap:6px; align-items:center; }
.aipp-wiki-detail-chip {
  font-size:11px; line-height:1.35; padding:3px 9px; border-radius:999px;
  color:var(--aipp-text-dim); background:var(--aipp-surface);
  border:1px solid var(--aipp-border); }
.aipp-wiki-detail-chip-action {
  cursor:pointer; font:inherit; display:inline-flex; align-items:center; gap:5px;
  color:var(--aipp-text); transition:background .12s ease, border-color .12s ease; }
.aipp-wiki-detail-chip-action:hover {
  background:color-mix(in srgb, var(--aipp-accent, #4e9af1) 10%, var(--aipp-surface));
  border-color:color-mix(in srgb, var(--aipp-accent, #4e9af1) 35%, var(--aipp-border)); }
.aipp-wiki-detail-chip-action svg { width:12px; height:12px; flex-shrink:0; }
.aipp-wiki-detail-grid {
  display:grid; grid-template-columns:minmax(0,1.35fr) minmax(260px,.85fr); gap:32px; align-items:start; }
@media (max-width:860px) {
  .aipp-wiki-detail-grid { grid-template-columns:1fr; gap:28px; } }
.aipp-wiki-detail-main-col {
  display:flex; flex-direction:column; gap:28px; min-width:0; }
.aipp-wiki-detail-card {
  background:var(--aipp-surface); border:1px solid var(--aipp-border);
  border-radius:12px; padding:18px 20px;
  box-shadow:0 1px 0 color-mix(in srgb, var(--aipp-text) 4%, transparent); }
.aipp-wiki-card-title {
  margin:0 0 16px; font-size:11px; font-weight:600; letter-spacing:.06em;
  text-transform:uppercase; color:var(--aipp-text-dim); }
.aipp-wiki-card-has-copy { position:relative; }
.aipp-wiki-card-actions {
  position:absolute; top:12px; right:12px; z-index:2;
  display:inline-flex; align-items:center; gap:6px; }
.aipp-wiki-copy-btn, .aipp-wiki-resummarize-btn {
  display:inline-flex; align-items:center; justify-content:center;
  width:28px; height:28px; padding:0; cursor:pointer;
  border-radius:7px; border:1px solid var(--aipp-border);
  background:var(--aipp-surface); color:var(--aipp-text-dim);
  font-size:14px; line-height:1; transition:all .12s ease; opacity:.7; }
.aipp-wiki-copy-btn:hover, .aipp-wiki-resummarize-btn:hover {
  opacity:1; color:var(--aipp-text);
  background:color-mix(in srgb, var(--aipp-text) 7%, var(--aipp-surface));
  border-color:color-mix(in srgb, var(--aipp-border) 60%, var(--aipp-text)); }
.aipp-wiki-copy-btn.copied {
  opacity:1; color:#16a34a;
  border-color:color-mix(in srgb, #16a34a 50%, var(--aipp-border)); }
.aipp-wiki-resummarize-btn svg { width:15px; height:15px; pointer-events:none; }
.aipp-wiki-resummarize-btn:hover { color:var(--aipp-accent, #6366f1); }
.aipp-wiki-copy-ico { pointer-events:none; }
.aipp-wiki-hint-back {
  position:absolute; inset:0; z-index:50;
  display:flex; align-items:center; justify-content:center;
  background:color-mix(in srgb, #000 38%, transparent);
  backdrop-filter:blur(2px); padding:20px; }
.aipp-wiki-hint-box {
  width:min(440px, 100%); background:var(--aipp-surface);
  border:1px solid var(--aipp-border); border-radius:14px;
  box-shadow:0 18px 48px rgba(0,0,0,.32); padding:20px 22px; }
.aipp-wiki-hint-title {
  margin:0 0 6px; font-size:15px; font-weight:650; color:var(--aipp-text); }
.aipp-wiki-hint-desc {
  margin:0 0 14px; font-size:12.5px; line-height:1.55; color:var(--aipp-text-dim); }
.aipp-wiki-hint-input {
  width:100%; box-sizing:border-box; resize:vertical; min-height:64px;
  font:inherit; font-size:13px; line-height:1.5; color:var(--aipp-text);
  background:var(--aipp-bg); border:1px solid var(--aipp-border);
  border-radius:9px; padding:10px 12px; outline:none; transition:border-color .12s ease; }
.aipp-wiki-hint-input:focus {
  border-color:color-mix(in srgb, var(--aipp-accent, #6366f1) 60%, var(--aipp-border)); }
.aipp-wiki-hint-actions {
  display:flex; justify-content:flex-end; gap:8px; margin-top:16px; }
.aipp-wiki-hint-btn {
  font:inherit; font-size:13px; font-weight:600; cursor:pointer;
  padding:7px 16px; border-radius:8px; border:1px solid var(--aipp-border);
  transition:all .12s ease; }
.aipp-wiki-hint-cancel {
  background:var(--aipp-surface); color:var(--aipp-text-dim); }
.aipp-wiki-hint-cancel:hover { color:var(--aipp-text); }
.aipp-wiki-hint-confirm {
  background:var(--aipp-accent, #6366f1); border-color:var(--aipp-accent, #6366f1); color:#fff; }
.aipp-wiki-hint-confirm:hover { filter:brightness(1.05); }
.aipp-wiki-detail-summary-frame {
  background:color-mix(in srgb, var(--aipp-bg) 62%, var(--aipp-surface));
  border:1px solid color-mix(in srgb, var(--aipp-border) 82%, transparent);
  border-radius:10px; padding:16px 18px; }
.aipp-wiki-detail-prose {
  font-size:13.5px; line-height:2; color:var(--aipp-text);
  max-height:none; overflow:visible; }
.aipp-wiki-detail-prose p { margin:0 0 1.15em; }
.aipp-wiki-detail-prose p:last-child { margin-bottom:0; }
.aipp-wiki-detail-prose strong { font-weight:600; color:var(--aipp-text); }
.aipp-wiki-detail-prose code {
  font-size:12px; padding:1px 5px; border-radius:4px;
  background:color-mix(in srgb, var(--aipp-text) 6%, var(--aipp-surface));
  border:1px solid color-mix(in srgb, var(--aipp-border) 70%, transparent); }
.aipp-wiki-detail-prose h1,.aipp-wiki-detail-prose h2,.aipp-wiki-detail-prose h3 {
  margin:1.4em 0 .7em; font-size:14px; font-weight:600; line-height:1.5; }
.aipp-wiki-detail-prose h1:first-child,.aipp-wiki-detail-prose h2:first-child,.aipp-wiki-detail-prose h3:first-child { margin-top:0; }
.aipp-wiki-md-compact { font-size:12px; line-height:1.65; color:var(--aipp-text-dim); }
.aipp-wiki-md-compact p { margin:0 0 .35em; }
.aipp-wiki-md-compact p:last-child { margin-bottom:0; }
.aipp-wiki-md-compact strong { font-weight:600; color:var(--aipp-text); }
.aipp-wiki-link-groups { display:flex; flex-direction:column; gap:18px; }
.aipp-wiki-link-group {
  display:flex; flex-direction:column; gap:8px; }
.aipp-wiki-link-group--placements { gap:10px; }
.aipp-wiki-link-group-label {
  font-size:10px; font-weight:600; letter-spacing:.05em; text-transform:uppercase;
  color:var(--aipp-text-dim); margin-bottom:0; }
.aipp-wiki-link-item {
  display:flex; align-items:center; justify-content:space-between; gap:10px;
  padding:10px 12px; border-radius:8px; cursor:pointer;
  border:1px solid color-mix(in srgb, var(--aipp-border) 90%, transparent);
  background:color-mix(in srgb, var(--aipp-bg) 35%, var(--aipp-surface));
  text-decoration:none; color:inherit; transition:border-color .15s, background .15s; }
.aipp-wiki-link-item:hover {
  border-color:color-mix(in srgb, var(--aipp-accent) 35%, var(--aipp-border));
  background:color-mix(in srgb, var(--aipp-accent) 6%, var(--aipp-surface)); }
.aipp-wiki-link-item--placement {
  position:relative; align-items:flex-start; min-height:52px; padding:10px 12px 10px 12px; }
.aipp-wiki-link-item--placement .aipp-wiki-placement-tag {
  position:absolute; top:8px; right:30px; z-index:1; }
.aipp-wiki-link-item--placement .aipp-wiki-link-main {
  flex:1; min-width:0; padding-top:18px; padding-right:56px; }
.aipp-wiki-link-item--placement .aipp-wiki-link-title {
  display:block; overflow:hidden; text-overflow:ellipsis;
  white-space:nowrap; }
.aipp-wiki-link-item--placement .aipp-wiki-link-arrow {
  align-self:center; margin-top:0; }
.aipp-wiki-link-main { min-width:0; display:flex; flex-direction:column; gap:2px; }
.aipp-wiki-link-title { font-size:13px; font-weight:600; line-height:1.3; word-break:break-word; }
.aipp-wiki-placement-tag {
  flex-shrink:0; font-size:9px; font-weight:700; letter-spacing:0.05em; text-transform:uppercase;
  padding:3px 8px; border-radius:5px; line-height:1.2;
}
.aipp-wiki-placement-tag--primary {
  color:#1e40af; background:#dbeafe; border:1px solid #93c5fd;
}
.aipp-wiki-placement-tag--virtual {
  color:#6d28d9; background:#ede9fe; border:1px solid #c4b5fd;
}
.aipp-wiki-link-sub { font-size:11px; color:var(--aipp-text-dim); line-height:1.35; word-break:break-all; }
.aipp-wiki-link-relation {
  font-size:11px; font-weight:600; color:var(--aipp-text-muted, #64748b); line-height:1.35;
  text-transform:lowercase; letter-spacing:0.02em;
}
.aipp-wiki-link-note { font-size:11px; color:var(--aipp-text-dim); line-height:1.4; word-break:break-word; }
.aipp-wiki-link-arrow { flex-shrink:0; font-size:14px; color:var(--aipp-text-dim); }
.aipp-wiki-link-empty { font-size:12px; color:var(--aipp-text-dim); padding:4px 2px 2px; }
.aipp-wiki-detail-head {
  margin-bottom:14px; padding-bottom:12px;
  border-bottom:1px solid var(--aipp-border); }
.aipp-wiki-detail-section { margin:0 0 32px; }
.aipp-wiki-detail-section-title {
  font-size:10px; font-weight:600; letter-spacing:.06em; text-transform:uppercase;
  color:var(--aipp-text-dim); margin:0 0 14px; }
.aipp-wiki-detail-section-body { font-size:13px; line-height:2; }
.aipp-wiki-detail-dl { display:flex; flex-direction:column; gap:6px; }
.aipp-wiki-detail-row {
  display:grid; grid-template-columns:72px minmax(0,1fr); gap:8px; align-items:baseline; }
.aipp-wiki-detail-label { font-size:11.5px; color:var(--aipp-text-dim); }
.aipp-wiki-detail-value { font-size:12.5px; color:var(--aipp-text); word-break:break-word; }
.aipp-wiki-children-brief {
  margin-top:0; display:flex; flex-direction:column; gap:8px; }
.aipp-wiki-child-brief {
  display:grid; grid-template-columns:18px minmax(72px,22%) minmax(0,1fr); gap:8px 10px;
  align-items:start; padding:8px 10px; border-radius:8px; cursor:pointer;
  font-size:11.5px;
  border:1px solid color-mix(in srgb, var(--aipp-border) 75%, transparent);
  background:color-mix(in srgb, var(--aipp-bg) 40%, var(--aipp-surface)); }
.aipp-wiki-child-brief:hover { background:color-mix(in srgb, var(--aipp-text) 5%, transparent); }
.aipp-wiki-child-brief .ico { opacity:.85; padding-top:2px; }
.aipp-wiki-child-brief .nm { font-weight:600; line-height:1.5; padding-top:1px; }
.aipp-wiki-child-brief .br { min-width:0; word-break:break-word; }
.aipp-wiki-related-in-summary { margin-top:10px; }
.aipp-wiki-source-link a { color:var(--aipp-accent); text-decoration:none; font-size:12.5px; }
.aipp-wiki-source-link a:hover { text-decoration:underline; }
.aipp-wiki-version-list { list-style:none; margin:0; padding:0; display:flex; flex-direction:column; gap:6px; }
.aipp-wiki-version-item {
  padding:8px 10px; border:1px solid var(--aipp-border); border-radius:6px;
  font-size:12px; background:var(--aipp-surface); }
.aipp-wiki-version-item.current {
  border-color:color-mix(in srgb, var(--aipp-accent) 35%, var(--aipp-border)); }
.aipp-wiki-version-head { display:flex; gap:10px; align-items:baseline; margin-bottom:4px; }
.aipp-wiki-version-item .ver { font-weight:600; }
.aipp-wiki-version-item .when { font-size:11px; color:var(--aipp-text-dim); }
.aipp-wiki-version-item a { color:var(--aipp-accent); font-size:11.5px; word-break:break-all; }
.aipp-wiki-detail-title {
  display:flex; align-items:baseline; gap:8px; flex-wrap:wrap; }
.aipp-wiki-detail-name { font-size:17px; font-weight:600; line-height:1.3; letter-spacing:-.01em; }
.aipp-wiki-detail-meta {
  margin-top:8px; font-size:11.5px; color:var(--aipp-text-dim); line-height:1.45; }
.aipp-wiki-kind-tag {
  display:inline-flex; align-items:center; flex-shrink:0;
  font-size:9px; font-weight:500; letter-spacing:.04em;
  padding:1px 6px; border-radius:4px; line-height:1.4;
  border:1px solid transparent; vertical-align:baseline;
  text-transform:lowercase; }
.aipp-wiki-detail-head .aipp-wiki-kind-tag { margin:0; }
.aipp-wiki-kind-tag.facet {
  color:color-mix(in srgb, var(--aipp-accent) 85%, white);
  background:color-mix(in srgb, var(--aipp-accent) 12%, transparent);
  border-color:color-mix(in srgb, var(--aipp-accent) 22%, transparent); }
.aipp-wiki-kind-tag.document {
  color:color-mix(in srgb, var(--aipp-success) 80%, white);
  background:color-mix(in srgb, var(--aipp-success) 10%, transparent);
  border-color:color-mix(in srgb, var(--aipp-success) 22%, transparent); }
.aipp-wiki-kind-tag.axis {
  color:color-mix(in srgb, var(--aipp-warning) 85%, white);
  background:color-mix(in srgb, var(--aipp-warning) 10%, transparent);
  border-color:color-mix(in srgb, var(--aipp-warning) 22%, transparent); }
.aipp-wiki-kind-tag.physical {
  color:var(--aipp-text-dim);
  background:color-mix(in srgb, var(--aipp-text) 5%, var(--aipp-surface));
  border-color:var(--aipp-border); }
.aipp-wiki-hint-inline { opacity:.6; font-size:13px; }
.aipp-wiki-summary-block {
  font-size:13px; line-height:1.6; color:var(--aipp-text);
  background:var(--aipp-surface);
  border:1px solid var(--aipp-border);
  border-radius:8px; padding:12px 14px;
  box-shadow:0 1px 2px color-mix(in srgb, var(--aipp-bg) 40%, transparent); }
.aipp-wiki-summary-block p { margin:0 0 .65em; }
.aipp-wiki-summary-block p:last-child { margin-bottom:0; }
.aipp-wiki-summary-block strong { font-weight:600; color:var(--aipp-text); }
.aipp-wiki-file-link { font-size:12.5px; }
.aipp-wiki-file-link a { color:var(--aipp-accent); text-decoration:none; }
.aipp-wiki-file-link a:hover { text-decoration:underline; }
.aipp-wiki-ref-title { font-size:11px; opacity:.75; font-weight:600; margin-bottom:6px;
  text-transform:uppercase; letter-spacing:.04em; }
.aipp-wiki-ref .ref-note { opacity:.8; margin-top:2px; font-size:11.5px; }
.aipp-wiki-detail h3 { margin:0 0 4px; font-size:15px; }
.aipp-wiki-path { font-size:11px; opacity:.65; word-break:break-all; margin-bottom:8px; }
.aipp-wiki-tags { display:flex; gap:6px; flex-wrap:wrap; margin:6px 0 10px; }
.aipp-wiki-tag { font-size:10.5px; padding:1px 7px; border-radius:9px; background:var(--aipp-surface2);
  color:var(--aipp-text-dim); }
.aipp-wiki-block { margin:10px 0; font-size:13px; }
.aipp-wiki-block h4 { margin:0 0 4px; font-size:12px; opacity:.75; font-weight:600; }
.aipp-wiki-summary { white-space:pre-wrap; word-break:break-word; line-height:1.55; }
.aipp-wiki-ref { display:block; padding:6px 8px; margin:4px 0; border-radius:5px; cursor:pointer;
  border:1px solid var(--aipp-border); font-size:12px; }
.aipp-wiki-ref:hover { border-color:var(--aipp-accent); }
.aipp-wiki-ref .rel { opacity:.7; font-size:11px; }
.aipp-wiki-empty { padding:24px; opacity:.7; }
.aipp-wiki-hint { padding:14px; opacity:.6; font-size:12px; }
.aipp-wiki-tree { list-style:none; margin:0; padding:0; }
.aipp-wiki-tree ul { list-style:none; margin:0; padding-left:11px; }
.aipp-wiki-tree-item {
  display:flex; align-items:center; gap:2px;
  padding:1px 6px 1px 4px; margin:0 4px;
  border-radius:5px; cursor:pointer; user-select:none;
  font-size:11.5px; line-height:1.35;
  position:relative; color:var(--aipp-text); }
.aipp-wiki-tree-item:hover { background:color-mix(in srgb, var(--aipp-text) 5%, transparent); }
.aipp-wiki-tree-item.sel {
  background:color-mix(in srgb, var(--aipp-accent) 16%, transparent);
  color:var(--aipp-text); }
.aipp-wiki-tree-item.sel::before {
  content:''; position:absolute; left:-4px; top:3px; bottom:3px; width:2px;
  border-radius:1px; background:var(--aipp-accent); }
.aipp-wiki-tree-item:focus-visible {
  outline:1px solid var(--aipp-accent);
  outline-offset:-1px; }
.aipp-wiki-tree-item.axis,
.aipp-wiki-tree-item.physical {
  margin-top:5px; padding-top:3px;
  font-size:10.5px; font-weight:600; color:var(--aipp-text-dim);
  letter-spacing:.02em; }
.aipp-wiki-tree-item.axis:hover,
.aipp-wiki-tree-item.physical:hover { background:transparent; color:var(--aipp-text); }
.aipp-wiki-tree-item.axis.sel,
.aipp-wiki-tree-item.physical.sel { background:color-mix(in srgb, var(--aipp-text) 4%, transparent); }
.aipp-wiki-tree-item .twisty {
  width:12px; text-align:center; opacity:.55; flex-shrink:0;
  font-size:8px; line-height:1; color:var(--aipp-text-dim); }
.aipp-wiki-tree-item .twisty.empty { visibility:hidden; }
.aipp-wiki-tree-item .ico {
  flex-shrink:0; width:14px; text-align:center;
  font-size:10px; line-height:1; opacity:.72; }
.aipp-wiki-tree-item.axis .ico,
.aipp-wiki-tree-item.physical .ico { opacity:.55; font-size:9px; }
.aipp-wiki-tree-item .lbl {
  flex:1; min-width:0; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.aipp-wiki-tree-item.dragging { opacity:.45; }
.aipp-wiki-tree-item.drop-target {
  background:color-mix(in srgb, var(--aipp-accent) 18%, transparent);
  outline:1px dashed var(--aipp-accent); outline-offset:-1px; border-radius:4px; }
.aipp-wiki-detail-hero-title.aipp-wiki-title-editable {
  display:inline-flex; align-items:center; gap:6px; }
.aipp-wiki-title-text { outline:none; border-radius:6px; padding:0 2px; }
.aipp-wiki-detail-hero-title.editing .aipp-wiki-title-text {
  background:var(--aipp-surface2);
  color:var(--aipp-text);
  border:1px solid var(--aipp-border2);
  border-radius:6px;
  padding:2px 8px;
  box-decoration-break:clone; }
[data-aipp-theme="light"] .aipp-wiki-detail-hero-title.editing .aipp-wiki-title-text {
  background:#fff;
  border-color:var(--aipp-border); }
.aipp-wiki-detail-hero-title.editing .aipp-wiki-title-edit,
.aipp-wiki-detail-hero-title.editing .aipp-wiki-title-delete { display:none; }
.aipp-wiki-title-edit,
.aipp-wiki-title-delete {
  display:inline-flex; align-items:center; justify-content:center;
  width:24px; height:24px; padding:0; border:none; border-radius:6px;
  background:transparent; color:var(--aipp-text-dim); cursor:pointer;
  opacity:0; transition:opacity .12s, background .12s, color .12s; }
.aipp-wiki-detail-hero-title:hover .aipp-wiki-title-edit,
.aipp-wiki-detail-hero-title:hover .aipp-wiki-title-delete,
.aipp-wiki-detail-hero-title:focus-within .aipp-wiki-title-edit,
.aipp-wiki-detail-hero-title:focus-within .aipp-wiki-title-delete { opacity:.7; }
.aipp-wiki-title-edit:hover {
  opacity:1; color:var(--aipp-accent);
  background:color-mix(in srgb, var(--aipp-text) 8%, transparent); }
.aipp-wiki-title-delete:hover {
  opacity:1; color:var(--aipp-danger, #e55);
  background:color-mix(in srgb, var(--aipp-danger, #e55) 12%, transparent); }
.aipp-wiki-title-edit svg,
.aipp-wiki-title-delete svg { width:15px; height:15px; }
.aipp-wiki-hint-box--reject .aipp-wiki-hint-title { color:var(--aipp-danger, #e55); }
.aipp-wiki-hint-danger {
  background:var(--aipp-danger, #e55);
  border-color:var(--aipp-danger, #e55);
  color:#fff; }
.aipp-wiki-hint-danger:hover { filter:brightness(1.05); }
.aipp-wiki-sidebar-tree .aipp-wiki-empty,
.aipp-wiki-sidebar-tree .aipp-wiki-hint { padding:10px 8px; font-size:11px; }
.aipp-wiki-graph { flex:1.1; min-width:0; overflow:auto; }
circle.aipp-wiki-node { cursor:pointer; stroke:var(--aipp-bg); stroke-width:1.5; fill:var(--aipp-success); }
circle.aipp-wiki-node.sel { stroke:var(--aipp-accent); stroke-width:3; }
text.aipp-wiki-lbl { font-size:11px; fill:var(--aipp-text); pointer-events:none; }
line.aipp-wiki-edge { stroke:var(--aipp-accent); stroke-width:1.8; }
text.aipp-wiki-edge-label { font-size:10px; fill:var(--aipp-text-dim); pointer-events:none; }

/* note-one-wiki setup wizard overlay */
.aipp-wiki-main { display:flex; flex-direction:column; flex:1; min-height:0; }
.aipp-wiki-root.aipp-wiki-setup-active .aipp-wiki-main {
  filter:brightness(0.52); pointer-events:none; user-select:none; }
.aipp-wiki-setup-backdrop {
  position:absolute; inset:0; z-index:20; display:flex; align-items:center; justify-content:center;
  padding:16px; background:color-mix(in srgb, var(--aipp-bg) 35%, transparent); pointer-events:auto; }
.aipp-wiki-setup-backdrop[hidden] { display:none !important; }
.aipp-wiki-setup-panel {
  position:relative;
  width:min(520px, 100%); max-height:min(88vh, 720px); overflow:auto;
  display:flex; flex-direction:column;
  background:var(--aipp-surface);
  border:var(--aipp-popup-border-width, 2px) solid var(--aipp-border);
  border-radius:var(--aipp-popup-radius, var(--aipp-radius-lg));
  padding:18px 20px 16px;
  box-shadow:0 12px 40px color-mix(in srgb, var(--aipp-bg) 50%, transparent); }
.aipp-wiki-setup-title { margin:0 0 6px; padding-right:28px; font-size:16px; font-weight:600; }
.aipp-wiki-setup-sub { margin:0 0 14px; font-size:12px; color:var(--aipp-text-dim); line-height:1.45; }
.aipp-wiki-setup-steps { list-style:none; margin:0 0 16px; padding:0; display:flex; gap:8px; }
.aipp-wiki-setup-steps li {
  flex:1; display:flex; align-items:center; gap:6px; font-size:11px; padding:6px 8px;
  border-radius:6px; border:1px solid var(--aipp-border); color:var(--aipp-text-dim); }
.aipp-wiki-setup-steps li span {
  width:18px; height:18px; border-radius:50%; display:inline-flex; align-items:center; justify-content:center;
  font-size:10px; font-weight:700; background:var(--aipp-surface2); flex-shrink:0; }
.aipp-wiki-setup-steps li.active { border-color:var(--aipp-accent); color:var(--aipp-text);
  background:color-mix(in srgb, var(--aipp-accent) 10%, transparent); }
.aipp-wiki-setup-steps li.done { border-color:var(--aipp-success); color:var(--aipp-text); opacity:.9; }
.aipp-wiki-setup-steps li.pending { opacity:.55; }
.aipp-wiki-setup-body { flex:1; min-height:72px; padding-bottom:4px; }
.aipp-wiki-setup-lead { margin:0 0 8px; font-size:13px; line-height:1.45; }
.aipp-wiki-setup-hint { margin:0 0 10px; font-size:12px; color:var(--aipp-text-dim); line-height:1.4; }
.aipp-wiki-setup-warn { margin:0 0 10px; font-size:12px; line-height:1.45; color:var(--aipp-warn, #b45309);
  padding:8px 10px; border-radius:8px; border:1px solid color-mix(in srgb, var(--aipp-warn, #b45309) 35%, var(--aipp-border));
  background:color-mix(in srgb, var(--aipp-warn, #b45309) 8%, var(--aipp-surface2)); }
.aipp-wiki-setup-warn-item { color:var(--aipp-warn, #b45309); }
.aipp-wiki-setup-tag-row { display:flex; flex-wrap:wrap; gap:8px; margin:8px 0 4px; }
.aipp-wiki-setup-tag {
  border:1px solid var(--aipp-border); border-radius:999px; background:var(--aipp-surface2);
  color:var(--aipp-text-dim); font-size:12px; padding:5px 12px; cursor:pointer; }
.aipp-wiki-setup-tag.on { border-color:var(--aipp-accent); color:var(--aipp-text);
  background:color-mix(in srgb, var(--aipp-accent) 14%, transparent); }
.aipp-wiki-setup-tag-input { min-width:120px; }
.aipp-wiki-setup-tree-preview {
  position:fixed; z-index:10050; width:min(268px, calc(100vw - 24px));
  padding:10px 12px; border-radius:10px;
  background:var(--aipp-surface); border:1px solid var(--aipp-border);
  box-shadow:0 10px 28px rgba(0,0,0,.22); pointer-events:none; }
.aipp-wiki-setup-tree-preview[hidden] { display:none !important; }
.aipp-wiki-setup-tree-preview-title {
  font-size:12px; font-weight:650; color:var(--aipp-text); margin-bottom:4px; }
.aipp-wiki-setup-tree-preview-blurb {
  font-size:11px; line-height:1.4; color:var(--aipp-text-dim); margin-bottom:6px; }
.aipp-wiki-setup-tree-preview-tree {
  margin:0; font-size:10.5px; line-height:1.45; font-family:ui-monospace, SFMono-Regular, Menlo, monospace;
  color:var(--aipp-text); white-space:pre; }
.aipp-wiki-setup-tree-preview-note {
  margin-top:6px; font-size:10.5px; color:var(--aipp-accent); line-height:1.35; }
.aipp-wiki-setup-ws-row { display:flex; align-items:center; gap:10px; flex-wrap:wrap; margin:8px 0; }
.aipp-wiki-setup-path {
  flex:1; min-width:0; font-size:11px; padding:6px 8px; border-radius:6px;
  background:var(--aipp-surface2); border:1px solid var(--aipp-border); word-break:break-all; }
.aipp-wiki-setup-ws-change {
  border:1px solid var(--aipp-border); border-radius:6px; background:transparent;
  color:var(--aipp-text); font-size:12px; padding:6px 12px; cursor:pointer; }
.aipp-wiki-setup-ws-change:hover { border-color:var(--aipp-accent); }
.aipp-wiki-setup-summary { margin:8px 0 0; padding-left:18px; font-size:12px; color:var(--aipp-text-dim); line-height:1.5; }
.aipp-wiki-setup-loading { display:flex; align-items:center; gap:8px; font-size:12px; color:var(--aipp-text-dim); padding:8px 0; }
.aipp-wiki-setup-error { margin:8px 0 0; font-size:12px; color:var(--aipp-danger); line-height:1.4; }
.aipp-wiki-setup-footer { display:flex; justify-content:flex-end; gap:8px; margin-top:14px; padding-top:12px; border-top:1px solid var(--aipp-border); }
.aipp-wiki-setup-btn {
  display:inline-flex; align-items:center; justify-content:center; gap:6px;
  border:1px solid var(--aipp-border); border-radius:7px; background:transparent;
  color:var(--aipp-text); font-size:12px; font-weight:500; padding:7px 14px; cursor:pointer; min-height:34px; }
.aipp-wiki-setup-btn:hover:not(:disabled) { border-color:var(--aipp-accent); }
.aipp-wiki-setup-btn:disabled { opacity:.45; cursor:default; }
.aipp-wiki-setup-btn--primary {
  border-color:var(--aipp-accent); background:var(--aipp-accent); color:#fff; }
.aipp-wiki-setup-btn--primary:hover:not(:disabled) { background:var(--aipp-accent-hover); border-color:var(--aipp-accent-hover); }
.aipp-wiki-setup-btn-icon { width:16px; height:16px; flex-shrink:0; }
.aipp-wiki-setup-btn-label { line-height:1; }

/* ── Folder import: "how to organize" chooser ── */
.aipp-wiki-choose-backdrop {
  position:absolute; inset:0; z-index:30; display:flex; align-items:center; justify-content:center;
  padding:16px; background:color-mix(in srgb, var(--aipp-bg) 45%, transparent); pointer-events:auto; }
.aipp-wiki-choose {
  width:min(440px, 100%); display:flex; flex-direction:column;
  background:var(--aipp-surface);
  border:var(--aipp-popup-border-width, 2px) solid var(--aipp-border);
  border-radius:var(--aipp-popup-radius, var(--aipp-radius-lg));
  padding:18px 20px 16px;
  box-shadow:0 12px 40px color-mix(in srgb, var(--aipp-bg) 50%, transparent); }
.aipp-wiki-choose-title { margin:0 0 6px; font-size:15px; font-weight:600; }
.aipp-wiki-choose-sum { margin:0 0 14px; font-size:12px; color:var(--aipp-text-dim); line-height:1.45; }
.aipp-wiki-choose-opts { display:flex; flex-direction:column; gap:8px; margin-bottom:16px; }
.aipp-wiki-choose-opt {
  display:flex; flex-direction:column; gap:3px; text-align:left;
  border:1px solid var(--aipp-border); border-radius:9px; background:var(--aipp-surface2);
  padding:11px 13px; cursor:pointer; transition:border-color .12s, background .12s; }
.aipp-wiki-choose-opt:hover { border-color:var(--aipp-text-dim); }
.aipp-wiki-choose-opt.sel { border-color:var(--aipp-accent);
  background:color-mix(in srgb, var(--aipp-accent) 12%, transparent); }
.aipp-wiki-choose-opt-label { font-size:13px; font-weight:600; color:var(--aipp-text); }
.aipp-wiki-choose-opt-hint { font-size:11.5px; color:var(--aipp-text-dim); line-height:1.4; }
.aipp-wiki-choose-opt--target { cursor:pointer; gap:6px; }
.aipp-wiki-choose-facet-field {
  display:block; width:100%; margin-top:8px; pointer-events:auto; }
.aipp-wiki-choose-facet-label {
  font-size:11px; font-weight:500; color:var(--aipp-text-dim); letter-spacing:.02em; }
.aipp-wiki-choose-facet-select,
.aipp-wiki-choose-target-select {
  display:block; width:100%; box-sizing:border-box;
  height:32px; min-height:32px;
  padding:0 28px 0 10px;
  border-radius:5px;
  border:1px solid color-mix(in srgb, var(--aipp-border) 75%, transparent);
  background-color:color-mix(in srgb, #fff 92%, var(--aipp-surface2) 8%);
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='10' height='10' viewBox='0 0 10 10' fill='none'%3E%3Cpath d='M2 3.5 5 6.5 8 3.5' stroke='%23888' stroke-width='1.4' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E");
  background-position:right 10px center;
  background-repeat:no-repeat;
  background-size:10px 10px;
  appearance:none; -webkit-appearance:none;
  color:var(--aipp-text); font-size:13px; font-weight:500;
  line-height:32px;
  cursor:pointer;
  transition:border-color .15s, box-shadow .15s, background-color .15s; }
.aipp-wiki-choose-facet-select:hover,
.aipp-wiki-choose-target-select:hover {
  border-color:color-mix(in srgb, var(--aipp-text-dim) 35%, var(--aipp-border));
  background-color:#fff; }
.aipp-wiki-choose-facet-select:focus,
.aipp-wiki-choose-target-select:focus {
  outline:none; border-color:var(--aipp-accent);
  box-shadow:0 0 0 2px color-mix(in srgb, var(--aipp-accent) 20%, transparent);
  background-color:#fff; }
.aipp-wiki-choose-opt.sel .aipp-wiki-choose-facet-select,
.aipp-wiki-choose-opt.sel .aipp-wiki-choose-target-select {
  border-color:color-mix(in srgb, var(--aipp-accent) 28%, var(--aipp-border));
  background-color:color-mix(in srgb, #fff 94%, var(--aipp-accent) 6%); }
.aipp-wiki-choose-target { display:flex; flex-direction:column; gap:6px; margin-top:12px; }
.aipp-wiki-choose-target-label { font-size:12px; color:var(--aipp-text-dim); }
.aipp-wiki-choose-target--off { opacity:.4; pointer-events:none; }
.aipp-wiki-choose-foot { display:flex; justify-content:flex-end; gap:8px; }

/* Version-protection switch + detected version groups (D2) */
.aipp-wiki-choose-versions {
  margin:0 0 16px; padding:11px 13px; border:1px dashed var(--aipp-border); border-radius:9px;
  max-height:180px; overflow:auto; }
.aipp-wiki-choose-vg-toggle { display:flex; align-items:center; gap:7px; font-size:12.5px;
  font-weight:600; color:var(--aipp-text); cursor:pointer; }
.aipp-wiki-choose-vg-hint { margin:4px 0 8px; font-size:11px; color:var(--aipp-text-dim); line-height:1.4; }
.aipp-wiki-choose-vg-group { margin-top:6px; }
.aipp-wiki-choose-vg-name { font-size:12px; font-weight:600; color:var(--aipp-text); }
.aipp-wiki-choose-vg-members { margin:3px 0 0; padding-left:16px; }
.aipp-wiki-choose-vg-member { font-size:11.5px; color:var(--aipp-text-dim); line-height:1.5; }
.aipp-wiki-choose-vg-arch { color:var(--aipp-warn, #b58900); }
.aipp-wiki-choose-vg-cur { color:var(--aipp-accent); }

/* Smart-arrange placement preview */
.aipp-wiki-choose-places { margin:0 0 16px; padding:0; list-style:none; max-height:260px; overflow:auto; }
.aipp-wiki-choose-place { display:flex; gap:6px; align-items:baseline; flex-wrap:wrap;
  padding:5px 2px; border-bottom:1px solid color-mix(in srgb, var(--aipp-border) 55%, transparent);
  font-size:11.5px; line-height:1.45; }
.aipp-wiki-choose-place-src { color:var(--aipp-text-dim); }
.aipp-wiki-choose-place-arrow { color:var(--aipp-text-dim); }
.aipp-wiki-choose-place-dst { color:var(--aipp-text); font-weight:500; }
.aipp-wiki-choose-place.arch .aipp-wiki-choose-place-dst { color:var(--aipp-warn, #b58900); font-weight:400; }

/* ── work projections: sys.todo / sys.work ── */
.sys-work-card{display:flex;flex-direction:column;gap:8px;padding:10px 12px;background:var(--aipp-surface2,#191c29);border:1px solid var(--aipp-border,#272b3e);border-radius:10px;font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',sans-serif;color:var(--aipp-text,#d0d8f0);min-width:220px;max-width:420px}
.sys-work-card.sys-plan-dag-card{max-width:none;width:100%;box-sizing:border-box}
.sys-plan-dag{display:flex;flex-direction:column;align-items:stretch;gap:0;margin-top:2px}
.sys-plan-wave{
  --wave-n:1;
  --wave-gap:8px;
  display:flex;
  justify-content:center;
  align-items:stretch;
  gap:var(--wave-gap);
  flex-wrap:nowrap;
  width:100%;
}
.sys-plan-node{
  box-sizing:border-box;
  flex:0 1 calc(100% / var(--wave-n) - 8px);
  width:calc(100% / var(--wave-n) - 8px);
  max-width:calc(100% / var(--wave-n) - 8px);
  min-width:0;
  margin:0;
}
.sys-plan-node .sys-work-row-body{width:100%;min-width:0}
.sys-plan-node .sys-work-row-title{overflow-wrap:anywhere}
.sys-plan-node .sys-work-status-icon{margin-top:8px}
.sys-plan-join-wrap{position:relative;width:100%;height:24px;margin:2px 0}
.sys-plan-join{display:block;width:100%;height:100%;overflow:visible}
.sys-plan-join path{
  fill:none;
  stroke:var(--aipp-accent,#8b83ff);
  stroke-width:1;
  opacity:.65;
  vector-effect:non-scaling-stroke;
}
.sys-plan-join-arrow{
  position:absolute;
  bottom:0;
  width:8px;
  height:6px;
  transform:translateX(-50%);
  fill:var(--aipp-accent,#8b83ff);
  opacity:.75;
  pointer-events:none;
}
.sys-work-header{display:flex;align-items:center;justify-content:space-between;gap:10px}
.sys-work-title{font-size:13px;font-weight:600;color:var(--aipp-text,#d0d8f0);min-width:0}
.sys-work-status-cluster{display:inline-flex;align-items:center;gap:6px;flex-shrink:0}
.sys-work-status{font-size:11px;font-weight:600;letter-spacing:.02em;color:var(--aipp-text-dim,#9ba3c2);text-transform:lowercase;line-height:1}
.sys-work-status.active{color:var(--aipp-accent,#8b83ff)}
.sys-work-status.done{color:#4fbf8f}
.sys-work-status.warn{color:var(--aipp-danger,#ff4f6a)}
.sys-work-status.pending{color:var(--aipp-text-dim,#9ba3c2)}
.sys-work-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:8px}
.sys-work-row{display:flex;align-items:flex-start;justify-content:space-between;gap:8px;padding:0;border-radius:0;background:transparent;border:none}
.sys-work-row.done{opacity:.72}
.sys-work-row.active .sys-work-row-body{border-color:rgba(124,111,247,.45)}
.sys-work-row.warn .sys-work-row-body{border-color:rgba(255,79,106,.35)}
.sys-work-step-index{
  flex-shrink:0;
  min-width:1.5rem;
  padding-top:9px;
  font-size:12px;
  font-weight:650;
  font-variant-numeric:tabular-nums;
  letter-spacing:.02em;
  line-height:1.35;
  text-align:right;
  color:var(--aipp-text-dim,#9ba3c2);
  font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;
}
.sys-work-row-main{flex:1;min-width:0;display:flex;flex-direction:column;gap:4px}
.sys-work-row-body{
  flex:1;
  min-width:0;
  padding:8px 10px;
  border-radius:8px;
  background:var(--aipp-surface,#13151f);
  border:1px solid var(--aipp-border,#272b3e);
  box-sizing:border-box;
}
.sys-work-row-title{font-size:12px;line-height:1.45;flex:1;min-width:0;word-break:break-word;color:var(--aipp-text,#d0d8f0)}
.sys-work-row-meta{font-size:11px;color:var(--aipp-text-dim,#9ba3c2);margin-top:4px;line-height:1.4}
.sys-work-details{display:flex;flex-direction:column;gap:4px;margin-top:2px;padding-top:6px;border-top:1px solid color-mix(in srgb, var(--aipp-border,#272b3e) 80%, transparent)}
.sys-work-detail{font-size:11px;line-height:1.4;color:var(--aipp-text,#d0d8f0);word-break:break-word}
.sys-work-detail-k{display:inline-block;min-width:3.2rem;color:var(--aipp-text-dim,#9ba3c2);font-weight:600;margin-right:4px}
.sys-work-detail--id code{font-size:10px;color:var(--aipp-text-dim,#9ba3c2)}
.sys-work-badge{flex-shrink:0;font-size:10px;padding:2px 7px;border-radius:999px;background:rgba(124,111,247,.14);color:var(--aipp-text-dim,#9ba3c2)}
.sys-work-row.done .sys-work-badge{background:rgba(79,191,143,.16);color:#4fbf8f}
.sys-work-row.active .sys-work-badge{background:rgba(124,111,247,.22);color:var(--aipp-accent,#8b83ff)}
.sys-work-progress{font-size:11px;color:var(--aipp-text-dim,#9ba3c2)}
/* Status icons (spinner for in_progress / running) */
.sys-work-status-icon{flex-shrink:0;display:inline-flex;align-items:center;justify-content:center;width:22px;height:22px;border-radius:50%;color:var(--aipp-text-dim,#9ba3c2);box-sizing:border-box}
.sys-work-row .sys-work-status-icon{margin-top:8px}
.sys-work-header .sys-work-status-icon{margin-top:0}
.sys-work-status-icon.active{color:var(--aipp-accent,#8b83ff);background:rgba(124,111,247,.18);box-shadow:inset 0 0 0 1px rgba(124,111,247,.35)}
.sys-work-status-icon.done{color:#4fbf8f;background:rgba(79,191,143,.18);box-shadow:inset 0 0 0 1px rgba(79,191,143,.4)}
.sys-work-status-icon.warn{color:var(--aipp-danger,#ff4f6a);background:rgba(255,79,106,.14);box-shadow:inset 0 0 0 1px rgba(255,79,106,.35)}
.sys-work-status-icon.pending{color:var(--aipp-text-dim,#9ba3c2);background:rgba(155,163,194,.12);box-shadow:inset 0 0 0 1px rgba(155,163,194,.28)}
.sys-work-spinner{width:11px;height:11px;border:2px solid rgba(124,111,247,.28);border-top-color:var(--aipp-accent,#8b83ff);border-radius:50%;animation:sys-work-spin .7s linear infinite}
.sys-work-dot{width:7px;height:7px;border-radius:50%;background:currentColor;opacity:.85}
@keyframes sys-work-spin{to{transform:rotate(360deg)}}
