/* Native motion-path adaptation of React Bits OrbitImages by Dominik Koch.
   Equal spacing, upright items and a 30-second orbit; each item remains a link. */
.view > .auth-orbit-landing {
  width: min(560px, 48%);
  min-width: min(480px, 100%);
  max-width: none;
  min-height: 0;
  margin: 0 auto 0 0;
  justify-content: flex-start;
  gap: 10px;
}

.view:has(> .auth-orbit-landing) { padding-block: 16px; }
.auth-orbit-landing .auth-brand { gap: 4px; }
.auth-orbit-landing .auth-brand .brand-mark {
  font-size: clamp(2.5rem, 3.6vw, 3.5rem);
}
.auth-orbit-landing .auth-brand .brand-en { font-size: .875rem; }
.auth-orbit-landing .auth-brand .brand-tagline { font-size: 1rem; }
.auth-orbit-landing .auth-actions { gap: 6px; }
.auth-orbit-landing .auth-actions .btn { height: 40px; min-height: 40px; }
.landing-orbit-section { min-width: 0; }

/* Grid is the functional fallback for browsers without CSS motion paths. */
.landing-orbit {
  --orbit-size: 80px;
  position: relative;
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: 14px;
  margin-top: 0;
  padding-block: 24px;
  isolation: isolate;
}
.landing-orbit-core {
  position: relative;
  grid-column: 1 / -1;
  margin: 0;
  color: #f0f7ff;
  font-size: clamp(1.5rem, 2vw, 2rem);
  font-weight: 650;
  line-height: 1.25;
  text-align: center;
  pointer-events: auto;
}
.landing-orbit-core .particle-text-canvas {
  position: absolute;
  inset: -26px;
  width: calc(100% + 52px);
  height: calc(100% + 52px);
  pointer-events: none;
}
.landing-orbit-core[data-particle-ready="true"] .particle-text-label { opacity: 0; }
.landing-orbit-item {
  --gh-angle: -30deg;
  --gh-duration: 800ms;
  --gh-size: 300%;
  --gh-rgba: rgb(255 255 255 / .3);
  position: relative;
  overflow: hidden;
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  gap: 9px;
  min-width: 0;
  aspect-ratio: 1;
  padding: 8px 4px;
  border: 1px solid rgb(130 192 234 / .45);
  border-radius: 18px;
  background: linear-gradient(145deg, #193750, #091b2c 80%);
  box-shadow: inset 0 1px 0 rgb(226 247 255 / .12), 0 10px 22px rgb(0 0 0 / .36);
  color: #e7f4ff;
  text-align: center;
  text-decoration: none;
  font-size: 12px;
  font-weight: 600;
  line-height: 1.35;
}
/* React Bits GlareHover, adapted to the existing orbit links.
   Keep the sweep beneath the content and let clicks reach the link. */
.landing-orbit-item::before {
  content: '';
  position: absolute;
  inset: 0;
  pointer-events: none;
  background: linear-gradient(var(--gh-angle), transparent 60%, var(--gh-rgba) 70%, transparent 100%);
  background-size: var(--gh-size) var(--gh-size);
  background-repeat: no-repeat;
  background-position: -100% -100%;
  transition: background-position var(--gh-duration) ease;
}
.landing-orbit-item > svg,
.landing-orbit-item > span { position: relative; }
@media (hover: hover) {
  .landing-orbit-item:hover::before { background-position: 100% 100%; }
}
.landing-orbit-item:focus-visible::before,
.landing-orbit-item:active::before { background-position: 100% 100%; }
.landing-orbit-item > svg { width: 28px; height: 28px; color: #94d7ff; flex: none; }
.landing-orbit-item:hover {
  border-color: #a0dfff;
  box-shadow: inset 0 1px 0 rgb(226 247 255 / .2), 0 0 22px rgb(78 173 235 / .27);
}
.landing-orbit-item:focus-visible { outline: 2px solid #b7e7ff; outline-offset: 5px; }

@supports (offset-path: path('M 0 0 L 1 1')) {
  .landing-orbit {
    display: block;
    height: clamp(220px, calc(100dvh - 550px), 300px);
    padding: 0;
  }
  .landing-orbit::before,
  .landing-orbit::after {
    content: '';
    position: absolute;
    inset: 16% 12%;
    border: 1px solid rgb(128 193 231 / .28);
    border-radius: 50%;
    pointer-events: none;
    z-index: -1;
  }
  .landing-orbit::after {
    inset: 26% 21%;
    border-style: dashed;
    border-color: rgb(128 193 231 / .16);
  }
  .landing-orbit-core {
    display: grid;
    place-items: center;
    position: absolute;
    left: 50%;
    top: 50%;
    width: 44%;
    transform: translate(-50%, -50%);
  }
  .landing-orbit-item {
    position: absolute;
    top: 0;
    left: 0;
    width: var(--orbit-size);
    height: var(--orbit-size);
    offset-path: var(--orbit-path);
    offset-anchor: center;
    offset-rotate: 0deg;
    offset-distance: var(--orbit-start);
    animation: landing-module-orbit 30s linear infinite;
  }
  .landing-orbit:hover .landing-orbit-item,
  .landing-orbit:focus-within .landing-orbit-item { animation-play-state: paused; }
}

@keyframes landing-module-orbit {
  from { offset-distance: var(--orbit-start); }
  to { offset-distance: calc(var(--orbit-start) + 100%); }
}

.auth-orbit-landing .disclaimer {
  width: 100%;
  margin: 0;
  font-size: .7rem;
  line-height: 1.7;
  color: #a3b8c7;
}

@media (max-width: 1100px) and (min-width: 801px) {
  .view > .auth-orbit-landing { width: min(520px, 65%); }
}
@media (max-width: 800px) {
  .view > .auth-orbit-landing { width: min(520px, 100%); }
}
@media (min-width: 521px) and (max-height: 850px) {
  .landing-orbit { --orbit-size: 64px; }
  .landing-orbit-item { font-size: 11px; gap: 5px; padding: 4px 2px; }
  .landing-orbit-item > svg { width: 24px; height: 24px; }
}
@media (max-width: 520px) {
  .view:has(> .auth-orbit-landing) { padding-block: 12px; }
  .landing-orbit { --orbit-size: 60px; height: clamp(240px, calc(100dvh - 470px), 300px); }
  .landing-orbit-item { font-size: 10px; gap: 5px; padding: 4px; border-radius: 14px; }
  .landing-orbit-item > svg { width: 24px; height: 24px; }
}
@media (max-width: 350px) {
  .landing-orbit { --orbit-size: 54px; }
  .landing-orbit-item { font-size: 10px; }
}
@media (max-width: 520px) and (max-height: 750px) {
  .landing-orbit { --orbit-size: 56px; }
  .landing-orbit-item { padding-inline: 1px; }
}
@media (max-width: 520px) and (max-height: 650px) {
  .view > .auth-orbit-landing { gap: 6px; }
  .auth-orbit-landing .auth-brand .brand-mark { font-size: 2.25rem; }
  .auth-orbit-landing .auth-brand .brand-en { font-size: .7rem; }
  .auth-orbit-landing .auth-brand .brand-tagline { font-size: .875rem; }
  .auth-orbit-landing .auth-actions .btn { height: 36px; min-height: 36px; }
  .auth-orbit-landing .disclaimer { font-size: .625rem; line-height: 1.5; }
  .landing-orbit { --orbit-size: 48px; height: 200px; }
  .landing-orbit-item { font-size: 9px; padding: 3px 0; gap: 4px; }
  .landing-orbit-item > svg { width: 20px; height: 20px; }
}
@media (prefers-reduced-motion: reduce) {
  .landing-orbit .landing-orbit-item { animation: none; }
  .landing-orbit-item::before { transition: none; }
}
