:root {
  --ink: #14202b;
  --muted: #5b6978;
  --paper: #f4f6f8;
  --line: #d9e1e8;
  --blue: #1d4e89;
  --red: #d62839;
  --tracking-brand: -0em;
  --tracking-display: -0.06em;
  --tracking-heading: -0.05em;
  --tracking-subheading: -0.05em;
  --tracking-title: -0.04em;
  --tracking-copy: -0.02em;
  --tracking-label: 0.14em;
  --tracking-mono: 0.1em;
}

* {
  box-sizing: border-box;
}
html {
  scroll-behavior: smooth;
}
body {
  margin: 0;
  background: var(--paper);
  color: var(--ink);
  font:
    16px/1.5 Arial,
    Helvetica,
    sans-serif;
  -webkit-font-smoothing: antialiased;
}
a {
  color: inherit;
}
h1,
h2,
h3,
p {
  margin-top: 0;
}

.site-header {
  position: sticky;
  top: 0;
  z-index: 10;
  display: flex;
  align-items: center;
  justify-content: space-between;
  height: 72px;
  padding: 0 max(28px, calc((100vw - 1280px) / 2));
  background: rgb(244 246 248 / 0.92);
  border-bottom: 1px solid transparent;
  transition: 0.25s ease;

  &.is-scrolled {
    border-color: var(--line);
    box-shadow: 0 6px 18px rgb(20 32 43 / 0.05);
  }
}

.brand {
  display: inline-flex;
  align-items: center;
  gap: 10px;
  font-weight: 700;
  letter-spacing: var(--tracking-brand);
  text-decoration: none;

  & .brand-mark {
    display: grid;
    place-items: center;
    width: 32px;
    height: 32px;
    overflow: hidden;
    background: #fff;
    border: 1px solid var(--line);
    border-radius: 9px;

    & img {
      display: block;
      width: 100%;
      height: 100%;
      object-fit: contain;
    }
  }
}

nav {
  display: flex;
  gap: 30px;
  color: var(--muted);
  font-size: 14px;

  & a {
    text-decoration: none;
  }
  & a:hover {
    color: var(--ink);
  }
}

.button {
  display: inline-flex;
  align-items: center;
  gap: 15px;
  padding: 15px 19px;
  background: var(--red);
  color: #fff;
  border-radius: 3px;
  box-shadow: 4px 4px 0 var(--ink);
  font-weight: 700;
  text-decoration: none;
  transition:
    transform 0.2s,
    box-shadow 0.2s;

  &:hover {
    transform: translate(2px, 2px);
    box-shadow: 2px 2px 0 var(--ink);
  }
  &.button-small {
    padding: 10px 14px;
    box-shadow: 3px 3px 0 var(--ink);
    font-size: 14px;
  }
  & .button__arrow {
    font-family: Arial, Helvetica, sans-serif;
  }
}

.text-link {
  color: var(--blue);
  font-weight: 700;
  text-decoration: none;
}
.section-index,
.hero__eyebrow {
  color: var(--blue);
  font-size: 11px;
  font-weight: 700;
  letter-spacing: var(--tracking-label);
  text-transform: uppercase;
}

