:root{--anim-primary:#0d6efd;--anim-primary-rgb:13,110,253;--anim-shadow:0 14px 30px rgba(13,110,253,.22);--anim-shadow-strong:0 18px 36px rgba(13,110,253,.28);--anim-transition:.3s ease-in-out;}.hover-scale,.hover-float,.hover-underline,.hover-glow,.hover-slide-icon,.img-hover-zoom,.img-grayscale,.btn-shine,.anim-pulse,.anim-shake{transition:all var(--anim-transition);}.hover-scale:hover{transform:scale(1.1);}.hover-float:hover{transform:translateY(-4px)}.hover-underline{position:relative;display:inline-block;text-decoration:none;}.hover-underline::after{content:"";position:absolute;left:50%;bottom:-4px;width:0;height:2px;background:currentColor;transform:translateX(-50%);transition:width var(--anim-transition);}.hover-underline:hover::after{width:100%;}.hover-glow:hover{box-shadow:0 0 0 .2rem rgba(var(--anim-primary-rgb),.2),var(--anim-shadow-strong)!important;}.hover-slide-icon{display:inline-flex;align-items:center;gap:.5rem;}.hover-slide-icon i{display:inline-block;transition:transform var(--anim-transition);}.table-row-hover-gray tbody tr{transition:background-color var(--anim-transition);}.table-row-hover-gray tbody tr:hover>*{background-color:#f2f2f2!important;}.hover-slide-icon:hover i{transform:translateX(4px);}.hover-icon-swap{display:inline-flex;align-items:center;gap:.5rem;}.hover-icon-swap .icon-swap-hover{display:none;}.hover-icon-swap:hover .icon-swap-default{display:none;}.hover-icon-swap:hover .icon-swap-hover{display:inline-block;}.hover-reveal-icon{display:inline-flex;align-items:center;gap:0;width:fit-content;overflow:hidden;transition:padding-right var(--anim-transition),transform var(--anim-transition);}.hover-reveal-icon .icon-reveal{max-width:0;margin-left:0;opacity:0;overflow:hidden;transform:translateX(-6px);transition:opacity var(--anim-transition),transform var(--anim-transition),max-width var(--anim-transition),margin-left var(--anim-transition);}.hover-reveal-icon:hover .icon-reveal{max-width:1rem;margin-left:.5rem;opacity:1;transform:translateX(0);}.hover-reveal-icon:hover{padding-right:28px;}.img-hover-zoom{overflow:hidden;}.img-hover-zoom img{display:block;width:100%;height:auto;transition:transform var(--anim-transition);transform:scale(1);}.img-hover-zoom:hover img{transform:scale(1.1);}.img-grayscale img,img.img-grayscale{filter:grayscale(100%);transition:filter var(--anim-transition),transform var(--anim-transition);}.img-grayscale:hover img,img.img-grayscale:hover{filter:grayscale(0%);}.btn-shine{position:relative;overflow:hidden;}.btn-shine::before{content:"";position:absolute;top:0;left:-75%;width:50%;height:100%;background:linear-gradient(120deg,transparent,rgba(255,255,255,.65),transparent);transform:skewX(-20deg);pointer-events:none;}.btn-shine:hover::before{animation:shine-sweep 1.2s ease-in-out infinite;}.anim-pulse{animation:pulse-soft 1.8s ease-in-out infinite;}.anim-shake{animation:shake-soft .8s ease-in-out infinite;}@keyframes shine-sweep{0%{left:-75%}100%{left:125%}}@keyframes pulse-soft{0%,100%{transform:scale(1)}50%{transform:scale(1.03)}}@keyframes shake-soft{0%,100%{transform:translateX(0)}15%{transform:translateX(-2px)}30%{transform:translateX(2px)}45%{transform:translateX(-2px)}60%{transform:translateX(2px)}75%{transform:translateX(-1px)}90%{transform:translateX(1px)}}@media (prefers-reduced-motion:reduce){.hover-scale,.hover-float,.hover-underline,.hover-glow,.hover-slide-icon,.hover-icon-swap,.hover-reveal-icon,.img-hover-zoom,.img-grayscale,.btn-shine,.anim-pulse,.anim-shake,.hover-underline::after,.hover-slide-icon i,.hover-icon-swap .icon-swap-default,.hover-icon-swap .icon-swap-hover,.hover-reveal-icon .icon-reveal,.img-hover-zoom img,.img-grayscale img,img.img-grayscale,.btn-shine::before{animation:none!important;transition:none!important}}