@import "https://fonts.googleapis.com/css2?family=JetBrains+Mono:wght@400;500;600&display=swap";@font-face{font-family:Inter;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/inter-latin-400-normal-C38fXH4l.woff2)format("woff2"),url(/assets/inter-latin-400-normal-CyCys3Eg.woff)format("woff")}@font-face{font-family:Inter;font-style:normal;font-display:swap;font-weight:500;src:url(/assets/inter-latin-500-normal-Cerq10X2.woff2)format("woff2"),url(/assets/inter-latin-500-normal-BL9OpVg8.woff)format("woff")}@font-face{font-family:Inter;font-style:normal;font-display:swap;font-weight:600;src:url(/assets/inter-latin-600-normal-LgqL8muc.woff2)format("woff2"),url(/assets/inter-latin-600-normal-CiBQ2DWP.woff)format("woff")}@font-face{font-family:Inter;font-style:normal;font-display:swap;font-weight:700;src:url(/assets/inter-latin-700-normal-Yt3aPRUw.woff2)format("woff2"),url(/assets/inter-latin-700-normal-BLAVimhd.woff)format("woff")}@font-face{font-family:IBM Plex Sans Arabic;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/ibm-plex-sans-arabic-arabic-400-normal-CyU-ddYS.woff2)format("woff2"),url(/assets/ibm-plex-sans-arabic-arabic-400-normal-CZLC1jgY.woff)format("woff")}@font-face{font-family:IBM Plex Sans Arabic;font-style:normal;font-display:swap;font-weight:500;src:url(/assets/ibm-plex-sans-arabic-arabic-500-normal-C4MQITzh.woff2)format("woff2"),url(/assets/ibm-plex-sans-arabic-arabic-500-normal-XmtXq_5I.woff)format("woff")}@font-face{font-family:IBM Plex Sans Arabic;font-style:normal;font-display:swap;font-weight:600;src:url(/assets/ibm-plex-sans-arabic-arabic-600-normal-0pRdybE_.woff2)format("woff2"),url(/assets/ibm-plex-sans-arabic-arabic-600-normal-B3qNl98V.woff)format("woff")}@font-face{font-family:IBM Plex Sans Arabic;font-style:normal;font-display:swap;font-weight:700;src:url(/assets/ibm-plex-sans-arabic-arabic-700-normal-DrtBj6UE.woff2)format("woff2"),url(/assets/ibm-plex-sans-arabic-arabic-700-normal-COV7B1nq.woff)format("woff")}@font-face{font-family:Amiri Quran;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/amiri-quran-arabic-400-normal-wRcqfVJx.woff2)format("woff2"),url(/assets/amiri-quran-arabic-400-normal-CZ144KtP.woff)format("woff")}:root{--font-sans:"Inter", system-ui, sans-serif;--font-display:"Inter", system-ui, sans-serif;--font-mono:"JetBrains Mono", ui-monospace, monospace}html[lang=ar]{--font-sans:"IBM Plex Sans Arabic", "Inter", system-ui, sans-serif;--font-display:"Amiri Quran", "IBM Plex Sans Arabic", Georgia, serif}*,:before,:after{box-sizing:border-box}html,body,#root{height:100%;margin:0}body{font-family:var(--font-sans);color:#e2e8f0;-webkit-font-smoothing:antialiased;background:radial-gradient(1200px 600px at 20% -10%,#172554 0%,#0000 55%),radial-gradient(900px 500px at 90% 10%,#38bdf814,#0000 50%),#070b14;font-size:15px;line-height:1.45}h1,h2,h3,.ff-home__hero h1,.ff-home__section-head h2,.ff-cap-card h3,.ff-scenario-card__title,.ff-mobile-orchestration__title{font-family:var(--font-display);font-weight:600}html[lang=ar] h1,html[lang=ar] h2,html[lang=ar] h3{font-weight:700;line-height:1.35}.ff-shell{flex-direction:column;height:100%;min-height:100%;display:flex}.visually-hidden{clip:rect(0, 0, 0, 0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.ff-skip-link{z-index:10000;color:#f8fafc;background:#0f172a;border:1px solid #38bdf873;border-radius:8px;width:1px;height:1px;padding:10px 16px;font-size:14px;font-weight:600;text-decoration:none;position:absolute;top:auto;left:-10000px;overflow:hidden;box-shadow:0 8px 24px #020617a6}.ff-skip-link:focus{width:auto;height:auto;top:16px;left:16px;overflow:visible}.ff-brand{align-items:center;gap:10px;display:inline-flex}.ff-brand__mark{flex-shrink:0;display:block}.ff-brand__wordmark{letter-spacing:.03em;color:inherit;font-weight:700}.ff-orchestration{-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px);background:#0f172ab8;border-bottom:1px solid #94a3b82e;grid-template-columns:minmax(200px,1.2fr) auto 1fr auto;align-items:center;gap:16px;padding:14px 20px;display:grid}.ff-orchestration__brand{flex-direction:column;align-items:flex-start;gap:6px;max-width:min(480px,100%);display:flex}.ff-playground .ff-orchestration__brand{max-width:min(560px,100%)}.ff-scenario-picker{width:100%}.ff-scenario-select{color:#f1f5f9;width:100%;max-width:320px;font:inherit;cursor:pointer;background:#0f172af2;border:1px solid #94a3b859;border-radius:10px;padding:8px 12px;font-size:14px;font-weight:500}.ff-scenario-select:focus-visible{outline-offset:2px;outline:2px solid #38bdf88c}.ff-orchestration__subtitle{color:#94a3b8;max-width:480px;font-size:12px;line-height:1.4}.ff-orchestration__context{color:#d1fae5;letter-spacing:.01em;background:#22c55e1f;border:1px solid #34d39959;border-left:3px solid #34d399;border-radius:8px;max-width:min(560px,100%);margin-top:6px;padding:8px 12px;font-size:13px;font-weight:500;line-height:1.45;display:block;box-shadow:0 0 24px #34d39914}.ff-orchestration__brand-top{justify-content:space-between;align-items:center;gap:12px;width:100%;display:flex}.ff-orchestration__logo{align-items:center;text-decoration:none;transition:opacity .14s;display:inline-flex}.ff-orchestration__logo:hover{opacity:.92}.ff-orchestration__logo-text{letter-spacing:.04em;color:#e2e8f0;font-size:13px;font-weight:600}.ff-back-link{white-space:nowrap;padding:6px 10px;font-size:12px}.ff-orchestration__flow-name{color:#f8fafc;font-size:15px;font-weight:500}.ff-orchestration__status{align-items:center;gap:10px;display:flex}.ff-orchestration__meta{color:#94a3b8;font-size:13px}.ff-pill{color:#cbd5e1;border:1px solid #94a3b859;border-radius:999px;padding:4px 10px;font-size:12px;font-weight:500}.ff-pill--running{color:#bae6fd;border-color:#38bdf88c;box-shadow:0 0 0 1px #38bdf826,0 0 24px #38bdf82e}.ff-pill--paused{color:#fcd34d;border-color:#fbbf2473}.ff-pill--completed{color:#6ee7b7;border-color:#34d39973}.ff-orchestration__progress{background:#1e293bf2;border-radius:999px;grid-column:1/-1;height:3px;overflow:hidden}@media (width>=960px){.ff-orchestration{grid-template-columns:minmax(220px,1fr) auto minmax(120px,1fr) auto}.ff-orchestration__progress{grid-area:1/3;align-self:center}}.ff-orchestration__progress-fill{border-radius:inherit;background:linear-gradient(90deg,#38bdf8,#34d399);height:100%;transition:width .24s}.ff-orchestration__controls{flex-wrap:wrap;justify-content:flex-end;align-items:center;gap:12px;display:flex}.ff-orchestration__controls-secondary{border-left:1px solid #94a3b833;flex-wrap:wrap;align-items:center;gap:6px;padding-left:12px;display:flex}.ff-btn-play{font:inherit;cursor:pointer;border:none;border-radius:12px;align-items:center;gap:8px;font-weight:600;transition:transform 80ms,box-shadow .16s,filter .16s;display:inline-flex}.ff-btn-play:hover:not(:disabled){filter:brightness(1.08)}.ff-btn-play:active:not(:disabled){transform:translateY(1px)}.ff-btn-play:disabled{opacity:.5;cursor:not-allowed}.ff-btn-play:focus-visible{outline-offset:3px;outline:2px solid #38bdf8a6}.ff-btn-play--hero{color:#0f172a;background:linear-gradient(135deg,#38bdf8 0%,#22d3ee 45%,#34d399 100%);padding:11px 22px;font-size:14px;box-shadow:0 0 0 1px #38bdf866,0 4px 24px #38bdf859,0 8px 32px #00000040}.ff-btn-play--hero.ff-btn-play--running{color:#fef3c7;background:linear-gradient(135deg,#f59e0b 0%,#fbbf24 100%);box-shadow:0 0 0 1px #fbbf2473,0 4px 24px #fbbf244d}.ff-btn-play--hero.ff-btn-play--paused{color:#ecfeff;background:linear-gradient(135deg,#0ea5e9 0%,#38bdf8 100%)}.ff-btn-play--hero.ff-btn-play--completed{color:#d1fae5;background:linear-gradient(135deg,#059669 0%,#34d399 100%)}.ff-btn-play--dock{color:#0f172a;background:linear-gradient(135deg,#38bdf8,#34d399);padding:8px 16px;font-size:12px;box-shadow:0 0 20px #38bdf859}.ff-btn-play--dock.ff-btn-play--running{color:#fef3c7;background:linear-gradient(135deg,#f59e0b,#fbbf24)}.ff-btn-play__icon{font-size:1.05em;line-height:1}.ff-playground .ff-orchestration__controls{flex-shrink:0}.ff-speed{color:#94a3b8;align-items:center;gap:8px;font-size:12px;display:flex}.ff-speed select{color:#e2e8f0;font:inherit;background:#0f172af2;border:1px solid #94a3b840;border-radius:8px;padding:6px 10px}.ff-case-picker{color:#94a3b8;align-items:center;gap:8px;font-size:12px;display:flex}.ff-case-picker select{color:#e2e8f0;font:inherit;background:#0f172af2;border:1px solid #94a3b840;border-radius:8px;max-width:260px;padding:6px 10px}.ff-case-picker select:disabled{opacity:.5;cursor:not-allowed}.ff-btn{color:#e2e8f0;cursor:pointer;background:#0f172aa6;border:1px solid #94a3b847;border-radius:10px;padding:8px 14px;font-size:13px;font-weight:500;transition:border-color .14s,box-shadow .14s,transform 80ms}.ff-btn:hover:not(:disabled){border-color:#bae6fd73}.ff-btn:active:not(:disabled){transform:translateY(1px)}.ff-btn:disabled{opacity:.45;cursor:not-allowed}.ff-btn--primary{border-color:#38bdf88c;box-shadow:0 0 20px #38bdf82e}.ff-btn--ghost{background:0 0}.ff-main{flex:1;grid-template-columns:1fr minmax(320px,400px);min-height:0;display:grid}.ff-playground .ff-main,.ff-playground__main{grid-template-columns:1fr minmax(300px,380px)}.ff-sidebar{background:#0a0e1ab8;border-left:1px solid #94a3b826;flex-direction:column;min-width:0;min-height:0;display:flex}.ff-node-inspector{border-bottom:1px solid #94a3b81f;flex-direction:column;flex:58%;min-height:0;display:flex}.ff-node-inspector--empty{flex:none;min-height:0}.ff-node-inspector__head{background:#0f172a8c;border-bottom:1px solid #94a3b81a;flex-shrink:0;padding:14px 14px 12px}.ff-node-inspector__head-row{align-items:flex-start;gap:10px;display:flex}.ff-node-inspector__icon{border-radius:10px;flex-shrink:0;justify-content:center;align-items:center;width:36px;height:36px;display:flex}.ff-node-inspector__icon .ff-node__icon-svg{width:18px;height:18px}.ff-node-inspector__titles{flex:1;min-width:0}.ff-node-inspector__titles h2{color:#f8fafc;margin:0;font-size:15px;font-weight:600;line-height:1.25}.ff-node-inspector__kind{color:#94a3b8;text-transform:capitalize;font-size:12px}.ff-node-inspector__close{color:#94a3b8;cursor:pointer;background:#33415580;border:none;border-radius:8px;flex-shrink:0;width:28px;height:28px;font-size:18px;line-height:1;transition:background .14s,color .14s}.ff-node-inspector__close:hover{color:#e2e8f0;background:#475569cc}.ff-node-inspector__badges{flex-wrap:wrap;align-items:center;gap:8px;margin-top:10px;display:flex}.ff-node-inspector__phase{color:#64748b;font-size:11px}.ff-node-inspector__head p{color:#94a3b8;margin:6px 0 0;font-size:12px;line-height:1.45}.ff-node-inspector__placeholder{text-align:center;color:#64748b;padding:20px 14px 24px}.ff-node-inspector__placeholder-icon{opacity:.5;margin-bottom:8px;font-size:28px;display:block}.ff-node-inspector__body{overscroll-behavior:contain;flex:1;min-height:0;padding:12px 14px 16px;overflow:hidden auto}.ff-detail-section{margin-bottom:16px}.ff-detail-section h3{letter-spacing:.08em;text-transform:uppercase;color:#64748b;margin:0 0 8px;font-size:11px;font-weight:600}.ff-detail-prose{color:#cbd5e1;margin:0;font-size:13px;line-height:1.5}.ff-detail-prose strong{color:#e2e8f0;font-weight:600}.ff-detail-dl{flex-direction:column;gap:8px;margin:0;display:flex}.ff-detail-dl>div{grid-template-columns:1fr 1.2fr;align-items:baseline;gap:8px;display:grid}.ff-detail-dl dt{color:#94a3b8;font-size:12px}.ff-detail-dl dd{color:#e2e8f0;text-align:right;margin:0;font-size:12px}.ff-detail-dl__mono{word-break:break-all;font-family:JetBrains Mono,ui-monospace,monospace;font-size:11px}.ff-detail-muted{font-style:italic;color:#64748b!important}.ff-detail-subhead{color:#94a3b8;margin:10px 0 6px;font-size:11px;font-weight:600}.ff-detail-empty{color:#64748b;margin:0 0 8px;font-size:12px;font-style:italic}.ff-detail-edges{flex-direction:column;gap:6px;margin:0 0 4px;padding:0;list-style:none;display:flex}.ff-detail-edge{background:#1e293b8c;border:1px solid #33415599;border-radius:8px;align-items:center;gap:6px;padding:6px 8px;font-size:12px;display:flex}.ff-detail-edge__arrow{color:#64748b;flex-shrink:0}.ff-detail-edge__peer{color:#e2e8f0;text-overflow:ellipsis;white-space:nowrap;flex:1;min-width:0;overflow:hidden}.ff-detail-edge__label{color:#cbd5e1;background:#334155cc;border-radius:4px;flex-shrink:0;padding:2px 6px;font-size:10px;font-weight:600}.ff-detail-json{color:#cbd5e1;background:#0f172ae6;border:1px solid #334155a6;border-radius:8px;margin:0;padding:10px;font-family:JetBrains Mono,ui-monospace,monospace;font-size:11px;line-height:1.45;overflow-x:auto}.ff-detail-events{flex-direction:column;gap:6px;margin:0;padding:0;list-style:none;display:flex}.ff-detail-events li{background:#0f172a80;border:1px solid #3341558c;border-radius:8px;padding:8px 10px}.ff-detail-events__title{color:#e2e8f0;font-size:12px;font-weight:600;display:block}.ff-detail-events__detail{color:#94a3b8;margin-top:2px;font-size:11px;display:block}.ff-detail-events__item--success{border-color:#34d3994d}.ff-sidebar .ff-timeline{background:0 0;border-left:none;flex:0 42%;min-height:140px;max-height:42%}@media (width<=900px){.ff-main{grid-template-rows:minmax(420px,55vh) auto;grid-template-columns:1fr}}.ff-canvas-wrap{background:radial-gradient(80% 50% at 50% 0,#38bdf80f,#0000 55%),#0a0f1a;height:100%;min-height:420px;position:relative}.ff-canvas-wrap:after{content:"";pointer-events:none;z-index:2;background:radial-gradient(#0000 40%,#070b148c 100%);position:absolute;inset:0}.ff-flow-editor--live .react-flow__background{animation:3s ease-in-out infinite ff-canvas-breathe}@keyframes ff-canvas-breathe{0%,to{opacity:1}50%{opacity:.92}}.ff-flow-editor .react-flow__pane{cursor:grab}.ff-flow-editor .react-flow__pane:active{cursor:grabbing}.ff-canvas-hint{color:#64748b!important;background:#0f172ae0!important;border:1px solid #94a3b833!important;border-radius:8px!important;margin:12px!important;padding:6px 12px!important;font-size:11px!important;box-shadow:0 4px 16px #00000040!important}.ff-flow-controls{background:#0f172aeb!important;border:1px solid #94a3b840!important;border-radius:12px!important;gap:4px!important;padding:6px!important;display:flex!important;box-shadow:0 8px 24px #00000059!important}.ff-flow-controls button{color:#cbd5e1!important;fill:#cbd5e1!important;background:#1e293be6!important;border:1px solid #94a3b833!important;border-radius:8px!important}.ff-flow-controls button:hover{background:#334155f2!important}.ff-canvas-wrap .react-flow{height:100%}.ff-canvas-wrap .react-flow__edges{isolation:isolate}.ff-canvas-loading{text-align:center;flex-direction:column;justify-content:center;align-items:center;gap:10px;height:100%;min-height:420px;padding:24px;display:flex}.ff-canvas-loading__title{color:#e2e8f0;letter-spacing:.02em;margin:4px 0 0;font-size:15px;font-weight:600}.ff-canvas-loading__detail{color:#94a3b8;letter-spacing:.02em;margin:0;font-size:13px}.ff-minimap{overflow:hidden;border:1px solid #94a3b838!important;border-radius:10px!important}.ff-node{box-sizing:border-box;cursor:pointer;width:100%;min-width:0;height:100%;transition:border-color .18s,box-shadow .22s,transform .16s;position:relative}.ff-node--process{box-shadow:none;background:0 0;border:none;padding:0;overflow:visible}.ff-node__card{background:#1a2332;border:1px solid #475569a6;border-radius:12px;flex-direction:column;width:100%;height:100%;display:flex;position:relative;overflow:hidden;box-shadow:inset 0 1px #ffffff0a,0 10px 28px #0000006b}.ff-node__accent-bar{background:var(--accent);border-radius:12px 0 0 12px;width:4px;position:absolute;top:0;bottom:0;left:0}.ff-node__header{background:#0f172a73;border-bottom:1px solid #3341558c;align-items:center;gap:8px;padding:10px 12px 8px 14px;display:flex}.ff-node__icon-wrap{background:var(--accent-muted);width:28px;height:28px;color:var(--accent);border-radius:8px;flex-shrink:0;justify-content:center;align-items:center;display:flex}.ff-node__icon-svg{width:16px;height:16px}.ff-node__type{letter-spacing:.04em;text-transform:capitalize;color:#94a3b8;font-size:11px;font-weight:600}.ff-node__body{flex:1;align-items:center;min-height:0;padding:10px 12px 8px 14px;display:flex}.ff-node__card .ff-node__label{color:#f1f5f9;font-size:14px;font-weight:600;line-height:1.3}.ff-node__footer{padding:0 12px 10px 14px}.ff-node__failure-msg{color:#fca5a5;text-overflow:ellipsis;-webkit-line-clamp:2;-webkit-box-orient:vertical;max-width:100%;margin-top:6px;padding:3px 0;font-size:10px;font-style:italic;line-height:1.35;display:-webkit-box;overflow:hidden}.ff-node__failure-msg--compact{text-align:center;max-width:80px;margin-top:3px;font-size:9px}.ff-status-pill{letter-spacing:.02em;text-transform:lowercase;border:1px solid #0000;border-radius:6px;align-items:center;padding:3px 8px;font-family:JetBrains Mono,ui-monospace,monospace;font-size:10px;font-weight:500;display:inline-flex}.ff-status-pill--idle{color:#94a3b8;background:#33415573;border-color:#47556980}.ff-status-pill--running{color:#7dd3fc;background:#38bdf81f;border-color:#38bdf859}.ff-status-pill--success{color:#6ee7b7;background:#34d3991a;border-color:#34d39959}.ff-status-pill--failed{color:#fca5a5;background:#f871711a;border-color:#f8717159}.ff-status-pill--pending,.ff-status-pill--paused,.ff-status-pill--retrying{color:#fcd34d;background:#fbbf241a;border-color:#fbbf2452}.ff-node--terminal{background:radial-gradient(circle at 32% 28%, var(--accent-muted,#4ade8038), #0f172aeb 58%);border:2px solid #94a3b873;border-radius:50%;justify-content:center;align-items:center;padding:0;display:flex;box-shadow:0 10px 32px #0000006b,inset 0 1px #ffffff12}.ff-node--terminal-exit{box-shadow:0 0 0 3px #0f172af2, 0 0 0 5px color-mix(in srgb, var(--accent,#f87171) 55%, transparent), 0 12px 36px #00000073, inset 0 1px 0 #ffffff0f;border-width:2px}.ff-node__inner--terminal{text-align:center;flex-direction:column;justify-content:center;align-items:center;gap:4px;max-width:92%;padding:8px 10px;display:flex}.ff-node__inner--terminal .ff-node__icon-svg{width:18px;height:18px;color:var(--accent)}.ff-node__inner--condition .ff-node__icon-svg{width:14px;height:14px;color:var(--accent);margin-bottom:2px}.ff-node__inner--terminal .ff-node__kind{margin-bottom:2px;font-size:10px}.ff-node__inner--terminal .ff-node__label{font-size:12px;line-height:1.2}.ff-node__inner--terminal .ff-node__state{margin-top:4px;font-size:10px}.ff-node--condition{box-shadow:none;background:0 0;border:none;padding:0}.ff-node__diamond-shell{pointer-events:none;justify-content:center;align-items:center;width:100%;height:100%;display:flex}.ff-node__diamond-face{pointer-events:auto;background:linear-gradient(148deg,#0f172af5,#0f172ac2);border:1px solid #94a3b86b;border-radius:11px;justify-content:center;align-items:center;width:71%;height:71%;transition:border-color .18s,box-shadow .22s;display:flex;transform:rotate(45deg);box-shadow:0 12px 34px #0000006b,inset 0 1px #ffffff0f}.ff-node__inner--condition{text-align:center;max-width:92%;padding:4px;transform:rotate(-45deg)}.ff-node__inner--condition .ff-node__label{font-size:13px}.ff-node__kind{letter-spacing:.1em;text-transform:uppercase;color:var(--accent);margin-bottom:4px;font-size:11px}.ff-node__label{color:#f8fafc;font-size:14px;font-weight:600;line-height:1.25}.ff-node__state{color:#94a3b8;margin-top:6px;font-family:JetBrains Mono,ui-monospace,monospace;font-size:11px}.ff-handle{opacity:1!important;background:0 0!important;border:none!important;width:10px!important;height:10px!important}.ff-handle:before{content:"";background:#334155;border:2px solid #64748b;border-radius:3px;width:8px;height:16px;transition:border-color .14s,background .14s,box-shadow .14s;position:absolute;top:50%;transform:translateY(-50%)}.ff-handle--target{left:-6px!important}.ff-handle--source{right:-6px!important}.ff-handle--target:before{border-radius:4px 0 0 4px;left:0}.ff-handle--source:before{border-radius:0 4px 4px 0;right:0}.ff-node:hover .ff-handle:before,.ff-node--selected .ff-handle:before{border-color:var(--accent);background:color-mix(in srgb, var(--accent) 25%, #1e293b);box-shadow:0 0 0 3px color-mix(in srgb, var(--accent) 22%, transparent)}.ff-node--selected.ff-node--process .ff-node__card{border-color:#38bdf88c;box-shadow:0 0 0 2px #38bdf838,0 14px 40px #0000007a}.ff-node--selected.ff-node--terminal{border-color:#bae6fd8c;box-shadow:0 0 0 2px #38bdf847,0 14px 40px #00000080}.ff-node--selected.ff-node--condition .ff-node__diamond-face{border-color:#bae6fd94;box-shadow:0 0 0 1px #38bdf852,0 14px 42px #0000007a}.ff-node--process.ff-node--running .ff-node__card{border-color:#38bdf880;box-shadow:0 0 0 1px #38bdf82e,0 0 28px #38bdf833}.ff-node--process.ff-node--success .ff-node__card{border-color:#34d39966}.ff-node--process.ff-node--failed .ff-node__card{border-color:#f8717173}.ff-node--terminal.ff-node--idle{border-color:#94a3b852}.ff-node--terminal.ff-node--running{border-color:#38bdf88c;animation:1.4s ease-in-out infinite ff-node-pulse}.ff-node--terminal.ff-node--success{border-color:#34d3998c}.ff-node--terminal.ff-node--failed{border-color:#f8717194}.ff-node--condition.ff-node--idle .ff-node__diamond-face{border-color:#94a3b84d}.ff-node--condition.ff-node--running .ff-node__diamond-face{border-color:#38bdf894;box-shadow:0 0 28px #38bdf838,inset 0 1px #ffffff0f}.ff-node--condition.ff-node--success .ff-node__diamond-face{border-color:#34d3997a}.ff-node--condition.ff-node--failed .ff-node__diamond-face{border-color:#f871718c}.ff-node--condition.ff-node--pending .ff-node__diamond-face{border-color:#fbbf246b}@keyframes ff-node-pulse{0%,to{transform:translateY(0)}50%{transform:translateY(-1px)}}.ff-edge-hit{pointer-events:stroke;cursor:pointer}.ff-edge-wire{transition:stroke .2s,stroke-width .2s,opacity .2s,filter .2s}.ff-edge-wire--highlight{filter:drop-shadow(0 0 4px #94a3b86b)}.ff-edge-wire--active{stroke-dasharray:10 16;animation:.9s linear infinite ff-edge-flow}.ff-edge-wire--halo{pointer-events:none;animation:2.4s ease-in-out infinite ff-edge-halo-breathe}.ff-edge-wire--pulse{pointer-events:none;stroke-dasharray:8 14;animation:.72s linear infinite ff-edge-flow}.ff-edge-marker{transition:fill .2s}.ff-edge-label{color:#cbd5e1;pointer-events:none;white-space:nowrap;letter-spacing:.04em;text-transform:lowercase;background:#0f172aeb;border:1px solid #64748b59;border-radius:10px;padding:2px 8px;font-size:10px;font-weight:600;line-height:1.5;position:absolute;box-shadow:0 2px 8px #00000059}.ff-edge-label--active{color:#bae6fd;border-color:#38bdf873;box-shadow:0 2px 10px #38bdf82e,0 1px 4px #0000004d}.ff-edge-wire--response.ff-edge-wire--highlight{filter:drop-shadow(0 0 4px #c4a77d61)}.ff-edge-label--response{color:#d9bd95;border-color:#c4a77d59}.ff-edge-label--response.ff-edge-label--active{color:#bae6fd;border-color:#38bdf873}.ff-edge-wire--failed{filter:drop-shadow(0 0 4px #f8717152)}.ff-edge-wire--failed.ff-edge-wire--active{animation:.7s linear infinite ff-edge-flow}.ff-edge-wire--failed.ff-edge-wire--highlight{filter:drop-shadow(0 0 5px #f8717166)}.ff-edge-wire--pulse-failed{animation:.6s linear infinite ff-edge-flow}.ff-edge-label--failed{color:#fca5a5;border-color:#f8717173;box-shadow:0 2px 10px #f871712e,0 1px 4px #0000004d}.ff-edge-wire--succeeded{filter:drop-shadow(0 0 4px #34d39947)}.ff-edge-wire--succeeded.ff-edge-wire--active{animation:.85s linear infinite ff-edge-flow}.ff-edge-wire--succeeded.ff-edge-wire--highlight{filter:drop-shadow(0 0 5px #34d39961)}.ff-edge-wire--pulse-succeeded{animation:.78s linear infinite ff-edge-flow}.ff-edge-label--succeeded{color:#a7f3d0;border-color:#34d39973;box-shadow:0 2px 10px #34d39929,0 1px 4px #0000004d}@keyframes ff-edge-flow{to{stroke-dashoffset:-88px}}@keyframes ff-edge-halo-breathe{0%,to{opacity:.14}50%{opacity:.28}}.ff-timeline{flex-direction:column;min-height:0;display:flex;overflow:hidden}.ff-timeline__head{border-bottom:1px solid #94a3b81f;flex-shrink:0;padding:16px 18px 12px}.ff-timeline__head-row{align-items:center;gap:8px;display:flex}.ff-timeline__head h2{letter-spacing:.02em;color:#f8fafc;margin:0 0 4px;font-size:14px;font-weight:600}.ff-timeline__count{color:#7dd3fc;background:#38bdf826;border:1px solid #38bdf840;border-radius:999px;padding:2px 7px;font-size:10px;font-weight:700}.ff-timeline__head p{color:#94a3b8;margin:0;font-size:12px}.ff-timeline__list{overscroll-behavior:contain;flex-direction:column;flex:1;gap:10px;min-height:0;margin:0;padding:12px 12px 18px;list-style:none;display:flex;overflow:hidden auto}.ff-timeline__item{background:#0f172a8c;border:1px solid #334155a6;border-radius:12px;padding:10px 12px}.ff-timeline__item--success{border-color:#34d39959}.ff-timeline__item--warn{border-color:#fbbf2459}.ff-timeline__item--error{border-color:#f8717166}.ff-timeline__title{color:#e2e8f0;font-size:13px;font-weight:600}.ff-timeline__detail{color:#94a3b8;margin-top:4px;font-size:12px}.ff-timeline__time{color:#64748b;margin-top:8px;font-family:JetBrains Mono,ui-monospace,monospace;font-size:11px;display:block}.ff-inspector{background:#0f172a8c;border-top:1px solid #94a3b81f;flex-wrap:wrap;align-items:center;gap:12px;padding:10px 18px;font-size:13px;display:flex}.ff-inspector__muted{color:#94a3b8}.ff-inspector__meta{color:#cbd5e1;font-family:JetBrains Mono,ui-monospace,monospace;font-size:11px}.ff-home__grid{grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:16px;margin:0;padding:0;list-style:none;display:grid}.ff-scenario-card{height:100%;color:inherit;background:linear-gradient(155deg,#0f172ae0,#0f172a9e);border:1px solid #94a3b838;border-radius:16px;flex-direction:column;gap:8px;padding:18px 18px 16px;text-decoration:none;transition:border-color .16s,box-shadow .2s,transform .16s;display:flex}.ff-scenario-card:hover{border-color:#38bdf873;transform:translateY(-2px);box-shadow:0 0 0 1px #38bdf81f,0 16px 40px #00000059}.ff-scenario-card:focus-visible{outline-offset:3px;outline:2px solid #38bdf88c}.ff-scenario-card__index{color:#475569;font-family:JetBrains Mono,ui-monospace,monospace;font-size:11px}.ff-scenario-card__domain{letter-spacing:.08em;text-transform:uppercase;color:#94a3b8;border:1px solid #94a3b847;border-radius:999px;align-self:flex-start;padding:3px 8px;font-size:10px;font-weight:600}.ff-scenario-card__title{color:#f1f5f9;margin:0;font-size:17px;font-weight:600}.ff-scenario-card__subtitle{color:#94a3b8;flex:1;margin:0;font-size:13px;line-height:1.45}.ff-scenario-card__cta{color:#38bdf8;margin-top:4px;font-size:13px;font-weight:500}.ff-home{min-height:100%;position:relative;overflow-x:hidden}.ff-topology-bg{z-index:0;pointer-events:none;opacity:.85;position:fixed;inset:0}.ff-topology-bg__mesh{width:100%;height:100%}.ff-topology-bg__path{animation:24s linear infinite ff-topology-flow}.ff-topology-bg__path--2{animation-duration:32s;animation-direction:reverse}.ff-topology-bg__path--3{animation-duration:40s}.ff-topology-bg__node-ring{fill:none;stroke:#38bdf833;stroke-width:1px;animation:3s ease-in-out infinite ff-node-ring-pulse}.ff-topology-bg__node-core{fill:#38bdf88c}.ff-topology-bg__scan{background:linear-gradient(#0000 0%,#38bdf808 48%,#0000 52%);animation:8s ease-in-out infinite ff-scan-sweep;position:absolute;inset:0}@keyframes ff-topology-flow{to{stroke-dashoffset:-120px}}@keyframes ff-node-ring-pulse{0%,to{opacity:.35;r:28}50%{opacity:.7;r:32}}@keyframes ff-scan-sweep{0%,to{opacity:0;transform:translateY(-30%)}45%,55%{opacity:1}to{opacity:0;transform:translateY(30%)}}.ff-home__nav,.ff-home__main,.ff-home__hero,.ff-home__capabilities,.ff-home__scenarios,.ff-home__footer{z-index:1;position:relative}.ff-home__nav{justify-content:space-between;align-items:center;max-width:1200px;margin:0 auto;padding:20px 24px;display:flex}.ff-home__logo{letter-spacing:.04em;color:#f8fafc;align-items:center;gap:10px;font-size:15px;font-weight:700;text-decoration:none;display:flex}.ff-home__logo-text{color:#f8fafc;font-size:15px}.ff-home__nav-links{align-items:center;gap:14px;display:flex}.ff-home__nav-pill{letter-spacing:.06em;text-transform:uppercase;color:#94a3b8;background:#0f172a80;border:1px solid #94a3b833;border-radius:999px;padding:6px 12px;font-size:11px;font-weight:600}html[dir=rtl] .ff-scenario-card__arrow{transform:scaleX(-1)}html[dir=rtl] .ff-detail-edge__arrow{display:inline-block;transform:scaleX(-1)}.ff-lang-switch{background:#0f172a8c;border:1px solid #94a3b838;border-radius:999px;align-items:center;gap:2px;padding:2px;display:inline-flex}.ff-lang-switch__btn{color:#94a3b8;cursor:pointer;background:0 0;border:none;border-radius:999px;padding:5px 10px;font-size:11px;font-weight:600;transition:color .15s,background .15s}.ff-lang-switch__btn:hover{color:#e2e8f0}.ff-lang-switch__btn--active{color:#f8fafc;background:#38bdf833}.ff-orchestration__controls .ff-lang-switch{margin-inline-end:4px}.ff-btn--lg{padding:11px 20px;font-size:14px}.ff-home__hero{grid-template-columns:1fr minmax(280px,480px);align-items:center;gap:40px;max-width:1200px;margin:0 auto;padding:32px 24px 56px;display:grid}.ff-home__eyebrow{letter-spacing:.1em;text-transform:uppercase;color:#7dd3fc;align-items:center;gap:10px;margin:0 0 14px;font-size:12px;font-weight:600;display:flex}.ff-home__pulse{background:#34d399;border-radius:50%;width:8px;height:8px;animation:2s infinite ff-pulse-dot;box-shadow:0 0 #34d39980}@keyframes ff-pulse-dot{0%{box-shadow:0 0 #34d39973}70%{box-shadow:0 0 0 10px #34d39900}to{box-shadow:0 0 #34d39900}}.ff-home__hero h1{letter-spacing:-.03em;color:#f8fafc;margin:0 0 16px;font-size:clamp(32px,5vw,48px);font-weight:700;line-height:1.1}.ff-home__gradient-text{background:linear-gradient(120deg,#7dd3fc 0%,#34d399 55%,#a5b4fc 100%);color:#0000;-webkit-background-clip:text;background-clip:text}.ff-home__lead{color:#94a3b8;max-width:520px;margin:0;font-size:17px;line-height:1.6}.ff-home__hero-actions{flex-wrap:wrap;gap:12px;margin-top:28px;display:flex}.ff-home__stats{grid-template-columns:repeat(4,1fr);gap:12px;margin:32px 0 0;padding:0;display:grid}.ff-home__stats>div{-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);background:#0f172a8c;border:1px solid #94a3b826;border-radius:12px;padding:12px 14px}.ff-home__stats dt{letter-spacing:.08em;text-transform:uppercase;color:#64748b;margin:0;font-size:10px;font-weight:600}.ff-home__stats dd{color:#f1f5f9;margin:4px 0 0;font-size:18px;font-weight:600}.ff-home-preview__chrome{background:linear-gradient(165deg,#0f172af2,#0a0f1ae0);border:1px solid #38bdf840;border-radius:16px;animation:6s ease-in-out infinite ff-preview-float;overflow:hidden;box-shadow:0 0 0 1px #38bdf814,0 24px 64px #00000073,0 0 80px #38bdf814}@keyframes ff-preview-float{0%,to{transform:translateY(0)}50%{transform:translateY(-6px)}}.ff-home-preview__bar{color:#94a3b8;border-bottom:1px solid #94a3b81f;align-items:center;gap:10px;padding:10px 14px;font-size:11px;display:flex}.ff-home-preview__dot--live{background:#34d399;border-radius:50%;width:8px;height:8px;animation:2s infinite ff-pulse-dot}.ff-home-preview__badge{letter-spacing:.08em;color:#6ee7b7;background:#34d3991f;border:1px solid #34d3994d;border-radius:4px;margin-left:auto;padding:2px 8px;font-size:10px;font-weight:700}.ff-home-preview__graph{width:100%;padding:8px 12px 4px;display:block}.ff-home-preview__wire{opacity:.7}.ff-home-preview__packet{animation:2.8s linear infinite ff-preview-packet}@keyframes ff-preview-packet{to{stroke-dashoffset:-220px}}.ff-home-preview__node{fill:#1a2332f2;stroke:#475569b3;stroke-width:1px}.ff-home-preview__node-label{fill:#cbd5e1;font-size:10px;font-family:var(--font-sans);font-weight:600}.ff-home-preview__footer{color:#64748b;border-top:1px solid #94a3b81a;justify-content:space-between;align-items:center;padding:10px 14px 12px;font-size:11px;display:flex}.ff-home-preview__link{color:#38bdf8;font-weight:500;text-decoration:none}.ff-home-preview__link:hover{color:#7dd3fc}.ff-home__capabilities{grid-template-columns:repeat(3,1fr);gap:16px;max-width:1200px;margin:0 auto;padding:0 24px 48px;display:grid}.ff-cap-card{-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);background:#0f172a73;border:1px solid #94a3b826;border-radius:14px;padding:20px 18px;transition:border-color .2s,transform .2s}.ff-cap-card:hover{border-color:#38bdf859;transform:translateY(-2px)}.ff-cap-card__icon{color:#38bdf8;margin-bottom:10px;font-size:20px;display:block}.ff-cap-card h3{color:#f1f5f9;margin:0 0 8px;font-size:15px;font-weight:600}.ff-cap-card p{color:#94a3b8;margin:0;font-size:13px;line-height:1.5}.ff-home__scenarios{max-width:1200px;margin:0 auto;padding:0 24px 64px}.ff-home__section-head{margin-bottom:24px}.ff-home__section-head h2{color:#f8fafc;margin:0 0 8px;font-size:22px;font-weight:600}.ff-home__section-head p{color:#94a3b8;margin:0;font-size:14px}.ff-home__footer{text-align:center;border-top:1px solid #94a3b81a;flex-direction:column;align-items:center;gap:10px;max-width:1200px;margin:0 auto;padding:28px 24px 36px;display:flex}.ff-home__footer-brand{color:#cbd5e1;font-size:13px}.ff-home__footer p{color:#64748b;max-width:52ch;margin:0;font-size:12px;line-height:1.55}.ff-scenario-card{animation:.5s backwards ff-card-enter}@keyframes ff-card-enter{0%{opacity:0;transform:translateY(12px)}}.ff-scenario-card__top{justify-content:space-between;align-items:center;gap:8px;display:flex}.ff-scenario-card__meta{color:#64748b;gap:12px;font-family:JetBrains Mono,ui-monospace,monospace;font-size:11px;display:flex}.ff-scenario-card__arrow{transition:transform .16s;display:inline-block}.ff-scenario-card:hover .ff-scenario-card__arrow{transform:translate(4px)}@media (width<=960px){.ff-home__hero,.ff-home__capabilities{grid-template-columns:1fr}.ff-home__stats{grid-template-columns:repeat(2,1fr)}.ff-home__nav-pill{display:none}}.ff-canvas-panel{margin:12px!important}.ff-playground-toolbar{-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);background:#0f172aeb;border:1px solid #94a3b838;border-radius:12px;align-items:center;gap:14px;padding:6px 10px;display:flex;box-shadow:0 8px 28px #00000059}.ff-playground-toolbar__group{gap:4px;display:flex}.ff-playground-toolbar__btn{color:#e2e8f0;cursor:pointer;background:#1e293be6;border:1px solid #94a3b833;border-radius:8px;width:32px;height:32px;font-size:16px;line-height:1;transition:background .14s,border-color .14s}.ff-playground-toolbar__btn:hover:not(:disabled){background:#334155f2;border-color:#38bdf873}.ff-playground-toolbar__btn:disabled{opacity:.4;cursor:not-allowed}.ff-playground-toolbar__meta{color:#94a3b8;font-family:JetBrains Mono,ui-monospace,monospace;font-size:11px}.ff-playground-toolbar__sep{opacity:.5}.ff-canvas-overlay{flex-direction:column;align-items:flex-end;gap:8px;margin:12px!important;display:flex!important}.ff-runtime-chip{-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);text-transform:uppercase;letter-spacing:.06em;color:#cbd5e1;background:#0f172ae6;border:1px solid #94a3b838;border-radius:999px;align-items:center;gap:8px;padding:6px 12px;font-size:11px;font-weight:600;display:flex}.ff-runtime-chip__dot{background:#64748b;border-radius:50%;width:8px;height:8px}.ff-runtime-chip__dot--running{background:#38bdf8;animation:1.5s infinite ff-pulse-dot;box-shadow:0 0 10px #38bdf899}.ff-runtime-chip__dot--completed{background:#34d399}.ff-runtime-chip__dot--paused{background:#fbbf24}.ff-canvas-overlay__hint{color:#64748b;background:#0f172abf;border-radius:8px;padding:4px 10px;font-size:11px}.ff-case-bar-panel{pointer-events:none;width:max-content;max-width:min(96%,880px);transform:translate(-50%);z-index:6!important;margin:0 0 20px!important;left:50%!important}.ff-case-bar-panel>*{pointer-events:auto}.ff-case-dock{-webkit-backdrop-filter:blur(16px);backdrop-filter:blur(16px);background:#0a0e1af5;border:1px solid #94a3b852;border-radius:18px;flex-direction:column;align-items:stretch;gap:0;display:flex;overflow:hidden;box-shadow:0 0 0 1px #38bdf81f,0 16px 48px #0000008c,0 0 60px #34d3990f}.ff-case-dock--success{border-color:#34d39959;box-shadow:0 0 0 1px #34d39933,0 16px 48px #0000008c,0 0 48px #34d3991f}.ff-case-dock--failure{border-color:#f8717159;box-shadow:0 0 0 1px #f8717133,0 16px 48px #0000008c,0 0 48px #f871711a}.ff-case-dock--retry{border-color:#fbbf2459;box-shadow:0 0 0 1px #fbbf2433,0 16px 48px #0000008c,0 0 48px #fbbf241a}.ff-case-dock--warning{border-color:#fb923c59}.ff-case-dock--neutral{border-color:#38bdf859}.ff-case-bar{background:#0f172aa6;border-top:1px solid #94a3b824;align-items:center;gap:10px;padding:10px 14px;display:flex}.ff-case-bar__example{text-align:left;border-left:4px solid #34d399;flex-direction:column;align-items:stretch;gap:6px;margin:0;padding:14px 18px 16px;display:flex}.ff-case-bar__example-head{flex-wrap:wrap;align-items:center;gap:10px;display:flex}.ff-case-bar__example-kicker{letter-spacing:.12em;text-transform:uppercase;color:#38bdf8;font-size:10px;font-weight:700}.ff-case-bar__example-outcome{color:#f8fafc;margin:0;font-size:14px;font-weight:600;line-height:1.35}.ff-case-bar__example-badge{letter-spacing:.06em;text-transform:uppercase;border:1px solid #0000;border-radius:999px;flex-shrink:0;padding:4px 10px;font-size:10px;font-weight:700}.ff-case-bar__example-badge--success{color:#6ee7b7;background:#34d3991f;border-color:#34d3994d}.ff-case-bar__example-badge--failure{color:#fca5a5;background:#f871711f;border-color:#f871714d}.ff-case-bar__example-badge--retry{color:#fcd34d;background:#fbbf241f;border-color:#fbbf244d}.ff-case-bar__example-badge--warning{color:#fdba74;background:#fb923c1f;border-color:#fb923c4d}.ff-case-bar__example-badge--neutral{color:#bae6fd;background:#38bdf81f;border-color:#38bdf84d}.ff-case-bar__example-text{color:#ecfdf5;margin:0;font-size:15px;font-weight:500;line-height:1.5}.ff-case-dock--success .ff-case-bar__example{background:linear-gradient(135deg,#064e3b73 0%,#0f172a33 100%);border-left-color:#34d399}.ff-case-dock--failure .ff-case-bar__example{background:linear-gradient(135deg,#7f1d1d66 0%,#0f172a33 100%);border-left-color:#f87171}.ff-case-dock--failure .ff-case-bar__example-text{color:#fee2e2}.ff-case-dock--retry .ff-case-bar__example{background:linear-gradient(135deg,#78350f66 0%,#0f172a33 100%);border-left-color:#fbbf24}.ff-case-dock--retry .ff-case-bar__example-text{color:#fef3c7}.ff-case-dock--warning .ff-case-bar__example{background:linear-gradient(135deg,#7c2d1266 0%,#0f172a33 100%);border-left-color:#fb923c}.ff-case-dock--warning .ff-case-bar__example-text{color:#ffedd5}.ff-case-dock--neutral .ff-case-bar__example{background:linear-gradient(135deg,#0c4a6e66 0%,#0f172a33 100%);border-left-color:#38bdf8}.ff-case-dock--neutral .ff-case-bar__example-text{color:#e0f2fe}.ff-case-bar__label{letter-spacing:.08em;text-transform:uppercase;color:#64748b;white-space:nowrap;flex-shrink:0;padding:0 4px 0 6px;font-size:10px;font-weight:600}.ff-case-bar__group{flex-wrap:wrap;justify-content:center;gap:6px;max-width:min(68vw,680px);display:flex}.ff-case-bar__play{border-left:1px solid #94a3b840;flex-shrink:0;margin-left:2px;padding-left:10px}.ff-case-btn{color:#e2e8f0;max-width:200px;font:inherit;white-space:nowrap;text-overflow:ellipsis;cursor:pointer;background:#1e293bd9;border:1px solid #94a3b847;border-radius:999px;padding:6px 12px;font-size:11px;font-weight:500;line-height:1.25;transition:border-color .14s,background .14s,box-shadow .14s;overflow:hidden}.ff-case-btn:hover:not(:disabled){background:#334155f2;border-color:#94a3b873}.ff-case-btn:disabled{opacity:.5;cursor:not-allowed}.ff-case-btn:focus-visible{outline-offset:2px;outline:2px solid #38bdf88c}.ff-case-btn--active{font-weight:600;box-shadow:0 0 0 1px}.ff-case-btn--success{color:#a7f3d0;border-color:#34d39959}.ff-case-btn--success.ff-case-btn--active{background:#064e3b8c;border-color:#34d399a6}.ff-case-btn--failure{color:#fecaca;border-color:#f8717159}.ff-case-btn--failure.ff-case-btn--active{background:#7f1d1d73;border-color:#f87171a6}.ff-case-btn--retry{color:#fde68a;border-color:#fbbf2459}.ff-case-btn--retry.ff-case-btn--active{background:#78350f73;border-color:#fbbf24a6}.ff-case-btn--warning{color:#fed7aa;border-color:#fb923c59}.ff-case-btn--warning.ff-case-btn--active{background:#7c2d1273;border-color:#fb923ca6}.ff-case-btn--neutral{color:#bae6fd;border-color:#38bdf859}.ff-case-btn--neutral.ff-case-btn--active{background:#0c4a6e73;border-color:#38bdf8a6}.ff-node__pulse-ring{border-radius:inherit;pointer-events:none;z-index:0;border:2px solid #38bdf873;animation:1.4s ease-out infinite ff-node-pulse-ring;position:absolute;inset:-6px}.ff-node--condition .ff-node__pulse-ring{border-radius:4px;transform:rotate(45deg)}.ff-node__selection-halo{box-shadow:0 0 0 2px color-mix(in srgb, var(--accent) 50%, transparent), 0 0 32px color-mix(in srgb, var(--accent) 28%, transparent);pointer-events:none;z-index:0;border-radius:14px;animation:2s ease-in-out infinite ff-selection-glow;position:absolute;inset:-4px}.ff-node--terminal .ff-node__selection-halo{border-radius:50%}@keyframes ff-node-pulse-ring{0%{opacity:.8;transform:scale(.95)}to{opacity:0;transform:scale(1.08)}}@keyframes ff-selection-glow{0%,to{opacity:.85}50%{opacity:1}}.ff-node__health{z-index:3;border:2px solid #0f172ae6;border-radius:50%;width:8px;height:8px;position:absolute;top:6px;right:6px}.ff-node--process .ff-node__health{top:10px;right:10px}.ff-node__health--idle{background:#64748b}.ff-node__health--active{background:#38bdf8;animation:1.2s infinite ff-pulse-dot;box-shadow:0 0 8px #38bdf8b3}.ff-node__health--ok{background:#34d399}.ff-node__health--error{background:#f87171;box-shadow:0 0 8px #f8717180}.ff-node--running.ff-node--process .ff-node__card{animation:1.6s ease-in-out infinite ff-card-running}@keyframes ff-card-running{0%,to{box-shadow:0 0 0 1px #38bdf82e,0 0 28px #38bdf833}50%{box-shadow:0 0 0 1px #38bdf859,0 0 36px #38bdf852}}.ff-node-inspector--active{border-left:3px solid var(--accent);animation:.28s ff-inspector-slide}@keyframes ff-inspector-slide{0%{opacity:0;transform:translate(8px)}}.ff-node-inspector__empty-brand{align-items:flex-start;gap:12px;display:flex}.ff-node-inspector__empty-icon{opacity:.9;flex-shrink:0}.ff-node-inspector__placeholder-rings{border:2px solid #38bdf833;border-radius:50%;width:64px;height:64px;margin:0 auto 12px;position:relative}.ff-node-inspector__placeholder-rings:after{content:"";border:1px dashed #94a3b859;border-radius:50%;animation:2.5s infinite ff-node-ring-pulse;position:absolute;inset:10px}.ff-node-inspector__placeholder span{color:#64748b;margin-top:4px;font-size:11px;display:block}.ff-node-inspector__health{flex-wrap:wrap;align-items:center;gap:8px;margin-top:10px;display:flex}.ff-health-dot{border-radius:50%;width:8px;height:8px}.ff-health-dot--idle{background:#64748b}.ff-health-dot--active{background:#38bdf8;animation:1.5s infinite ff-pulse-dot}.ff-health-dot--ok{background:#34d399}.ff-health-dot--warn{background:#fbbf24}.ff-health-dot--error{background:#f87171}.ff-node-inspector__health-label{color:#cbd5e1;font-size:12px;font-weight:500}.ff-inspector-tabs{background:#1e293ba6;border-radius:10px;gap:4px;margin-top:12px;padding:3px;display:flex}.ff-inspector-tabs__btn{color:#94a3b8;cursor:pointer;background:0 0;border:none;border-radius:8px;flex:1;padding:6px 8px;font-size:11px;font-weight:600;transition:background .14s,color .14s}.ff-inspector-tabs__btn:hover{color:#e2e8f0}.ff-inspector-tabs__btn--active{color:#f1f5f9;background:#0f172ae6;box-shadow:0 1px 4px #00000040}.ff-inspector-fields{flex-direction:column;gap:10px;display:flex}.ff-inspector-field__label{letter-spacing:.06em;text-transform:uppercase;color:#64748b;margin-bottom:4px;font-size:10px;font-weight:600;display:block}.ff-inspector-field__value{color:#e2e8f0;background:#0f172ab3;border:1px solid #334155a6;border-radius:8px;padding:8px 10px;font-size:12px}.ff-inspector-field__value--mono{word-break:break-all;font-family:JetBrains Mono,ui-monospace,monospace;font-size:11px}.ff-inspector-code-block{background:#0f172af2;border:1px solid #38bdf833;border-radius:8px;padding:10px 12px}.ff-inspector-code-block code{color:#7dd3fc;font-family:JetBrains Mono,ui-monospace,monospace;font-size:11px}.ff-detail-hint{color:#64748b;margin:8px 0 0;font-size:11px;font-style:italic}.ff-detail-prose--packet{color:#bae6fd;background:#38bdf80f;border:1px solid #38bdf84d;border-radius:8px;padding:10px 12px;font-family:JetBrains Mono,ui-monospace,monospace;font-size:12px}.ff-runtime-metrics{grid-template-columns:repeat(3,1fr);gap:8px;display:grid}.ff-runtime-metric{text-align:center;background:#0f172a8c;border:1px solid #33415599;border-radius:10px;padding:10px}.ff-runtime-metric__label{text-transform:uppercase;letter-spacing:.06em;color:#64748b;margin-bottom:6px;font-size:10px;display:block}.ff-runtime-metric__value{color:#e2e8f0;font-size:12px;font-weight:600}.ff-runtime-logs{max-height:200px;margin:0;padding:0;font-family:JetBrains Mono,ui-monospace,monospace;font-size:11px;list-style:none;overflow-y:auto}.ff-runtime-logs--embedded{max-height:none;overflow:visible}.ff-runtime-logs__line{border-bottom:1px solid #33415566;padding:8px 10px}.ff-runtime-logs__line--error{color:#fca5a5}.ff-runtime-logs__line--warn{color:#fcd34d}.ff-runtime-logs__line--info{color:#94a3b8}.ff-runtime-logs__time{color:#64748b;margin-bottom:2px;font-size:10px;display:block}.ff-runtime-logs__msg{color:#e2e8f0}.ff-runtime-logs__detail{color:#94a3b8;margin-top:2px;display:block}.ff-detail-events__time{color:#64748b;margin-top:4px;font-family:JetBrains Mono,ui-monospace,monospace;font-size:10px;display:block}.ff-playground .ff-orchestration{background:#0a0e1ae0;border-bottom-color:#38bdf81f}.ff-playground .ff-sidebar{-webkit-backdrop-filter:blur(16px);backdrop-filter:blur(16px);background:#080c16eb}.ff-scenario-strip{-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);background:#0a0e1ae6;border-bottom:1px solid #94a3b824;flex-shrink:0;align-items:center;gap:10px;padding:8px 16px;display:flex}.ff-scenario-strip__label{letter-spacing:.1em;text-transform:uppercase;color:#64748b;flex-shrink:0;font-size:10px;font-weight:600}.ff-scenario-strip__list{scroll-snap-type:x proximity;scrollbar-width:thin;scrollbar-color:#64748b80 transparent;flex:1;gap:6px;min-width:0;margin:0;padding:2px 4px;list-style:none;display:flex;overflow:auto hidden}.ff-scenario-strip__list::-webkit-scrollbar{height:4px}.ff-scenario-strip__list::-webkit-scrollbar-thumb{background:#64748b73;border-radius:999px}.ff-scenario-chip{scroll-snap-align:start;color:#cbd5e1;white-space:nowrap;background:#0f172aa6;border:1px solid #94a3b838;border-radius:999px;flex-shrink:0;align-items:center;gap:7px;padding:6px 12px;font-size:12px;font-weight:500;text-decoration:none;transition:border-color .14s,background .14s,color .14s,box-shadow .14s;display:inline-flex}.ff-scenario-chip:hover{color:#f1f5f9;background:#0f172ae6;border-color:#38bdf866}.ff-scenario-chip--active{color:#f8fafc;background:#0e749047;border-color:#38bdf88c;font-weight:600;box-shadow:0 0 0 1px #38bdf826,0 0 20px #38bdf81f}.ff-scenario-chip:focus-visible{outline-offset:2px;outline:2px solid #38bdf88c}.ff-scenario-chip__dot{background:#64748b;border-radius:50%;width:7px;height:7px;box-shadow:0 0 8px}.ff-scenario-chip__dot--payments{color:#38bdf8;background:#38bdf8}.ff-scenario-chip__dot--crypto{color:#a78bfa;background:#a78bfa}.ff-scenario-chip__dot--treasury{color:#fbbf24;background:#fbbf24}.ff-scenario-chip__dot--risk{color:#f87171;background:#f87171}.ff-scenario-chip__dot--general{color:#94a3b8;background:#94a3b8}.ff-scenario-chip__title{line-height:1.2}.ff-scenario-strip__catalog{color:#94a3b8;border:1px solid #0000;border-radius:8px;flex-shrink:0;padding:6px 10px;font-size:11px;font-weight:600;text-decoration:none;transition:color .14s,border-color .14s}.ff-scenario-strip__catalog:hover{color:#e2e8f0;border-color:#94a3b840}.ff-scenario-strip__catalog:focus-visible{outline-offset:2px;outline:2px solid #38bdf88c}@media (width<=1100px){.ff-playground .ff-main,.ff-playground__main{grid-template-columns:1fr minmax(260px,320px)}.ff-scenario-chip{padding:5px 10px;font-size:11px}.ff-case-btn{max-width:160px;padding:5px 10px;font-size:10px}}.ff-runtime-log-stream{position:relative}.ff-runtime-log-stream__live{letter-spacing:.06em;text-transform:uppercase;color:#7dd3fc;background:#38bdf81f;border:1px solid #38bdf840;border-radius:999px;align-items:center;gap:6px;margin-bottom:8px;padding:3px 8px;font-size:10px;font-weight:600;display:inline-flex}.ff-runtime-log-stream__live-dot{background:#38bdf8;border-radius:50%;width:6px;height:6px;animation:1.2s infinite ff-pulse-dot}.ff-runtime-logs--stream{background:#020617d9;border:1px solid #334155bf;border-radius:10px}.ff-runtime-logs__meta{align-items:center;gap:8px;margin-bottom:4px;display:flex}.ff-runtime-logs__cat{text-transform:uppercase;letter-spacing:.08em;color:#64748b;border:1px solid #334155cc;border-radius:4px;padding:1px 5px;font-size:9px}.ff-runtime-logs__line--debug{color:#64748b}.ff-runtime-trace__head{justify-content:space-between;align-items:center;gap:8px;margin-bottom:10px;display:flex}.ff-runtime-trace__head h3{margin:0}.ff-runtime-trace__badge{letter-spacing:.06em;text-transform:uppercase;color:#94a3b8;background:#1e293bcc;border:1px solid #334155a6;border-radius:6px;padding:3px 8px;font-size:10px;font-weight:600}.ff-runtime-metrics--trace{grid-template-columns:repeat(3,1fr)}.ff-detail-dl--timing{grid-template-columns:1fr 1fr;gap:8px 12px;display:grid}.ff-runtime-alert{background:#7f1d1d26;border:1px solid #f8717159;border-radius:10px;padding:12px}.ff-runtime-alert h3{color:#fecaca;margin-top:0}.ff-runtime-alert__reason{color:#fca5a5;margin:0 0 6px;font-size:13px;font-weight:600}.ff-runtime-alert__detail{color:#fda4af;margin:0;font-family:JetBrains Mono,ui-monospace,monospace;font-size:12px}.ff-detail-events--compact .ff-detail-events__item{padding:8px 0}.ff-desktop-gate{z-index:9999;background:#060a14;justify-content:center;align-items:center;padding:24px;display:flex;position:fixed;inset:0}.ff-desktop-gate__backdrop{pointer-events:none;background:radial-gradient(80% 50% at 50% -20%,#38bdf81f,#0000),radial-gradient(60% 40% at 100% 100%,#6366f114,#0000);position:absolute;inset:0}.ff-desktop-gate__panel{text-align:center;background:#0f172aeb;border:1px solid #38bdf833;border-radius:16px;max-width:420px;padding:36px 32px;position:relative;box-shadow:0 0 0 1px #0f172a80,0 24px 48px #00000073}.ff-desktop-gate__panel h1{color:#f1f5f9;letter-spacing:-.02em;margin:20px 0 12px;font-size:1.35rem;font-weight:600}.ff-desktop-gate__panel>p{color:#94a3b8;margin:0;font-size:14px;line-height:1.55}.ff-desktop-gate__reasons{text-align:left;margin:20px 0 0;padding:0;list-style:none}.ff-desktop-gate__reasons li{color:#cbd5e1;border-bottom:1px solid #33415573;padding:8px 0 8px 20px;font-size:13px;position:relative}.ff-desktop-gate__reasons li:last-child{border-bottom:none}.ff-desktop-gate__reasons li:before{content:"";background:#38bdf8;border-radius:50%;width:6px;height:6px;position:absolute;top:50%;left:0;transform:translateY(-50%)}.ff-desktop-gate__hint{color:#64748b!important;margin-top:16px!important;font-size:12px!important}.ff-edge-wire--trail{pointer-events:none;transition:opacity .12s}.ff-edge-wire--visited-glow{pointer-events:none}.ff-edge-wire--visited{filter:drop-shadow(0 0 3px #bae6fd40)}.ff-edge-wire--response.ff-edge-wire--visited{filter:drop-shadow(0 0 3px #e2d3b538)}.ff-node--visited .ff-node__card,.ff-node--visited .ff-node__inner{box-shadow:0 0 0 1px #bae6fd38,inset 0 0 0 1px #bae6fd0f}.ff-node--visited.ff-node--success .ff-node__card,.ff-node--visited.ff-node--success .ff-node__inner{box-shadow:0 0 0 1px #34d39947,inset 0 0 0 1px #34d39914}.ff-node--visited.ff-node--failed .ff-node__card,.ff-node--visited.ff-node--failed .ff-node__inner{box-shadow:0 0 0 1px #f8717147,inset 0 0 0 1px #f871710f}.ff-edge-label__metrics{color:#94a3b8;letter-spacing:.02em;margin-top:4px;font-family:JetBrains Mono,ui-monospace,monospace;font-size:9px;display:block}.ff-packet{pointer-events:none;z-index:12;white-space:nowrap;background:#0f172aeb;border:1px solid #38bdf873;border-radius:8px;padding:4px 8px;font-family:JetBrains Mono,ui-monospace,monospace;font-size:10px;line-height:1.3;position:absolute;box-shadow:0 4px 16px #0206178c}.ff-packet--success{border-color:#34d39980}.ff-packet--warn{border-color:#fbbf2480}.ff-packet--error{border-color:#f8717180}.ff-packet__amount{color:#e2e8f0;font-weight:600;display:block}.ff-packet__status{color:#7dd3fc;text-transform:uppercase;font-size:9px;display:block}.ff-node-metrics{pointer-events:none;z-index:5;flex-wrap:wrap;justify-content:flex-end;gap:4px;max-width:140px;display:flex;position:absolute;top:-8px;right:-4px}.ff-node-metrics__item{color:#94a3b8;background:#0f172ae0;border:1px solid #334155a6;border-radius:4px;padding:2px 5px;font-family:JetBrains Mono,ui-monospace,monospace;font-size:9px}.ff-node-metrics__item--warn{color:#fcd34d;border-color:#fbbf2466}.ff-domain-cluster{pointer-events:none;border:1px dashed #94a3b838;border-radius:16px}.ff-domain-cluster__label{letter-spacing:.08em;text-transform:uppercase;color:#94a3b8bf;font-size:10px;font-weight:600;position:absolute;top:10px;left:14px}.ff-timeline-controls{flex-wrap:wrap;align-items:center;gap:12px;display:flex}.ff-timeline-controls__scrub{color:#94a3b8;align-items:center;gap:8px;min-width:200px;font-size:11px;display:flex}.ff-timeline-controls__scrub input[type=range]{accent-color:#38bdf8;flex:1;min-width:100px}.ff-timeline-controls__step{color:#64748b;font-family:JetBrains Mono,ui-monospace,monospace;font-size:10px}.ff-timeline-controls__actions{gap:6px;display:flex}.ff-copilot{background:#080c1699;border-bottom:1px solid #3341558c;padding:14px 16px}.ff-copilot__head h2{margin:6px 0 2px;font-size:13px;font-weight:600}.ff-copilot__head p{color:#64748b;margin:0;font-size:11px}.ff-copilot__badge{letter-spacing:.1em;text-transform:uppercase;color:#a5b4fc;background:#6366f133;border:1px solid #818cf859;border-radius:999px;padding:2px 8px;font-size:9px;font-weight:700;display:inline-block}.ff-copilot__list{flex-direction:column;gap:8px;margin:12px 0 0;padding:0;list-style:none;display:flex}.ff-copilot__item{background:#0f172a8c;border:1px solid #33415599;border-radius:10px;padding:10px 12px}.ff-copilot__item--warn{border-color:#fbbf2459}.ff-copilot__item--critical{border-color:#f8717159}.ff-copilot__title{color:#e2e8f0;margin:0 0 4px;font-size:12px;font-weight:600}.ff-copilot__detail,.ff-copilot__action{color:#94a3b8;margin:0;font-size:11px}.ff-copilot__action{color:#7dd3fc;margin-top:6px;font-style:italic}.ff-theme-picker{color:#94a3b8;align-items:center;gap:6px;font-size:11px;display:flex}.ff-theme-picker__select{color:#e2e8f0;background:#0f172ad9;border:1px solid #334155a6;border-radius:6px;padding:4px 8px;font-size:11px}.ff-runtime-chip__queue{color:#7dd3fc;background:#38bdf81f;border-radius:4px;margin-left:8px;padding:2px 6px;font-size:10px}.ff-topology-radar{border:1px solid #38bdf833!important}.ff-flow-editor--ambient .react-flow__background{animation:4.5s ease-in-out infinite ff-canvas-breathe}.ff-node-inspector__placeholder--live .ff-node-inspector__placeholder-rings{animation:2.8s ease-in-out infinite ff-placeholder-pulse}@keyframes ff-placeholder-pulse{0%,to{opacity:.35;transform:scale(1)}50%{opacity:.7;transform:scale(1.04)}}.ff-timeline__empty{text-align:center;color:#64748b;padding:20px 12px;list-style:none}.ff-timeline__empty-pulse{background:#38bdf8;border-radius:50%;width:8px;height:8px;margin:0 auto 10px;animation:1.4s infinite ff-pulse-dot;display:block}.ff-template-card__preview{color:#38bdf8;background:#0f172aa6;border:1px solid #33415580;border-radius:10px;height:56px;margin-bottom:12px;position:relative;overflow:hidden}.ff-template-card__topology{width:100%;height:100%;padding:8px}.ff-template-card__pulse{background:linear-gradient(90deg,#0000,#38bdf814,#0000);animation:2.4s ease-in-out infinite ff-template-sweep;position:absolute;inset:0}@keyframes ff-template-sweep{0%{transform:translate(-100%)}to{transform:translate(100%)}}.ff-flow-editor--fintech-neon .react-flow__background{--ff-accent:#22d3ee}.ff-flow-editor--fintech-neon .ff-edge-wire--active{filter:drop-shadow(0 0 6px #22d3ee73)}.ff-flow-editor--enterprise-infra .react-flow__background{color:#47556980!important}.ff-flow-editor--runtime-terminal{background:#02080659}.ff-flow-editor--runtime-terminal .ff-node__card{border-color:#34d39940}.ff-playground .ff-sidebar{max-height:100%;overflow-y:auto}.ff-orchestration__controls{flex-wrap:wrap;gap:10px}.ff-playground--adaptive{height:100%;max-height:100dvh;overflow:hidden}.ff-playground--adaptive .ff-scenario-strip{flex-shrink:0}.ff-mobile-main{flex-direction:column;flex:1;min-height:0;display:flex;overflow:hidden}.ff-mobile-panel{flex-direction:column;flex:1;min-height:0;display:none;overflow:hidden}.ff-mobile-panel--active{display:flex}.ff-mobile-panel--topology{position:relative}.ff-mobile-panel--topology .ff-canvas-wrap{flex:1;min-height:0}.ff-mobile-panel--events,.ff-mobile-panel--runtime{overscroll-behavior:contain;-webkit-overflow-scrolling:touch;overflow-y:auto}.ff-mobile-orchestration{-webkit-backdrop-filter:blur(16px);backdrop-filter:blur(16px);background:#080c16f0;border-bottom:1px solid #38bdf824;flex-shrink:0;padding:12px 16px 10px}.ff-mobile-orchestration__top{justify-content:space-between;align-items:center;gap:12px;display:flex}.ff-mobile-orchestration__logo{text-decoration:none;display:inline-flex}.ff-mobile-orchestration__wordmark{font-size:12px;font-weight:600}.ff-mobile-orchestration__status{flex-wrap:wrap;justify-content:flex-end;align-items:center;gap:8px;display:flex}.ff-mobile-orchestration__inflight{color:#7dd3fc;background:#38bdf81f;border:1px solid #38bdf847;border-radius:999px;padding:3px 8px;font-size:11px;font-weight:600}.ff-mobile-orchestration__flow{margin-top:10px}.ff-mobile-orchestration__title{color:#f8fafc;margin:0;font-size:17px;font-weight:600;line-height:1.25}.ff-mobile-orchestration__meta{color:#94a3b8;flex-wrap:wrap;align-items:center;gap:8px;margin:4px 0 0;font-size:12px;display:flex}.ff-mobile-orchestration__context{color:#a7f3d0;background:#22c55e1a;border:1px solid #34d39947;border-radius:8px;width:100%;margin-top:6px;padding:6px 10px;font-size:11px;display:block}.ff-mobile-orchestration__transport{justify-content:flex-start;margin-top:10px;display:flex}.ff-mobile-topology-rail{-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);background:#0a0e1af5;border-top:1px solid #94a3b824;flex-shrink:0;align-items:center;gap:10px;padding:10px 12px 12px;display:flex}.ff-mobile-topology-rail__label{letter-spacing:.1em;text-transform:uppercase;color:#64748b;flex-shrink:0;font-size:10px;font-weight:600}.ff-mobile-topology-rail__list{scroll-snap-type:x proximity;-webkit-overflow-scrolling:touch;scrollbar-width:none;gap:8px;margin:0;padding:0;list-style:none;display:flex;overflow:auto hidden}.ff-mobile-topology-rail__list::-webkit-scrollbar{display:none}.ff-mobile-node-chip{color:#e2e8f0;min-height:44px;font:inherit;cursor:pointer;scroll-snap-align:start;background:#0f172ad9;border:1px solid #94a3b840;border-radius:12px;align-items:center;gap:8px;padding:6px 12px 6px 6px;transition:border-color .14s,box-shadow .14s,background .14s;display:inline-flex}.ff-mobile-node-chip--active{border-color:var(--accent,#38bdf8);box-shadow:0 0 0 1px color-mix(in srgb, var(--accent,#38bdf8) 35%, transparent);background:#0f172afa}.ff-mobile-node-chip__icon{border-radius:8px;flex-shrink:0;justify-content:center;align-items:center;width:32px;height:32px;display:flex}.ff-mobile-node-chip__icon .ff-node__icon-svg{width:16px;height:16px}.ff-mobile-node-chip__text{flex-direction:column;align-items:flex-start;gap:2px;min-width:0;display:flex}.ff-mobile-node-chip__label{white-space:nowrap;font-size:12px;font-weight:600}.ff-mobile-node-chip__state{text-transform:uppercase;letter-spacing:.06em;color:#64748b;font-size:10px}.ff-mobile-node-chip__state--running{color:#38bdf8}.ff-mobile-node-chip__state--success{color:#34d399}.ff-mobile-node-chip__state--failed{color:#f87171}.ff-canvas-wrap--companion{min-height:0}.ff-canvas-wrap--mobile:after{background:radial-gradient(#0000 55%,#070b1473 100%)}.ff-flow-editor--companion .react-flow__node{touch-action:none}.ff-flow-editor--companion.ff-flow-editor--live .react-flow__edge-path{animation:.85s linear infinite ff-edge-flow}.ff-flow-editor--companion.ff-flow-editor--live .ff-node--running .ff-node__card{animation:1.4s ease-in-out infinite ff-node-pulse}.ff-flow-editor--companion .ff-packet{z-index:12}.ff-flow-controls--touch button{width:40px!important;height:40px!important}.ff-canvas-overlay--companion{margin:10px!important}.ff-mobile-canvas-hud{flex-direction:column;align-items:flex-end;gap:6px;display:flex}.ff-runtime-chip--compact{padding:6px 10px;font-size:12px}.ff-mobile-canvas-hud__hint{color:#64748b;letter-spacing:.02em;font-size:10px}.ff-mobile-dock{-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px);background:#0a0e1af5;border-top:1px solid #94a3b824;flex-shrink:0;padding:10px 14px}.ff-mobile-dock .ff-timeline-controls{width:100%}.ff-mobile-dock__actions{flex-wrap:wrap;align-items:center;gap:8px;margin-top:8px;display:flex}.ff-speed--compact{font-size:11px}.ff-btn--touch{min-height:40px;padding:8px 14px}.ff-mobile-nav{padding:6px 10px calc(8px + env(safe-area-inset-bottom,0px));-webkit-backdrop-filter:blur(16px);backdrop-filter:blur(16px);background:#060a14fa;border-top:1px solid #38bdf81f;flex-shrink:0;grid-template-columns:repeat(3,1fr);gap:4px;display:grid}.ff-mobile-nav__btn{color:#94a3b8;min-height:52px;font:inherit;cursor:pointer;background:0 0;border:none;border-radius:12px;flex-direction:column;justify-content:center;align-items:center;gap:4px;padding:6px 8px;font-size:11px;font-weight:600;transition:background .14s,color .14s;display:flex}.ff-mobile-nav__btn--active{color:#f8fafc;background:#38bdf824;box-shadow:inset 0 0 0 1px #38bdf840}.ff-mobile-nav__icon{background:#334155a6;border-radius:6px;width:22px;height:22px;position:relative}.ff-mobile-nav__btn--active .ff-mobile-nav__icon{background:#38bdf859}.ff-mobile-nav__icon--topology:before,.ff-mobile-nav__icon--events:before,.ff-mobile-nav__icon--runtime:before{content:"";color:inherit;opacity:.85;border:2px solid;border-radius:3px;position:absolute;inset:5px}.ff-mobile-nav__icon--topology{color:#38bdf8}.ff-mobile-nav__icon--events{color:#a78bfa}.ff-mobile-nav__icon--events:before{border-radius:2px;box-shadow:0 -5px 0 -1px}.ff-mobile-nav__icon--runtime{color:#34d399}.ff-mobile-nav__icon--runtime:before{border-radius:50%}.ff-mobile-events{flex-direction:column;min-height:100%;padding:0 0 16px;display:flex}.ff-mobile-events__head{flex-shrink:0;padding:16px 16px 8px}.ff-mobile-events__head h2{color:#f8fafc;margin:0;font-size:18px;font-weight:600}.ff-mobile-events__head p{color:#94a3b8;margin:4px 0 0;font-size:12px}.ff-mobile-events .ff-copilot{border:1px solid #94a3b82e;border-radius:12px;flex-shrink:0;margin:0 12px 12px}.ff-mobile-events .ff-timeline{border-top:1px solid #94a3b81f;border-left:none;flex:1;min-height:240px;max-height:none}.ff-mobile-runtime{padding:16px 16px 24px}.ff-mobile-runtime__head h2{color:#f8fafc;margin:0;font-size:18px;font-weight:600}.ff-mobile-runtime__head p{color:#94a3b8;margin:4px 0 0;font-size:12px}.ff-mobile-runtime__metrics{grid-template-columns:repeat(2,1fr);gap:10px;margin:16px 0;display:grid}.ff-playground--tablet .ff-mobile-runtime__metrics{grid-template-columns:repeat(3,1fr)}.ff-mobile-metric{background:#0f172aa6;border:1px solid #334155a6;border-radius:12px;padding:12px}.ff-mobile-metric__label{letter-spacing:.08em;text-transform:uppercase;color:#64748b;margin-bottom:6px;font-size:10px;font-weight:600;display:block}.ff-mobile-metric__value{color:#f1f5f9;font-family:JetBrains Mono,ui-monospace,monospace;font-size:18px;font-weight:600}.ff-mobile-metric__value--alert{color:#f87171}.ff-mobile-runtime__alert{background:#7f1d1d2e;border:1px solid #f8717159;border-radius:12px;margin-bottom:16px;padding:12px 14px}.ff-mobile-runtime__alert strong{color:#fecaca;margin-bottom:4px;font-size:12px;display:block}.ff-mobile-runtime__alert p{color:#fda4af;margin:0;font-size:13px}.ff-mobile-runtime__theme,.ff-mobile-runtime__cases{margin-top:20px}.ff-mobile-runtime__theme h3,.ff-mobile-runtime__cases h3{letter-spacing:.08em;text-transform:uppercase;color:#64748b;margin:0 0 10px;font-size:11px;font-weight:600}.ff-mobile-runtime__cases .ff-case-dock{max-width:100%;position:static;transform:none}.ff-mobile-sheet{z-index:200;pointer-events:none;flex-direction:column;justify-content:flex-end;display:flex;position:fixed;inset:0}.ff-mobile-sheet__backdrop{-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);pointer-events:auto;cursor:pointer;background:#020617b8;border:none;position:absolute;inset:0}.ff-mobile-sheet__panel{pointer-events:auto;max-height:min(88dvh,720px);padding-bottom:env(safe-area-inset-bottom,0px);background:#080c16fa;border:1px solid #38bdf833;border-bottom:none;border-radius:20px 20px 0 0;flex-direction:column;display:flex;position:relative;overflow:hidden;box-shadow:0 -16px 48px #0000008c}.ff-mobile-sheet__handle{background:#94a3b873;border-radius:999px;flex-shrink:0;width:40px;height:4px;margin:10px auto 4px}.ff-mobile-sheet .ff-node-inspector{border-bottom:none;flex:1;min-height:0}.ff-mobile-sheet .ff-node-inspector--empty{display:none}.ff-mobile-sheet .ff-node-inspector__close{width:36px;height:36px;font-size:22px}.ff-mobile-sheet .ff-inspector-tabs__btn{min-height:40px;padding:8px 12px}.ff-playground--tablet .ff-mobile-panel--topology .ff-canvas-wrap{min-height:50vh}.ff-playground--tablet .ff-mobile-topology-rail__list{flex-wrap:wrap;overflow-x:visible}.react-flow{--xy-edge-stroke-default:#b1b1b7;--xy-edge-stroke-width-default:1;--xy-edge-stroke-selected-default:#555;--xy-connectionline-stroke-default:#b1b1b7;--xy-connectionline-stroke-width-default:1;--xy-attribution-background-color-default:#ffffff80;--xy-minimap-background-color-default:#fff;--xy-minimap-mask-background-color-default:#f0f0f099;--xy-minimap-mask-stroke-color-default:transparent;--xy-minimap-mask-stroke-width-default:1;--xy-minimap-node-background-color-default:#e2e2e2;--xy-minimap-node-stroke-color-default:transparent;--xy-minimap-node-stroke-width-default:2;--xy-background-color-default:transparent;--xy-background-pattern-dots-color-default:#91919a;--xy-background-pattern-lines-color-default:#eee;--xy-background-pattern-cross-color-default:#e2e2e2;background-color:var(--xy-background-color,var(--xy-background-color-default));--xy-node-color-default:inherit;--xy-node-border-default:1px solid #1a192b;--xy-node-background-color-default:#fff;--xy-node-group-background-color-default:#f0f0f040;--xy-node-boxshadow-hover-default:0 1px 4px 1px #00000014;--xy-node-boxshadow-selected-default:0 0 0 .5px #1a192b;--xy-node-border-radius-default:3px;--xy-handle-background-color-default:#1a192b;--xy-handle-border-color-default:#fff;--xy-selection-background-color-default:#0059dc14;--xy-selection-border-default:1px dotted #0059dccc;--xy-controls-button-background-color-default:#fefefe;--xy-controls-button-background-color-hover-default:#f4f4f4;--xy-controls-button-color-default:inherit;--xy-controls-button-color-hover-default:inherit;--xy-controls-button-border-color-default:#eee;--xy-controls-box-shadow-default:0 0 2px 1px #00000014;--xy-edge-label-background-color-default:#fff;--xy-edge-label-color-default:inherit;--xy-resize-background-color-default:#3367d9;direction:ltr}.react-flow.dark{--xy-edge-stroke-default:#3e3e3e;--xy-edge-stroke-width-default:1;--xy-edge-stroke-selected-default:#727272;--xy-connectionline-stroke-default:#b1b1b7;--xy-connectionline-stroke-width-default:1;--xy-attribution-background-color-default:#96969640;--xy-minimap-background-color-default:#141414;--xy-minimap-mask-background-color-default:#3c3c3c99;--xy-minimap-mask-stroke-color-default:transparent;--xy-minimap-mask-stroke-width-default:1;--xy-minimap-node-background-color-default:#2b2b2b;--xy-minimap-node-stroke-color-default:transparent;--xy-minimap-node-stroke-width-default:2;--xy-background-color-default:#141414;--xy-background-pattern-dots-color-default:#777;--xy-background-pattern-lines-color-default:#777;--xy-background-pattern-cross-color-default:#777;--xy-node-color-default:#f8f8f8;--xy-node-border-default:1px solid #3c3c3c;--xy-node-background-color-default:#1e1e1e;--xy-node-group-background-color-default:#f0f0f040;--xy-node-boxshadow-hover-default:0 1px 4px 1px #ffffff14;--xy-node-boxshadow-selected-default:0 0 0 .5px #999;--xy-handle-background-color-default:#bebebe;--xy-handle-border-color-default:#1e1e1e;--xy-selection-background-color-default:#c8c8dc14;--xy-selection-border-default:1px dotted #c8c8dccc;--xy-controls-button-background-color-default:#2b2b2b;--xy-controls-button-background-color-hover-default:#3e3e3e;--xy-controls-button-color-default:#f8f8f8;--xy-controls-button-color-hover-default:#fff;--xy-controls-button-border-color-default:#5b5b5b;--xy-controls-box-shadow-default:0 0 2px 1px #00000014;--xy-edge-label-background-color-default:#141414;--xy-edge-label-color-default:#f8f8f8}.react-flow__background{background-color:var(--xy-background-color-props,var(--xy-background-color,var(--xy-background-color-default)));pointer-events:none;z-index:-1}.react-flow__container{width:100%;height:100%;position:absolute;top:0;left:0}.react-flow__pane{z-index:1}.react-flow__pane.draggable{cursor:grab}.react-flow__pane.dragging{cursor:grabbing}.react-flow__pane.selection{cursor:pointer}.react-flow__viewport{transform-origin:0 0;z-index:2;pointer-events:none}.react-flow__renderer{z-index:4}.react-flow__selection{z-index:6}.react-flow__nodesselection-rect:focus,.react-flow__nodesselection-rect:focus-visible{outline:none}.react-flow__edge-path{stroke:var(--xy-edge-stroke,var(--xy-edge-stroke-default));stroke-width:var(--xy-edge-stroke-width,var(--xy-edge-stroke-width-default));fill:none}.react-flow__connection-path{stroke:var(--xy-connectionline-stroke,var(--xy-connectionline-stroke-default));stroke-width:var(--xy-connectionline-stroke-width,var(--xy-connectionline-stroke-width-default));fill:none}.react-flow .react-flow__edges{position:absolute}.react-flow .react-flow__edges svg{pointer-events:none;position:absolute;overflow:visible}.react-flow__edge{pointer-events:visibleStroke}.react-flow__edge.selectable{cursor:pointer}.react-flow__edge.animated path{stroke-dasharray:5;animation:.5s linear infinite dashdraw}.react-flow__edge.animated path.react-flow__edge-interaction{stroke-dasharray:none;animation:none}.react-flow__edge.inactive{pointer-events:none}.react-flow__edge.selected,.react-flow__edge:focus,.react-flow__edge:focus-visible{outline:none}.react-flow__edge.selected .react-flow__edge-path,.react-flow__edge.selectable:focus .react-flow__edge-path,.react-flow__edge.selectable:focus-visible .react-flow__edge-path{stroke:var(--xy-edge-stroke-selected,var(--xy-edge-stroke-selected-default))}.react-flow__edge-textwrapper{pointer-events:all}.react-flow__edge .react-flow__edge-text{pointer-events:none;-webkit-user-select:none;user-select:none}.react-flow__arrowhead polyline{stroke:var(--xy-edge-stroke,var(--xy-edge-stroke-default))}.react-flow__arrowhead polyline.arrowclosed{fill:var(--xy-edge-stroke,var(--xy-edge-stroke-default))}.react-flow__connection{pointer-events:none}.react-flow__connection .animated{stroke-dasharray:5;animation:.5s linear infinite dashdraw}svg.react-flow__connectionline{z-index:1001;position:absolute;overflow:visible}.react-flow__nodes{pointer-events:none;transform-origin:0 0}.react-flow__node{-webkit-user-select:none;user-select:none;pointer-events:all;transform-origin:0 0;box-sizing:border-box;cursor:default;position:absolute}.react-flow__node.selectable{cursor:pointer}.react-flow__node.draggable{cursor:grab;pointer-events:all}.react-flow__node.draggable.dragging{cursor:grabbing}.react-flow__nodesselection{z-index:3;transform-origin:0 0;pointer-events:none}.react-flow__nodesselection-rect{pointer-events:all;cursor:grab;position:absolute}.react-flow__handle{pointer-events:none;background-color:var(--xy-handle-background-color,var(--xy-handle-background-color-default));border:1px solid var(--xy-handle-border-color,var(--xy-handle-border-color-default));border-radius:100%;width:6px;min-width:5px;height:6px;min-height:5px;position:absolute}.react-flow__handle.connectingfrom{pointer-events:all}.react-flow__handle.connectionindicator{pointer-events:all;cursor:crosshair}.react-flow__handle-bottom{top:auto;bottom:0;left:50%;transform:translate(-50%,50%)}.react-flow__handle-top{top:0;left:50%;transform:translate(-50%,-50%)}.react-flow__handle-left{top:50%;left:0;transform:translate(-50%,-50%)}.react-flow__handle-right{top:50%;right:0;transform:translate(50%,-50%)}.react-flow__edgeupdater{cursor:move;pointer-events:all}.react-flow__pane.selection .react-flow__panel{pointer-events:none}.react-flow__panel{z-index:5;margin:15px;position:absolute}.react-flow__panel.top{top:0}.react-flow__panel.bottom{bottom:0}.react-flow__panel.top.center,.react-flow__panel.bottom.center{left:50%;transform:translate(-15px)translate(-50%)}.react-flow__panel.left{left:0}.react-flow__panel.right{right:0}.react-flow__panel.left.center,.react-flow__panel.right.center{top:50%;transform:translateY(-15px)translateY(-50%)}.react-flow__attribution{background:var(--xy-attribution-background-color,var(--xy-attribution-background-color-default));margin:0;padding:2px 3px;font-size:10px}.react-flow__attribution a{color:#999;text-decoration:none}@keyframes dashdraw{0%{stroke-dashoffset:10px}}.react-flow__edgelabel-renderer{pointer-events:none;-webkit-user-select:none;user-select:none;width:100%;height:100%;position:absolute;top:0;left:0}.react-flow__viewport-portal{-webkit-user-select:none;user-select:none;width:100%;height:100%;position:absolute;top:0;left:0}.react-flow__minimap{background:var(--xy-minimap-background-color-props,var(--xy-minimap-background-color,var(--xy-minimap-background-color-default)))}.react-flow__minimap-svg{display:block}.react-flow__minimap-mask{fill:var(--xy-minimap-mask-background-color-props,var(--xy-minimap-mask-background-color,var(--xy-minimap-mask-background-color-default)));stroke:var(--xy-minimap-mask-stroke-color-props,var(--xy-minimap-mask-stroke-color,var(--xy-minimap-mask-stroke-color-default)));stroke-width:var(--xy-minimap-mask-stroke-width-props,var(--xy-minimap-mask-stroke-width,var(--xy-minimap-mask-stroke-width-default)))}.react-flow__minimap-node{fill:var(--xy-minimap-node-background-color-props,var(--xy-minimap-node-background-color,var(--xy-minimap-node-background-color-default)));stroke:var(--xy-minimap-node-stroke-color-props,var(--xy-minimap-node-stroke-color,var(--xy-minimap-node-stroke-color-default)));stroke-width:var(--xy-minimap-node-stroke-width-props,var(--xy-minimap-node-stroke-width,var(--xy-minimap-node-stroke-width-default)))}.react-flow__background-pattern.dots{fill:var(--xy-background-pattern-color-props,var(--xy-background-pattern-color,var(--xy-background-pattern-dots-color-default)))}.react-flow__background-pattern.lines{stroke:var(--xy-background-pattern-color-props,var(--xy-background-pattern-color,var(--xy-background-pattern-lines-color-default)))}.react-flow__background-pattern.cross{stroke:var(--xy-background-pattern-color-props,var(--xy-background-pattern-color,var(--xy-background-pattern-cross-color-default)))}.react-flow__controls{box-shadow:var(--xy-controls-box-shadow,var(--xy-controls-box-shadow-default));flex-direction:column;display:flex}.react-flow__controls.horizontal{flex-direction:row}.react-flow__controls-button{background:var(--xy-controls-button-background-color,var(--xy-controls-button-background-color-default));border:none;border-bottom:1px solid var(--xy-controls-button-border-color-props,var(--xy-controls-button-border-color,var(--xy-controls-button-border-color-default)));width:26px;height:26px;color:var(--xy-controls-button-color-props,var(--xy-controls-button-color,var(--xy-controls-button-color-default)));cursor:pointer;-webkit-user-select:none;user-select:none;justify-content:center;align-items:center;padding:4px;display:flex}.react-flow__controls-button svg{fill:currentColor;width:100%;max-width:12px;max-height:12px}.react-flow__edge.updating .react-flow__edge-path{stroke:#777}.react-flow__edge-text{font-size:10px}.react-flow__node.selectable:focus,.react-flow__node.selectable:focus-visible{outline:none}.react-flow__node-input,.react-flow__node-default,.react-flow__node-output,.react-flow__node-group{border-radius:var(--xy-node-border-radius,var(--xy-node-border-radius-default));width:150px;color:var(--xy-node-color,var(--xy-node-color-default));text-align:center;border:var(--xy-node-border,var(--xy-node-border-default));background-color:var(--xy-node-background-color,var(--xy-node-background-color-default));padding:10px;font-size:12px}.react-flow__node-input.selectable:hover,.react-flow__node-default.selectable:hover,.react-flow__node-output.selectable:hover,.react-flow__node-group.selectable:hover{box-shadow:var(--xy-node-boxshadow-hover,var(--xy-node-boxshadow-hover-default))}.react-flow__node-input.selectable.selected,.react-flow__node-input.selectable:focus,.react-flow__node-input.selectable:focus-visible,.react-flow__node-default.selectable.selected,.react-flow__node-default.selectable:focus,.react-flow__node-default.selectable:focus-visible,.react-flow__node-output.selectable.selected,.react-flow__node-output.selectable:focus,.react-flow__node-output.selectable:focus-visible,.react-flow__node-group.selectable.selected,.react-flow__node-group.selectable:focus,.react-flow__node-group.selectable:focus-visible{box-shadow:var(--xy-node-boxshadow-selected,var(--xy-node-boxshadow-selected-default))}.react-flow__node-group{background-color:var(--xy-node-group-background-color,var(--xy-node-group-background-color-default))}.react-flow__nodesselection-rect,.react-flow__selection{background:var(--xy-selection-background-color,var(--xy-selection-background-color-default));border:var(--xy-selection-border,var(--xy-selection-border-default))}.react-flow__nodesselection-rect:focus,.react-flow__nodesselection-rect:focus-visible,.react-flow__selection:focus,.react-flow__selection:focus-visible{outline:none}.react-flow__controls-button:hover{background:var(--xy-controls-button-background-color-hover-props,var(--xy-controls-button-background-color-hover,var(--xy-controls-button-background-color-hover-default)));color:var(--xy-controls-button-color-hover-props,var(--xy-controls-button-color-hover,var(--xy-controls-button-color-hover-default)))}.react-flow__controls-button:disabled{pointer-events:none}.react-flow__controls-button:disabled svg{fill-opacity:.4}.react-flow__controls-button:last-child{border-bottom:none}.react-flow__controls.horizontal .react-flow__controls-button{border-bottom:none;border-right:1px solid var(--xy-controls-button-border-color-props,var(--xy-controls-button-border-color,var(--xy-controls-button-border-color-default)))}.react-flow__controls.horizontal .react-flow__controls-button:last-child{border-right:none}.react-flow__resize-control{position:absolute}.react-flow__resize-control.left,.react-flow__resize-control.right{cursor:ew-resize}.react-flow__resize-control.top,.react-flow__resize-control.bottom{cursor:ns-resize}.react-flow__resize-control.top.left,.react-flow__resize-control.bottom.right{cursor:nwse-resize}.react-flow__resize-control.bottom.left,.react-flow__resize-control.top.right{cursor:nesw-resize}.react-flow__resize-control.handle{background-color:var(--xy-resize-background-color,var(--xy-resize-background-color-default));border:1px solid #fff;border-radius:1px;width:5px;height:5px;translate:-50% -50%}.react-flow__resize-control.handle.left{top:50%;left:0}.react-flow__resize-control.handle.right{top:50%;left:100%}.react-flow__resize-control.handle.top{top:0;left:50%}.react-flow__resize-control.handle.bottom{top:100%;left:50%}.react-flow__resize-control.handle.top.left,.react-flow__resize-control.handle.bottom.left{left:0}.react-flow__resize-control.handle.top.right,.react-flow__resize-control.handle.bottom.right{left:100%}.react-flow__resize-control.line{border-color:var(--xy-resize-background-color,var(--xy-resize-background-color-default));border-style:solid;border-width:0}.react-flow__resize-control.line.left,.react-flow__resize-control.line.right{width:1px;height:100%;top:0;transform:translate(-50%)}.react-flow__resize-control.line.left{border-left-width:1px;left:0}.react-flow__resize-control.line.right{border-right-width:1px;left:100%}.react-flow__resize-control.line.top,.react-flow__resize-control.line.bottom{width:100%;height:1px;left:0;transform:translateY(-50%)}.react-flow__resize-control.line.top{border-top-width:1px;top:0}.react-flow__resize-control.line.bottom{border-bottom-width:1px;top:100%}.react-flow__edge-textbg{fill:var(--xy-edge-label-background-color,var(--xy-edge-label-background-color-default))}.react-flow__edge-text{fill:var(--xy-edge-label-color,var(--xy-edge-label-color-default))}
