/* Self-hosted Font Awesome Free SVG icons (CC BY 4.0).
   Replaces the Font Awesome kit so icons keep working without the CDN quota. */
.fa-icon {
  display: inline-block;
  width: 1em;
  height: 1em;
  vertical-align: -0.125em;
  background-color: currentColor;
  -webkit-mask: var(--fa-src) no-repeat center / contain;
  mask: var(--fa-src) no-repeat center / contain;
  flex-shrink: 0;
}

img.fa-icon {
  height: 0;
  width: 1em;
  padding: 1em 0 0 0;
  overflow: hidden;
  border: 0;
  box-sizing: border-box;
}

.fa-3x {
  font-size: 3em;
  line-height: 1;
}

.fa-icon.fa-xs { font-size: 0.75em; }
.fa-icon.fa-sm { font-size: 0.875em; }
.fa-icon.fa-lg { font-size: 1.25em; }
.fa-icon.fa-xl { font-size: 1.5em; }
.fa-icon.fa-2x { font-size: 2em; }

.text-gradient.text-primary .fa-icon {
  background-color: transparent;
  background-image: linear-gradient(310deg, #7928CA, #FF0080);
}

.text-gradient.text-info .fa-icon {
  background-color: transparent;
  background-image: linear-gradient(310deg, #2152FF, #21D4FD);
}

.fa-svg-solid-arrow-right { --fa-src: url("../img/fa-icons/solid/arrow-right.svg"); }
.fa-svg-solid-angle-right { --fa-src: url("../img/fa-icons/solid/angle-right.svg"); }
.fa-svg-solid-link { --fa-src: url("../img/fa-icons/solid/link.svg"); }
.fa-svg-solid-envelope { --fa-src: url("../img/fa-icons/solid/envelope.svg"); }
.fa-svg-solid-check { --fa-src: url("../img/fa-icons/solid/check.svg"); }
.fa-svg-solid-plus { --fa-src: url("../img/fa-icons/solid/plus.svg"); }
.fa-svg-solid-circle-dot { --fa-src: url("../img/fa-icons/solid/circle-dot.svg"); }
.fa-svg-solid-minus { --fa-src: url("../img/fa-icons/solid/minus.svg"); }
.fa-svg-solid-skull-crossbones { --fa-src: url("../img/fa-icons/solid/skull-crossbones.svg"); }
.fa-svg-solid-arrow-trend-up { --fa-src: url("../img/fa-icons/solid/arrow-trend-up.svg"); }
.fa-svg-solid-arrow-up-right-from-square { --fa-src: url("../img/fa-icons/solid/arrow-up-right-from-square.svg"); }
.fa-svg-solid-arrow-down { --fa-src: url("../img/fa-icons/solid/arrow-down.svg"); }
.fa-svg-solid-globe { --fa-src: url("../img/fa-icons/solid/globe.svg"); }
.fa-svg-solid-user { --fa-src: url("../img/fa-icons/solid/user.svg"); }
.fa-svg-solid-book-open-reader { --fa-src: url("../img/fa-icons/solid/book-open-reader.svg"); }
.fa-svg-regular-envelope { --fa-src: url("../img/fa-icons/regular/envelope.svg"); }
.fa-svg-brands-instagram { --fa-src: url("../img/fa-icons/brands/instagram.svg"); }
.fa-svg-brands-tiktok { --fa-src: url("../img/fa-icons/brands/tiktok.svg"); }
.fa-svg-brands-discord { --fa-src: url("../img/fa-icons/brands/discord.svg"); }
.fa-svg-brands-x-twitter { --fa-src: url("../img/fa-icons/brands/x-twitter.svg"); }
.fa-svg-brands-youtube { --fa-src: url("../img/fa-icons/brands/youtube.svg"); }
.fa-svg-brands-bluesky { --fa-src: url("../img/fa-icons/brands/bluesky.svg"); }
.fa-svg-brands-linkedin { --fa-src: url("../img/fa-icons/brands/linkedin.svg"); }
.fa-svg-brands-square-bluesky { --fa-src: url("../img/fa-icons/brands/square-bluesky.svg"); }
.fa-svg-brands-square-instagram { --fa-src: url("../img/fa-icons/brands/square-instagram.svg"); }
.fa-svg-brands-facebook { --fa-src: url("../img/fa-icons/brands/facebook.svg"); }
.fa-svg-brands-spotify { --fa-src: url("../img/fa-icons/brands/spotify.svg"); }

@keyframes fa-spin {
  0% { transform: rotate(0deg); }
  100% { transform: rotate(360deg); }
}
@keyframes fa-fade {
  50% { opacity: 0.4; }
}
@keyframes fa-shake {
  0% { transform: rotate(-8deg); }
  50% { transform: rotate(8deg); }
  100% { transform: rotate(-8deg); }
}
@keyframes fa-beat {
  0%, 100% { transform: scale(1); }
  50% { transform: scale(1.15); }
}
@keyframes fa-bounce {
  0%, 100% { transform: translateY(0); }
  50% { transform: translateY(-25%); }
}
@keyframes fa-flip {
  0% { transform: rotateY(0); }
  100% { transform: rotateY(360deg); }
}

.fa-spin { animation: fa-spin 2s linear infinite; }
.fa-fade { animation: fa-fade 1.2s ease-in-out infinite; }
.fa-shake { animation: fa-shake 0.4s ease-in-out infinite; }
.fa-beat { animation: fa-beat 1s ease-in-out infinite; }
.fa-bounce { animation: fa-bounce 1s ease-in-out infinite; }
.fa-flip { animation: fa-flip 2s ease-in-out infinite; }
