/* ---------- темы: 10 штук, переменные ---------- */
:root{--chip:rgba(245,158,11,.10);--llm-fg:#4338ca;--font:"Inter","Noto Sans","DejaVu Sans",system-ui,sans-serif}
[data-theme=paper]{--bg:#ffffff;--dot:#cbd5e1;--fg:#1f2937;--muted:#6b7280;--bar:rgba(255,255,255,.9);--line:#e5e7eb;--link:#cbd5e1;--accent:#f97316;--accent-fg:#fff;
  --root:#111827;--root-fg:#fff;--group:#f1f5f9;--group-b:#94a3b8;--cat:#fff;--cat-b:#94a3b8;--greet:#fff7ed;--greet-b:#fdba74;
  --reply:#ecfdf5;--reply-b:#6ee7b7;--handoff:#fef2f2;--handoff-b:#fca5a5;--llm:#eef2ff;--llm-b:#a5b4fc;--cond:#b45309;--note:#991b1b;--panel:#fff;--input:#f9fafb}
[data-theme=graphite]{--chip:rgba(251,191,36,.12);--llm-fg:#c7d2fe;--bg:#1c1917;--dot:#3f3a36;--fg:#e7e5e4;--muted:#a8a29e;--bar:rgba(28,25,23,.92);--line:#44403c;--link:#57534e;--accent:#fdba74;--accent-fg:#1c1917;
  --root:#7c2d12;--root-fg:#fff7ed;--group:#3f2a1c;--group-b:#fdba74;--cat:#292524;--cat-b:#a8a29e;--greet:#3f2a1c;--greet-b:#fdba74;
  --reply:#1f2a24;--reply-b:#34d399;--handoff:#2a1a1a;--handoff-b:#f87171;--llm:#1e1e2e;--llm-b:#818cf8;--cond:#fbbf24;--note:#fca5a5;--panel:#292524;--input:#1c1917}
[data-theme=nord]{--chip:rgba(235,203,139,.14);--llm-fg:#d8b9ff;--bg:#2e3440;--dot:#434c5e;--fg:#eceff4;--muted:#d8dee9;--bar:rgba(46,52,64,.92);--line:#4c566a;--link:#4c566a;--accent:#88c0d0;--accent-fg:#2e3440;
  --root:#5e81ac;--root-fg:#eceff4;--group:#3b4252;--group-b:#81a1c1;--cat:#3b4252;--cat-b:#d8dee9;--greet:#434c5e;--greet-b:#ebcb8b;
  --reply:#3b4a44;--reply-b:#a3be8c;--handoff:#4a3b3f;--handoff-b:#bf616a;--llm:#3d3f52;--llm-b:#b48ead;--cond:#ebcb8b;--note:#bf616a;--panel:#3b4252;--input:#2e3440}
[data-theme=solar]{--bg:#fdf6e3;--dot:#d9cfb0;--fg:#586e75;--muted:#93a1a1;--bar:rgba(253,246,227,.92);--line:#eee8d5;--link:#c9c1a5;--accent:#b58900;--accent-fg:#fdf6e3;
  --root:#073642;--root-fg:#fdf6e3;--group:#eee8d5;--group-b:#93a1a1;--cat:#fffbf0;--cat-b:#93a1a1;--greet:#fff3d6;--greet-b:#cb4b16;
  --reply:#eaf2df;--reply-b:#859900;--handoff:#fbe6e3;--handoff-b:#dc322f;--llm:#e7ecf7;--llm-b:#6c71c4;--cond:#cb4b16;--note:#dc322f;--panel:#fffbf0;--input:#fdf6e3}
[data-theme=ocean]{--bg:#f0f9ff;--dot:#bae6fd;--fg:#0c4a6e;--muted:#0369a1;--bar:rgba(240,249,255,.92);--line:#bae6fd;--link:#7dd3fc;--accent:#0284c7;--accent-fg:#fff;
  --root:#0c4a6e;--root-fg:#f0f9ff;--group:#e0f2fe;--group-b:#38bdf8;--cat:#fff;--cat-b:#38bdf8;--greet:#fef9c3;--greet-b:#facc15;
  --reply:#ecfdf5;--reply-b:#34d399;--handoff:#fff1f2;--handoff-b:#fb7185;--llm:#eef2ff;--llm-b:#818cf8;--cond:#b45309;--note:#be123c;--panel:#fff;--input:#f0f9ff}
[data-theme=forest]{--bg:#f4f7f2;--dot:#c6d3bf;--fg:#1f2d1a;--muted:#5b6d52;--bar:rgba(244,247,242,.92);--line:#d7e0d1;--link:#a9b9a0;--accent:#3f7d3a;--accent-fg:#fff;
  --root:#1f3d1a;--root-fg:#f4f7f2;--group:#e5ede0;--group-b:#7f9c74;--cat:#fff;--cat-b:#7f9c74;--greet:#fff7e0;--greet-b:#d9a441;
  --reply:#e6f4e4;--reply-b:#5fae58;--handoff:#fbe9e6;--handoff-b:#d86a5b;--llm:#e8ecf7;--llm-b:#7c8fd1;--cond:#8a5a10;--note:#a33c2f;--panel:#fff;--input:#f4f7f2}
[data-theme=rose]{--bg:#fff7f8;--dot:#f5c6cf;--fg:#4a1d2a;--muted:#9f4d63;--bar:rgba(255,247,248,.92);--line:#fbd5dc;--link:#f0a8b6;--accent:#e11d48;--accent-fg:#fff;
  --root:#881337;--root-fg:#fff1f2;--group:#ffe4e8;--group-b:#fb7185;--cat:#fff;--cat-b:#fb7185;--greet:#fff7ed;--greet-b:#fdba74;
  --reply:#ecfdf5;--reply-b:#6ee7b7;--handoff:#fee2e2;--handoff-b:#f87171;--llm:#f3e8ff;--llm-b:#c084fc;--cond:#9a3412;--note:#9f1239;--panel:#fff;--input:#fff7f8}
[data-theme=midnight]{--chip:rgba(251,191,36,.12);--llm-fg:#c7d2fe;--bg:#0b1220;--dot:#1e293b;--fg:#e2e8f0;--muted:#94a3b8;--bar:rgba(11,18,32,.92);--line:#1e293b;--link:#334155;--accent:#38bdf8;--accent-fg:#0b1220;
  --root:#1d4ed8;--root-fg:#eff6ff;--group:#0f172a;--group-b:#60a5fa;--cat:#111a2e;--cat-b:#94a3b8;--greet:#1a1f2e;--greet-b:#fbbf24;
  --reply:#0f2a22;--reply-b:#34d399;--handoff:#2a1418;--handoff-b:#fb7185;--llm:#181a33;--llm-b:#818cf8;--cond:#fbbf24;--note:#fda4af;--panel:#0f172a;--input:#0b1220}
[data-theme=mono]{--chip:rgba(0,0,0,.05);--llm-fg:#404040;--bg:#fafafa;--dot:#d4d4d4;--fg:#171717;--muted:#737373;--bar:rgba(250,250,250,.92);--line:#e5e5e5;--link:#a3a3a3;--accent:#171717;--accent-fg:#fff;
  --root:#171717;--root-fg:#fafafa;--group:#f5f5f5;--group-b:#737373;--cat:#fff;--cat-b:#737373;--greet:#f5f5f5;--greet-b:#171717;
  --reply:#f5f5f5;--reply-b:#404040;--handoff:#fff;--handoff-b:#171717;--llm:#fafafa;--llm-b:#a3a3a3;--cond:#404040;--note:#171717;--panel:#fff;--input:#f5f5f5}
[data-theme=lavender]{--bg:#f7f5ff;--dot:#d7cff5;--fg:#2e1065;--muted:#6d28d9;--bar:rgba(247,245,255,.92);--line:#e9e5ff;--link:#c4b5fd;--accent:#7c3aed;--accent-fg:#fff;
  --root:#4c1d95;--root-fg:#f5f3ff;--group:#ede9fe;--group-b:#a78bfa;--cat:#fff;--cat-b:#a78bfa;--greet:#fff7ed;--greet-b:#fdba74;
  --reply:#ecfdf5;--reply-b:#6ee7b7;--handoff:#fff1f2;--handoff-b:#fb7185;--llm:#ede9fe;--llm-b:#8b5cf6;--cond:#a16207;--note:#be123c;--panel:#fff;--input:#f7f5ff}

/* ---------- каркас ---------- */
html,body{margin:0;height:100%;color:var(--fg);font:14px/1.4 var(--font);overflow:hidden;background:var(--bg);background-image:radial-gradient(var(--dot) 1.1px,transparent 1.1px);background-size:22px 22px}
#bar{position:fixed;top:0;left:0;right:0;display:flex;gap:12px;align-items:center;padding:8px 16px;background:var(--bar);backdrop-filter:blur(6px);border-bottom:1px solid var(--line);z-index:5}
#bar h1{margin:0 8px 0 0;font-size:17px;font-weight:700}
.btns{display:flex;gap:6px;flex-wrap:wrap}.right{margin-left:auto;display:flex;gap:10px;align-items:center}
button{background:var(--cat);color:var(--fg);border:1px solid var(--line);border-radius:8px;padding:6px 11px;cursor:pointer;font:inherit;font-size:13px}
button:hover{border-color:var(--accent)}button.primary{background:var(--accent);color:var(--accent-fg);border-color:var(--accent);font-weight:600}
button:disabled{opacity:.45;cursor:default}button.danger{color:#b91c1c}
select,input,textarea{background:var(--input);color:var(--fg);border:1px solid var(--line);border-radius:8px;padding:7px 9px;font:inherit;font-size:13.5px;width:100%;box-sizing:border-box}
textarea{min-height:74px;resize:vertical;line-height:1.4}
select#theme{width:auto}
.pill{display:inline-block;background:var(--accent);color:var(--accent-fg);border-radius:10px;padding:0 7px;font-size:11px;margin-left:4px}
.status{font-size:12.5px;color:var(--muted)}.status.dirty{color:var(--accent);font-weight:600}
.leg{position:fixed;top:50px;left:16px;right:16px;display:flex;gap:16px;color:var(--muted);font-size:12.5px;z-index:4;pointer-events:none;flex-wrap:wrap}
.leg i{display:inline-block;width:11px;height:11px;border-radius:3px;margin-right:5px;vertical-align:-1px}
.c-cond{background:var(--cond)}.c-reply{background:var(--reply-b)}.c-handoff{background:var(--handoff-b)}.c-llm{background:var(--llm-b)}
.leg .tip{margin-left:auto;opacity:.8}
svg#canvas{width:100%;height:100%;cursor:grab}svg:active{cursor:grabbing}

/* ---------- узлы ---------- */
.link{fill:none;stroke:var(--link);stroke-width:1.6}
.node rect.card{rx:12;ry:12;stroke-width:1.3;filter:drop-shadow(0 1px 2px rgba(0,0,0,.08))}
.node.selected rect.card{stroke:var(--accent);stroke-width:2.4}
.node text{fill:var(--fg);pointer-events:none}.node .grip,.node .pin,.node .toggle,.node .plus{pointer-events:all}
.node .cond{fill:var(--cond);font-weight:600;font-size:12px}
.node rect.chip{fill:var(--chip);stroke:var(--cond);stroke-opacity:.35}
.node .body{fill:var(--fg);font-size:14px}.node .note{fill:var(--note);font-size:13px}.node .llmtxt{fill:var(--llm-fg);font-size:13.5px;font-style:italic}
.node .who{fill:var(--muted);font-size:10.5px;font-weight:700;letter-spacing:.08em}
.node .ex{fill:var(--fg);font-style:italic;font-size:13.5px}.node .meta{fill:var(--muted);font-size:11.5px}
.node rect.rail{fill:var(--accent);opacity:.9}.node .step-no{fill:var(--accent-fg);font-weight:800;font-size:12px}
.node .grip{fill:var(--accent-fg);font-size:18px;opacity:.9}
.n-root rect.card{fill:var(--root);stroke:var(--root)}.n-root text{font-size:17px;font-weight:700;fill:var(--root-fg)}
.n-greet rect.card{fill:var(--greet);stroke:var(--greet-b)}.n-greet .body{font-size:14.5px}
.n-group rect.card{fill:var(--group);stroke:var(--group-b)}.n-group text{font-size:16px;font-weight:700}
.n-cat rect.card{fill:var(--cat);stroke:var(--cat-b)}.n-cat .title{font-size:15.5px;font-weight:700}
.n-reply rect.card{fill:var(--reply);stroke:var(--reply-b)}
.n-handoff rect.card{fill:var(--handoff);stroke:var(--handoff-b)}
.n-llm rect.card{fill:var(--llm);stroke:var(--llm-b)}
.badge{font-size:11px;fill:#fff;font-weight:700}.badge-bg{fill:var(--accent)}
.toggle{fill:var(--accent);font-size:12px;font-weight:700;cursor:pointer}
.node.collapsed rect.card{stroke-dasharray:5 3}
.grip{fill:var(--muted);font-size:14px;cursor:grab;opacity:.7}.grip:hover{opacity:1}
.pin{font-size:13px;cursor:pointer;opacity:.75}.pin:hover{opacity:1}
.plus{fill:var(--accent);font-size:12px;font-weight:700;cursor:pointer}
.node.dragging{opacity:.5}.drop-target rect.card{stroke:var(--accent);stroke-width:3}
.ghost{pointer-events:none;opacity:.85}

/* ---------- панели ---------- */
aside{position:fixed;top:0;right:0;bottom:0;width:440px;background:var(--panel);border-left:1px solid var(--line);box-shadow:-6px 0 24px rgba(0,0,0,.08);z-index:6;display:flex;flex-direction:column}
aside.hidden,.modal.hidden{display:none}
.ph{display:flex;align-items:center;justify-content:space-between;padding:12px 16px;border-bottom:1px solid var(--line)}
.ph b{font-size:15px}.x{border:0;background:transparent;font-size:16px;padding:2px 6px}
#pbody,#draftList,#historyList{padding:14px 16px;overflow:auto;flex:1}
.f{margin-bottom:12px}.f label{display:block;font-size:12px;color:var(--muted);margin-bottom:4px;font-weight:600;text-transform:uppercase;letter-spacing:.04em}
.f .hint{font-size:12px;color:var(--muted);margin-top:4px}
.row{display:flex;gap:8px}.row>*{flex:1}
.conds .c{display:flex;gap:6px;margin-bottom:6px;align-items:center}.conds .c select{flex:1}.conds .c button{padding:4px 8px}
.kind{display:flex;gap:6px;margin-bottom:12px}.kind button{flex:1}.kind button.on{background:var(--accent);color:var(--accent-fg);border-color:var(--accent)}
.actions{display:flex;gap:8px;flex-wrap:wrap;margin-top:14px;padding-top:12px;border-top:1px solid var(--line)}
.draft{border:1px solid var(--line);border-radius:10px;padding:10px 12px;margin-bottom:10px;background:var(--input)}
.draft .t{font-size:13px;margin:4px 0 8px;white-space:pre-wrap}.draft .m{font-size:12px;color:var(--muted)}
.hist{display:flex;justify-content:space-between;align-items:center;padding:8px 0;border-bottom:1px solid var(--line);font-size:13px}
.modal{position:fixed;inset:0;background:rgba(0,0,0,.35);display:flex;align-items:center;justify-content:center;z-index:20}
.box{background:var(--panel);border-radius:14px;padding:26px 28px;width:340px;box-shadow:0 20px 60px rgba(0,0,0,.25)}
.box.wide{width:720px;max-height:90vh;display:flex;flex-direction:column;padding:0}.box.wide #historyList,.box.wide #calibBody,.box.wide #reviewList{max-height:78vh;overflow:auto}
.box h2{margin:0 0 4px}.box p{margin:0 0 16px;color:var(--muted)}.box input{margin-bottom:10px}.box .primary{width:100%}
.err{color:#dc2626;font-size:13px;margin-top:8px;min-height:18px}
#toast{position:fixed;bottom:16px;left:50%;transform:translateX(-50%);background:var(--root);color:var(--root-fg);padding:9px 16px;border-radius:10px;font-size:13.5px;opacity:0;transition:.2s;z-index:30;pointer-events:none}
#toast.show{opacity:1}
