.language-core {
  --core-blue: #52d9ff;
  --core-surface: #0a111c;
  position: relative;
  flex: 0 0 auto;
  display: flex;
  align-items: center;
  justify-content: center;
  z-index: 104;
}

.language-core-trigger {
  position: relative;
  width: 44px;
  height: 44px;
  display: grid;
  place-items: center;
  padding: 0;
  color: #07131e;
  background: transparent;
  border: 0;
  cursor: pointer;
  isolation: isolate;
}

.language-core-trigger::before {
  content: '';
  position: absolute;
  inset: 3px;
  z-index: -1;
  border: 1.5px solid #159ed0;
  border-radius: 50%;
  background: radial-gradient(circle at 50% 75%, #e4faff 0, #fff 73%);
  box-shadow: 0 0 0 2px rgb(82 217 255 / 11%), 0 0 10px rgb(6 182 238 / 16%);
  transition: transform 220ms ease, box-shadow 220ms ease, border-color 220ms ease;
}

.language-core-trigger::after {
  content: '';
  position: absolute;
  inset: 3px;
  z-index: -1;
  border-radius: 50%;
  background: conic-gradient(transparent 0deg 235deg, #52d9ff 295deg, #007da8 335deg, transparent 350deg);
  mask-image: radial-gradient(farthest-side, transparent calc(100% - 2px), #000 calc(100% - 1.5px));
  pointer-events: none;
  animation: language-core-ring-turn 12s linear infinite;
  transition: scale 220ms ease;
}

.language-core-trigger:hover::after,
.language-core-trigger:focus-visible::after,
.language-core.is-open .language-core-trigger::after { scale: 1.04; }

.language-core-trigger:hover::before,
.language-core-trigger:focus-visible::before,
.language-core.is-open .language-core-trigger::before {
  transform: scale(1.04);
  border-color: #06b6ee;
  box-shadow: 0 0 0 3px rgb(82 217 255 / 18%), 0 0 18px rgb(6 182 238 / 34%);
}

.language-core-trigger:focus-visible {
  outline: 3px solid #1677ff;
  outline-offset: 3px;
  border-radius: 50%;
}

.language-core-code {
  font-size: .72rem;
  font-weight: 700;
  letter-spacing: .055em;
  line-height: 1;
}

.language-core-tooltip {
  position: absolute;
  top: calc(100% + .5rem);
  left: 50%;
  z-index: 3;
  transform: translate(-50%, -.3rem);
  padding: .3rem .6rem;
  border: 1px solid #28465a;
  border-radius: .45rem;
  background: #0a111c;
  color: #f4f7fa;
  font-size: .68rem;
  font-weight: 500;
  white-space: nowrap;
  opacity: 0;
  visibility: hidden;
  pointer-events: none;
  transition: opacity 160ms ease, transform 160ms ease, visibility 160ms ease;
}

.language-core-trigger:hover .language-core-tooltip,
.language-core-trigger:focus-visible .language-core-tooltip {
  opacity: 1;
  visibility: visible;
  transform: translate(-50%, 0);
}

.language-core.is-open .language-core-tooltip { display: none; }

.language-core-panel {
  position: absolute;
  top: calc(100% + 1.25rem);
  inset-inline-end: -1.5rem;
  width: 430px;
  padding: 1.25rem 1.3rem 1rem;
  color: #f4f7fa;
  background: linear-gradient(145deg, #111c2b, var(--core-surface) 68%);
  border: 1px solid rgb(82 217 255 / 36%);
  border-radius: 1.4rem;
  box-shadow: 0 18px 46px rgb(7 9 13 / 22%), 0 0 0 1px rgb(22 119 255 / 8%) inset;
  backdrop-filter: blur(14px);
  transform-origin: top right;
  animation: language-core-enter 220ms cubic-bezier(.2,.75,.2,1) both;
}

.language-core-panel[hidden] { display: none; }

.language-core-heading {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 1rem;
}

.language-core-title {
  color: #a9eaff;
  font-size: .75rem;
  font-weight: 700;
  letter-spacing: .14em;
  text-transform: uppercase;
}

.language-core-close {
  width: 32px;
  height: 32px;
  flex: 0 0 auto;
  display: grid;
  place-items: center;
  padding: 0;
  border: 1px solid rgb(174 212 230 / 35%);
  border-radius: 50%;
  background: rgb(255 255 255 / 4%);
  color: #d2e5ef;
  line-height: 1;
  cursor: pointer;
}

.language-core-close svg {
  width: 16px;
  height: 16px;
  fill: none;
  stroke: currentColor;
  stroke-width: 1.7;
  stroke-linecap: round;
}

.language-core-close:hover { background: rgb(82 217 255 / 13%); }

.language-core-orbit {
  position: relative;
  height: 348px;
  margin: .3rem 0 0;
  isolation: isolate;
}

.language-core-orbit::before {
  content: '';
  position: absolute;
  width: 130px;
  height: 130px;
  top: 50%;
  left: 50%;
  z-index: -1;
  transform: translate(-50%, -50%);
  background: radial-gradient(circle, rgb(82 217 255 / 17%), transparent 69%);
  pointer-events: none;
}

.language-core-orbit-ring {
  position: absolute;
  top: 50%;
  left: 50%;
  z-index: -1;
  display: block;
  border: 1px solid rgb(82 217 255 / 13%);
  border-radius: 50%;
  transform: translate(-50%, -50%);
  pointer-events: none;
}

.language-core-orbit-ring-outer { width: 314px; height: 302px; }
.language-core-orbit-ring-inner { width: 158px; height: 158px; border-color: rgb(82 217 255 / 9%); }

.language-core-center,
.language-core-option {
  position: absolute;
  top: 50%;
  left: 50%;
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  text-align: center;
  line-height: 1.2;
}

.language-core-option[hidden] { display: none; }

.language-core-center {
  width: 76px;
  height: 76px;
  transform: translate(-50%, -50%);
  border: 1.5px solid #69dfff;
  border-radius: 50%;
  background: radial-gradient(circle at 50% 72%, #102c44, #08111e 75%);
  box-shadow: 0 0 0 5px rgb(82 217 255 / 6%), 0 0 18px rgb(82 217 255 / 28%), inset 0 0 16px rgb(82 217 255 / 15%);
  color: #fff;
  font-size: 1.05rem;
  font-weight: 600;
  letter-spacing: .04em;
}

.language-core-option {
  width: 82px;
  min-height: 48px;
  padding: .35rem .3rem;
  transform: translate(calc(-50% + var(--orbit-x)), calc(-50% + var(--orbit-y)));
  border: 1px solid rgb(122 197 231 / 32%);
  border-radius: .9rem;
  background: rgb(12 28 45 / 88%);
  color: #f4f7fa;
  cursor: pointer;
  transition: border-color 220ms ease, box-shadow 220ms ease, background 220ms ease, scale 220ms ease;
}

.language-core-option:focus-visible {
  z-index: 2;
  scale: 1.04;
  border-color: #6bdfff;
  background: #183850;
  box-shadow: 0 0 0 2px rgb(82 217 255 / 15%), 0 0 17px rgb(82 217 255 / 22%);
}

@media (hover: hover) and (pointer: fine) {
  .language-core-option:hover {
    z-index: 2;
    scale: 1.04;
    border-color: #6bdfff;
    background: #183850;
    box-shadow: 0 0 0 2px rgb(82 217 255 / 15%), 0 0 17px rgb(82 217 255 / 22%);
  }
}

.language-core-option:focus-visible,
.language-core-close:focus-visible { outline: 3px solid #8aeaff; outline-offset: 3px; }
.language-core-option.is-current { border-color: #52d9ff; box-shadow: inset 0 0 16px rgb(82 217 255 / 12%); }
.language-core-option-name { font-size: .76rem; font-weight: 600; white-space: nowrap; }
.language-core-option-code { margin-top: .16rem; color: #a8c0d1; font-size: .65rem; letter-spacing: .1em; }
.language-core-option[dir="rtl"] .language-core-option-name { font-family: Tahoma, Arial, sans-serif; font-size: .86rem; }
.language-core-hint { margin: .1rem 0 0; color: #9bb8c9; font-size: .72rem; text-align: center; }

.language-core.is-transitioning .language-core-center { animation: language-core-pulse 340ms ease-out both; }
.site-footer, main { transition: opacity 180ms ease; }
html.is-locale-transitioning :is(main, .site-footer) { opacity: .62; }
.language-core-option.is-converging {
  z-index: 3;
  pointer-events: none;
  animation: language-core-converge 340ms cubic-bezier(.25,.7,.25,1) both;
}

@keyframes language-core-enter {
  from { opacity: 0; transform: translateY(-6px) scale(.96); }
  to { opacity: 1; transform: translateY(0) scale(1); }
}

@keyframes language-core-ring-turn {
  from { transform: rotate(0deg); }
  to { transform: rotate(360deg); }
}

@keyframes language-core-converge {
  0% { opacity: 1; }
  65% { opacity: .85; transform: translate(-50%, -50%) scale(.66); }
  100% { opacity: 0; transform: translate(-50%, -50%) scale(.35); }
}

@keyframes language-core-pulse {
  50% { box-shadow: 0 0 0 14px rgb(82 217 255 / 9%), 0 0 27px rgb(82 217 255 / 42%), inset 0 0 20px rgb(82 217 255 / 24%); }
}

@media (max-width: 1180px) {
  .menu-toggle { display: flex; position: relative; z-index: 102; }
  .primary-nav {
    position: fixed;
    z-index: 101;
    inset: 0;
    height: 100dvh;
    min-height: 100vh;
    overflow-y: auto;
    padding: 8rem 1.5rem 2rem;
    flex-direction: column;
    flex-wrap: nowrap;
    justify-content: safe center;
    gap: 1.3rem;
    background: var(--frost);
    opacity: 0;
    visibility: hidden;
    transform: translateY(-1rem);
    transition: opacity 180ms ease, transform 180ms ease, visibility 180ms ease;
  }
  .primary-nav.is-open { opacity: 1; visibility: visible; transform: translateY(0); }
  .primary-nav > a:not(.button) { font-size: 1.7rem; font-weight: 600; }
  .nav-cta { margin-top: 1rem; }
  .nav-access,
  .primary-nav > .language-core { margin-top: .35rem; }
  .language-core-panel {
    position: fixed;
    top: auto;
    bottom: max(1.5rem, env(safe-area-inset-bottom));
    inset-inline: auto;
    left: 50%;
    transform: translateX(50%);
    max-width: calc(100vw - 3rem);
    max-height: calc(100dvh - 3rem);
    overflow-y: auto;
    animation: none;
  }
  .language-core-panel { transform: translateX(-50%); }
}

@media (max-width: 580px) {
  .language-core-panel {
    width: min(390px, calc(100vw - 1.5rem));
    bottom: max(.75rem, env(safe-area-inset-bottom));
    padding: 1.1rem;
    border-radius: 1.3rem;
    box-shadow: 0 12px 38px rgb(7 9 13 / 30%);
  }
  .language-core-orbit { height: auto; margin-top: .65rem; }
  .language-core-orbit::before,
  .language-core-orbit-ring,
  .language-core-center { display: none; }
  .language-core-options { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: .35rem; }
  .language-core-option {
    position: static;
    width: 100%;
    min-height: 44px;
    flex-direction: row;
    justify-content: space-between;
    padding: .55rem .65rem;
    transform: none;
    border-radius: .8rem;
    text-align: start;
  }
  .language-core-option-name { font-size: .9rem; }
  .language-core-option-code { margin: 0; font-size: .7rem; }
  .language-core-option.is-converging { animation: none; }
  .language-core-hint { margin-top: .85rem; }
}

@media (prefers-reduced-motion: reduce) {
  .language-core *, .language-core *::before, .language-core *::after {
    animation: none !important;
    transition: none !important;
  }
  :is(main, .site-footer) { transition: none !important; }
  .language-core-orbit { height: auto; margin-top: .65rem; }
  .language-core-orbit::before,
  .language-core-orbit-ring,
  .language-core-center { display: none; }
  .language-core-options { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: .35rem; }
  .language-core-option {
    position: static;
    width: 100%;
    min-height: 44px;
    flex-direction: row;
    justify-content: space-between;
    padding: .55rem .65rem;
    transform: none;
    border-radius: .8rem;
    text-align: start;
  }
  .language-core-option-code { margin: 0; }
  .language-core-option.is-converging { animation: none; }
}
