@font-face {
  font-family: Stapel Expanded;
  src: url("/fonts/stapel-expanded-extra-bold.woff2") format("woff2");
  font-weight: 800;
  font-display: swap;
}
@font-face {
  font-family: Stapel;
  src: url("/fonts/stapel-bold.woff2") format("woff2");
  font-weight: 700;
  font-display: swap;
}
@font-face {
  font-family: Stapel;
  src: url("/fonts/stapel-medium.woff2") format("woff2");
  font-weight: 500;
  font-display: swap;
}
@font-face {
  font-family: Roboto Condensed;
  src: url("/fonts/roboto-condensed.woff2") format("woff2");
  font-weight: 400;
  font-display: swap;
}
:root {
  --paper: #f4f8fc;
  --ink: #181e24;
  --card: #2c3238;
  --blue: #337fe1;
  --white: #fbfcfc;
  --yellow: #fdd84d;
  --content: 90rem;
  --gutter: clamp(1.25rem, 5vw, 5rem);
  --cut: clamp(2rem, 6.72vw, 8rem);
  --heading: clamp(2rem, 3.34vw, 4rem);
  color-scheme: light;
}
* {
  box-sizing: border-box;
}
html {
  scroll-behavior: smooth;
  scroll-padding-top: 2rem;
}
body {
  margin: 0;
  background: var(--paper);
  color: var(--ink);
  font:
    400 1.375rem/1.25 "Roboto Condensed",
    Arial,
    sans-serif;
}
img {
  display: block;
  max-width: 100%;
  height: auto;
}
button,
a {
  -webkit-tap-highlight-color: transparent;
}
button {
  font: inherit;
  cursor: pointer;
}
a {
  color: inherit;
  text-decoration: none;
}
button {
  color: inherit;
}
h1,
h2,
h3,
p {
  margin: 0;
}
h1,
h2 {
  font-family: "Stapel Expanded", Arial, sans-serif;
  font-weight: 800;
  text-transform: uppercase;
  line-height: 0.91;
  letter-spacing: -0.02em;
}
h2 {
  font-size: var(--heading);
}
ul {
  margin: 0;
  padding: 0;
  list-style: none;
}
button:focus-visible,
a:focus-visible,
[tabindex]:not([tabindex="-1"]):focus-visible {
  outline: 3px solid #1254ab;
  outline-offset: 6px;
}
section:focus {
  outline: none;
}
.container {
  width: min(var(--content), calc(100% - var(--gutter) * 2));
  margin-inline: auto;
}
.sr-only {
  position: absolute;
  width: 1px;
  height: 1px;
  padding: 0;
  margin: -1px;
  overflow: hidden;
  clip-path: inset(50%);
  white-space: nowrap;
  border: 0;
}
.skip-link {
  position: fixed;
  top: 1rem;
  left: 1rem;
  z-index: 100;
  padding: 1rem;
  background: var(--white);
  transform: translateY(-200%);
}
.skip-link:focus {
  transform: none;
}
.button {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 0.5rem;
  min-height: 3.75rem;
  padding: 0.875rem 2rem;
  border: 0;
  border-radius: 100px;
  background: linear-gradient(193deg, #fdeb5b 21%, #feba37 85%);
  box-shadow: inset 0 -4px 8px #fdeb5bcc;
  font:
    700 1.125rem/1 Stapel,
    Arial,
    sans-serif;
  text-transform: uppercase;
  transition:
    transform 0.2s,
    box-shadow 0.2s;
}
.button:hover {
  transform: translateY(-3px);
  box-shadow:
    inset 0 -4px 8px #fdeb5bcc,
    0 8px 24px #382c0024;
}
.button img {
  width: 1.2rem;
  height: 1.2rem;
}
.button--hero {
  min-height: 5.625rem;
  padding: 1.125rem 3rem;
  font-size: 1.75rem;
}
.hero {
  position: relative;
  isolation: isolate;
  overflow: hidden;
  min-height: clamp(47rem, 47.92vw, 61rem);
  background: linear-gradient(
    180deg,
    #1a6acf 25.86%,
    #428eef 54.63%,
    #8fccf9 87.82%,
    #c5e6ff 100%
  );
}
.hero::after {
  position: absolute;
  content: "";
  bottom: -1px;
  left: 0;
  right: 0;
  height: var(--cut);
  background: var(--paper);
  clip-path: polygon(0 0, 50% 100%, 100% 0, 100% 100%, 0 100%);
  z-index: 5;
}
.hero-grid {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  object-fit: cover;
  pointer-events: none;
  opacity: 0.8;
  z-index: -1;
}
.site-header {
  position: relative;
  z-index: 20;
  background: #216dcc12;
  backdrop-filter: blur(12px);
}
.header-inner {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 2rem;
  min-height: 8.25rem;
}
.brand {
  flex-shrink: 0;
}
.brand img {
  width: 10.75rem;
  height: 3.75rem;
}
.navigation {
  display: flex;
  align-items: center;
  gap: 2rem;
  color: var(--white);
  font:
    500 1.125rem/1 Stapel,
    Arial,
    sans-serif;
  text-transform: uppercase;
}
.navigation a {
  display: inline-flex;
  align-items: center;
  gap: 0.5rem;
  min-height: 2.75rem;
  transition: opacity 0.2s;
}
.navigation a:hover {
  opacity: 0.7;
}
.promo {
  background: #ff5267;
  border-radius: 100px;
  padding: 0.5rem 0.7rem;
  font-size: 1rem;
}
.menu-toggle {
  display: none;
}
.hero-copy {
  position: relative;
  z-index: 3;
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: clamp(1.5rem, 2.7vw, 3.25rem);
  width: min(47%, 55rem);
  margin: clamp(3.5rem, 3.7vw, 5rem) auto 9rem;
  text-align: center;
  color: var(--white);
}
.online-pill {
  display: inline-flex;
  align-items: center;
  gap: 0.625rem;
  min-height: 2.8rem;
  padding: 0.7rem 1.125rem 0.6rem 0.9375rem;
  border-radius: 100px;
  background: #181e2499;
  backdrop-filter: blur(15px);
  font:
    500 1.125rem/1 Stapel,
    Arial,
    sans-serif;
  text-transform: uppercase;
}
.online-pill strong {
  font-weight: 700;
  font-size: 1.75rem;
}
.online-dot {
  width: 0.5rem;
  height: 0.5rem;
  background: #5bfd63;
  border-radius: 50%;
  box-shadow: 0 0 0 0.3rem #5bfd6326;
}
.hero h1 {
  font-size: clamp(3.4rem, 5.21vw, 6.25rem);
}
.hero-description {
  margin-top: 1.75rem;
  color: #fff;
  opacity: 0.85;
  font-size: clamp(1rem, 1.15vw, 1.375rem);
  line-height: 1.25;
  letter-spacing: -0.02em;
}
.hero-art {
  position: absolute;
  pointer-events: none;
  inset: 0;
  z-index: 2;
}
.hero-person {
  position: absolute;
  bottom: 0;
  height: min(40.73vw, 52rem);
  min-height: 36rem;
  aspect-ratio: 518/782;
}
.hero-person--man {
  right: calc(50% + 16.3vw);
  overflow: hidden;
}
.hero-person--man img {
  position: absolute;
  max-width: none;
  width: 199.72%;
  height: 105.85%;
  left: 0;
  top: -5.85%;
}
.hero-person--police {
  left: calc(50% + 17.5vw);
  aspect-ratio: 494/782;
}
.hero-person--police img {
  width: 100%;
  height: 100%;
  object-fit: contain;
}
.decor {
  position: absolute;
  pointer-events: none;
  object-fit: contain;
}
.hero-sign {
  width: clamp(10rem, 17vw, 21rem);
  top: 14%;
  left: -4%;
  transform: rotate(30deg);
  filter: blur(2px);
}
.hero-bullet {
  width: clamp(3rem, 4vw, 5rem);
  left: 31%;
  top: 16%;
  transform: rotate(-40deg);
  filter: blur(1px);
}
.hero-stop {
  width: clamp(11rem, 20vw, 25rem);
  right: -7%;
  bottom: 1%;
  transform: rotate(30deg);
  filter: blur(3px);
}
.features {
  position: relative;
  padding: 2rem 0 6.5rem;
}
.features::before,
.download-art::before {
  content: "";
  position: absolute;
  inset: 0;
  background: var(--blue);
  mask: url("/assets/graffiti-mask.webp") center/contain no-repeat;
  pointer-events: none;
}
.features::before {
  top: 0;
  height: clamp(23rem, 33vw, 40rem);
  width: min(94%, 82rem);
  margin-inline: auto;
}
.feature-carousel {
  position: relative;
  display: grid;
  grid-template-areas: "art" "dots" "copy";
  justify-items: center;
}
.feature-slide {
  display: contents;
}
.feature-visual {
  grid-area: art;
  position: relative;
  width: min(55vw, 61rem);
  aspect-ratio: 974/645;
  align-self: end;
}
.phone-art {
  position: absolute;
  inset: 7.5% 5.5% 9.5%;
  container-type: inline-size;
}
.phone {
  position: absolute;
  left: 50%;
  top: 50%;
  width: 57.08%;
  height: 157.35%;
  transform: translate(-50%, -50%) rotate(-87.16deg);
  filter: drop-shadow(10px 32px 28px #09264b0f);
}
.phone-background {
  position: absolute;
  left: -6.5%;
  top: -1.425%;
  width: 105.03%;
  height: 108.63%;
  display: flex;
  align-items: center;
  justify-content: center;
}
.phone-background-inner {
  width: 175.64%;
  height: 56.07%;
  flex: none;
  transform: rotate(89.62deg);
  mask: url("data:image/svg+xml,%3Csvg%20preserveAspectRatio%3D%22none%22%20overflow%3D%22visible%22%20style%3D%22display%3A%20block%3B%22%20width%3D%22371.986%22%20height%3D%22805.767%22%20viewBox%3D%220%200%20371.986%20805.767%22%20fill%3D%22none%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%0A%3Cpath%20id%3D%22background%22%20d%3D%22M0%2030.5504C0%2013.6779%2013.6651%200%2030.5219%200H341.464C358.321%200%20371.986%2013.6779%20371.986%2030.5504V775.216C371.986%20792.089%20358.321%20805.767%20341.464%20805.767H30.5219C13.6651%20805.767%200%20792.089%200%20775.216V30.5504Z%22%20fill%3D%22%23E2E2E2%22%2F%3E%0A%3C%2Fsvg%3E%0A") 3.561cqw 10.528cqw/94.667cqw 47.147cqw
    no-repeat;
}
.phone-background-inner img {
  width: 100%;
  height: 100%;
  object-fit: cover;
}
.phone-rim {
  position: absolute;
  overflow: hidden;
  top: 0;
  bottom: 0.11%;
}
.phone-rim img {
  position: absolute;
  height: 100%;
  max-width: none;
  top: 0;
}
.phone-rim--back {
  left: 61.96%;
  right: 16.3%;
}
.phone-rim--back img {
  width: 385.42%;
  left: -285.25%;
}
.phone-rim--front {
  left: 0;
  right: 36.66%;
}
.phone-rim--front img {
  width: 132.27%;
  left: -0.06%;
}
.phone-people {
  position: absolute;
  left: calc(50% + 3.31%);
  top: -4.13%;
  width: 114.66%;
  height: 107.58%;
  transform: translateX(-50%);
  display: flex;
  align-items: center;
  justify-content: center;
}
.phone-people-inner {
  width: 155.54%;
  height: 57.78%;
  flex: none;
  transform: rotate(87.16deg);
  mask: url("data:image/svg+xml,%3Csvg%20preserveAspectRatio%3D%22none%22%20overflow%3D%22visible%22%20style%3D%22display%3A%20block%3B%22%20width%3D%22472.535%22%20height%3D%22806.107%22%20viewBox%3D%220%200%20472.535%20806.107%22%20fill%3D%22none%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%0A%3Cpath%20id%3D%22background%22%20d%3D%22M0%2030.5504C0%2013.6779%2013.6651%200%2030.5219%200L442.013%200.340395C458.87%200.340395%20472.535%2014.0183%20472.535%2030.8908V775.557C472.535%20792.429%20458.87%20806.107%20442.013%20806.107L30.5219%20805.767C13.6651%20805.767%200%20792.089%200%20775.217V30.5504Z%22%20fill%3D%22%23E2E2E2%22%2F%3E%0A%3C%2Fsvg%3E%0A") 3.514cqw 1.622cqw/95.283cqw 58.735cqw
    no-repeat;
}
.phone-people-inner img {
  width: 100%;
  height: 100%;
  object-fit: contain;
}
.phone--events,
.phone--friends {
  transform: translate(-50%, -50%) rotate(-92.85deg);
}
.phone--events .phone-people-inner,
.phone--friends .phone-people-inner {
  transform: rotate(92.85deg);
}
.phone--roles .phone-people-inner {
  width: 138%;
  height: 56%;
}
.feature-copy {
  grid-area: copy;
  text-align: center;
  max-width: 46rem;
  padding-inline: 1.25rem;
}
.feature-copy h2 {
  margin: 1.1rem 0 1.75rem;
}
.feature-copy p {
  max-width: 40rem;
  margin-inline: auto;
  color: #454b51;
  font-size: clamp(1rem, 1.15vw, 1.375rem);
  letter-spacing: -0.02em;
}
.carousel-controls {
  grid-area: dots;
  position: relative;
  justify-self: center;
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 0.25rem;
  z-index: 3;
}
.carousel-dot {
  position: relative;
  width: 2rem;
  height: 2.75rem;
  padding: 0;
  border: 0;
  background: none;
}
.carousel-dot::before {
  content: "";
  display: block;
  margin: auto;
  width: 0.9rem;
  height: 0.9rem;
  border-radius: 50%;
  background: #c8d0d8;
  transition:
    background 0.2s,
    transform 0.2s;
}
.carousel-dot[aria-pressed="true"]::before {
  background: #4086e2;
  transform: scale(1.08);
}
.feature-slide:not(:first-child) .feature-copy {
  margin-top: 2rem;
}
.js .feature-slide .feature-copy {
  margin-top: 0;
}
.features-bullet {
  width: 10rem;
  bottom: -3.5rem;
  left: 8%;
  transform: rotate(-86deg);
  z-index: 3;
}
.no-js .feature-carousel {
  display: flex;
  flex-direction: column;
  gap: 2rem;
}
.no-js .feature-slide {
  display: flex;
  flex-direction: column;
  align-items: center;
}
.no-js .carousel-controls {
  display: none;
}
.servers {
  position: relative;
  background: var(--ink);
  color: var(--white);
  padding: calc(var(--cut) + 7rem) 0 calc(var(--cut) + 4rem);
  clip-path: polygon(
    0 0,
    50% var(--cut),
    100% 0,
    100% calc(100% - var(--cut)),
    50% 100%,
    0 calc(100% - var(--cut))
  );
}
.section-heading {
  text-align: center;
}
.section-heading p {
  margin: 1.5rem auto 0;
  font-size: clamp(1rem, 1.15vw, 1.375rem);
  max-width: 39rem;
}
.servers .section-heading p {
  color: #c6c9cc;
}
.server-grid {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 1rem 1.25rem;
  margin-top: 4rem;
}
.server-card {
  position: relative;
  background: var(--card);
  padding: 1.75rem 1.75rem 2.375rem;
  border-radius: 1.5rem;
  clip-path: polygon(
    0 0,
    36% 0,
    41% 4%,
    100% 4%,
    100% 100%,
    40% 100%,
    35% 96%,
    0 96%
  );
}
.server-card h3 {
  font:
    700 1.125rem/1 Stapel,
    Arial,
    sans-serif;
  text-transform: uppercase;
  margin-bottom: 1.75rem;
}
.server-count {
  display: flex;
  flex-direction: column;
  align-items: center;
  font:
    700 clamp(3rem, 4.53vw, 5.4375rem)/0.9 Stapel,
    Arial,
    sans-serif;
  letter-spacing: -0.03em;
}
.server-capacity {
  color: #7b8187;
}
.server-load {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 0.5rem;
  margin-top: 1rem;
  font:
    500 1rem/1.2 Stapel,
    Arial,
    sans-serif;
  text-transform: uppercase;
}
.server-load img {
  width: 1rem;
  height: 1rem;
}
.download-section {
  position: relative;
  overflow-x: clip;
  padding: 7rem 0 5rem;
}
.download-section .section-heading p {
  margin: 0 0 1.5rem;
}
.download-art {
  position: relative;
  min-height: 31rem;
  margin: 2rem auto 0;
  width: min(100%, 77rem);
  display: grid;
  place-items: center;
}
.download-art::before {
  mask-image: url("/assets/download-graffiti-mask.webp");
}
.download-grid {
  position: relative;
  display: grid;
  grid-template-columns: repeat(5, 1fr);
  gap: 0.75rem;
  width: 75%;
  margin: 1rem auto;
}
.store-link {
  display: flex;
  align-items: center;
  justify-content: center;
  grid-column: span 2;
  height: 10rem;
  padding: 1.5rem;
  border: 2px solid #fbfcfc66;
  border-radius: 2rem;
  background: #fbfcfce6;
  backdrop-filter: blur(15px);
  box-shadow: 10px 32px 56px #09264b0f;
  transition:
    transform 0.2s,
    background 0.2s;
}
.store-link:nth-child(3) {
  grid-column: 2 / span 2;
}
.store-link:nth-child(4) {
  grid-column: 4 / span 2;
}
.store-link img {
  width: 85%;
  height: 5.5rem;
  object-fit: contain;
}
.store-link:hover {
  transform: translateY(-5px);
  background: #fff;
}
.store-link--soon {
  cursor: default;
}
.store-link--soon:hover {
  transform: none;
}
.download-sign {
  width: 19rem;
  right: 7%;
  top: -11rem;
  transform: rotate(-19deg);
  z-index: 3;
}
.news {
  position: relative;
  background: #e9eef4;
  padding: calc(var(--cut) + 7rem) 0 7rem;
  clip-path: polygon(0 0, 50% var(--cut), 100% 0, 100% 100%, 0 100%);
}
.news-track {
  display: grid;
  grid-auto-flow: column;
  grid-auto-columns: minmax(
    0,
    calc((min(90rem, 100vw - var(--gutter) * 2) - 2.5rem) / 3)
  );
  gap: 1.25rem;
  overflow-x: auto;
  scroll-snap-type: x mandatory;
  scrollbar-width: thin;
  scrollbar-color: #9daebf transparent;
  padding: 0 max(var(--gutter), calc((100vw - 90rem) / 2)) 1.5rem;
  margin-top: 3rem;
  scroll-padding-inline: max(var(--gutter), calc((100vw - 90rem) / 2));
}
.news-card {
  scroll-snap-align: start;
  border-radius: 2rem;
  overflow: hidden;
  background: var(--white);
  box-shadow: 0 16px 24px #09264b0a;
}
.news-card > a {
  display: block;
  height: 100%;
}
.news-card img {
  width: 100%;
  aspect-ratio: 478/269;
  object-fit: cover;
  transition: transform 0.3s;
}
.news-card:hover img {
  transform: scale(1.025);
}
.news-copy {
  padding: 1.5rem;
}
.news-copy h3 {
  font:
    700 clamp(1.125rem, 1.25vw, 1.5rem)/1.05 Stapel,
    Arial,
    sans-serif;
  text-transform: uppercase;
}
.news-copy span {
  display: inline-block;
  margin-top: 1rem;
  font:
    500 1rem/1.4 Stapel,
    Arial,
    sans-serif;
  color: #205faa;
  text-decoration: underline;
  text-underline-offset: 0.2em;
}
.news-card a:focus-visible {
  outline-offset: -5px;
}
.site-footer {
  background: var(--ink);
  color: var(--white);
  padding: 4.5rem 0;
}
.footer-grid {
  display: grid;
  grid-template-columns: 1.25fr 1fr 1fr 1fr;
  gap: clamp(2rem, 5vw, 7rem);
}
.footer-brand {
  display: flex;
  flex-direction: column;
  gap: 2rem;
}
.footer-brand .brand img {
  width: 7.875rem;
  height: 2.75rem;
}
.company-info {
  font:
    500 0.75rem/1.6 Stapel,
    Arial,
    sans-serif;
  text-transform: uppercase;
  color: #a6adb4;
}
.payments {
  display: flex;
  align-items: center;
  gap: 1.25rem;
}
.payments img {
  width: auto;
  max-width: 3.875rem;
  height: 1.3rem;
  object-fit: contain;
}
.footer-column h2 {
  font:
    700 1.125rem/1 Stapel,
    Arial,
    sans-serif;
  margin-bottom: 2rem;
  letter-spacing: 0;
}
.footer-column ul {
  display: flex;
  flex-direction: column;
  gap: 1.5rem;
}
.footer-column li,
.footer-column > a {
  font:
    500 0.875rem/1.4 Stapel,
    Arial,
    sans-serif;
  text-transform: uppercase;
  color: #a6adb4;
}
.footer-column a:hover {
  color: var(--white);
}
.footer-column .email {
  color: var(--yellow);
  text-transform: none;
  text-decoration: underline;
  overflow-wrap: anywhere;
}
.social-links {
  display: flex;
  gap: 1rem;
  margin-top: 1.5rem;
}
.social-links a {
  display: grid;
  place-items: center;
  min-width: 2.75rem;
  min-height: 2.75rem;
}
.social-links img {
  width: 2.5rem;
  height: 2.5rem;
}
@media (min-width: 1921px) {
  .hero-person--man {
    right: calc(50% + 19.5rem);
  }
  .hero-person--police {
    left: calc(50% + 21rem);
  }
}
@media (max-width: 1200px) {
  .header-inner {
    min-height: 6.25rem;
    gap: 1rem;
  }
  .brand img {
    width: 8rem;
    height: 2.8rem;
  }
  .navigation {
    gap: 1.25rem;
    font-size: 0.9375rem;
  }
  .header-download {
    padding-inline: 1.25rem;
    font-size: 0.9375rem;
  }
  .hero-copy {
    width: 52%;
    margin-top: 3.25rem;
  }
  .hero h1 {
    font-size: clamp(3.2rem, 5.2vw, 4.3rem);
  }
  .hero-person {
    height: 39rem;
    min-height: 0;
  }
  .hero-person--man {
    right: calc(50% + 17vw);
  }
  .hero-person--police {
    left: calc(50% + 18vw);
  }
  .button--hero {
    min-height: 4.5rem;
    font-size: 1.375rem;
  }
  .server-card {
    padding: 1.5rem 1.25rem 2rem;
  }
  .server-card h3 {
    font-size: 0.875rem;
  }
  .server-load {
    font-size: 0.8rem;
  }
  .servers {
    padding-top: calc(var(--cut) + 4rem);
  }
  .server-grid {
    margin-top: 3rem;
  }
  .feature-visual {
    width: 65vw;
  }
  .download-section {
    padding-top: 5rem;
  }
  .download-sign {
    width: 13rem;
    top: -8rem;
    right: 3%;
  }
  .store-link {
    height: 8rem;
    border-radius: 1.5rem;
  }
  .download-art {
    min-height: 26rem;
  }
  .news {
    padding-top: calc(var(--cut) + 4rem);
  }
  .footer-grid {
    gap: 2rem;
    grid-template-columns: 1.2fr 1fr 1.1fr 1.3fr;
  }
}
@media (max-width: 900px) {
  .navigation {
    gap: 1rem;
    font-size: 0.875rem;
  }
  .header-download {
    display: none;
  }
  .hero {
    min-height: 58rem;
  }
  .hero-copy {
    width: min(92%, 38rem);
    margin: 2rem auto 27rem;
    gap: 1.75rem;
  }
  .hero h1 {
    font-size: clamp(3rem, 6.5vw, 4rem);
  }
  .hero-description {
    font-size: 1.125rem;
    margin-top: 1.25rem;
  }
  .hero-person {
    height: 33rem;
    bottom: -5rem;
  }
  .hero-person--man {
    right: calc(50% - 1.5rem);
  }
  .hero-person--police {
    left: calc(50% - 1.5rem);
  }
  .hero-sign {
    top: 40%;
    width: 12rem;
  }
  .hero-bullet {
    left: auto;
    right: 10%;
    top: 39%;
  }
  .hero-stop {
    width: 12rem;
    bottom: -2rem;
  }
  .features {
    padding-bottom: 3.5rem;
  }
  .features::before {
    height: 28rem;
    width: 100%;
  }
  .feature-visual {
    width: 90vw;
    max-width: 46rem;
  }
  .feature-copy h2 {
    margin-bottom: 1.25rem;
  }
  .features-bullet {
    width: 6rem;
    left: 5%;
    bottom: -3rem;
  }
  .server-grid {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }
  .server-count {
    font-size: 4rem;
  }
  .server-load {
    font-size: 0.875rem;
  }
  .download-sign {
    top: -5rem;
    width: 10rem;
  }
  .footer-grid {
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: 3rem;
  }
  .footer-brand {
    grid-column: 1/-1;
  }
  .company-info {
    max-width: 20rem;
  }
  .news-track {
    grid-auto-columns: calc((100vw - var(--gutter) * 2 - 1.25rem) / 2);
  }
  .news {
    padding-bottom: 4rem;
  }
  .store-link {
    padding: 1rem;
  }
  .download-grid {
    width: 88%;
  }
}
@media (max-width: 600px) {
  :root {
    --gutter: 1.25rem;
    --heading: 2rem;
    --cut: 2rem;
  }
  body {
    font-size: 1rem;
  }
  .header-inner {
    min-height: 4.5rem;
    gap: 1rem;
  }
  .brand img {
    width: 5.734rem;
    height: 2rem;
  }
  .menu-toggle {
    display: flex;
    flex-direction: column;
    gap: 4px;
    justify-content: center;
    align-items: flex-end;
    width: 2.75rem;
    height: 2.75rem;
    padding: 0.6rem;
    border: 0;
    background: transparent;
    color: #fff;
  }
  .menu-toggle span {
    width: 1.5rem;
    height: 3px;
    background: currentColor;
    border-radius: 2px;
    transition: transform 0.2s;
  }
  .menu-toggle span:last-child {
    width: 1.1rem;
  }
  .menu-toggle[aria-expanded="true"] span:first-child {
    transform: translateY(7px) rotate(45deg);
  }
  .menu-toggle[aria-expanded="true"] span:nth-child(2) {
    opacity: 0;
  }
  .menu-toggle[aria-expanded="true"] span:last-child {
    width: 1.5rem;
    transform: translateY(-7px) rotate(-45deg);
  }
  .navigation {
    display: none;
    position: absolute;
    top: calc(100% - 1px);
    left: 0;
    right: 0;
    flex-direction: column;
    align-items: stretch;
    gap: 0.25rem;
    padding: 1rem 1.25rem 1.5rem;
    background: #1b66c9;
    box-shadow: 0 18px 25px #09264b26;
    font-size: 1rem;
  }
  .navigation.is-open {
    display: flex;
  }
  .navigation a {
    padding: 0.5rem 0.75rem;
  }
  .no-js .menu-toggle {
    display: none;
  }
  .no-js .navigation {
    position: static;
    display: flex;
    background: none;
    padding: 0;
    box-shadow: none;
    font-size: 0.8rem;
    flex-wrap: wrap;
    flex-direction: row;
    justify-content: flex-end;
    gap: 0;
  }
  .no-js .header-inner {
    align-items: flex-start;
    padding-block: 1rem;
  }
  .hero {
    min-height: 44.5rem;
  }
  .hero-copy {
    width: calc(100% - 2.5rem);
    margin: 1.5rem auto 18.5rem;
    gap: 1.5rem;
  }
  .hero h1 {
    font-size: 2.5rem;
    line-height: 0.9;
  }
  .hero-description {
    font-size: 0.875rem;
    line-height: 1.25;
    margin-top: 1rem;
    letter-spacing: -0.02em;
  }
  .online-pill {
    min-height: 1.875rem;
    gap: 0.4rem;
    font-size: 0.75rem;
    padding: 0.5rem 0.75rem 0.4rem 0.625rem;
  }
  .online-pill strong {
    font-size: 1.125rem;
  }
  .online-dot {
    width: 0.32rem;
    height: 0.32rem;
    box-shadow: 0 0 0 0.16rem #5bfd6326;
  }
  .button--hero {
    min-height: 3.75rem;
    padding: 0.75rem 2rem;
    font-size: 1.125rem;
  }
  .hero-person {
    height: 24.4rem;
    bottom: -5.4rem;
  }
  .hero-person--man {
    right: calc(50% - 1.1rem);
  }
  .hero-person--police {
    left: calc(50% - 0.1rem);
  }
  .hero-sign {
    width: 9rem;
    left: -6rem;
    top: 47%;
    transform: rotate(40deg);
  }
  .hero-bullet {
    width: 2.5rem;
    right: 9%;
    top: 54%;
    transform: rotate(-75deg);
  }
  .hero-stop {
    width: 10rem;
    right: -4.5rem;
    bottom: -3.5rem;
    transform: rotate(-20deg);
  }
  .hero::after {
    height: 2.25rem;
  }
  .features {
    padding: 1rem 0 3rem;
  }
  .features::before {
    width: 132%;
    left: -16%;
    height: 17.5rem;
    max-width: none;
    mask-size: 100% 100%;
  }
  .feature-carousel {
    overflow: clip;
  }
  .feature-visual {
    width: 115%;
    max-width: none;
    aspect-ratio: 974/645;
  }
  .phone-art {
    inset: 7.5% 5.5% 9.5%;
  }
  .feature-copy {
    max-width: 25rem;
    padding-inline: 1.25rem;
  }
  .feature-copy h2 {
    margin: 1rem 0 1rem;
    font-size: 1.75rem;
  }
  .feature-copy p {
    font-size: 0.875rem;
    max-width: 20.9375rem;
    line-height: 1.25;
  }
  .carousel-controls {
    gap: 0;
    margin-top: -0.65rem;
  }
  .carousel-dot {
    width: 1.6rem;
    height: 2rem;
  }
  .carousel-dot::before {
    width: 0.5rem;
    height: 0.5rem;
  }
  .features-bullet {
    width: 4.5rem;
    bottom: -2rem;
    left: 5%;
  }
  .servers {
    padding: calc(var(--cut) + 2.25rem) 0 calc(var(--cut) + 2rem);
  }
  .servers h2 {
    font-size: 1.75rem;
  }
  .section-heading p {
    font-size: 0.875rem;
    margin-top: 1rem;
    line-height: 1.25;
  }
  .server-grid {
    gap: 0.625rem;
    margin-top: 2rem;
  }
  .server-card {
    padding: 1.25rem 0.75rem 1.5rem;
    border-radius: 0.875rem;
  }
  .server-card h3 {
    font-size: 0.7rem;
    margin-bottom: 1rem;
  }
  .server-count {
    font-size: 2.65rem;
  }
  .server-load {
    gap: 0.2rem;
    margin-top: 0.75rem;
    font-size: 0.5625rem;
    white-space: nowrap;
  }
  .server-load img {
    width: 0.625rem;
    height: 0.625rem;
  }
  .download-section {
    padding: 3.25rem 0 1rem;
  }
  .download-section .section-heading {
    padding-inline: 1rem;
  }
  .download-section .section-heading p {
    font-size: 0.875rem;
    margin-bottom: 1rem;
  }
  .download-section h2 {
    font-size: 1.75rem;
  }
  .download-art {
    min-height: 17.5rem;
    margin-top: 0;
    width: 100%;
    overflow: visible;
  }
  .download-art::before {
    inset: 0 -16%;
    mask-size: contain;
  }
  .download-grid {
    width: calc(100% - 2.5rem);
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 0.5rem;
    margin: 1.5rem auto;
  }
  .store-link,
  .store-link:nth-child(3),
  .store-link:nth-child(4) {
    grid-column: auto;
    height: 5.5rem;
    padding: 0.75rem;
    border-radius: 1rem;
  }
  .store-link img {
    height: 3rem;
    width: 95%;
  }
  .download-sign {
    width: 8.5rem;
    right: -2rem;
    top: auto;
    bottom: -5rem;
    transform: rotate(-22deg);
  }
  .download-section {
    overflow-x: clip;
  }
  .news {
    padding: calc(var(--cut) + 3.25rem) 0 3rem;
  }
  .news h2 {
    font-size: 1.75rem;
    max-width: 19rem;
    margin-inline: auto;
  }
  .news-track {
    grid-auto-columns: minmax(0, 85vw);
    gap: 0.75rem;
    margin-top: 2rem;
  }
  .news-card {
    border-radius: 1.25rem;
  }
  .news-copy {
    padding: 1rem;
  }
  .news-copy h3 {
    font-size: 1rem;
  }
  .news-copy span {
    font-size: 0.75rem;
    margin-top: 0.625rem;
  }
  .site-footer {
    padding: 2.75rem 0;
  }
  .footer-grid {
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 2.25rem 1rem;
  }
  .footer-brand {
    gap: 1.25rem;
  }
  .footer-brand .brand img {
    width: 5.734rem;
    height: 2rem;
  }
  .company-info {
    font-size: 0.625rem;
  }
  .footer-column h2 {
    font-size: 0.875rem;
    margin-bottom: 1.5rem;
  }
  .footer-column ul {
    gap: 1.25rem;
  }
  .footer-column li,
  .footer-column > a {
    font-size: 0.625rem;
  }
  .footer-contacts {
    grid-column: 1/-1;
  }
  .social-links {
    margin-top: 1rem;
  }
  .social-links img {
    width: 2rem;
    height: 2rem;
  }
  .payments {
    gap: 1.5rem;
  }
  .payments img {
    height: 1.25rem;
  }
  .footer-column a {
    display: inline-block;
    min-height: 1.5rem;
  }
}
@media (max-width: 350px) {
  .hero h1 {
    font-size: 2.2rem;
  }
  .hero-description {
    font-size: 0.8125rem;
  }
  .hero-person {
    height: 23rem;
  }
  .server-count {
    font-size: 2.3rem;
  }
  .server-card {
    padding-inline: 0.6rem;
  }
  .server-load {
    font-size: 0.5rem;
  }
  .server-card h3 {
    font-size: 0.625rem;
  }
  .features .feature-copy h2 {
    font-size: 1.5rem;
  }
}
/* Shared motion for the landing, news and donation pages. */
.button,
a.store-link {
  position: relative;
  overflow: hidden;
  isolation: isolate;
}
.button:active,
a.store-link:active {
  transform: translateY(1px) scale(0.98);
}
.button-splash {
  position: absolute;
  width: var(--splash-size);
  height: var(--splash-size);
  left: var(--splash-x);
  top: var(--splash-y);
  margin: calc(var(--splash-size) / -2);
  border-radius: 50%;
  background: #fff9;
  pointer-events: none;
  animation: button-splash 0.65s ease-out forwards;
  z-index: -1;
}
.hero-sign,
.hero-bullet,
.hero-stop,
.features-bullet,
.download-sign {
  --float-distance: -6px;
  animation: ui-float 6s ease-in-out infinite;
}
.hero-bullet,
.features-bullet {
  animation-delay: -2s;
}
.hero-stop,
.download-sign {
  animation-delay: -3s;
}
@keyframes ui-float {
  50% {
    translate: 0 var(--float-distance, -10px);
  }
}
@keyframes button-splash {
  from {
    transform: scale(0);
    opacity: 1;
  }
  to {
    transform: scale(2);
    opacity: 0;
  }
}
@media (prefers-reduced-motion: reduce) {
  html {
    scroll-behavior: auto;
  }
  *,
  *::before,
  *::after {
    animation: none !important;
    transition: none !important;
    scroll-behavior: auto !important;
  }
}

/* Keep decorative overflow local; text and controls remain in document flow. */
.features {
  overflow-x: clip;
}
.button {
  color: var(--ink);
}
.download-section .section-heading p {
  margin-inline: auto;
}
.news-track {
  grid-auto-columns: calc((min(90rem, 100vw - var(--gutter) * 2) - 2.5rem) / 3);
}
.server-capacity {
  white-space: nowrap;
}
@media (max-width: 900px) {
  .news-track {
    grid-auto-columns: calc((100vw - var(--gutter) * 2 - 1.25rem) / 2);
  }
}
@media (max-width: 600px) {
  .news-track {
    grid-auto-columns: 85vw;
  }
  .server-count {
    font-size: 2.3rem;
  }
  .download-section .section-heading p {
    margin-inline: auto;
  }
}
@media (max-width: 350px) {
  .server-count {
    font-size: 2rem;
  }
}

@media (min-width: 901px) {
  .hero-copy {
    margin-bottom: 7.4rem;
  }
  .features {
    padding-top: 0;
    padding-bottom: 2rem;
  }
  .feature-visual {
    margin-top: -2.5rem;
  }
  .download-art {
    min-height: 29rem;
  }
}
@media (max-width: 600px) {
  .server-grid {
    grid-template-columns: repeat(
      auto-fit,
      minmax(min(100%, max(9rem, calc((100% - 0.625rem) / 2))), 1fr)
    );
  }
}

/* Masks stay in the phone coordinate system so artwork cannot escape the bezel. */
.phone-background-clip,
.phone-characters {
  position: absolute;
  inset: 0;
  mask-repeat: no-repeat;
}
.phone-background-clip {
  mask-image: url("data:image/svg+xml,%3Csvg%20preserveAspectRatio%3D%22none%22%20overflow%3D%22visible%22%20style%3D%22display%3A%20block%3B%22%20width%3D%22371.986%22%20height%3D%22805.767%22%20viewBox%3D%220%200%20371.986%20805.767%22%20fill%3D%22none%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%0A%3Cpath%20id%3D%22background%22%20d%3D%22M0%2030.5504C0%2013.6779%2013.6651%200%2030.5219%200H341.464C358.321%200%20371.986%2013.6779%20371.986%2030.5504V775.216C371.986%20792.089%20358.321%20805.767%20341.464%20805.767H30.5219C13.6651%20805.767%200%20792.089%200%20775.216V30.5504Z%22%20fill%3D%22%23E2E2E2%22%2F%3E%0A%3C%2Fsvg%3E%0A");
  mask-position: 2.421cqw 2.094cqw;
  mask-size: 42.931cqw 92.993cqw;
}
.phone-characters {
  mask-image: url("data:image/svg+xml,%3Csvg%20preserveAspectRatio%3D%22none%22%20overflow%3D%22visible%22%20style%3D%22display%3A%20block%3B%22%20width%3D%22472.535%22%20height%3D%22806.107%22%20viewBox%3D%220%200%20472.535%20806.107%22%20fill%3D%22none%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%0A%3Cpath%20id%3D%22background%22%20d%3D%22M0%2030.5504C0%2013.6779%2013.6651%200%2030.5219%200L442.013%200.340395C458.87%200.340395%20472.535%2014.0183%20472.535%2030.8908V775.557C472.535%20792.429%20458.87%20806.107%20442.013%20806.107L30.5219%20805.767C13.6651%20805.767%200%20792.089%200%20775.217V30.5504Z%22%20fill%3D%22%23E2E2E2%22%2F%3E%0A%3C%2Fsvg%3E%0A");
  mask-position: 2.421cqw 2.094cqw;
  mask-size: 54.535cqw 93.032cqw;
}
.phone-background-inner,
.phone-people-inner {
  mask: none;
}
.phone--events .phone-background {
  left: -9.603cqw;
  top: -15.026cqw;
  width: 64.819cqw;
  height: 114.268cqw;
}
.phone--events .phone-background-inner {
  width: 113.85cqw;
  height: 64.074cqw;
}
.phone--events .phone-people {
  left: -11.841cqw;
  top: -1.313cqw;
  width: 70.609cqw;
  height: 101.824cqw;
  transform: none;
}
.phone--events .phone-people-inner {
  width: 98.675cqw;
  height: 65.784cqw;
}
.phone--roles .phone-background {
  left: -10.604cqw;
  top: -5.742cqw;
  width: 61.005cqw;
  height: 107.545cqw;
}
.phone--roles .phone-background-inner {
  width: 107.152cqw;
  height: 60.305cqw;
}
.phone--roles .phone-people {
  left: calc(50% + 0.096cqw);
  top: 5.989cqw;
  width: 59.422cqw;
  height: 86.909cqw;
}
.phone--roles .phone-people-inner {
  width: 85.172cqw;
  height: 56.782cqw;
  transform: rotate(88.21deg);
}
.phone--friends .phone-background {
  left: -4.753cqw;
  top: -0.122cqw;
  width: 58.288cqw;
  height: 100.105cqw;
}
.phone--friends .phone-background-inner {
  width: 98.541cqw;
  height: 55.458cqw;
  transform: rotate(88.34deg);
}
.phone--friends .phone-people {
  left: -4.436cqw;
  top: 4.778cqw;
  width: 64.788cqw;
  height: 93.965cqw;
  transform: none;
}
.phone--friends .phone-people-inner {
  width: 91.473cqw;
  height: 60.982cqw;
  transform: rotate(92.42deg);
}

/* Promotion uses the exported artwork and the same metrics for X2 and X3. */
.promo {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 0.3125rem;
  height: 2.5rem;
  min-width: 4.125rem;
  padding: 0.375rem 0.75rem;
  flex-shrink: 0;
  background: linear-gradient(180deg, #fd5b5e, #eb326c);
  box-shadow: inset 0 -2px 2px #970328cc;
  font:
    700 1.125rem/0.9 Stapel,
    Arial,
    sans-serif;
}
.promo__value {
  text-box-trim: trim-both;
  text-box-edge: cap alphabetic;
}
.promo img {
  width: 1rem;
  height: 1.625rem;
  object-fit: contain;
}
.hero-bullet {
  left: calc(50% - 17rem);
  top: 10.5rem;
  width: 5rem;
  z-index: 4;
  transform: rotate(-46deg);
}
@media (min-width: 1600px) {
  .hero-bullet {
    left: calc(50% - 21rem);
  }
}
@media (min-width: 901px) and (max-width: 1200px) {
  .hero-bullet {
    left: calc(50% - 13.5rem);
    top: 8rem;
    width: 3.5rem;
  }
}
@media (max-width: 900px) {
  .hero-bullet {
    left: auto;
    right: 10%;
    top: 40%;
    width: 3.5rem;
  }
}
@media (max-width: 600px) {
  .hero-bullet {
    right: 9%;
    top: 54%;
    width: 2.5rem;
    transform: rotate(-75deg);
  }
}

/* Every slide participates in the same grid: its tallest row sets a stable height. */
.feature-copy {
  width: min(100%, 46rem);
}
.js .feature-slide > .feature-visual,
.js .feature-slide > .feature-copy {
  opacity: 0;
  visibility: hidden;
  pointer-events: none;
  transform: translate3d(24px, 0, 0);
  transition:
    opacity 0.45s ease,
    transform 0.55s cubic-bezier(0.2, 0.7, 0.2, 1),
    visibility 0s 0.55s;
}
.js .feature-slide.is-active > .feature-visual,
.js .feature-slide.is-active > .feature-copy {
  opacity: 1;
  visibility: visible;
  pointer-events: auto;
  transform: translate3d(0, 0, 0);
  transition-delay: 0s;
}
.js .feature-slide.is-active > .feature-visual {
  transform: translate3d(var(--drag-x, 0px), 0, 0);
}
.feature-carousel {
  touch-action: auto;
}
.feature-visual {
  touch-action: pan-y pinch-zoom;
}
.feature-visual {
  cursor: grab;
  user-select: none;
  -webkit-user-select: none;
}
.feature-visual img {
  -webkit-user-drag: none;
}
.feature-carousel.is-dragging {
  cursor: grabbing;
  user-select: none;
  -webkit-user-select: none;
}
.js .is-dragging .feature-slide.is-active > .feature-visual {
  transition: none;
  cursor: grabbing;
}
/* Native touch/trackpad scrolling with a hidden scrollbar and mouse dragging. */
.news-viewport {
  overflow-x: auto;
  overflow-y: hidden;
  scrollbar-width: none;
  overscroll-behavior-x: contain;
  margin-top: 3rem;
  touch-action: pan-x pan-y pinch-zoom;
  cursor: grab;
}
.news-track {
  display: flex;
  gap: 1.25rem;
  width: 100%;
  margin: 0;
  overflow: visible;
  scroll-snap-type: none;
  scrollbar-width: none;
}
.news-track .news-card {
  flex: 0 0 calc((min(90rem, 100vw - var(--gutter) * 2) - 2.5rem) / 3);
}
.news-viewport.is-dragging,
.news-viewport.is-dragging a {
  cursor: grabbing;
}
.news-viewport::-webkit-scrollbar {
  display: none;
}
.news-viewport,
.news-viewport img {
  user-select: none;
  -webkit-user-select: none;
  -webkit-user-drag: none;
}
.no-js .news-track {
  display: grid;
  grid-auto-flow: row;
  grid-template-columns: repeat(3, minmax(0, 1fr));
}
@media (max-width: 900px) {
  .news-track .news-card {
    flex-basis: calc((100vw - var(--gutter) * 2 - 1.25rem) / 2);
  }
}
@media (max-width: 600px) {
  .news-viewport {
    margin-top: 2rem;
  }
  .news-track {
    gap: 0.75rem;
  }
  .news-track .news-card {
    flex-basis: 85vw;
  }
  .no-js .news-track {
    grid-template-columns: 1fr;
  }
}
.reveal {
  opacity: 0;
  transform: translateY(18px);
  transition:
    opacity 0.65s ease,
    transform 0.65s cubic-bezier(0.2, 0.7, 0.2, 1);
}
.reveal.is-revealed {
  opacity: 1;
  transform: translateY(0);
}
@media (prefers-reduced-motion: reduce) {
  .reveal {
    opacity: 1;
    transform: none;
  }
  .feature-slide > *,
  .news-track {
    transition: none !important;
  }
}

/* Keep the artwork box reserved while deferring inactive slide images. */
.js .feature-slide:not(.is-active) .feature-visual { content-visibility: hidden; }

/* Preview and full artwork share their existing sizing and crop. */
img[data-image-preview] { pointer-events: none; filter: blur(5px); }
.no-js img[data-image-preview] { display: none; }
.js img[data-progressive], .js img[data-image-preview] { transition: opacity 280ms ease; }
.js img[data-progressive] { opacity: 0; }
.js img[data-progressive].image-ready { opacity: 1; }
.js img[data-image-preview].image-ready { opacity: 0; }
.phone-background-inner, .phone-people-inner { position: relative; }
.hero-person--police img[data-image-preview],
.phone-background-inner img[data-image-preview],
.phone-people-inner img[data-image-preview] { position: absolute; inset: 0; }
@media (prefers-reduced-motion: reduce) {
  .js img[data-progressive], .js img[data-image-preview] { transition: none; }
}

/* Reserve the news artwork before it downloads, including lazily appended cards. */
.news-media {
  position: relative;
  display: block;
  width: 100%;
  aspect-ratio: 16 / 9;
  overflow: hidden;
  background: #e8eff6;
}
.news-media > img {
  display: block;
  width: 100%;
  height: 100%;
  object-fit: cover;
  transition: opacity 280ms ease, transform 300ms ease;
}
.news-media.article-inline-image > img { object-fit: contain; }
.js .news-media:not(.is-loaded) > img { opacity: 0; }
.news-media-loader { display: none; }
.js .news-media:not(.is-loaded):not(.has-error) .news-media-loader {
  display: block;
  position: absolute;
  left: calc(50% - 14px);
  top: calc(50% - 14px);
  width: 28px;
  height: 28px;
  border: 3px solid #c8d9ec;
  border-top-color: var(--blue);
  border-radius: 50%;
  animation: news-image-spin 800ms linear infinite;
}
.news-media-error:not([hidden]) {
  position: absolute;
  inset: 0;
  display: grid;
  place-items: center;
  padding: 1rem;
  font-size: 1rem;
  text-align: center;
  color: #52677c;
}
@keyframes news-image-spin { to { transform: rotate(360deg); } }
@media (prefers-reduced-motion: reduce) {
  .news-media > img { transition: none; }
  .js .news-media .news-media-loader { animation: none !important; }
}
