:root{color-scheme:light;--bg: #f3eedf;--grid: rgba(38, 72, 128, .075);--ink: #1b2233;--muted: #676b75;--panel: #fbf8ee;--line: #1b2233;--module: #fffdf5;--artifact: #e6dfca;--edge: #8a8f99;--tab: #e5dfcc;--added: #0ca30c;--removed: #d03b3b;--changed: #fab219;--changed-ink: #8a5a00;--in: #2a78d6;--out: #d55181;--added-ink: #087208;--removed-ink: #b02a2a;--mono: ui-monospace, "SF Mono", Menlo, Consolas, "Courier New", monospace;--display: "Arial Black", "Helvetica Neue", Impact, sans-serif;--body: "Trebuchet MS", "Lucida Grande", Verdana, sans-serif}@media (prefers-color-scheme: dark){:root:not([data-theme=light]){color-scheme:dark;--bg: #123059;--grid: rgba(255, 255, 255, .07);--ink: #eef3ff;--muted: #a6b5d3;--panel: #0e2747;--line: #dce6ff;--module: #18406f;--artifact: #1f4d86;--edge: #8ea3c8;--tab: #1a3e6c;--changed-ink: #fab219;--in: #3987e5;--added-ink: #4cd34c;--removed-ink: #ff7b7b}}:root[data-theme=dark]{color-scheme:dark;--bg: #123059;--grid: rgba(255, 255, 255, .07);--ink: #eef3ff;--muted: #a6b5d3;--panel: #0e2747;--line: #dce6ff;--module: #18406f;--artifact: #1f4d86;--edge: #8ea3c8;--tab: #1a3e6c;--changed-ink: #fab219;--in: #3987e5;--added-ink: #4cd34c;--removed-ink: #ff7b7b}*{box-sizing:border-box}html,body,#root{height:100%;margin:0}body{background-color:var(--bg);background-image:linear-gradient(var(--grid) 1px,transparent 1px),linear-gradient(90deg,var(--grid) 1px,transparent 1px);background-size:24px 24px;color:var(--ink);font:14px/1.4 var(--body)}button,input{font:inherit;color:inherit}.mono{font-family:var(--mono)}.muted{color:var(--muted)}.small{font-size:12px}.error{color:var(--removed-ink)}.page{display:flex;flex-direction:column;height:100%;padding:12px 16px 16px;gap:8px;min-width:0}.top{display:flex;align-items:stretch;gap:10px;flex-wrap:wrap}.title{flex:1 1 260px;min-width:0}h1{font:26px/1 var(--display);letter-spacing:.02em;text-transform:uppercase;margin:4px 0 6px}.tagline{margin:0;color:var(--muted)}.slot{flex:0 1 300px;min-width:0;border:1.5px solid var(--line);background:var(--panel);padding:6px 10px;position:relative;box-shadow:3px 3px 0 var(--line)}.slot.over{outline:3px dashed var(--changed)}.slot-n{font:11px var(--display);text-transform:uppercase;letter-spacing:.08em}.slot-ref{font-weight:700;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.slot-sub{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.load{position:absolute;top:6px;right:8px;font-size:12px;text-decoration:underline;cursor:pointer}.load input{display:none}.between{align-self:center;display:flex;flex-direction:column;align-items:center;gap:4px}.link-toggle{white-space:nowrap;cursor:pointer}.slot-pipeline{display:flex;align-items:center;gap:6px;margin-top:4px;font:11px var(--display);text-transform:uppercase;letter-spacing:.08em}.slot-pipeline select{flex:1;min-width:0;border:1.5px solid var(--line);background:var(--bg);color:var(--ink);font:bold 13px var(--mono);text-transform:none;letter-spacing:0;padding:2px 4px}.swap{border:1.5px solid var(--line);background:var(--panel);width:34px;height:34px;cursor:pointer;box-shadow:2px 2px 0 var(--line)}.swap:active{transform:translate(2px,2px);box-shadow:none}.subtabs{display:flex;gap:4px;flex-wrap:wrap}.subtab{border:1.5px solid var(--line);background:transparent;padding:3px 10px;cursor:pointer;font-size:13px;max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.subtab.on{background:var(--ink);color:var(--bg)}.toolbar{display:flex;justify-content:space-between;align-items:center;gap:10px;flex-wrap:wrap}.summary{display:flex;gap:14px;flex-wrap:wrap}.count span+span{margin-left:6px}.controls{display:flex;gap:12px;align-items:center;flex-wrap:wrap}.controls input[type=search]{border:1.5px solid var(--line);background:var(--panel);padding:3px 8px;width:180px}.legend{display:flex;gap:16px;flex-wrap:wrap;font-size:12px}span.st-added,.legend .st-added{color:var(--added-ink);font-weight:700}span.st-removed,.legend .st-removed{color:var(--removed-ink);font-weight:700}span.st-changed,.legend .st-changed{color:var(--changed-ink);font-weight:700}span.st-code,.legend .st-code{color:var(--changed-ink)}.stage{flex:1;min-height:420px;display:flex;gap:10px;min-width:0}.canvas{flex:1;position:relative;border:1.5px solid var(--line);background:color-mix(in srgb,var(--bg) 70%,transparent);overflow:hidden;cursor:grab;touch-action:none;min-width:0}.canvas:active{cursor:grabbing}.zoom{position:absolute;right:8px;bottom:8px;display:flex;gap:4px}.zoom button{border:1.5px solid var(--line);background:var(--panel);min-width:30px;height:28px;cursor:pointer}.absent{flex:1;border:1.5px dashed var(--line);display:grid;place-content:center;text-align:center;padding:24px}.node{cursor:pointer}.node .body{stroke:var(--line);stroke-width:1.5}.node.module .body{fill:var(--module)}.node.artifact .body{fill:var(--artifact);stroke-width:1}.node.external .body{stroke-dasharray:4 3}.node .halo{fill:none;stroke:none}.node.selected .halo{stroke:var(--ink);stroke-width:2;stroke-dasharray:2 3}.node.match .halo{stroke:var(--changed);stroke-width:3}.node .name{font:13px var(--mono);fill:var(--ink)}.node.artifact .name{font-size:11.5px}.node .badges{font:bold 9.5px var(--body);letter-spacing:.06em;fill:var(--muted)}.node .glyph{font:bold 15px var(--mono)}.node.st-added .body{stroke:var(--added);stroke-width:3}.node.st-added .glyph{fill:var(--added-ink)}.node.st-removed .body{stroke:var(--removed);stroke-width:3;stroke-dasharray:6 4}.node.st-removed .glyph{fill:var(--removed-ink)}.node.st-removed .name{text-decoration:line-through}.node.st-changed:not(.code-only) .body{stroke:var(--changed);stroke-width:3.5}.node.st-changed .glyph{fill:var(--changed-ink)}.code-dot circle{fill:var(--changed);stroke:var(--line);stroke-width:1}.code-dot text{font:bold 7px var(--mono);fill:#1b2233}.edge path{fill:none;stroke:var(--edge);stroke-width:1.4}.edge.st-added path{stroke:var(--added);stroke-width:2.4}.edge.st-removed path{stroke:var(--removed);stroke-width:2.4;stroke-dasharray:6 4}.edge.st-changed path{stroke:var(--changed);stroke-width:2.4}.edge.carry path{stroke-dasharray:1 4;stroke-linecap:round}.arrowhead{fill:var(--edge)}.arrowhead.st-added{fill:var(--added)}.arrowhead.st-removed{fill:var(--removed)}.arrowhead.st-changed{fill:var(--changed)}.panel{flex:0 0 360px;max-width:42%;border:1.5px solid var(--line);background:var(--panel);padding:10px 12px;overflow:auto;box-shadow:3px 3px 0 var(--line)}.panel.empty{color:var(--muted)}.panel header{position:relative;border-bottom:1.5px solid var(--line);margin-bottom:8px;padding-bottom:6px}.panel .kind{font:11px var(--display);text-transform:uppercase;letter-spacing:.08em;color:var(--muted)}.panel h3{font:bold 16px var(--mono);margin:2px 24px 4px 0;word-break:break-all}.panel h4{font:12px var(--display);text-transform:uppercase;letter-spacing:.06em;margin:12px 0 4px}.panel .close{position:absolute;top:0;right:0;border:none;background:none;font-size:20px;cursor:pointer}.chip{display:inline-block;border:1.5px solid currentColor;padding:0 6px;font-size:12px;font-weight:700}.chip.st-added{color:var(--added-ink)}.chip.st-removed{color:var(--removed-ink)}.chip.st-changed,.chip.st-code{color:var(--changed-ink)}.chip.st-unchanged{color:var(--muted)}.panel dl{display:grid;grid-template-columns:max-content 1fr;gap:2px 10px;margin:0}.panel dt{color:var(--muted)}.panel dd{margin:0;word-break:break-all}.panel table{width:100%;border-collapse:collapse;font-size:12px}.panel td,.panel th{border-top:1px dotted var(--muted);padding:3px 4px;vertical-align:top;text-align:left;word-break:break-word}.panel td.path{font-family:var(--mono);white-space:nowrap}.changes{list-style:none;padding:0;margin:0;font-size:12px}.changes li{border-top:1px dotted var(--muted);padding:4px 0}.changes .path{font-family:var(--mono);font-weight:700}.changes .before,.changes .after{font-family:var(--mono);word-break:break-word;padding-left:1.2em;text-indent:-1.2em}.changes .before{color:var(--removed-ink)}.changes .after{color:var(--added-ink)}.ports{list-style:none;padding:0;margin:0}.ports li{padding:3px 0;border-top:1px dotted var(--muted)}.link{border:none;background:none;padding:0 6px 0 0;font-family:var(--mono);text-decoration:underline;cursor:pointer}.desc{font-size:12px}.note{font-weight:700}details pre{font:11px/1.35 var(--mono);max-height:320px;overflow:auto;white-space:pre-wrap}@media (max-width: 820px){.stage{flex-direction:column}.panel{flex:none;max-width:none;max-height:45vh}.canvas{min-height:420px}}.edge.role-in{--role: var(--in)}.edge.role-out{--role: var(--out)}.edge.role path:last-of-type{stroke-width:2.6}.edge.role.st-plain path:last-of-type,.edge.role.st-unchanged path:last-of-type{stroke:var(--role)}.edge .glow{stroke:var(--role);stroke-width:9;stroke-opacity:.28;stroke-linecap:round;stroke-dasharray:none}.edge .flow{stroke:var(--role);stroke-width:3;stroke-dasharray:2 10;stroke-linecap:round;animation:flow .7s steps(6) infinite}@keyframes flow{to{stroke-dashoffset:-12}}@media (prefers-reduced-motion: reduce){.edge .flow{animation:none}}.edge-chip{pointer-events:none}.edge-chip rect{fill:var(--panel);stroke:var(--role);stroke-width:1.5}.edge-chip.role-in{--role: var(--in)}.edge-chip.role-out{--role: var(--out)}.edge-chip text{font:11px var(--mono);fill:var(--ink)}.node.role-in{--role: var(--in)}.node.role-out{--role: var(--out)}.node.role-both{--role: var(--in)}.node.role .halo{stroke:var(--role);stroke-width:3.5;fill:color-mix(in srgb,var(--role) 14%,transparent)}.node.role-both .halo{stroke-dasharray:8 5}.node.focus .halo{stroke:var(--ink);stroke-width:3.5;stroke-dasharray:none;fill:color-mix(in srgb,var(--ink) 8%,transparent)}.hover-legend{position:absolute;left:8px;top:6px;font-size:12px;color:var(--muted);pointer-events:none;background:color-mix(in srgb,var(--bg) 85%,transparent);padding:1px 6px}.hover-legend .in{color:var(--in);font-weight:700}.hover-legend .out{color:var(--out);font-weight:700}.landing{max-width:1100px;margin:0 auto;height:auto;gap:14px}.loading{padding:40px}a.home{color:inherit;text-decoration:none}.tagline a{color:var(--ink)}.pick{display:flex;gap:12px;align-items:flex-end;flex-wrap:wrap;border:1.5px solid var(--line);background:var(--panel);padding:12px;box-shadow:3px 3px 0 var(--line)}.pick label{display:flex;flex-direction:column;gap:4px;flex:1 1 260px;min-width:0}.pick input{border:1.5px solid var(--line);background:var(--bg);padding:6px 8px;font-size:14px}.go{border:1.5px solid var(--line);background:var(--ink);color:var(--bg);padding:7px 18px;font:14px var(--display);text-transform:uppercase;cursor:pointer}.stored h2{font:16px var(--display);text-transform:uppercase;letter-spacing:.04em}.stored table{width:100%;border-collapse:collapse;font-size:13px;background:var(--panel);border:1.5px solid var(--line)}.stored th,.stored td{text-align:left;padding:5px 8px;border-top:1px dotted var(--muted);vertical-align:top}.stored .subject{max-width:380px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.nowrap,.stored .actions{white-space:nowrap}.stored .actions button{border:1.5px solid var(--line);background:var(--bg);margin-left:4px;cursor:pointer;font-size:12px}@media (max-width: 820px){.stored table{display:block;overflow-x:auto}}.landing .title{flex:none}.logout{position:fixed;top:6px;right:8px;z-index:10;border:1px solid var(--line);background:var(--panel);cursor:pointer}.login{max-width:640px}
