@charset "UTF-8";:root,:root[data-theme=light]{color-scheme:light;--app-bg: #f4f6fb;--surface: #fff;--surface-muted: #f7f8fc;--surface-elevated: #fff;--border: #e1e6f0;--border-strong: #cbd4e3;--text-primary: #172033;--text-secondary: #5f6b7d;--primary: #4f46e5;--primary-strong: #3730a3;--primary-soft: #eeefff;--accent: #2563eb;--accent-soft: #eaf1ff;--success: #16856a;--success-soft: #e8f7f1;--warning: #b7791f;--warning-soft: #fff6df;--danger: #c24156;--danger-soft: #fff0f3;--info: #2878c8;--info-soft: #eaf5ff;--muted: #8792a5;--state-planned: #718096;--state-planned-soft: #eef1f6;--progress-track: #e8ebf3;--color-bg: var(--app-bg);--color-bg-soft: var(--surface-muted);--color-surface: var(--surface);--color-text: var(--text-primary);--color-text-soft: var(--text-secondary);--color-text-muted: var(--muted);--color-border: var(--border);--color-border-strong: var(--border-strong);--color-primary: var(--primary);--color-primary-strong: var(--primary-strong);--color-primary-soft: var(--primary-soft);--color-secondary: var(--accent);--color-secondary-soft: var(--accent-soft);--color-violet: #7357c8;--color-violet-soft: #f1edff;--color-amber: var(--warning);--color-amber-soft: var(--warning-soft);--color-danger: var(--danger);--color-danger-soft: var(--danger-soft);--status-not-started: #8c97a4;--status-learning: #356bd8;--status-practicing: #8150cb;--status-applied: #218369;--status-review: #d18a16;--status-locked: #9ca4ad;--space-1: 4px;--space-2: 8px;--space-3: 12px;--space-4: 16px;--space-5: 20px;--space-6: 24px;--space-8: 32px;--space-10: 40px;--space-12: 48px;--radius-sm: 9px;--radius-md: 13px;--radius-lg: 17px;--shadow-sm: 0 1px 2px rgba(38,49,78,.04), 0 4px 14px rgba(38,49,78,.025);--shadow-md: 0 12px 32px rgba(38,49,78,.08);--shadow-lg: 0 22px 56px rgba(25,34,62,.15);--font-family-ui: "Segoe UI Variable", "Segoe UI", system-ui, -apple-system, BlinkMacSystemFont, sans-serif;--font-size-xs: 12px;--font-size-sm: 13px;--font-size-md: 14px;--font-size-body: 15px;--font-size-lg: 18px;--font-size-xl: 22px;--font-size-2xl: 34px;--font-size-display: 42px;--font-weight-regular: 400;--font-weight-medium: 500;--font-weight-semibold: 600;--font-weight-bold: 700;--font-family: var(--font-family-ui);--weight-regular: var(--font-weight-regular);--weight-medium: var(--font-weight-medium);--weight-semibold: var(--font-weight-semibold);--weight-bold: var(--font-weight-bold);--page-max-width: 1460px;--page-gutter-desktop: 32px;--page-gutter-tablet: 20px;--page-gutter-mobile: 14px;--content-gap: 18px;--content-max: var(--page-max-width);--page-space: clamp(20px, 3vw, 34px);--page-hero-space: clamp(22px, 3vw, 32px);--app-header-height: 68px;--sidebar-expanded-width: 232px;--sidebar-collapsed-width: 80px;--details-panel-width: clamp(340px, 22vw, 380px);--workspace-gap: 18px;--page-inline-padding: var(--page-gutter-desktop);--sidebar-width: var(--sidebar-expanded-width);--header-height: var(--app-header-height)}:root[data-theme=dark]{color-scheme:dark;--app-bg: #0d1220;--surface: #151b2b;--surface-muted: #1c2436;--surface-elevated: #222b3f;--border: #2c3850;--border-strong: #3a4965;--text-primary: #f3f6fc;--text-secondary: #b8c1d4;--primary: #a5b4fc;--primary-strong: #c7d2fe;--primary-soft: #29294f;--accent: #7fb0ff;--accent-soft: #1e3154;--success: #6ed3b5;--success-soft: #153b35;--warning: #f0bd69;--warning-soft: #44341d;--danger: #ff9eae;--danger-soft: #47252f;--info: #83c5ff;--info-soft: #173751;--muted: #8995ac;--state-planned: #a6b0c3;--state-planned-soft: #252e40;--progress-track: #293348;--color-text-muted: var(--muted);--color-violet: #c4b5fd;--color-violet-soft: #342b55;--color-amber: var(--warning);--color-amber-soft: var(--warning-soft);--color-danger: var(--danger);--color-danger-soft: var(--danger-soft);--shadow-sm: 0 1px 2px rgba(0,0,0,.25);--shadow-md: 0 10px 28px rgba(0,0,0,.3);--shadow-lg: 0 20px 52px rgba(0,0,0,.45);--mat-sys-background: var(--app-bg);--mat-sys-surface: var(--surface);--mat-sys-surface-container: var(--surface-muted);--mat-sys-surface-container-low: var(--surface);--mat-sys-surface-container-high: var(--surface-elevated);--mat-sys-on-surface: var(--text-primary);--mat-sys-on-surface-variant: var(--text-secondary);--mat-sys-outline: var(--border-strong);--mat-sys-outline-variant: var(--border);--mat-sys-primary: var(--primary);--mat-sys-on-primary: #111635;--mat-sys-primary-container: var(--primary-soft);--mat-sys-on-primary-container: var(--primary-strong);--mat-sys-secondary: var(--accent)}html{height:100%;scrollbar-gutter:stable;--mat-sys-background: light-dark(#faf9fd, #121316);--mat-sys-error: light-dark(#ba1a1a, #ffb4ab);--mat-sys-error-container: light-dark(#ffdad6, #93000a);--mat-sys-inverse-on-surface: light-dark(#f2f0f4, #2f3033);--mat-sys-inverse-primary: light-dark(#abc7ff, #005cbb);--mat-sys-inverse-surface: light-dark(#2f3033, #e3e2e6);--mat-sys-on-background: light-dark(#1a1b1f, #e3e2e6);--mat-sys-on-error: light-dark(#ffffff, #690005);--mat-sys-on-error-container: light-dark(#93000a, #ffdad6);--mat-sys-on-primary: light-dark(#ffffff, #002f65);--mat-sys-on-primary-container: light-dark(#00458f, #d7e3ff);--mat-sys-on-primary-fixed: light-dark(#001b3f, #001b3f);--mat-sys-on-primary-fixed-variant: light-dark(#00458f, #00458f);--mat-sys-on-secondary: light-dark(#ffffff, #283041);--mat-sys-on-secondary-container: light-dark(#3e4759, #dae2f9);--mat-sys-on-secondary-fixed: light-dark(#131c2b, #131c2b);--mat-sys-on-secondary-fixed-variant: light-dark(#3e4759, #3e4759);--mat-sys-on-surface: light-dark(#1a1b1f, #e3e2e6);--mat-sys-on-surface-variant: light-dark(#44474e, #e0e2ec);--mat-sys-on-tertiary: light-dark(#ffffff, #42008a);--mat-sys-on-tertiary-container: light-dark(#5f00c0, #ecdcff);--mat-sys-on-tertiary-fixed: light-dark(#270057, #270057);--mat-sys-on-tertiary-fixed-variant: light-dark(#5f00c0, #5f00c0);--mat-sys-outline: light-dark(#74777f, #8e9099);--mat-sys-outline-variant: light-dark(#c4c6d0, #44474e);--mat-sys-primary: light-dark(#005cbb, #abc7ff);--mat-sys-primary-container: light-dark(#d7e3ff, #00458f);--mat-sys-primary-fixed: light-dark(#d7e3ff, #d7e3ff);--mat-sys-primary-fixed-dim: light-dark(#abc7ff, #abc7ff);--mat-sys-scrim: light-dark(#000000, #000000);--mat-sys-secondary: light-dark(#565e71, #bec6dc);--mat-sys-secondary-container: light-dark(#dae2f9, #3e4759);--mat-sys-secondary-fixed: light-dark(#dae2f9, #dae2f9);--mat-sys-secondary-fixed-dim: light-dark(#bec6dc, #bec6dc);--mat-sys-shadow: light-dark(#000000, #000000);--mat-sys-surface: light-dark(#faf9fd, #121316);--mat-sys-surface-bright: light-dark(#faf9fd, #38393c);--mat-sys-surface-container: light-dark(#efedf0, #1f2022);--mat-sys-surface-container-high: light-dark(#e9e7eb, #292a2c);--mat-sys-surface-container-highest: light-dark(#e3e2e6, #343537);--mat-sys-surface-container-low: light-dark(#f4f3f6, #1a1b1f);--mat-sys-surface-container-lowest: light-dark(#ffffff, #0d0e11);--mat-sys-surface-dim: light-dark(#dbd9dd, #121316);--mat-sys-surface-tint: light-dark(#005cbb, #abc7ff);--mat-sys-surface-variant: light-dark(#e0e2ec, #44474e);--mat-sys-tertiary: light-dark(#7d00fa, #d5baff);--mat-sys-tertiary-container: light-dark(#ecdcff, #5f00c0);--mat-sys-tertiary-fixed: light-dark(#ecdcff, #ecdcff);--mat-sys-tertiary-fixed-dim: light-dark(#d5baff, #d5baff);--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 var(--font-family-ui);--mat-sys-body-large-font: var(--font-family-ui);--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 var(--font-family-ui);--mat-sys-body-medium-font: var(--font-family-ui);--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 var(--font-family-ui);--mat-sys-body-small-font: var(--font-family-ui);--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 var(--font-family-ui);--mat-sys-display-large-font: var(--font-family-ui);--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 var(--font-family-ui);--mat-sys-display-medium-font: var(--font-family-ui);--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 var(--font-family-ui);--mat-sys-display-small-font: var(--font-family-ui);--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 var(--font-family-ui);--mat-sys-headline-large-font: var(--font-family-ui);--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 var(--font-family-ui);--mat-sys-headline-medium-font: var(--font-family-ui);--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 var(--font-family-ui);--mat-sys-headline-small-font: var(--font-family-ui);--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 var(--font-family-ui);--mat-sys-label-large-font: var(--font-family-ui);--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 var(--font-family-ui);--mat-sys-label-medium-font: var(--font-family-ui);--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 var(--font-family-ui);--mat-sys-label-small-font: var(--font-family-ui);--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 var(--font-family-ui);--mat-sys-title-large-font: var(--font-family-ui);--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 var(--font-family-ui);--mat-sys-title-medium-font: var(--font-family-ui);--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 var(--font-family-ui);--mat-sys-title-small-font: var(--font-family-ui);--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-checkbox-touch-target-display: block;--mat-checkbox-state-layer-size: 36px;--mat-chip-container-height: 28px;--mat-expansion-header-collapsed-state-height: 44px;--mat-expansion-header-expanded-state-height: 60px;--mat-fab-small-touch-target-display: ;--mat-fab-touch-target-display: block;--mat-button-filled-touch-target-display: block;--mat-button-filled-container-height: 36px;--mat-button-outlined-container-height: 36px;--mat-button-outlined-touch-target-display: block;--mat-button-protected-touch-target-display: block;--mat-button-protected-container-height: 36px;--mat-button-text-touch-target-display: block;--mat-button-text-container-height: 36px;--mat-button-tonal-container-height: 36px;--mat-button-tonal-touch-target-display: block;--mat-form-field-container-height: 52px;--mat-form-field-filled-label-display: block;--mat-form-field-container-vertical-padding: 14px;--mat-form-field-filled-with-label-container-padding-top: 22px;--mat-form-field-filled-with-label-container-padding-bottom: 6px;--mat-icon-button-touch-target-display: block;--mat-icon-button-state-layer-size: 36px;--mat-list-list-item-leading-icon-start-space: 12px;--mat-list-list-item-leading-icon-end-space: 12px;--mat-list-list-item-one-line-container-height: 44px;--mat-list-list-item-two-line-container-height: 60px;--mat-list-list-item-three-line-container-height: 84px;--mat-paginator-container-size: 52px;--mat-paginator-form-field-container-height: 40px;--mat-paginator-form-field-container-vertical-padding: 8px;--mat-paginator-touch-target-display: block;--mat-radio-touch-target-display: block;--mat-radio-state-layer-size: 36px;--mat-tab-container-height: 44px;--mat-select-arrow-transform: translateY(-8px);--mat-button-toggle-height: 40px;--mat-stepper-header-height: 68px;--mat-table-header-container-height: 52px;--mat-table-footer-container-height: 48px;--mat-table-row-item-container-height: 48px;--mat-toolbar-standard-height: 60px;--mat-toolbar-mobile-height: 52px;--mat-tree-node-min-height: 44px;--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}*{box-sizing:border-box}body{margin:0;min-width:320px;height:100%;background:var(--color-bg);color:var(--color-text);font-family:var(--font-family-ui);font-size:var(--font-size-body);font-weight:var(--font-weight-regular);line-height:1.55;-webkit-font-smoothing:antialiased}button,input,select,textarea{font:inherit}button,a{-webkit-tap-highlight-color:transparent}a:focus-visible,button:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible,[tabindex]:focus-visible{outline:3px solid color-mix(in srgb,var(--color-secondary) 42%,transparent);outline-offset:2px}h1,h2,h3,p{margin-top:0}h1,h2,h3{color:var(--text-primary)}h1{font-weight:var(--weight-bold)}h2,h3{font-weight:var(--weight-semibold)}.page{width:100%;max-width:var(--page-max-width);margin-inline:auto}.page-enter{animation:page-in .22s ease-out both}@keyframes page-in{0%{opacity:0;transform:translateY(4px)}}.page-header{position:relative;min-height:132px;margin-bottom:26px;padding:var(--page-hero-space);display:flex;align-items:center;justify-content:space-between;gap:20px;overflow:hidden;isolation:isolate;border:1px solid color-mix(in srgb,var(--primary) 14%,var(--border));border-radius:var(--radius-lg);background:linear-gradient(125deg,color-mix(in srgb,var(--primary-soft) 72%,var(--surface)) 0%,var(--surface) 68%);box-shadow:var(--shadow-sm)}.page-header:before{content:"";position:absolute;inset:0;z-index:-2;pointer-events:none;opacity:.55;background:radial-gradient(circle at 84% 18%,color-mix(in srgb,var(--accent) 12%,transparent) 0 3px,transparent 4px),radial-gradient(circle at 92% 74%,color-mix(in srgb,var(--primary) 13%,transparent) 0 3px,transparent 4px),linear-gradient(135deg,transparent 72%,color-mix(in srgb,var(--accent-soft) 72%,transparent));background-size:42px 42px,56px 56px,auto}.page-header:after{content:"";position:absolute;right:clamp(28px,8vw,108px);bottom:-38px;z-index:-1;width:132px;height:132px;pointer-events:none;border:18px solid currentColor;border-radius:42% 58% 62% 38%;color:var(--primary);background:radial-gradient(circle at 28% 28%,currentColor 0 5px,transparent 6px),radial-gradient(circle at 68% 54%,currentColor 0 4px,transparent 5px);opacity:.07;transform:rotate(-12deg)}.page-header>*{position:relative;z-index:1}.page-header h1{margin:0 0 7px;font-size:clamp(28px,3vw,38px);font-weight:var(--weight-bold);line-height:1.1;letter-spacing:-.035em}.page-header p{max-width:68ch;margin:0;color:var(--color-text-soft);font-size:14px;line-height:1.6}.eyebrow{margin:0 0 7px;color:var(--color-primary);font-size:11px;font-weight:var(--weight-semibold);letter-spacing:.11em;text-transform:uppercase}.card{padding:22px;border:1px solid var(--color-border);border-radius:var(--radius-md);background:var(--color-surface);box-shadow:var(--shadow-sm)}.card-header{margin-bottom:18px;display:flex;align-items:center;justify-content:space-between;gap:14px}.card-header h2,.card-header h3{margin:0;font-size:16px;font-weight:var(--weight-semibold);letter-spacing:-.015em}.card-header p{margin:4px 0 0;color:var(--color-text-muted);font-size:12px}.muted{color:var(--color-text-muted)}.tag{display:inline-flex;align-items:center;min-height:24px;padding:3px 9px;border-radius:999px;color:var(--color-primary-strong);background:var(--color-primary-soft);font-size:11px;font-weight:var(--font-weight-semibold)}.tag.blue{color:var(--color-secondary);background:var(--color-secondary-soft)}.tag.violet{color:var(--color-violet);background:var(--color-violet-soft)}.tag.amber{color:#8b5907;background:var(--color-amber-soft)}.progress-track{height:7px;overflow:hidden;border-radius:999px;background:var(--progress-track)}.progress-track>span{display:block;height:100%;border-radius:inherit;background:var(--primary)}.metric-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:14px}.metric-card{padding:18px;border:1px solid var(--color-border);border-radius:var(--radius-md);background:var(--color-surface);box-shadow:var(--shadow-sm)}.metric-card strong{display:block;margin-top:8px;font-size:25px;font-weight:var(--weight-semibold);letter-spacing:-.04em}.metric-card span{color:var(--color-text-soft);font-size:12px}.feature-grid{display:grid;grid-template-columns:repeat(12,minmax(0,1fr));gap:18px}.feature-grid>.card{grid-column:span 4}.list-clean{margin:0;padding:0;list-style:none}.divider-list>*+*{border-top:1px solid var(--color-border)}.section-page .feature-grid{align-items:start}.section-page .wide{grid-column:span 8}.section-page .full{grid-column:1/-1}.section-list-row{padding:14px 0;display:flex;align-items:center;justify-content:space-between;gap:14px}.section-list-row strong,.section-list-row small{display:block}.section-list-row small{margin-top:3px;color:var(--color-text-muted)}.icon-tile{width:38px;height:38px;display:grid;place-items:center;flex:0 0 auto;border-radius:10px;color:var(--color-primary);background:var(--color-primary-soft)}.row-main{min-width:0;display:flex;align-items:center;gap:12px}.demo-note{display:flex;align-items:flex-start;gap:12px;padding:14px 16px;color:var(--color-text-soft);border-radius:var(--radius-md);background:var(--color-secondary-soft)}.demo-note mat-icon{color:var(--color-secondary)}.mat-mdc-button-base{--mat-button-text-label-text-weight: var(--font-weight-medium);--mat-button-filled-label-text-weight: var(--font-weight-semibold);--mat-button-outlined-label-text-weight: var(--font-weight-medium)}.mat-mdc-unelevated-button.mat-primary{--mat-button-filled-container-color: var(--primary);--mat-button-filled-label-text-color: #fff}.mat-mdc-outlined-button{--mat-button-outlined-outline-color: var(--border-strong)}.mat-mdc-snack-bar-container{--mat-snackbar-container-color: var(--surface-elevated);--mat-snackbar-supporting-text-color: var(--text-primary)}input,select,textarea{color:var(--text-primary);caret-color:var(--accent)}input::placeholder,textarea::placeholder{color:var(--muted);opacity:1}.finance-entry-dialog-panel .mat-mdc-dialog-surface{overflow:hidden;border:1px solid var(--border);border-radius:18px;color:var(--text-primary);background:var(--surface);box-shadow:var(--shadow-lg)}.module-inspector-dialog-panel .mat-mdc-dialog-surface{max-height:calc(100vh - 32px);overflow:hidden;box-sizing:border-box;border:1px solid var(--border);border-radius:12px;color:var(--text-primary);background:var(--surface);box-shadow:var(--shadow-lg)}.module-inspector-dialog-panel .mat-mdc-dialog-component-host{display:block;width:100%;height:100%;min-height:0;min-width:0;box-sizing:border-box}.finance-entry-dialog-panel .mat-mdc-form-field{--mat-form-field-container-height: 48px;--mat-form-field-container-vertical-padding: 12px;--mat-form-field-outlined-outline-color: var(--border-strong);--mat-form-field-outlined-hover-outline-color: color-mix(in srgb, var(--accent) 45%, var(--border-strong));--mat-form-field-outlined-focus-outline-color: var(--accent);--mat-form-field-outlined-label-text-color: var(--text-secondary);--mat-form-field-outlined-focus-label-text-color: var(--primary-strong);--mat-form-field-container-text-color: var(--text-primary);--mat-form-field-container-text-size: 15px;--mat-form-field-container-text-weight: var(--font-weight-regular);--mat-form-field-subscript-text-size: 12px}.finance-entry-dialog-panel .mat-mdc-text-field-wrapper{border-radius:11px;background:var(--surface);transition:background .16s}.finance-entry-dialog-panel .mat-mdc-form-field:hover .mat-mdc-text-field-wrapper{background:color-mix(in srgb,var(--surface-muted) 46%,var(--surface))}.finance-entry-dialog-panel .mat-mdc-form-field.mat-focused .mat-mdc-text-field-wrapper{background:var(--surface);box-shadow:0 0 0 3px color-mix(in srgb,var(--accent) 13%,transparent)}.finance-entry-dialog-panel .mat-mdc-form-field-icon-suffix{color:var(--text-secondary)}.finance-entry-dialog-panel .mat-mdc-select-arrow{color:var(--muted)}.finance-entry-dialog-panel .mat-mdc-form-field-error{color:var(--danger);font-weight:var(--font-weight-regular)}.finance-entry-dialog-panel .mat-mdc-form-field-hint{color:var(--muted);font-weight:var(--font-weight-regular)}.app-select-panel.mat-mdc-select-panel{margin-top:6px;padding:6px;border:1px solid var(--border);border-radius:12px!important;background:var(--surface-elevated);box-shadow:var(--shadow-lg)}.app-select-panel .mat-mdc-option{min-height:44px;margin:2px 0;border-radius:8px;color:var(--text-primary);font-size:14px;font-weight:var(--font-weight-regular)}.app-select-panel .mat-mdc-option:hover:not(.mdc-list-item--disabled){background:var(--surface-muted)}.app-select-panel .mat-mdc-option.mdc-list-item--selected{color:var(--primary-strong);background:var(--primary-soft)}.app-select-panel .mat-mdc-option mat-icon{margin-right:10px;color:var(--accent)}.mat-datepicker-content{border:1px solid var(--border);border-radius:14px!important;color:var(--text-primary);background:var(--surface-elevated);box-shadow:var(--shadow-lg)}.mat-datepicker-content .mat-calendar{font-family:var(--font-family-ui)}.mat-calendar-body-cell-content{border-radius:9px!important}.mat-calendar-body-selected{color:#fff!important;background:var(--primary)!important;box-shadow:none!important}.mat-calendar-body-today:not(.mat-calendar-body-selected){border-color:var(--accent)!important}.app-select-menu.mat-mdc-menu-panel{min-width:224px;margin-top:7px;padding:6px;overflow:hidden;border:1px solid var(--border);border-radius:12px;background:var(--surface-elevated);box-shadow:var(--shadow-lg)}.app-select-menu .mat-mdc-menu-item{min-height:46px;margin:2px 0;display:grid;grid-template-columns:24px minmax(0,1fr) 24px;align-items:center;column-gap:8px;border-radius:8px;color:var(--text-primary);font-size:13px}.app-select-menu .mat-mdc-menu-item:hover{background:var(--surface-muted)}.app-select-menu .mat-mdc-menu-item.selected{color:var(--primary-strong);background:var(--primary-soft)}.app-select-menu .mat-mdc-menu-item mat-icon{margin:0;color:var(--text-secondary)}.app-select-menu .mat-mdc-menu-item.selected>mat-icon:first-child{color:var(--primary)}.app-select-menu .mat-mdc-menu-item .menu-check{width:24px;height:24px;margin:0;display:inline-flex;align-items:center;justify-content:center;border-radius:50%;color:var(--primary);font-size:18px;line-height:1}.app-select-menu .menu-check-placeholder{width:24px;height:24px;display:block}.app-select-menu .locale-label{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.app-select-menu .locale-menu-spacer{display:none}.app-select-menu .locale-flag{width:22px;height:16px;margin:0;display:block;justify-self:end;object-fit:cover}.mat-mdc-tooltip{--mdc-plain-tooltip-container-color: #20293a;--mdc-plain-tooltip-supporting-text-color: #fff;--mdc-plain-tooltip-supporting-text-size: 12px;--mdc-plain-tooltip-container-shape: 7px}app-projects-page .section-page .project>p,app-business-page .section-page .idea p{font-size:13px!important;line-height:1.6}app-projects-page .section-page .project header>span,app-languages-page .section-page .language-head>span,app-settings-page .settings .settings-avatar{font-weight:var(--font-weight-semibold)!important}app-projects-page .section-page .next,app-achievements-page .section-page .evidence span,app-achievements-page .section-page .badges>div{background:var(--surface-muted)}app-projects-page .section-page .next small,app-projects-page .section-page .project-progress>span,app-career-page .section-page .readiness span,app-career-page .section-page .market span,app-career-page .section-page .pipeline span,app-business-page .section-page .idea footer,app-business-page .section-page .empty-column,app-analytics-page .section-page .metric-card small,app-analytics-page .section-page .trend-labels,app-productivity-page .section-page .focus-banner small,app-productivity-page .section-page .plan-row small,app-productivity-page .section-page .plan-row>span,app-productivity-page .section-page .time-budget span,app-achievements-page .section-page .timeline time,app-achievements-page .section-page .timeline small,app-achievements-page .section-page .evidence small,app-achievements-page .section-page .badges small,app-assistant-page .assistant .prompts small,app-assistant-page .assistant .context small,app-assistant-page .assistant .privacy small,app-content-page .section-page .table-head,app-content-page .section-page .table-row,app-content-page .section-page .table-row small,app-settings-page .settings .profile-settings small,app-settings-page .settings .setting-row small,app-tasks-page .section-page .task-row small,app-tasks-page .section-page .priority{font-size:11px!important;font-weight:var(--font-weight-regular);line-height:1.45}app-career-page .section-page .check-list li,app-business-page .section-page .idea-board header strong,app-productivity-page .section-page .budget-row,app-settings-page .settings .setting-row strong{font-size:12px!important}app-career-page .section-page .actions button,app-assistant-page .assistant .prompts button,app-settings-page .settings .form-grid input,app-settings-page .settings .form-grid select,app-settings-page .settings .schedule button{color:var(--text-primary);background:var(--surface)!important}app-career-page .section-page .actions button:hover,app-assistant-page .assistant .prompts button:hover{border-color:var(--accent);background:var(--accent-soft)}app-career-page .section-page .actions button span,app-analytics-page .section-page .donut>span,app-settings-page .settings .form-grid label span{font-weight:var(--font-weight-medium)!important}app-analytics-page .section-page .donut:before{background:var(--surface)}app-analytics-page .section-page .trend circle{fill:var(--surface)}app-business-page .section-page .idea .tag{font-size:10px!important;font-weight:var(--font-weight-semibold)!important}app-business-page .section-page .idea footer{padding-top:12px}app-productivity-page .section-page .time-budget strong,app-achievements-page .section-page .achievement-hero>strong{font-weight:600}app-achievements-page .section-page .timeline article>span{background:var(--surface)}app-achievements-page .section-page .timeline p{font-size:12px!important;line-height:1.55}app-achievements-page .section-page .badges strong{font-size:12px!important;font-weight:var(--font-weight-semibold)!important}app-assistant-page .assistant .prompts strong,app-assistant-page .assistant .privacy strong{font-size:12px!important;font-weight:var(--font-weight-semibold)!important}app-assistant-page .assistant .composer{background:var(--surface-muted)}app-content-page .section-page .content-search{background:var(--surface)}app-content-page .section-page .content-search input{color:var(--text-primary);background:transparent}app-content-page .section-page .table-head{background:var(--surface-muted);font-weight:var(--font-weight-medium)!important;letter-spacing:.06em}app-content-page .section-page .table-row{font-size:12px!important}app-settings-page .settings .settings-nav button{min-height:43px;font-size:14px;font-weight:var(--font-weight-medium)!important}app-settings-page .settings .settings-avatar{font-weight:var(--font-weight-semibold)}app-settings-page .settings .form-grid label span{font-size:12px!important;line-height:1.4}app-settings-page .settings .profile-settings small,app-settings-page .settings .setting-row small{font-size:12px!important;font-weight:var(--font-weight-regular)!important;line-height:1.45}app-settings-page .settings .setting-row strong,app-settings-page .settings .schedule>strong{font-size:13px!important;font-weight:var(--font-weight-medium)!important}app-settings-page .settings .form-grid input,app-settings-page .settings .form-grid select{border-radius:var(--radius-sm)}app-projects-page .section-page .project-progress>span{font-weight:var(--font-weight-medium)!important}app-analytics-page .section-page .donut>span,app-career-page .section-page .actions button span{font-weight:var(--font-weight-semibold)!important}app-tasks-page .section-page .add-task input{min-width:0;color:var(--text-primary);background:var(--surface)}app-tasks-page .section-page .filters h3{font-size:11px;font-weight:600}:root[data-theme=dark] app-achievements-page .section-page .timeline article>span{background:var(--surface)!important}app-lesson-reader-page .reading-column{box-shadow:var(--shadow-md)}app-lesson-reader-page .lesson-header{position:relative;margin:-12px -16px 0;padding:28px 30px;overflow:hidden;isolation:isolate;border:1px solid color-mix(in srgb,var(--primary) 14%,var(--border));border-radius:var(--radius-lg);background:linear-gradient(125deg,color-mix(in srgb,var(--primary-soft) 72%,var(--surface)) 0%,var(--surface) 74%)}app-lesson-reader-page .lesson-header:after{content:"";position:absolute;right:28px;bottom:-42px;z-index:-1;width:118px;height:118px;border:16px solid currentColor;border-radius:42% 58% 62% 38%;color:var(--primary);opacity:.07;transform:rotate(-10deg)}:root[data-theme=dark] app-skill-map-page .skill-map{--map-blue: var(--accent)}:root[data-theme=dark] app-skill-map-page .skill-map :is(.map-toolbar,.map-search,.filter,.view-toggle,.zoom-controls,.map-legend,.detail-panel,.metric-ring:before,.stages span,.skill-list>button){background:var(--surface)}:root[data-theme=dark] app-skill-map-page .skill-map :is(.canvas-panel,.skill-list){background:var(--surface-muted)}:root[data-theme=dark] app-skill-map-page .skill-map :is(f-flow,f-canvas){background:var(--surface-muted);color:var(--text-primary)}:root[data-theme=dark] app-skill-map-page .skill-map .area-node{color:var(--accent);border-color:var(--accent);background:var(--accent-soft)}:root[data-theme=dark] app-skill-map-page .skill-map .skill-node{background:color-mix(in srgb,var(--node-color) 8%,var(--surface))}:root[data-theme=dark] app-skill-map-page .skill-map .skill-node.selected{background:var(--accent-soft)}:root[data-theme=dark] app-skill-map-page .skill-map .skill-node[data-status=LOCKED]{background:var(--surface-muted)}:root[data-theme=dark] app-skill-map-page .skill-map :is(.demo-badge,.block-demo,.map-demo){color:var(--accent);border-color:var(--border);background:var(--accent-soft)}@media(max-width:900px){.metric-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.feature-grid>.card,.section-page .wide{grid-column:span 6}}@media(max-width:620px){.page-header{min-height:0;padding:20px;align-items:flex-start;flex-direction:column}.page-header:after{right:12px;bottom:-14px;font-size:88px;opacity:.055}.page-header>button,.page-header>a{width:100%}.metric-grid{grid-template-columns:1fr 1fr;gap:10px}.metric-card{padding:14px}.feature-grid{gap:12px}.feature-grid>.card,.section-page .wide{grid-column:1/-1}.card{padding:18px}}@media(prefers-reduced-motion:reduce){*,*:before,*:after{scroll-behavior:auto!important;animation-duration:.01ms!important;transition-duration:.01ms!important}}.finance-page .budget-view{display:grid;gap:18px}.finance-page .budget-heading{display:flex;align-items:flex-end;justify-content:space-between;gap:18px}.finance-page .budget-heading h2{margin:2px 0 4px;font-size:28px;letter-spacing:-.025em}.finance-page .budget-heading>div>p:last-child{margin:0;color:var(--text-secondary)}.finance-page .budget-period{width:fit-content;margin:0 auto;padding:5px 9px;display:flex;align-items:center;gap:6px}.finance-page .budget-period strong{min-width:145px;text-align:center;text-transform:capitalize}.finance-page .budget-kpis{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px}.finance-page .budget-kpi{min-width:0;padding:17px;display:flex;align-items:center;gap:12px;border:1px solid var(--border);border-radius:var(--radius-md);background:var(--surface);box-shadow:var(--shadow-sm)}.finance-page .budget-kpi>span{width:40px;height:40px;display:grid;place-items:center;flex:0 0 auto;border-radius:11px;color:var(--primary);background:var(--primary-soft)}.finance-page .budget-kpi small,.finance-page .budget-kpi strong{display:block}.finance-page .budget-kpi small{margin-bottom:4px;color:var(--text-secondary);font-size:11px}.finance-page .budget-kpi strong{overflow-wrap:anywhere;font-size:clamp(18px,2vw,23px)}.finance-page .total-budget-card>header,.finance-page .category-budget-item>header{display:flex;align-items:center;justify-content:space-between;gap:14px}.finance-page .total-budget-card h3,.finance-page .category-budget-item h3,.finance-page .goal-card h3{margin:0;font-size:15px}.finance-page .total-budget-card header p,.finance-page .category-budget-item header p{margin:3px 0 0;color:var(--text-secondary);font-size:11px}.finance-page .budget-status{padding:5px 9px;display:inline-flex;align-items:center;gap:5px;flex:0 0 auto;border-radius:999px;color:var(--success);background:var(--success-soft);font-size:11px;font-weight:600}.finance-page .budget-status[data-status=WARNING]{color:var(--warning);background:var(--warning-soft)}.finance-page .budget-status[data-status=OVER]{color:var(--danger);background:var(--danger-soft)}.finance-page .budget-status mat-icon{width:16px;height:16px;font-size:16px}.finance-page .budget-progress,.finance-page .goal-progress{height:8px;margin:16px 0 9px;overflow:hidden;border-radius:999px;background:var(--progress-track)}.finance-page .budget-progress span,.finance-page .goal-progress span{display:block;height:100%;border-radius:inherit;background:var(--primary)}.finance-page .total-budget-card>footer{display:flex;align-items:center;gap:16px;color:var(--text-secondary);font-size:11px}.finance-page .total-budget-card>footer button{margin-left:auto}.finance-page .budget-empty{min-height:180px;display:grid;place-content:center;justify-items:center;text-align:center}.finance-page .budget-empty>mat-icon{width:38px;height:38px;color:var(--muted);font-size:38px}.finance-page .budget-empty h3{margin:10px 0 14px;font-size:16px}.finance-page .category-budget-list{display:grid;gap:10px}.finance-page .category-budget-item{padding:15px;border:1px solid var(--border);border-radius:11px;background:var(--surface-muted)}.finance-page .category-budget-item>header{display:grid;grid-template-columns:36px minmax(0,1fr) auto}.finance-page .category-budget-item>footer{display:flex;justify-content:space-between;gap:12px;color:var(--text-secondary);font-size:11px}.finance-page .category-budget-item footer strong{color:var(--text-primary);font-weight:600}.finance-page .cash-flow-card>.card-header>mat-icon{color:var(--accent)}.finance-page .cash-flow-card dl{margin:0;display:grid;grid-template-columns:repeat(5,minmax(0,1fr))}.finance-page .cash-flow-card dl>div{min-width:0;padding:13px;border-left:1px solid var(--border)}.finance-page .cash-flow-card dl>div:first-child{border-left:0}.finance-page .cash-flow-card dt{color:var(--text-secondary);font-size:10px}.finance-page .cash-flow-card dd{margin:5px 0 0;overflow-wrap:anywhere;font-size:16px;font-weight:600}.finance-page .cash-flow-card .emphasis{border-radius:9px;background:var(--surface-muted)}.finance-page .goal-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}.finance-page .goal-card{min-width:0;padding:16px;border:1px solid var(--border);border-radius:11px;background:var(--surface-muted)}.finance-page .goal-card[data-goal-status=COMPLETED]{opacity:.82}.finance-page .goal-card>header{display:flex;align-items:flex-start;justify-content:space-between;gap:10px}.finance-page .goal-state{margin-bottom:6px;display:inline-flex;align-items:center;gap:5px;color:var(--text-secondary);font-size:10px;text-transform:uppercase;letter-spacing:.04em}.finance-page .goal-state mat-icon{width:15px;height:15px;font-size:15px}.finance-page .goal-amount{margin-top:17px;display:flex;justify-content:space-between;gap:10px}.finance-page .goal-amount strong{font-size:17px}.finance-page .goal-amount span{color:var(--text-secondary);font-size:12px}.finance-page .goal-card dl{margin:13px 0 0;display:grid;grid-template-columns:1fr 1fr;column-gap:18px}.finance-page .goal-card dl>div{padding:8px 0;border-top:1px solid var(--border)}.finance-page .goal-card dt{color:var(--text-secondary);font-size:10px}.finance-page .goal-card dd{margin:3px 0 0;font-size:11px;font-weight:600}.finance-page .goal-card .goal-alert dd{color:var(--danger)}.finance-page .goal-card>footer{min-height:42px;padding-top:12px;display:flex;align-items:center;gap:3px;border-top:1px solid var(--border)}.finance-page .goal-card footer button{font-size:11px}.finance-page .goal-card .delete-goal{margin-left:auto;color:var(--danger)}.finance-page .goal-empty{min-height:180px;grid-column:1/-1}@media(max-width:980px){.finance-page .budget-kpis{grid-template-columns:repeat(2,minmax(0,1fr))}.finance-page .cash-flow-card dl{grid-template-columns:repeat(3,minmax(0,1fr))}.finance-page .cash-flow-card dl>div:nth-child(4){border-left:0}}@media(max-width:720px){.finance-page .budget-heading{align-items:stretch;flex-direction:column}.finance-page .budget-heading button{width:100%}.finance-page .goal-grid{grid-template-columns:1fr}.finance-page .cash-flow-card dl{grid-template-columns:repeat(2,minmax(0,1fr))}.finance-page .cash-flow-card dl>div:nth-child(odd){border-left:0}.finance-page .total-budget-card>footer{align-items:flex-start;flex-wrap:wrap}.finance-page .total-budget-card>footer button{width:100%;margin-left:0}}@media(max-width:480px){.finance-page .budget-kpis{grid-template-columns:1fr 1fr;gap:9px}.finance-page .budget-kpi{padding:13px;align-items:flex-start;flex-direction:column}.finance-page .category-budget-item>header{grid-template-columns:34px minmax(0,1fr)}.finance-page .category-budget-item .budget-status{grid-column:2;justify-self:start}.finance-page .category-budget-item>footer{align-items:flex-start;flex-direction:column}.finance-page .cash-flow-card dl{grid-template-columns:1fr}.finance-page .cash-flow-card dl>div{border-left:0;border-top:1px solid var(--border)}.finance-page .cash-flow-card dl>div:first-child{border-top:0}.finance-page .goal-card dl{grid-template-columns:1fr}.finance-page .goal-card>footer{align-items:stretch;flex-wrap:wrap}.finance-page .goal-card>footer button:not(.delete-goal){flex:1}.finance-page .goal-card .delete-goal{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-flow{display:block;position:relative;width:100%;height:100%;overflow:hidden;pointer-events:all;-webkit-user-select:none;user-select:none;touch-action:none;color:var(--ff-flow-text-color);background:var(--ff-flow-background-color);font-family:var(--ff-flow-font-family);font-size:var(--ff-flow-font-size);line-height:1.4}f-flow .f-canvas,.f-flow .f-canvas{background:var(--ff-canvas-background-color)}f-flow .f-node,.f-flow .f-node{width:var(--ff-node-width);min-height:var(--ff-node-min-height);padding:var(--ff-node-padding);box-sizing:border-box;color:var(--ff-node-color);text-align:center;background:var(--ff-node-background-color);border:1px solid var(--ff-node-border-color);border-radius:var(--ff-node-border-radius);box-shadow:var(--ff-node-shadow)}f-flow .f-node .node-content,.f-flow .f-node .node-content{width:100%;height:100%;overflow:hidden}f-flow .f-node.f-selected,.f-flow .f-node.f-selected{border-color:var(--ff-node-border-color-selected);box-shadow:var(--ff-node-shadow-selected)}f-flow .f-node.f-dragging,.f-flow .f-node.f-dragging{box-shadow:var(--ff-node-shadow-selected)}f-flow .f-group,.f-flow .f-group{min-width:var(--ff-group-min-width);min-height:var(--ff-group-min-height);padding:var(--ff-group-padding);box-sizing:border-box;color:var(--ff-group-color);background:var(--ff-group-background-color);border:1px solid var(--ff-group-border-color);border-radius:var(--ff-group-border-radius)}f-flow .f-group.f-selected,.f-flow .f-group.f-selected{border-color:var(--ff-group-border-color-selected)}f-flow .f-drag-handle,.f-flow .f-drag-handle{cursor:move}f-flow .f-drag-handle img,.f-flow .f-drag-handle img{pointer-events:none}f-flow .f-resize-handle,.f-flow .f-resize-handle{position:absolute;width:var(--ff-resize-handle-size);height:var(--ff-resize-handle-size);box-sizing:border-box;border:1.5px solid var(--ff-resize-handle-stroke);border-radius:var(--ff-resize-handle-radius);background:var(--ff-resize-handle-fill);box-shadow:0 0 0 1px var(--ff-resize-handle-ring),0 1px 2px #0f0f0d2e;transition:background-color .15s cubic-bezier(.4,0,.2,1),box-shadow .15s cubic-bezier(.4,0,.2,1)}f-flow .f-resize-handle:hover,.f-flow .f-resize-handle:hover{box-shadow:0 0 0 1px var(--ff-resize-handle-ring),0 0 0 5px color-mix(in oklch,var(--ff-resize-handle-ring) 25%,transparent)}f-flow .f-resize-handle:active,.f-flow .f-resize-handle:active{background:var(--ff-resize-handle-fill-active);box-shadow:0 0 0 2px var(--ff-resize-handle-ring),0 0 0 6px color-mix(in oklch,var(--ff-resize-handle-ring) 28%,transparent)}f-flow .f-resize-handle.f-resize-handle-left,.f-flow .f-resize-handle.f-resize-handle-left{left:0;top:50%;transform:translate(-50%,-50%);cursor:col-resize}f-flow .f-resize-handle.f-resize-handle-left-top,.f-flow .f-resize-handle.f-resize-handle-left-top{left:0;top:0;transform:translate(-50%,-50%);cursor:nwse-resize}f-flow .f-resize-handle.f-resize-handle-top,.f-flow .f-resize-handle.f-resize-handle-top{left:50%;top:0;transform:translate(-50%,-50%);cursor:row-resize}f-flow .f-resize-handle.f-resize-handle-right-top,.f-flow .f-resize-handle.f-resize-handle-right-top{right:0;top:0;transform:translate(50%,-50%);cursor:nesw-resize}f-flow .f-resize-handle.f-resize-handle-right,.f-flow .f-resize-handle.f-resize-handle-right{right:0;top:50%;transform:translate(50%,-50%);cursor:col-resize}f-flow .f-resize-handle.f-resize-handle-right-bottom,.f-flow .f-resize-handle.f-resize-handle-right-bottom{right:0;bottom:0;transform:translate(50%,50%);cursor:nwse-resize}f-flow .f-resize-handle.f-resize-handle-bottom,.f-flow .f-resize-handle.f-resize-handle-bottom{left:50%;bottom:0;transform:translate(-50%,50%);cursor:row-resize}f-flow .f-resize-handle.f-resize-handle-left-bottom,.f-flow .f-resize-handle.f-resize-handle-left-bottom{left:0;bottom:0;transform:translate(-50%,50%);cursor:nesw-resize}f-flow .f-rotate-handle,.f-flow .f-rotate-handle{position:absolute;left:50%;top:calc(var(--ff-rotate-handle-offset) * -1);display:inline-flex;align-items:center;justify-content:center;width:var(--ff-rotate-handle-size);height:var(--ff-rotate-handle-size);box-sizing:border-box;border:1px solid var(--ff-rotate-handle-border-color);border-radius:50%;background:var(--ff-rotate-handle-background-color);transform:translate(-50%);cursor:grab;transition:background-color .15s cubic-bezier(.4,0,.2,1),border-color .15s cubic-bezier(.4,0,.2,1),box-shadow .15s cubic-bezier(.4,0,.2,1)}f-flow .f-rotate-handle:after,.f-flow .f-rotate-handle:after{content:"";position:absolute;left:50%;top:100%;width:1px;height:calc(var(--ff-rotate-handle-offset) - var(--ff-rotate-handle-size));background:var(--ff-rotate-handle-guide-color);transform:translate(-50%);pointer-events:none}f-flow .f-rotate-handle:hover,.f-flow .f-rotate-handle:hover{border-color:var(--ff-color-accent);box-shadow:0 0 0 4px color-mix(in oklch,var(--ff-color-accent) 22%,transparent)}f-flow .f-rotate-handle:active,.f-flow .f-rotate-handle:active{background:var(--ff-color-accent);border-color:var(--ff-color-accent);cursor:grabbing;box-shadow:0 0 0 4px color-mix(in oklch,var(--ff-color-accent) 22%,transparent)}f-flow .f-node-input:not(.f-node),f-flow .f-node-output:not(.f-node),f-flow .f-connector-source:not(.f-node),f-flow .f-connector-target:not(.f-node),f-flow .f-connector-source-target:not(.f-node),.f-flow .f-node-input:not(.f-node),.f-flow .f-node-output:not(.f-node),.f-flow .f-connector-source:not(.f-node),.f-flow .f-connector-target:not(.f-node),.f-flow .f-connector-source-target:not(.f-node){position:absolute;width:var(--ff-connector-size);height:var(--ff-connector-size);box-sizing:border-box;border:var(--ff-connector-border-width) solid var(--ff-connector-border-color);border-radius:50%;background:var(--ff-connector-background-color);pointer-events:all;transition:background-color .15s cubic-bezier(.4,0,.2,1),border-color .15s cubic-bezier(.4,0,.2,1),box-shadow .15s cubic-bezier(.4,0,.2,1)}f-flow .f-node-input:not(.f-node).left,f-flow .f-node-output:not(.f-node).left,f-flow .f-connector-source:not(.f-node).left,f-flow .f-connector-target:not(.f-node).left,f-flow .f-connector-source-target:not(.f-node).left,.f-flow .f-node-input:not(.f-node).left,.f-flow .f-node-output:not(.f-node).left,.f-flow .f-connector-source:not(.f-node).left,.f-flow .f-connector-target:not(.f-node).left,.f-flow .f-connector-source-target:not(.f-node).left{left:calc(var(--ff-connector-size) / -2);top:50%;transform:translateY(-50%)}f-flow .f-node-input:not(.f-node).right,f-flow .f-node-output:not(.f-node).right,f-flow .f-connector-source:not(.f-node).right,f-flow .f-connector-target:not(.f-node).right,f-flow .f-connector-source-target:not(.f-node).right,.f-flow .f-node-input:not(.f-node).right,.f-flow .f-node-output:not(.f-node).right,.f-flow .f-connector-source:not(.f-node).right,.f-flow .f-connector-target:not(.f-node).right,.f-flow .f-connector-source-target:not(.f-node).right{right:calc(var(--ff-connector-size) / -2);top:50%;transform:translateY(-50%)}f-flow .f-node-input:not(.f-node).top,f-flow .f-node-output:not(.f-node).top,f-flow .f-connector-source:not(.f-node).top,f-flow .f-connector-target:not(.f-node).top,f-flow .f-connector-source-target:not(.f-node).top,.f-flow .f-node-input:not(.f-node).top,.f-flow .f-node-output:not(.f-node).top,.f-flow .f-connector-source:not(.f-node).top,.f-flow .f-connector-target:not(.f-node).top,.f-flow .f-connector-source-target:not(.f-node).top{top:calc(var(--ff-connector-size) / -2);left:50%;transform:translate(-50%)}f-flow .f-node-input:not(.f-node).top-left,f-flow .f-node-output:not(.f-node).top-left,f-flow .f-connector-source:not(.f-node).top-left,f-flow .f-connector-target:not(.f-node).top-left,f-flow .f-connector-source-target:not(.f-node).top-left,.f-flow .f-node-input:not(.f-node).top-left,.f-flow .f-node-output:not(.f-node).top-left,.f-flow .f-connector-source:not(.f-node).top-left,.f-flow .f-connector-target:not(.f-node).top-left,.f-flow .f-connector-source-target:not(.f-node).top-left{top:calc(var(--ff-connector-size) / -2);left:calc(var(--ff-connector-size) / -2)}f-flow .f-node-input:not(.f-node).top-right,f-flow .f-node-output:not(.f-node).top-right,f-flow .f-connector-source:not(.f-node).top-right,f-flow .f-connector-target:not(.f-node).top-right,f-flow .f-connector-source-target:not(.f-node).top-right,.f-flow .f-node-input:not(.f-node).top-right,.f-flow .f-node-output:not(.f-node).top-right,.f-flow .f-connector-source:not(.f-node).top-right,.f-flow .f-connector-target:not(.f-node).top-right,.f-flow .f-connector-source-target:not(.f-node).top-right{top:calc(var(--ff-connector-size) / -2);right:calc(var(--ff-connector-size) / -2)}f-flow .f-node-input:not(.f-node).bottom,f-flow .f-node-output:not(.f-node).bottom,f-flow .f-connector-source:not(.f-node).bottom,f-flow .f-connector-target:not(.f-node).bottom,f-flow .f-connector-source-target:not(.f-node).bottom,.f-flow .f-node-input:not(.f-node).bottom,.f-flow .f-node-output:not(.f-node).bottom,.f-flow .f-connector-source:not(.f-node).bottom,.f-flow .f-connector-target:not(.f-node).bottom,.f-flow .f-connector-source-target:not(.f-node).bottom{bottom:calc(var(--ff-connector-size) / -2);left:50%;transform:translate(-50%)}f-flow .f-node-input:not(.f-node).bottom-left,f-flow .f-node-output:not(.f-node).bottom-left,f-flow .f-connector-source:not(.f-node).bottom-left,f-flow .f-connector-target:not(.f-node).bottom-left,f-flow .f-connector-source-target:not(.f-node).bottom-left,.f-flow .f-node-input:not(.f-node).bottom-left,.f-flow .f-node-output:not(.f-node).bottom-left,.f-flow .f-connector-source:not(.f-node).bottom-left,.f-flow .f-connector-target:not(.f-node).bottom-left,.f-flow .f-connector-source-target:not(.f-node).bottom-left{bottom:calc(var(--ff-connector-size) / -2);left:calc(var(--ff-connector-size) / -2)}f-flow .f-node-input:not(.f-node).bottom-right,f-flow .f-node-output:not(.f-node).bottom-right,f-flow .f-connector-source:not(.f-node).bottom-right,f-flow .f-connector-target:not(.f-node).bottom-right,f-flow .f-connector-source-target:not(.f-node).bottom-right,.f-flow .f-node-input:not(.f-node).bottom-right,.f-flow .f-node-output:not(.f-node).bottom-right,.f-flow .f-connector-source:not(.f-node).bottom-right,.f-flow .f-connector-target:not(.f-node).bottom-right,.f-flow .f-connector-source-target:not(.f-node).bottom-right{bottom:calc(var(--ff-connector-size) / -2);right:calc(var(--ff-connector-size) / -2)}f-flow .f-node-input:not(.f-node):hover,f-flow .f-node-output:not(.f-node):hover,f-flow .f-connector-source:not(.f-node):hover,f-flow .f-connector-target:not(.f-node):hover,f-flow .f-connector-source-target:not(.f-node):hover,.f-flow .f-node-input:not(.f-node):hover,.f-flow .f-node-output:not(.f-node):hover,.f-flow .f-connector-source:not(.f-node):hover,.f-flow .f-connector-target:not(.f-node):hover,.f-flow .f-connector-source-target:not(.f-node):hover{box-shadow:0 0 0 4px color-mix(in oklch,var(--ff-connector-accent-color) 22%,transparent)}f-flow .f-node-input:not(.f-node).f-connector-connectable,f-flow .f-node-output:not(.f-node).f-connector-connectable,f-flow .f-connector-source:not(.f-node).f-connector-connectable,f-flow .f-connector-target:not(.f-node).f-connector-connectable,f-flow .f-connector-source-target:not(.f-node).f-connector-connectable,.f-flow .f-node-input:not(.f-node).f-connector-connectable,.f-flow .f-node-output:not(.f-node).f-connector-connectable,.f-flow .f-connector-source:not(.f-node).f-connector-connectable,.f-flow .f-connector-target:not(.f-node).f-connector-connectable,.f-flow .f-connector-source-target:not(.f-node).f-connector-connectable{border-color:var(--ff-connector-accent-color)}f-flow .f-node-input:not(.f-node).f-node-output-connected,f-flow .f-node-input:not(.f-node).f-node-input-connected,f-flow .f-node-input:not(.f-node).f-connector-connected,f-flow .f-node-output:not(.f-node).f-node-output-connected,f-flow .f-node-output:not(.f-node).f-node-input-connected,f-flow .f-node-output:not(.f-node).f-connector-connected,f-flow .f-connector-source:not(.f-node).f-node-output-connected,f-flow .f-connector-source:not(.f-node).f-node-input-connected,f-flow .f-connector-source:not(.f-node).f-connector-connected,f-flow .f-connector-target:not(.f-node).f-node-output-connected,f-flow .f-connector-target:not(.f-node).f-node-input-connected,f-flow .f-connector-target:not(.f-node).f-connector-connected,f-flow .f-connector-source-target:not(.f-node).f-node-output-connected,f-flow .f-connector-source-target:not(.f-node).f-node-input-connected,f-flow .f-connector-source-target:not(.f-node).f-connector-connected,.f-flow .f-node-input:not(.f-node).f-node-output-connected,.f-flow .f-node-input:not(.f-node).f-node-input-connected,.f-flow .f-node-input:not(.f-node).f-connector-connected,.f-flow .f-node-output:not(.f-node).f-node-output-connected,.f-flow .f-node-output:not(.f-node).f-node-input-connected,.f-flow .f-node-output:not(.f-node).f-connector-connected,.f-flow .f-connector-source:not(.f-node).f-node-output-connected,.f-flow .f-connector-source:not(.f-node).f-node-input-connected,.f-flow .f-connector-source:not(.f-node).f-connector-connected,.f-flow .f-connector-target:not(.f-node).f-node-output-connected,.f-flow .f-connector-target:not(.f-node).f-node-input-connected,.f-flow .f-connector-target:not(.f-node).f-connector-connected,.f-flow .f-connector-source-target:not(.f-node).f-node-output-connected,.f-flow .f-connector-source-target:not(.f-node).f-node-input-connected,.f-flow .f-connector-source-target:not(.f-node).f-connector-connected{background:var(--ff-connector-connected-color);border-color:var(--ff-connector-connected-color)}f-flow .f-node-input:not(.f-node).f-node-output-not-connectable,f-flow .f-node-input:not(.f-node).f-node-input-not-connectable,f-flow .f-node-input:not(.f-node).f-connector-not-connectable,f-flow .f-node-input:not(.f-node).f-node-input-disabled,f-flow .f-node-input:not(.f-node).f-node-output-disabled,f-flow .f-node-input:not(.f-node).f-connector-disabled,f-flow .f-node-output:not(.f-node).f-node-output-not-connectable,f-flow .f-node-output:not(.f-node).f-node-input-not-connectable,f-flow .f-node-output:not(.f-node).f-connector-not-connectable,f-flow .f-node-output:not(.f-node).f-node-input-disabled,f-flow .f-node-output:not(.f-node).f-node-output-disabled,f-flow .f-node-output:not(.f-node).f-connector-disabled,f-flow .f-connector-source:not(.f-node).f-node-output-not-connectable,f-flow .f-connector-source:not(.f-node).f-node-input-not-connectable,f-flow .f-connector-source:not(.f-node).f-connector-not-connectable,f-flow .f-connector-source:not(.f-node).f-node-input-disabled,f-flow .f-connector-source:not(.f-node).f-node-output-disabled,f-flow .f-connector-source:not(.f-node).f-connector-disabled,f-flow .f-connector-target:not(.f-node).f-node-output-not-connectable,f-flow .f-connector-target:not(.f-node).f-node-input-not-connectable,f-flow .f-connector-target:not(.f-node).f-connector-not-connectable,f-flow .f-connector-target:not(.f-node).f-node-input-disabled,f-flow .f-connector-target:not(.f-node).f-node-output-disabled,f-flow .f-connector-target:not(.f-node).f-connector-disabled,f-flow .f-connector-source-target:not(.f-node).f-node-output-not-connectable,f-flow .f-connector-source-target:not(.f-node).f-node-input-not-connectable,f-flow .f-connector-source-target:not(.f-node).f-connector-not-connectable,f-flow .f-connector-source-target:not(.f-node).f-node-input-disabled,f-flow .f-connector-source-target:not(.f-node).f-node-output-disabled,f-flow .f-connector-source-target:not(.f-node).f-connector-disabled,.f-flow .f-node-input:not(.f-node).f-node-output-not-connectable,.f-flow .f-node-input:not(.f-node).f-node-input-not-connectable,.f-flow .f-node-input:not(.f-node).f-connector-not-connectable,.f-flow .f-node-input:not(.f-node).f-node-input-disabled,.f-flow .f-node-input:not(.f-node).f-node-output-disabled,.f-flow .f-node-input:not(.f-node).f-connector-disabled,.f-flow .f-node-output:not(.f-node).f-node-output-not-connectable,.f-flow .f-node-output:not(.f-node).f-node-input-not-connectable,.f-flow .f-node-output:not(.f-node).f-connector-not-connectable,.f-flow .f-node-output:not(.f-node).f-node-input-disabled,.f-flow .f-node-output:not(.f-node).f-node-output-disabled,.f-flow .f-node-output:not(.f-node).f-connector-disabled,.f-flow .f-connector-source:not(.f-node).f-node-output-not-connectable,.f-flow .f-connector-source:not(.f-node).f-node-input-not-connectable,.f-flow .f-connector-source:not(.f-node).f-connector-not-connectable,.f-flow .f-connector-source:not(.f-node).f-node-input-disabled,.f-flow .f-connector-source:not(.f-node).f-node-output-disabled,.f-flow .f-connector-source:not(.f-node).f-connector-disabled,.f-flow .f-connector-target:not(.f-node).f-node-output-not-connectable,.f-flow .f-connector-target:not(.f-node).f-node-input-not-connectable,.f-flow .f-connector-target:not(.f-node).f-connector-not-connectable,.f-flow .f-connector-target:not(.f-node).f-node-input-disabled,.f-flow .f-connector-target:not(.f-node).f-node-output-disabled,.f-flow .f-connector-target:not(.f-node).f-connector-disabled,.f-flow .f-connector-source-target:not(.f-node).f-node-output-not-connectable,.f-flow .f-connector-source-target:not(.f-node).f-node-input-not-connectable,.f-flow .f-connector-source-target:not(.f-node).f-connector-not-connectable,.f-flow .f-connector-source-target:not(.f-node).f-node-input-disabled,.f-flow .f-connector-source-target:not(.f-node).f-node-output-disabled,.f-flow .f-connector-source-target:not(.f-node).f-connector-disabled{background:var(--ff-connector-disabled-color);border-color:var(--ff-connector-disabled-border-color);box-shadow:none}f-flow .f-node-input:not(.f-node),f-flow .f-connector-target:not(.f-node),.f-flow .f-node-input:not(.f-node),.f-flow .f-connector-target:not(.f-node){border-radius:var(--ff-connector-input-radius)}f-flow .f-connections-dragging .f-node-input:not(.f-connector-connectable):not(.f-node-input-connected):not(.f-node-output-connected):not(.f-connector-connected),f-flow .f-connections-dragging .f-node-output:not(.f-connector-connectable):not(.f-node-input-connected):not(.f-node-output-connected):not(.f-connector-connected),f-flow .f-connections-dragging .f-connector-source:not(.f-connector-connectable):not(.f-node-input-connected):not(.f-node-output-connected):not(.f-connector-connected),f-flow .f-connections-dragging .f-connector-target:not(.f-connector-connectable):not(.f-node-input-connected):not(.f-node-output-connected):not(.f-connector-connected),f-flow .f-connections-dragging .f-connector-source-target:not(.f-connector-connectable):not(.f-node-input-connected):not(.f-node-output-connected):not(.f-connector-connected),.f-flow .f-connections-dragging .f-node-input:not(.f-connector-connectable):not(.f-node-input-connected):not(.f-node-output-connected):not(.f-connector-connected),.f-flow .f-connections-dragging .f-node-output:not(.f-connector-connectable):not(.f-node-input-connected):not(.f-node-output-connected):not(.f-connector-connected),.f-flow .f-connections-dragging .f-connector-source:not(.f-connector-connectable):not(.f-node-input-connected):not(.f-node-output-connected):not(.f-connector-connected),.f-flow .f-connections-dragging .f-connector-target:not(.f-connector-connectable):not(.f-node-input-connected):not(.f-node-output-connected):not(.f-connector-connected),.f-flow .f-connections-dragging .f-connector-source-target:not(.f-connector-connectable):not(.f-node-input-connected):not(.f-node-output-connected):not(.f-connector-connected){border-color:var(--ff-connector-disabled-border-color)}f-flow .f-node-outlet,f-flow .f-connector-outlet,.f-flow .f-node-outlet,.f-flow .f-connector-outlet{display:inline-flex;align-items:center;justify-content:center;gap:8px;min-height:32px;padding:var(--ff-outlet-padding-y) var(--ff-outlet-padding-x);box-sizing:border-box;border:1px solid var(--ff-outlet-border-color);border-radius:var(--ff-outlet-border-radius);background:var(--ff-outlet-background-color);color:var(--ff-outlet-color);pointer-events:all}f-flow .f-node-outlet.f-node-outlet-disabled,f-flow .f-node-outlet.f-connector-disabled,f-flow .f-connector-outlet.f-node-outlet-disabled,f-flow .f-connector-outlet.f-connector-disabled,.f-flow .f-node-outlet.f-node-outlet-disabled,.f-flow .f-node-outlet.f-connector-disabled,.f-flow .f-connector-outlet.f-node-outlet-disabled,.f-flow .f-connector-outlet.f-connector-disabled{background:var(--ff-outlet-disabled-background-color);border-color:var(--ff-outlet-disabled-border-color);color:var(--ff-outlet-disabled-color)}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-external-item{display:inline-flex;align-items:center;gap:8px;padding:12px 14px;box-sizing:border-box;color:var(--ff-external-item-color);background:var(--ff-external-item-background-color);border:1px solid var(--ff-external-item-border-color);border-radius:var(--ff-external-item-border-radius);box-shadow:var(--ff-external-item-shadow);cursor:grab;-webkit-user-select:none;user-select:none}.f-external-item.f-external-item-disabled{color:var(--ff-external-item-disabled-color);background:var(--ff-external-item-disabled-background-color);cursor:not-allowed}.f-external-item-preview{box-sizing:border-box;box-shadow:var(--ff-external-item-preview-shadow)}.f-external-item-placeholder{box-sizing:border-box;background:var(--ff-external-item-placeholder-background-color);border:1px dashed var(--ff-external-item-placeholder-border-color);border-radius:var(--ff-external-item-border-radius)}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)}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-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-magnetic-lines .f-line,f-flow .f-line-alignment .f-line,.f-flow .f-magnetic-lines .f-line,.f-flow .f-line-alignment .f-line{background:var(--ff-magnetic-line-color)}f-flow .f-magnetic-rects .f-rect,.f-flow .f-magnetic-rects .f-rect{box-sizing:border-box;background:var(--ff-magnetic-rect-fill);border:1px solid var(--ff-magnetic-rect-border-color)}
