@keyframes flowline{to{stroke-dashoffset:-240px}}@keyframes beam{to{transform:rotate(360deg)}}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}.hero-cast-stage{flex:none;width:1200px;height:390px;position:relative}@media (min-width:834px) and (max-width:1199px){.hero-cast-stage{zoom:.695}}
.product-demo{--demo-ease:cubic-bezier(.2, .8, .2, 1)}@keyframes caret{0%,to{opacity:1}50%{opacity:0}}@keyframes flowline{to{stroke-dashoffset:-240px}}@keyframes scan{0%{transform:translateY(0)}to{transform:translateY(320px)}}@keyframes draw{0%{stroke-dashoffset:400px}to{stroke-dashoffset:0}}@keyframes fadeUp{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}@keyframes beam{to{transform:rotate(360deg)}}@keyframes ringpulse{0%{opacity:.5;transform:scale(1)}to{opacity:0;transform:scale(1.9)}}@keyframes dot{0%,to{opacity:.4;transform:translateY(0)}50%{opacity:1;transform:translateY(-3px)}}@keyframes pulse{0%{box-shadow:0 0 #16a34a80}to{box-shadow:0 0 0 8px #16a34a00}}@keyframes travel{0%{offset-distance:0%;opacity:0}8%{opacity:1}92%{opacity:1}to{offset-distance:100%;opacity:0}}@keyframes breathe{0%,to{opacity:.45}50%{opacity:.12}}@keyframes floaty{0%,to{transform:translateY(0)}50%{transform:translateY(-6px)}}@keyframes shimmer{0%{background-position:-200px 0}to{background-position:200px 0}}.product-demo .demo-caret{animation:1s step-end infinite caret}.product-demo .demo-flowline{animation-name:flowline;animation-timing-function:linear;animation-iteration-count:infinite}.product-demo .demo-beam{animation:1s linear infinite beam}.product-demo .demo-ringpulse{animation:1.6s ease-out infinite ringpulse}.product-demo .demo-dot{animation:1.4s ease-in-out infinite dot}.product-demo .demo-dot-a{animation:1s ease-in-out infinite dot}.product-demo .demo-dot-b{animation:1s ease-in-out .2s infinite dot}.product-demo .demo-dot-c{animation:1s ease-in-out .4s infinite dot}.product-demo .demo-scan{animation:2.4s linear infinite scan}.product-demo .demo-draw{animation:draw 1.2s var(--demo-ease) forwards}
@keyframes docs-travel{0%{offset-distance:0%;opacity:1}92%{opacity:1}to{offset-distance:100%;opacity:0}}@keyframes draw{0%{stroke-dashoffset:400px}to{stroke-dashoffset:0}}@keyframes shimmer{0%{background-position:-200px 0}to{background-position:200px 0}}.docs-canvas{background-color:#fff;background-image:radial-gradient(circle at 1px 1px,#0b151212 1px,#0000 0);background-size:20px 20px;border:1px solid #e3e8e6;border-radius:12px;height:520px;position:relative;overflow:hidden}.docs-conn{pointer-events:none;width:100%;height:100%;position:absolute;inset:0;overflow:visible}.docs-chip{box-sizing:border-box;cursor:pointer;color:#0b1512;background:#fff;border:1px solid #e3e8e6;border-radius:6px;padding:5px 10px;font-family:inherit;font-size:12px;font-weight:600;line-height:1.25;transition:background .25s,border-color .25s,box-shadow .25s;box-shadow:inset 0 0 #0000}.docs-chip[aria-pressed=true]{background:#64eeea2e;border-color:#2c7c73}.docs-chip:hover{border-color:#2c7c73}.docs-gen-label{font:600 8.5px var(--font-jetbrains), ui-monospace, monospace;letter-spacing:.1em;text-transform:uppercase;background:linear-gradient(90deg,#fff,#64eeea);-webkit-text-fill-color:transparent;color:#fff;-webkit-background-clip:text;background-clip:text}.docs-mobile{background-color:#fff;background-image:radial-gradient(circle at 1px 1px,#0b151212 1px,#0000 0);background-size:20px 20px;border:1px solid #e3e8e6;border-radius:12px;flex-direction:column;align-items:center;gap:10px;min-height:520px;padding:16px;display:flex;position:relative}@media (max-width:833px){.docs-chip{border-radius:999px;padding:7px 12px}}
@keyframes ringpulse{0%{opacity:.5;transform:scale(1)}to{opacity:0;transform:scale(1.9)}}@keyframes fadeUp{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}@keyframes pulse{0%{box-shadow:0 0 #16a34a80}to{box-shadow:0 0 0 8px #16a34a00}}.otg-ringpulse{animation:1.6s ease-out infinite ringpulse}.otg-fade-up{animation:.5s both fadeUp}.otg-pulse{animation:.7s ease-out pulse}
@keyframes travel{0%{offset-distance:0%;opacity:0}8%{opacity:1}92%{opacity:1}to{offset-distance:100%;opacity:0}}@keyframes draw{0%{stroke-dashoffset:400px}to{stroke-dashoffset:0}}@keyframes dot{0%,to{opacity:.4;transform:translateY(0)}50%{opacity:1;transform:translateY(-3px)}}@keyframes breathe{0%,to{opacity:.45}50%{opacity:.12}}@keyframes flowline{to{stroke-dashoffset:-240px}}