/* ===== حركات ناعمة ===== */
:root{--ease:cubic-bezier(.22,.8,.24,1)}
.rv{opacity:0;transform:translateY(22px);transition:opacity .8s var(--ease),transform .8s var(--ease);transition-delay:var(--d,0s)}
.rv.in{opacity:1;transform:none}

.pr div,.card,.svc article,.lk,.info a{transition:transform .45s var(--ease),border-color .35s,background-color .35s,opacity .8s var(--ease)!important}
.pr div:hover,.svc article:hover,.lk:hover{transform:translateY(-5px)!important}
.card:hover{transform:translateY(-6px)!important}
.info a:hover{transform:translateX(-4px)!important}
.card .media img{transition:transform 1.1s var(--ease)}
.card:hover .media img{transform:scale(1.05)}

.svc .ico,.pr span,.info a svg{transition:transform .5s var(--ease),border-color .35s,color .35s,background-color .35s}
.svc article:hover .ico{transform:translateY(-3px) rotate(-6deg)}
.svc .sv path{stroke-dasharray:80;stroke-dashoffset:0;transition:stroke-dashoffset .9s var(--ease)}
.svc article.rv:not(.in) .sv path{stroke-dashoffset:80}
.svc article:hover .sv path{animation:draw 1s var(--ease)}
@keyframes draw{from{stroke-dashoffset:80}to{stroke-dashoffset:0}}
.pr div:hover span{transform:scale(1.08)}
.info a:hover svg{transform:rotate(-8deg)}

.btn,.fwa,.lang-btn,.theme-btn{transition:transform .35s var(--ease),background-color .3s,border-color .3s,color .3s,box-shadow .35s!important}
.btn:hover,.fwa:hover{transform:translateY(-2px)}
.btn:active,.fwa:active,.lang-btn:active,.theme-btn:active{transform:scale(.96)}
.btn.p{position:relative;overflow:hidden;isolation:isolate}
.btn.p::after{content:"";position:absolute;inset:0;z-index:-1;background:linear-gradient(110deg,transparent 30%,rgba(255,255,255,.28) 50%,transparent 70%);transform:translateX(-120%);transition:transform .8s var(--ease)}
.btn.p:hover::after{transform:translateX(120%)}
.theme-btn svg{transition:transform .6s var(--ease)}
.theme-btn:hover svg{transform:rotate(-25deg)}
.top nav a{transition:background-color .35s var(--ease),color .3s,opacity .3s!important}

@media(prefers-reduced-motion:reduce){
  .rv{opacity:1;transform:none;transition:none}
  *,*::before,*::after{animation:none!important;transition-duration:.01s!important}
  .svc .sv path{stroke-dasharray:none}
}
