*{box-sizing:border-box}html,body,#root{height:100%;margin:0}body{font-family:Inter,system-ui,-apple-system,Segoe UI,sans-serif;background:#0b1220;color:#e2e8f0}a{color:#7dd3fc}/*! JointJS React v4.3.1 (2026-07-07) - React bindings and hooks for JointJS to build interactive diagrams and graphs.

This Source Code Form is subject to the terms of the Mozilla Public
License, v. 2.0. If a copy of the MPL was not distributed with this
file, You can obtain one at http://mozilla.org/MPL/2.0/.
*/@layer joint;@layer joint{:root{--jj-color-dark-900: #6f859b;--jj-color-dark-800: #566c81;--jj-color-dark-700: #425567;--jj-color-dark-600: #344351;--jj-color-dark-500: #293a49;--jj-color-dark-400: #253544;--jj-color-dark-300: #202f3e;--jj-color-dark-200: #1a2733;--jj-color-dark-100: #131e29;--jj-color-light-100: #f5f6f8;--jj-color-light-125: #f3f6f8;--jj-color-light-150: #f0f4f7;--jj-color-light-200: #eaf0f4;--jj-color-light-300: #e4ebf1;--jj-color-light-400: #dde6ed;--jj-color-light-500: #cfdbe4;--jj-color-light-600: #c1cfda;--jj-color-light-700: #a6b6c5;--jj-color-light-800: #8a9eb0;--jj-color-light-900: #6f859b;--jj-color-success: #36a18b;--jj-color-destructive: #e03131;--jj-color-valid: #566c81;--jj-color-invalid: #868e96;--jj-radius-sm: 2px;--jj-radius-md: 3px;--jj-radius-lg: 4px;--jj-space-xs: 2px;--jj-space-sm: 4px;--jj-space-md: 6px;--jj-space-lg: 10px;--jj-stroke-width: 2px;--jj-color-primary: var(--jj-color-dark-500);--jj-color-primary-contrast: var(--jj-color-light-100);--jj-color-surface: var(--jj-color-light-100);--jj-color-shape-surface: var(--jj-color-light-150);--jj-color-shape-border: var(--jj-color-light-800);--jj-color-link: var(--jj-color-light-800);--jj-color-tool: var(--jj-color-light-100);--jj-color-tool-border: var(--jj-color-light-900);--jj-color-text: var(--jj-color-dark-200);--jj-color-border: var(--jj-color-light-500);--jj-color-border-subtle: var(--jj-color-light-200);--jj-drag-cursor: move;--jj-dragging-cursor: move;--jj-port-drag-cursor: crosshair;--jj-port-dragging-cursor: crosshair;--jj-transition-duration: .2s}@media(min-resolution:1.5dppx){:root{--jj-stroke-width: 1.5px}}}@layer joint{:root{--jj-box-color: var(--jj-color-shape-surface);--jj-box-hover-border-color: var(--jj-color-primary);--jj-box-fg-color: var(--jj-color-text);--jj-box-border-color: var(--jj-color-shape-border);--jj-box-border-width: var(--jj-stroke-width);--jj-box-border-radius: var(--jj-radius-lg);--jj-box-padding: 8px 12px;--jj-box-font-size: 14px;--jj-box-font-family: sans-serif}.jj-is-measuring{opacity:0;pointer-events:none}.jj-box{background:var(--jj-box-color);color:var(--jj-box-fg-color);border-width:var(--jj-box-border-width);border-style:solid;border-color:var(--jj-box-border-color);border-radius:var(--jj-box-border-radius);padding:var(--jj-box-padding);font-size:var(--jj-box-font-size);font-family:var(--jj-box-font-family);transition:border-color var(--jj-transition-duration)}.jj-box:hover{border-color:var(--jj-box-hover-border-color);cursor:var(--jj-drag-cursor)}}@layer joint{:root{--jj-port-color: var(--jj-color-surface);--jj-port-border-color: var(--jj-color-link);--jj-port-border-width: var(--jj-stroke-width);--jj-port-label-color: var(--jj-color-light-900);--jj-port-label-font-size: 10px;--jj-port-label-font-family: Arial, sans-serif}.jj-port{fill:var(--jj-port-color);stroke:var(--jj-port-border-color);stroke-width:var(--jj-port-border-width);transition:fill var(--jj-transition-duration),stroke var(--jj-transition-duration),stroke-width var(--jj-transition-duration)}.jj-port[magnet=active]{cursor:var(--jj-port-drag-cursor)}.jj-port-label{fill:var(--jj-port-label-color);font-size:var(--jj-port-label-font-size);font-family:var(--jj-port-label-font-family)}}@layer joint{:root{--jj-link-label-bg-color: var(--jj-color-light-200);--jj-link-label-color: var(--jj-color-text);--jj-link-label-font-size: 10px;--jj-link-label-font-family: Arial, sans-serif;--jj-link-label-border-color: var(--jj-color-light-700);--jj-link-label-border-width: var(--jj-stroke-width);--jj-link-label-border-radius: var(--jj-radius-sm)}.jj-link-label{fill:var(--jj-link-label-color);font-size:var(--jj-link-label-font-size);font-family:var(--jj-link-label-font-family)}.jj-link-label-bg{fill:var(--jj-link-label-bg-color);stroke:var(--jj-link-label-border-color);stroke-width:var(--jj-link-label-border-width);transition:stroke var(--jj-transition-duration)}.jj-link-label-bg:hover{stroke:var( --jj-color-light-900)}rect.jj-link-label-bg{rx:var(--jj-link-label-border-radius);ry:var(--jj-link-label-border-radius)}}@layer joint{:root{--jj-link-color: var(--jj-color-link);--jj-link-hover-color: var(--jj-color-primary);--jj-link-width: var(--jj-stroke-width);--jj-link-dash: none;--jj-link-line-cap: butt;--jj-link-connecting-color: var(--jj-color-link);--jj-link-connecting-width: var(--jj-stroke-width);--jj-link-connecting-dash: 8 4}.jj-link-line{stroke:var(--jj-link-color);stroke-width:var(--jj-link-width);stroke-dasharray:var(--jj-link-dash);stroke-linecap:var(--jj-link-line-cap);transition:stroke var(--jj-transition-duration)}.jj-link-wrapper:hover+.jj-link-line{stroke:var(--jj-link-hover-color)}.jj-is-connecting{--jj-link-color: var(--jj-link-connecting-color);--jj-link-width: var(--jj-link-connecting-width);--jj-link-dash: var(--jj-link-connecting-dash)}.jj-is-snapped{--jj-link-color: var(--jj-color-primary)}}@layer joint{:root{--jj-paper-color: var(--jj-color-light-300);--jj-paper-grid-color: var(--jj-color-light-700);--jj-highlighter-connecting-color: var(--jj-color-primary);--jj-highlighter-embedding-color: var(--jj-color-primary);--jj-port-hover-color: var(--jj-color-shape-surface);--jj-port-hover-border-color: var(--jj-color-link);--jj-port-hover-border-width: calc(var(--jj-stroke-width) * 2);--jj-port-available-color: var(--jj-color-dark-800);--jj-port-available-border-color: var(--jj-color-dark-800);--jj-port-available-border-width: var(--jj-port-border-width);--jj-port-connecting-color: var(--jj-color-primary);--jj-port-connecting-border-color: var(--jj-color-primary);--jj-port-connecting-border-width: var(--jj-port-border-width);--jj-box-available-border-color: var(--jj-color-valid)}.jj-paper{background-color:var(--jj-paper-color);height:-webkit-fill-available;height:stretch}.jj-port[magnet=active]:not(.jj-is-magnet-available):hover{fill:var(--jj-port-hover-color);stroke:var(--jj-port-hover-border-color);stroke-width:var(--jj-port-hover-border-width)}.jj-port.jj-is-magnet-available{fill:var(--jj-port-available-color);stroke:var(--jj-port-available-border-color);stroke-width:var(--jj-port-available-border-width)}.jj-port.jj-is-connecting{fill:var(--jj-port-connecting-color);stroke:var(--jj-port-connecting-border-color);stroke-width:var(--jj-port-connecting-border-width)}.jj-is-dragging .jj-port[magnet=active]{cursor:var(--jj-port-dragging-cursor)}.jj-is-dragging .jj-box{cursor:var(--jj-dragging-cursor)}.jj-is-element-available .jj-box{border-color:var(--jj-box-available-border-color)}.jj-magnet-highlighter{transition:opacity var(--jj-transition-duration) ease;opacity:1}@starting-style{.jj-magnet-highlighter{opacity:0}}}.app{display:flex;flex-direction:column;height:100%}.app__header{padding:18px 28px;border-bottom:1px solid rgba(226,232,240,.1);background:#0f172a}.app__header h1{margin:0 0 6px;font-size:20px}.app__header p{margin:0;font-size:13px;color:#94a3b8;max-width:900px;line-height:1.5}.app__stage{flex:1;position:relative;overflow:hidden;cursor:grab}.app__stage--panning{cursor:grabbing}.zoom-controls{position:absolute;right:16px;bottom:16px;z-index:10;display:flex;align-items:center;gap:2px;padding:4px;border-radius:10px;background:#0f172ad9;border:1px solid rgba(226,232,240,.12);box-shadow:0 4px 16px #00000059;-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px)}.zoom-controls__button{display:flex;align-items:center;justify-content:center;width:30px;height:30px;border:none;border-radius:7px;background:transparent;color:#e2e8f0;font-size:15px;line-height:1;cursor:pointer;transition:background .1s ease}.zoom-controls__button:hover{background:#e2e8f01f}.zoom-controls__button:active{background:#e2e8f033}.zoom-controls__percent{min-width:44px;text-align:center;font-size:12px;font-variant-numeric:tabular-nums;color:#94a3b8;-webkit-user-select:none;user-select:none}.zoom-controls__divider{width:1px;height:18px;margin:0 4px;background:#e2e8f029}.sankey-node{cursor:pointer;transition:opacity .15s ease}.sankey-node__bar{filter:drop-shadow(0 1px 3px rgba(0,0,0,.45));transition:stroke .15s ease,stroke-width .15s ease}.sankey-node__label,.sankey-node__value{font-family:inherit;dominant-baseline:middle;pointer-events:none;paint-order:stroke fill;stroke:#0b1220;stroke-width:3px;stroke-linejoin:round}.sankey-node__label{fill:#f1f5f9;font-size:12.5px;font-weight:600}.sankey-node__value{fill:#94a3b8;font-size:11px}
