/* Meri RPC motion layer: reveals, floats, glows, counters. */
@keyframes meri-fade-up{from{opacity:0;transform:translate3d(0,26px,0)}to{opacity:1;transform:none}}
@keyframes meri-fade-in{from{opacity:0}to{opacity:1}}
@keyframes meri-zoom-in{from{opacity:0;transform:scale(.94)}to{opacity:1;transform:none}}
@keyframes meri-slide-left{from{opacity:0;transform:translate3d(-38px,0,0)}to{opacity:1;transform:none}}
@keyframes meri-slide-right{from{opacity:0;transform:translate3d(38px,0,0)}to{opacity:1;transform:none}}
@keyframes meri-float{0%,100%{transform:translateY(0)}50%{transform:translateY(-14px)}}
@keyframes meri-float-slow{0%,100%{transform:translateY(0) rotate(0)}50%{transform:translateY(-22px) rotate(2deg)}}
@keyframes meri-pulse{0%,100%{opacity:.55;transform:scale(1)}50%{opacity:1;transform:scale(1.06)}}
@keyframes meri-spin{to{transform:rotate(360deg)}}
@keyframes meri-orbit{0%{transform:rotate(0) translateX(120px) rotate(0)}100%{transform:rotate(360deg) translateX(120px) rotate(-360deg)}}
@keyframes meri-shimmer{0%{background-position:-220% 0}100%{background-position:220% 0}}
@keyframes meri-gradient{0%{background-position:0% 50%}50%{background-position:100% 50%}100%{background-position:0% 50%}}
@keyframes meri-marquee{from{transform:translateX(0)}to{transform:translateX(-50%)}}
@keyframes meri-blink{0%,49%{opacity:1}50%,100%{opacity:0}}
@keyframes meri-bar{from{width:0}}
@keyframes meri-ring{0%{box-shadow:0 0 0 0 rgba(124,108,242,.45)}70%{box-shadow:0 0 0 18px rgba(124,108,242,0)}100%{box-shadow:0 0 0 0 rgba(124,108,242,0)}}
@keyframes meri-tick{0%,100%{transform:translateY(0)}50%{transform:translateY(-3px)}}
@keyframes meri-aurora{0%{transform:translate3d(-6%,0,0) scale(1)}50%{transform:translate3d(6%,-4%,0) scale(1.12)}100%{transform:translate3d(-6%,0,0) scale(1)}}

/* Scroll reveal */
.js [data-reveal]{opacity:0;will-change:opacity,transform}
.js [data-reveal].in{animation:meri-fade-up .72s cubic-bezier(.22,.68,.36,1) forwards}
[data-reveal="fade"].in{animation-name:meri-fade-in}
[data-reveal="zoom"].in{animation-name:meri-zoom-in}
[data-reveal="left"].in{animation-name:meri-slide-left}
[data-reveal="right"].in{animation-name:meri-slide-right}
[data-reveal-delay="1"].in{animation-delay:.08s}
[data-reveal-delay="2"].in{animation-delay:.16s}
[data-reveal-delay="3"].in{animation-delay:.24s}
[data-reveal-delay="4"].in{animation-delay:.32s}
[data-reveal-delay="5"].in{animation-delay:.4s}
[data-reveal-delay="6"].in{animation-delay:.48s}

/* Ambient motion */
.float{animation:meri-float 6s ease-in-out infinite}
.float-slow{animation:meri-float-slow 11s ease-in-out infinite}
.pulse{animation:meri-pulse 3.4s ease-in-out infinite}
.spin-slow{animation:meri-spin 26s linear infinite}
.ring{animation:meri-ring 2.6s ease-out infinite}
.gradient-text{background:linear-gradient(100deg,#a99cff,#7c6cf2,#55d6a0,#a99cff);background-size:280% 280%;-webkit-background-clip:text;background-clip:text;color:transparent;animation:meri-gradient 9s ease infinite}
.shimmer{position:relative;overflow:hidden}
.shimmer::after{content:"";position:absolute;inset:0;background:linear-gradient(105deg,transparent 35%,rgba(255,255,255,.14) 50%,transparent 65%);background-size:220% 100%;animation:meri-shimmer 3.6s linear infinite;pointer-events:none}
.hover-lift{transition:transform .35s cubic-bezier(.22,.68,.36,1),box-shadow .35s,border-color .35s}
.hover-lift:hover{transform:translateY(-6px);box-shadow:0 26px 60px rgba(0,0,0,.42);border-color:rgba(169,156,255,.42)}
.tilt{transition:transform .18s ease-out}
.aurora{position:absolute;inset:-30% -10% auto -10%;height:520px;filter:blur(80px);opacity:.5;pointer-events:none;z-index:-1;background:radial-gradient(40% 60% at 30% 40%,rgba(124,108,242,.55),transparent 70%),radial-gradient(40% 60% at 70% 30%,rgba(85,214,160,.34),transparent 70%);animation:meri-aurora 18s ease-in-out infinite}

/* Marquee strip */
.marquee{overflow:hidden;position:relative;mask-image:linear-gradient(90deg,transparent,#000 8%,#000 92%,transparent)}
.marquee-track{display:flex;gap:44px;width:max-content;animation:meri-marquee 26s linear infinite}
.marquee:hover .marquee-track{animation-play-state:paused}
.marquee span{color:var(--muted);font-weight:600;letter-spacing:.04em;white-space:nowrap}

/* Typing caret */
.typing::after{content:"▌";margin-left:2px;animation:meri-blink 1s steps(1) infinite;color:var(--accent2)}

/* Animated progress bars */
.meter{height:8px;border-radius:99px;background:rgba(255,255,255,.08);overflow:hidden}
.meter i{display:block;height:100%;border-radius:99px;background:linear-gradient(90deg,#7c6cf2,#a99cff);animation:meri-bar 1.5s cubic-bezier(.22,.68,.36,1)}

@media (scripting:none){[data-reveal]{opacity:1}}
@media (prefers-reduced-motion:reduce){
  *,*::after,*::before{animation-duration:.001ms!important;animation-iteration-count:1!important;transition-duration:.001ms!important}
  [data-reveal]{opacity:1!important}
}
