/* Motion toolkit for fact-edition posts: scroll reveals, looping scenes, drawn lines, growing bars, hero video. */
.mo { opacity:0; transform:translateY(18px); transition:opacity .7s ease, transform .7s cubic-bezier(.2,.7,.2,1); transition-delay:var(--d,0s); }
.mo.in { opacity:1; transform:none; }
.mo-stagger > * { opacity:0; transform:translateY(14px); transition:opacity .6s ease, transform .6s cubic-bezier(.2,.7,.2,1); }
.mo-stagger.in > * { opacity:1; transform:none; }
.mo-stagger.in > :nth-child(1) { transition-delay:.05s } .mo-stagger.in > :nth-child(2) { transition-delay:.15s } .mo-stagger.in > :nth-child(3) { transition-delay:.25s } .mo-stagger.in > :nth-child(4) { transition-delay:.35s } .mo-stagger.in > :nth-child(5) { transition-delay:.45s } .mo-stagger.in > :nth-child(6) { transition-delay:.55s } .mo-stagger.in > :nth-child(7) { transition-delay:.65s }
.mo-bar i { --w:0%; display:block; height:100%; width:var(--w); transition:width 1.1s cubic-bezier(.2,.7,.2,1); }
.mo-bar:not(.in) i { width:0 !important; }
.mo-draw path, .mo-draw line, .mo-draw polyline, .mo-draw circle { stroke-dasharray:1200; stroke-dashoffset:1200; }
.mo-draw.in path, .mo-draw.in line, .mo-draw.in polyline, .mo-draw.in circle { animation:mo-draw 1.6s ease forwards; animation-delay:var(--d,0s); }
@keyframes mo-draw { to { stroke-dashoffset:0; } }
.mo-scene { position:relative; overflow:hidden; }
.mo-scene * { animation-play-state:paused !important; }
.mo-scene.play * { animation-play-state:running !important; }
.mo-video { position:relative; }
.mo-video video { display:block; width:100%; height:auto; aspect-ratio:1672/941; border-radius:inherit; background:#111; }
.mo-video .mo-toggle { position:absolute; right:14px; bottom:14px; z-index:2; display:inline-flex; align-items:center; gap:8px; padding:8px 14px; border:0; border-radius:999px; background:rgba(0,0,0,.6); color:#fff; font:inherit; font-size:.78rem; font-weight:800; cursor:pointer; backdrop-filter:blur(6px); }
.mo-video .mo-toggle::before { content:"❚❚"; font-size:.7rem; }
.mo-video.paused .mo-toggle::before { content:"▶"; }
.mo-pulse { animation:mo-pulse 1.8s ease-in-out infinite; }
@keyframes mo-pulse { 0%,100% { transform:scale(1); } 50% { transform:scale(1.06); } }
.mo-float { animation:mo-float 4s ease-in-out infinite; }
@keyframes mo-float { 0%,100% { transform:translateY(0); } 50% { transform:translateY(-8px); } }
.mo-blink { animation:mo-blink 1.2s steps(2,start) infinite; }
@keyframes mo-blink { to { visibility:hidden; } }
@media (prefers-reduced-motion:reduce) {
  .mo, .mo-stagger > * { opacity:1; transform:none; transition:none; }
  .mo-bar:not(.in) i { width:var(--w) !important; } .mo-bar i { transition:none; }
  .mo-draw path, .mo-draw line, .mo-draw polyline, .mo-draw circle { stroke-dashoffset:0; animation:none; }
  .mo-scene * , .mo-scene.play * { animation:none !important; }
  .mo-pulse, .mo-float, .mo-blink { animation:none; }
}
