.flow-toolbar{display:flex;flex-wrap:wrap;align-items:flex-end;gap:14px 22px;padding:14px 0 16px}.flow-stage{display:grid;grid-template-columns:1fr;gap:16px;align-items:start}.flow-stage.with-panel{grid-template-columns:1fr 320px}@media(max-width:860px){.flow-stage.with-panel{grid-template-columns:1fr}}.flow-main{min-width:0}.flow-canvas{height:70vh;min-height:460px;border:1px solid var(--line2);border-radius:12px;overflow:hidden;background:var(--paper)}.flow-skeleton{position:relative;display:flex;align-items:center;justify-content:center;height:100%;color:var(--ink3)}.flow-skeleton-graph{position:absolute;top:0;right:0;bottom:0;left:0;display:flex;align-items:center;justify-content:center;gap:clamp(24px,8vw,90px);padding:40px;opacity:.5}.fsk-col{display:flex;flex-direction:column;gap:18px}.fsk-col:nth-child(2n){margin-top:30px}.fsk-node{width:clamp(64px,12vw,128px);height:32px;border-radius:8px;background:linear-gradient(100deg,var(--line) 30%,color-mix(in srgb,var(--line) 35%,transparent) 50%,var(--line) 70%);background-size:200% 100%;animation:fsk-shimmer 1.4s ease-in-out infinite}@keyframes fsk-shimmer{0%{background-position:200% 0}to{background-position:-200% 0}}@media(prefers-reduced-motion:reduce){.fsk-node{animation:none}}.flow-skeleton-label{position:relative;z-index:1;padding:10px 16px;border-radius:999px;background:color-mix(in srgb,var(--card) 82%,transparent);-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px)}.flow-empty{padding:40px 0;text-align:center}.flow-legend{display:flex;flex-wrap:wrap;align-items:center;gap:8px 20px;margin-bottom:10px;font-size:12px;color:var(--ink2)}.flow-legend-edges{display:flex;flex-wrap:wrap;gap:6px 16px;align-items:center}.flow-legend-edges i{display:inline-block;width:18px;height:0;border-top-width:2px;border-top-style:solid;margin-right:6px;vertical-align:middle}.flow-key-upstream{border-top-color:var(--lc-target)}.flow-key-downstream{border-top-color:var(--obs-watch)}.flow-key-dep{border-top-style:dashed!important;border-top-color:var(--ink3)}.flow-legend .muted{color:var(--ink3)}.flow-list-group{border-top:1px solid var(--line);padding:8px 0}.flow-list-group.on{background:#e7eef8}.flow-list-group h3{display:flex;align-items:center;gap:8px;font-size:13.5px;margin:0 0 6px}.flow-list-group h3 button,.flow-list li button{background:none;border:0;padding:0;font:inherit;color:var(--ink);cursor:pointer;text-align:left}.flow-list-group h3 button{font-weight:700}.flow-list ul{margin:0;padding-left:16px;list-style:none}.flow-list li{padding:3px 0;display:flex;flex-wrap:wrap;align-items:baseline;gap:8px}.flow-list li button{color:var(--teal, #2f8f83)}.flow-li-meta{font-size:11px;color:var(--ink3)}.flow-li-dep{opacity:.55}.domain-badge{display:inline-block;font-size:10.5px;font-weight:600;line-height:1.4;padding:1px 8px;border-radius:999px;border:1px solid var(--line2, rgba(22, 22, 26, .18));color:var(--ink2, #46453f);background:var(--card, #fff);white-space:nowrap}.domain-badge.is-unset{border-style:dashed;font-weight:500;color:var(--ink3, #8c897e);background:transparent}.domain-picker-trigger{-webkit-appearance:none;-moz-appearance:none;appearance:none;border:none;background:none;padding:0;margin:0;cursor:pointer;display:inline-flex;align-items:center;gap:2px}.domain-picker-caret{font-size:9px;line-height:1;color:var(--ink3, #8c897e)}.domain-picker-trigger:hover .domain-badge,.domain-picker-trigger:focus-visible .domain-badge{border-color:var(--teal, #2f8f83);color:var(--teal, #2f8f83)}.domain-picker-trigger:hover .domain-picker-caret,.domain-picker-trigger:focus-visible .domain-picker-caret{color:var(--teal, #2f8f83)}.domain-picker-trigger[aria-busy=true]{opacity:.5}.domain-picker-trigger.is-failed .domain-badge{border-color:var(--obs-eol, var(--obs-eol));color:var(--obs-eol, var(--obs-eol))}.domain-picker-select{font-size:11px;padding:1px 4px;border:1px solid var(--teal, #2f8f83);border-radius:6px;background:var(--card, #fff);max-width:200px}.fsk-pivot{margin:2px 0 16px}.fsk-coverage{font-size:14px;color:var(--ink2);margin:4px 0 14px;display:flex;align-items:baseline;gap:14px;flex-wrap:wrap}.fsk-coverage strong{font-family:Archivo,sans-serif;font-size:18px;color:var(--ink)}.fsk-cta{font-size:12.5px;font-weight:600}.fsk-toolbar{margin-bottom:10px}.fsk-cols{display:flex;justify-content:space-between;font-family:JetBrains Mono,monospace;font-size:10.5px;letter-spacing:.08em;text-transform:uppercase;color:var(--ink3);margin:6px 2px}.fsk-cols span:nth-child(2){text-align:center}.fsk-svg{display:block;border:1px solid var(--line);border-radius:12px;background:var(--card, #fff);padding:8px 0}.fsk-ribbon{cursor:pointer;transition:fill-opacity .12s ease}.fsk-ribbon:focus-visible,.fsk-node:focus-visible{outline:2px solid var(--teal, #2f8f83);outline-offset:1px}.fsk-node{cursor:pointer}.ddp-x{min-width:32px;min-height:32px;color:var(--ink2, #46453f)}.fsk-node rect{transition:opacity .12s ease}.fsk-label{font-size:11px;fill:var(--ink2, #46453f);paint-order:stroke;stroke:var(--card, #fff);stroke-width:3px;stroke-linejoin:round;pointer-events:none}.fsk-stage{display:grid;grid-template-columns:1fr;gap:18px;align-items:start}.fsk-stage.has-panel{grid-template-columns:minmax(0,1fr) 300px}.fsk-diagram{min-width:0}@media(max-width:820px){.fsk-stage.has-panel{grid-template-columns:1fr}}.ddp-dot{display:inline-block;width:9px;height:9px;border-radius:50%;margin-right:7px;background:var(--ink3);vertical-align:middle}.ddp-def{font-size:13px;line-height:1.5;color:var(--ink2);margin:10px 0 4px}.ddp-h-n{color:var(--ink3);font-weight:400}.ddp-zones{margin:0;padding:0;list-style:none}.ddp-zones li{display:flex;justify-content:space-between;gap:10px;padding:2px 0;font-size:13px}.ddp-count{font-family:JetBrains Mono,monospace;font-size:11px;color:var(--ink3)}.ddp-apps{font-size:12.5px;line-height:1.6;color:var(--ink2);margin:2px 0 0}.flow-panel{border:1px solid var(--line2);border-radius:12px;background:var(--card);padding:14px;position:sticky;top:12px}.flow-panel-head{display:flex;justify-content:space-between;gap:8px}.flow-panel-name{font-weight:700}.flow-panel-sub{font-size:10px;color:var(--ink3);text-transform:uppercase;letter-spacing:.06em}.flow-panel-x{border:0;background:none;font-size:20px;line-height:1;cursor:pointer;color:var(--ink3)}.flow-panel-counts{font-family:JetBrains Mono,monospace;font-size:11px;color:var(--ink2);margin:8px 0}.flow-panel h4{font-size:11px;text-transform:uppercase;letter-spacing:.06em;color:var(--ink3);margin:12px 0 4px}.flow-panel-list{margin:0;padding:0;list-style:none}.flow-panel-list li{padding:2px 0}.flow-panel-list button{background:none;border:0;padding:0;font:inherit;color:var(--teal, #2f8f83);cursor:pointer}.flow-panel-actions{display:flex;flex-direction:column;gap:4px;margin-top:14px;font-size:12.5px}.flow-obj-link{font-size:11px;font-weight:600;white-space:nowrap;color:var(--teal, #2f8f83);text-decoration:none}.flow-obj-link:hover,.flow-obj-link:focus-visible{text-decoration:underline}.flow-edge-route{line-height:1.35}.flow-edge-facts{margin:10px 0 0}.flow-edge-facts dt{font-size:11px;text-transform:uppercase;letter-spacing:.06em;color:var(--ink3);margin:12px 0 0}.flow-edge-facts dd{margin:2px 0 0;font-size:13px;line-height:1.5;color:var(--ink)}.flow-edge-facts dd .muted{color:var(--ink3)}.flow-edge-facts dd .flow-obj-link{font-size:13px}.flow-analyse{margin:28px 0 50px}.flow-analyse>h2{font-size:15px;margin:0 0 12px}.flow-analyse-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:14px}.flow-analyse-card{border:1px solid var(--line2);border-radius:12px;background:var(--card);padding:12px 14px}.flow-analyse-card h3{font-size:12px;text-transform:uppercase;letter-spacing:.06em;color:var(--ink3);margin:0 0 8px}.flow-analyse-card ul{margin:0;padding:0;list-style:none;font-size:12.5px}.flow-analyse-card li{padding:2px 0}.flow-analyse-card .muted,.flow-analyse .muted{color:var(--ink3)}:where(:root[data-mode=dark]) .flow-list-group.on{background:var(--tint-info-bg)}@media(prefers-color-scheme:dark){:where(:root:not([data-mode=light])) .flow-list-group.on{background:var(--tint-info-bg)}}.fl-coupling{margin-top:16px;padding:14px 16px;border:1px solid var(--line2);border-radius:10px;background:var(--card)}.fl-coupling h3{margin:0 0 10px}.fl-coupling-stats{display:flex;flex-wrap:wrap;gap:16px;margin-bottom:12px}.fl-cpl-stat{color:var(--ink2)}.fl-cpl-direct b{color:var(--lc-transition)}.fl-cpl-cyclic b{color:var(--obs-eol)}.fl-coupling-matrix{width:100%;border-collapse:collapse;font-size:.9em}.fl-coupling-matrix th{text-align:left;color:var(--ink3);font-weight:600;padding:4px 8px}.fl-coupling-matrix td{padding:4px 8px;border-top:1px solid var(--line2)}.fl-cpl-bar{display:inline-block;vertical-align:middle;height:8px;width:calc(40px * var(--r, 0));min-width:2px;margin-right:6px;background:var(--lc-transition);border-radius:4px}