.hero {
  position: relative;
  isolation: isolate;
  display: grid;
  grid-template-columns: minmax(0, 1.05fr) minmax(420px, 0.95fr);
  align-items: center;
  gap: 54px;
  min-height: calc(100dvh - 72px);
  max-width: none;
  margin: auto;
  padding: 76px max(28px, calc((100vw - 1224px) / 2)) 56px;
  overflow: hidden;
  background: #123f73;
  color: #fff;

  & > :not(.hero__background) {
    position: relative;
    z-index: 1;
  }

  & .hero__background {
    position: absolute;
    inset: 0;
    z-index: 0;
    overflow: hidden;
    pointer-events: none;
  }

  & .hero__globe {
    position: absolute;
    top: 50%;
    left: 50%;
    width: auto;
    height: 100%;
    aspect-ratio: 1;
    opacity: 0.98;
    transform: translate(-50%, -50%);
  }

  & .hero__content {
    padding: 32px 0;
    text-shadow: 0 5px 10px rgb(4 22 43 / 0.8);
  }
  & .hero__eyebrow {
    display: flex;
    align-items: center;
    gap: 9px;
    margin: 0 0 24px;
    color: #d9ecff;
  }
  & .hero__eyebrow-marker {
    width: 8px;
    height: 8px;
    border-radius: 50%;
    background: #ff6b78;
    box-shadow: 0 0 16px rgb(255 107 120 / 0.7);
  }
  & h1 {
    max-width: 660px;
    margin-bottom: 25px;
    color: #fff;
    font-size: clamp(58px, 7vw, 106px);
    font-weight: 800;
    letter-spacing: var(--tracking-display);
    line-height: 0.91;
  }
  & h1 em {
    color: #d9ecff;
    font-style: normal;
  }
  & .hero__lead {
    max-width: 520px;
    color: #e5eff9;
    font-size: 20px;
    line-height: 1.45;
  }
  & .hero__actions {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 28px;
    margin-top: 36px;
  }
  & .hero__actions .button {
    text-shadow: none;
  }
  & .hero__note {
    max-width: 390px;
    margin: 42px 0 0;
    color: #e5eff9;
    font-size: 13px;
  }
  & .hero__disclaimer {
    max-width: 390px;
    margin: 12px 0 0;
    color: #c6d8e9;
    font-size: 12px;
    line-height: 1.45;
  }
  & .text-link {
    color: #fff;
    text-decoration: underline;
    text-decoration-color: rgb(255 255 255 / 0.45);
    text-underline-offset: 5px;
  }
  & .button {
    box-shadow: 4px 4px 0 #061c35;
  }

  & .hero__device {
    position: relative;
    min-height: 625px;
    overflow: visible;
  }
  & .hero__device-frame {
    position: absolute;
    top: 48px;
    left: 50%;
    z-index: 2;
    width: 267px;
    height: 574px;
    padding: 9px;
    overflow: hidden;
    background: #0b1118;
    border-radius: 41px;
    box-shadow:
      22px 24px 0 rgb(2 13 26 / 0.35),
      0 20px 50px rgb(0 0 0 / 0.45);
    transform: translateX(-50%) rotate(5deg);

    & img {
      display: block;
      width: 100%;
      height: 100%;
      border-radius: 33px;
      object-fit: cover;
      object-position: center top;
    }
  }
}

.departure-strip {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 35px;
  padding: 18px max(28px, calc((100vw - 1224px) / 2));
  background: var(--ink);
  color: #fff;

  & p {
    margin: 0;
    font-weight: 700;
    letter-spacing: var(--tracking-copy);
  }
  & ul {
    display: flex;
    gap: 22px;
    margin: 0;
    padding: 0;
    color: #cdd8e2;
    font-size: 14px;
    list-style: none;
  }
  & li::before {
    content: '/';
    margin-right: 8px;
    color: var(--red);
  }
}

.launch-section,
.moment-section,
.coverage-section,
.download-section {
  max-width: 1280px;
  margin: auto;
  padding: 130px 28px;
}
.section-index {
  margin: 0 0 20px;
}
h2 {
  font-size: clamp(40px, 5vw, 68px);
  letter-spacing: var(--tracking-heading);
  line-height: 0.99;
}

.launch-section {
  display: grid;
  grid-template-columns: 0.87fr 1.13fr;
  gap: 72px;

  & .launch-story {
    align-self: end;
    max-width: 590px;
    color: var(--muted);
    font-size: 19px;
  }
  & .launch-story p + p {
    margin-top: 20px;
  }
}

.route-board {
  display: grid;
  grid-column: 1 / -1;
  grid-template-columns: 1fr 1.7fr;
  gap: 28px;
  margin-top: 26px;
  padding: 32px 0;
  border-top: 1px solid var(--ink);
  border-bottom: 1px solid var(--ink);

  & .board-label {
    display: block;
    margin-bottom: 12px;
    color: var(--blue);
    font-size: 10px;
    font-weight: 700;
    letter-spacing: var(--tracking-label);
  }
  & .board-origin strong {
    display: block;
    font-size: 31px;
    letter-spacing: var(--tracking-subheading);
    line-height: 0.98;
  }
  & .board-origin small {
    display: block;
    max-width: 190px;
    margin-top: 16px;
    color: var(--muted);
    font-size: 13px;
  }
  & .board-destinations {
    margin-top: 8px;
  }
  & .destination-list {
    display: flex;
    flex-wrap: wrap;
    gap: 8px;
  }
  & .destination-list span {
    padding: 8px 10px;
    background: #fff;
    border: 1px solid var(--line);
    font-size: 14px;
  }
}

.moment-section {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 72px;
  max-width: none;
  padding-right: max(28px, calc((100vw - 1224px) / 2));
  padding-left: max(28px, calc((100vw - 1224px) / 2));
  background: #e9eef3;
}

