[data-panel="lineage"] { min-height: 70vh; height: 100%; background: var(--map-canvas); color: var(--ink-2); overflow: hidden; }
[data-panel="lineage"] > svg { width: 100%; height: 70vh; display: block; background-image: radial-gradient(var(--map-dot) .7px, transparent .7px); background-size: 20px 20px; }
body[data-page="home"] #plan:has([data-view="lineage"].active) .canvas-body { height: 70vh; min-height: 70vh; }
.lineage-node { --operation: var(--op-neutral); --operation-line: var(--op-neutral-line); cursor: pointer; transition: opacity 160ms; }
.lineage-table { --operation: var(--op-read); --operation-line: var(--op-read-line); }
.lineage-cte, .lineage-subquery { --operation: var(--op-aggregate); --operation-line: var(--op-aggregate-line); }
.lineage-union { --operation: var(--op-join); --operation-line: var(--op-join-line); }
.lineage-node rect { fill: var(--map-card); stroke: var(--operation-line); stroke-width: 1px; }
.lineage-node.has-note rect { stroke-dasharray: 5 4; }
.lineage-node:hover rect, .lineage-node:focus rect { stroke: var(--operation); stroke-width: 1.5px; }
.lineage-node.is-selected rect { stroke: var(--operation); stroke-width: 2px; filter: drop-shadow(0 0 5px var(--operation-line)); }
.lineage-node text { pointer-events: none; font-family: var(--font-mono); fill: var(--ink-0); font-size: 12px; }
.lineage-node .lineage-kind { fill: var(--operation); font-size: 10px; letter-spacing: 1px; }
.lineage-node .lineage-detail { fill: var(--ink-2); font-size: 10px; }
.lineage-node .lineage-name { font-size: 12px; }
.lineage-glyph { fill: var(--operation); }
.lineage-glyph-mark { fill: none; stroke: var(--map-card); stroke-width: 1.5px; }
.lineage-edge { transition: opacity 160ms; }
.lineage-edge path { fill: none; stroke: var(--map-link); stroke-width: 2px; }
.lineage-edge text { font: 11px var(--font-mono); fill: var(--ink-1); text-anchor: middle; paint-order: stroke; stroke: var(--map-canvas); stroke-width: 4px; stroke-linejoin: round; }
#sqlPreview mark { background: var(--map-step-active); color: var(--ink-0); }
#plan:has([data-view="lineage"].active) .sql-card { order: -1; margin-top: 0; flex-shrink: 0; }
#plan:has([data-view="lineage"].active) :is(#graphMinimap, #traceSummary) { display: none; }
@media (prefers-reduced-motion: reduce) { .lineage-node, .lineage-edge { transition: none; } }
