/* Потоки видны в движении, а исходный HTML сохраняет понятный статический результат. */
.route-packet{opacity:0}.chart-line{stroke-dasharray:540;stroke-dashoffset:0}.chart-bars rect{transform-box:fill-box;transform-origin:center bottom}.demo[data-paused] *,.demo[data-paused] *::before,.demo[data-paused] *::after,.js .demo:not(.in-view) *,.js .demo:not(.in-view) *::before,.js .demo:not(.in-view) *::after,.js .industry-card:not(.in-view) *{animation-play-state:paused!important}
.js .headline-line{animation:headline-arrival .95s cubic-bezier(.16,1,.3,1) both;animation-delay:calc(var(--i)*.15s)}.js .headline-accent::after{content:'';position:absolute;bottom:-8px;left:0;height:2px;background:#8be675;width:42px;transform-origin:left;animation:headline-underline 1.3s cubic-bezier(.16,1,.3,1) both;animation-delay:.65s;opacity:.6}
.js .route-packet{animation:route-travel 5s linear infinite;animation-delay:calc(var(--i)*-.8s)}.js .hero-source{animation:source-breathe 8s ease-in-out infinite}.js .hero-source-docs{animation-delay:-2.7s}.js .hero-source-lens{animation-delay:-5.3s}.js .hero-center{animation:core-light 8s ease-in-out infinite}.js .hero-moysklad{animation:destination-ready 8s ease infinite}.js .ecosystem-source{animation:source-organize 12s cubic-bezier(.22,1,.36,1) infinite}.js .ecosystem-source:nth-child(1){--dx:-7px;--dy:14px;--tilt:-2deg}.js .ecosystem-source:nth-child(2){--dx:9px;--dy:-5px;--tilt:1deg}.js .ecosystem-source:nth-child(3){--dx:0px;--dy:10px;--tilt:-1deg}.js .ecosystem-source:nth-child(4){--dx:-8px;--dy:-10px;--tilt:2deg}.js .ecosystem-source:nth-child(5){--dx:6px;--dy:8px;--tilt:-1deg}.js .ecosystem-center{animation:core-light 12s ease-in-out infinite}.js .ecosystem-products>span{animation:solution-ready 12s ease infinite}.js .ecosystem-products>span:nth-child(2){animation-delay:.6s}.js .ecosystem-products>span:nth-child(3){animation-delay:1.2s}.js .ecosystem-entities>span{animation:entity-ready 12s ease infinite}.js .ecosystem-entities>span:nth-child(2){animation-delay:.3s}.js .ecosystem-entities>span:nth-child(3){animation-delay:.6s}.js .ecosystem-entities>span:nth-child(4){animation-delay:.9s}
.js .bank-origin-row{animation:bank-operation var(--cycle) ease infinite;animation-delay:calc(var(--i)*.65s)}.js .packet-lane>i,.js .analytics-stream>span{animation:packet-travel 3.6s linear infinite}.js .packet-lane>i:nth-child(2),.js .analytics-stream>span:nth-child(2){animation-delay:-1.2s}.js .packet-lane>i:nth-child(3),.js .analytics-stream>span:nth-child(3){animation-delay:-2.4s}.js .solution-engine{animation:engine-process var(--cycle) ease infinite}.js .engine-stages>i{animation:engine-progress 2.4s ease infinite}.js .engine-stages>i:nth-child(2){animation-delay:.3s}.js .engine-stages>i:nth-child(3){animation-delay:.6s}.js .engine-stages>i:nth-child(4){animation-delay:.9s}.js .engine-result{animation:engine-complete var(--cycle) ease infinite}.js .payment-arrival{animation:payment-created var(--cycle) cubic-bezier(.22,1,.36,1) infinite}.js .document-links>span{animation:document-linked var(--cycle) ease infinite}.js .document-links>span:nth-child(2){animation-delay:.35s}.js .document-links>span:nth-child(3){animation-delay:.7s}
.js .document-scan-beam{animation:scan-document var(--cycle) linear infinite}.js .document-detection{animation:recognize-region var(--cycle) ease infinite}.js .rows-detection{animation-delay:1.4s}.js .extraction-lines>span{animation:extracted-field var(--cycle) ease infinite}.js .extraction-lines>span:nth-child(2){animation-delay:.45s}.js .extraction-lines>span:nth-child(3){animation-delay:.9s}.js .field-packets>i{animation:field-transfer 4s ease-in-out infinite}.js .field-packets>i:nth-child(2){animation-delay:-1.3s}.js .field-packets>i:nth-child(3){animation-delay:-2.6s}.js .recognized-product{animation:recognized-position var(--cycle) ease infinite}.js .recognized-status{animation:engine-complete var(--cycle) ease infinite}
.js .entity-stack>div{animation:analytics-entity var(--cycle) ease infinite;animation-delay:calc(var(--i)*.6s)}.js .database-cylinder>div{animation:database-write 2.6s ease infinite}.js .database-cylinder>div:nth-child(2){animation-delay:.5s}.js .database-cylinder>div:nth-child(3){animation-delay:1s}.js .analytics-dashboard .chart-line{animation:analytics-chart var(--cycle) cubic-bezier(.16,1,.3,1) infinite}.js .analytics-dashboard .chart-bars>rect{animation:analytics-bar var(--cycle) cubic-bezier(.16,1,.3,1) infinite;animation-delay:calc(var(--i)*.08s)}.js .timeline>span{animation:timeline-active var(--cycle) ease infinite;animation-delay:calc(var(--i)*var(--cycle)/3)}
.js .industry-card.in-view .industry-art{animation:industry-lift 7s ease-in-out infinite;animation-delay:calc(var(--i)*-.7s)}.js .industry-card.in-view .industry-highlight{stroke-dasharray:160;animation:industry-trace 7s ease-in-out infinite;animation-delay:calc(var(--i)*-.7s)}
@keyframes headline-arrival{from{opacity:1;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}
@keyframes headline-underline{from{transform:scaleX(0)}to{transform:scaleX(1)}}
@keyframes route-travel{0%{stroke-dashoffset:1;opacity:0}8%{opacity:1}88%{opacity:1}100%{stroke-dashoffset:0;opacity:0}}
@keyframes source-breathe{0%,100%{transform:translateY(0)}50%{transform:translateY(-3px)}}
@keyframes core-light{0%,100%{border-color:#658e5d}45%,65%{border-color:#9be587;box-shadow:0 0 0 5px #8be67508}}
@keyframes destination-ready{0%,40%,100%{border-color:#bdd0e7}60%,80%{border-color:#8be675}}
@keyframes source-organize{0%,8%,100%{transform:translate(var(--dx),var(--dy)) rotate(var(--tilt));border-color:#35465b}28%,88%{transform:translate(0,0) rotate(0);border-color:#608567}}
@keyframes solution-ready{0%,30%,100%{opacity:.55}44%,90%{opacity:1}}
@keyframes entity-ready{0%,50%,100%{opacity:.4;transform:translateY(3px)}65%,90%{opacity:1;transform:translateY(0)}}
@keyframes bank-operation{0%,100%{border-color:var(--motion-bank-line,#35465b);background:var(--motion-bank-rest,#192534)}12%,32%{border-color:var(--accent);background:var(--motion-bank-active,#273030)}48%,95%{border-color:var(--motion-bank-line,#35465b);background:var(--motion-bank-rest,#192534)}}
@keyframes packet-travel{0%{left:0;opacity:0;transform:scale(.7)}10%{opacity:1;transform:scale(1)}88%{opacity:1}100%{left:calc(100% - 14px);opacity:0;transform:scale(.8)}}
@keyframes engine-process{0%,100%{box-shadow:0 0 0 0 transparent}35%,55%{box-shadow:0 0 0 5px #ffffff06}}
@keyframes engine-progress{0%,100%{opacity:.2;transform:scaleX(.8)}45%{opacity:1;transform:scaleX(1)}}
@keyframes engine-complete{0%,40%,100%{opacity:.35}58%,93%{opacity:1}}
@keyframes payment-created{0%,45%,100%{opacity:.55;transform:translateX(-6px)}65%,92%{opacity:1;transform:translateX(0)}}
@keyframes document-linked{0%,53%,100%{opacity:.45;border-color:#32485b}68%,92%{opacity:1;border-color:#5c8a65}}
@keyframes scan-document{0%,7%{top:0;opacity:0}10%{opacity:1}44%{top:100%;opacity:1}48%,100%{top:100%;opacity:0}}
@keyframes recognize-region{0%,12%{opacity:0}27%,65%{opacity:1}80%,100%{opacity:.25}}
@keyframes extracted-field{0%,25%,100%{opacity:.4;transform:translateY(2px)}44%,90%{opacity:1;transform:translateY(0)}}
@keyframes field-transfer{0%{opacity:.25;transform:translateX(-6px)}45%{opacity:1}100%{opacity:.25;transform:translateX(6px)}}
@keyframes recognized-position{0%,55%,100%{border-color:var(--motion-docs-line,#704359);background:var(--motion-docs-rest,#352333)}70%,92%{border-color:var(--docs);background:var(--motion-docs-active,#43293e)}}
@keyframes analytics-entity{0%,100%{border-color:#4c3d67}15%,35%{border-color:var(--lens)}50%,95%{border-color:#4c3d67}}
@keyframes database-write{0%,100%{background:var(--motion-database-rest,#493058);border-color:var(--motion-database-line,#aa75c6)}45%{background:var(--motion-database-active,#78528d);border-color:var(--lens)}}
@keyframes analytics-chart{0%,27%{stroke-dashoffset:540;opacity:.3}72%,94%{stroke-dashoffset:0;opacity:1}100%{stroke-dashoffset:0;opacity:.6}}
@keyframes analytics-bar{0%,28%{transform:scaleY(.12);opacity:.4}70%,100%{transform:scaleY(1);opacity:1}}
@keyframes timeline-active{0%,9%{color:var(--accent)}28%,100%{color:#65788a}}
@keyframes industry-lift{0%,100%{transform:translateY(0)}45%{transform:translateY(-2px)}}
@keyframes industry-trace{0%,100%{stroke-dashoffset:160;opacity:.3}35%,78%{stroke-dashoffset:0;opacity:1}}
@media(max-width:760px){.js .ecosystem-source{animation-name:mobile-source-organize}@keyframes mobile-source-organize{0%,100%{border-color:#35465b}30%,85%{border-color:#608567}}}
@media(prefers-reduced-motion:reduce){.demo *,.demo *::before,.demo *::after,.industry-card *,.headline-line,.headline-line::after{animation:none!important;transition:none!important}.headline-line{opacity:1;transform:none}.route-packet,.document-scan-beam{display:none}.chart-line{stroke-dashoffset:0}.motion-toggle{display:none}}
.js .analytics-dashboard .report-chart>circle{animation:analytics-endpoint var(--cycle) ease infinite}
@keyframes analytics-endpoint{0%,55%{opacity:0}76%,94%{opacity:1}100%{opacity:.6}}
/* Скрытая вкладка освобождает ресурсы всех декоративных CSS-анимаций. */
.page-hidden *,.page-hidden *::before,.page-hidden *::after {animation-play-state:paused!important;}
