@keyframes fadeInUp{0%{opacity:0;transform:translateY(30px)}to{opacity:1;transform:translateY(0)}}.animate-fade-in-up{animation:fadeInUp var(--duration-slow) var(--ease-out) forwards}@keyframes puppetString{0%{transform:scaleY(0);transform-origin:top}to{transform:scaleY(1);transform-origin:top}}@keyframes copperShimmer{0%{background-position:-200% center}to{background-position:200% center}}.shimmer{background:linear-gradient(90deg,var(--color-bronze-copper) 0%,var(--color-string-gold) 50%,var(--color-bronze-copper) 100%);background-size:200% auto;animation:copperShimmer 3s linear infinite;-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text}@keyframes pulseGlow{0%,to{box-shadow:0 0 20px rgba(var(--color-accent-rgb),.3)}50%{box-shadow:0 0 40px rgba(var(--color-accent-rgb),.6)}}.animate-pulse-glow{animation:pulseGlow 2s ease-in-out infinite}@keyframes float{0%,to{transform:translateY(0)}50%{transform:translateY(-10px)}}.animate-float{animation:float 4s ease-in-out infinite}[data-animate]{opacity:0;transform:translateY(40px);transition:opacity var(--duration-slow) var(--ease-out),transform var(--duration-slow) var(--ease-out)}[data-animate-stagger]>*{opacity:0;transform:translateY(20px);transition:opacity var(--duration-normal) var(--ease-out),transform var(--duration-normal) var(--ease-out)}.link-animated{position:relative;color:var(--color-bronze-copper);text-decoration:none}.link-animated:after{content:"";position:absolute;bottom:-2px;left:0;width:100%;height:1px;background:var(--color-bronze-copper);transform:scaleX(0);transform-origin:right;transition:transform var(--duration-normal) var(--ease-out)}.link-animated:hover:after{transform:scaleX(1);transform-origin:left}@keyframes skeleton{0%{background-position:200% 0}to{background-position:-200% 0}}.spinner{width:40px;height:40px;border:3px solid var(--color-border);border-top-color:var(--color-bronze-copper);border-radius:50%;animation:spin 1s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation-duration:.001ms!important;animation-iteration-count:1!important;transition-duration:.001ms!important;scroll-behavior:auto!important}.shimmer{animation:none!important;background:none!important;-webkit-text-fill-color:currentColor!important;color:var(--color-bronze-copper)!important}[data-animate]{opacity:1!important;transform:none!important}}
