@keyframes fadeIn{from{opacity:0}to{opacity:1}}@keyframes fadeInUp{from{opacity:0;transform:translateY(30px)}to{opacity:1;transform:translateY(0)}}@keyframes fadeInDown{from{opacity:0;transform:translateY(-30px)}to{opacity:1;transform:translateY(0)}}@keyframes fadeInLeft{from{opacity:0;transform:translateX(-30px)}to{opacity:1;transform:translateX(0)}}@keyframes fadeInRight{from{opacity:0;transform:translateX(30px)}to{opacity:1;transform:translateX(0)}}@keyframes scaleIn{from{opacity:0;transform:scale(.9)}to{opacity:1;transform:scale(1)}}@keyframes slideInUp{from{transform:translateY(100%)}to{transform:translateY(0)}}@keyframes bounceIn{0%{opacity:0;transform:scale(.3)}50%{opacity:1;transform:scale(1.05)}70%{transform:scale(.9)}100%{transform:scale(1)}}@keyframes pulse{0%,100%{transform:scale(1)}50%{transform:scale(1.05)}}@keyframes shake{0%,100%{transform:translateX(0)}10%,30%,50%,70%,90%{transform:translateX(-5px)}20%,40%,60%,80%{transform:translateX(5px)}}@keyframes rotate{from{transform:rotate(0)}to{transform:rotate(360deg)}}@keyframes shimmer{0%{background-position:-1000px 0}100%{background-position:1000px 0}}@keyframes gradientShift{0%{background-position:0 50%}50%{background-position:100% 50%}100%{background-position:0 50%}}@keyframes progress{from{transform:translateX(-100%)}to{transform:translateX(0)}}@keyframes typing{0%,100%,60%{transform:translateY(0)}30%{transform:translateY(-10px)}}.animate-fadeIn{animation:fadeIn .5s ease-out forwards}.animate-fadeInUp{animation:fadeInUp .6s ease-out forwards}.animate-fadeInDown{animation:fadeInDown .6s ease-out forwards}.animate-fadeInLeft{animation:fadeInLeft .6s ease-out forwards}.animate-fadeInRight{animation:fadeInRight .6s ease-out forwards}.animate-scaleIn{animation:scaleIn .4s ease-out forwards}.animate-bounceIn{animation:bounceIn .8s ease-out forwards}.animate-pulse{animation:pulse 2s ease-in-out infinite}.animate-shake{animation:shake .5s ease-in-out}.animate-rotate{animation:rotate 2s linear infinite}.animate-delay-100{animation-delay:.1s}.animate-delay-200{animation-delay:.2s}.animate-delay-300{animation-delay:.3s}.animate-delay-400{animation-delay:.4s}.animate-delay-500{animation-delay:.5s}.loading-dots{display:inline-flex;gap:var(--space-2)}.loading-dots span{display:block;width:8px;height:8px;background:var(--rojo-peru-primary);border-radius:50%;animation:typing 1.4s ease-in-out infinite}.loading-dots span:nth-child(2){animation-delay:.2s}.loading-dots span:nth-child(3){animation-delay:.4s}.loading-bar{width:100%;height:4px;background:var(--gris-200);border-radius:var(--radius-full);overflow:hidden}.loading-bar__progress{height:100%;background:var(--gradient-bandera);animation:progress 1.5s ease-in-out infinite}.hover-lift{transition:transform var(--transition-base),box-shadow var(--transition-base)}.hover-lift:hover{transform:translateY(-4px);box-shadow:var(--shadow-lg)}.hover-scale{transition:transform var(--transition-base)}.hover-scale:hover{transform:scale(1.05)}.hover-glow{transition:box-shadow var(--transition-base)}.hover-glow:hover{box-shadow:0 0 20px rgba(217,16,35,.4)}.hover-underline{position:relative}.hover-underline:after{content:'';position:absolute;bottom:0;left:0;width:0;height:2px;background:var(--rojo-peru-primary);transition:width var(--transition-base)}.hover-underline:hover:after{width:100%}.scroll-reveal{opacity:0;transform:translateY(30px);transition:opacity .6s ease-out,transform .6s ease-out}.scroll-reveal.revealed{opacity:1;transform:translateY(0)}.scroll-fade{opacity:0;transition:opacity .8s ease-out}.scroll-fade.revealed{opacity:1}.btn-ripple{position:relative;overflow:hidden}.btn-ripple:after{content:'';position:absolute;top:50%;left:50%;width:0;height:0;border-radius:50%;background:rgba(255,255,255,.5);transform:translate(-50%,-50%);transition:width .6s,height .6s}.btn-ripple:active:after{width:300px;height:300px}.notification{animation:slideInRight .4s ease-out}@keyframes slideInRight{from{transform:translateX(400px);opacity:0}to{transform:translateX(0);opacity:1}}.notification.closing{animation:slideOutRight .3s ease-in forwards}@keyframes slideOutRight{from{transform:translateX(0);opacity:1}to{transform:translateX(400px);opacity:0}}.modal-backdrop{animation:fadeIn .3s ease-out}.modal-content{animation:scaleIn .3s ease-out}.modal.closing .modal-backdrop{animation:fadeOut .2s ease-in forwards}.modal.closing .modal-content{animation:scaleOut .2s ease-in forwards}@keyframes fadeOut{from{opacity:1}to{opacity:0}}@keyframes scaleOut{from{transform:scale(1);opacity:1}to{transform:scale(.9);opacity:0}}.toast{animation:slideInUp .4s ease-out}.toast.closing{animation:slideOutDown .3s ease-in forwards}@keyframes slideOutDown{from{transform:translateY(0);opacity:1}to{transform:translateY(100px);opacity:0}}.progress-ring{animation:rotate 2s linear infinite}.progress-ring circle{stroke:var(--rojo-peru-primary);stroke-linecap:round;stroke-dasharray:150;stroke-dashoffset:150;animation:progress-ring 1.5s ease-in-out infinite}@keyframes progress-ring{0%{stroke-dashoffset:150}50%{stroke-dashoffset:0}100%{stroke-dashoffset:-150}}.text-shimmer{background:linear-gradient(90deg,var(--gris-900) 0,var(--rojo-peru-primary) 50%,var(--gris-900) 100%);background-size:200% auto;-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text;animation:shimmer 3s linear infinite}.text-gradient-animate{background:linear-gradient(-45deg,var(--rojo-peru-primary),var(--oro-inca),var(--cielo-nazca),var(--verde-selva));background-size:400% 400%;-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text;animation:gradientShift 10s ease infinite}.like-btn{transition:transform var(--transition-fast)}.like-btn:active{transform:scale(1.2)}.like-btn.liked{animation:heartbeat .5s ease-in-out}@keyframes heartbeat{0%,100%{transform:scale(1)}25%{transform:scale(1.3)}50%{transform:scale(1.1)}75%{transform:scale(1.25)}}.bookmark-btn.bookmarked{animation:bookmark-slide .4s ease-out}@keyframes bookmark-slide{0%{transform:translateY(-10px)}50%{transform:translateY(5px)}100%{transform:translateY(0)}}.counter-increment{animation:counter-pop .3s ease-out}@keyframes counter-pop{0%{transform:scale(1)}50%{transform:scale(1.5);color:var(--rojo-peru-primary)}100%{transform:scale(1)}}.page-enter{animation:fadeInUp .5s ease-out}.page-exit{animation:fadeOut .3s ease-in forwards}@media (prefers-reduced-motion:reduce){*,::after,::before{animation-duration:0s!important;animation-iteration-count:1!important;transition-duration:0s!important}.scroll-fade,.scroll-reveal{opacity:1;transform:none}}.gpu-accelerated{transform:translateZ(0);backface-visibility:hidden;perspective:1000px}@keyframes skeleton-pulse{0%,100%{opacity:1}50%{opacity:.4}}.skeleton-pulse{animation:skeleton-pulse 1.5s ease-in-out infinite}.stagger-children>*{animation:fadeInUp .6s ease-out backwards}.stagger-children>:first-child{animation-delay:.1s}.stagger-children>:nth-child(2){animation-delay:.2s}.stagger-children>:nth-child(3){animation-delay:.3s}.stagger-children>:nth-child(4){animation-delay:.4s}.stagger-children>:nth-child(5){animation-delay:.5s}@media print{*,::after,::before{animation:none!important;transition:none!important}}body[data-theme=dark] .loading-spinner{color:#b0b0b0}body[data-theme=dark] .loading-spinner i{color:#ff4d4d}body[data-theme=dark] .loading-spinner p{color:#b0b0b0}body[data-theme=dark] .loading-dots span{background:#ff4d4d}[data-theme=dark] .loading-bar{background:var(--color-bg-tertiary,#1a1a1a)}[data-theme=dark] .text-shimmer{background:linear-gradient(90deg,var(--gris-50) 0,var(--rojo-peru-light) 50%,var(--gris-50) 100%);background-size:200% auto;-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text}[data-theme=dark] .hover-glow:hover{box-shadow:0 0 20px rgba(255,77,77,.4)}