.preflight-list {
  margin: 0;
  padding: 0;
  border-top: 1px solid #afbdc9;
  list-style: none;

  & li {
    display: grid;
    grid-template-columns: 68px 1fr;
    gap: 18px;
    padding: 28px 0;
    border-bottom: 1px solid #afbdc9;
  }
  & li > span {
    color: var(--red);
    font:
      700 12px 'Courier New',
      monospace;
  }
  & h3 {
    margin-bottom: 6px;
    font-size: 23px;
    letter-spacing: var(--tracking-title);
  }
  & p {
    margin: 0;
    color: var(--muted);
  }
}

.coverage-section {
  display: grid;
  grid-template-columns: 1.1fr 0.9fr;
  align-items: center;
  gap: 112px;

  & .coverage-content > p:last-child {
    max-width: 500px;
    color: var(--muted);
    font-size: 18px;
  }
}

.service-card {
  padding: 33px;
  background: #fff;
  border: 1px solid var(--line);
  box-shadow: 10px 10px 0 var(--blue);

  & .service-status {
    color: var(--blue);
    font-size: 12px;
    font-weight: 700;
  }
  & .service-status i {
    display: inline-block;
    width: 8px;
    height: 8px;
    margin-right: 7px;
    background: #2a9d8f;
    border-radius: 50%;
  }
  & .service-rule {
    height: 1px;
    margin: 31px 0 22px;
    background: var(--line);
  }
  & .service-type {
    margin-bottom: 3px;
    color: var(--muted);
    font:
      11px 'Courier New',
      monospace;
    letter-spacing: var(--tracking-mono);
  }
  & strong {
    color: var(--red);
    font-size: 94px;
    letter-spacing: var(--tracking-display);
    line-height: 1;
  }
  & .service-caption {
    max-width: 330px;
    margin: 27px 0 0;
    color: var(--muted);
    font-size: 14px;
  }
}

.download-section {
  display: grid;
  grid-template-areas:
    'heading status'
    'copy badges';
  grid-template-columns: 1.1fr 0.9fr;
  gap: 10px 60px;
  max-width: none;
  padding-top: 95px;
  padding-right: max(28px, calc((100vw - 1224px) / 2));
  padding-bottom: 95px;
  padding-left: max(28px, calc((100vw - 1224px) / 2));
  background: var(--blue);
  color: #fff;

  & .section-index {
    color: #b7d5f3;
  }
  & .download-heading {
    grid-area: heading;
  }
  & h2 {
    max-width: 690px;
  }
  & .download-copy {
    grid-area: copy;
    max-width: 620px;
    margin: 0;
    color: #d4e0eb;
    font-size: 18px;
  }
  & .download-badges {
    grid-area: badges;
    display: flex;
    flex-wrap: wrap;
    gap: 12px;
  }
  & .store-badge {
    display: block;
    height: 48px;
  }
  & .store-badge img {
    display: block;
    height: 48px;
  }
  & .store-badge[aria-disabled='true'] {
    cursor: not-allowed;
    filter: grayscale(1);
    opacity: 0.45;
  }
  & .download-coming-soon {
    grid-area: status;
    align-self: end;
    justify-self: start;
    margin: 0;
    color: #fff;
    font-weight: 700;
    letter-spacing: var(--tracking-label);
    text-transform: uppercase;
  }
  & .download-note {
    display: block;
    width: 100%;
    margin-top: 14px;
    color: #d4e0eb;
  }
}

footer {
  display: grid;
  grid-template-columns: 1fr 1fr 1fr;
  align-items: center;
  gap: 24px;
  max-width: 1280px;
  margin: auto;
  padding: 34px 28px;
  color: var(--muted);
  font-size: 13px;

  & p {
    margin: 0;
  }
  & div {
    display: flex;
    justify-content: flex-end;
    gap: 18px;
  }
  & a {
    text-decoration: none;
  }
  & a:hover {
    color: var(--blue);
  }
}

