/* Main Revenue motion stylesheet (motion redesign 2026-10-15): everything the first paint does not need, split out of
   ds.css so it no longer blocks rendering (measured on a 4x phone: the block in ds.css cost ~150 ms of LCP). Linked at
   the end of <body>: the page above it paints first, and motion.js (deferred) waits for it, so no state ever blinks.
   Keyframes, .ds-motion from-states, .mo-off pauses, the orb's light / grain / rings, the edge light, the button fills
   and their reduced-motion overrides. Layout (sizes, positions, grids) stays in ds.css: nothing shifts when this lands. */
.mo-paint .mo-orb { visibility: visible; }
.mo-orb > * { position: absolute; }
/* outer glow: soft purple light around the orb, gradient only (a blur filter this size costs paint every frame it moves) */
.mo-orb-glow { inset: -8%;   /* ≤ 22 px past the orb box: inside the 24 px gutter, so the page never widens */ border-radius: 50%; background: radial-gradient(closest-side, rgba(124, 92, 255, .34), rgba(124, 92, 255, .14) 58%, rgba(124, 92, 255, 0) 100%);
  animation: mo-fade-in calc(var(--m-slow) * 2) var(--m-ease) backwards; }
.mo-par { inset: 0; will-change: transform; animation: mo-orb-in calc(var(--m-slow) * 1.6) var(--m-ease) var(--m-fast) backwards; }
/* the orb arrives after first paint (keyframes, fill backwards only: GSAP owns the transform afterwards) */
@keyframes mo-orb-in { from { opacity: 0; transform: scale(.62); } }
@keyframes mo-fade-in { from { opacity: 0; } }
/* the core: a soft radial, bright purple → violet → transparent (no hard rim), with a static film grain on top */
.mo-orb-core { position: absolute; inset: 15%; border-radius: 50%; animation: mo-breathe calc(var(--m-slow) * 7) var(--m-ease) infinite;
  /* closest-side: the gradient ends exactly at the circle's edge, so the edge is a fade, not a cut */
  background: radial-gradient(circle closest-side at 44% 40%, rgba(236, 230, 255, .9), rgba(236, 230, 255, 0) 34%),
    radial-gradient(circle closest-side, #9d7bff 0, #8b5cf6 26%, #6d3ff0 48%, rgba(91, 33, 182, .78) 64%, rgba(76, 29, 149, .36) 82%, rgba(76, 29, 149, 0) 100%); }
.mo-orb-core::after { content: ''; position: absolute; inset: 0; border-radius: 50%; opacity: .3; mix-blend-mode: soft-light;
  background: url("data:image/png;base64,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") 0 0 / 48px 48px;   /* pre-rendered noise: an SVG feTurbulence filter cost ~100 ms of first paint on a 4x phone */
  -webkit-mask: radial-gradient(closest-side, #000 55%, transparent 100%); mask: radial-gradient(closest-side, #000 55%, transparent 100%); }
/* orbiting rings: clearly visible hairlines, each carrying a bead */
.mo-ring { position: absolute; border-radius: 50%; border: 1px solid rgba(196, 181, 253, .42); will-change: transform; }   /* absolute: in flow a ring had no height and drew as a line */
.mo-ring.r1 { inset: 7%; animation: mo-spin calc(var(--m-slow) * 19) linear infinite; }
.mo-ring.r2 { inset: 0; border-color: rgba(196, 181, 253, .26); animation: mo-spin calc(var(--m-slow) * 36) linear infinite reverse; }
.mo-ring::after { content: ''; position: absolute; left: 50%; top: -4px; width: 8px; height: 8px; margin-left: -4px; border-radius: 50%;
  background: radial-gradient(circle at 35% 35%, #fff, #a78bfa 55%, #6e4bff); box-shadow: 0 0 12px 2px rgba(167, 139, 250, .7); }
.mo-ring.r2::after { width: 6px; height: 6px; margin-left: -3px; top: -3px; background: #c4b5fd; box-shadow: 0 0 10px rgba(196, 181, 253, .6); }
@keyframes mo-spin { to { transform: rotate(360deg); } }
@keyframes mo-breathe { 0%, 100% { transform: scale(1); } 50% { transform: scale(1.035); } }
@keyframes mo-float-a { 0%, 100% { transform: translate3d(0, 0, 0); } 50% { transform: translate3d(0, -5px, 0); } }
@keyframes mo-float-b { 0%, 100% { transform: translate3d(0, 0, 0); } 50% { transform: translate3d(0, 5px, 0); } }
@keyframes mo-float-c { 0%, 100% { transform: translate3d(0, 0, 0); } 50% { transform: translate3d(0, -5px, 0); } }
/* the mock breathes inside a still box ([data-hero-window] stays put: browser checks screenshot it); translate only, text stays sharp */
.ds-motion .v4-hero [data-hero-window] > .v4-frame { animation: mo-float-c calc(var(--m-slow) * 5.3) var(--m-ease) infinite; animation-delay: calc(var(--m-slow) * -0.9); }
.ds-motion .mo-typing { animation: mo-blink calc(var(--m-slow) * 1.05) steps(1) infinite; }
@keyframes mo-blink { 50% { opacity: 0; } }
.ds-motion .v4 .mr-dot { opacity: 0; }
.mo-lane { position: absolute; left: 0; right: 0; bottom: -2px; height: 6px; overflow: hidden; pointer-events: none; }
.mo-streak { position: absolute; left: 0; bottom: 1px; width: 220px; height: 2px; pointer-events: none; border-radius: 2px; will-change: transform, opacity;
  background: linear-gradient(90deg, transparent, rgba(124, 92, 255, .45) 40%, #a78bfa 78%, #f1edff); box-shadow: 6px 0 14px rgba(167, 139, 250, .8); }
.ds-motion .mo-streak { opacity: 0; }
.ds-motion .mo-mark:not(.is-in) i { transform: translateY(105%); }
.ds-motion .mo-split:not(.is-in) .mo-w > span { transform: translateY(110%); opacity: 0; }   /* parked below its mask AND transparent: a waiting word is not text on the page */
.ds-motion .v4 [data-v4-i] { opacity: 0; transform: translate3d(0, 22px, 0); }   /* supporting copy: opacity + y, never blur */
.ds-motion .v4 [data-v4-i].is-in { opacity: 1; transform: none; }
.ds-motion [data-d-in] { transition-duration: var(--m-slow); transition-timing-function: var(--m-ease); }
.ds-motion .mo-marq-dup { display: flex; }
.ds-motion .mo-marq-track { animation: mo-marq calc(var(--m-slow) * 34) linear infinite; will-change: transform; }
@keyframes mo-marq { to { transform: translate3d(-50%, 0, 0); } }
.ds-motion .mo-marq ul { flex-wrap: nowrap; }
.ds-motion .mo-up .b i { animation: mo-fill var(--mini-t) var(--m-ease) infinite; }
.ds-motion .mo-up .ok { animation: mo-ok var(--mini-t) var(--m-spring) infinite; }
.ds-motion .mo-up li:nth-child(2) .b i, .ds-motion .mo-up li:nth-child(2) .ok { animation-delay: calc(var(--m-slow) * .55); }
.ds-motion .mo-up li:nth-child(3) .b i, .ds-motion .mo-up li:nth-child(3) .ok { animation-delay: calc(var(--m-slow) * 1.1); }
.ds-motion .mo-up li:nth-child(4) .b i, .ds-motion .mo-up li:nth-child(4) .ok { animation-delay: calc(var(--m-slow) * 1.65); }
@keyframes mo-fill { 0%, 4% { transform: scaleX(0); } 22%, 86% { transform: scaleX(1); } 96%, 100% { transform: scaleX(0); } }
@keyframes mo-ok { 0%, 20% { opacity: 0; transform: scale(.6); } 26%, 86% { opacity: 1; transform: none; } 96%, 100% { opacity: 0; transform: scale(.6); } }
.ds-motion .mo-scan.h1 { animation: mo-scan-1 var(--mini-t) infinite; }
.ds-motion .mo-scan.h2 { animation: mo-scan-2 var(--mini-t) infinite; }
.ds-motion .mo-scan.h3 { animation: mo-scan-3 var(--mini-t) infinite; }
.ds-motion .mo-scan.h4 { animation: mo-scan-4 var(--mini-t) infinite; }
/* row by row: one stop per row on the way down, each a short eased move (the keyframe timing function is the token ease) */
@keyframes mo-scan-1 { 0%, 10% { transform: translate3d(0, 0, 0); animation-timing-function: var(--m-ease); } 22%, 88% { transform: translate3d(0, 26px, 0); } 100% { transform: translate3d(0, 0, 0); } }
@keyframes mo-scan-2 { 0%, 10% { transform: translate3d(0, 0, 0); animation-timing-function: var(--m-ease); } 18%, 24% { transform: translate3d(0, 26px, 0); animation-timing-function: var(--m-ease); } 32%, 88% { transform: translate3d(0, 52px, 0); } 100% { transform: translate3d(0, 0, 0); } }
@keyframes mo-scan-3 { 0%, 10% { transform: translate3d(0, 0, 0); animation-timing-function: var(--m-ease); } 16%, 20% { transform: translate3d(0, 26px, 0); animation-timing-function: var(--m-ease); } 26%, 30% { transform: translate3d(0, 52px, 0); animation-timing-function: var(--m-ease); } 36%, 88% { transform: translate3d(0, 78px, 0); } 100% { transform: translate3d(0, 0, 0); } }
@keyframes mo-scan-4 { 0%, 10% { transform: translate3d(0, 0, 0); animation-timing-function: var(--m-ease); } 15%, 18% { transform: translate3d(0, 26px, 0); animation-timing-function: var(--m-ease); } 23%, 26% { transform: translate3d(0, 52px, 0); animation-timing-function: var(--m-ease); } 31%, 34% { transform: translate3d(0, 78px, 0); animation-timing-function: var(--m-ease); } 40%, 88% { transform: translate3d(0, 104px, 0); } 100% { transform: translate3d(0, 0, 0); } }
.ds-motion .mo-chip { animation: mo-chip var(--mini-t) var(--m-spring) infinite; }
@keyframes mo-chip { 0%, 40% { opacity: 0; transform: translate3d(0, 6px, 0); } 46%, 86% { opacity: 1; transform: none; } 94%, 100% { opacity: 0; transform: translate3d(0, 6px, 0); } }
/* the draft writes itself: a cover the colour of the window slides down line by line (steps), revealing the text */
.ds-motion .mo-dr-cover { animation: mo-write var(--mini-t) infinite; }
@keyframes mo-write { 0%, 6% { transform: translate3d(0, 0, 0); animation-timing-function: steps(6, end); } 60%, 88% { transform: translate3d(0, 100%, 0); } 89% { transform: translate3d(0, 0, 0); } 100% { transform: translate3d(0, 0, 0); } }
.mo-off .mo-up .b i, .mo-off .mo-up .ok, .mo-off .mo-scan, .mo-off .mo-chip, .mo-off .mo-dr-cover { animation-play-state: paused; }
@keyframes mo-drift { 0%, 100% { transform: translate3d(0, 0, 0); } 50% { transform: translate3d(-12%, 8%, 0); } }
.ds-motion .mo-off [data-hero-window] > .v4-frame, .mo-off .mo-stats-glow, .mo-off .mo-orb-halo, .mo-off .mo-ring, .mo-off .mo-orb-core, .mo-off .mo-breathe, .mo-off .mo-typing { animation-play-state: paused; }
.btn::before { content: ''; position: absolute; inset: 0; z-index: -1; border-radius: inherit; pointer-events: none; transform: translate3d(0, 101%, 0); transition: transform var(--m-mid) var(--m-ease); }
.btn:not(.btn-primary)::before { background: var(--mo-fill, rgba(124, 92, 255, .22)); }
.v4-light .btn:not(.btn-primary)::before { --mo-fill: rgba(17, 18, 20, .08); }
:root.ds-motion .mo-btn.btn { transition-property: background-color, border-color, color, box-shadow; }
/* ── 9 · cards: lift + tilt toward the cursor (GSAP), an edge light that follows the pointer (a flash at a tap) ── */
.mo-card { position: relative; transform-style: flat; }
.mo-edge { position: absolute; inset: 0; z-index: 3; border-radius: inherit; padding: 1px; pointer-events: none; overflow: hidden; transition: opacity var(--m-slow) var(--m-ease);
  -webkit-mask: linear-gradient(#000 0 0) content-box, linear-gradient(#000 0 0); -webkit-mask-composite: xor; mask: linear-gradient(#000 0 0) content-box exclude, linear-gradient(#000 0 0); }
.ds-motion .mo-edge { opacity: 0; }   /* motion.js creates .mo-edge only after it sets .ds-motion */
.mo-edge > i { position: absolute; left: 0; top: 0; width: 260px; height: 260px; margin: -130px 0 0 -130px; border-radius: 50%;
  background: radial-gradient(closest-side, rgba(196, 181, 253, .95), rgba(124, 92, 255, .55) 45%, transparent 75%); }
/* ── 10 · reduced motion: nothing moves; every final state shows (the global block above already zeroes animations) ── */
@media (prefers-reduced-motion: reduce) {
  .mo-orb, .mo-par, .mo-breathe, .mo-marq-track, .mo-up .b i, .mo-mark i, .mo-w > span { transform: none !important; }
  .mo-marq-dup { display: none !important; } .mo-marq ul { flex-wrap: wrap !important; justify-content: center; }
  .btn::before { display: none; } .mo-edge { display: none; }
}
