@keyframes starq-hub-out {
  0% {
    translate: calc(var(--x0) * 1cqw) calc(var(--y0) * 1cqw);
    opacity: 0;
  }
  3% {
    translate: calc(var(--x0) * 1cqw) calc(var(--y0) * 1cqw);
    opacity: 1;
  }
  11% {
    translate: calc(var(--x1) * 1cqw) calc(var(--y1) * 1cqw);
  }
  15% {
    translate: calc(var(--x2) * 1cqw) calc(var(--y2) * 1cqw);
  }
  18% {
    translate: calc(var(--x3) * 1cqw) calc(var(--y3) * 1cqw);
  }
  21% {
    translate: calc(var(--x4) * 1cqw) calc(var(--y4) * 1cqw);
  }
  25% {
    translate: calc(var(--x5) * 1cqw) calc(var(--y5) * 1cqw);
  }
  33% {
    translate: calc(var(--x6) * 1cqw) calc(var(--y6) * 1cqw);
    opacity: 1;
  }
  36% {
    translate: calc(var(--x6) * 1cqw) calc(var(--y6) * 1cqw);
    opacity: 0;
  }
  100% {
    translate: calc(var(--x6) * 1cqw) calc(var(--y6) * 1cqw);
    opacity: 0;
  }
}
@keyframes starq-hub-back {
  0% {
    translate: calc(var(--x6) * 1cqw) calc(var(--y6) * 1cqw);
    opacity: 0;
  }
  3% {
    translate: calc(var(--x6) * 1cqw) calc(var(--y6) * 1cqw);
    opacity: 1;
  }
  11% {
    translate: calc(var(--x5) * 1cqw) calc(var(--y5) * 1cqw);
  }
  15% {
    translate: calc(var(--x4) * 1cqw) calc(var(--y4) * 1cqw);
  }
  18% {
    translate: calc(var(--x3) * 1cqw) calc(var(--y3) * 1cqw);
  }
  21% {
    translate: calc(var(--x2) * 1cqw) calc(var(--y2) * 1cqw);
  }
  25% {
    translate: calc(var(--x1) * 1cqw) calc(var(--y1) * 1cqw);
  }
  33% {
    translate: calc(var(--x0) * 1cqw) calc(var(--y0) * 1cqw);
    opacity: 1;
  }
  36% {
    translate: calc(var(--x0) * 1cqw) calc(var(--y0) * 1cqw);
    opacity: 0;
  }
  100% {
    translate: calc(var(--x0) * 1cqw) calc(var(--y0) * 1cqw);
    opacity: 0;
  }
}
@keyframes starq-hub-pulse {
  0% {
    opacity: 0;
    scale: 0.94;
  }
  82% {
    opacity: 0;
    scale: 0.94;
  }
  84% {
    opacity: 0.6;
    scale: 1;
    animation-timing-function: ease-out;
  }
  100% {
    opacity: 0;
    scale: 1.5;
  }
}
@keyframes starq-hub-ping {
  0% {
    opacity: 0;
    scale: 1;
  }
  32% {
    opacity: 0;
    scale: 1;
  }
  34% {
    opacity: 0.55;
    scale: 1;
    animation-timing-function: ease-out;
  }
  48% {
    opacity: 0;
    scale: 1.45;
  }
  100% {
    opacity: 0;
    scale: 1.45;
  }
}
@keyframes starq-hub-drop {
  0% {
    translate: 0 -50%;
    opacity: 0;
  }
  15% {
    opacity: 1;
  }
  55% {
    translate: 0 50%;
    opacity: 1;
  }
  70% {
    translate: 0 50%;
    opacity: 0;
  }
  100% {
    translate: 0 50%;
    opacity: 0;
  }
}

