@property --fx-runner-angle { syntax:"<angle>"; inherits:false; initial-value:0deg; }
.fx-download-button{--fx-radius-x:9.65%;--fx-radius-y:50%;--fx-border-width:2px;--fx-breath-duration:1.65s;--fx-runner-duration:1.85s;--fx-shimmer-duration:2.15s;--fx-shimmer-width:20%;--fx-shimmer-skew:-18deg;position:relative;padding:0;border:0;border-radius:var(--fx-radius-x)/var(--fx-radius-y);clip-path:inset(0 round var(--fx-radius-x)/var(--fx-radius-y));overflow:hidden;isolation:isolate;cursor:pointer;outline:none;-webkit-tap-highlight-color:transparent;animation:fxButtonBreath var(--fx-breath-duration) ease-in-out infinite}
.fx-download-button::before{content:"";position:absolute;z-index:4;inset:0;padding:var(--fx-border-width);border-radius:inherit;pointer-events:none;background:conic-gradient(from var(--fx-runner-angle),rgba(255,255,255,0) 0deg,rgba(255,255,255,0) 278deg,rgba(255,220,76,.30) 300deg,rgba(255,255,255,.98) 320deg,rgba(255,235,122,.74) 338deg,rgba(255,255,255,0) 360deg);-webkit-mask:linear-gradient(#000 0 0) content-box,linear-gradient(#000 0 0);-webkit-mask-composite:xor;mask-composite:exclude;animation:fxBorderRunner var(--fx-runner-duration) linear infinite}
.fx-download-button::after{content:"";position:absolute;z-index:1;inset:0;border-radius:inherit;pointer-events:none;box-shadow:inset 0 0 8px rgba(255,255,255,.16),inset 0 0 20px rgba(255,229,76,.16);opacity:.28;animation:fxGlowBreath var(--fx-breath-duration) ease-in-out infinite}
.fx-download-shimmer{position:absolute;z-index:2;inset:0;border-radius:inherit;clip-path:inherit;overflow:hidden;pointer-events:none}
.fx-download-shimmer::before{content:"";position:absolute;top:-35%;bottom:-35%;left:calc(-1 * var(--fx-shimmer-width) - 18%);width:var(--fx-shimmer-width);transform:skewX(var(--fx-shimmer-skew));transform-origin:center;background:linear-gradient(90deg,rgba(255,255,255,0) 0%,rgba(255,255,255,.10) 24%,rgba(255,255,255,.82) 50%,rgba(255,255,255,.12) 76%,rgba(255,255,255,0) 100%);filter:blur(.25px);animation:fxShimmerRun var(--fx-shimmer-duration) ease-in-out infinite}
.fx-download-button.is-fx-pressed,.fx-download-button:active{filter:brightness(1.18) saturate(1.07)}
.fx-download-button:focus-visible{box-shadow:inset 0 0 0 3px rgba(255,255,255,.95)}
.fx-download-ripple{position:absolute;z-index:5;width:16px;height:16px;margin:-8px 0 0 -8px;border-radius:50%;background:rgba(255,255,255,.82);pointer-events:none;transform:scale(0);animation:fxTapRipple .48s ease-out forwards}
@keyframes fxBorderRunner{to{--fx-runner-angle:360deg}}
@keyframes fxShimmerRun{0%,15%{transform:translateX(0) skewX(var(--fx-shimmer-skew));opacity:0}25%{opacity:.92}62%{transform:translateX(760%) skewX(var(--fx-shimmer-skew));opacity:.86}72%,100%{transform:translateX(760%) skewX(var(--fx-shimmer-skew));opacity:0}}
@keyframes fxGlowBreath{0%,100%{opacity:.22}50%{opacity:.82}}
@keyframes fxButtonBreath{0%,100%{filter:brightness(1) saturate(1)}50%{filter:brightness(1.09) saturate(1.045)}}
@keyframes fxTapRipple{0%{transform:scale(0);opacity:.9}100%{transform:scale(16);opacity:0}}
.fx-winner-viewport{position:relative;overflow:hidden;background:transparent!important;contain:paint}
.fx-winner-track{position:relative;width:100%;will-change:transform;transform:translate3d(0,0,0)}
.fx-winner-group{width:100%}
.fx-winner-track.is-fx-scrolling{animation-name:fxWinnerMarquee;animation-duration:var(--fx-scroll-duration,20s);animation-timing-function:linear;animation-delay:var(--fx-scroll-delay,.8s);animation-iteration-count:infinite}
@keyframes fxWinnerMarquee{from{transform:translate3d(0,0,0)}to{transform:translate3d(0,var(--fx-loop-distance,-50%),0)}}
@media(prefers-reduced-motion:reduce){.fx-download-button,.fx-download-button::before,.fx-download-button::after,.fx-download-shimmer::before,.fx-download-ripple,.fx-winner-track.is-fx-scrolling{animation:none!important}}
