/* Страничные стили tree-viewer. Извлечено из макета v2/21-tree-viewer.html. */
.viewer{ border:1px solid var(--line); border-radius:var(--r-card); overflow:hidden; }
.viewer-bar{ display:flex; justify-content:space-between; align-items:center; gap:16px; flex-wrap:wrap;
  padding:14px 18px; border-bottom:1px solid var(--line); background:var(--surface); }
.canvas{ background:var(--bg); padding:20px; overflow-x:auto; }
/* Граф отдаётся в натуральную величину: широкое дерево прокручивается,
   а не сжимается в нечитаемую полоску. */
.canvas svg{ display:block; max-width:none; height:auto; transform-origin:0 0; }
.node rect{ fill:#FFFFFF; stroke:#E4E4DF; }
.node.hi rect{ stroke:#0E4D40; stroke-width:2; fill:#E8F0EC; }
a.node{ cursor:pointer; }
a.node:hover rect{ stroke:#0E4D40; }
.node text{ font-family:Manrope, sans-serif; }
.node .nm{ font-size:13px; font-weight:600; fill:#14140F; }
.node .yr{ font-size:11px; fill:#8A8A80; }
.edge{ stroke:#C9C9C2; stroke-width:2; fill:none; }
.edge-couple{ stroke:#C7622E; stroke-dasharray:4 4; }
.zoom{ display:flex; gap:6px; }
/* Панели переключателя вида. Без JS видна та, что помечена is-shown на сервере. */
[data-panel="tree-view"]{ display:none; }
[data-panel="tree-view"].is-shown{ display:block; }
.gen > li{ padding:16px 0; border-top:1px solid var(--line);
  display:flex; flex-direction:column; gap:10px; }
.gen > li:first-child{ border-top:0; }
.gen h3{ font-family:var(--f-text); font-size:14px; font-weight:700; color:var(--ink-soft); }
.gen ul{ display:flex; flex-wrap:wrap; gap:10px; }
.gen .chip .muted{ font-variant-numeric:tabular-nums; }
