/* ==========================================================================
   u.stin vpn — WORLD: hero + реалистичный 3D-глобус + список локаций
   Префиксы: .world-* (секция), .globe-* (глобус и его слой), .loc-* (список).
   Режимы: по умолчанию — статичная вёрстка (без JS / reduced-motion / без WebGL);
   .world.is-tour — закреплённая сцена: hero → список локаций (включает world.js).
   ========================================================================== */
.world {
  --world-gx: 70%;
  --world-gy: 56%;
  --world-gr: 47vh;
  position: relative;
  isolation: isolate;
  background: var(--bg);
}
.world-anchor { position: absolute; left: 0; top: 100vh; top: 100svh; width: 1px; height: 1px; pointer-events: none; visibility: hidden; }

.world-stage {
  position: relative;
  isolation: isolate;
  overflow: hidden;
  /* слои: небо 0 · canvas 1 · затухание 2 · тексты 3 · подписи 4 · выноска 5 · карточка 6 · подсказка 7 */
  background:
    radial-gradient(120% 70% at 0% 0%, rgba(var(--navy-rgb), .55), transparent 60%),
    var(--bg);
}

/* ---------- Небо: мягкое свечение за планетой ---------- */
.world-sky { position: absolute; inset: 0; z-index: 0; pointer-events: none; overflow: hidden; }
.world-stage::after { /* низ сцены мягко уходит в следующую секцию */
  content: ""; position: absolute; left: 0; right: 0; bottom: 0; z-index: 2; height: min(22vh, 200px); pointer-events: none;
  background: linear-gradient(180deg, rgba(var(--bg-rgb), 0), rgba(var(--bg-rgb), .85) 70%, var(--bg));
}
.world-sky__glow {
  position: absolute; left: var(--globe-x, var(--world-gx)); top: var(--globe-y, var(--world-gy));
  width: calc(var(--globe-r, var(--world-gr)) * 4.4); aspect-ratio: 1; translate: -50% -50%;
  border-radius: 50%;
  background: radial-gradient(closest-side, rgba(var(--azure-rgb), .15), rgba(var(--cobalt-rgb), .07) 42%, rgba(var(--navy-rgb), .05) 62%, transparent 76%);
}
.world-sky__orbit {
  position: absolute; left: var(--globe-x, var(--world-gx)); top: var(--globe-y, var(--world-gy));
  width: calc(var(--globe-r, var(--world-gr)) * 2.9); aspect-ratio: 1; translate: -50% -50%;
  border-radius: 50%;
  background: radial-gradient(closest-side, transparent 97.2%, rgba(var(--sky-rgb), .09) 98.6%, transparent 100%);
  -webkit-mask: linear-gradient(115deg, #000 10%, transparent 45%, transparent 60%, #000 95%);
  mask: linear-gradient(115deg, #000 10%, transparent 45%, transparent 60%, #000 95%);
  opacity: .9;
}

/* Когда работает WebGL-глобус, он сам двигает и масштабирует фон через transform (см. placeSky в globe3d.js) */
.world-stage.is-gl .world-sky__glow, .world-stage.is-gl .world-sky__orbit {
  left: 0; top: 0; width: 1000px; translate: none; transform-origin: 0 0; will-change: transform;
}

/* ---------- Глобус ---------- */
.globe { position: absolute; left: 0; top: 0; width: 100%; height: 100vh; height: 100svh; }
.globe-canvas {
  position: absolute; inset: 0; z-index: 1; width: 100%; height: 100%;
  touch-action: pan-y; -webkit-user-select: none; user-select: none; -webkit-tap-highlight-color: transparent;
  outline: none;
}
.js .globe-canvas { opacity: 0; transition: opacity 1.2s var(--ease-out); }
.js .globe.is-revealed .globe-canvas { opacity: 1; }
.globe-canvas.is-dragging { cursor: grabbing; }

/* Постер: без JS / без WebGL */
.globe-poster {
  position: absolute; z-index: 1; left: var(--globe-x, var(--world-gx)); top: var(--globe-y, var(--world-gy));
  width: calc(var(--globe-r, var(--world-gr)) * 2.86); aspect-ratio: 1; translate: -50% -50%;
  background: url(../img/globe-poster.webp) center / contain no-repeat;
  pointer-events: none;
}
.js .globe-poster { opacity: 0; transition: opacity .8s; }
.js .globe.is-fallback .globe-poster { opacity: 1; }
.globe.is-fallback .globe-canvas { display: none; }

/* Подписи серверов */
.globe-pins { position: absolute; inset: 0; z-index: 4; pointer-events: none; }
.globe-pin {
  position: absolute; left: 0; top: 0; width: 0; height: 0; padding: 0;
  opacity: 0; pointer-events: auto; will-change: transform, opacity;
  -webkit-tap-highlight-color: transparent;
}
.globe-pin.is-hidden { pointer-events: none; }
.globe-pin__hit { position: absolute; left: -15px; top: -15px; width: 30px; height: 30px; border-radius: 50%; }
.globe-pin:focus-visible { outline: none; }
.globe-pin:focus-visible .globe-pin__hit { box-shadow: 0 0 0 2px rgba(var(--sky-rgb), .9); }
.globe-pin__label {
  position: absolute; left: 13px; top: -24px;
  display: inline-flex; align-items: center; gap: 7px; height: 21px; padding: 0 8px;
  border-radius: 6px; white-space: nowrap; pointer-events: none;
  font: 500 10.5px/1 var(--f-mono); letter-spacing: .1em; color: var(--text);
  background: rgba(4, 10, 24, .86);
  box-shadow: inset 0 0 0 1px rgba(var(--sky-rgb), .2), 0 6px 20px -8px rgba(0, 0, 0, .9);
  opacity: 0; translate: -4px 3px;
  transition: opacity .35s, translate .6s var(--ease-out), box-shadow .3s, background-color .3s;
}
.globe-pin__label::before {
  content: ""; position: absolute; left: -10px; bottom: -6px; width: 12px; height: 1px;
  background: linear-gradient(90deg, rgba(var(--sky-rgb), .1), rgba(var(--sky-rgb), .6));
  rotate: -42deg; transform-origin: right center;
}
.globe-pin.has-label .globe-pin__label { opacity: 1; translate: 0 0; }
.globe-pin.is-flip .globe-pin__label { left: auto; right: 13px; translate: 4px 3px; }
.globe-pin.is-flip.has-label .globe-pin__label { translate: 0 0; }
.globe-pin.is-flip .globe-pin__label::before { left: auto; right: -10px; rotate: 42deg; transform-origin: left center; background: linear-gradient(90deg, rgba(var(--sky-rgb), .6), rgba(var(--sky-rgb), .1)); }
.globe-pin__label b { font-weight: 500; }
.globe-pin__label i { display: none; font-style: normal; color: var(--sky); }
.globe-pin.is-rich .globe-pin__label i { display: inline; }
.globe-pin.is-rich .globe-pin__label, .globe-pin:hover .globe-pin__label {
  background: rgba(10, 24, 54, .92); box-shadow: inset 0 0 0 1px rgba(var(--sky-rgb), .45), 0 0 24px -8px rgba(var(--sky-rgb), .7);
}
.globe-pin--home { pointer-events: none; }
.globe-pin--home .globe-pin__label {
  top: -26px; height: 23px; color: var(--bg); font-weight: 600;
  background: linear-gradient(180deg, #ffffff, #cfe6ff);
  box-shadow: 0 0 0 1px rgba(var(--sky-rgb), .5), 0 8px 26px -8px rgba(var(--sky-rgb), .8);
}
.globe-pin--home .globe-pin__label::before { background: linear-gradient(90deg, rgba(var(--ice-rgb), .1), rgba(var(--ice-rgb), .8)); }
.globe-pin--home.is-flip .globe-pin__label::before { background: linear-gradient(90deg, rgba(var(--ice-rgb), .8), rgba(var(--ice-rgb), .1)); }
.globe-pin--home .globe-pin__label b { font-weight: 600; }
.globe-pin--home .globe-pin__label i { display: inline; color: rgba(5, 19, 49, .6); }

/* Подпись страны у курсора */
.globe-tip {
  position: absolute; left: 0; top: 0; z-index: 7; pointer-events: none;
  display: grid; gap: 4px; padding: 9px 13px 10px; border-radius: 12px;
  background: rgba(6, 12, 28, .94);
  box-shadow: inset 0 0 0 1px var(--line-2), inset 0 1px 0 rgba(255, 255, 255, .05), 0 14px 34px -12px rgba(0, 0, 0, .9);
  opacity: 0; scale: .96; transform-origin: 0 0;
  transition: opacity .22s, scale .35s var(--ease-out);
}
.globe-tip.is-on { opacity: 1; scale: 1; }
.globe-tip b { font: 500 14px/1.15 var(--f-body); color: var(--text); white-space: nowrap; }
.globe-tip span { font: 500 10px/1.2 var(--f-mono); letter-spacing: .12em; text-transform: uppercase; color: var(--sky); white-space: nowrap; }
.globe-tip span:empty { display: none; }
.globe-tip.is-server { box-shadow: inset 0 0 0 1px rgba(var(--sky-rgb), .38), 0 0 30px -10px rgba(var(--sky-rgb), .6), 0 14px 34px -12px rgba(0, 0, 0, .9); }

/* Подсказка: вращение и выбор страны (финал тура / статичная вёрстка) */
.globe-hint {
  position: absolute; z-index: 4; left: var(--globe-x, var(--world-gx)); bottom: clamp(20px, 4vh, 40px); translate: -50% 0;
  display: inline-flex; align-items: center; gap: 10px; margin: 0; white-space: nowrap; pointer-events: none;
  font: 500 10px/1 var(--f-mono); letter-spacing: .2em; text-transform: uppercase; color: var(--text-3);
  opacity: 0; transition: opacity .8s var(--ease-out), translate .8s var(--ease-out);
}
.globe-hint i { position: relative; width: 28px; height: 1px; background: linear-gradient(90deg, transparent, rgba(var(--sky-rgb), .7), transparent); overflow: hidden; }
.globe-hint i::after { content: ""; position: absolute; top: -2px; left: 0; width: 5px; height: 5px; border-radius: 50%; background: var(--sky); box-shadow: 0 0 8px var(--sky); animation: globeHint 2.6s var(--ease-in-out) infinite; }
@keyframes globeHint { 0%, 100% { translate: 0 0; } 50% { translate: 23px 0; } }
.globe.is-revealed .globe-hint { opacity: 0; }
.world:not(.is-tour) .globe.is-revealed .globe-hint, .world.is-explore .globe-hint { opacity: .9; }
.globe.is-fallback .globe-hint { display: none; }
@media (hover: none) { .globe-hint { font-size: 9px; } }

/* Выноска маркер → карточка */
.globe-leader { position: absolute; inset: 0; z-index: 5; width: 100%; height: 100%; overflow: visible; pointer-events: none; transition: opacity .3s; }
.globe-leader path { fill: none; stroke-linecap: round; stroke-linejoin: round; stroke-dasharray: 1 1; stroke-dashoffset: 1; }
.globe-leader__line { stroke: rgba(var(--ice-rgb), .9); stroke-width: 1.1; }
.globe-leader__glow { stroke: rgba(var(--sky-rgb), .22); stroke-width: 6; }
.globe-leader.is-on path { stroke-dashoffset: 0; transition: stroke-dashoffset .55s var(--ease-out); }
.globe-leader circle { opacity: 0; transition: opacity .3s; }
.globe-leader.is-on circle { opacity: 1; }
.globe-leader__end { fill: #fff; }
.globe-leader__ring { fill: none; stroke: rgba(var(--ice-rgb), .7); stroke-width: 1; transform-box: fill-box; transform-origin: center; animation: globeRing 2.4s var(--ease-out) infinite; }
.globe-leader.is-away { opacity: 0; }
@keyframes globeRing { 0% { scale: .4; opacity: 1; } 100% { scale: 1.6; opacity: 0; } }

/* ---------- Карточка конфигурации сервера ---------- */
.globe-card {
  --gc-r: 22px;
  position: absolute; left: 0; top: 0; z-index: 6;
  width: 304px; color: var(--text);
  will-change: transform;
}
.globe-card[hidden] { display: none !important; }
.globe-card.is-away { pointer-events: none; }
.globe-card__frame {
  position: absolute; inset: 0; border-radius: var(--gc-r);
  background:
    radial-gradient(120% 80% at 0% 0%, rgba(var(--sky-rgb), .12), transparent 55%),
    linear-gradient(180deg, rgb(16, 30, 66), rgb(5, 11, 28));
  box-shadow:
    inset 0 1px 0 rgba(255, 255, 255, .09),
    inset 0 0 0 1px rgba(var(--sky-rgb), .2),
    0 40px 90px -30px rgba(0, 0, 0, .95),
    0 0 70px -24px rgba(var(--azure-rgb), .55);
  opacity: 0; clip-path: inset(0 100% 0 0 round var(--gc-r));
  transition: opacity .3s, clip-path .8s var(--ease-out);
}
.globe-card__frame::before { /* светящаяся бегущая грань */
  content: ""; position: absolute; inset: 0; border-radius: inherit; padding: 1px;
  background: conic-gradient(from var(--gc-angle, 0deg), transparent 0 58%, rgba(var(--sky-rgb), .9) 70%, rgba(var(--ice-rgb), 1) 74%, transparent 86%);
  -webkit-mask: linear-gradient(#000 0 0) content-box, linear-gradient(#000 0 0);
  -webkit-mask-composite: xor; mask-composite: exclude;
  animation: gcSpin 5s linear infinite; opacity: .75;
}
@property --gc-angle { syntax: "<angle>"; initial-value: 0deg; inherits: false; }
@keyframes gcSpin { to { --gc-angle: 360deg; } }
.globe-card[data-side="left"] .globe-card__frame { clip-path: inset(0 0 0 100% round var(--gc-r)); }
.globe-card[data-side="up"] .globe-card__frame { clip-path: inset(100% 0 0 0 round var(--gc-r)); }
.globe-card[data-side="down"] .globe-card__frame { clip-path: inset(0 0 100% 0 round var(--gc-r)); }
.globe-card.is-open .globe-card__frame { opacity: 1; clip-path: inset(0 0 0 0 round var(--gc-r)); transition-delay: .12s; }
.globe-card.is-closing .globe-card__frame { transition-duration: .2s, .3s; transition-delay: 0s; }
.globe-card.is-away .globe-card__frame, .globe-card.is-away .gc-row { opacity: 0 !important; transition-delay: 0s !important; }

.globe-card__body { position: relative; display: grid; gap: 14px; padding: 16px 16px 16px; }
.gc-row {
  opacity: 0; translate: 0 10px;
  transition: opacity .5s var(--ease-out), translate .7s var(--ease-out);
}
.globe-card.is-open .gc-row { opacity: 1; translate: 0 0; }
.globe-card.is-open .gc-row:nth-child(1) { transition-delay: .22s; }
.globe-card.is-open .gc-row:nth-child(2) { transition-delay: .28s; }
.globe-card.is-open .gc-row:nth-child(3) { transition-delay: .34s; }
.globe-card.is-open .globe-card__spec .gc-row:nth-child(1) { transition-delay: .4s; }
.globe-card.is-open .globe-card__spec .gc-row:nth-child(2) { transition-delay: .45s; }
.globe-card.is-open .globe-card__spec .gc-row:nth-child(3) { transition-delay: .5s; }
.globe-card.is-open .globe-card__cta.gc-row { transition-delay: .56s; }
.globe-card.is-closing .gc-row { transition-duration: .2s; transition-delay: 0s; }

.globe-card__head { display: grid; grid-template-columns: auto 1fr auto; align-items: center; gap: 12px; }
.globe-card__flag {
  display: block; width: 38px; height: 27px; border-radius: 7px; overflow: hidden;
  box-shadow: 0 0 0 1px rgba(255, 255, 255, .14), 0 8px 20px -8px rgba(0, 0, 0, .9);
}
.globe-card__flag img { width: 100%; height: 100%; object-fit: cover; }
.globe-card__place { min-width: 0; display: grid; gap: 4px; }
.globe-card__place b { font: 450 17px/1.1 var(--f-display); letter-spacing: -.025em; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.globe-card__place > span { display: flex; align-items: center; gap: 8px; font-size: 13px; line-height: 1.2; color: var(--text-2); }
.globe-card__place i { font: 500 10.5px/1 var(--f-mono); font-style: normal; letter-spacing: .14em; color: var(--sky); padding: 3px 6px; border-radius: 5px; box-shadow: inset 0 0 0 1px rgba(var(--sky-rgb), .25); }
.globe-card__close {
  width: 32px; height: 32px; border-radius: 50%; display: grid; place-items: center; color: var(--text-3);
  box-shadow: inset 0 0 0 1px var(--line-2); transition: color .3s, box-shadow .3s, rotate .5s var(--ease-out);
}
.globe-card__close:hover { color: var(--text); box-shadow: inset 0 0 0 1px var(--line-3); rotate: 90deg; }
.globe-card__close svg { width: 15px; height: 15px; fill: none; stroke: currentColor; stroke-width: 1.8; stroke-linecap: round; }

.globe-card__status {
  display: flex; align-items: center; justify-content: space-between; gap: 10px;
  padding: 9px 12px; border-radius: 12px;
  background: rgba(var(--ok-rgb), .05); box-shadow: inset 0 0 0 1px rgba(var(--ok-rgb), .14);
  font: 500 10px/1 var(--f-mono); letter-spacing: .14em; text-transform: uppercase;
}
.globe-card__live { display: inline-flex; align-items: center; gap: 8px; color: var(--ok); }
.globe-card__live i { width: 7px; height: 7px; border-radius: 50%; background: var(--ok); animation: gcLive 1.8s ease-out infinite; }
@keyframes gcLive { 0% { box-shadow: 0 0 0 0 rgba(var(--ok-rgb), .65); } 100% { box-shadow: 0 0 0 9px rgba(var(--ok-rgb), 0); } }
.globe-card__proto { color: var(--text-3); letter-spacing: .08em; }

.globe-card__ping {
  display: grid; grid-template-columns: 1fr auto; align-items: end; gap: 6px 12px;
  grid-template-areas: "k k" "v q";
}
.globe-card__k { grid-area: k; font: 500 10px/1 var(--f-mono); letter-spacing: .14em; text-transform: uppercase; color: var(--text-3); }
.globe-card__pv { grid-area: v; display: flex; align-items: baseline; gap: 6px; }
.globe-card__pv b {
  font: 350 40px/1 var(--f-display); letter-spacing: -.04em; font-variant-numeric: tabular-nums;
  background: var(--grad-text); -webkit-background-clip: text; background-clip: text; color: transparent;
}
.globe-card__pv small { font: 500 12px/1 var(--f-mono); color: var(--text-2); letter-spacing: .06em; }
.globe-card__q { grid-area: q; display: grid; justify-items: end; gap: 7px; padding-bottom: 4px; }
.globe-card__q em { font: 500 10px/1 var(--f-mono); font-style: normal; letter-spacing: .14em; text-transform: uppercase; color: var(--sky); }
.globe-card__bars { display: flex; align-items: flex-end; gap: 3px; height: 16px; }
.globe-card__bars i { width: 4px; border-radius: 2px; background: rgba(var(--sky-rgb), .16); scale: 1 0; transform-origin: bottom; transition: scale .5s var(--ease-out), background-color .4s; }
.globe-card__bars i:nth-child(1) { height: 5px; } .globe-card__bars i:nth-child(2) { height: 8px; }
.globe-card__bars i:nth-child(3) { height: 11px; } .globe-card__bars i:nth-child(4) { height: 14px; }
.globe-card__bars i:nth-child(5) { height: 16px; }
.globe-card.is-open .globe-card__bars i { scale: 1 1; }
.globe-card.is-open .globe-card__bars i:nth-child(1) { transition-delay: .45s; }
.globe-card.is-open .globe-card__bars i:nth-child(2) { transition-delay: .52s; }
.globe-card.is-open .globe-card__bars i:nth-child(3) { transition-delay: .59s; }
.globe-card.is-open .globe-card__bars i:nth-child(4) { transition-delay: .66s; }
.globe-card.is-open .globe-card__bars i:nth-child(5) { transition-delay: .73s; }
.globe-card__bars[data-q="1"] i:nth-child(-n+1), .globe-card__bars[data-q="2"] i:nth-child(-n+2),
.globe-card__bars[data-q="3"] i:nth-child(-n+3), .globe-card__bars[data-q="4"] i:nth-child(-n+4),
.globe-card__bars[data-q="5"] i:nth-child(-n+5) { background: linear-gradient(180deg, var(--ice), var(--sky)); box-shadow: 0 0 8px rgba(var(--sky-rgb), .6); }

.globe-card__spec { display: grid; border-top: 1px solid var(--line); }
.globe-card__spec > div { display: flex; align-items: center; justify-content: space-between; gap: 12px; padding: 9px 0; border-bottom: 1px solid var(--line); }
.globe-card__spec dt { font-size: 13px; color: var(--text-3); }
.globe-card__spec dd { font-size: 13px; font-weight: 600; color: var(--text); text-align: right; }
.globe-card__cta { margin-top: 2px; --btn-h: 48px; }
/* компактная карточка (тур на телефоне) */
.globe-card.is-compact .globe-card__status, .globe-card.is-compact .globe-card__spec { display: none; }
.globe-card.is-compact .globe-card__body { gap: 12px; }
.globe-card.is-compact .globe-card__cta { --btn-h: 46px; }

/* ---------- HERO ---------- */
/* До запуска world.js (он подключается отложенно) тексты hero скрыты — без «мигания».
   Страховка: через 5 с показываются в любом случае. */
@media (prefers-reduced-motion: no-preference) {
  .js .world:not(.is-static) .world-hero [data-wh], .js .world:not(.is-static) .world-title {
    opacity: 0; animation: worldShow .01s linear 5s forwards;
  }
}
@keyframes worldShow { to { opacity: 1; visibility: visible; } }
.world-hero {
  position: relative; z-index: 3;
  display: flex; flex-direction: column; justify-content: center;
  min-height: 100vh; min-height: 100svh;
  pointer-events: none;
}
.world-hero a, .world-hero button { pointer-events: auto; }
.world-hero__inner { position: relative; padding-top: calc(var(--header-h) + 36px); padding-bottom: 110px; }
.world-eyebrow { gap: 9px; }
.world-eyebrow__sep { color: var(--text-4); }
.world-title {
  margin-top: 26px; max-width: none;
  font-size: clamp(38px, 5.15vw, 96px); line-height: 1.02;
}
.world-title__line, .world-loc__line { display: block; width: fit-content; max-width: 100%; overflow: hidden; padding: 0 .06em .1em 0; margin-bottom: -.1em; }
.world-title__in, .world-loc__in { display: block; will-change: transform; }
.world-lead { margin-top: 26px; max-width: 29em; }
.world-cta { margin-top: 38px; display: flex; flex-wrap: wrap; gap: 12px; }
.world-facts { margin-top: 58px; display: flex; flex-wrap: wrap; row-gap: 18px; width: fit-content; max-width: 100%; }
.world-facts li { display: grid; gap: 8px; padding: 2px 28px; border-left: 1px solid var(--line-2); }
.world-facts li:first-child { padding-left: 0; border-left: 0; }
.world-facts b { font: 400 22px/1 var(--f-display); letter-spacing: -.03em; color: var(--text); white-space: nowrap; }
.world-facts li > span { font: 500 10px/1.2 var(--f-mono); letter-spacing: .14em; text-transform: uppercase; color: var(--text-3); white-space: nowrap; }

.world-scroll {
  position: absolute; left: 50%; bottom: 26px; translate: -50% 0;
  display: grid; justify-items: center; gap: 12px;
  font: 500 9.5px/1 var(--f-mono); letter-spacing: .32em; text-transform: uppercase; color: var(--text-3);
}
.world-scroll i { display: block; width: 1px; height: 42px; overflow: hidden; position: relative; background: rgba(var(--sky-rgb), .12); }
.world-scroll i::after {
  content: ""; position: absolute; left: 0; top: 0; width: 1px; height: 100%;
  background: linear-gradient(180deg, transparent, var(--sky));
  animation: worldScroll 2.2s var(--ease-in-out) infinite;
}
@keyframes worldScroll { 0% { translate: 0 -100%; } 60%, 100% { translate: 0 100%; } }

/* ---------- ЛОКАЦИИ ---------- */
.world-loc { position: relative; z-index: 3; padding-block: clamp(72px, 10vw, 140px); }
.world-loc__head { display: grid; justify-items: start; gap: 22px; max-width: 36rem; }
.world-loc__title { font-size: clamp(32px, 4.3vw, 66px); }
.world-loc__lead { max-width: 31em; }
.loc-grid {
  margin-top: 44px;
  display: grid; grid-template-columns: repeat(auto-fill, minmax(236px, 1fr)); gap: 8px;
}
.loc {
  position: relative; width: 100%;
  display: grid; grid-template-columns: auto minmax(0, 1fr) auto; grid-template-rows: auto auto; column-gap: 12px; row-gap: 3px; align-items: center;
  padding: 11px 14px; border-radius: 14px; text-align: left;
  background: linear-gradient(180deg, rgba(255, 255, 255, .04), rgba(255, 255, 255, .012));
  box-shadow: inset 0 0 0 1px var(--line), inset 0 1px 0 rgba(255, 255, 255, .03);
  transition: box-shadow .45s var(--ease-out), background-color .45s, translate .5s var(--ease-out);
  -webkit-tap-highlight-color: transparent;
}
.loc::after { /* подсветка под курсором */
  content: ""; position: absolute; inset: 0; border-radius: inherit; pointer-events: none;
  background: radial-gradient(180px circle at var(--mx, 50%) var(--my, 50%), rgba(var(--sky-rgb), .14), transparent 70%);
  opacity: 0; transition: opacity .4s;
}
.loc:hover::after { opacity: 1; }
.loc:hover { box-shadow: inset 0 0 0 1px rgba(var(--sky-rgb), .28), inset 0 1px 0 rgba(255, 255, 255, .05); }
.loc.is-active {
  background: linear-gradient(180deg, rgba(var(--sky-rgb), .12), rgba(var(--sky-rgb), .03));
  box-shadow: inset 0 0 0 1px rgba(var(--sky-rgb), .6), 0 0 34px -12px rgba(var(--sky-rgb), .75);
}
.loc__flag { grid-row: 1 / span 2; width: 28px; height: 20px; border-radius: 5px; object-fit: cover; box-shadow: 0 0 0 1px rgba(255, 255, 255, .12); }
.loc__city { font: 600 14.5px/1.2 var(--f-body); color: var(--text); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.loc__meta { grid-column: 2; font: 500 12px/1.2 var(--f-body); color: var(--text-3); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.loc__meta b { font: 500 10px/1 var(--f-mono); letter-spacing: .12em; color: var(--sky); }
.loc__ping { grid-column: 3; grid-row: 1 / span 2; display: inline-flex; align-items: center; gap: 7px; font: 500 12px/1 var(--f-mono); color: var(--text-2); font-variant-numeric: tabular-nums; }
.loc__ping i { width: 6px; height: 6px; border-radius: 50%; background: var(--ok); box-shadow: 0 0 8px rgba(var(--ok-rgb), .85); }
.loc.is-active .loc__ping { color: var(--text); }

/* ==========================================================================
   Режим тура: закреплённая сцена (включает world.js)
   ========================================================================== */
.world.is-tour .world-stage { height: 100vh; height: 100svh; }
.world.is-tour .globe { height: 100%; }
.world.is-tour .world-hero { position: absolute; inset: 0; min-height: 0; }
.world.is-tour .world-loc { position: absolute; inset: 0; padding: 0; pointer-events: none; }
.world.is-tour .world-loc__inner {
  position: relative; height: 100%;
  padding-top: calc(var(--header-h) + clamp(14px, 2.5vh, 34px)); padding-bottom: 40px;
}
.world.is-tour .world-loc a, .world.is-tour .world-loc button { pointer-events: auto; }
.world.is-tour .world-loc__head { max-width: 37rem; }
@media (min-width: 900px) { .world.is-tour .world-loc__head { max-width: min(37rem, 42vw); } }
.world.is-tour .world-loc__title { font-size: clamp(32px, 3.6vw, 58px); }
.world.is-tour .loc-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); max-width: 33rem; margin-top: 34px; }
.world.is-tour .loc { padding: 10px 13px; }
/* невысокие окна на компьютере: список не должен упираться в низ экрана */
@media (min-width: 900px) and (max-height: 820px) {
  .world.is-tour .world-loc__head { gap: 16px; }
  .world.is-tour .world-loc__title { font-size: clamp(32px, min(3.6vw, 6.4vh), 58px); }
  .world.is-tour .loc-grid { margin-top: 24px; gap: 7px; }
  .world.is-tour .loc { padding: 8px 13px; }
}
@media (min-width: 900px) and (max-height: 700px) {
  .world.is-tour .world-loc__lead { display: none; }
  .world.is-tour .loc { padding: 7px 13px; }
}


/* ==========================================================================
   Адаптив
   ========================================================================== */
@media (max-width: 899px) {
  .world { --world-gx: 50%; --world-gy: 80%; --world-gr: 64vw; }
  .world-hero { justify-content: flex-start; }
  .world-hero__inner { padding-top: calc(var(--header-h) + 22px); padding-bottom: 0; }
  .world-title { margin-top: 20px; font-size: clamp(34px, 9.4vw, 60px); max-width: 9em; }
  .world-lead { margin-top: 18px; font-size: 15.5px; line-height: 1.55; }
  .world-cta { margin-top: 26px; flex-wrap: nowrap; gap: 10px; }
  .world-cta .btn--lg { --btn-h: 52px; padding: 0 22px; font-size: 15px; }
  .world-facts { margin-top: 26px; width: auto; display: grid; grid-template-columns: repeat(4, auto); justify-content: space-between; }
  .world-facts li { padding: 0 0 0 12px; gap: 6px; }
  .world-facts li:first-child { padding-left: 0; }
  .world-facts b { font-size: 16px; }
  .world-facts li > span { font-size: 8.5px; letter-spacing: .1em; white-space: normal; max-width: 9em; }
  .world-scroll { display: none; }

  .globe-card { width: min(360px, calc(100vw - 32px)); }
  .globe-card__body { padding: 14px; gap: 12px; }
  .globe-card__pv b { font-size: 34px; }

  .world.is-tour .world-loc__inner { padding-top: calc(var(--header-h) + 16px); padding-bottom: 20px; display: flex; flex-direction: column; }
  .world.is-tour .world-loc__head { gap: 14px; }
  .world.is-tour .world-loc__title { font-size: clamp(28px, 7.6vw, 44px); }
  .world.is-tour .world-loc__lead { display: none; }
  /* все страны сразу: компактная сетка «флаг + город» внизу сцены */
  .world.is-tour .loc-grid {
    position: absolute; left: var(--gutter); right: var(--gutter); bottom: max(16px, env(safe-area-inset-bottom)); margin: 0; max-width: none;
    display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 6px;
  }
  .world.is-tour .globe-hint { bottom: calc(var(--globe-dock-b, 190px) + 4px); }
  .world.is-tour .loc {
    display: flex; align-items: center; gap: 7px; min-height: 38px; padding: 8px 9px; border-radius: 12px;
    background: rgba(8, 16, 36, .94);
  }
  .world.is-tour .loc__flag { width: 20px; height: 15px; border-radius: 4px; flex: none; }
  .world.is-tour .loc__city { min-width: 0; font-size: 12px; letter-spacing: -.01em; }
  .world.is-tour .loc__meta, .world.is-tour .loc__ping { display: none; }
}
@media (max-width: 389px) {
  /* узкие телефоны: плотнее, чтобы названия городов помещались целиком */
  .world.is-tour .loc-grid { gap: 5px; }
  .world.is-tour .loc { gap: 5px; padding: 8px 7px; }
  .world.is-tour .loc__flag { width: 18px; height: 13px; }
  .world.is-tour .loc__city { font-size: 11.5px; letter-spacing: -.02em; }
}
@media (max-width: 899px) {
  .loc-grid { grid-template-columns: repeat(auto-fill, minmax(160px, 1fr)); }
}
@media (max-width: 520px) {
  .world-hide-sm { display: none; }
  .world-cta .btn--primary { flex: 1 1 auto; }
  .world-cta .btn--lg { padding: 0 20px; }
}
@media (max-width: 380px) {
  .world-cta .btn--lg { padding: 0 16px; font-size: 14px; }
  .world-facts b { font-size: 15px; }
}
@media (min-width: 900px) and (max-height: 760px) {
  .world-hero__inner { padding-bottom: 70px; }
  .world-facts { margin-top: 36px; }
  .world-title { font-size: clamp(38px, 5vw, 84px); }
}

@media (prefers-reduced-motion: reduce) {
  .globe-card__frame::before, .globe-leader__ring, .world-scroll i::after, .globe-card__live i { animation: none; }
  .globe-card__frame, .gc-row, .globe-card__bars i { transition-duration: .01s !important; transition-delay: 0s !important; }
}
