:root{--font-ui:"Inter",system-ui,-apple-system,sans-serif;--font-mono:"JetBrains Mono",ui-monospace,"SF Mono",monospace;--canvas:#fafaf9;--dot:#1c191717;--surface:#fff;--surface-2:#fafaf9;--line:#dedad7;--line-strong:#c8c3bf;--ink:#1c1917;--ink-2:#44403c;--ink-3:#6b6560;--accent:#4f46e5;--accent-hover:#4338ca;--accent-soft:#eef2ff;--page:#f6f5f3;--ring:0 0 0 3px #4f46e533;--bronze:#a05a2c;--bronze-line:#a05a2c59;--bronze-tint:#a05a2c0d;--bronze-soft:#fdf2e9;--silver:#5b6b7f;--silver-line:#5b6b7f59;--silver-tint:#5b6b7f0d;--silver-soft:#f1f4f7;--gold:#a16207;--gold-line:#a1620759;--gold-tint:#a162070d;--gold-soft:#fdf6df;--source:#0e7490;--source-soft:#e7f6f8;--source-line:#0e749059;--source-tint:#0e74900d;--ingest:#2563eb;--ingest-soft:#eaf1fe;--ingest-line:#2563eb59;--ingest-tint:#2563eb0d;--consume:#be185d;--consume-soft:#fceef4;--consume-line:#be185d59;--consume-tint:#be185d0d;--dbt:#ff694a;--dbt-soft:#fff0ec;--dbt-line:#ff694a66;--dbt-tint:#ff694a0d;--neutral-node:#57534e;--neutral-soft:#f5f5f4;--t-str:#64748b;--t-num:#2563eb;--t-date:#7c3aed;--t-bool:#059669;--t-var:#db2777;--r-node:12px;--r-tile:8px;--r-group:20px;--sh-node:0 1px 2px #1c19170d,0 4px 16px #1c19170f;--sh-hover:0 2px 4px #1c19170f,0 12px 28px #1c19171c}.dd-node{background:var(--surface);border:1px solid var(--line);border-radius:var(--r-node);box-shadow:var(--sh-node);font-family:var(--font-ui);position:relative}.dd-node:hover{box-shadow:var(--sh-hover)}.dd-node.is-selected{border-color:var(--accent);box-shadow:var(--ring),var(--sh-hover)}.dd-tile{border-radius:var(--r-tile);background:var(--ts);width:26px;height:26px;color:var(--tc);flex:none;place-items:center;display:grid}.dd-tile svg{stroke:currentColor;fill:none;stroke-width:1.5px;stroke-linecap:round;stroke-linejoin:round;width:14px;height:14px}.dd-tile img{-o-object-fit:contain;object-fit:contain;width:16px;height:16px}.dd-tile.txt{font-family:var(--font-mono);color:#fff;background:var(--tc);font-size:8.5px;font-weight:700}.dd-ds-head{align-items:center;gap:9px;padding:10px 12px;display:flex}.dd-ds-name{font-family:var(--font-mono);letter-spacing:-.01em;color:var(--ink);white-space:nowrap;text-overflow:ellipsis;min-width:0;font-size:13px;font-weight:600;overflow:hidden}.dd-ds-name .schema{color:var(--ink-3);font-weight:500}.dd-kind{letter-spacing:.09em;color:var(--ink-3);border:1px solid var(--line);background:var(--surface-2);border-radius:5px;flex:none;margin-left:auto;padding:3px 6px;font-size:8.5px;font-weight:600}.dd-cols{border-top:1px solid var(--line);padding:4px 0}.dd-col{font-family:var(--font-mono);align-items:center;gap:7px;padding:5px 12px;font-size:11.5px;line-height:15px;display:flex;position:relative}.dd-cname{color:var(--ink);white-space:nowrap;text-overflow:ellipsis;font-weight:500;overflow:hidden}.dd-kchip{letter-spacing:.06em;font-size:7.5px;font-weight:700;font-family:var(--font-ui);border-radius:4px;flex:none;padding:2px 4px}.dd-kchip.pk{color:#b45309;background:#fef3c7}.dd-kchip.fk{color:#4338ca;background:#e0e7ff}.dd-ctype{letter-spacing:.07em;text-transform:uppercase;color:var(--t-str);flex:none;margin-left:auto;font-size:8.5px;font-weight:600}.dd-ctype.t-num{color:var(--t-num)}.dd-ctype.t-date{color:var(--t-date)}.dd-ctype.t-bool{color:var(--t-bool)}.dd-ctype.t-var{color:var(--t-var)}.dd-more{border-top:1px dashed var(--line);color:var(--accent);cursor:pointer;font-size:10.5px;font-weight:500;font-family:var(--font-ui);align-items:center;gap:5px;padding:6px 12px;display:flex}.dd-more svg{stroke:currentColor;fill:none;stroke-width:1.8px;stroke-linecap:round;width:10px;height:10px}.dd-ds-foot{border-top:1px solid var(--line);background:var(--surface-2);border-radius:0 0 var(--r-node)var(--r-node);align-items:center;gap:6px;padding:8px 12px;display:flex}.dd-chip{color:var(--ink-2);border:1px solid var(--line);white-space:nowrap;background:#f5f5f4;border-radius:999px;padding:2.5px 8px;font-size:9.5px;font-weight:500;line-height:1.2}.dd-chip.cert{color:#047857;background:#ecfdf5;border-color:#a7f3d0}.dd-owner{color:var(--ink-3);white-space:nowrap;align-items:center;gap:5px;margin-left:auto;font-size:9.5px;font-weight:500;display:flex}.dd-owner i{background:var(--oc,var(--ink-3));border-radius:50%;flex:none;width:7px;height:7px;display:inline-block}.dd-op{border-radius:11px;align-items:center;gap:9px;padding:9px 12px;display:flex}.dd-op-body{min-width:0}.dd-op-name{font-family:var(--font-mono);color:var(--ink);white-space:nowrap;text-overflow:ellipsis;font-size:12px;font-weight:600;overflow:hidden}.dd-op-sub{color:var(--ink-3);align-items:center;gap:5px;margin-top:1px;font-size:9.5px;font-weight:500;display:flex}.dd-op-sub i{background:var(--tc,var(--dbt));border-radius:50%;flex:none;width:5px;height:5px;display:inline-block}.dd-ep{border-radius:11px;align-items:center;gap:10px;padding:10px 12px;display:flex}.dd-ep .dd-tile{width:30px;height:30px}.dd-ep .dd-tile svg{width:15px;height:15px}.dd-ep .dd-tile img{width:18px;height:18px}.dd-ep-body{min-width:0}.dd-ep-name{color:var(--ink);letter-spacing:-.01em;white-space:nowrap;text-overflow:ellipsis;font-size:12.5px;font-weight:600;overflow:hidden}.dd-ep-sub{color:var(--ink-3);white-space:nowrap;text-overflow:ellipsis;margin-top:1px;font-size:10px;font-weight:500;overflow:hidden}.dd-note{box-shadow:var(--sh-node);font-family:var(--font-ui);background:#fffbeb;border:1px solid #fde68a;border-left:3px solid #f59e0b;border-radius:10px;height:100%;padding:10px 13px}.dd-note-h{color:#92400e;align-items:center;gap:6px;margin:0 0 4px;font-size:10.5px;font-weight:600;display:flex}.dd-note-h svg{stroke:#b45309;fill:none;stroke-width:1.6px;stroke-linecap:round;stroke-linejoin:round;width:11px;height:11px}.dd-note p{color:#78350f;white-space:pre-wrap;margin:0;font-size:11.5px;line-height:1.5}.dd-ctext{color:var(--ink-3);font-size:11.5px;line-height:1.55;font-family:var(--font-ui);height:100%}.dd-ctext h5{letter-spacing:.02em;color:var(--ink-2);margin:0 0 3px;font-size:10.5px;font-weight:600}.dd-ctext p{white-space:pre-wrap;margin:0}.dd-group{border-radius:var(--r-group);border:1.5px solid var(--gl,var(--line));background:var(--gt,transparent);width:100%;height:100%}.dd-g-head{font-family:var(--font-ui);letter-spacing:.13em;color:var(--gc,var(--ink-2));text-transform:uppercase;white-space:nowrap;pointer-events:none;align-items:center;gap:8px;font-size:10.5px;font-weight:700;display:flex;position:absolute;top:15px;left:18px}.dd-g-count{font-family:var(--font-mono);letter-spacing:0;color:var(--gc,var(--ink-2));border:1px solid var(--gl,var(--line));background:#fff;border-radius:999px;padding:2px 6px;font-size:9px;font-weight:600}.dd-boundary{border:1.5px dashed var(--line-strong);background:#ffffff59;border-radius:24px;width:100%;height:100%}.dd-b-label{border:1px solid var(--line);font-family:var(--font-ui);letter-spacing:.12em;color:var(--ink-2);text-transform:uppercase;white-space:nowrap;pointer-events:none;background:#fff;border-radius:8px;align-items:center;gap:7px;padding:5px 11px;font-size:10px;font-weight:700;display:flex;position:absolute;top:16px;left:18px;box-shadow:0 1px 2px #1c19170a}.dd-b-label svg{width:12px;height:12px;stroke:var(--ink-3);fill:none;stroke-width:1.6px}.dd-elabel{white-space:nowrap;font-family:var(--font-ui);letter-spacing:.01em;color:var(--ink-3);border:1px solid color-mix(in srgb,var(--line)70%,transparent);box-shadow:none;text-overflow:ellipsis;background:#ffffffeb;border-radius:999px;max-width:170px;padding:1.5px 7px;font-size:9px;font-weight:500;overflow:hidden}.react-flow__edge.selected .dd-elabel,.dd-elabel:hover{color:var(--ink-2);border-color:var(--line);background:#fff}.dd-zoom-far .dd-cols,.dd-zoom-far .dd-more,.dd-zoom-far .dd-ds-foot{display:none}.react-flow .react-flow__resize-control.line{border-color:var(--accent);opacity:.85;border-width:1.5px}.react-flow .react-flow__resize-control.handle{border:1.5px solid var(--accent);background:#fff;border-radius:3px;width:9px;height:9px;box-shadow:0 1px 2px #1c191724}.react-flow .react-flow__resize-control.handle:hover{background:var(--accent-soft)}.react-flow .react-flow__handle{pointer-events:all;cursor:crosshair;background:0 0;border:none;border-radius:0;width:0;min-width:0;height:0;min-height:0;transform:none}.react-flow .react-flow__handle:after{content:"";border-radius:50%;width:24px;height:24px;position:absolute;top:-12px;left:-12px}.react-flow .react-flow__handle:before{content:"";background:var(--surface);border:1.5px solid var(--line-strong);width:8px;height:8px;box-shadow:0 0 0 2px var(--surface);opacity:0;border-radius:50%;position:absolute;top:-4px;left:-4px}.react-flow__node:hover .dd-port:not(.dd-col-port):before,.react-flow__node.selected .dd-port:not(.dd-col-port):before,.dd-col:hover .dd-col-port:before,.dd-linking .react-flow .react-flow__handle:before{opacity:1}.react-flow .react-flow__handle.is-connected:before{opacity:1;background:var(--pc,var(--ink-3));border:2px solid #fff;box-shadow:0 0 0 1px #1c19171a}.react-flow .react-flow__handle:hover:before,.react-flow .react-flow__handle.connectingfrom:before,.react-flow .react-flow__handle.connectingto:before,.react-flow .react-flow__handle.valid:before{opacity:1;background:var(--accent);border-color:var(--accent);box-shadow:0 0 0 2px var(--surface)}.react-flow .react-flow__handle,.react-flow .react-flow__handle:before,.react-flow .react-flow__handle:after{transition:none!important;animation:none!important}.react-flow__edges{z-index:101!important;position:absolute!important}.react-flow__edge-labels{z-index:102!important}.react-flow__node{z-index:auto!important}.react-flow__node-group{z-index:0!important}.react-flow__edge .react-flow__edge-path,.react-flow__edge .react-flow__edge-interaction{pointer-events:stroke}.react-flow .react-flow__edge{cursor:pointer}.react-flow__edge.selected .react-flow__edge-path{stroke:var(--accent)!important}.dd-edge-grip{fill:var(--surface);stroke:var(--accent);stroke-width:2px;pointer-events:none}.dd-edge-cp{fill:var(--surface);stroke:var(--accent);stroke-width:2px;cursor:grab;pointer-events:all}.dd-edge-cp:active{cursor:grabbing}.dd-edge-cp-add{fill:var(--accent);fill-opacity:.35;stroke:var(--surface);stroke-width:1.5px;cursor:crosshair;pointer-events:all}.dd-edge-cp-add:hover{fill-opacity:1}.react-flow .react-flow__edgeupdater{fill:#0000;stroke:none;pointer-events:none}.react-flow .react-flow__edge.selected .react-flow__edgeupdater{pointer-events:all;cursor:grab}.react-flow .react-flow__edge.selected .react-flow__edgeupdater:active{cursor:grabbing}.react-flow .react-flow__connectionline path,.react-flow .react-flow__connection-path{stroke:var(--accent);stroke-width:1.75px;stroke-dasharray:5 4;animation:none}.react-flow .react-flow__node-group{width:auto;box-shadow:none;font-size:inherit;color:inherit;text-align:left;background:0 0;border:none;border-radius:0;padding:0}.react-flow .react-flow__node-group.selectable:hover,.react-flow .react-flow__node-group.selectable.selected,.react-flow .react-flow__node-group.selectable:focus,.react-flow .react-flow__node-group.selectable:focus-visible{box-shadow:none}.react-flow .react-flow__pane{cursor:grab;-webkit-user-select:none;user-select:none}.react-flow .react-flow__pane:active{cursor:grabbing}.react-flow .react-flow__selection{background:#4f46e50f;border:1px solid #4f46e573}.freehand-drawing-mode .react-flow__node,.freehand-drawing-mode .react-flow__edge,.freehand-drawing-mode .react-flow__nodesselection,.freehand-drawing-mode .react-flow__handle{pointer-events:none!important}.dd-static .react-flow__handle:before,.dd-static .react-flow__resize-control{display:none!important}.dd-connector{background:0 0;border:none}.react-flow__node:has(>.dd-connector).selected{box-shadow:none!important;background:0 0!important;outline:none!important}.react-flow__node:has(>.dd-connector){box-shadow:none!important;background:0 0!important;outline:none!important}.react-flow__node.dd-bind-target{outline:2px solid var(--accent);outline-offset:3px;border-radius:8px;transition:outline-color 80ms ease-out}