.legal-dialog {
  width: min(760px, calc(100vw - 32px));
  max-height: min(760px, calc(100dvh - 32px));
  margin: auto;
  padding: 0;
  overflow: hidden;
  color: var(--ink);
  background: var(--paper);
  border: 1px solid var(--line);
  box-shadow: 16px 16px 0 rgb(6 28 53 / 0.34);

  &::backdrop {
    background: rgb(6 28 53 / 0.76);
    backdrop-filter: blur(5px);
  }
  & .legal-dialog__shell {
    display: grid;
    grid-template-rows: auto minmax(0, 1fr);
    max-height: inherit;
  }
  & .legal-dialog__header {
    display: flex;
    align-items: flex-start;
    justify-content: space-between;
    gap: 24px;
    padding: 30px 32px 24px;
    background: #fff;
    border-bottom: 1px solid var(--line);
  }
  & .legal-dialog__eyebrow {
    margin: 0 0 7px;
    color: var(--blue);
    font-size: 10px;
    font-weight: 700;
    letter-spacing: var(--tracking-label);
    text-transform: uppercase;
  }
  & h2 {
    margin: 0;
    font-size: clamp(30px, 5vw, 48px);
  }
  & .legal-dialog__meta {
    margin: 12px 0 0;
    color: var(--muted);
    font-size: 13px;
  }
  & .legal-dialog__close {
    display: grid;
    flex: 0 0 auto;
    place-items: center;
    width: 36px;
    height: 36px;
    padding: 0 0 4px;
    color: var(--ink);
    background: transparent;
    border: 1px solid var(--line);
    border-radius: 50%;
    cursor: pointer;
    font:
      400 29px Arial,
      sans-serif;
  }
  & .legal-dialog__close:hover {
    color: #fff;
    background: var(--ink);
    border-color: var(--ink);
  }
  & .legal-dialog__body {
    min-height: 0;
    padding: 31px 32px 42px;
    overflow-y: auto;
    background: var(--paper);
  }
  & .legal-dialog__body > :first-child {
    margin-top: 0;
  }
  & .legal-dialog__body > :last-child {
    margin-bottom: 0;
  }
  & .legal-dialog__body h2,
  & .legal-dialog__body h3,
  & .legal-dialog__body h4 {
    margin: 36px 0 12px;
    font-size: 23px;
    letter-spacing: var(--tracking-title);
    line-height: 1.1;
  }
  & .legal-dialog__body h3 {
    font-size: 19px;
  }
  & .legal-dialog__body h4 {
    font-size: 16px;
  }
  & .legal-dialog__body p,
  & .legal-dialog__body li {
    color: #334454;
    line-height: 1.65;
  }
  & .legal-dialog__body p {
    margin: 0 0 18px;
  }
  & .legal-dialog__body ul,
  & .legal-dialog__body ol {
    display: grid;
    gap: 8px;
    margin: 0 0 18px;
    padding-left: 23px;
  }
  & .legal-dialog__body strong {
    color: var(--ink);
  }
  & .legal-dialog__status {
    margin: 0;
    color: var(--muted);
  }
}

@media (max-width: 800px) {
  .site-header {
    height: 64px;
    padding: 0 20px;
  }
  nav {
    display: none;
  }
  h1 {
    font-size: clamp(52px, 16vw, 75px);
  }

  .hero {
    grid-template-columns: 1fr;
    gap: 40px;
    min-height: auto;
    padding: 54px 20px 36px;

    & .hero__content {
      padding: 0;
    }
    & .hero__lead {
      font-size: 18px;
    }
    & .hero__device {
      min-height: 500px;
    }
    & .hero__device-frame {
      top: 36px;
      width: 228px;
      height: 492px;
    }
    & .hero__globe {
      top: 30%;
      left: 50%;
      width: auto;
      height: 100%;
      opacity: 0.62;
    }
  }

  .departure-strip {
    display: block;
    padding: 22px 20px;
    & ul {
      flex-wrap: wrap;
      gap: 8px 16px;
      margin-top: 14px;
      font-size: 12px;
    }
  }

  .launch-section,
  .moment-section,
  .coverage-section,
  .download-section {
    grid-template-columns: 1fr;
    gap: 38px;
    padding: 82px 20px;
  }
  .download-section {
    grid-template-areas:
      'heading'
      'status'
      'copy'
      'badges';
  }
  .route-board {
    grid-template-columns: 1fr;
    gap: 20px;
    & .board-destinations {
      margin-top: 4px;
    }
  }
  .service-card strong {
    font-size: 78px;
  }
  footer {
    grid-template-columns: 1fr;
    padding: 30px 20px;
    & div {
      justify-content: flex-start;
    }
  }
  .legal-dialog {
    & .legal-dialog__header {
      padding: 24px 20px 20px;
    }
    & .legal-dialog__body {
      padding: 25px 20px 32px;
    }
  }
}

@media (prefers-reduced-motion: reduce) {
  html {
    scroll-behavior: auto;
  }
  * {
    transition: none !important;
  }
}
