[data-animate]{opacity:0;transition:opacity .6s ease-out,transform .6s ease-out}[data-animate].visible{opacity:1;transform:translate(0,0) scale(1)}[data-animate=fade-up]{transform:translateY(40px)}[data-animate=fade-down]{transform:translateY(-40px)}[data-animate=fade-left]{transform:translateX(-40px)}[data-animate=fade-right]{transform:translateX(40px)}[data-animate=scale-up]{transform:scale(.9)}[data-animate=fade-in]{transform:none}[data-delay="100"]{transition-delay:0.1s}[data-delay="200"]{transition-delay:0.2s}[data-delay="300"]{transition-delay:0.3s}[data-delay="400"]{transition-delay:0.4s}[data-delay="500"]{transition-delay:0.5s}[data-delay="600"]{transition-delay:0.6s}[data-delay="700"]{transition-delay:0.7s}[data-delay="800"]{transition-delay:0.8s}@keyframes heroFadeSlideUp{from{opacity:0;transform:translateY(30px)}to{opacity:1;transform:translateY(0)}}.hero-content .hero-logo{animation:.8s ease-out .2s both heroFadeSlideUp}.hero-content .hero-title{animation:.8s ease-out .4s both heroFadeSlideUp}.hero-content .hero-subtitle{animation:.8s ease-out .6s both heroFadeSlideUp}.hero-content .btn{animation:.8s ease-out .8s both heroFadeSlideUp}@keyframes parallaxFloat{0%,100%{transform:translateY(0)}50%{transform:translateY(-10px)}}.parallax-element{animation:6s ease-in-out infinite parallaxFloat}@keyframes glowPulse{0%,100%{box-shadow:0 4px 15px rgba(172,26,47,.4)}50%{box-shadow:0 4px 30px rgba(172,26,47,.7)}}.btn-glow{animation:2s ease-in-out infinite glowPulse}@keyframes underlineExpand{from{width:0}to{width:100%}}@keyframes countUp{from{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}.counter-animated{animation:.5s ease-out both countUp}@keyframes shimmer{0%{background-position:-200% 0}100%{background-position:200% 0}}.skeleton{background:linear-gradient(90deg,var(--grigio-scuro) 25%,var(--grigio-medio) 50%,var(--grigio-scuro) 75%);background-size:200% 100%;animation:1.5s infinite shimmer;border-radius:var(--radius-sm)}.skeleton-text{height:1em;margin-bottom:.5em;width:80%}.skeleton-title{height:1.5em;width:60%;margin-bottom:1em}.skeleton-card{height:200px;border-radius:var(--radius-lg)}.legend-card,.trophy-card{transition:opacity var(--transition-base),transform var(--transition-base)}.legend-card.hidden,.trophy-card.hidden{opacity:0;transform:scale(.8);pointer-events:none;position:absolute;visibility:hidden}@keyframes pageFadeIn{from{opacity:0}to{opacity:1}}main{animation:.4s ease-out pageFadeIn}@keyframes floatOrb{0%,100%{transform:translate(0,0) scale(1);opacity:.3}25%{transform:translate(30px,-20px) scale(1.1);opacity:.5}50%{transform:translate(-20px,-40px) scale(.9);opacity:.3}75%{transform:translate(10px,-10px) scale(1.05);opacity:.4}}.decorative-orb{position:absolute;border-radius:var(--radius-full);background:radial-gradient(circle,var(--rosso-primario),transparent);opacity:.2;pointer-events:none;animation:8s ease-in-out infinite floatOrb}.decorative-orb:first-child{width:300px;height:300px;top:10%;left:-5%;animation-delay:0s}.decorative-orb:nth-child(2){width:200px;height:200px;bottom:20%;right:-3%;animation-delay:-3s}.hover-scale{transition:transform var(--transition-base)}.hover-scale:hover{transform:scale(1.05)}.flip-card{perspective:1000px;cursor:pointer}.flip-card-inner{position:relative;width:100%;height:100%;transition:transform .6s;transform-style:preserve-3d}.flip-card:hover .flip-card-inner{transform:rotateY(180deg)}.flip-card-back,.flip-card-front{backface-visibility:hidden;position:absolute;top:0;left:0;width:100%;height:100%}.flip-card-back{transform:rotateY(180deg)}@keyframes slideInUp{from{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}.post-card{animation:.4s ease-out both slideInUp}.post-card:first-child{animation-delay:0s}.post-card:nth-child(2){animation-delay:.1s}.post-card:nth-child(3){animation-delay:.2s}.post-card:nth-child(4){animation-delay:.3s}.post-card:nth-child(5){animation-delay:.4s}@keyframes formAppear{from{opacity:0;transform:translateY(20px) scale(.98)}to{opacity:1;transform:translateY(0) scale(1)}}.login-card{animation:.5s ease-out both formAppear}.error-shake{animation:.4s ease-in-out shake}@keyframes shake{0%,100%{transform:translateX(0)}20%{transform:translateX(-8px)}40%{transform:translateX(8px)}60%{transform:translateX(-5px)}80%{transform:translateX(5px)}}@media (prefers-reduced-motion:reduce){*,::after,::before{animation-duration:0s!important;animation-iteration-count:1!important;transition-duration:0s!important}[data-animate]{opacity:1;transform:none}}