.aletheia-galaxy-button {
  --transition: 0.25s;
  --spark: 1.8s;
  /*--hue: 245;*/
  --hue: var(--button-hue, 245);
  --active: 0;
  position: relative;
  display: inline-block;
}

.aletheia-galaxy-button *, .aletheia-galaxy-button *::before, .aletheia-galaxy-button *::after {
  box-sizing: border-box;
}

.aletheia-galaxy-button .galaxy-trigger {
  --cut: 0.1em;
  --active: 0;
  --bg: radial-gradient( 120% 120% at 126% 126%, hsl( var(--hue) calc(var(--active) * 97%) 98% / calc(var(--active) * 0.9) ) 40%, transparent 50% ) calc(100px - (var(--active) * 100px)) 0 / 100% 100% no-repeat, radial-gradient( 120% 120% at 120% 120%, hsl( var(--hue) calc(var(--active) * 97%) 70% / calc(var(--active) * 1) ) 30%, transparent 70% ) calc(100px - (var(--active) * 100px)) 0 / 100% 100% no-repeat, hsl( var(--hue) calc(var(--active) * 100%) calc(12% - (var(--active) * 8%)) );
  background: var(--bg);
  font-size: 1.2rem;
  font-weight: 500;
  border: 0;
  cursor: pointer;
  padding: 0.9em 1.3em;
  display: flex;
  align-items: center;
  gap: 0.25em;
  color: white;
  white-space: nowrap;
  border-radius: 2rem;
  position: relative;
  box-shadow: 0 0 calc(var(--active) * 6em) calc(var(--active) * 3em) hsl(var(--hue) 97% 61% / 0.5), 0 0.05em 0 0 hsl( var(--hue) calc(var(--active) * 97%) calc((var(--active) * 50%) + 30%) ) inset, 0 -0.05em 0 0 hsl( var(--hue) calc(var(--active) * 97%) calc(var(--active) * 10%) ) inset;
  transition: box-shadow var(--transition), scale var(--transition), background var(--transition);
  scale: calc(1 + (var(--active) * 0.1));
  transform-style: preserve-3d;
  perspective: 100vmin;
  overflow: hidden;
}

.aletheia-galaxy-button .galaxy-trigger:active {
  scale: 1;
}

.aletheia-galaxy-button .galaxy-trigger:is(:hover, :focus-visible) {
  --active: 1;
}

.aletheia-galaxy-button .star {
  height: calc(var(--size) * 1px);
  aspect-ratio: 1;
  background: white;
  border-radius: 50%;
  position: absolute;
  opacity: var(--alpha);
  top: 50%;
  left: 50%;
  transform: translate(-50%, -50%) rotate(10deg) rotate(0deg) translateY(calc(var(--distance) * 1px));
  animation: orbit calc(var(--duration) * 1s) calc(var(--delay) * -1s) infinite linear;
}

@keyframes orbit {
  to {
    transform: translate(-50%, -50%) rotate(10deg) rotate(360deg) translateY(calc(var(--distance) * 1px));
  }
}

.aletheia-galaxy-button .galaxy {
  position: absolute;
  width: 100%;
  aspect-ratio: 1;
  top: 50%;
  left: 50%;
  translate: -50% -50%;
  overflow: hidden;
  opacity: var(--active);
  transition: opacity var(--transition);
}

.aletheia-galaxy-button .galaxy__ring {
  height: 200%;
  width: 200%;
  position: absolute;
  top: 50%;
  left: 50%;
  border-radius: 50%;
  transform: translate(-28%, -40%) rotateX(-24deg) rotateY(-30deg) rotateX(90deg);
  transform-style: preserve-3d;
}

.aletheia-galaxy-button .galaxy__container {
  position: absolute;
  inset: 0;
  opacity: var(--active);
  transition: opacity var(--transition);
  -webkit-mask: radial-gradient(white, transparent);
  mask: radial-gradient(white, transparent);
}

.aletheia-galaxy-button .star--static {
  animation: none;
  top: 50%;
  left: 50%;
  transform: translate(0, 0);
  max-height: 4px;
  filter: brightness(4);
  opacity: 0.9;
  animation: move-x calc(var(--duration) * 0.1s) calc(var(--delay) * -0.1s) infinite linear, move-y calc(var(--duration) * 0.2s) calc(var(--delay) * -0.2s) infinite linear;
}

.aletheia-galaxy-button .galaxy-trigger:hover .star--static {
  animation-play-state: paused;
}

@keyframes move-x {
  0% {
    translate: -100px 0;
  }
  100% {
    translate: 100px 0;
  }
}

@keyframes move-y {
  0% {
    transform: translate(0, -50px);
  }
  100% {
    transform: translate(0, 50px);
  }
}

.aletheia-galaxy-button .spark {
  position: absolute;
  inset: 0;
  border-radius: 2rem;
  rotate: 0deg;
  overflow: hidden;
  -webkit-mask: linear-gradient(white, transparent 50%);
  mask: linear-gradient(white, transparent 50%);
  animation: flip calc(var(--spark) * 2) infinite steps(2, end);
}

@keyframes flip {
  to {
    rotate: 360deg;
  }
}

.aletheia-galaxy-button .spark::before {
  content: "";
  position: absolute;
  width: 200%;
  aspect-ratio: 1;
  top: 0;
  left: 50%;
  z-index: -1;
  translate: -50% -15%;
  transform: rotate(-90deg);
  opacity: calc(var(--active) + 0.4);
  background: conic-gradient( from 0deg, transparent 0 340deg, white 360deg );
  transition: opacity var(--transition);
  animation: rotate var(--spark) linear infinite both;
}

.aletheia-galaxy-button .spark::after {
  content: "";
  position: absolute;
  inset: var(--cut);
  border-radius: 2rem;
}

.aletheia-galaxy-button .backdrop {
  position: absolute;
  inset: var(--cut);
  background: var(--bg);
  border-radius: 2rem;
  transition: background var(--transition);
}

@keyframes rotate {
  to {
    transform: rotate(90deg);
  }
}

.aletheia-galaxy-button .text {
  position: relative;
  z-index: 2;
  translate: 2% -6%;
  letter-spacing: 0.01ch;
  color: hsl( 0 0% calc(60% + (var(--active) * 26%)) );
}

.galaxy-trigger {
  text-decoration: none;
  color: inherit;
}

.galaxy-trigger:hover, .galaxy-trigger:visited, .galaxy-trigger:active, .galaxy-trigger:focus {
  text-decoration: none;
  color: inherit;
}

.aletheia-galaxy-button.galaxy-button--small .galaxy-trigger {
  font-size: 1rem;
  padding: 0.65em 1.05em;
  border-radius: 1.5rem;
}

.aletheia-galaxy-button.galaxy-button--small .spark, .aletheia-galaxy-button.galaxy-button--small .backdrop {
  border-radius: 1.5rem;
}