.starq-service-hub__stage {
  --starq-loop: 6.4s;
  --starq-orb: 4.25rem;
  --starq-node: color-mix(in oklab, var(--color-card) 86%, var(--color-background));
  --starq-hair: color-mix(in oklab, var(--color-foreground) 16%, transparent);
  position: relative;
  margin-block: 3rem 0.5rem;
  margin-inline: auto;
  max-width: 34rem;
  container-type: inline-size;
}
.starq-service-hub__driver,
.starq-service-hub__paths,
.starq-service-hub__flights {
  display: none;
}
.starq-service-hub__hub {
  position: relative;
  display: grid;
  place-items: center;
  width: 5rem;
  height: 5rem;
  margin-inline: auto;
}
.starq-service-hub__core {
  position: relative;
  display: grid;
  place-items: center;
  width: 100%;
  height: 100%;
  padding: 0.7rem;
  border-radius: 50%;
  background-color: var(--starq-node);
  box-shadow:
    0 0 0 1px var(--starq-hair),
    0 0 3.5rem -0.5rem color-mix(in oklab, var(--color-primary) 45%, transparent);
}
.starq-service-hub__pulse {
  position: absolute;
  inset: 0;
  border-radius: 50%;
  border: 1.5px solid color-mix(in oklab, var(--color-primary) 70%, transparent);
  opacity: 0;
}
.starq-service-hub__hub[data-hub-shape="rounded-square"] .starq-service-hub__core {
  border-radius: 1.125rem;
  padding: 0.625rem;
}
.starq-service-hub__hub[data-hub-shape="rounded-square"] .starq-service-hub__pulse {
  border-radius: 1.25rem;
}
.starq-service-hub__glyph {
  display: block;
  width: 2rem;
  height: 2rem;
  fill: none;
  stroke-width: 1.5;
  stroke-linecap: round;
  stroke-linejoin: round;
}
.starq-service-hub__base {
  stroke: var(--color-foreground);
  opacity: 0.82;
  transition: opacity 0.5s ease;
}
.starq-service-hub__accent {
  stroke: var(--color-primary);
}
.starq-service-hub__fill {
  fill: var(--starq-node);
}
.starq-service-hub__glyph--hub {
  width: 100%;
  height: 100%;
}
.starq-service-hub__nodes {
  margin: 0;
  padding: 0;
  list-style: none;
}
.starq-service-hub__node {
  position: relative;
  display: flex;
  flex-direction: column;
  align-items: center;
  padding-block-start: 2.25rem;
  text-align: center;
}
.starq-service-hub__seg {
  position: absolute;
  top: 0;
  inset-inline-start: 50%;
  width: 0.125rem;
  height: 2.25rem;
  translate: -50% 0;
  overflow: hidden;
  background-color: var(--starq-hair);
}
.starq-service-hub__seg::after {
  content: "";
  position: absolute;
  inset: 0;
  background-color: var(--color-primary);
  opacity: 0;
  transition: opacity 0.5s ease;
}
.starq-service-hub__node[data-on] .starq-service-hub__seg::after {
  opacity: 0.85;
}
.starq-service-hub__drop {
  position: absolute;
  inset: 0;
  z-index: 1;
  opacity: 0;
  background: linear-gradient(
    to bottom,
    transparent calc(50% - 1.1rem),
    var(--color-foreground) 50%,
    transparent calc(50% + 1.1rem)
  );
}
.starq-service-hub__orb {
  all: unset;
  position: relative;
  box-sizing: border-box;
  display: grid;
  place-items: center;
  flex: none;
  width: 3.5rem;
  height: 3.5rem;
  border-radius: 50%;
  background-color: var(--starq-node);
  box-shadow: 0 0 0 1px var(--starq-hair);
  cursor: pointer;
  transition: scale 0.5s ease;
}
.starq-service-hub__orb:focus-visible {
  outline: 2px solid var(--color-primary);
  outline-offset: 4px;
}
.starq-service-hub__orb::before,
.starq-service-hub__orb::after {
  content: "";
  position: absolute;
  inset: -0.0625rem;
  border-radius: 50%;
  pointer-events: none;
}
.starq-service-hub__orb::before {
  border: 1.5px solid var(--color-primary);
  box-shadow: 0 0 2.25rem -0.25rem color-mix(in oklab, var(--color-primary) 55%, transparent);
  opacity: 0;
  transition: opacity 0.5s ease;
}
.starq-service-hub__orb::after {
  border: 1px solid var(--color-primary);
  opacity: 0;
}
.starq-service-hub__node[data-on] .starq-service-hub__orb {
  scale: 1.06;
}
.starq-service-hub__node[data-on] .starq-service-hub__orb::before {
  opacity: 1;
}
.starq-service-hub__node[data-on] .starq-service-hub__base {
  opacity: 1;
}
.starq-service-hub__text {
  display: block;
  max-width: 20rem;
  margin-block-start: 0.75rem;
}
.starq-service-hub__label {
  display: block;
  font-size: 1.0625rem;
  font-weight: 650;
  line-height: 1.5rem;
  color: var(--color-foreground);
}
.starq-service-hub__caption {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 0.375rem;
  margin-block-start: 0.375rem;
}
.starq-service-hub__tag {
  display: inline-flex;
  align-items: center;
  gap: 0.5rem;
  font-family: var(--font-mono, ui-monospace, monospace);
  font-size: 0.6875rem;
  font-weight: 600;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  color: var(--color-muted-foreground);
}
.starq-service-hub__tag::before {
  content: "";
  flex: none;
  width: 0.3125rem;
  height: 0.3125rem;
  border-radius: 1px;
  background-color: var(--color-primary);
}
.starq-service-hub__line {
  font-size: 0.9375rem;
  line-height: 1.5;
  color: var(--color-muted-foreground);
  text-wrap: pretty;
}
.starq-service-hub__more {
  font-size: 0.875rem;
  font-weight: 600;
  color: var(--color-foreground);
  text-decoration: underline;
  text-decoration-color: var(--color-primary);
  text-decoration-thickness: 1.5px;
  text-underline-offset: 0.3em;
}
.starq-service-hub__more:focus-visible {
  outline: 2px solid var(--color-primary);
  outline-offset: 3px;
  border-radius: 2px;
}

