/* Persistent decorative motion. Never animate balances, prices or layout sizes. */
:root{--ambient-lift:-5px;--ambient-accent:color-mix(in srgb,var(--cyan) 24%,transparent)}
:root[data-theme=light]{--ambient-accent:color-mix(in srgb,var(--cyan) 16%,transparent)}

/* Small moving accents are clipped to their own layer, never over copy. */
.benefit-strip{position:relative}
.benefit-strip:after,.footer:before{content:'';position:absolute;left:0;right:0;top:0;height:1px;pointer-events:none;background:linear-gradient(90deg,transparent 25%,var(--cyan) 50%,transparent 75%);background-size:50% 100%;background-repeat:no-repeat;opacity:.65}
.footer{position:relative}
.section-index i{position:relative;overflow:hidden}
.section-index i:after{content:'';position:absolute;inset:0;background:linear-gradient(90deg,transparent,var(--cyan),transparent);transform:translateX(-100%)}
.section-heading .eyebrow:before,.workspace-heading .eyebrow:before{content:'';height:5px;width:5px;border-radius:50%;flex:none;background:var(--cyan)}
.status-visual>div,.split-bar,.income-result,.income-average,.telegram-note,.faq-support{position:relative}
.status-visual>div:after{content:'';position:absolute;inset:-1px;border:1px solid var(--cyan);border-radius:inherit;opacity:0;pointer-events:none}
.income-result,.split-bar{overflow:hidden;isolation:isolate}
.income-result:after{content:'';position:absolute;left:18px;right:18px;bottom:0;height:2px;background:linear-gradient(90deg,transparent,var(--green),transparent);opacity:.65;pointer-events:none}
.split-bar:after{content:'';position:absolute;inset:0;pointer-events:none;background:linear-gradient(110deg,transparent 30%,#ffffff38 48%,transparent 66%);transform:translateX(-110%)}
.income-average:after{content:'';position:absolute;bottom:-1px;left:0;width:35%;height:1px;background:linear-gradient(90deg,transparent,var(--cyan),transparent);pointer-events:none}
.chat-command,.chat-reply{position:relative}
.chat-command:after{content:'';position:absolute;inset:0;pointer-events:none;border:1px solid var(--cyan);border-radius:inherit;opacity:0}
.week-clock-face:after{border-color:var(--cyan)}
.faq-support:after{content:'';position:absolute;left:18px;right:18px;bottom:-1px;height:1px;pointer-events:none;background:linear-gradient(90deg,transparent,var(--cyan),transparent);opacity:.6}
.balance-preview>div{overflow:hidden}
.balance-preview>div:after{content:'';position:absolute;left:16px;right:16px;bottom:0;height:1px;background:linear-gradient(90deg,transparent,var(--cyan),transparent);pointer-events:none}
.week-days li{position:relative}
.week-days li:after{content:'';position:absolute;left:25%;right:25%;bottom:5px;height:2px;border-radius:2px;background:var(--cyan);opacity:0}
.trust-grid article>span{position:relative}
.trust-grid article>span:after{content:'';position:absolute;inset:-5px;border:1px solid var(--cyan);border-radius:inherit;pointer-events:none;opacity:0}
.steps article:after{pointer-events:none}

@keyframes ambient-drift{0%,100%{translate:0 0}50%{translate:0 var(--ambient-lift)}}
@keyframes ambient-breath{0%,100%{opacity:.45}50%{opacity:1}}
@keyframes ambient-packet{0%,18%,100%{opacity:0}28%,43%{opacity:.65}60%{opacity:0}}
@keyframes ambient-border{0%,100%{opacity:0}20%,45%{opacity:.5}}
@keyframes ambient-line{0%,15%{background-position:-100% 0}75%,100%{background-position:200% 0}}
@keyframes ambient-trace{0%,18%{transform:translateX(-110%);opacity:0}22%{opacity:.6}68%{opacity:.6}80%,100%{transform:translateX(110%);opacity:0}}
@keyframes ambient-arrow{0%,65%,100%{translate:0 0;opacity:.65}78%{translate:3px 0;opacity:1}}
@keyframes ambient-bars{0%,100%{transform:scaleY(.8)}45%{transform:scaleY(1)}70%{transform:scaleY(.9)}}
@keyframes ambient-ring{to{rotate:360deg}}
@keyframes ambient-ring-breath{0%,100%{scale:.98;opacity:.16}50%{scale:1.025;opacity:.28}}
@keyframes ambient-icon-ring{0%,20%{scale:.92;opacity:0}40%{opacity:.35}85%,100%{scale:1.15;opacity:0}}
@keyframes ambient-gradient{0%,100%{background-position:0 50%}50%{background-position:100% 50%}}

@media(prefers-reduced-motion:no-preference){
  /* Header and hero already have a real cabinet tour; only frame accents move. */
  :root:not([data-motion=off]) .header.in-view .logo img,
  :root:not([data-motion=off]) .footer.in-view .logo img{animation:ambient-drift 8s ease-in-out infinite}
  :root:not([data-motion=off]) .hero.in-view .signal{animation:ambient-breath 4s ease-in-out infinite}
  :root:not([data-motion=off]) :is(.hero,.terms-intro,.income-card,.closing).in-view .gradient{background-size:200% 100%;animation:ambient-gradient 12s ease-in-out infinite}
  :root:not([data-motion=off]) .benefit-strip.in-view:after,
  :root:not([data-motion=off]) .footer.in-view:before{animation:ambient-line 11s ease-in-out infinite}
  :root:not([data-motion=off]) .section-index.in-view i:after{animation:ambient-trace 9s ease-in-out infinite}
  :root:not([data-motion=off]) :is(.section-heading,.workspace-heading).in-view .eyebrow:before{animation:ambient-breath 5s ease-in-out infinite}

  /* Infrastructure, status chain, report and financial flow each have a rhythm. */
  :root:not([data-motion=off]) .feature.in-view .server-visual>div:after{animation:ambient-trace 5s ease-in-out infinite}
  :root:not([data-motion=off]) .feature.in-view .server-visual>div:nth-child(2):after{animation-delay:-1.6s}
  :root:not([data-motion=off]) .feature.in-view .server-visual>div:nth-child(3):after{animation-delay:-3.2s}
  .server-visual>div{overflow:hidden}
  :root:not([data-motion=off]) .feature.in-view .status-visual>div:after{animation:ambient-border 7.5s ease-in-out infinite}
  :root:not([data-motion=off]) .feature.in-view .status-visual>div:nth-of-type(2):after{animation-delay:2.5s}
  :root:not([data-motion=off]) .feature.in-view .status-visual>div:nth-of-type(3):after{animation-delay:5s}
  :root:not([data-motion=off]) .feature.in-view .report-visual{animation:ambient-drift 9s ease-in-out infinite}
  :root:not([data-motion=off]) .feature.in-view .report-bars i{animation:ambient-bars 5s ease-in-out infinite}
  :root:not([data-motion=off]) .feature.in-view .report-bars i:nth-child(2n){animation-delay:-1.7s}
  :root:not([data-motion=off]) .feature.in-view .report-bars i:nth-child(3n){animation-delay:-3.2s}
  :root:not([data-motion=off]) .feature.in-view .money-flow img{animation:ambient-drift 7s ease-in-out infinite}
  :root:not([data-motion=off]) .feature.in-view .money-flow>i{animation:ambient-arrow 3.5s ease-in-out infinite}
  :root:not([data-motion=off]) .farm-cycle.in-view:not([data-running=true]) .cycle-orb span{animation:ambient-breath 6s ease-in-out infinite}

  /* Demo items move, but their sample values and statuses remain unchanged. */
  :root:not([data-motion=off]) .workspace.in-view .workspace-status-strip i{animation:ambient-breath 4s ease-in-out infinite}
  :root:not([data-motion=off]) .workspace.in-view .workspace-status-strip>div:nth-child(2) i{animation-delay:-1.3s}
  :root:not([data-motion=off]) .workspace.in-view .workspace-status-strip>div:nth-child(3) i{animation-delay:-2.6s}
  :root:not([data-motion=off]) .workspace.in-view .preview-items img{animation:ambient-drift 7s ease-in-out infinite}
  :root:not([data-motion=off]) .workspace.in-view .preview-items article:nth-child(2) img{animation-delay:-3.5s}
  :root:not([data-motion=off]) .workspace.in-view .balance-preview>div:after{animation:ambient-breath 5s ease-in-out infinite}
  :root:not([data-motion=off]) .workspace.in-view .balance-glyph{animation:ambient-drift 6s ease-in-out infinite}

  :root:not([data-motion=off]) .steps article.in-view .chat-command:after{animation:ambient-border 7s ease-in-out infinite}
  :root:not([data-motion=off]) .steps article.in-view .step-chat-head>b{animation:ambient-arrow 7s ease-in-out infinite}
  :root:not([data-motion=off]) .steps article.in-view:before{animation:ambient-breath 6s ease-in-out infinite}
  :root:not([data-motion=off]) .income-card.in-view .income-average:after{animation:ambient-trace 10s ease-in-out infinite}
  :root:not([data-motion=off]) .income-card.in-view .income-result:after{animation:ambient-breath 6s ease-in-out infinite}
  :root:not([data-motion=off]) .week-card.in-view .week-clock-face{animation:ambient-clock-glow 8s ease-in-out infinite}
  :root:not([data-motion=off]) .week-card.in-view .week-days li:after{animation:ambient-packet 14s ease-in-out infinite}
  :root:not([data-motion=off]) .week-card.in-view .week-days li:nth-child(2):after{animation-delay:2s}
  :root:not([data-motion=off]) .week-card.in-view .week-days li:nth-child(3):after{animation-delay:4s}
  :root:not([data-motion=off]) .week-card.in-view .week-days li:nth-child(4):after{animation-delay:6s}
  :root:not([data-motion=off]) .week-card.in-view .week-days li:nth-child(5):after{animation-delay:8s}
  :root:not([data-motion=off]) .week-card.in-view .week-days li:nth-child(6):after{animation-delay:10s}
  :root:not([data-motion=off]) .week-card.in-view .week-days li:nth-child(7):after{animation-delay:12s}
  :root:not([data-motion=off]) .week-card.in-view .telegram-note>span{animation:ambient-drift 7s ease-in-out infinite}

  /* Calculator proportions and monetary figures must never oscillate. */
  :root:not([data-motion=off]) .terms-card.in-view .split-bar:after{animation:ambient-trace 9s ease-in-out infinite}
  :root:not([data-motion=off]) .terms-card.in-view .signal{animation:ambient-breath 4s ease-in-out infinite}
  :root:not([data-motion=off]) .trust-grid article.in-view>span:after{animation:ambient-icon-ring 7s ease-out infinite}
  :root:not([data-motion=off]) .trust-grid article.in-view:nth-child(2)>span:after{animation-delay:-2.3s}
  :root:not([data-motion=off]) .trust-grid article.in-view:nth-child(3)>span:after{animation-delay:-4.6s}
  :root:not([data-motion=off]) .faq-intro.in-view .faq-orbit>i{animation:ambient-ring 32s linear infinite}
  :root:not([data-motion=off]) .faq-intro.in-view .faq-support:after{animation:ambient-breath 6s ease-in-out infinite}
  :root:not([data-motion=off]) .faq-list.in-view details[open] .faq-chevron{animation:ambient-chevron-glow 5s ease-in-out infinite}
  :root:not([data-motion=off]) .closing.in-view:before{animation:ambient-ring-breath 12s ease-in-out infinite}
  :root:not([data-motion=off]) .closing.in-view .closing-mark{animation:ambient-drift 10s ease-in-out infinite}
}
@keyframes ambient-clock-glow{0%,100%{box-shadow:0 0 16px var(--glow)}50%{box-shadow:0 0 34px var(--ambient-accent)}}
@keyframes ambient-chevron-glow{0%,100%{filter:drop-shadow(0 0 0 transparent)}50%{filter:drop-shadow(0 0 4px var(--ambient-accent))}}

/* Stop EVERY loop, including older decorative loops and pseudo-elements. */
:root .ambient-block:not(.in-view),
:root .ambient-block:not(.in-view) *,
:root .ambient-block:not(.in-view):before,
:root .ambient-block:not(.in-view):after,
:root .ambient-block:not(.in-view) *:before,
:root .ambient-block:not(.in-view) *:after{animation-play-state:paused!important}
:root[data-page-hidden] *,:root[data-page-hidden] *:before,:root[data-page-hidden] *:after{animation-play-state:paused!important}
/* Keep form interaction quiet while typing or selecting a value. */
.income-card:focus-within *,.income-card:focus-within *:after,
.terms-card:focus-within *,.terms-card:focus-within *:after{animation-play-state:paused!important}
@media(max-width:650px),(pointer:coarse){
  :root{--ambient-lift:-2px}
  :root:not([data-motion=off]) .feature.in-view .report-bars i{animation-duration:7s}
  :root:not([data-motion=off]) .week-card.in-view .week-clock-face,
  :root:not([data-motion=off]) .faq-list.in-view details[open] .faq-chevron{animation:none}
}
@media(prefers-reduced-motion:reduce){
  .ambient-block,.ambient-block *,.ambient-block:before,.ambient-block:after,.ambient-block *:before,.ambient-block *:after{animation:none!important;transition:none!important}
}
