/* THE MAP — the tree's styling, living with the component that renders it.
 *
 * ⛔ SCOPED UNDER `.desk-map`, THE WRAPPER `DeskMap` PUTS AROUND `MapTree`.
 * A whole-app search — source AND the served bundle, 2026-09-30 — found ZERO
 * uses of these class names outside `MapTree.tsx`, and the scope is here anyway.
 * `tree`, `tree-node` and `tree-body` are generic enough that a future component
 * could take one innocently, and an unscoped sheet would restyle it silently.
 * The scope makes that impossible rather than unlikely.
 *
 * ⚠ THE SCOPE IS A COMPONENT, NOT A SURFACE, AND THAT IS THE POINT. These rules
 * used to sit under `.shape-b-root`, so the same shared `MapTree` rendered
 * unstyled under `.shape-b-p3-root`: correct markup, connectors and columns and
 * all, arriving as a flat list of glyphs. Scoping to the COMPONENT is what stops
 * that recurring for P4-P7.
 *
 * ⚠ MOVED, NOT COPIED — deleted from desk-shape-b.css and desk-shape-b-p3.css in
 * the same change. Two scoped copies is the duplication this removes.
 *
 * ⛔ `.tree-scroll-wrap` AND ITS `.scroll-arrow` RULE WERE DROPPED, NOT MOVED
 * (Al, 2026-09-30). Both render NOWHERE in this codebase — zero occurrences in
 * `src/` and zero in the served bundle; they exist only in the mockups' static
 * trees, where they remain for reference. Carrying dead rules into a new shared
 * sheet would have made them look load-bearing. See [[D517]].
 */
.desk-map .tree-scroll{overflow-x:auto;overflow-y:hidden;padding:24px 18px 12px;scrollbar-width:thin;position:relative;
  overscroll-behavior-x:contain}
.desk-map .tree-scroll::-webkit-scrollbar{height:6px}
.desk-map .tree-scroll::-webkit-scrollbar-thumb{background:var(--border-strong);border-radius:3px}
.desk-map .tree{position:relative;display:flex;gap:46px;min-width:max-content;cursor:grab}
.desk-map .tree.dragging{cursor:grabbing;user-select:none}
.desk-map .tree-gen{display:flex;flex-direction:column;gap:14px;justify-content:center}
.desk-map .tree-svg{position:absolute;inset:0;pointer-events:none;overflow:visible}
.desk-map .tree-node{display:flex;align-items:center;gap:9px;padding:10px 14px;background:var(--field);
  border:1px solid var(--border-soft);border-radius:8px;min-width:150px;position:relative;z-index:1}
.desk-map .tree-node.nav-link{cursor:pointer}
.desk-map .tree-node.nav-link:hover{border-color:var(--accent-ink)}
.desk-map .tree-node.nav-link:hover .tree-name{color:var(--accent-ink)}
.desk-map .tree-g{width:18px;height:18px;border-radius:50%;display:grid;place-items:center;
  font-size:10px;flex-shrink:0}
.desk-map .tree-node.visited .tree-g{background:var(--surface);color:var(--state-success);border:1px solid var(--state-success)}
.desk-map .tree-node.here .tree-g{background:var(--accent-wash);color:var(--accent-ink);border:2px solid var(--accent)}
.desk-map .tree-node.here{border-color:var(--accent)}
.desk-map .tree-body{display:flex;flex-direction:column;min-width:0}
.desk-map .tree-name{font-size:var(--fs-small);font-weight:500;color:var(--text);white-space:nowrap}
.desk-map .tree-node.here .tree-name{font-weight:600}
.desk-map .tree-sub{font-size:10.5px;color:var(--text-secondary);margin-top:1px;white-space:nowrap}
.desk-map .tree-node.door{background:repeating-linear-gradient(135deg,var(--surface),var(--surface) 7px,rgba(133,126,111,.10) 7px,rgba(133,126,111,.10) 14px)}
.desk-map .tree-node.door .tree-g{background:transparent;color:var(--text-secondary);border:1.5px dashed var(--border-strong)}
.desk-map .tree-node.door .tree-name{color:var(--text-secondary)}
.desk-map .tree-node.door .tree-sub{font-style:italic}
