.ff-v2{--ff-bg:oklch(98.51% 0 0);--ff-bg-elevated:oklch(100% 0 0);--ff-fg:oklch(24.68% 0.0063 325.77);--ff-fg-muted:oklch(55.47% 0 0);--ff-fg-subtle:oklch(78.94% 0 0);--ff-fg-faint:oklch(87.67% 0 0);--ff-card:oklch(100% 0 0);--ff-muted:oklch(96.94% 0 0);--ff-sidebar:oklch(97.50% 0 0);--ff-border:oklch(93.10% 0 0);--ff-border-subtle:oklch(96.00% 0 0);--ff-violet:oklch(64.42% 0.1975 293.97);--ff-violet-soft:oklch(54.41% 0.2518 288.75);--ff-violet-subtle:oklch(96.82% 0.014 288.75);--ff-success:oklch(62.30% 0.1688 149.18);--ff-success-subtle:oklch(96.10% 0.0157 158.36);--ff-success-border:oklch(91.21% 0.0271 158.06);--ff-warning:oklch(84.08% 0.1725 84.20);--ff-warning-subtle:oklch(98.66% 0.0218 95.28);--ff-warning-border:oklch(92.57% 0.1141 95.75);--ff-destructive:oklch(63.62% 0.2102 25.49);--ff-destructive-subtle:oklch(96.78% 0.0142 17.40);--ff-destructive-border:oklch(88.46% 0.0379 17.89);--ff-info:oklch(54.49% 0.2154 262.74);--ff-info-subtle:oklch(97.16% 0.0136 255.03);--ff-info-border:oklch(88.07% 0.058 253.59);--ff-indicator:oklch(87.67% 0 0);--ff-diff-add-line:oklch(89.35% 0.054 155.97);--ff-diff-del-line:oklch(86.55% 0.0447 18.05);--ff-diff-add-word:oklch(78.71% 0.139 153.91);--ff-diff-del-word:oklch(71.09% 0.1228 20.60);--ff-font-sans:var(--font-inter),ui-sans-serif,system-ui,-apple-system,"Segoe UI",sans-serif;--ff-font-mono:var(--font-jetbrains-mono),"SF Mono",Consolas,ui-monospace,monospace;--ff-font-serif:var(--font-instrument-serif),"Iowan Old Style",Georgia,serif;--ff-text-2xs:10px;--ff-text-xs:11px;--ff-text-sm:13px;--ff-text-base:14px;--ff-text-lg:18px;--ff-text-xl:24px;--ff-text-2xl:32px;--ff-text-3xl:44px;--ff-text-4xl:56px;--ff-text-5xl:72px;--ff-weight-regular:400;--ff-weight-medium:500;--ff-weight-semibold:600;--ff-track-tight:-0.022em;--ff-track-hero:-0.02em;--ff-track-eyebrow:0.18em;--ff-lead-tight:1.05;--ff-lead-heading:1.2;--ff-lead-body:1.5;--ff-lead-prose:1.75;--ff-radius-sm:5px;--ff-radius:6px;--ff-radius-md:6px;--ff-radius-lg:8px;--ff-radius-xl:12px;--ff-radius-2xl:16px;--ff-shadow-sm:0 2px 8px 0 rgb(0 0 0/0.12);--ff-shadow:0 4px 16px 0 rgb(0 0 0/0.16);--ff-shadow-md:0 8px 24px 0 rgb(0 0 0/0.20);--ff-shadow-lg:0 16px 48px 0 rgb(0 0 0/0.24);--ff-shadow-focus:0 0 0 3px oklch(64.42% 0.1975 293.97/0.25);--ff-amber:oklch(72% 0.13 62);--ff-amber-soft:oklch(62% 0.145 52);--ff-amber-subtle:oklch(96.5% 0.028 75);--ff-amber-border:oklch(88% 0.062 70);--ff-moss:oklch(64.42% 0.165 148);--ff-moss-soft:oklch(54.41% 0.155 148);--ff-moss-subtle:oklch(96% 0.04 155);--ff-moss-border:oklch(88% 0.06 150);--ff-ink:oklch(36% 0.005 290);--ff-ink-soft:oklch(55% 0.005 290);background:var(--ff-bg);color:var(--ff-fg);font-family:var(--ff-font-sans);font-size:14px;line-height:1.55;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-rendering:optimizeLegibility;font-feature-settings:"kern","liga","calt","ss01";overflow-x:clip}.ff-v2 *,.ff-v2 :after,.ff-v2 :before{box-sizing:border-box}.ff-v2 a{color:inherit;text-decoration:none}.ff-v2 button{font-family:inherit}.ff-v2 .serif{font-style:normal}.ff-v2 .serif,.ff-v2 .serif-ital{font-family:var(--ff-font-serif);font-weight:400}.ff-v2 .serif-ital{font-style:italic}.ff-v2 .mono{font-family:var(--ff-font-mono);font-feature-settings:"zero"}.ff-v2 .container{width:100%;max-width:1240px;margin:0 auto;padding:0 32px}.ff-v2 .container-narrow{width:100%;max-width:960px;margin:0 auto;padding:0 32px}.ff-v2 .section-label{font-family:var(--ff-font-mono);font-size:11px;font-weight:500;text-transform:lowercase;letter-spacing:.02em;color:var(--ff-fg-muted);display:flex;align-items:center;gap:10px}.ff-v2 .section-label:before{content:"";width:6px;height:6px;border-radius:999px;background:var(--ff-violet)}.ff-v2 .hr-dashed{border:none;border-top:1px dashed oklch(70% 0 0/.45);margin:0}.ff-v2 .hr-solid{border:none;border-top:1px solid var(--ff-border);margin:0}.ff-v2 .display{font-family:var(--ff-font-sans);font-weight:500;letter-spacing:-.035em;line-height:.96;color:var(--ff-fg)}.ff-v2 .rail{writing-mode:vertical-rl;transform:rotate(180deg);font-family:var(--ff-font-mono);font-size:10px;letter-spacing:.22em;text-transform:uppercase;color:var(--ff-fg-muted)}.ff-v2 .dot-grid{background-image:radial-gradient(circle at 1px 1px,oklch(85% 0 0) 1px,transparent 0);background-size:22px 22px}.ff-v2 .reveal{opacity:1;transform:none;transition:opacity .9s cubic-bezier(.16,1,.3,1),transform .9s cubic-bezier(.16,1,.3,1);transition-delay:var(--reveal-delay,0s)}html.ff-v2-reveal-armed .ff-v2 .reveal{opacity:0;transform:translateY(8px)}html.ff-v2-reveal-armed .ff-v2 .reveal.in{opacity:1;transform:none}.ff-v2 .btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;height:40px;padding:0 18px;border-radius:6px;font-size:13px;font-weight:500;font-family:var(--ff-font-sans);cursor:pointer;border:1px solid transparent;transition:background .16s,color .16s,border-color .16s,transform .16s;text-decoration:none;white-space:nowrap}.ff-v2 .btn-primary{background:var(--ff-fg);color:var(--ff-bg);border-color:var(--ff-fg)}.ff-v2 .btn-primary:hover{background:#000}.ff-v2 .btn-ghost{background:transparent;color:var(--ff-fg);border-color:var(--ff-border)}.ff-v2 .btn-ghost:hover{border-color:var(--ff-fg-muted);background:var(--ff-muted)}.ff-v2 .mono-link{font-family:var(--ff-font-mono);font-size:12px;letter-spacing:.02em;text-transform:lowercase;color:var(--ff-fg-muted);border-bottom:1px dashed oklch(70% 0 0/.5);padding-bottom:1px;transition:color .16s,border-color .16s}.ff-v2 .mono-link:hover{color:var(--ff-fg);border-bottom-color:var(--ff-fg)}.ff-v2 .chip{display:inline-flex;align-items:center;gap:8px;padding:4px 10px 4px 8px;border:1px solid var(--ff-border);border-radius:999px;font-family:var(--ff-font-mono);font-size:11px;letter-spacing:.02em;color:var(--ff-fg-muted);background:var(--ff-card)}.ff-v2 .chip-dot{width:6px;height:6px;border-radius:999px;background:var(--ff-violet);box-shadow:0 0 0 3px oklch(64.42% .1975 293.97/.15)}.ff-v2 .mark{background-image:linear-gradient(180deg,transparent 62%,oklch(64.42% .1975 293.97/.18) 0,oklch(64.42% .1975 293.97/.18) 92%,transparent 0);padding:0 2px}.ff-v2 .muted{color:var(--ff-fg-muted)}.ff-v2 .faint{color:var(--ff-fg-faint)}@keyframes ff-v2-pulse-ring{0%{transform:scale(.9);opacity:.9}to{transform:scale(2.4);opacity:0}}@keyframes ff-v2-signal-flow{0%{stroke-dashoffset:120;opacity:0}12%{opacity:1}90%{opacity:1}to{stroke-dashoffset:0;opacity:0}}@keyframes ff-v2-blink{0%,49%{opacity:1}50%,to{opacity:0}}@keyframes ff-v2-marquee{0%{transform:translateX(0)}to{transform:translateX(-50%)}}@keyframes ff-v2-orbit-in{0%{opacity:0;transform:scale(.7)}to{opacity:1;transform:scale(1)}}@keyframes ff-v2-tab-progress{0%{transform:scaleX(0)}to{transform:scaleX(1)}}@keyframes ff-v2-hero-manifest{0%{opacity:0;transform:translateY(10px);filter:blur(6px)}60%{filter:blur(0)}to{opacity:1;transform:translateY(0);filter:blur(0)}}@keyframes ff-v2-hero-art-in{0%{opacity:.7;transform:scale(1.02)}to{opacity:1;transform:scale(1)}}.ff-v2 .ff-v2-hero-art{position:absolute;inset:-40px -40px -40px -40px;z-index:0;background-image:url(/auth/hero-horizon-light-sm.webp);background-size:cover;background-position:center 38%;background-repeat:no-repeat;pointer-events:none;animation:ff-v2-hero-art-in 1.4s cubic-bezier(.16,1,.3,1) both;will-change:transform;transition:transform .9s cubic-bezier(.16,1,.3,1)}@media (min-width:761px){.ff-v2 .ff-v2-hero-art{background-image:url(/auth/hero-horizon-light-md.webp)}}@media (min-width:1281px){.ff-v2 .ff-v2-hero-art{background-image:url(/auth/hero-horizon-light.webp)}}.ff-v2 .ff-v2-hero-art-grain{position:absolute;inset:0;z-index:1;pointer-events:none;opacity:.35;mix-blend-mode:overlay;background-image:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='200' height='200'><filter id='n'><feTurbulence type='fractalNoise' baseFrequency='0.9' numOctaves='2' stitchTiles='stitch'/><feColorMatrix values='0 0 0 0 0  0 0 0 0 0  0 0 0 0 0  0 0 0 0.55 0'/></filter><rect width='100%25' height='100%25' filter='url(%23n)'/></svg>")}.ff-v2 .ff-v2-hero-scrim{position:absolute;inset:0;z-index:2;pointer-events:none;background:linear-gradient(to bottom,var(--ff-bg) 0,oklch(98.51% 0 0/.55) 12%,oklch(98.51% 0 0/.1) 38%,oklch(98.51% 0 0/.1) 70%,var(--ff-bg) 100%)}.ff-v2 .ff-v2-hero-manifest>*{opacity:0;animation:ff-v2-hero-manifest .9s cubic-bezier(.16,1,.3,1) both;animation-delay:calc(var(--ff-stagger, 0) * 1ms)}.ff-v2 .blink{animation:ff-v2-blink 1.1s steps(2) infinite}.ff-v2 .dark-section{background:#0e0c0e;color:#e9e7ea}.ff-v2 .dark-section .muted,.ff-v2 .dark-section .section-label{color:oklch(62% 0 0)}.ff-v2 .dark-section .hr-solid{border-top-color:rgba(255,255,255,.08)}.ff-v2 .dark-section .hr-dashed{border-top-color:rgba(255,255,255,.14)}.ff-v2 .flex{display:flex}.ff-v2 .items-center{align-items:center}.ff-v2 .items-start{align-items:flex-start}.ff-v2 .items-end{align-items:flex-end}.ff-v2 .justify-between{justify-content:space-between}.ff-v2 .justify-center{justify-content:center}.ff-v2 .gap-2{gap:8px}.ff-v2 .gap-3{gap:12px}.ff-v2 .gap-4{gap:16px}.ff-v2 .gap-6{gap:24px}.ff-v2 .gap-8{gap:32px}.ff-v2 .grid{display:grid}.ff-v2 .relative{position:relative}.ff-v2 .absolute{position:absolute}.ff-v2{--ff-container-pad:clamp(16px,4vw,32px)}.ff-v2 .container,.ff-v2 .container-narrow{padding-left:var(--ff-container-pad);padding-right:var(--ff-container-pad)}.ff-v2 .flex>*,.ff-v2 .grid>*{min-width:0}.ff-v2 pre,.ff-v2 svg{max-width:100%}.ff-v2 .ff-v2-tabs{overflow-x:auto;scrollbar-width:none}.ff-v2 .ff-v2-tabs::-webkit-scrollbar{display:none}.ff-v2 .ff-v2-action-row,.ff-v2 .ff-v2-hero-buttons{flex-wrap:wrap}.ff-v2 .ff-v2-cli-pre,.ff-v2 .ff-v2-code-block{overflow-x:auto!important;-webkit-overflow-scrolling:touch}.ff-v2 .ff-v2-cli-surface,.ff-v2 .ff-v2-dash-surface,.ff-v2 .ff-v2-full-issue,.ff-v2 .ff-v2-slack-surface{max-width:100%}@media (max-width:1180px){.ff-v2 .ff-v2-hero-copy-grid{grid-template-columns:minmax(0,1fr) minmax(320px,420px)!important;gap:40px!important}.ff-v2 .ff-v2-loop-row{grid-template-columns:64px minmax(0,1fr) minmax(360px,440px)!important;gap:32px!important}.ff-v2 .ff-v2-loop-grid{grid-template-columns:repeat(2,minmax(0,1fr))!important;gap:28px!important}.ff-v2 .ff-v2-issue-layout{grid-template-columns:220px minmax(0,1fr)!important}.ff-v2 .ff-v2-issue-signals{grid-column:1/-1!important;border-left:0!important;border-top:1px solid var(--ff-border)}.ff-v2 .ff-v2-footer-grid{grid-template-columns:repeat(3,minmax(0,1fr))!important}}@media (max-width:980px){.ff-v2 .ff-v2-nav-menu{display:none!important}.ff-v2 .ff-v2-section{padding-top:96px!important;padding-bottom:88px!important}.ff-v2 .ff-v2-hero{padding-top:56px!important;padding-bottom:72px!important}.ff-v2 .ff-v2-copy-grid{align-items:start!important}.ff-v2 .ff-v2-copy-grid,.ff-v2 .ff-v2-hero-copy-grid{grid-template-columns:minmax(0,1fr)!important;gap:32px!important}.ff-v2 .ff-v2-hero-actions{padding-bottom:0!important}.ff-v2 .ff-v2-metrics-grid{grid-template-columns:repeat(2,minmax(0,1fr))!important}.ff-v2 .ff-v2-metric-item{border-right:0!important;border-bottom:1px solid var(--ff-border);padding:28px 24px 28px 0!important}.ff-v2 .ff-v2-metric-item:nth-last-child(-n+2){border-bottom:0}.ff-v2 .ff-v2-loop-row{grid-template-columns:56px minmax(0,1fr)!important;gap:24px!important}.ff-v2 .ff-v2-loop-viz{grid-column:2/-1}.ff-v2 .ff-v2-loop-grid{grid-template-columns:minmax(0,1fr)!important;gap:32px!important}.ff-v2 .ff-v2-dash-layout{grid-template-columns:minmax(0,1fr)!important;min-height:auto!important}.ff-v2 .ff-v2-dash-sidebar{border-right:0!important;border-bottom:1px solid var(--ff-border)}.ff-v2 .ff-v2-footer-grid{grid-template-columns:repeat(2,minmax(0,1fr))!important}}@media (max-width:760px){.ff-v2{--ff-container-pad:18px}.ff-v2 .ff-v2-nav-inner{height:60px!important}.ff-v2 .ff-v2-nav-signin{display:none!important}.ff-v2 .ff-v2-nav-cta{height:36px!important;padding:0 12px!important;font-size:12px!important;min-width:0!important}.ff-v2 .ff-v2-section{padding-top:76px!important;padding-bottom:68px!important}.ff-v2 .ff-v2-hero{padding-top:44px!important;padding-bottom:56px!important}.ff-v2 .ff-v2-section-kicker{flex-direction:column!important;align-items:flex-start!important;justify-content:flex-start!important;gap:10px!important;margin-bottom:36px!important}.ff-v2 .ff-v2-live-status{gap:10px!important}.ff-v2 .ff-v2-hero-title{font-size:clamp(44px,14vw,72px)!important;line-height:.98!important}.ff-v2 .ff-v2-outcome-title{font-size:clamp(42px,13vw,72px)!important}.ff-v2 .ff-v2-cta-title{font-size:clamp(42px,14vw,80px)!important;line-height:1!important}.ff-v2 .ff-v2-hero-trace{align-items:flex-start!important;flex-direction:column!important;gap:8px!important}.ff-v2 .ff-v2-hero-canvas{padding:24px 18px 18px!important;border-radius:10px!important}.ff-v2 .ff-v2-hero-canvas-label{position:static!important}.ff-v2 .ff-v2-hero-canvas-label-right{margin-top:8px}.ff-v2 .ff-v2-hero-canvas-stage{padding-top:18px!important;min-height:0!important}.ff-v2 .ff-v2-flow-canvas,.ff-v2 .ff-v2-hero-flow-grid>div:nth-child(2){display:none!important}.ff-v2 .ff-v2-hero-flow-grid{grid-template-columns:minmax(0,1fr)!important;gap:20px!important;min-height:0!important}.ff-v2 .ff-v2-hero-source-list{display:grid!important;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px!important}.ff-v2 .ff-v2-hero-issue-column{display:block!important}.ff-v2 .ff-v2-hero-metrics{grid-template-columns:repeat(2,minmax(0,1fr))!important;gap:16px!important}.ff-v2 .ff-v2-marquee-inner{align-items:flex-start!important;flex-direction:column!important;gap:14px!important}.ff-v2 .ff-v2-marquee-label{flex-shrink:1!important}.ff-v2 .ff-v2-loop-row{grid-template-columns:minmax(0,1fr)!important;gap:18px!important;padding:36px 0!important}.ff-v2 .ff-v2-loop-viz{grid-column:auto}.ff-v2 .ff-v2-collect-viz{grid-template-columns:repeat(2,minmax(0,1fr))!important}.ff-v2 .ff-v2-table-viz{overflow-x:auto!important}.ff-v2 .ff-v2-table-viz-head,.ff-v2 .ff-v2-table-viz-row{min-width:440px}.ff-v2 .ff-v2-issue-layout{grid-template-columns:minmax(0,1fr)!important}.ff-v2 .ff-v2-browser-bar{flex-wrap:wrap}.ff-v2 .ff-v2-browser-url{margin-left:0!important;order:4;width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.ff-v2 .ff-v2-browser-badge{margin-left:0!important}.ff-v2 .ff-v2-issue-inbox{border-right:0!important;border-bottom:1px solid var(--ff-border)}.ff-v2 .ff-v2-issue-main,.ff-v2 .ff-v2-issue-signals{padding:20px!important}.ff-v2 .ff-v2-blast-head,.ff-v2 .ff-v2-callsite-head{align-items:flex-start!important;flex-direction:column!important;gap:6px!important}.ff-v2 .ff-v2-code-block{font-size:11px!important}.ff-v2 .ff-v2-blast-grid{grid-template-columns:minmax(0,1fr)!important}.ff-v2 .ff-v2-blast-arrow{padding:4px 0;transform:rotate(90deg)}.ff-v2 .ff-v2-tabs{padding-bottom:1px}.ff-v2 .ff-v2-tab-endpoint{display:none!important}.ff-v2 .ff-v2-dash-main{padding:16px!important}.ff-v2 .ff-v2-dash-header{align-items:flex-start!important;flex-direction:column!important;gap:12px!important}.ff-v2 .ff-v2-dash-filters{flex-wrap:wrap}.ff-v2 .ff-v2-dash-row{grid-template-columns:56px 58px minmax(0,1fr) 46px!important;gap:8px!important;padding:12px!important}.ff-v2 .ff-v2-dash-file{display:none!important}.ff-v2 .ff-v2-dash-title{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.ff-v2 .ff-v2-slack-surface{padding:18px!important}.ff-v2 .ff-v2-slack-message{gap:10px!important}.ff-v2 .ff-v2-cli-pre{padding:18px!important;font-size:12px!important}.ff-v2 .ff-v2-testimonial-grid{grid-template-columns:minmax(0,1fr)!important;gap:28px!important;margin-top:64px!important}.ff-v2 .rail{writing-mode:horizontal-tb;transform:none}.ff-v2 .ff-v2-testimonial-quote{font-size:clamp(24px,8vw,32px)!important}.ff-v2 .ff-v2-cta-form{flex-direction:column!important}.ff-v2 .ff-v2-cta-button,.ff-v2 .ff-v2-cta-input{width:100%}.ff-v2 .ff-v2-proof-row{justify-content:flex-start!important;gap:12px!important}.ff-v2 .ff-v2-footer-grid{grid-template-columns:minmax(0,1fr)!important;gap:32px!important}.ff-v2 .ff-v2-footer-bottom{align-items:flex-start!important;flex-direction:column!important;gap:10px!important}}@media (max-width:560px){.ff-v2{--ff-container-pad:16px}.ff-v2 .ff-v2-section{padding-top:56px!important;padding-bottom:48px!important}.ff-v2 .ff-v2-hero{padding-top:32px!important;padding-bottom:40px!important}.ff-v2 .ff-v2-action-row .btn,.ff-v2 .ff-v2-hero-buttons .btn{width:100%}.ff-v2 .ff-v2-metrics-grid{grid-template-columns:minmax(0,1fr)!important}.ff-v2 .ff-v2-metric-item:nth-last-child(-n+2){border-bottom:1px solid var(--ff-border)}.ff-v2 .ff-v2-metric-item:last-child{border-bottom:0}.ff-v2 .ff-v2-collect-viz,.ff-v2 .ff-v2-dedup-grid{grid-template-columns:minmax(0,1fr)!important}.ff-v2 .ff-v2-output-callout>div:last-child{align-items:flex-start!important;flex-direction:column!important;gap:4px!important}.ff-v2 .ff-v2-dash-row{grid-template-columns:52px 54px minmax(0,1fr)!important}.ff-v2 .ff-v2-dash-when{grid-column:3;text-align:left!important}.ff-v2 .ff-v2-slack-message{flex-direction:column}}@media (max-width:360px){.ff-v2 .ff-v2-hero-metrics,.ff-v2 .ff-v2-hero-source-list{grid-template-columns:minmax(0,1fr)!important}}.ff-v2 .ff-v2-scrolly-grid{display:grid;grid-template-columns:minmax(0,220px) minmax(0,1fr);gap:80px;align-items:start}.ff-v2 .ff-v2-scrolly-toc{position:sticky;top:96px;align-self:start}.ff-v2 .ff-v2-scrolly-toc-list{margin:0;padding:0;list-style:none;display:flex;flex-direction:column;gap:4px;border-left:1px solid var(--ff-border)}.ff-v2 .ff-v2-scrolly-toc-item{position:relative}.ff-v2 .ff-v2-scrolly-toc-item button{display:flex;align-items:baseline;gap:14px;width:100%;padding:8px 0 8px 18px;background:transparent;border:0;text-align:left;cursor:pointer;color:var(--ff-fg-muted);font-size:13px;font-weight:400;letter-spacing:-.005em;transition:color .2s;border-left:1.5px solid transparent;margin-left:-1px}.ff-v2 .ff-v2-scrolly-toc-item button:hover{color:var(--ff-fg)}.ff-v2 .ff-v2-scrolly-toc-num{font-size:10px;color:var(--ff-fg-faint);letter-spacing:.16em;flex-shrink:0;min-width:18px;transition:color .2s}.ff-v2 .ff-v2-scrolly-toc-text{line-height:1.45}.ff-v2 .ff-v2-scrolly-toc-item.is-active button{color:var(--ff-violet);font-weight:500;border-left-color:var(--ff-violet)}.ff-v2 .ff-v2-scrolly-toc-item.is-active .ff-v2-scrolly-toc-num{color:var(--ff-violet)}.ff-v2 .ff-v2-scrolly-visuals{display:flex;flex-direction:column}.ff-v2 .ff-v2-scrolly-visual{padding-bottom:120px;scroll-margin-top:96px}.ff-v2 .ff-v2-scrolly-visual:last-child{padding-bottom:0}.ff-v2 .ff-v2-scrolly-visual-header{margin-bottom:28px}.ff-v2 .ff-v2-scrolly-visual-thread{max-width:720px}@media (max-width:980px){.ff-v2 .ff-v2-scrolly-grid{grid-template-columns:minmax(0,1fr);gap:0}.ff-v2 .ff-v2-scrolly-toc{display:none}.ff-v2 .ff-v2-scrolly-visual{padding-bottom:80px}}.ff-v2 .ff-v2-slackdemo-wrap{position:relative}.ff-v2 .ff-v2-slackdemo-caption{display:flex;justify-content:center;margin-top:20px}.ff-v2 .ff-v2-slackdemo{position:relative;border-radius:12px;background:#1A1D21;border:1px solid rgba(255,255,255,.05);box-shadow:inset 0 1px 0 rgba(255,255,255,.04),0 30px 80px -28px rgba(20,20,40,.32),0 8px 24px -16px rgba(20,20,40,.2);overflow:hidden;font-family:var(--ff-font-sans);color:#D1D2D3;height:700px;display:flex;flex-direction:column}.ff-v2 .ff-v2-slackdemo-chrome{display:flex;align-items:center;gap:12px;height:36px;padding:0 14px;background:#1A1D21;border-bottom:1px solid rgba(255,255,255,.06);flex-shrink:0}.ff-v2 .ff-v2-slackdemo-traffic{display:flex;gap:7px}.ff-v2 .ff-v2-slackdemo-traffic span{width:11px;height:11px;border-radius:999px;box-shadow:inset 0 0 0 .5px rgba(0,0,0,.25)}.ff-v2 .ff-v2-slackdemo-appbar{flex:1;display:flex;align-items:center;gap:6px;max-width:560px;margin:0 auto}.ff-v2 .ff-v2-slackdemo-appbar .navbtn{width:22px;height:22px;display:grid;place-items:center;color:rgba(209,210,211,.6);border-radius:4px}.ff-v2 .ff-v2-slackdemo-appbar .search{flex:1;display:flex;align-items:center;gap:8px;height:24px;padding:0 10px;background:rgba(255,255,255,.06);border-radius:6px;color:rgba(209,210,211,.55);font-size:12px;margin-left:8px}.ff-v2 .ff-v2-slackdemo-pill{display:inline-flex;align-items:center;gap:8px;font-family:var(--ff-font-mono);font-size:11px;color:rgba(209,210,211,.78);background:rgba(255,255,255,.04);border:1px solid rgba(255,255,255,.08);padding:3px 10px;border-radius:999px;letter-spacing:.02em;white-space:nowrap}.ff-v2 .ff-v2-slackdemo-pill .dot{width:6px;height:6px;border-radius:999px;background:#36C5AB;box-shadow:0 0 0 3px rgba(54,197,171,.18)}.ff-v2 .ff-v2-slackdemo-pill .counter{color:rgba(209,210,211,.45);border-left:1px solid rgba(255,255,255,.1);padding-left:8px}.ff-v2 .ff-v2-slackdemo-body{display:grid;grid-template-columns:60px 220px 1fr;flex:1;min-height:0}.ff-v2 .ff-v2-slackdemo-rail{background:#0F0E13;border-right:1px solid rgba(0,0,0,.4);display:flex;flex-direction:column;align-items:stretch;padding-top:10px;gap:4px}.ff-v2 .ff-v2-slackdemo-rail-ws{width:38px;height:38px;margin:0 auto 12px;border-radius:8px;background:#FFFFFF;display:grid;place-items:center;color:#0e0c0e}.ff-v2 .ff-v2-slackdemo-rail-item{display:flex;flex-direction:column;align-items:center;gap:2px;padding:6px 0;color:rgba(209,210,211,.66);cursor:default;position:relative}.ff-v2 .ff-v2-slackdemo-rail-item .ico{width:26px;height:26px;border-radius:6px;display:grid;place-items:center;position:relative}.ff-v2 .ff-v2-slackdemo-rail-item .ico .badge{position:absolute;top:-3px;right:-3px;background:#CD2553;color:#fff;font-size:9px;font-weight:700;border-radius:999px;min-width:14px;height:14px;display:grid;place-items:center;padding:0 4px;border:2px solid #0f0e13}.ff-v2 .ff-v2-slackdemo-rail-item .lbl{font-size:10px;color:rgba(209,210,211,.78);letter-spacing:.01em}.ff-v2 .ff-v2-slackdemo-rail-item.on{color:#FFFFFF}.ff-v2 .ff-v2-slackdemo-rail-item.on .ico{background:rgba(255,255,255,.1);color:#FFFFFF}.ff-v2 .ff-v2-slackdemo-rail-item.on .lbl{color:#FFFFFF;font-weight:600}.ff-v2 .ff-v2-slackdemo-rail-add{width:32px;height:32px;margin:8px auto 12px;border-radius:8px;background:rgba(255,255,255,.06);display:grid;place-items:center;color:#FFFFFF;font-size:18px;font-weight:300}.ff-v2 .ff-v2-slackdemo-side{background:#19171D;color:#BABBBE;border-right:1px solid rgba(0,0,0,.4);display:flex;flex-direction:column;font-size:14px;padding-bottom:12px;overflow:hidden}.ff-v2 .ff-v2-slackdemo-side-head{display:flex;align-items:center;justify-content:space-between;padding:12px 14px 10px}.ff-v2 .ff-v2-slackdemo-side-head .ws{display:inline-flex;align-items:center;gap:4px;color:#FFFFFF;font-weight:800;font-size:16px;letter-spacing:-.01em}.ff-v2 .ff-v2-slackdemo-side-head .compose{width:26px;height:26px;border-radius:6px;background:rgba(255,255,255,.08);color:#FFFFFF;display:grid;place-items:center;border:none;cursor:pointer}.ff-v2 .ff-v2-slackdemo-side-nav{display:flex;flex-direction:column;padding:0 6px 4px}.ff-v2 .ff-v2-slackdemo-siderow{display:flex;align-items:center;gap:10px;padding:4px 8px;border-radius:4px;font-size:14px;color:#BABBBE;cursor:default}.ff-v2 .ff-v2-slackdemo-siderow .ico{display:inline-flex;opacity:.85}.ff-v2 .ff-v2-slackdemo-siderow .badge{margin-left:auto;background:#CD2553;color:#fff;font-size:11px;font-weight:700;border-radius:999px;padding:0 6px;min-width:16px;text-align:center}.ff-v2 .ff-v2-slackdemo-sidesec{display:inline-flex;align-items:center;gap:6px;padding:12px 14px 4px;font-size:14px;color:rgba(209,210,211,.62);font-weight:500}.ff-v2 .ff-v2-slackdemo-side-list{display:flex;flex-direction:column;padding:0 6px}.ff-v2 .ff-v2-slackdemo-chrow{display:flex;align-items:center;gap:8px;padding:3px 8px;border-radius:4px;color:#BABBBE;font-size:14px;cursor:default;position:relative}.ff-v2 .ff-v2-slackdemo-chrow .hash{color:rgba(209,210,211,.62);font-weight:400;width:14px;display:inline-flex;justify-content:center}.ff-v2 .ff-v2-slackdemo-chrow.bold:not(.on),.ff-v2 .ff-v2-slackdemo-chrow.bold:not(.on) .hash{color:#FFFFFF}.ff-v2 .ff-v2-slackdemo-chrow.unread{color:#FFFFFF;font-weight:700}.ff-v2 .ff-v2-slackdemo-chrow.on{background:#1164A3;color:#FFFFFF;font-weight:700}.ff-v2 .ff-v2-slackdemo-chrow.on .hash{color:#FFFFFF}.ff-v2 .ff-v2-slackdemo-chrow.dm .ava{width:18px;height:18px;border-radius:4px;position:relative;flex-shrink:0;color:#0e0c0e}.ff-v2 .ff-v2-slackdemo-chrow.dm .ava .presence{position:absolute;right:-3px;bottom:-3px;width:8px;height:8px;border-radius:999px;border:2px solid #19171d}.ff-v2 .ff-v2-slackdemo-chrow.dm .ava .presence.on{background:#2BAC76}.ff-v2 .ff-v2-slackdemo-chrow.dm .ava .presence.away{background:transparent;box-shadow:inset 0 0 0 1.5px rgba(209,210,211,.7)}.ff-v2 .ff-v2-slackdemo-chrow .apppill{margin-left:4px;font-family:var(--ff-font-mono);font-size:9px;padding:1px 4px;background:rgba(255,255,255,.1);color:rgba(209,210,211,.78);border-radius:2px;letter-spacing:.06em;font-weight:700}.ff-v2 .ff-v2-slackdemo-main{display:flex;flex-direction:column;background:#1A1D21;min-width:0;min-height:0}.ff-v2 .ff-v2-slackdemo-chhead{display:flex;align-items:center;justify-content:space-between;padding:10px 16px;border-bottom:1px solid rgba(255,255,255,.06);flex-shrink:0}.ff-v2 .ff-v2-slackdemo-chhead .left{display:inline-flex;align-items:center;gap:8px}.ff-v2 .ff-v2-slackdemo-chhead .title{display:inline-flex;align-items:center;gap:4px;font-weight:800;font-size:16px;color:#FFFFFF}.ff-v2 .ff-v2-slackdemo-chhead .title .hash{color:#FFFFFF}.ff-v2 .ff-v2-slackdemo-chhead .sep{width:1px;height:14px;background:rgba(255,255,255,.1);margin:0 4px}.ff-v2 .ff-v2-slackdemo-chhead .topic{font-size:13px;color:rgba(209,210,211,.62)}.ff-v2 .ff-v2-slackdemo-chhead .right{display:inline-flex;align-items:center;gap:14px;color:rgba(209,210,211,.66);font-size:13px}.ff-v2 .ff-v2-slackdemo-chhead .members{display:inline-flex;align-items:center;gap:5px;border:1px solid rgba(255,255,255,.08);padding:2px 7px;border-radius:4px}.ff-v2 .ff-v2-slackdemo-chhead .hi{color:rgba(209,210,211,.66)}.ff-v2 .ff-v2-slackdemo-stream{flex:1;min-height:0;overflow:hidden;padding:12px 24px 8px;display:flex;flex-direction:column;justify-content:flex-end}.ff-v2 .ff-v2-slackdemo-divider{display:flex;align-items:center;gap:12px;margin:0 0 4px}.ff-v2 .ff-v2-slackdemo-divider .line{flex:1;height:1px;background:rgba(255,255,255,.08)}.ff-v2 .ff-v2-slackdemo-divider .pill{font-size:12px;font-weight:700;color:#D1D2D3;border:1px solid rgba(255,255,255,.1);border-radius:999px;padding:2px 12px;background:#1A1D21}.ff-v2 .ff-v2-slackdemo-msg{display:flex;gap:10px;padding:8px 0;align-items:flex-start;animation:ff-v2-sd-fadeup .35s ease-out both}.ff-v2 .ff-v2-slackdemo-msg.fresh{animation:ff-v2-sd-fadeup .45s cubic-bezier(.16,1,.3,1) both}.ff-v2 .ff-v2-slackdemo-ava{width:36px;height:36px;border-radius:6px;flex-shrink:0}.ff-v2 .ff-v2-slackdemo-msg .body{flex:1;min-width:0;line-height:1.45}.ff-v2 .ff-v2-slackdemo-msg .head{display:inline-flex;align-items:baseline;gap:6px}.ff-v2 .ff-v2-slackdemo-msg .head .name{font-weight:800;color:#FFFFFF;font-size:15px;letter-spacing:-.005em}.ff-v2 .ff-v2-slackdemo-msg .head .apppill{font-family:var(--ff-font-mono);font-size:9px;background:rgba(255,255,255,.1);color:rgba(209,210,211,.78);padding:1px 4px;border-radius:2px;font-weight:700;letter-spacing:.06em}.ff-v2 .ff-v2-slackdemo-msg .head .time{font-size:12px;color:rgba(209,210,211,.42)}.ff-v2 .ff-v2-slackdemo-msg .content{font-size:14px;color:#D1D2D3;margin-top:1px}.ff-v2 .ff-v2-slackdemo-msg .content p{margin:0 0 6px;line-height:1.5}.ff-v2 .ff-v2-slackdemo-msg .content p:last-child{margin-bottom:0}.ff-v2 .ff-v2-slackdemo-reply{margin-top:10px;animation:ff-v2-sd-fadeup .35s ease-out both;max-width:640px}.ff-v2 .ff-v2-slackdemo-actions{display:flex;align-items:center;gap:8px;margin-top:10px;animation:ff-v2-sd-fadeup .3s ease-out both;flex-wrap:wrap}.ff-v2 .ff-v2-slackdemo-btn{display:inline-flex;align-items:center;font-size:13px;font-weight:700;padding:6px 14px;border-radius:4px;cursor:default;letter-spacing:-.005em}.ff-v2 .ff-v2-slackdemo-btn.green{background:#007A5A;color:#FFFFFF}.ff-v2 .ff-v2-slackdemo-btn.ghost{background:transparent;color:#D1D2D3;border:1px solid rgba(255,255,255,.18)}.ff-v2 .ff-v2-slackdemo-agent{margin-top:6px;background:rgba(255,255,255,.035);border:1px solid rgba(255,255,255,.1);border-radius:10px;padding:6px 0;max-width:460px;font-size:14px}.ff-v2 .ff-v2-slackdemo-agent.fresh{animation:ff-v2-sd-attreveal .4s cubic-bezier(.16,1,.3,1) both}.ff-v2 .ff-v2-slackdemo-agent-row{display:flex;align-items:center;gap:12px;padding:5px 16px;color:#D1D2D3}.ff-v2 .ff-v2-slackdemo-agent-row.parent{padding:7px 16px 7px 14px}.ff-v2 .ff-v2-slackdemo-agent-row.parent .lbl{font-weight:700;color:#FFFFFF;flex:1}.ff-v2 .ff-v2-slackdemo-agent-row .lbl.muted,.ff-v2 .ff-v2-slackdemo-agent-row.parent .chev{color:rgba(209,210,211,.55)}.ff-v2 .ff-v2-slackdemo-agent-row .lbl{color:#D1D2D3}.ff-v2 .ff-v2-slackdemo-agent-divider{height:1px;background:rgba(255,255,255,.06);margin:0}.ff-v2 .ff-v2-slackdemo-stepicon{width:22px;height:22px;display:grid;place-items:center;flex-shrink:0;border-radius:999px;transition:color .3s,background .3s}.ff-v2 .ff-v2-slackdemo-stepicon.pending{color:rgba(209,210,211,.45)}.ff-v2 .ff-v2-slackdemo-stepicon.sparkle{color:#C4B5FD;animation:ff-v2-sd-sparkle 1.6s ease-in-out infinite}.ff-v2 .ff-v2-slackdemo-stepicon.spin{color:#FFFFFF;background:rgba(255,255,255,.1)}.ff-v2 .ff-v2-slackdemo-stepicon.spin svg{animation:ff-v2-sd-spin 1.1s linear infinite}.ff-v2 .ff-v2-slackdemo-stepicon.done{color:#FFFFFF;background:rgba(255,255,255,.1)}.ff-v2 .ff-v2-slackdemo-alert{display:flex;margin-top:6px;border-radius:6px;overflow:hidden;background:rgba(255,255,255,.03);max-width:600px}.ff-v2 .ff-v2-slackdemo-alert-bar{width:4px;background:#E01E5A;flex-shrink:0}.ff-v2 .ff-v2-slackdemo-alert-body{padding:10px 14px;display:flex;flex-direction:column;gap:6px;font-size:13.5px}.ff-v2 .ff-v2-slackdemo-alert-body .ttl{color:#D1D2D3}.ff-v2 .ff-v2-slackdemo-alert-body .meta{display:flex;flex-direction:column;gap:2px;font-size:13px;color:rgba(209,210,211,.78)}.ff-v2 .ff-v2-slackdemo-alert.compact .ff-v2-slackdemo-alert-body{padding:8px 14px}.ff-v2 .ff-v2-slackdemo-alert.compact .meta{display:none}.ff-v2 .ff-v2-slackdemo-prcard{margin-top:10px;border-left:4px solid #007a5a;background:rgba(255,255,255,.04);border-radius:4px;padding:12px 14px;max-width:600px}.ff-v2 .ff-v2-slackdemo-prcard.fresh{animation:ff-v2-sd-attreveal .4s cubic-bezier(.16,1,.3,1) both}.ff-v2 .ff-v2-slackdemo-prcard .head{display:flex;align-items:baseline;justify-content:space-between;gap:12px;margin-bottom:6px}.ff-v2 .ff-v2-slackdemo-prcard .head .t{font-weight:700;color:#FFFFFF;font-size:14px}.ff-v2 .ff-v2-slackdemo-prcard .head .meta{font-family:var(--ff-font-mono);font-size:11px;color:rgba(209,210,211,.55)}.ff-v2 .ff-v2-slackdemo-prcard .diff{display:inline-flex;align-items:center;gap:8px;font-size:13px;color:rgba(209,210,211,.78);flex-wrap:wrap}.ff-v2 .ff-v2-slackdemo-prcard .diff .add{color:#2BAC76;font-family:var(--ff-font-mono);font-weight:700}.ff-v2 .ff-v2-slackdemo-prcard .diff .del{color:#E0245E;font-family:var(--ff-font-mono);font-weight:700}.ff-v2 .ff-v2-slackdemo-prcard .diff .files{color:rgba(209,210,211,.78)}.ff-v2 .ff-v2-slackdemo-fixbtn{position:relative;display:inline-flex}.ff-v2 .ff-v2-slackdemo-fixbtn.pressed .ff-v2-slackdemo-btn.green{filter:brightness(.88);transform:translateY(1px)}.ff-v2 .ff-v2-slackdemo-fixbtn .ripple{position:absolute;inset:0;border-radius:4px;pointer-events:none;box-shadow:0 0 0 0 rgba(255,255,255,.4);animation:ff-v2-sd-ripple .9s ease-out forwards}.ff-v2 .ff-v2-slackdemo-cursor{position:absolute;left:32px;top:-12px;filter:drop-shadow(0 2px 4px rgba(0,0,0,.45));animation:ff-v2-sd-cursor-fly 1s cubic-bezier(.5,0,.2,1) forwards;pointer-events:none;z-index:5}.ff-v2 .ff-v2-slackdemo-cursor.landed{animation:ff-v2-sd-cursor-fly 1s cubic-bezier(.5,0,.2,1) forwards,ff-v2-sd-cursor-press .3s ease-out 1s forwards}.ff-v2 .ff-v2-slackdemo-composer{margin:6px 16px 14px;border:1px solid rgba(255,255,255,.16);border-radius:8px;background:#222529;display:flex;flex-direction:column;flex-shrink:0}.ff-v2 .ff-v2-slackdemo-composer .bar{display:flex;align-items:center;gap:12px;padding:6px 12px;border-bottom:1px solid rgba(255,255,255,.06);font-size:12px;color:rgba(209,210,211,.62)}.ff-v2 .ff-v2-slackdemo-composer .bar .div{width:1px;height:14px;background:rgba(255,255,255,.1)}.ff-v2 .ff-v2-slackdemo-composer .input{padding:12px 14px;font-size:14px}.ff-v2 .ff-v2-slackdemo-composer .input .ph{color:rgba(209,210,211,.42)}.ff-v2 .ff-v2-slackdemo-composer .trail{display:flex;align-items:center;gap:8px;padding:6px 8px;border-top:1px solid rgba(255,255,255,.04)}.ff-v2 .ff-v2-slackdemo-composer .trail .ico{width:24px;height:24px;display:grid;place-items:center;color:rgba(209,210,211,.66);font-size:13px}.ff-v2 .ff-v2-slackdemo-composer .trail .send{margin-left:auto;width:26px;height:26px;display:grid;place-items:center;background:rgba(255,255,255,.1);color:rgba(209,210,211,.66);border-radius:4px}.ff-v2 .ff-v2-slackdemo-dots{display:flex;gap:6px}.ff-v2 .ff-v2-slackdemo-dots span{width:6px;height:6px;border-radius:999px;background:var(--ff-fg-faint);transition:background .3s,width .3s}.ff-v2 .ff-v2-slackdemo-dots span.on{background:var(--ff-fg);width:18px}@keyframes ff-v2-sd-fadeup{0%{opacity:0;transform:translateY(6px)}to{opacity:1;transform:translateY(0)}}@keyframes ff-v2-sd-attreveal{0%{opacity:0;transform:translateY(6px) scale(.99)}to{opacity:1;transform:translateY(0) scale(1)}}@keyframes ff-v2-sd-spin{0%{transform:rotate(0deg)}to{transform:rotate(1turn)}}@keyframes ff-v2-sd-sparkle{0%,to{opacity:.7;transform:scale(.94)}50%{opacity:1;transform:scale(1.06)}}@keyframes ff-v2-sd-ripple{0%{box-shadow:0 0 0 0 rgba(255,255,255,.45)}to{box-shadow:0 0 0 14px rgba(255,255,255,0)}}@keyframes ff-v2-sd-cursor-fly{0%{left:220px;top:-64px;opacity:0;transform:rotate(-12deg)}to{left:32px;top:-8px;opacity:1;transform:rotate(0deg)}}@keyframes ff-v2-sd-cursor-press{0%{transform:rotate(0deg) scale(1)}50%{transform:rotate(0deg) scale(.78)}to{transform:rotate(0deg) scale(1)}}@media (max-width:980px){.ff-v2 .ff-v2-slackdemo{height:600px}.ff-v2 .ff-v2-slackdemo-body{grid-template-columns:1fr}.ff-v2 .ff-v2-slackdemo-appbar,.ff-v2 .ff-v2-slackdemo-rail,.ff-v2 .ff-v2-slackdemo-side{display:none}.ff-v2 .ff-v2-slackdemo-pill{font-size:10px;padding:2px 8px}.ff-v2 .ff-v2-slackdemo-dots{display:flex}.ff-v2 .ff-v2-slackdemo-agent,.ff-v2 .ff-v2-slackdemo-alert,.ff-v2 .ff-v2-slackdemo-prcard,.ff-v2 .ff-v2-slackdemo-reply{max-width:100%}}@media (max-width:760px){.ff-v2 .ff-v2-slackdemo{height:520px}.ff-v2 .ff-v2-slackdemo-stream{padding:10px 16px 6px}.ff-v2 .ff-v2-slackdemo-agent-row .lbl.muted,.ff-v2 .ff-v2-slackdemo-msg .head .time{color:rgba(209,210,211,.7)}.ff-v2 .ff-v2-slackdemo-composer .input .ph,.ff-v2 .ff-v2-slackdemo-prcard .head .meta{color:rgba(209,210,211,.62)}}
/*# sourceMappingURL=90225e11d4e6960d.css.map*/