@keyframes rotate{to{transform:rotate(1turn)}}@keyframes float-out{to{rotate:1turn}}:root{--card-transition:0.25s;--spark-duration:1.8s;--spark-delay:0s;--button-transition:0.25s}.shimmer-card{position:relative;overflow:visible!important;--active:0;transition:all var(--card-transition);transform:translateY(0);box-shadow:0 4px 12px rgba(0,0,0,.2);cursor:pointer}.shimmer-card:hover{--active:1;transform:translateY(-2px);box-shadow:0 8px 24px rgba(0,0,0,.3)}.shimmer-card .spark{position:absolute;inset:0;border-radius:var(--radius,1rem);rotate:0deg;overflow:hidden;-webkit-mask:linear-gradient(white,transparent 50%);mask:linear-gradient(white,transparent 50%);animation:none;z-index:0}.shimmer-card:hover .spark{animation:flip calc(var(--spark-duration) * 2) infinite steps(2)}@keyframes flip{to{rotate:1turn}}.shimmer-card .spark:before{content:"";position:absolute;width:200%;aspect-ratio:1;top:0;left:50%;z-index:0;translate:-50% -15%;rotate:0;transform:rotate(-90deg);opacity:.4;background:conic-gradient(from 0deg,transparent 0 340deg,rgba(255,255,255,.4) 1turn);transition:opacity var(--card-transition);animation:rotate var(--spark-duration) linear infinite both paused}.shimmer-card:hover .spark:before{opacity:calc((var(--active)) + .4);animation-play-state:running}.shimmer-card-signed .spark:before{background:conic-gradient(from 0deg,transparent 0 340deg,rgba(255,255,255,.4) 1turn)}.shimmer-card .backdrop{position:absolute;inset:2px;border-radius:calc(var(--radius, 1rem) - 2px);z-index:1;background:inherit}.shimmer-card .content{position:relative;z-index:2}.particle-container{position:absolute;width:100%;height:100%;top:0;left:0;z-index:5;pointer-events:none;overflow:visible;opacity:0;transition:opacity .3s ease}.shimmer-card:hover .particle-container{opacity:1}.particle{position:absolute;z-index:10;opacity:0;filter:drop-shadow(0 0 3px rgba(255,255,255,.6))}.particle,.shimmer-card-signed .particle{fill:white}.shimmer-card:hover .particle{animation:float-particle 2s ease-in-out infinite}.particle-1{top:10%;left:10%;animation-delay:.2s}.particle-2{top:20%;right:15%;animation-delay:.5s}.particle-3{bottom:15%;right:10%;animation-delay:.8s}@keyframes float-particle{0%{transform:translateY(0) rotate(0deg);opacity:0}25%{opacity:1}50%{transform:translateY(-20px) rotate(10deg);opacity:.8}75%{opacity:.4}to{transform:translateY(-40px) rotate(20deg);opacity:0}}.shimmer-button{--active:0;--bg:radial-gradient(40% 50% at center 100%,hsl(0 0% 100%/calc(var(--active) * 0.3)),transparent),radial-gradient(80% 100% at center 120%,hsl(0 0% 100%/calc(var(--active) * 0.3)),transparent),hsl(0 0% 100%/0.1);position:relative;transition:all var(--button-transition);overflow:hidden;transform:translateY(0);box-shadow:0 0 calc(var(--active) * 1.5em) calc(var(--active) * .5em) hsl(0 0% 100%/.3),0 .05em 0 0 hsl(0 0% 100%/calc((var(--active) * .2) + .1)) inset,0 -.05em 0 0 hsl(0 0% 100%/calc(var(--active) * .1)) inset}.shimmer-button:before{content:"";position:absolute;inset:0;background:var(--bg);opacity:var(--active,0);border-radius:inherit;transition:opacity var(--button-transition)}.shimmer-button:focus-visible,.shimmer-button:hover{--active:1;transform:translateY(-3px)}.shimmer-button:active{transform:translateY(0)}.shimmer-button .btn-content{position:relative;z-index:1}.shimmer-button .button-spark{position:absolute;inset:0;border-radius:9999px;rotate:0deg;overflow:hidden;-webkit-mask:linear-gradient(white,transparent 50%);mask:linear-gradient(white,transparent 50%);animation:none;z-index:0;opacity:0;transition:opacity .3s}.shimmer-button:hover .button-spark{opacity:1;animation:flip calc(var(--spark-duration) * 2) infinite steps(2)}.shimmer-button .button-spark:before{content:"";position:absolute;width:200%;aspect-ratio:1;top:0;left:50%;z-index:0;translate:-50% -15%;rotate:0;transform:rotate(-90deg);opacity:.6;background:conic-gradient(from 0deg,transparent 0 340deg,white 1turn);transition:opacity var(--button-transition);animation:rotate var(--spark-duration) linear infinite both paused}.shimmer-button:hover .button-spark:before{animation-play-state:running}.button-sparkle{animation:sparkle-pulse 2s infinite;filter:drop-shadow(0 0 3px rgba(255,255,255,.8));opacity:.9}@keyframes sparkle-pulse{0%,to{transform:scale(1);opacity:.9}50%{transform:scale(1.2);opacity:1}}