.geo-public-body{background:#f4f7fa}.geo-public{color:#173a5b}.geo-public-container{width:min(1180px,calc(100% - 36px));margin:0 auto}.geo-public-hero{background:linear-gradient(135deg,#0d2948,#124e76 62%,#11637a);color:#fff;padding:78px 0 68px;overflow:hidden}.geo-public-hero-grid{display:grid;grid-template-columns:1.15fr .85fr;gap:50px;align-items:center}.geo-public-kicker{text-transform:uppercase;letter-spacing:.15em;color:#f1bc5a;font-size:12px;font-weight:850}.geo-public h1{font-size:clamp(38px,6vw,70px);line-height:1.04;margin:13px 0 20px;max-width:800px}.geo-public-hero p{font-size:18px;line-height:1.65;color:rgba(255,255,255,.8);max-width:760px}.geo-public-stats{display:flex;gap:38px;flex-wrap:wrap;margin-top:30px}.geo-public-stats strong{display:block;font-size:32px}.geo-public-stats span{font-size:13px;color:rgba(255,255,255,.65)}.geo-public-globe{width:min(390px,80vw);aspect-ratio:1;border-radius:50%;justify-self:center;position:relative;border:2px solid rgba(255,255,255,.22);box-shadow:inset 0 0 60px rgba(49,193,193,.2),0 30px 70px rgba(0,0,0,.25);background:radial-gradient(circle at 35% 28%,rgba(255,255,255,.13),transparent 26%),linear-gradient(145deg,rgba(44,160,173,.32),rgba(5,32,62,.2))}.geo-public-globe:before,.geo-public-globe:after{content:'';position:absolute;inset:9%;border:1px solid rgba(255,255,255,.16);border-radius:50%}.geo-public-globe:after{inset:0 27%;border-top:0;border-bottom:0}.geo-public-globe i{position:absolute;inset:18% 10%;background:#6dbb9a;opacity:.35;clip-path:polygon(0 28%,14% 11%,29% 20%,37% 7%,49% 29%,59% 16%,69% 30%,84% 22%,100% 36%,90% 49%,81% 68%,66% 62%,54% 83%,42% 65%,27% 78%,20% 55%,5% 50%)}.geo-public-globe span{position:absolute;width:15px;height:15px;border-radius:50%;background:#ffcf64;border:3px solid #fff;box-shadow:0 0 0 9px rgba(255,207,100,.16);z-index:2}.geo-public-globe .g1{left:25%;top:35%}.geo-public-globe .g2{left:53%;top:29%}.geo-public-globe .g3{left:69%;top:52%}.geo-public-globe .g4{left:39%;top:68%}.geo-public-section{padding:58px 0}.geo-public-soft{background:#eaf1f5}.geo-public-section-head{display:flex;justify-content:space-between;align-items:flex-start;gap:20px;margin-bottom:20px}.geo-public-section h2{font-size:30px;margin:0 0 8px}.geo-public-section p{margin:0;color:#65798c;line-height:1.55}.geo-public-live{background:#e3f7ef;color:#16805a;padding:7px 12px;border-radius:999px;font-size:12px;font-weight:800}.geo-public-map{position:relative;min-height:540px;border-radius:24px;background:linear-gradient(150deg,#123d60,#0b6377);overflow:hidden;box-shadow:0 24px 60px rgba(19,61,91,.19)}.geo-public-map:before{content:'';position:absolute;inset:11% 4%;background:#a5d0ae;opacity:.24;clip-path:polygon(2% 25%,12% 13%,24% 18%,30% 9%,40% 22%,48% 16%,57% 28%,68% 18%,82% 28%,96% 20%,94% 45%,84% 52%,78% 72%,65% 70%,56% 58%,46% 70%,34% 60%,29% 80%,19% 68%,11% 52%,3% 48%)}.geo-public-map-grid{position:absolute;inset:0;background-image:linear-gradient(rgba(255,255,255,.06) 1px,transparent 1px),linear-gradient(90deg,rgba(255,255,255,.06) 1px,transparent 1px);background-size:10% 16.66%}.geo-public-map-point{position:absolute;transform:translate(-50%,-50%);width:var(--size);height:var(--size);border-radius:50%;background:#ffca57;border:2px solid rgba(255,255,255,.9);box-shadow:0 0 0 7px rgba(255,202,87,.14);z-index:2}.geo-public-map-point:hover:after{content:attr(data-tip);position:absolute;left:50%;bottom:calc(100% + 10px);transform:translateX(-50%);background:#fff;color:#173d60;padding:7px 10px;border-radius:9px;white-space:nowrap;font-size:12px;font-weight:700;box-shadow:0 8px 25px rgba(0,0,0,.2)}.geo-public-grid{display:grid;grid-template-columns:1fr 1fr;gap:36px}.geo-public-ranking{display:grid;gap:11px}.geo-public-rank{display:grid;grid-template-columns:30px 1fr auto;gap:10px;align-items:center;background:#fff;padding:12px 14px;border-radius:13px}.geo-public-rank i{font-style:normal;color:#8796a5}.geo-public-rank strong{display:block}.geo-public-rank small{color:#768797}.geo-public-city-grid{display:grid;grid-template-columns:1fr 1fr;gap:11px}.geo-public-city{background:#fff;border-radius:14px;padding:14px}.geo-public-city strong{display:block;margin-bottom:4px}.geo-public-city span{color:#708295;font-size:12px}.geo-public-note{border:1px solid #d6e2ea;border-radius:18px;padding:20px;background:#fff}.geo-public-note strong{font-size:18px}.geo-public-note p{margin-top:7px}.geo-public-empty{padding:18px;color:#76889a;background:#fff;border-radius:13px}@media(max-width:850px){.geo-public-hero-grid,.geo-public-grid{grid-template-columns:1fr}.geo-public-globe{display:none}.geo-public-map{min-height:360px}.geo-public-city-grid{grid-template-columns:1fr}.geo-public-hero{padding:55px 0}}
.geo-public-attribution{margin-top:12px;font-size:12px;color:#8192a2}.geo-public-attribution a{color:#4a728e;text-decoration:underline;text-underline-offset:2px}

/* Реальная карта мира в эквидистантной цилиндрической проекции.
   Координаты точек рассчитываются в той же линейной системе longitude/latitude. */
.geo-public-map{aspect-ratio:2 / 1;min-height:420px;background:linear-gradient(155deg,#123d60,#0b6377)}
.geo-public-map:before{inset:0;background:url('../resources/world-map.svg') center/100% 100% no-repeat;opacity:.72;clip-path:none;z-index:1;pointer-events:none}
.geo-public-map-grid{z-index:0;opacity:.55}
.geo-public-map-point{z-index:3}

/* В карточках городов география и количество загрузок больше не слипаются. */
.geo-public-city{display:flex;flex-direction:column;min-height:112px}
.geo-public-city>span{display:block;line-height:1.45}
.geo-public-city>b{display:flex;align-items:baseline;gap:7px;margin-top:auto;padding-top:14px;color:#123f67}
.geo-public-city>b em{font-style:normal;font-size:20px;line-height:1;font-weight:850}
.geo-public-city>b small{font-size:12px;line-height:1.25;color:#607a91;font-weight:700}

@media(max-width:850px){.geo-public-map{aspect-ratio:auto;min-height:330px}}

/* Подсказка активной точки всегда выше остальных маркеров. */
.geo-public-map-point:hover,
.geo-public-map-point:focus-visible{z-index:1000}
.geo-public-map-point:hover::before,
.geo-public-map-point:hover::after,
.geo-public-map-point:focus-visible::before,
.geo-public-map-point:focus-visible::after{z-index:1001;pointer-events:none}
