:root{
  --bg:#eef1f5; --panel:#fff; --ink:#2b2f38; --muted:#6b7280; --line:#e3e7ee;
  --primary:#3b82f6; --dark:#1f2430; --shadow:0 1px 3px rgba(16,24,40,.1);
}
*{box-sizing:border-box}
html,body{margin:0;height:100%}
body{font-family:'Inter','Segoe UI',system-ui,sans-serif;background:var(--bg);color:var(--ink);-webkit-font-smoothing:antialiased}
#view-home,#view-editor{height:100vh;display:flex;flex-direction:column}

/* ---------- кнопки ---------- */
.tb-btn{display:inline-flex;align-items:center;gap:6px;background:#ffffff;color:#223046;border:1px solid #d7deea;border-radius:9px;padding:8px 13px;font-size:13px;cursor:pointer;transition:.15s;white-space:nowrap;font-family:inherit}
.tb-btn:hover{background:#f2f6fc;border-color:#c6d2e7}
.tb-btn.primary{background:var(--primary);border-color:var(--primary);color:#fff}
.tb-btn.primary:hover{background:#2f6fe0}
.tb-btn.excel{background:#0f7c4a;border-color:#0f7c4a;color:#fff;font-weight:600}
.tb-btn.excel:hover{background:#0c673e}
.tb-btn.ai{background:linear-gradient(135deg,#7c3aed,#2563eb);border-color:#6d28d9;color:#fff;font-weight:700}
.tb-btn.ai:hover{filter:brightness(1.08)}
.tb-btn.danger{background:#a83434;border-color:#a83434;color:#fff}
.tb-btn.danger:hover{background:#922b2b}
.tb-sep{width:1px;height:24px;background:#d7deea;margin:0 4px}
.spacer{flex:1}

/* ================= ГЛАВНЫЙ ЭКРАН ================= */
.home-top{display:flex;align-items:center;justify-content:space-between;padding:14px 26px;background:#ffffff;color:#1f2937;box-shadow:0 2px 14px rgba(15,23,42,.08);border-bottom:1px solid #e2e8f0}
.home-brand{display:flex;align-items:center;gap:10px;font-weight:800;font-size:16px;color:#0f172a}
.home-brand .logo{width:30px;height:30px;display:grid;place-items:center;background:linear-gradient(135deg,#3b82f6,#7c3aed);color:#fff;border-radius:8px;font-size:16px}
.home-actions{display:flex;gap:10px;flex-wrap:wrap}
.home-body{flex:1;overflow:auto;padding:28px 34px 34px;max-width:1280px;margin:0 auto;width:100%}

.home-hero{display:grid;grid-template-columns:minmax(0,1fr) 320px;gap:18px;margin-bottom:18px}
.hero-main{background:linear-gradient(120deg,#ffffff 0%,#f8fbff 100%);border:1px solid #dce7fb;border-radius:18px;padding:24px 24px 20px;box-shadow:0 8px 28px rgba(15,23,42,.07)}
.home-title{margin:0 0 8px;font-size:30px;font-weight:800;letter-spacing:-.4px;color:#0f172a}
.home-sub{margin:0;color:#5b6b82;font-size:14px;max-width:900px;line-height:1.6}
.home-tags{display:flex;gap:8px;flex-wrap:wrap;margin-top:14px}
.home-tags span{font-size:12px;font-weight:700;color:#334155;background:#eef4ff;border:1px solid #dbe6ff;border-radius:999px;padding:4px 10px}
.hero-cta{display:flex;gap:10px;flex-wrap:wrap;margin-top:16px}
.hero-metrics{display:grid;gap:10px}
.metric-card{background:#fff;border:1px solid #e2e8f0;border-radius:14px;padding:14px 14px 12px;box-shadow:var(--shadow)}
.metric-label{font-size:12px;color:#64748b;font-weight:600}
.metric-value{font-size:22px;font-weight:800;color:#0f172a;line-height:1.2;margin-top:4px}
.metric-hint{font-size:12px;color:#7b8798;margin-top:3px}

.home-controls{display:flex;gap:10px;align-items:center;margin-bottom:18px}
.home-search,.home-sort{height:40px;border:1px solid #d5deed;border-radius:10px;background:#fff;color:#1e293b;font:inherit;padding:0 12px}
.home-search{flex:1;min-width:220px}
.home-search:focus,.home-sort:focus{outline:none;border-color:var(--primary);box-shadow:0 0 0 3px rgba(59,130,246,.13)}
.home-sort{min-width:210px}

.proj-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:18px}
.proj-card{background:var(--panel);border:1px solid #dbe3f0;border-radius:14px;overflow:hidden;box-shadow:var(--shadow);transition:.15s;display:flex;flex-direction:column}
.proj-card:hover{box-shadow:0 12px 26px rgba(16,24,40,.14);transform:translateY(-2px)}
.proj-thumb{height:116px;background:linear-gradient(135deg,#2563eb,#7c3aed);display:flex;align-items:flex-end;justify-content:space-between;padding:12px;cursor:pointer}
.proj-thumb span{font-size:34px;font-weight:800;color:rgba(255,255,255,.95)}
.proj-chip{font-size:11px;font-weight:700;color:#dbeafe;background:rgba(15,23,42,.35);border:1px solid rgba(219,234,254,.42);border-radius:999px;padding:3px 8px;backdrop-filter:blur(2px)}
.proj-info{padding:12px 14px 8px;cursor:pointer}
.proj-name{font-weight:700;font-size:15px;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;line-height:1.35;min-height:40px}
.proj-date{font-size:12px;color:var(--muted);margin-top:4px}
.proj-meta{margin-top:8px;font-size:11px;color:#334155;font-weight:700;background:#eef2ff;border:1px solid #dbe1ff;display:inline-flex;max-width:100%;padding:3px 9px;border-radius:999px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.proj-actions{display:flex;gap:6px;padding:10px 14px;border-top:1px solid #e6ebf3;background:#fafcff}
.pc-btn{flex:0 0 auto;border:1px solid #d8e1ee;background:#fff;border-radius:8px;padding:7px 9px;font-size:12px;cursor:pointer;color:var(--ink)}
.pc-btn.primary{flex:1;background:var(--primary);color:#fff;border-color:var(--primary);font-weight:600}
.pc-btn.primary:hover{background:#2f6fe0}
.pc-btn.danger:hover{background:#fee2e2;border-color:#fca5a5}
.pc-btn:hover{background:#eef2f8}

.empty-state{text-align:center;padding:80px 20px;color:var(--muted)}
.empty-state .es-ic{font-size:56px;opacity:.3}
.empty-state .es-title{font-size:18px;font-weight:700;color:var(--ink);margin-top:10px}
.empty-state .es-sub{margin-top:4px}
.empty-state .es-btns{display:flex;gap:10px;justify-content:center;margin-top:16px;flex-wrap:wrap}

/* ================= МОДАЛКА ================= */
.modal{position:fixed;inset:0;background:rgba(15,20,30,.55);display:none;align-items:center;justify-content:center;z-index:300;padding:20px}
.modal.show{display:flex}
.modal-box{background:#fff;border-radius:16px;width:min(640px,100%);padding:24px;box-shadow:0 20px 60px rgba(0,0,0,.3)}
.modal-head{display:flex;align-items:center;justify-content:space-between}
.modal-head h2{margin:0;font-size:20px}
.modal-close{border:none;background:#f1f3f7;width:32px;height:32px;border-radius:8px;cursor:pointer;font-size:15px}
.modal-sub{color:var(--muted);margin:6px 0 18px}
.tpl-list{display:grid;grid-template-columns:1fr 1fr;gap:14px}
.tpl-card{border:1.5px solid var(--line);border-radius:12px;padding:18px;cursor:pointer;transition:.15s}
.tpl-card:hover{border-color:var(--primary);background:#f5f8ff}
.tpl-ic{width:46px;height:46px;border-radius:10px;background:linear-gradient(135deg,#6366f1,#8e44ad);color:#fff;display:grid;place-items:center;font-size:22px;margin-bottom:10px}
.tpl-card.excel:hover{border-color:#0f7c4a;background:#f0faf4}
.tpl-card.excel .tpl-ic{background:linear-gradient(135deg,#16a34a,#0f7c4a)}
.tpl-name{font-weight:700;font-size:14px}
.tpl-desc{font-size:12px;color:var(--muted);margin-top:3px;line-height:1.35}

/* ================= РЕДАКТОР ================= */
.ed-toolbar{display:flex;align-items:center;gap:8px;padding:10px 14px;background:#ffffff;color:#1e293b;box-shadow:0 1px 8px rgba(15,23,42,.06);border-bottom:1px solid #e2e8f0;z-index:50;flex-wrap:wrap}
.proj-name-input{background:#fff;border:1px solid #cfd8e7;color:#111827;border-radius:9px;padding:7px 11px;font-size:14px;font-weight:700;min-width:240px;font-family:inherit}
.proj-name-input:focus{outline:none;border-color:var(--primary);box-shadow:0 0 0 3px rgba(59,130,246,.16)}
.proj-id-badge{display:inline-flex;align-items:center;gap:5px;border:1px solid #dbe1ff;background:#eef2ff;color:#3949ab;font-size:11px;font-weight:700;padding:5px 10px;border-radius:999px;cursor:pointer;font-family:inherit;max-width:230px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;transition:.15s}
.proj-id-badge:hover{background:#e0e7ff;border-color:#c2ccff}
.layout-bar{display:flex;align-items:center;gap:8px;padding:8px 14px;background:#f8fafc;border-bottom:1px solid #e2e8f0;box-shadow:inset 0 -1px 0 rgba(148,163,184,.12)}
.layout-label{font-size:12px;font-weight:700;color:#475569;text-transform:uppercase;letter-spacing:.4px}
.layout-tabs{display:flex;gap:6px;flex-wrap:wrap;max-width:58vw}
.layout-tab{padding:6px 12px;border:1px solid #d5dce6;border-radius:999px;background:#fff;color:#334155;font-size:12px;font-weight:600;cursor:pointer;max-width:220px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.layout-tab:hover{background:#f3f8ff;border-color:#bfd4fb}
.layout-tab.active{background:#2563eb;color:#fff;border-color:#2563eb}
.layout-btn{padding:7px 10px;font-size:12px}
.layout-count{margin-left:auto;font-size:12px;color:#64748b;font-weight:700}
.ed-main{flex:1;display:flex;min-height:0}

/* ---------- холст ---------- */
.canvas{flex:1;position:relative;overflow:hidden;cursor:grab;
  background-color:#fbfdff;
  background-image:linear-gradient(#edf2f7 1px, transparent 1px),linear-gradient(90deg,#edf2f7 1px, transparent 1px);
  background-size:24px 24px}
.canvas.panning{cursor:grabbing}
.cv-edges{position:absolute;inset:0;width:100%;height:100%;overflow:visible;pointer-events:none}
.cv-edges-g{pointer-events:auto}
.cv-nodes{position:absolute;inset:0;transform-origin:0 0;pointer-events:none}
.cv-nodes>*{pointer-events:auto}
.cv-overlay{position:absolute;inset:0;width:100%;height:100%;overflow:visible;pointer-events:none;z-index:5}
.cv-overlay-g{transform-origin:0 0}
.canvas.reconnecting,.canvas.reconnecting *{cursor:grabbing!important}
.cv-edge{transition:stroke .1s}
.cv-edge.sel{stroke:var(--primary)!important;stroke-width:3}
.cv-edge-hit{cursor:pointer}
.cv-edge-label{fill:#5b6470;font-size:11px;font-family:inherit;paint-order:stroke;stroke:#f4f6fa;stroke-width:4px}
.cv-temp-edge{display:none;stroke:var(--primary);stroke-width:2.4;stroke-dasharray:5 4;pointer-events:none}
.cv-edge-handle{fill:#fff;stroke:var(--primary);stroke-width:2.5;cursor:grab;pointer-events:auto}
.cv-edge-handle:hover{fill:var(--primary)}
.cv-edge-handle:active{cursor:grabbing}

/* ---------- узлы ---------- */
.cv-node{position:absolute;border:1.6px solid var(--accent);background:#fff;border-radius:11px;
  display:flex;flex-direction:column;justify-content:center;align-items:center;text-align:center;
  padding:8px 10px;box-shadow:0 1px 5px rgba(16,24,40,.09);cursor:move;user-select:none;line-height:1.3;overflow:visible}
.cv-node.shape-rect{border-radius:4px}
.cv-node.shape-pill{border-radius:999px}
.cv-node.shape-diamond{background:transparent;border:none;box-shadow:none;padding:8px 22px}
.cv-node.shape-diamond::before{content:"";position:absolute;inset:0;
  background:var(--accent);clip-path:polygon(50% 0,100% 50%,50% 100%,0 50%);z-index:0}
.cv-node.shape-diamond::after{content:"";position:absolute;inset:2px;
  background:var(--fill,#fff);clip-path:polygon(50% 0,100% 50%,50% 100%,0 50%);z-index:1;border:1px solid rgba(0,0,0,.04)}
.cv-node.shape-diamond .nd-text{position:relative;z-index:2}
.cv-node.selected{box-shadow:0 0 0 2px var(--primary),0 6px 18px rgba(59,130,246,.25)}
.cv-node.connect-target{box-shadow:0 0 0 3px #22c55e}
.cv-node .nd-text{width:100%;word-break:break-word;overflow-wrap:anywhere;line-height:1.35}
.cv-node.nd-card{padding:0;justify-content:flex-start;align-items:stretch;text-align:left;overflow:hidden}
.nd-head{background:var(--accent);color:#fff;font-weight:700;padding:6px 10px;border-radius:7px 7px 0 0;font-size:.92em}
.nd-body{padding:7px 10px;color:inherit;font-size:.9em;flex:1}
.cv-node.nd-process{justify-content:center;align-items:flex-start;text-align:left;padding:8px 10px;background:#fff;overflow:hidden}
.nd-proc{display:flex;align-items:flex-start;gap:7px;width:100%}
.nd-proc-code{flex:0 0 auto;min-width:26px;height:22px;border-radius:11px;display:grid;place-items:center;color:#fff;font-weight:800;font-size:.8em;padding:0 8px;line-height:1}
.nd-proc-text{flex:1;color:#27303f;font-weight:600;line-height:1.32;word-break:break-word;overflow-wrap:anywhere}
.nd-title-main{font-weight:800;font-size:1em}
.nd-title-sub{font-size:.62em;color:var(--muted);margin-top:4px;font-weight:400}
.cv-node.nd-title{align-items:flex-start;justify-content:center;text-align:left;border-style:solid;background:#fff}
.cv-node[contenteditable] , .cv-node .nd-text[contenteditable], .cv-node .nd-body[contenteditable]{cursor:text}
.cv-node.editing{box-shadow:0 0 0 2px var(--primary)}
.cv-node.editing [contenteditable]{outline:none;cursor:text}

/* порты */
.port{position:absolute;width:11px;height:11px;background:var(--primary);border:2px solid #fff;border-radius:50%;opacity:0;transition:opacity .12s;cursor:crosshair;z-index:5}
.cv-node:hover .port,.cv-node.selected .port{opacity:1}
.port-top{top:-7px;left:50%;transform:translateX(-50%)}
.port-bottom{bottom:-7px;left:50%;transform:translateX(-50%)}
.port-left{left:-7px;top:50%;transform:translateY(-50%)}
.port-right{right:-7px;top:50%;transform:translateY(-50%)}
.port:hover{transform:translateX(-50%) scale(1.4)}
.port-left:hover,.port-right:hover{transform:translateY(-50%) scale(1.4)}

/* ресайз */
.nd-resize{position:absolute;right:-2px;bottom:-2px;width:14px;height:14px;cursor:nwse-resize;opacity:0;z-index:6;
  background:linear-gradient(135deg,transparent 50%,var(--primary) 50%);border-radius:0 0 8px 0}
.cv-node:hover .nd-resize,.cv-node.selected .nd-resize{opacity:.9}

/* ---------- инспектор ---------- */
.inspector{width:268px;flex:0 0 268px;background:#fff;border-left:1px solid var(--line);padding:16px;overflow:auto}
.ins-empty{color:var(--muted);font-size:13px;line-height:1.6}
.ins-sec{display:flex;flex-direction:column;gap:6px}
.ins-h{font-weight:800;font-size:13px;text-transform:uppercase;letter-spacing:.4px;color:var(--ink);margin-bottom:6px}
.inspector label{font-size:12px;color:var(--muted);margin-top:8px}
.inspector input[type=color]{width:100%;height:34px;border:1px solid var(--line);border-radius:8px;cursor:pointer;background:none}
.inspector input[type=text]{width:100%;border:1px solid var(--line);border-radius:8px;padding:8px;font-size:13px;font-family:inherit}
.inspector input[type=range]{width:100%}
.inspector select{width:100%;border:1px solid var(--line);border-radius:8px;padding:8px;font-size:13px;font-family:inherit;background:#fff}
.ins-check{display:flex!important;align-items:center;gap:8px;flex-direction:row!important;color:var(--ink)!important;margin-top:10px}
.ins-del{margin-top:16px;border:1px solid #fca5a5;background:#fef2f2;color:#dc2626;border-radius:8px;padding:9px;cursor:pointer;font-weight:600;font-family:inherit}
.ins-del:hover{background:#fee2e2}
/* подзаголовок группы внутри инспектора */
.ins-h2{font-weight:700;font-size:11px;text-transform:uppercase;letter-spacing:.4px;color:var(--muted);margin:14px 0 2px;border-top:1px solid var(--line);padding-top:10px}
.ins-hint{font-size:11px;color:var(--muted);line-height:1.4;margin-top:4px}
.ins-btn-wide{width:100%;border:1px solid var(--line);background:#f8fafc;color:var(--ink);border-radius:8px;padding:9px;cursor:pointer;font-weight:600;font-family:inherit;margin-bottom:4px}
.ins-btn-wide:hover{background:#eef2f7}
.ins-btn-sm{border:1px solid var(--line);background:#f8fafc;color:var(--ink);border-radius:7px;padding:7px 10px;cursor:pointer;font-weight:600;font-family:inherit;font-size:12px}
.ins-btn-sm:hover{background:#eef2f7}
/* готовые стили */
.style-presets{display:grid;grid-template-columns:repeat(5,1fr);gap:6px}
.style-preset{height:34px;border:1.5px solid;border-radius:8px;cursor:pointer;font-size:13px;font-weight:700;display:grid;place-items:center}
.style-preset:hover{filter:brightness(.96);transform:translateY(-1px)}
/* кнопки форматирования текста */
.fmt-row{display:flex;align-items:center;gap:5px;flex-wrap:wrap}
.fmt-btn{min-width:34px;height:34px;border:1px solid var(--line);background:#fff;border-radius:7px;cursor:pointer;font-size:14px;font-family:inherit;color:var(--ink);display:grid;place-items:center;padding:0 8px}
.fmt-btn:hover{background:#f1f5f9}
.fmt-btn.on{background:var(--primary);color:#fff;border-color:var(--primary)}
.fmt-sep{width:1px;height:22px;background:var(--line);margin:0 3px}
/* иконки */
.icon-row{display:flex;gap:6px;align-items:center}
.icon-row input[type=text]{flex:1}
.icon-palette{flex-wrap:wrap;gap:3px;margin-top:8px;max-height:170px;overflow:auto;border:1px solid var(--line);border-radius:8px;padding:6px;background:#fafbfc}
.ic-cell{width:30px;height:30px;border:none;background:none;border-radius:6px;cursor:pointer;font-size:16px;display:grid;place-items:center}
.ic-cell:hover{background:#e8eef6}

/* ---------- toast ---------- */
.toast{position:fixed;bottom:20px;left:50%;transform:translateX(-50%);background:var(--dark);color:#fff;padding:11px 20px;border-radius:10px;font-size:13px;box-shadow:0 8px 24px rgba(0,0,0,.3);opacity:0;transition:.2s;z-index:400;pointer-events:none}
.toast.show{opacity:1;transform:translateX(-50%) translateY(-4px)}

@media(max-width:980px){
  .home-hero{grid-template-columns:1fr}
}

@media(max-width:760px){
  .home-top{padding:12px 14px;align-items:flex-start}
  .home-actions{width:100%}
  .home-body{padding:18px 14px 22px}
  .home-controls{flex-direction:column;align-items:stretch}
  .home-sort{width:100%}
  .proj-grid{grid-template-columns:1fr}
  .inspector{display:none}
  .tpl-list{grid-template-columns:1fr}
  .layout-bar{flex-wrap:wrap}
  .layout-tabs{max-width:100%}
  .layout-count{width:100%;margin-left:0}
}

/* ===================================================================
   ИНФОГРАФИКА (one-pager) — стили блоков-секций шаблона P06.1.1
   =================================================================== */

/* более «чистый» светлый холст для презентационных схем */
.canvas.clean-bg{
  background-color:#ffffff;
  background-image:linear-gradient(#f1f5f9 1px, transparent 1px),linear-gradient(90deg,#f1f5f9 1px, transparent 1px);
  background-size:28px 28px;
}

/* ---------- Заголовок-плашка ---------- */
.cv-node.nd-title{align-items:flex-start;justify-content:flex-start;text-align:left;
  border:none;border-left:6px solid var(--accent);background:#fff;border-radius:8px;
  box-shadow:0 1px 6px rgba(16,24,40,.08);padding:14px 18px}
.nd-title-main{font-weight:800;font-size:1em;letter-spacing:.2px;color:#1f2430}
.nd-title-sub{font-size:.5em;color:var(--muted);margin-top:6px;font-weight:500;line-height:1.4}
.nd-title-metas{display:flex;flex-wrap:wrap;gap:10px 22px;margin-top:12px}
.nd-title-meta{display:flex;flex-direction:column;font-size:.42em;color:#52607a;line-height:1.35}
.nd-title-meta b{font-size:.92em;color:#9aa3b2;font-weight:700;text-transform:uppercase;letter-spacing:.4px}

/* ---------- Карточка-этап (A..E с шапкой) ---------- */
.cv-node.nd-card{padding:0;justify-content:flex-start;align-items:stretch;text-align:left;
  border:1px solid #e6eaf1;border-top:none;background:#fff;border-radius:12px;overflow:hidden;
  box-shadow:0 2px 8px rgba(16,24,40,.08)}
.nd-head{display:flex;align-items:center;gap:8px;background:var(--accent);color:#fff;font-weight:700;
  padding:8px 11px;border-radius:0;font-size:.94em;line-height:1.2}
.nd-card-badge{flex:0 0 auto;width:22px;height:22px;border-radius:50%;display:grid;place-items:center;
  background:rgba(255,255,255,.25)!important;font-weight:800;font-size:.95em;border:1.5px solid rgba(255,255,255,.7)}
.nd-head-txt{flex:1}
.nd-body{display:flex;gap:8px;align-items:flex-start;padding:9px 11px;color:#42495a;font-size:.86em;flex:1;line-height:1.35}
.nd-card-ic{flex:0 0 auto;font-size:1.5em;line-height:1}
.nd-body-txt{flex:1}

/* ---------- Кружок-этап потока ---------- */
.cv-node.nd-stage{flex-direction:row;gap:9px;align-items:center;justify-content:flex-start;text-align:left;
  border:1.5px solid color-mix(in oklab, var(--accent) 72%, #ffffff);border-radius:12px;background:#fff;padding:8px 12px;
  box-shadow:0 2px 9px rgba(16,24,40,.07);font-weight:700}
.nd-stage-badge{flex:0 0 auto;width:30px;height:30px;border-radius:50%;display:grid;place-items:center;
  color:#fff;font-weight:800;font-size:15px}
.nd-stage-txt{flex:1;color:#27303f;line-height:1.2}

/* ---------- Контрольная точка K ---------- */
.cv-node.nd-kpoint{border:none;background:transparent;box-shadow:none;padding:0}
.nd-kpoint{width:100%;height:100%;border-radius:999px;display:grid;place-items:center;
  color:#fff;font-weight:800;font-size:.95em;border:2px solid #fff;box-shadow:0 1px 5px rgba(16,24,40,.22)}

/* ---------- Панель-список (Входы / Выходы / Решения / Сигналы / K / Риски …) ---------- */
.cv-node.nd-panel{align-items:stretch;justify-content:flex-start;text-align:left;padding:12px 14px;
  border:1px solid #e5eaf3;border-radius:12px;background:#fff;box-shadow:0 2px 10px rgba(16,24,40,.06);overflow:hidden;position:relative}
.cv-node.nd-panel::before{content:"";position:absolute;left:0;top:0;bottom:0;width:4px;background:var(--accent);opacity:.86}
.nd-panel-h{font-weight:800;font-size:1.02em;text-transform:uppercase;letter-spacing:.3px;margin-bottom:8px;padding-left:4px}
.nd-panel-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:5px}
.nd-panel-list li{display:flex;gap:7px;align-items:flex-start;font-size:.82em;color:#42495a;line-height:1.3}
.nd-panel-list.horizontal{flex-direction:row;flex-wrap:wrap;gap:8px 22px;align-items:center}
.nd-panel-list.horizontal li{font-size:.9em;align-items:center}
.nd-panel-mark{flex:0 0 auto;font-weight:700}
.nd-kpoint{font-variant-numeric:tabular-nums}

/* ---------- иконка и картинка в блоке ---------- */
.nd-ico{font-size:1.35em;line-height:1;margin-right:6px;flex:0 0 auto}
.cv-node.has-img{padding:0;overflow:hidden}
.nd-img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;border-radius:inherit;z-index:0}
.cv-node.has-img .nd-text,.cv-node.has-img .nd-proc{position:relative;z-index:1;background:rgba(255,255,255,.78);border-radius:6px;padding:2px 6px}

/* ---------- KPI-карточка ---------- */
.cv-node.nd-kpi{align-items:stretch;justify-content:center;text-align:left;padding:11px 13px;
  border:1px solid #e6eaf1;border-radius:12px;background:#fff;box-shadow:0 2px 8px rgba(16,24,40,.07)}
.nd-kpi-top{display:flex;align-items:center;gap:7px}
.nd-kpi-ic{font-size:1.25em}
.nd-kpi-name{font-weight:700;font-size:.82em;color:#36405a;line-height:1.2}
.nd-kpi-val{font-weight:800;font-size:1.45em;margin-top:5px}
.nd-kpi-sub{font-size:.72em;color:var(--muted);margin-top:2px}

/* печать/экспорт: убрать сетку */
@media print{.canvas{background:#fff!important}}

/* ====================== AI-инфографика (модалка) ====================== */
.ai-modal{position:fixed;inset:0;z-index:2000;display:flex;align-items:stretch;justify-content:center;background:rgba(15,22,38,.55);backdrop-filter:blur(3px);opacity:0;pointer-events:none;transition:opacity .2s}
.ai-modal.show{opacity:1;pointer-events:auto}
.ai-modal-box{margin:18px;width:100%;max-width:1320px;background:#f3f5f9;border-radius:18px;display:flex;flex-direction:column;overflow:hidden;box-shadow:0 24px 80px rgba(10,16,30,.4);transform:translateY(14px);transition:transform .2s}
.ai-modal.show .ai-modal-box{transform:none}
.ai-modal-head{display:flex;align-items:center;gap:14px;padding:12px 16px;background:#fff;border-bottom:1px solid #e7ebf2}
.ai-modal-title{display:flex;align-items:center;gap:9px;font-weight:800;font-size:16px;color:#1d2430;min-width:0}
.ai-modal-title .ai-spark{font-size:18px}
.ai-modal-sub{font-weight:500;font-size:13px;color:#8a93a4;margin-left:6px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:38vw}
.ai-modal-actions{margin-left:auto;display:flex;gap:7px;flex-wrap:wrap}
.ai-btn{border:1px solid #d7dde7;background:#fff;color:#2b3340;font:600 13px/1 'Inter',sans-serif;padding:8px 12px;border-radius:9px;cursor:pointer;transition:.12s}
.ai-btn:hover{border-color:#b9c2d0;background:#f7f9fc}
.ai-btn.primary{background:#2563eb;border-color:#2563eb;color:#fff}
.ai-btn.primary:hover{background:#1d4ed8}
.ai-btn.ghost{border-color:transparent;background:transparent;font-size:15px;padding:8px 10px}
.ai-btn:disabled{opacity:.5;cursor:default}
.ai-stage{flex:1;overflow:auto;padding:26px;display:flex;justify-content:center}
.ai-paper{width:100%;max-width:1200px}
.ai-doc,.ai-infographic{display:flex;flex-direction:column;gap:16px}
.ai-doc .ai-card,.ai-infographic .ai-card{position:relative}

/* загрузка / ошибка */
.ai-loading,.ai-error{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:12px;min-height:48vh;text-align:center;color:#42506a}
.ai-spinner{width:46px;height:46px;border-radius:50%;border:4px solid #d7e0f2;border-top-color:#2563eb;animation:ai-spin .8s linear infinite}
@keyframes ai-spin{to{transform:rotate(360deg)}}
.ai-loading-t{font-weight:700;font-size:16px;color:#1d2430}
.ai-loading-s{font-size:13px;color:#8a93a4}
.ai-error-ic{font-size:34px}
.ai-error-t{font-weight:700;font-size:16px;color:#b91c1c}
.ai-error-s{font-size:13px;color:#7a8294;max-width:520px}

/* режим редактирования блоков */
.ai-block-tools{display:none;position:absolute;top:6px;right:8px;gap:4px;z-index:6;align-items:center}
.ai-block-grip{cursor:grab;font-size:16px;color:#9aa3b2;padding:2px 4px;user-select:none}
.ai-block-del{border:none;background:rgba(255,255,255,.9);border-radius:7px;font-size:13px;padding:3px 6px;cursor:pointer;box-shadow:0 1px 4px rgba(0,0,0,.12)}
.ai-block-del:hover{background:#fee2e2}
.ai-modal-box.editing .ai-block{outline:1.5px dashed transparent;border-radius:14px;transition:outline-color .12s}
.ai-modal-box.editing .ai-block:hover{outline-color:#9bb6ff}
.ai-modal-box.editing .ai-block-tools{display:flex}
.ai-modal-box.editing .ai-block [contenteditable="true"]:focus{outline:2px solid #2563eb;outline-offset:2px;border-radius:4px}
.ai-block.dragging{opacity:.45}
.ai-block.drop-before{box-shadow:0 -3px 0 0 #2563eb}
.ai-block.drop-after{box-shadow:0 3px 0 0 #2563eb}

@media(max-width:760px){
  .ai-modal-sub{display:none}
  .ai-modal-box{margin:0;border-radius:0}
  .ai-stage{padding:14px}
}
