@charset "UTF-8";html{color-scheme:dark;--mat-sys-background: #121316;--mat-sys-error: #ffb4ab;--mat-sys-error-container: #93000a;--mat-sys-inverse-on-surface: #2f3033;--mat-sys-inverse-primary: #005cbb;--mat-sys-inverse-surface: #e3e2e6;--mat-sys-on-background: #e3e2e6;--mat-sys-on-error: #690005;--mat-sys-on-error-container: #ffdad6;--mat-sys-on-primary: #002f65;--mat-sys-on-primary-container: #d7e3ff;--mat-sys-on-primary-fixed: #001b3f;--mat-sys-on-primary-fixed-variant: #00458f;--mat-sys-on-secondary: #283041;--mat-sys-on-secondary-container: #dae2f9;--mat-sys-on-secondary-fixed: #131c2b;--mat-sys-on-secondary-fixed-variant: #3e4759;--mat-sys-on-surface: #e3e2e6;--mat-sys-on-surface-variant: #e0e2ec;--mat-sys-on-tertiary: #0001ac;--mat-sys-on-tertiary-container: #e0e0ff;--mat-sys-on-tertiary-fixed: #00006e;--mat-sys-on-tertiary-fixed-variant: #0000ef;--mat-sys-outline: #8e9099;--mat-sys-outline-variant: #44474e;--mat-sys-primary: #abc7ff;--mat-sys-primary-container: #00458f;--mat-sys-primary-fixed: #d7e3ff;--mat-sys-primary-fixed-dim: #abc7ff;--mat-sys-scrim: #000000;--mat-sys-secondary: #bec6dc;--mat-sys-secondary-container: #3e4759;--mat-sys-secondary-fixed: #dae2f9;--mat-sys-secondary-fixed-dim: #bec6dc;--mat-sys-shadow: #000000;--mat-sys-surface: #121316;--mat-sys-surface-bright: #38393c;--mat-sys-surface-container: #1f2022;--mat-sys-surface-container-high: #292a2c;--mat-sys-surface-container-highest: #343537;--mat-sys-surface-container-low: #1a1b1f;--mat-sys-surface-container-lowest: #0d0e11;--mat-sys-surface-dim: #121316;--mat-sys-surface-tint: #abc7ff;--mat-sys-surface-variant: #44474e;--mat-sys-tertiary: #bec2ff;--mat-sys-tertiary-container: #0000ef;--mat-sys-tertiary-fixed: #e0e0ff;--mat-sys-tertiary-fixed-dim: #bec2ff;--mat-sys-neutral-variant20: #2d3038;--mat-sys-neutral10: #1a1b1f;--mat-sys-level0: 0px 0px 0px 0px rgba(0, 0, 0, .2), 0px 0px 0px 0px rgba(0, 0, 0, .14), 0px 0px 0px 0px rgba(0, 0, 0, .12);--mat-sys-level1: 0px 2px 1px -1px rgba(0, 0, 0, .2), 0px 1px 1px 0px rgba(0, 0, 0, .14), 0px 1px 3px 0px rgba(0, 0, 0, .12);--mat-sys-level2: 0px 3px 3px -2px rgba(0, 0, 0, .2), 0px 3px 4px 0px rgba(0, 0, 0, .14), 0px 1px 8px 0px rgba(0, 0, 0, .12);--mat-sys-level3: 0px 3px 5px -1px rgba(0, 0, 0, .2), 0px 6px 10px 0px rgba(0, 0, 0, .14), 0px 1px 18px 0px rgba(0, 0, 0, .12);--mat-sys-level4: 0px 5px 5px -3px rgba(0, 0, 0, .2), 0px 8px 10px 1px rgba(0, 0, 0, .14), 0px 3px 14px 2px rgba(0, 0, 0, .12);--mat-sys-level5: 0px 7px 8px -4px rgba(0, 0, 0, .2), 0px 12px 17px 2px rgba(0, 0, 0, .14), 0px 5px 22px 4px rgba(0, 0, 0, .12);--mat-sys-body-large: 400 1rem / 1.5rem Roboto;--mat-sys-body-large-font: Roboto;--mat-sys-body-large-line-height: 1.5rem;--mat-sys-body-large-size: 1rem;--mat-sys-body-large-tracking: .031rem;--mat-sys-body-large-weight: 400;--mat-sys-body-medium: 400 .875rem / 1.25rem Roboto;--mat-sys-body-medium-font: Roboto;--mat-sys-body-medium-line-height: 1.25rem;--mat-sys-body-medium-size: .875rem;--mat-sys-body-medium-tracking: .016rem;--mat-sys-body-medium-weight: 400;--mat-sys-body-small: 400 .75rem / 1rem Roboto;--mat-sys-body-small-font: Roboto;--mat-sys-body-small-line-height: 1rem;--mat-sys-body-small-size: .75rem;--mat-sys-body-small-tracking: .025rem;--mat-sys-body-small-weight: 400;--mat-sys-display-large: 400 3.562rem / 4rem Roboto;--mat-sys-display-large-font: Roboto;--mat-sys-display-large-line-height: 4rem;--mat-sys-display-large-size: 3.562rem;--mat-sys-display-large-tracking: -.016rem;--mat-sys-display-large-weight: 400;--mat-sys-display-medium: 400 2.812rem / 3.25rem Roboto;--mat-sys-display-medium-font: Roboto;--mat-sys-display-medium-line-height: 3.25rem;--mat-sys-display-medium-size: 2.812rem;--mat-sys-display-medium-tracking: 0;--mat-sys-display-medium-weight: 400;--mat-sys-display-small: 400 2.25rem / 2.75rem Roboto;--mat-sys-display-small-font: Roboto;--mat-sys-display-small-line-height: 2.75rem;--mat-sys-display-small-size: 2.25rem;--mat-sys-display-small-tracking: 0;--mat-sys-display-small-weight: 400;--mat-sys-headline-large: 400 2rem / 2.5rem Roboto;--mat-sys-headline-large-font: Roboto;--mat-sys-headline-large-line-height: 2.5rem;--mat-sys-headline-large-size: 2rem;--mat-sys-headline-large-tracking: 0;--mat-sys-headline-large-weight: 400;--mat-sys-headline-medium: 400 1.75rem / 2.25rem Roboto;--mat-sys-headline-medium-font: Roboto;--mat-sys-headline-medium-line-height: 2.25rem;--mat-sys-headline-medium-size: 1.75rem;--mat-sys-headline-medium-tracking: 0;--mat-sys-headline-medium-weight: 400;--mat-sys-headline-small: 400 1.5rem / 2rem Roboto;--mat-sys-headline-small-font: Roboto;--mat-sys-headline-small-line-height: 2rem;--mat-sys-headline-small-size: 1.5rem;--mat-sys-headline-small-tracking: 0;--mat-sys-headline-small-weight: 400;--mat-sys-label-large: 500 .875rem / 1.25rem Roboto;--mat-sys-label-large-font: Roboto;--mat-sys-label-large-line-height: 1.25rem;--mat-sys-label-large-size: .875rem;--mat-sys-label-large-tracking: .006rem;--mat-sys-label-large-weight: 500;--mat-sys-label-large-weight-prominent: 700;--mat-sys-label-medium: 500 .75rem / 1rem Roboto;--mat-sys-label-medium-font: Roboto;--mat-sys-label-medium-line-height: 1rem;--mat-sys-label-medium-size: .75rem;--mat-sys-label-medium-tracking: .031rem;--mat-sys-label-medium-weight: 500;--mat-sys-label-medium-weight-prominent: 700;--mat-sys-label-small: 500 .688rem / 1rem Roboto;--mat-sys-label-small-font: Roboto;--mat-sys-label-small-line-height: 1rem;--mat-sys-label-small-size: .688rem;--mat-sys-label-small-tracking: .031rem;--mat-sys-label-small-weight: 500;--mat-sys-title-large: 400 1.375rem / 1.75rem Roboto;--mat-sys-title-large-font: Roboto;--mat-sys-title-large-line-height: 1.75rem;--mat-sys-title-large-size: 1.375rem;--mat-sys-title-large-tracking: 0;--mat-sys-title-large-weight: 400;--mat-sys-title-medium: 500 1rem / 1.5rem Roboto;--mat-sys-title-medium-font: Roboto;--mat-sys-title-medium-line-height: 1.5rem;--mat-sys-title-medium-size: 1rem;--mat-sys-title-medium-tracking: .009rem;--mat-sys-title-medium-weight: 500;--mat-sys-title-small: 500 .875rem / 1.25rem Roboto;--mat-sys-title-small-font: Roboto;--mat-sys-title-small-line-height: 1.25rem;--mat-sys-title-small-size: .875rem;--mat-sys-title-small-tracking: .006rem;--mat-sys-title-small-weight: 500;--mat-sys-corner-extra-large: 28px;--mat-sys-corner-extra-large-top: 28px 28px 0 0;--mat-sys-corner-extra-small: 4px;--mat-sys-corner-extra-small-top: 4px 4px 0 0;--mat-sys-corner-full: 9999px;--mat-sys-corner-large: 16px;--mat-sys-corner-large-end: 0 16px 16px 0;--mat-sys-corner-large-start: 16px 0 0 16px;--mat-sys-corner-large-top: 16px 16px 0 0;--mat-sys-corner-medium: 12px;--mat-sys-corner-none: 0;--mat-sys-corner-small: 8px;--mat-sys-dragged-state-layer-opacity: .16;--mat-sys-focus-state-layer-opacity: .12;--mat-sys-hover-state-layer-opacity: .08;--mat-sys-pressed-state-layer-opacity: .12}:root{--oc-bg: #0d1117;--oc-surface: #161b22;--oc-surface-2: #1c2130;--oc-border: #30363d;--oc-accent: #4f8ef7;--oc-green: #22c55e;--oc-yellow: #f59e0b;--oc-red: #ef4444;--oc-text: #e6edf3;--oc-muted: #8b949e;--oc-mono: "Menlo", "Consolas", monospace;--oc-prio-critical: #ef4444;--oc-prio-high: #f97316;--oc-prio-medium: #f59e0b;--oc-prio-low: #3b82f6;--oc-prio-alert: #8b949e;--oc-subject-telemetry: #7ee8a2;--oc-subject-jobdata: #93c5fd;--oc-subject-alarms: #fca5a5}:root{--color-bg: #0c0f11;--color-chrome: #0e1214;--color-surface: #14181b;--color-surface-2: #191d21;--color-text: #dde4ea;--dim: rgba(221, 228, 234, .55);--dim2: rgba(221, 228, 234, .34);--color-divider: rgba(221, 228, 234, .16);--row-rule: rgba(221, 228, 234, .07);--color-accent: #94bce3;--color-accent-hover: #b5d9fd;--color-accent-700: #749dc4;--accent-tint: rgba(148, 188, 227, .12);--accent-tint-hover: rgba(148, 188, 227, .08);--ok: #7fbf8f;--warn: #e2b263;--bad: #e2503c;--warn-tint: rgba(226, 178, 99, .12);--bad-tint: rgba(226, 80, 60, .2);--prio-p1: var(--bad);--prio-p2: var(--warn);--prio-p3: var(--color-accent);--prio-p4: var(--dim);--font-heading: "Barlow Condensed", "Barlow", system-ui, sans-serif;--font-body: "Barlow", system-ui, sans-serif;--mono: "IBM Plex Mono", ui-monospace, "SF Mono", monospace;--radius: 0;--border-w: 1px;--toolbar-h: 46px;--sidebar-w: 214px;--grid-gap: 12px;--card-pad: 11px;--bg: var(--color-bg);--surface: var(--color-surface);--surface2: var(--color-surface-2);--border: var(--color-divider);--accent: var(--color-accent);--green: var(--ok);--yellow: var(--warn);--red: var(--bad);--text: var(--color-text);--muted: var(--dim);--prio-critical: var(--bad);--prio-high: #e08a4c;--prio-medium: var(--warn);--prio-low: var(--color-accent);--prio-alert: var(--dim);--subject-telemetry: var(--ok);--subject-jobdata: var(--color-accent);--subject-alarms: var(--bad)}@keyframes eosPulse{0%,to{opacity:1;transform:scale(1)}50%{opacity:.35;transform:scale(.82)}}@keyframes eosFlash{0%,to{background:#e2503c33}50%{background:#e2503c0a}}@keyframes eosSweep{0%{transform:translate(-100%)}to{transform:translate(400%)}}@keyframes eosIn{0%{opacity:0;transform:translateY(3px)}to{opacity:1;transform:none}}.oc-status{display:inline-flex;align-items:center;gap:7px;font-family:var(--mono);font-size:10.5px;letter-spacing:.06em;text-transform:uppercase}.oc-status .oc-status__dot{width:7px;height:7px;border-radius:50%;flex:none;background:var(--dim)}.oc-status.is-ok .oc-status__dot,.oc-status.is-live .oc-status__dot{background:var(--ok);animation:eosPulse 1.6s ease-in-out infinite}.oc-status.is-ok{color:var(--ok)}.oc-status.is-warn{color:var(--warn)}.oc-status.is-warn .oc-status__dot{background:var(--warn)}.oc-status.is-bad{color:var(--bad)}.oc-status.is-bad .oc-status__dot{background:var(--bad)}.oc-chip{display:inline-flex;align-items:center;gap:6px;padding:2px 7px;border:1px solid var(--color-divider);border-radius:0;background:transparent;color:var(--dim);font-family:var(--mono);font-size:10.5px;cursor:default}.oc-chip.is-active{border-color:var(--color-accent);color:var(--color-accent);background:var(--accent-tint)}.oc-seg{display:inline-flex;border:1px solid var(--color-divider)}.oc-seg button{padding:5px 12px;background:transparent;border:0;color:var(--dim);font-family:var(--mono);font-size:11px;letter-spacing:.06em;cursor:pointer}.oc-seg button.is-active{background:var(--color-accent);color:var(--color-bg)}.oc-seg button:hover:not(.is-active){background:var(--accent-tint-hover)}.oc-table{width:100%;border-collapse:collapse;font-size:12px}.oc-table thead th{text-align:left;padding:6px 10px;border-bottom:1px solid var(--color-divider);font-family:var(--mono);font-size:10px;letter-spacing:.1em;text-transform:uppercase;color:var(--dim2);font-weight:400}.oc-table tbody td{padding:5px 10px;border-bottom:1px solid var(--row-rule)}.oc-table tbody tr:hover{background:var(--accent-tint-hover)}.oc-table tbody tr.is-selected{background:var(--accent-tint);box-shadow:inset 2px 0 0 var(--color-accent)}.oc-table-wrap{border:1px solid var(--color-divider);background:var(--color-surface);overflow-x:auto}.oc-meter{display:inline-flex;align-items:center;gap:8px;font-family:var(--mono);font-size:10.5px;color:var(--dim)}.oc-meter .oc-meter__track{display:block;width:90px;height:6px;background:#dde4ea1f}.oc-meter .oc-meter__fill{display:block;height:6px;background:var(--color-accent)}.oc-meter.is-incomplete .oc-meter__note{color:var(--warn)}.oc-code{font-family:var(--mono);font-size:11.5px;line-height:1.65;color:#cfe0ef}.oc-code .oc-code__line{display:flex;gap:10px;padding:0 10px}.oc-code .oc-code__n{color:var(--dim2);-webkit-user-select:none;user-select:none;min-width:18px;text-align:right}.oc-code .oc-code__t{white-space:pre}.oc-code .oc-code__line.is-active{background:var(--accent-tint)}.oc-code .oc-code__line--add{background:#7fbf8f1a}.oc-code .oc-code__line--del{background:#e2503c1a}.oc-btn{display:inline-flex;align-items:center;gap:6px;padding:5px 11px;border:1px solid var(--color-divider);border-radius:0;background:transparent;color:var(--color-text);font-family:var(--font-body);font-size:12px;cursor:pointer}.oc-btn:hover{background:var(--accent-tint-hover)}.oc-btn.oc-btn--primary{background:var(--color-accent);border-color:var(--color-accent);color:var(--color-bg)}.oc-btn.oc-btn--primary:hover{background:var(--color-accent-hover);border-color:var(--color-accent-hover)}.oc-btn.oc-btn--ghost{border-color:transparent;color:var(--dim)}.oc-btn.oc-btn--danger{color:var(--bad);border-color:#e2503c80}.oc-btn.oc-btn--sm{padding:2px 7px;font-family:var(--mono);font-size:10px}.oc-btn:disabled{opacity:.4;cursor:not-allowed}.oc-input{background:var(--color-chrome);border:1px solid var(--color-divider);border-radius:0;color:var(--color-text);font-family:var(--mono);font-size:12px;padding:5px 8px}.oc-input:focus{outline:2px solid var(--color-accent);outline-offset:-1px}.studio-root{--void: var(--color-bg);--void-2: var(--color-chrome);--panel: var(--color-surface);--panel-2: var(--color-surface-2);--grid: var(--color-divider);--grid-soft: var(--row-rule);--phosphor: var(--color-accent);--phosphor-dim: var(--color-accent-700);--amber: var(--warn);--steel: var(--color-accent-700);--fault: var(--bad);--ink: var(--color-text);--ink-dim: var(--dim);--ink-faint: var(--dim2);--pc-water: #4aa3df;--pc-sand: var(--amber);--pc-chem: #a678de;--pc-fluid_lp: #2fb6a8;--pc-fluid_hp: #d1495b;--pc-gas: #8fbf5a;--diagram-grid-dot: var(--grid);--st-mono: var(--mono);--st-sans: var(--font-body);--st-display: var(--font-heading);--r: 0;--ease: cubic-bezier(.4, 0, .2, 1);position:relative;min-height:100%;display:flex;flex-direction:column;background:transparent;color:var(--ink);font-family:var(--st-sans);font-size:13px;line-height:1.4}.studio-root *,.studio-root *:before,.studio-root *:after{box-sizing:border-box}.studio-root h1,.studio-root h2,.studio-root h3{margin:0;font-family:var(--st-display);font-weight:600;letter-spacing:0}.studio-root button{font-family:inherit;color:inherit;cursor:pointer}.studio-root .mono{font-family:var(--st-mono)}.studio-root .topbar{flex:none;height:48px;border-bottom:1px solid var(--grid);background:var(--void-2);display:flex;align-items:center;gap:12px;padding:0 12px}.studio-root .lens{display:flex;background:var(--void);border:1px solid var(--grid);border-radius:var(--r);padding:2px}.studio-root .lens button{border:0;background:transparent;color:var(--ink-dim);font-family:var(--st-display);font-size:11px;letter-spacing:.03em;text-transform:uppercase;padding:6px 12px;border-radius:var(--r);display:flex;align-items:center;gap:6px}.studio-root .lens button.on{background:var(--panel-2);color:var(--phosphor)}.studio-root .anchor{display:flex;align-items:center;gap:9px;background:var(--panel);border:1px solid var(--grid);border-radius:var(--r);padding:5px 10px;min-width:200px}.studio-root .anchor .tag{font-size:9px;letter-spacing:.03em;text-transform:uppercase;color:var(--ink-faint);font-family:var(--st-display)}.studio-root .anchor .name{font-family:var(--st-mono);font-weight:600;font-size:14px;display:flex;align-items:center;gap:8px}.studio-root .anchor .rev{font-size:10px;color:var(--phosphor);padding:0 5px;border-radius:var(--r);border:1px solid var(--phosphor-dim)}.studio-root .anchor .anchor-sel{font-family:var(--st-mono);font-weight:600;font-size:14px;color:var(--ink);background:var(--void);border:1px solid var(--grid);border-radius:var(--r);padding:2px 6px;cursor:pointer}.studio-root .anchor .anchor-sel:hover{border-color:var(--phosphor-dim)}.studio-root .anchor .anchor-sel:focus-visible{outline:2px solid var(--phosphor);outline-offset:1px}.studio-root .anchor .anchor-sel option{background:var(--panel);color:var(--ink)}.studio-root .studio-tabs{display:flex;gap:2px;margin-left:6px}.studio-root .studio-tabs a{text-decoration:none;color:var(--ink-dim);font-family:var(--st-display);font-size:12px;letter-spacing:.03em;text-transform:uppercase;padding:7px 13px;border-radius:var(--r);border:1px solid transparent}.studio-root .studio-tabs a.active{color:var(--phosphor);border-color:var(--grid);background:var(--panel)}.studio-root .spacer{flex:1}.studio-root .ready{display:flex;align-items:center;gap:14px;font-size:11px;color:var(--ink-dim);font-family:var(--st-mono)}.studio-root .ready .m{display:flex;align-items:center;gap:6px}.studio-root .ready .bar{width:64px;height:5px;background:var(--void);overflow:hidden;border:1px solid var(--grid)}.studio-root .ready .bar>i{display:block;height:100%;background:var(--phosphor)}.studio-root .check{color:var(--phosphor)}.studio-root .ready .m.bad,.studio-root .ready .m.bad .check{color:var(--amber)}.studio-root .publish{display:flex;align-items:center;gap:8px;background:var(--phosphor);color:#04231f;border:0;font-family:var(--st-display);font-weight:600;font-size:12px;letter-spacing:.03em;padding:7px 12px;border-radius:var(--r)}.studio-root .publish:hover{filter:brightness(1.06)}.studio-root .publish .badge{background:#04231f;color:var(--phosphor);font-family:var(--st-mono);font-size:11px;padding:0 6px;border-radius:var(--r);font-weight:600}.studio-root .studio-body{flex:1 0 auto;min-height:0;overflow:visible;position:relative}.studio-root .viewhead{display:flex;align-items:baseline;gap:12px;padding:0 0 8px}.studio-root .viewhead:not(.jobhead)>div:first-child,.studio-root .viewhead:not(.jobhead)>p{display:none}.studio-root .viewhead h1{font-size:18px}.studio-root .viewhead .eyebrow{font-family:var(--st-display);font-size:10px;letter-spacing:.06em;text-transform:uppercase;color:var(--ink-dim);display:block;margin-bottom:3px}.studio-root .viewhead p{margin:0;color:var(--ink-dim);font-size:12px;max-width:70ch}.studio-root .viewhead .hint{margin-left:auto;font-size:11px;color:var(--ink-faint);font-family:var(--st-mono);align-self:center}.studio-root .panel-hd{display:flex;align-items:center;gap:8px;padding:10px 13px;border:1px solid var(--grid);border-bottom:0;font-family:var(--st-display);font-size:11px;letter-spacing:.03em;text-transform:uppercase;color:var(--ink-dim)}.studio-root .panel-hd .count{margin-left:auto;font-family:var(--st-mono);color:var(--ink-faint);font-size:11px;letter-spacing:0;text-transform:none}.studio-root .btn{background:var(--panel-2);border:1px solid var(--grid);color:var(--ink);border-radius:var(--r);padding:6px 11px;font-size:11px;font-family:var(--st-display);letter-spacing:.03em;text-transform:uppercase}.studio-root .btn:hover{border-color:#3a4c56}.studio-root .btn:disabled{opacity:.45;cursor:default}.studio-root .btn:disabled:hover{border-color:var(--grid)}.studio-root .btn.ghost{background:transparent}.studio-root .btn.mini{padding:3px 8px;font-size:10px}.studio-root .btn.danger{border-color:var(--fault);color:var(--fault)}.studio-root .btn.danger:hover{background:#ff5a4d1f;border-color:var(--fault)}.studio-root .btn.danger:disabled{opacity:.6;cursor:default}.studio-root .assets .act{display:grid;grid-template-columns:84px 122px 64px;align-items:center;justify-content:end;gap:12px;white-space:nowrap}.studio-root .assets .act .save{grid-column:1}.studio-root .assets .act .mapjump{grid-column:2}.studio-root .assets .act .del-quiet{grid-column:3}.studio-root .btn.save{padding:7px 16px;font-size:12px}.studio-root .btn.del-quiet{border-color:transparent;color:var(--ink-faint)}.studio-root .btn.del-quiet:hover{border-color:transparent;background:transparent;color:var(--fault)}.studio-root .assets .prof-cell,.studio-root .assets .tr-cell{white-space:nowrap}.studio-root .assets .prof-cell{display:flex;align-items:center;gap:8px}.studio-root .assets .dfltdot{width:7px;height:7px;border-radius:50%;background:var(--amber);flex:none;display:inline-block}.studio-root .assets .prov.mismatch{color:var(--fault);border-color:var(--fault)}.studio-root .assets .prov.discovered{color:var(--phosphor);border-color:var(--phosphor-dim);margin-left:4px;cursor:default}.studio-root .asset-toolbar .disc-toggle{display:inline-flex;align-items:center;gap:5px;font-size:11px;color:var(--ink-faint);cursor:pointer;-webkit-user-select:none;user-select:none}.studio-root .asset-toolbar .disc-toggle .disc-toggle-cb{accent-color:var(--phosphor);cursor:pointer}.studio-root .disc-dl{display:grid;grid-template-columns:max-content 1fr;gap:4px 12px;font-size:12px;margin:0 0 12px}.studio-root .disc-dl dt{color:var(--ink-faint);font-size:10px;text-transform:uppercase;letter-spacing:.05em;align-self:start;padding-top:1px}.studio-root .disc-dl dd{margin:0;word-break:break-all}.studio-root .disc-tags{display:flex;flex-wrap:wrap;gap:4px}.studio-root .disc-tags .prov{font-size:8px}.studio-root .assets .tr-tag{color:var(--steel);font-size:11px}.studio-root .assets .btn.mqtt-edit.on{color:#37e0c8;border-color:#1e7a70}.studio-root .assets .btn.mqtt-edit .dfltdot.on{background:#37e0c8;margin-right:3px}.studio-root .compose-page{display:flex;flex-direction:column;min-height:100%}.studio-root .compose-page .compose{height:clamp(360px,58vh,640px)}.studio-root .compose-page .maptable{height:auto}.studio-root .map-section{border-top:1px solid var(--grid);margin-top:8px;padding-top:4px}.studio-root .section-hd{display:flex;align-items:baseline;gap:12px;padding:10px 16px 8px}.studio-root .section-hd h2{font-size:15px;margin:0}.studio-root .section-hd .eyebrow{font-family:var(--st-display);font-size:10px;letter-spacing:.06em;text-transform:uppercase;color:var(--ink-dim);display:block;margin-bottom:3px}.studio-root .section-hd p{margin:0;color:var(--ink-dim);font-size:12px;max-width:70ch}.studio-root .section-hd .hint{margin-left:auto;font-size:11px;color:var(--ink-faint);font-family:var(--st-mono);align-self:center}.studio-root .compose{display:grid;grid-template-columns:1fr 1fr;gap:12px;height:100%;padding:0 16px 16px}.studio-root .col{display:flex;flex-direction:column;min-height:0}.studio-root .compose-notice{display:flex;align-items:center;gap:10px;padding:7px 13px;border:1px solid var(--grid);border-top:0;background:#ffb02014;color:var(--amber);font-family:var(--st-mono);font-size:11px;line-height:1.4}.studio-root .compose-notice span{flex:1}.studio-root .compose-notice.conflict{background:#ff5a4d17;border-color:var(--fault);color:var(--fault)}.studio-root .panel-hd .hd-actions .gen-chip{color:var(--ink-dim);letter-spacing:0;text-transform:none}.studio-root .panel-hd .hd-actions .gen-chip:hover{color:var(--phosphor);border-color:var(--phosphor-dim)}.studio-root .editor-host{flex:1;min-height:0;border:1px solid var(--grid);border-top:0;overflow:hidden}.studio-root .editor-host oc-cm-editor,.studio-root .editor-host .cm-host{height:100%;border:0!important;border-radius:0!important}.studio-root .crumbs{display:flex;align-items:center;gap:7px;font-family:var(--st-mono);font-size:12.5px;letter-spacing:0;text-transform:none}.studio-root .panel-hd .hd-actions{margin-left:auto;display:flex;align-items:center;gap:8px}.studio-root .panel-hd .hd-actions .count{margin-left:0}.studio-root .crumbs .cr{color:var(--ink-dim);cursor:pointer;background:none;border:0;padding:0;font:inherit}.studio-root .crumbs .cr:hover{color:var(--ink)}.studio-root .crumbs .cr.cur{color:var(--phosphor);cursor:default}.studio-root .crumbs .sep{color:var(--ink-faint)}.studio-root .crumbs .chip.ro{color:var(--amber);border:1px solid var(--amber);border-radius:var(--r);padding:1px 6px;font-family:var(--st-mono);font-size:10px;text-transform:uppercase;letter-spacing:.06em;white-space:nowrap}.studio-root .sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.studio-root .tree{flex:1;min-height:0;overflow:auto;padding:10px 6px;background:var(--panel);border:1px solid var(--grid);border-top:0}.studio-root .node{padding:3px 8px;border-radius:var(--r);display:flex;align-items:center;gap:8px}.studio-root .node:hover{background:var(--panel-2)}.studio-root .node .noderow{flex:1;display:flex;align-items:center;gap:8px;min-width:0;border:none;background:transparent;padding:0;margin:0;color:inherit;font:inherit;text-align:left;cursor:pointer}.studio-root .node .noderow:focus-visible{outline:1px solid var(--phosphor);outline-offset:1px;border-radius:0}.studio-root .node.sel{background:#37e0c814;box-shadow:inset 0 0 0 1px var(--phosphor-dim)}.studio-root .node .twist{width:12px;color:var(--ink-faint);font-family:var(--st-mono);flex:none}.studio-root .node button.twist.toggle{cursor:pointer;border:none;background:transparent;padding:0;color:var(--ink-faint);font-family:var(--st-mono);font-size:inherit;line-height:1;border-radius:0}.studio-root .node button.twist.toggle:hover{color:var(--phosphor);background:var(--panel-2)}.studio-root .node button.twist.toggle:focus-visible{outline:1px solid var(--phosphor);outline-offset:1px}.studio-root .node .dot{width:8px;height:8px;border-radius:0;flex:none}.studio-root .dot.d-own{background:var(--ink-dim)}.studio-root .dot.d-inh{background:var(--steel)}.studio-root .node .nm{font-family:var(--st-mono);font-size:12px}.studio-root .node.openable .nm{text-decoration:underline dotted var(--ink-faint);text-underline-offset:3px}.studio-root .node .meta{margin-left:auto;font-family:var(--st-mono);font-size:10px;color:var(--ink-faint);display:flex;gap:8px;align-items:center}.studio-root .prov{font-size:9px;font-family:var(--st-display);letter-spacing:.03em;text-transform:uppercase;padding:1px 6px;border-radius:0;border:1px solid}.studio-root .prov.own{color:var(--ink);border-color:var(--grid)}.studio-root .prov.inh{color:var(--steel);border-color:var(--steel)}.studio-root .children{margin-left:14px;border-left:1px solid var(--grid-soft);padding-left:4px}.studio-root .fileic{color:var(--ink-faint);font-size:11px}.studio-root .maptable{height:100%;overflow:auto;margin:0 16px 16px;border:1px solid var(--grid);background:var(--panel)}.studio-root table.maptbl{width:100%;border-collapse:separate;border-spacing:0;font-family:var(--st-mono);font-size:12px}.studio-root .maptbl th,.studio-root .maptbl td{padding:6px 10px;text-align:left;white-space:nowrap;border-bottom:1px solid var(--grid-soft)}.studio-root .maptbl thead th{position:sticky;background:var(--void-2);font-family:var(--st-display);text-transform:uppercase;color:var(--ink-dim);border-bottom:1px solid var(--grid);z-index:2}.studio-root .maptbl thead tr:first-child th{top:0;height:22px;font-size:9px;letter-spacing:.06em;color:var(--ink-faint)}.studio-root .maptbl thead tr.sub th{top:22px;font-size:10px;letter-spacing:.03em}.studio-root .maptbl tbody tr:hover{background:var(--panel-2)}.studio-root .maptbl .gsep{border-left:1px solid var(--grid)}.studio-root .maptbl .comp,.studio-root .maptbl .unit,.studio-root .maptbl .proto,.studio-root .maptbl .dtype{color:var(--ink-dim)}.studio-root .maptbl .field{color:var(--ink)}.studio-root .maptbl .rq{color:var(--amber)}.studio-root .maptbl td.num{text-align:right}.studio-root .maptbl tr.req .field{color:var(--amber)}.studio-root .maptbl tr.orphan .field{color:var(--fault);text-decoration:line-through}.studio-root .maptbl .orphaned{color:var(--fault)}.studio-root .orphan-banner{border-top:1px solid var(--grid);margin-bottom:8px;background:#ff5a4d17;border-color:var(--fault);color:var(--fault)}.studio-root .refs-notice{flex-direction:column;align-items:stretch}.studio-root .refs-notice ul{margin:4px 0 0;padding-left:16px}.studio-root .maptbl .sdt{display:inline-block;width:7px;height:7px;border-radius:50%;margin-right:6px;vertical-align:middle}.studio-root .maptbl select.pick,.studio-root .maptbl select.ed,.studio-root .maptbl input.ed{background:var(--void);border:1px solid var(--grid);color:var(--ink);font-family:var(--st-mono);font-size:11px;padding:2px 4px;border-radius:var(--r)}.studio-root .maptbl select.pick,.studio-root .maptbl select.ed{cursor:pointer}.studio-root .maptbl select.pick:hover,.studio-root .maptbl select.ed:hover{border-color:var(--phosphor-dim)}.studio-root .maptbl select.pick option,.studio-root .maptbl select.ed option{background:var(--panel);color:var(--ink)}.studio-root .maptbl input.ed{width:52px;text-align:right}.studio-root .maptbl .xb{background:transparent;border:0;color:var(--ink-faint);font-size:12px;padding:2px 6px;cursor:pointer}.studio-root .maptbl .xb:hover{color:var(--fault)}.studio-root .maptbl input.ed.inh{color:var(--steel)}.studio-root .maptbl .src .prov.inh{margin-left:6px;vertical-align:middle}.studio-root .maptbl .src .conn-tag{margin-left:6px;vertical-align:middle;font-size:9px;padding:1px 6px;border-radius:0;border:1px solid var(--amber);color:var(--amber);text-transform:uppercase;letter-spacing:.03em}.studio-root .maptbl tr.grp td{background:var(--void-2);border-top:1px solid var(--grid);border-bottom:1px solid var(--grid);padding:7px 12px}.studio-root .maptbl tbody tr.grp:first-child td{border-top:0}.studio-root .maptbl tbody tr.grp:hover{background:var(--void-2)}.studio-root .maptbl tr.grp .grp-hd{display:flex;align-items:baseline;gap:8px}.studio-root .maptbl tr.grp .slot{color:var(--ink);font-size:12px;letter-spacing:.02em}.studio-root .maptbl tr.grp .schema{color:var(--ink-faint);font-size:11px}.studio-root .maptbl tr.grp .schema:before{content:"\2192  "}.studio-root .maptbl tr.grp .count{margin-left:auto;font-size:11px;color:var(--amber)}.studio-root .maptbl tr.grp .count.on{color:var(--phosphor)}.studio-root .profile-rail{display:flex;align-items:center;flex-wrap:wrap;gap:8px;padding:0 16px 10px}.studio-root .profile-rail .rail-del{margin-left:auto}.studio-root .chip--profile{display:inline-flex;align-items:center;gap:6px;background:var(--void);border:1px solid var(--grid);color:var(--ink-dim);font-family:var(--st-mono);font-size:11px;padding:4px 11px;border-radius:0}.studio-root .chip--profile:hover{border-color:var(--phosphor-dim);color:var(--ink)}.studio-root .chip--profile:focus-visible{outline:2px solid var(--phosphor);outline-offset:1px}.studio-root .chip--profile.on{background:var(--panel-2);color:var(--phosphor);border-color:var(--phosphor-dim)}.studio-root .chip--profile.add{border-style:dashed;color:var(--ink-faint);font-family:var(--st-display);font-size:10px;letter-spacing:.03em;text-transform:uppercase}.studio-root .chip--profile.add:hover{border-color:var(--phosphor-dim);color:var(--phosphor)}.studio-root .tag-translator{font-family:var(--st-mono);font-size:9px;letter-spacing:.03em;text-transform:uppercase;color:var(--ink-faint);border:1px solid var(--grid);border-radius:var(--r);padding:0 4px}.studio-root .chip--profile.on .tag-translator{color:var(--phosphor);border-color:var(--phosphor-dim)}.studio-root .serve{padding:0 16px 16px}.studio-root .seg{display:inline-flex;background:var(--void-2);border:1px solid var(--grid);border-radius:var(--r);padding:2px;margin-left:auto}.studio-root .seg button{border:0;background:transparent;color:var(--ink-dim);font-family:var(--st-display);font-size:10px;letter-spacing:.03em;text-transform:uppercase;padding:5px 11px;border-radius:var(--r)}.studio-root .seg button.on{background:var(--panel-2);color:var(--phosphor)}.studio-root .rack{display:grid;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:14px}.studio-root .collector{background:var(--panel);border:1px solid var(--grid);border-radius:var(--r);padding:14px;position:relative;overflow:hidden}.studio-root .collector:before{content:"";position:absolute;left:0;top:0;bottom:0;width:3px}.studio-root .collector.healthy:before{background:var(--phosphor)}.studio-root .collector.degraded:before{background:var(--amber)}.studio-root .collector.down:before{background:var(--fault)}.studio-root .collector.scaled_down:before{background:var(--ink-faint)}.studio-root .collector .chd{display:flex;align-items:center;gap:9px;margin-bottom:3px}.studio-root .collector .cname{font-family:var(--st-mono);font-weight:600;font-size:14px}.studio-root .collector .kind{font-family:var(--st-display);font-size:9px;letter-spacing:.03em;text-transform:uppercase;color:var(--ink-dim);border:1px solid var(--grid);padding:1px 7px;border-radius:0;margin-left:auto}.studio-root .sdot{width:9px;height:9px;border-radius:50%;flex:none}.studio-root .sdot.healthy{background:var(--phosphor)}.studio-root .sdot.degraded{background:var(--amber)}.studio-root .sdot.down{background:var(--fault)}.studio-root .sdot.scaled_down{background:var(--ink-faint)}.studio-root .collector .srow{display:flex;justify-content:space-between;font-family:var(--st-mono);font-size:11px;color:var(--ink-dim);padding:5px 0;border-top:1px solid var(--grid-soft)}.studio-root .collector .srow b{color:var(--ink);font-weight:500}.studio-root .collector .srow .link{color:var(--phosphor);cursor:pointer}.studio-root .collector .cfoot{display:flex;gap:6px;margin-top:11px}.studio-root .addcol{border:1.5px dashed var(--grid);border-radius:var(--r);display:grid;place-items:center;min-height:160px;color:var(--ink-faint);font-family:var(--st-display);letter-spacing:.03em;text-transform:uppercase;font-size:12px;cursor:pointer}.studio-root .addcol:hover{border-color:var(--phosphor-dim);color:var(--phosphor)}.studio-root table.matrix{width:100%;border-collapse:separate;border-spacing:0;font-family:var(--st-mono);font-size:12px}.studio-root .matrix th,.studio-root .matrix td{padding:11px 12px;text-align:left;border-bottom:1px solid var(--grid)}.studio-root .matrix thead th{font-family:var(--st-display);font-size:10px;letter-spacing:.03em;text-transform:uppercase;color:var(--ink-dim)}.studio-root .matrix tbody tr:hover{background:var(--panel)}.studio-root .matrix .site{color:var(--ink);font-weight:600}.studio-root .matrix tbody tr.sel{background:var(--panel-2)}.studio-root .sitesel{background:none;border:0;padding:0;color:inherit;font:inherit;cursor:pointer;text-align:left}.studio-root .sitesel[aria-pressed=true],.studio-root .sitesel:hover{color:var(--phosphor)}.studio-root .sitesel:focus-visible{outline:2px solid var(--phosphor);outline-offset:1px}.studio-root .rack-head{display:flex;align-items:baseline;gap:12px;padding:16px 16px 4px}.studio-root .rack-head h2{font-size:15px}.studio-root .maptbl .sub2{color:var(--ink-faint);font-weight:400;text-transform:none;letter-spacing:0}.studio-root .site-pick{display:inline-flex;align-items:center;gap:8px;font-family:var(--st-display);font-size:10px;letter-spacing:.03em;text-transform:uppercase;color:var(--ink-dim)}.studio-root .site-pick select{font-family:var(--st-mono);font-size:13px;text-transform:none;letter-spacing:0;color:var(--ink);background:var(--void);border:1px solid var(--grid);border-radius:var(--r);padding:4px 8px;cursor:pointer}.studio-root .site-pick select:hover{border-color:var(--phosphor-dim)}.studio-root .site-pick select:focus-visible{outline:2px solid var(--phosphor);outline-offset:1px}.studio-root .maptable .empty,.studio-root .serve .empty,.studio-root .matrix td.empty{color:var(--ink-faint);font-family:var(--st-mono);font-size:12px;padding:18px 12px;text-align:center}.studio-root .collector .srow b.note{color:var(--amber);font-weight:500;font-family:var(--st-mono);font-size:11px;max-width:60%;text-align:right;overflow-wrap:anywhere}.studio-root .cell{display:inline-flex;align-items:center;gap:7px}.studio-root .vchip{font-family:var(--st-mono);font-size:11px;padding:2px 8px;border-radius:0;border:1px solid}.studio-root .vchip.sync{color:var(--phosphor);border-color:var(--phosphor-dim)}.studio-root .vchip.ahead{color:var(--amber);border-color:var(--amber)}.studio-root .vchip.behind{color:var(--fault);border-color:var(--fault)}.studio-root .vchip.na{color:var(--ink-faint);border-color:var(--grid)}.studio-root .viewhead .btn.newjob{margin-left:auto}.studio-root .jobs .joblink{color:var(--phosphor);text-decoration:none}.studio-root .jobs .joblink:hover{text-decoration:underline}.studio-root .jobs .joblink:focus-visible{outline:2px solid var(--phosphor);outline-offset:1px}.studio-root .jobstat{display:inline-flex;align-items:center;gap:7px;font-family:var(--st-mono);font-size:11px;letter-spacing:.04em;color:var(--ink-faint)}.studio-root .jobstat.on{color:var(--phosphor)}.studio-root .jobs .spec{font-family:var(--st-mono);font-size:11px}.studio-root .jobs .spec.ok{color:var(--phosphor)}.studio-root .jobs .spec.warn{color:var(--amber)}.studio-root .jobs .spec.fault{color:var(--fault)}.studio-root .jobs tr.grp .grp-hd.unbtn{display:inline-flex;align-items:center;gap:8px;border:none;background:transparent;padding:0;cursor:pointer;color:inherit;font:inherit}.studio-root .jobs tr.grp .grp-hd.unbtn:hover .twist{color:var(--phosphor)}.studio-root .jobs tr.grp .grp-hd.unbtn:focus-visible{outline:1px solid var(--phosphor);outline-offset:2px}.studio-root .jobs tr.grp .twist{display:inline-block;color:var(--ink-faint);font-family:var(--st-mono);transition:transform .12s ease}.studio-root .jobs tr.grp .twist.open{transform:rotate(90deg)}.studio-root .jobhead{flex-wrap:wrap}.studio-root .jobhead .job-meta{display:flex;align-items:center;gap:16px;align-self:center}.studio-root .jobhead .metabit{font-family:var(--st-display);font-size:10px;letter-spacing:.03em;text-transform:uppercase;color:var(--ink-faint)}.studio-root .jobhead .metabit b{color:var(--ink);text-transform:none;letter-spacing:0;margin-left:5px}.studio-root .jobhead .job-lifecycle{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.studio-root .jobhead .start-wrap{display:flex;align-items:center;gap:8px}.studio-root .jobhead .start-blocked{font-family:var(--st-mono);font-size:11px;color:var(--amber);max-width:320px}.studio-root .studio-modal .stage-warn{font-family:var(--st-mono);font-size:12px;line-height:1.5;color:var(--amber);margin:0 0 18px}.studio-root .jobhead .backlink{margin-left:auto;align-self:center}.studio-root .jobhead .jobstat .sdot{background:var(--ink-faint)}.studio-root .jobhead .jobstat .sdot.healthy{background:var(--phosphor)}.studio-root .fault-banner{display:flex;align-items:center;gap:16px;margin:0 16px 14px;padding:12px 14px;border:1px solid var(--grid);border-left:3px solid var(--amber);background:var(--panel);border-radius:var(--r);font-size:13px;color:var(--ink-dim)}.studio-root .fault-banner b{color:var(--ink)}.studio-root .fault-banner.err{border-left-color:var(--fault)}.studio-root .fault-banner button{margin-left:auto;flex:none}.studio-root .composer,.studio-root .roles{padding:0 16px 8px}.studio-root .composer-head{display:flex;align-items:baseline;gap:12px;padding:4px 0 10px}.studio-root .composer-head .eyebrow{font-family:var(--st-display);font-size:10px;letter-spacing:.06em;text-transform:uppercase;color:var(--ink-dim);display:block;margin-bottom:3px}.studio-root .composer-head p{margin:0;color:var(--ink-dim);font-size:12px}.studio-root .baseset-pick{margin-left:auto;display:flex;align-items:center;gap:8px;font-family:var(--st-display);font-size:10px;letter-spacing:.03em;text-transform:uppercase;color:var(--ink-faint)}.studio-root .baseset-pick select{font-family:var(--st-mono);font-size:12px;color:var(--ink);background:var(--void);border:1px solid var(--grid);border-radius:var(--r);padding:4px 7px;text-transform:none;letter-spacing:0}.studio-root .baseset-pick select:hover{border-color:var(--phosphor-dim)}.studio-root .baseset-pick select option{background:var(--panel)}.studio-root .publish.review{align-self:center}.studio-root .jobchan .prov{font-family:var(--st-display)}.studio-root .jobchan .prov.base{color:var(--steel);border-color:var(--steel)}.studio-root .jobchan .prov.override{color:var(--amber);border-color:var(--amber)}.studio-root .jobchan .prov.added{color:var(--phosphor);border-color:var(--phosphor-dim)}.studio-root .jobchan .prov.removed{color:var(--fault);border-color:var(--fault)}.studio-root .jobchan tr.removed td{opacity:.75}.studio-root .jobchan .struck{text-decoration:line-through;color:var(--ink-faint)}.studio-root .jobchan .act{white-space:nowrap}.studio-root .inlinewarn{display:flex;align-items:center;gap:10px;margin:8px 0 0;padding:8px 12px;font-size:12px;background:#ffb02012;border:1px solid var(--grid);border-left:3px solid var(--amber);border-radius:var(--r);color:var(--amber)}.studio-root .inlinewarn .ic{font-family:var(--st-mono)}.studio-root .add-channel{margin-top:12px}.studio-root .ch-editor{margin-top:12px;padding:14px;border:1px solid var(--grid);background:var(--panel);border-radius:var(--r)}.studio-root .che-title{font-family:var(--st-display);font-size:11px;letter-spacing:.03em;text-transform:uppercase;color:var(--ink-dim);margin-bottom:12px}.studio-root .che-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:12px;margin-bottom:14px}.studio-root .che-grid label{display:flex;flex-direction:column;gap:5px;font-family:var(--st-display);font-size:10px;letter-spacing:.03em;text-transform:uppercase;color:var(--ink-faint)}.studio-root .che-grid input,.studio-root .che-grid select{background:var(--void);border:1px solid var(--grid);color:var(--ink);border-radius:var(--r);padding:6px 8px;font-size:12px;font-family:var(--st-sans);text-transform:none;letter-spacing:0}.studio-root .che-grid input.mono,.studio-root .che-grid select.mono{font-family:var(--st-mono)}.studio-root .che-grid input:focus-visible,.studio-root .che-grid select:focus-visible{outline:2px solid var(--phosphor);outline-offset:1px}.studio-root .che-grid input[readonly],.studio-root .che-grid select[readonly]{color:var(--ink-dim)}.studio-root .che-grid input option,.studio-root .che-grid select option{background:var(--panel)}.studio-root .ch-editor .modal-actions{display:flex;justify-content:flex-end;gap:10px}.studio-root .plural-hint{margin:0 0 12px;font-size:12px;color:var(--ink-faint)}.studio-root .role-list{display:flex;flex-direction:column;gap:8px}.studio-root .role-row{display:flex;gap:16px;padding:12px 14px;border:1px solid var(--grid);background:var(--panel);border-radius:var(--r)}.studio-root .role-row.unbound{border-left:3px solid var(--amber)}.studio-root .role-name{flex:none;width:180px;display:flex;align-items:center;gap:8px;font-size:13px}.studio-root .role-assets{display:flex;flex-wrap:wrap;gap:10px 16px;align-items:center}.studio-root .asset-chk{display:inline-flex;align-items:center;gap:6px;font-size:12px;color:var(--ink)}.studio-root .asset-chk input{accent-color:var(--phosphor);margin:0}.studio-root .site-badge{font-family:var(--st-mono);font-size:9px;letter-spacing:.03em;padding:1px 5px;border-radius:0;border:1px solid var(--grid);color:var(--ink-faint)}.studio-root .site-badge.mismatch,.studio-root .prov.unbound{color:var(--amber);border-color:var(--amber)}.studio-root .site-chips{display:inline-flex;flex-wrap:wrap;gap:4px;vertical-align:middle}.studio-root .site-multi,.studio-root .site-equip{display:flex;flex-wrap:wrap;gap:8px 16px;align-items:center}.studio-root .site-detail{border:1px solid var(--grid);border-radius:0;padding:10px 12px;gap:10px}.studio-root .site-detail-hd{font-size:12px;color:var(--ink)}.studio-root .site-sub{display:flex;flex-direction:column;gap:6px}.studio-root .sub-label{font-family:Archivo,sans-serif;font-size:10px;letter-spacing:.03em;text-transform:uppercase;color:#8698a2}.studio-root .chip-input{display:flex;flex-wrap:wrap;align-items:center;gap:6px}.studio-root .chip-input .chip-add{flex:1 1 120px;min-width:120px}.studio-root .chip--well{display:inline-flex;align-items:center;gap:4px;font-family:var(--st-mono);font-size:11px;padding:2px 6px;border-radius:0;border:1px solid var(--grid);color:var(--ink)}.studio-root .chip--well .chip-x{background:none;border:0;color:var(--ink-faint);cursor:pointer;padding:0 2px;line-height:1}.studio-root .chip--well .chip-x:hover{color:var(--amber)}.studio-root .site-cards{display:flex;flex-wrap:wrap;gap:12px}.studio-root .site-card{border:1px solid var(--grid);border-radius:0;padding:10px 12px;display:flex;flex-direction:column;gap:8px;min-width:200px}.studio-root .site-card-row{display:flex;flex-wrap:wrap;align-items:center;gap:6px}.studio-root .equip-chip{font-size:11px;padding:1px 6px;border-radius:0;border:1px solid var(--grid);color:var(--ink)}.studio-scrim{position:fixed;inset:0;background:#0009;z-index:40;border:0;padding:0;cursor:pointer}.studio-drawer{position:fixed;top:0;right:0;bottom:0;width:min(560px,92vw);background:#151f24;border-left:1px solid #243138;z-index:41;display:flex;flex-direction:column;color:#e8eff1;font-family:Overpass,system-ui,sans-serif}.studio-modal{position:fixed;top:50%;left:50%;transform:translate(-50%,-50%);width:min(440px,92vw);z-index:42;background:#151f24;border:1px solid #243138;border-radius:0;box-shadow:0 18px 48px #000a;padding:22px 24px 18px;color:#e8eff1;font-family:Overpass,system-ui,sans-serif}.studio-modal h2{margin:0 0 8px;font-family:Archivo,sans-serif;font-size:16px;font-weight:600}.studio-modal p{margin:0 0 18px;font-size:13px;line-height:1.5;color:#b7c4c9}.studio-modal b{color:#e8eff1;font-family:Spline Sans Mono,ui-monospace,monospace}.studio-modal .modal-actions{display:flex;justify-content:flex-end;gap:10px}.studio-modal .np-field{display:flex;flex-direction:column;gap:6px;margin:0 0 14px;border:0;padding:0}.studio-modal label,.studio-modal legend{font-family:Archivo,sans-serif;font-size:10px;letter-spacing:.03em;text-transform:uppercase;color:#8698a2;padding:0}.studio-modal .np-in{background:#0a0f12;border:1px solid #243138;color:#e8eff1;border-radius:0;padding:7px 9px;font-size:13px;font-family:Overpass,system-ui,sans-serif}.studio-modal .np-in.mono{font-family:Spline Sans Mono,ui-monospace,monospace}.studio-modal .np-in:hover{border-color:#1e7a70}.studio-modal .np-in:focus-visible{outline:2px solid #37e0c8;outline-offset:1px}.studio-modal .np-in option{background:#151f24;color:#e8eff1}.studio-modal .np-preview{font-family:Spline Sans Mono,ui-monospace,monospace;font-size:12px;color:#54646d}.studio-modal .np-preview b{color:#37e0c8}.studio-modal .np-modes{gap:8px}.studio-modal .np-radio{display:flex;align-items:center;gap:8px;text-transform:none;letter-spacing:0;font-family:Overpass,system-ui,sans-serif;font-size:13px;color:#b7c4c9}.studio-modal .np-radio input{accent-color:#37e0c8;margin:0}.studio-modal .np-err{color:#ff5a4d;font-family:Spline Sans Mono,ui-monospace,monospace;font-size:12px;margin:0 0 14px}.studio-modal .nf-guide{font-size:11px;line-height:1.45;color:#6d7d86}.studio-modal .nf-guide .mono{font-family:Spline Sans Mono,ui-monospace,monospace;color:#8698a2}.studio-modal .nf-hint{font-family:Spline Sans Mono,ui-monospace,monospace;font-size:11px;color:#d9a441}.studio-modal.wide{width:min(880px,94vw);max-height:90vh;overflow:auto}.studio-modal.wide .maptable{overflow-x:auto}.studio-modal.wide table.maptbl{width:100%}.studio-modal.mqtt{width:min(520px,94vw);max-height:90vh;overflow-y:auto}.studio-modal.mqtt textarea.np-in{resize:vertical;min-height:42px}.studio-modal.mqtt .sub2{color:#54646d;text-transform:none;letter-spacing:0;font-size:10px}.studio-modal.mqtt .mqtt-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:10px}.studio-modal.mqtt .mqtt-grid .np-field{margin-bottom:14px}.studio-modal.mqtt .mqtt-tls{border:1px solid #243138;border-radius:0;padding:8px 12px;margin:0 0 16px}.studio-modal.mqtt .mqtt-tls summary{cursor:pointer;font-family:Archivo,sans-serif;font-size:10px;letter-spacing:.03em;text-transform:uppercase;color:#8698a2}.studio-modal.mqtt .mqtt-tls>.np-field:first-of-type{margin-top:12px}.studio-modal.history{width:min(460px,92vw)}.studio-modal.history .verlist{list-style:none;margin:0 0 18px;padding:0;max-height:320px;overflow-y:auto;border:1px solid #243138;border-radius:0}.studio-modal.history .ver{display:flex;align-items:center;gap:10px;padding:8px 12px;border-bottom:1px solid #1b262c;font-size:13px}.studio-modal.history .ver:last-child{border-bottom:0}.studio-modal.history .ver .gen{font-family:Spline Sans Mono,ui-monospace,monospace;color:#e8eff1}.studio-modal.history .ver.cur .gen{color:#37e0c8}.studio-modal.history .ver .cur-mark{color:#37e0c8;font-size:11px;letter-spacing:.04em}.studio-modal.history .ver .btn,.studio-modal.history .ver .cur-mark{margin-left:auto}.studio-modal.history .ver.empty{color:#6d7d86;font-style:italic}.studio-modal.jobreview{width:min(520px,92vw)}.studio-modal.jobreview .checklist{background:var(--void-2, #0a0f12);border:1px solid #243138;border-radius:0;padding:6px 14px;margin-bottom:14px}.studio-modal.jobreview .cli{display:flex;align-items:center;gap:10px;padding:8px 0;border-bottom:1px solid #1c282e;font-size:12px;color:#b7c4c9}.studio-modal.jobreview .cli:last-child{border-bottom:0}.studio-modal.jobreview .cli .ic{width:18px;height:18px;border-radius:50%;display:grid;place-items:center;font-size:11px;flex:none;font-family:Spline Sans Mono,ui-monospace,monospace}.studio-modal.jobreview .cli.chg-remove .ic{background:#ff5a4d24;color:#ff5a4d}.studio-modal.jobreview .cli.chg-add .ic,.studio-modal.jobreview .cli.chg-restore .ic{background:#37e0c824;color:#37e0c8}.studio-modal.jobreview .cli.chg-set .ic,.studio-modal.jobreview .cli.chg-override .ic,.studio-modal.jobreview .cli.chg-role .ic{background:#5c9ad624;color:#5c9ad6}.studio-modal.jobreview .cli.warn .ic{background:#ffb02024;color:#ffb020}.studio-modal.jobreview .cli .sub{margin-left:auto;font-family:Spline Sans Mono,ui-monospace,monospace;font-size:11px;color:#54646d}.studio-modal.jobreview .confirm-step{display:flex;flex-direction:column;gap:10px;outline:none;border-top:1px solid #243138;padding-top:14px}.studio-modal.jobreview .confirm-msg{margin:0;font-family:Spline Sans Mono,ui-monospace,monospace;font-size:12px;line-height:1.5;color:#ffb020}.studio-modal.jobreview .confirm-actions{display:flex;gap:10px;justify-content:flex-end}.studio-modal.jobreview .btn-cancel{background:transparent;border:1px solid #243138;color:#e8eff1;border-radius:0;padding:8px 12px;cursor:pointer}.studio-drawer .dh{padding:18px 20px;border-bottom:1px solid #243138}.studio-drawer .eyebrow{font-family:Archivo,sans-serif;font-size:10px;letter-spacing:.06em;text-transform:uppercase;color:#37e0c8}.studio-drawer h2{font-family:Archivo,sans-serif;font-size:19px;margin:5px 0 0}.studio-drawer .tgt{font-family:Spline Sans Mono,monospace;font-size:12px;color:#8698a2;margin-top:4px}.studio-drawer .tgt b{color:#ffb020}.studio-drawer .tgt .mono{color:#e8eff1}.studio-drawer .tgt-base{margin-top:2px;color:#54646d}.studio-drawer .tgt-base .mono{color:#8698a2}.studio-drawer .db{flex:1;overflow:auto;padding:18px 20px}.studio-drawer .checklist{background:#0a0f12;border:1px solid #243138;border-radius:0;padding:6px 14px;margin-bottom:18px}.studio-drawer .cli{display:flex;align-items:center;gap:10px;padding:9px 0;border-bottom:1px solid #1c282e;font-size:12px}.studio-drawer .cli:last-child{border-bottom:0}.studio-drawer .cli .ic{width:18px;height:18px;border-radius:50%;display:grid;place-items:center;font-size:11px;flex:none}.studio-drawer .cli.ok .ic{background:#37e0c824;color:#37e0c8}.studio-drawer .cli.warn .ic{background:#ffb02024;color:#ffb020}.studio-drawer .cli .sub{margin-left:auto;font-family:Spline Sans Mono,monospace;font-size:11px;color:#54646d}.studio-drawer .difgrp{margin-bottom:16px}.studio-drawer .difgrp .gt{font-family:Archivo,sans-serif;font-size:11px;letter-spacing:.03em;text-transform:uppercase;color:#8698a2;display:flex;gap:8px;margin-bottom:7px}.studio-drawer .difgrp .gt .n{font-family:Spline Sans Mono,monospace;color:#54646d;text-transform:none}.studio-drawer .diff{background:#0a0f12;border:1px solid #243138;border-radius:0;overflow:hidden;font-family:Spline Sans Mono,monospace;font-size:12px}.studio-drawer .dl{display:flex;padding:2px 12px;white-space:pre}.studio-drawer .dl.add{background:#37e0c812;color:#9fe8d6}.studio-drawer .dl.del{background:#ff5a4d12;color:#f0a49c}.studio-drawer .dl.ctx{color:#8698a2}.studio-drawer .dl .g{width:14px;flex:none;color:#54646d}.studio-drawer .df{padding:16px 20px;border-top:1px solid #243138;display:flex;gap:10px;align-items:center}.studio-drawer .df .publish{margin-left:auto;display:flex;align-items:center;gap:8px;background:#37e0c8;color:#04231f;border:0;font-family:Archivo,sans-serif;font-weight:600;font-size:12px;padding:9px 14px;border-radius:0;cursor:pointer}.studio-drawer .df .publish[disabled]{opacity:.5;cursor:not-allowed}.studio-drawer .df .publish.incomplete{background:var(--amber);color:#2a1c00}.studio-drawer .df .unmapped-note{font-family:var(--st-mono);font-size:11px;color:var(--amber)}.studio-drawer .df .published-summary{font-family:var(--st-mono);font-size:11px;color:var(--ink-dim)}.studio-drawer .df .confirm-step{display:flex;flex-direction:column;gap:10px;width:100%;outline:none}.studio-drawer .df .confirm-step .confirm-msg{margin:0;font-family:var(--st-mono);font-size:12px;line-height:1.5;color:var(--amber)}.studio-drawer .df .confirm-step .confirm-msg code{font-family:var(--st-mono);color:var(--ink);background:var(--void-2);border:1px solid var(--grid);border-radius:0;padding:0 4px}.studio-drawer .df .confirm-step .confirm-actions{display:flex;gap:10px;align-items:center;justify-content:flex-end}.studio-drawer .df .confirm-step .btn-cancel{background:transparent;border:1px solid var(--grid);color:var(--ink);border-radius:0;padding:8px 12px;cursor:pointer}.studio-drawer .df .confirm-step .publish.incomplete{margin-left:0}:root{--ff-white: #ffffff;--ff-black: #000000;--ff-gray-0: #ffffff;--ff-gray-25: #fcfcfc;--ff-gray-50: #f8f8f7;--ff-gray-75: #f2f2f0;--ff-gray-100: #e9e9e6;--ff-gray-150: #dcdcd7;--ff-gray-200: #c9c9c1;--ff-gray-300: #afafa5;--ff-gray-400: #8d8d81;--ff-gray-500: #69695f;--ff-gray-600: #505048;--ff-gray-700: #3c3c36;--ff-gray-800: #272722;--ff-gray-900: #1b1b18;--ff-gray-950: #141412;--ff-gray-1000: #0f0f0d;--ff-alpha-black-04: rgba(15, 15, 13, .04);--ff-alpha-black-06: rgba(15, 15, 13, .06);--ff-alpha-black-08: rgba(15, 15, 13, .08);--ff-alpha-black-10: rgba(15, 15, 13, .1);--ff-alpha-black-12: rgba(15, 15, 13, .12);--ff-alpha-black-15: rgba(15, 15, 13, .15);--ff-alpha-black-20: rgba(15, 15, 13, .2);--ff-alpha-black-30: rgba(15, 15, 13, .3);--ff-alpha-black-40: rgba(15, 15, 13, .4);--ff-alpha-black-60: rgba(15, 15, 13, .6);--ff-alpha-white-04: rgba(255, 255, 255, .04);--ff-alpha-white-06: rgba(255, 255, 255, .06);--ff-alpha-white-08: rgba(255, 255, 255, .08);--ff-alpha-white-10: rgba(255, 255, 255, .1);--ff-alpha-white-12: rgba(255, 255, 255, .12);--ff-alpha-white-15: rgba(255, 255, 255, .15);--ff-alpha-white-20: rgba(255, 255, 255, .2);--ff-alpha-white-30: rgba(255, 255, 255, .3);--ff-alpha-white-40: rgba(255, 255, 255, .4);--ff-alpha-white-60: rgba(255, 255, 255, .6);--ff-blue-100: #e8f2ff;--ff-blue-200: #bad8ff;--ff-blue-300: #7db7ff;--ff-blue-400: #4176ff;--ff-blue-500: #2759db;--ff-blue-600: #1b3f9e;--ff-green-100: #e7f7ef;--ff-green-300: #71c795;--ff-green-400: #2b9b5f;--ff-green-500: #1e7748;--ff-yellow-100: #fff5de;--ff-yellow-300: #e1b354;--ff-yellow-400: #bb8121;--ff-yellow-500: #916112;--ff-red-100: #feeceb;--ff-red-300: #e48d85;--ff-red-400: #c55245;--ff-red-500: #9e3a2f;--ff-radius-4: 4px;--ff-radius-6: 6px;--ff-radius-pill: 999px;--ff-font-family-sans: "Inter", ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";--ff-font-family-mono: ui-monospace, "SFMono-Regular", "Menlo", "Monaco", "Consolas", "Liberation Mono", "Courier New", monospace;--ff-font-size-xs: 12px;--ff-font-size-sm: 14px;--ff-font-size-md: 16px;--ff-font-size-lg: 18px;--ff-shadow-1: 0 1px 2px rgba(15, 15, 13, .05), 0 8px 20px rgba(15, 15, 13, .04);--ff-shadow-2: 0 10px 28px rgba(15, 15, 13, .08), 0 3px 10px rgba(15, 15, 13, .05);--ff-shadow-3: 0 18px 48px rgba(15, 15, 13, .12), 0 6px 16px rgba(15, 15, 13, .08)}:root{--ff-color-surface-page: var(--ff-gray-25);--ff-color-surface-canvas: var(--ff-gray-25);--ff-color-surface-card: var(--ff-white);--ff-color-surface-group: rgba(65, 118, 255, .14);--ff-color-surface-group-active: rgba(65, 118, 255, .2);--ff-color-surface-muted: var(--ff-gray-50);--ff-color-surface-soft: var(--ff-gray-75);--ff-color-surface-accent-soft: rgba(65, 118, 255, .1);--ff-color-border-default: var(--ff-alpha-black-12);--ff-color-border-subtle: var(--ff-alpha-black-08);--ff-color-border-strong: var(--ff-alpha-black-20);--ff-color-border-accent: var(--ff-blue-500);--ff-color-text-primary: var(--ff-gray-800);--ff-color-text-secondary: var(--ff-gray-500);--ff-color-text-tertiary: var(--ff-gray-400);--ff-color-text-inverse: var(--ff-white);--ff-color-accent: var(--ff-blue-500);--ff-color-accent-strong: var(--ff-blue-600);--ff-color-success: var(--ff-green-400);--ff-color-warning: var(--ff-yellow-400);--ff-color-danger: var(--ff-red-400);--ff-color-disabled-surface: var(--ff-gray-100);--ff-color-disabled-border: var(--ff-alpha-black-10);--ff-color-disabled-text: var(--ff-gray-300);--ff-color-selection-fill: rgba(65, 118, 255, .12);--ff-color-selection-stroke: rgba(65, 118, 255, .28);--ff-color-grid: var(--ff-alpha-black-08);--ff-color-grid-strong: var(--ff-alpha-black-15);--ff-color-connector-connected: var(--ff-blue-500);--ff-color-connection: var(--ff-gray-600);--ff-color-connection-muted: var(--ff-gray-300);--ff-color-connection-hover: var(--ff-alpha-black-12);--ff-color-grouping-drop-target-border: var(--ff-gray-800);--ff-color-grouping-drop-target-border-active: var(--ff-gray-800);--ff-color-waypoint-fill: var(--ff-white);--ff-color-waypoint-stroke: var(--ff-blue-500);--ff-color-waypoint-candidate-fill: var(--ff-white);--ff-color-waypoint-candidate-stroke: var(--ff-green-400);--ff-color-minimap-surface: var(--ff-white);--ff-color-minimap-node: var(--ff-gray-700);--ff-color-minimap-view: rgba(65, 118, 255, .14);--ff-color-magnetic-line: var(--ff-blue-500);--ff-color-magnetic-rect-fill: rgba(65, 118, 255, .08);--ff-color-magnetic-rect-border: rgba(65, 118, 255, .24);--ff-radius-node: var(--ff-radius-4);--ff-radius-group: var(--ff-radius-4);--ff-radius-control: var(--ff-radius-4);--ff-radius-socket-square: var(--ff-radius-6);--ff-radius-pill: var(--ff-radius-pill);--ff-font-sans: var(--ff-font-family-sans);--ff-font-mono: var(--ff-font-family-mono);--ff-font-size-body: var(--ff-font-size-sm);--ff-font-size-label: var(--ff-font-size-xs);--ff-shadow-surface: var(--ff-shadow-1);--ff-shadow-floating: var(--ff-shadow-2)}.dark,[data-theme=dark]{--ff-color-surface-page: var(--ff-gray-1000);--ff-color-surface-canvas: var(--ff-gray-1000);--ff-color-surface-card: var(--ff-gray-950);--ff-color-surface-group: rgba(125, 183, 255, .18);--ff-color-surface-group-active: rgba(125, 183, 255, .24);--ff-color-surface-muted: var(--ff-gray-900);--ff-color-surface-soft: var(--ff-gray-900);--ff-color-surface-accent-soft: rgba(125, 183, 255, .14);--ff-color-border-default: var(--ff-alpha-white-12);--ff-color-border-subtle: var(--ff-alpha-white-08);--ff-color-border-strong: var(--ff-alpha-white-20);--ff-color-border-accent: var(--ff-blue-300);--ff-color-text-primary: var(--ff-gray-100);--ff-color-text-secondary: var(--ff-gray-300);--ff-color-text-tertiary: var(--ff-gray-400);--ff-color-text-inverse: var(--ff-gray-1000);--ff-color-accent: var(--ff-blue-300);--ff-color-accent-strong: var(--ff-blue-200);--ff-color-success: var(--ff-green-300);--ff-color-warning: var(--ff-yellow-300);--ff-color-danger: var(--ff-red-300);--ff-color-disabled-surface: var(--ff-gray-800);--ff-color-disabled-border: var(--ff-alpha-white-10);--ff-color-disabled-text: var(--ff-gray-500);--ff-color-selection-fill: rgba(125, 183, 255, .16);--ff-color-selection-stroke: rgba(125, 183, 255, .34);--ff-color-grid: var(--ff-alpha-white-08);--ff-color-grid-strong: var(--ff-alpha-white-15);--ff-color-connector-connected: var(--ff-blue-300);--ff-color-connection: var(--ff-gray-200);--ff-color-connection-muted: var(--ff-gray-500);--ff-color-connection-hover: var(--ff-alpha-white-12);--ff-color-grouping-drop-target-border: var(--ff-gray-100);--ff-color-grouping-drop-target-border-active: var(--ff-gray-100);--ff-color-waypoint-fill: var(--ff-gray-950);--ff-color-waypoint-stroke: var(--ff-blue-300);--ff-color-waypoint-candidate-fill: var(--ff-white);--ff-color-waypoint-candidate-stroke: var(--ff-green-300);--ff-color-minimap-surface: var(--ff-gray-950);--ff-color-minimap-node: var(--ff-gray-200);--ff-color-minimap-view: rgba(125, 183, 255, .18);--ff-color-magnetic-line: var(--ff-blue-300);--ff-color-magnetic-rect-fill: rgba(125, 183, 255, .1);--ff-color-magnetic-rect-border: rgba(125, 183, 255, .24);--ff-shadow-surface: 0 1px 2px rgba(0, 0, 0, .28), 0 8px 20px rgba(0, 0, 0, .14);--ff-shadow-floating: 0 14px 36px rgba(0, 0, 0, .26), 0 4px 12px rgba(0, 0, 0, .16)}:root{--ff-flow-background-color: var(--ff-color-surface-page);--ff-flow-text-color: var(--ff-color-text-primary);--ff-flow-font-family: var(--ff-font-sans);--ff-flow-font-size: var(--ff-font-size-body);--ff-canvas-background-color: var(--ff-color-surface-canvas);--ff-node-background-color: var(--ff-color-surface-card);--ff-node-background-color-inverse: var(--ff-color-text-primary);--ff-node-border-color: var(--ff-color-border-default);--ff-node-border-color-selected: var(--ff-color-border-accent);--ff-node-color: var(--ff-color-text-primary);--ff-node-border-radius: var(--ff-radius-node);--ff-node-shadow: var(--ff-shadow-surface);--ff-node-shadow-selected: var(--ff-shadow-floating);--ff-node-width: 120px;--ff-node-min-height: 56px;--ff-node-padding: 24px;--ff-group-background-color: var(--ff-color-surface-group);--ff-group-background-color-active: var(--ff-color-surface-group-active);--ff-group-border-color: var(--ff-color-border-subtle);--ff-group-border-color-selected: var(--ff-color-border-accent);--ff-group-border-color-active: var(--ff-color-border-accent);--ff-group-color: var(--ff-color-text-secondary);--ff-group-border-radius: var(--ff-radius-group);--ff-group-min-width: 180px;--ff-group-min-height: 120px;--ff-group-padding: 24px;--ff-grouping-drop-target-border-color: var(--ff-color-grouping-drop-target-border);--ff-grouping-drop-target-border-style: dashed;--ff-grouping-drop-target-border-width: 1px;--ff-grouping-drop-target-border-color-active: var( --ff-color-grouping-drop-target-border-active );--ff-grouping-drop-target-border-style-active: dashed;--ff-grouping-drop-target-border-width-active: 2px;--ff-resize-handle-size: 8px;--ff-resize-handle-fill: var(--ff-color-accent);--ff-resize-handle-stroke: var(--ff-color-surface-card);--ff-resize-handle-ring: var(--ff-color-accent);--ff-resize-handle-radius: 1px;--ff-resize-handle-fill-active: var(--ff-color-surface-card);--ff-rotate-handle-size: 16px;--ff-rotate-handle-offset: 40px;--ff-rotate-handle-background-color: var(--ff-color-surface-card);--ff-rotate-handle-border-color: var(--ff-color-border-strong);--ff-rotate-handle-guide-color: var(--ff-color-border-strong);--ff-connector-background-color: var(--ff-color-surface-card);--ff-connector-border-color: var(--ff-color-text-secondary);--ff-connector-connected-color: var(--ff-color-connector-connected);--ff-connector-accent-color: var(--ff-color-accent);--ff-connector-disabled-color: var(--ff-color-disabled-surface);--ff-connector-disabled-border-color: var(--ff-color-disabled-border);--ff-connector-size: 14px;--ff-connector-border-width: 2px;--ff-connector-input-radius: var(--ff-radius-4);--ff-connector-node-ring-color: var(--ff-canvas-background-color);--ff-outlet-background-color: var(--ff-color-surface-muted);--ff-outlet-border-color: var(--ff-color-border-default);--ff-outlet-color: var(--ff-color-accent);--ff-outlet-disabled-background-color: var(--ff-color-disabled-surface);--ff-outlet-disabled-border-color: var(--ff-color-disabled-border);--ff-outlet-disabled-color: var(--ff-color-disabled-text);--ff-outlet-border-radius: var(--ff-radius-pill);--ff-outlet-padding-y: 6px;--ff-outlet-padding-x: 12px;--ff-connection-color: var(--ff-color-connection);--ff-snap-connection-color: var(--ff-color-connection-muted);--ff-connection-hover-color: var(--ff-color-connection-hover);--ff-connection-selected-color: var(--ff-color-accent);--ff-connection-label-color: var(--ff-color-text-secondary);--ff-connection-content-color: var(--ff-node-color);--ff-connection-content-background-color: var(--ff-node-background-color);--ff-connection-content-border-color: var(--ff-node-border-color);--ff-connection-content-border-color-selected: var(--ff-connection-selected-color);--ff-connection-content-border-radius: var(--ff-node-border-radius);--ff-connection-content-font-size: 13px;--ff-connection-content-padding-y: 2px;--ff-connection-content-padding-x: 8px;--ff-connection-width: 2px;--ff-connection-hit-width: 14px;--ff-connection-drag-handle-fill: var(--ff-color-surface-card);--ff-connection-drag-handle-stroke: var(--ff-color-accent);--ff-marker-color: var(--ff-connection-color);--ff-waypoint-fill: var(--ff-color-waypoint-fill);--ff-waypoint-stroke: var(--ff-color-waypoint-stroke);--ff-waypoint-candidate-fill: var(--ff-color-waypoint-candidate-fill);--ff-waypoint-candidate-stroke: var(--ff-color-waypoint-candidate-stroke);--ff-background-line-color: var(--ff-color-grid);--ff-background-dot-color: var(--ff-color-grid-strong);--ff-selection-area-color: var(--ff-color-selection-fill);--ff-selection-area-border-color: var(--ff-color-selection-stroke);--ff-minimap-background-color: var(--ff-color-minimap-surface);--ff-minimap-border-color: var(--ff-color-border-default);--ff-minimap-node-color: var(--ff-color-minimap-node);--ff-minimap-node-selected-color: var(--ff-color-accent);--ff-minimap-view-color: var(--ff-color-minimap-view);--ff-minimap-view-border-color: var(--ff-color-selection-stroke);--ff-minimap-border-radius: var(--ff-radius-node);--ff-minimap-shadow: var(--ff-shadow-floating);--ff-magnetic-line-color: var(--ff-color-magnetic-line);--ff-magnetic-rect-fill: var(--ff-color-magnetic-rect-fill);--ff-magnetic-rect-border-color: var(--ff-color-magnetic-rect-border);--ff-external-item-background-color: var(--ff-color-surface-card);--ff-external-item-border-color: var(--ff-color-border-default);--ff-external-item-color: var(--ff-color-text-primary);--ff-external-item-disabled-color: var(--ff-color-disabled-text);--ff-external-item-disabled-background-color: var(--ff-color-disabled-surface);--ff-external-item-border-radius: var(--ff-radius-node);--ff-external-item-shadow: var(--ff-shadow-surface);--ff-external-item-preview-shadow: var(--ff-shadow-floating);--ff-external-item-placeholder-background-color: var(--ff-color-surface-soft);--ff-external-item-placeholder-border-color: var(--ff-color-border-subtle)}f-flow .f-connection-content,.f-flow .f-connection-content{box-sizing:border-box;color:var(--ff-connection-content-color);font-size:var(--ff-connection-content-font-size);padding:var(--ff-connection-content-padding-y) var(--ff-connection-content-padding-x);background:var(--ff-connection-content-background-color);border:1px solid var(--ff-connection-content-border-color);border-radius:var(--ff-connection-content-border-radius)}f-flow .f-connection .f-connection-selection,.f-flow .f-connection .f-connection-selection{fill:none;stroke:transparent;stroke-width:var(--ff-connection-hit-width)}f-flow .f-connection .f-connection-path,.f-flow .f-connection .f-connection-path{fill:none;stroke:var(--ff-connection-color);stroke-width:var(--ff-connection-width)}f-flow .f-connection .f-connection-drag-handle,.f-flow .f-connection .f-connection-drag-handle{fill:transparent;stroke:transparent;cursor:move}f-flow .f-connection.f-snap-connection .f-connection-path,.f-flow .f-connection.f-snap-connection .f-connection-path{stroke:var(--ff-snap-connection-color);stroke-dasharray:8 4}f-flow .f-connection.f-selected .f-connection-content,.f-flow .f-connection.f-selected .f-connection-content{border-color:var(--ff-connection-content-border-color-selected)}f-flow .f-connection.f-selected .f-connection-path,.f-flow .f-connection.f-selected .f-connection-path{stroke:var(--ff-connection-selected-color)}f-flow:not(.f-dragging) .f-connection:not(.f-dragging):not(.f-selected):not(.f-connection-selection-disabled):hover .f-connection-selection,.f-flow:not(.f-dragging) .f-connection:not(.f-dragging):not(.f-selected):not(.f-connection-selection-disabled):hover .f-connection-selection{stroke:var(--ff-connection-hover-color)}f-flow .f-marker,f-flow .connection-marker,.f-flow .f-marker,.f-flow .connection-marker{color:var(--ff-marker-color)}f-flow .f-marker circle,f-flow .f-marker rect,f-flow .f-marker path,f-flow .f-marker polygon,f-flow .f-marker line,f-flow .connection-marker circle,f-flow .connection-marker rect,f-flow .connection-marker path,f-flow .connection-marker polygon,f-flow .connection-marker line,.f-flow .f-marker circle,.f-flow .f-marker rect,.f-flow .f-marker path,.f-flow .f-marker polygon,.f-flow .f-marker line,.f-flow .connection-marker circle,.f-flow .connection-marker rect,.f-flow .connection-marker path,.f-flow .connection-marker polygon,.f-flow .connection-marker line{fill:currentColor;stroke:currentColor}f-flow .f-connection.f-snap-connection .f-marker,f-flow .f-connection.f-snap-connection .connection-marker,.f-flow .f-connection.f-snap-connection .f-marker,.f-flow .f-connection.f-snap-connection .connection-marker{color:var(--ff-snap-connection-color)}f-flow .f-connection.f-selected .f-marker,f-flow .f-connection.f-selected .connection-marker,.f-flow .f-connection.f-selected .f-marker,.f-flow .f-connection.f-selected .connection-marker{color:var(--ff-connection-selected-color)}f-flow .f-connection .f-connection-waypoints .f-candidate,f-flow .f-connection .f-connection-waypoints .f-waypoint,.f-flow .f-connection .f-connection-waypoints .f-candidate,.f-flow .f-connection .f-connection-waypoints .f-waypoint{vector-effect:non-scaling-stroke;transform-box:fill-box;transform-origin:center;stroke-width:1.5}f-flow .f-connection .f-connection-waypoints .f-candidate:hover,f-flow .f-connection .f-connection-waypoints .f-waypoint:hover,.f-flow .f-connection .f-connection-waypoints .f-candidate:hover,.f-flow .f-connection .f-connection-waypoints .f-waypoint:hover{transform:scale(1.1)}f-flow .f-connection .f-connection-waypoints .f-candidate,.f-flow .f-connection .f-connection-waypoints .f-candidate{fill:var(--ff-waypoint-candidate-fill);stroke:var(--ff-waypoint-candidate-stroke)}f-flow .f-connection .f-connection-waypoints .f-waypoint,.f-flow .f-connection .f-connection-waypoints .f-waypoint{fill:var(--ff-waypoint-fill);stroke:var(--ff-waypoint-stroke);cursor:move}f-flow .f-connection .f-connection-drag-handle,.f-flow .f-connection .f-connection-drag-handle{fill:transparent;stroke:var(--ff-connection-drag-handle-stroke);stroke-width:1.5}f-flow .f-minimap,.f-flow .f-minimap{overflow:hidden;background:var(--ff-minimap-background-color);border:1px solid var(--ff-minimap-border-color);border-radius:var(--ff-minimap-border-radius);box-shadow:var(--ff-minimap-shadow);bottom:16px;right:16px;width:140px;height:120px}f-flow .f-minimap .f-minimap-node,f-flow .f-minimap .f-minimap-group,.f-flow .f-minimap .f-minimap-node,.f-flow .f-minimap .f-minimap-group{fill:var(--ff-minimap-node-color)}f-flow .f-minimap .f-minimap-node.f-selected,f-flow .f-minimap .f-minimap-group.f-selected,.f-flow .f-minimap .f-minimap-node.f-selected,.f-flow .f-minimap .f-minimap-group.f-selected{fill:var(--ff-minimap-node-selected-color)}f-flow .f-minimap .f-minimap-view,.f-flow .f-minimap .f-minimap-view{fill:var(--ff-minimap-view-color);stroke:var(--ff-minimap-view-border-color);stroke-width:1}f-flow .f-selection-area,.f-flow .f-selection-area{box-sizing:border-box;background:var(--ff-selection-area-color);border:1px solid var(--ff-selection-area-border-color)}f-flow .f-background line,f-flow .f-background path,.f-flow .f-background line,.f-flow .f-background path{stroke:var(--ff-background-line-color)}f-flow .f-background circle,.f-flow .f-background circle{fill:var(--ff-background-dot-color)}html,body{height:100%}body{margin:0;background:var(--color-bg);color:var(--color-text);font-family:var(--font-body);font-size:13px;-webkit-font-smoothing:antialiased}:root{--mat-sys-background: var(--color-bg);--mat-sys-on-background: var(--color-text);--mat-sys-surface: var(--color-surface);--mat-sys-surface-container-low: var(--color-surface);--mat-sys-surface-container: var(--color-surface-2);--mat-sys-surface-container-high: var(--color-surface-2);--mat-sys-on-surface: var(--color-text);--mat-sys-on-surface-variant: var(--dim);--mat-sys-outline: var(--color-divider);--mat-sys-outline-variant: var(--color-divider);--mat-sys-primary: var(--color-accent);--mat-sys-on-primary: var(--color-bg);--mat-sys-error: var(--bad);--mat-sys-corner-small: 0;--mat-sys-corner-medium: 0;--mat-sys-corner-large: 0}.mat-mdc-snack-bar-container{--mdc-snackbar-container-color: var(--color-surface);--mdc-snackbar-supporting-text-color: var(--color-text);--mdc-snackbar-supporting-text-font: var(--mono);--mdc-snackbar-supporting-text-size: 11.5px;--mdc-snackbar-supporting-text-weight: 400;--mat-snack-bar-button-color: var(--color-accent)}.mat-mdc-snack-bar-container .mdc-snackbar__surface{border-radius:0;border:1px solid var(--color-accent);box-shadow:none;background-color:var(--color-surface)!important}.mat-mdc-snack-bar-container .mdc-snackbar__label,.mat-mdc-snack-bar-container .mat-mdc-snack-bar-label{color:var(--color-text)!important}.mat-mdc-snack-bar-container.oc-snackbar--success .mdc-snackbar__surface{border-color:var(--ok)}.mat-mdc-snack-bar-container.oc-snackbar--warn .mdc-snackbar__surface{border-color:var(--warn)}.mat-mdc-snack-bar-container.oc-snackbar--error .mdc-snackbar__surface{border-color:var(--bad)}.mat-mdc-snack-bar-container.oc-snackbar--error{--mat-snack-bar-button-color: var(--bad)}.mat-mdc-snack-bar-container.oc-snackbar--info .mdc-snackbar__surface{border-color:var(--color-accent)}.material-symbols-outlined{font-variation-settings:"FILL" 0,"wght" 400,"GRAD" 0,"opsz" 24}
