/* sf-motion.css — generated (temperament: smooth-refined) */
:root{--sf-ease:cubic-bezier(.4,0,.2,1);--sf-dur:600ms;--sf-stagger:100ms}
@keyframes sf-reveal{from{opacity:0;transform:translateY(24px)}to{opacity:1;transform:none}}
@keyframes sf-reveal-left{from{opacity:0;transform:translateX(-24px)}to{opacity:1;transform:none}}
@keyframes sf-zoom{from{opacity:0;transform:scale(.94)}to{opacity:1;transform:none}}
@keyframes sf-reveal-mask{from{opacity:0;clip-path:inset(0 100% 0 0)}to{opacity:1;clip-path:inset(0 0 0 0)}}
@keyframes sf-sweep{from{background-position:-150% 0}to{background-position:250% 0}}
@keyframes sf-kenburns{from{transform:scale(1)}to{transform:scale(1.08)}}
@keyframes sf-draw{to{stroke-dashoffset:0}}
@media (prefers-reduced-motion:no-preference){
  html.sf-reveal-armed .sf-animate{opacity:0}
  html.sf-reveal-armed .sf-animate.sf-in{opacity:1;animation:sf-reveal var(--sf-dur) var(--sf-ease) both}
  html.sf-reveal-armed .sf-animate.sf-reveal-mask.sf-in{animation:sf-reveal-mask calc(var(--sf-dur) + 120ms) var(--sf-ease) both}
  html.sf-reveal-armed .sf-animate.sf-zoom.sf-in{animation:sf-zoom var(--sf-dur) var(--sf-ease) both}
  html.sf-reveal-armed .sf-animate-child{opacity:0}
  html.sf-reveal-armed .sf-in .sf-animate-child{opacity:1;animation:sf-reveal var(--sf-dur) var(--sf-ease) both;animation-delay:calc(var(--sf-stagger) * var(--i,0))}
  .sf-lift{transition:transform .28s var(--sf-ease),box-shadow .28s var(--sf-ease)}
  .sf-lift:hover{transform:translateY(-6px)}
  .sf-kenburns img{animation:sf-kenburns 12s ease-in-out infinite alternate}
  .sf-sweep{background-image:linear-gradient(100deg,transparent 30%,rgba(255,255,255,.25) 50%,transparent 70%);background-size:250% 100%;animation:sf-sweep 3.2s var(--sf-ease) infinite}
}
