@keyframes wobble{0%,100%{transform:translateX(0) rotate(0)}15%{transform:translateX(-10px) rotate(-3deg)}30%{transform:translateX(8px) rotate(3deg)}45%{transform:translateX(-6px) rotate(-2deg)}60%{transform:translateX(4px) rotate(1deg)}75%{transform:translateX(-2px) rotate(-1deg)}}
@keyframes heartbeat{0%,100%{transform:scale(1)}14%{transform:scale(1.2)}28%{transform:scale(1)}42%{transform:scale(1.15)}70%{transform:scale(1)}}
@keyframes ripple{0%{transform:scale(0);opacity:1}100%{transform:scale(4);opacity:0}}
@keyframes slideDown{from{transform:translateY(-20px);opacity:0}to{transform:translateY(0);opacity:1}}
@keyframes zoomIn{from{transform:scale(.8);opacity:0}to{transform:scale(1);opacity:1}}
@keyframes rotateIn{from{transform:rotate(-180deg) scale(.3);opacity:0}to{transform:rotate(0deg) scale(1);opacity:1}}
@keyframes typewriter{from{width:0}to{width:100%}}
@keyframes blink{50%{border-color:transparent}}
@keyframes gradientShift{0%,100%{background-position:0% 50%}50%{background-position:100% 50%}}

[data-reveal]{opacity:0;transform:translateY(20px);transition:opacity .6s ease,transform .6s ease}
[data-reveal].revealed{opacity:1;transform:translateY(0)}
[data-reveal][data-delay="0.1s"]{transition-delay:.1s}
[data-reveal][data-delay="0.2s"]{transition-delay:.2s}
[data-reveal][data-delay="0.3s"]{transition-delay:.3s}
[data-reveal][data-delay="0.4s"]{transition-delay:.4s}

.animate-float{animation:float 3s ease-in-out infinite}
.animate-pulse{animation:btnPulse 2s infinite}
.animate-heartbeat{animation:heartbeat 1.5s ease infinite}
.animate-gradient{background-size:200% 200%;animation:gradientShift 5s ease infinite}

.hover-lift{transition:transform .25s ease,box-shadow .25s ease}
.hover-lift:hover{transform:translateY(-4px);box-shadow:0 12px 32px rgba(0,0,0,.5)}
.hover-glow:hover{box-shadow:0 0 20px rgba(80,2,2,.5)}

.page-transition{animation:fadeIn .4s ease}

.xtra-st-block{height:0;overflow:hidden;opacity:0;pointer-events:none}
.redundant-grid-test{display:grid;grid-template-columns:repeat(12,1fr);visibility:hidden;height:0}
.unused-keyframe-target{animation:wobble 1s;will-change:transform;display:none}