@media (prefers-reduced-motion: no-preference) {
  .starq-service-hub__drop {
    animation: starq-hub-drop 3.4s ease-in-out infinite;
    animation-delay: calc(var(--i) * 0.55s);
  }
  .starq-service-hub__pulse {
    animation: starq-hub-pulse var(--starq-loop) linear infinite;
    animation-delay: calc(var(--i) * var(--starq-loop) / var(--n));
  }
  .starq-service-hub__stage[data-live="false"]
    :is(.starq-service-hub__drop, .starq-service-hub__pulse) {
    animation-play-state: paused;
  }
}
@container block (width >= 72rem) {
  .starq-service-hub__stage {
    direction: ltr;
    max-width: 74rem;
    margin-block: 0.5rem 1rem;
    aspect-ratio: var(--board);
  }
  .starq-service-hub__stage::before {
    content: "";
    position: absolute;
    inset-inline-start: 50%;
    top: var(--hub-y);
    width: 62%;
    aspect-ratio: 1.5;
    translate: -50% -50%;
    pointer-events: none;
    background: radial-gradient(
      closest-side,
      color-mix(in oklab, var(--color-primary) 13%, transparent),
      transparent
    );
  }
  .starq-service-hub__paths {
    display: block;
    position: absolute;
    inset: 0;
    width: 100%;
    height: 100%;
    overflow: visible;
  }
  .starq-service-hub__orbit,
  .starq-service-hub__track,
  .starq-service-hub__lit {
    fill: none;
    vector-effect: non-scaling-stroke;
    stroke-linecap: round;
  }
  .starq-service-hub__orbit {
    stroke: color-mix(in oklab, var(--color-foreground) 11%, transparent);
    stroke-width: 1;
    stroke-dasharray: 2 7;
  }
  .starq-service-hub__track {
    stroke: color-mix(in oklab, var(--color-foreground) 28%, transparent);
    stroke-width: 1.25;
  }
  .starq-service-hub__lit {
    stroke: var(--color-primary);
    stroke-width: 1.75;
    opacity: 0;
    transition: opacity 0.6s ease;
  }
  .starq-service-hub__path[data-on] .starq-service-hub__lit {
    opacity: 0.9;
  }

  .starq-service-hub__flights {
    display: block;
    position: absolute;
    inset: 0;
    pointer-events: none;
  }
  .starq-service-hub__flight {
    position: absolute;
    inset: 0;
  }
  .starq-service-hub__parcel {
    position: absolute;
    inset-inline-start: 0;
    top: 0;
    width: 0.5rem;
    height: 0.5rem;
    margin-block-start: -0.25rem;
    margin-inline-start: -0.25rem;
    opacity: 0;
    translate: calc(var(--x3) * 1cqw) calc(var(--y3) * 1cqw);
    transition: scale 0.5s ease;
  }
  .starq-service-hub__parcel[data-way="out"] {
    border-radius: 2px;
    background-color: var(--color-primary);
    box-shadow: 0 0 0.875rem color-mix(in oklab, var(--color-primary) 75%, transparent);
  }
  .starq-service-hub__parcel[data-way="back"] {
    width: 0.375rem;
    height: 0.375rem;
    margin-block-start: -0.1875rem;
    margin-inline-start: -0.1875rem;
    border-radius: 50%;
    background-color: var(--color-foreground);
    box-shadow: 0 0 0.75rem color-mix(in oklab, var(--color-foreground) 55%, transparent);
  }
  .starq-service-hub__flight[data-on] .starq-service-hub__parcel {
    scale: 1.5;
  }

  .starq-service-hub__hub {
    position: absolute;
    inset-inline-start: 50%;
    top: var(--hub-y);
    width: 5.5rem;
    height: 5.5rem;
    margin: 0;
    translate: -50% -50%;
  }
  .starq-service-hub__core {
    padding: 0.8rem;
  }
  .starq-service-hub__hub[data-hub-shape="rounded-square"] .starq-service-hub__core {
    padding: 0.7rem;
  }

  .starq-service-hub__nodes {
    position: absolute;
    inset: 0;
  }
  .starq-service-hub__node {
    position: absolute;
    inset-inline-start: var(--x);
    top: var(--y);
    display: block;
    width: 0;
    height: 0;
    padding: 0;
    text-align: start;
  }
  .starq-service-hub__seg {
    display: none;
  }
  .starq-service-hub__orb {
    position: absolute;
    inset-inline-start: 0;
    top: 0;
    width: var(--starq-orb);
    height: var(--starq-orb);
    margin-block-start: calc(var(--starq-orb) / -2);
    margin-inline-start: calc(var(--starq-orb) / -2);
  }
  .starq-service-hub__glyph {
    width: 2.5rem;
    height: 2.5rem;
  }
  .starq-service-hub__text {
    position: absolute;
    top: -0.75rem;
    width: min(16rem, calc((100 - var(--cx)) * 1cqw - 3rem));
    max-width: none;
    margin: 0;
  }
  .starq-service-hub__node[data-side="end"] .starq-service-hub__text {
    inset-inline-start: calc(var(--starq-orb) / 2);
    padding-inline-start: 0.875rem;
  }
  .starq-service-hub__node[data-side="start"] .starq-service-hub__text {
    inset-inline-end: calc(var(--starq-orb) / 2);
    inset-inline-start: auto;
    width: min(16rem, calc(var(--cx) * 1cqw - 3rem));
    padding-inline-end: 0.875rem;
    text-align: end;
  }
  .starq-service-hub__label {
    white-space: nowrap;
    opacity: 0.66;
    transition: opacity 0.5s ease;
  }
  .starq-service-hub__node[data-on] .starq-service-hub__label {
    opacity: 1;
  }
  .starq-service-hub__caption {
    position: absolute;
    top: 100%;
    inset-inline-start: 0.875rem;
    inset-inline-end: 0;
    align-items: flex-start;
    margin: 0.5rem 0 0;
    padding: 0.75rem 0.9rem;
    border-radius: var(--surface-radius, 0.875rem);
    background-color: color-mix(in oklab, var(--starq-node) 94%, transparent);
    box-shadow:
      0 0 0 1px var(--starq-hair),
      var(--elevation-3);
    opacity: 0;
    translate: 0 0.375rem;
    pointer-events: none;
    transition:
      opacity 0.5s ease,
      translate 0.5s ease;
  }
  .starq-service-hub__caption::before {
    content: "";
    position: absolute;
    inset-inline-start: 0;
    inset-inline-end: 0;
    top: -0.75rem;
    height: 0.75rem;
  }
  .starq-service-hub__node[data-side="start"] .starq-service-hub__caption {
    inset-inline-start: 0;
    inset-inline-end: 0.875rem;
    align-items: flex-end;
  }
  .starq-service-hub__node[data-on] .starq-service-hub__caption {
    opacity: 1;
    translate: 0 0;
    pointer-events: auto;
  }

  @media (prefers-reduced-motion: no-preference) {
    .starq-service-hub__parcel[data-way="out"] {
      animation: starq-hub-out var(--starq-loop) linear infinite;
      animation-delay: calc(var(--i) * var(--starq-loop) / var(--n));
    }
    .starq-service-hub__parcel[data-way="back"] {
      animation: starq-hub-back var(--starq-loop) linear infinite;
      animation-delay: calc(var(--i) * var(--starq-loop) / var(--n) + var(--starq-loop) / 2);
    }
    .starq-service-hub__node .starq-service-hub__orb::after {
      animation: starq-hub-ping var(--starq-loop) linear infinite;
      animation-delay: calc(var(--i) * var(--starq-loop) / var(--n));
    }
    .starq-service-hub__stage[data-live="false"]
      :is(.starq-service-hub__parcel, .starq-service-hub__pulse) {
      animation-play-state: paused;
    }
    .starq-service-hub__stage[data-live="false"] .starq-service-hub__orb::after {
      animation-play-state: paused;
    }
  }
  @media (prefers-reduced-motion: reduce) {
    .starq-service-hub__parcel[data-way="out"] {
      opacity: 1;
    }
  }
}
