.data-stream-contact{height:858px;background:#fff;padding:72px 0}.data-stream-contact__layout{display:grid;grid-template-columns:630px 630px;gap:20px}.data-stream-contact h2,.data-stream-contact h3,.data-stream-contact p{margin:0}.data-stream-contact__left header h2{font-family:var(--airnav-font-display);font-size:64px;font-weight:400;line-height:1.1;letter-spacing:-1.28px}.data-stream-contact__left header h2 em{color:#007944;font-style:normal}.data-stream-contact__left header>img{display:block;margin-top:32px}.data-stream-contact__left header>p{margin-top:31px;font:400 18px/25px var(--airnav-font-body)}.data-stream-contact__benefits{display:grid;grid-template-columns:repeat(2,305px);gap:34px 20px;margin-top:64px}.data-stream-contact__benefits article{min-height:212px;padding-left:24px;border-left:1px solid #d6e1dc}.data-stream-contact__benefits img{width:52px;height:52px}.data-stream-contact__benefits h3{margin-top:24px;color:var(--airnav-color-forest);font:400 26px/1.1 var(--airnav-font-display)}.data-stream-contact__benefits p{margin-top:12px;color:rgba(17,32,27,.7);font:400 18px/25px var(--airnav-font-body)}.data-stream-contact__form{display:flex;flex-direction:column;gap:24px;width:630px;padding:32px;background:#f3f6f6;border-radius:16px}.data-stream-contact__form h2{color:#007944;text-align:center;font:400 44px/1.1 var(--airnav-font-display);letter-spacing:-.88px}.data-stream-contact__form input:not([type=hidden]),.data-stream-contact__form textarea{box-sizing:border-box;width:100%;padding:18px 20px;background:transparent;border:1px solid rgba(17,32,27,.3);border-radius:8px;color:var(--airnav-color-forest);font:400 16px/22px var(--airnav-font-body)}.data-stream-contact__form input:not([type=hidden]){height:60px}.data-stream-contact__form textarea{height:188px;resize:vertical}.data-stream-contact__form input:focus,.data-stream-contact__form textarea:focus{outline:2px solid #007944;outline-offset:2px}.data-stream-contact__form button,.data-stream-contact__brochure{display:flex;gap:16px;align-items:center;justify-content:center;height:60px;border-radius:8px;font:700 18px/normal var(--airnav-font-body)}.data-stream-contact__form button{border:0;color:#fff;background:#007944}.data-stream-contact__brochure{box-sizing:border-box;border:1px solid #007944;color:#007944}.data-stream-contact__privacy{color:rgba(17,32,27,.7);text-align:center;font:italic 400 16px/24px var(--airnav-font-body)}.data-stream-contact__honeypot{position:absolute!important;left:-9999px}.screen-reader-text{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(1px,1px,1px,1px)}
@media(max-width:1439px){.data-stream-contact{height:auto}.data-stream-contact__layout{grid-template-columns:1fr}.data-stream-contact__form{width:auto}.data-stream-contact__benefits{margin-bottom:48px}}@media(max-width:700px){.data-stream-contact__layout{grid-template-columns:minmax(0,1fr)}.data-stream-contact__form{box-sizing:border-box;width:100%;max-width:100%;min-width:0}.data-stream-contact__form h2{font-size:32px;letter-spacing:-.64px}.data-stream-contact__benefits{grid-template-columns:repeat(2,minmax(0,1fr));gap:40px 20px;margin:40px 0 16px}.data-stream-contact__benefits article{min-height:0;padding-left:16px}.data-stream-contact__benefits img{width:32px;height:32px}.data-stream-contact__benefits h3{margin-top:12px;font-size:20px}.data-stream-contact__benefits p{margin-top:4px;font:400 14px/normal var(--airnav-font-body)}.data-stream-contact__benefits p br{display:none}.data-stream-contact__left header h2{font-size:40px;letter-spacing:-.8px}}

/* Data Stream API hero: its overlapping desktop composition is unique to this page. */
.data-stream-hero {
  position: relative;
  height: 619px;
  margin-top: -1px;
  overflow: hidden;
  background: var(--airnav-color-surface);
}

.data-stream-hero::after {
  position: absolute;
  z-index: 1;
  top: 0;
  left: 0;
  width: clamp(231px, calc(30.55vw - 7px), 373px);
  height: 619px;
  content: "";
  pointer-events: none;
  background: linear-gradient(
    to left,
    rgb(244 244 244 / 0) 0%,
    #f4f4f4 60.598%
  );
}

@media (min-width: 1441px) {
  .data-stream-hero::after {
    width: calc(373px + ((100vw - 1440px) / 2));
  }
}

.data-stream-hero__background,
.data-stream-hero__overlay {
  position: absolute;
  inset: 0;
  pointer-events: none;
}

.data-stream-hero__background {
  z-index: 0;
  overflow: hidden;
}

.data-stream-hero__background img {
  position: absolute;
  top: -55.41%;
  left: -17.57%;
  width: 118.72%;
  max-width: none;
  height: 155.44%;
  object-fit: cover;
}

.data-stream-hero__overlay {
  z-index: 1;
  top: 0;
  left: calc(max(var(--airnav-gutter), calc((100vw - var(--airnav-content-max)) / 2)) + min(284.5px, calc((100vw - (2 * var(--airnav-gutter))) / 2)));
  width: clamp(757px, calc(100vw - 23px), 1221px);
  height: auto;
  aspect-ratio: 1221 / 753;
  background: url("../images/data-stream-api/hero/hero-overlay-ellipse.svg") center / 100% 100% no-repeat;
  transform: translate(-50%, -22.5764%);
}

@media (min-width: 1101px) {
  .data-stream-hero__background {
    inset: 0 0 auto;
    height: 409px;
  }

  .data-stream-hero__background img {
    top: -142px;
    bottom: auto;
    left: 0;
    width: 100%;
    height: 551px;
    object-fit: cover;
    object-position: center top;
  }

}

/* Wider than 1440: keep the photo centred on the content (as on Custom Solutions) and fade its right edge into the page,
   thinly: the control tower is 110px from the photo's edge. */
@media (min-width: 1441px) {
  .data-stream-hero__background {
    right: auto;
    left: calc(50% - 720px);
    width: 1440px;
    -webkit-mask-image: linear-gradient(to left, transparent 0, #000 min(96px, calc((100vw - 1440px) * 0.4)));
    mask-image: linear-gradient(to left, transparent 0, #000 min(96px, calc((100vw - 1440px) * 0.4)));
  }
}

.data-stream-hero__container {
  position: relative;
  z-index: 2;
  height: 100%;
}

.data-stream-hero__copy {
  position: absolute;
  top: 69px;
  left: 0;
  width: 569px;
}

.data-stream-hero__eyebrow,
.data-stream-hero__title,
.data-stream-hero__body,
.data-stream-hero__stat strong,
.data-stream-hero__stat span,
.data-stream-hero__uptime-summary p,
.data-stream-hero__uptime-summary strong,
.data-stream-hero__uptime-summary span {
  padding: 0;
  margin: 0;
}

.data-stream-hero__eyebrow {
  color: var(--airnav-color-green);
  font-family: var(--airnav-font-body);
  font-size: 20px;
  font-weight: 700;
  line-height: 27px;
  text-transform: uppercase;
}

.data-stream-hero__title {
  margin-top: 20px;
  color: var(--airnav-color-forest);
  font-family: var(--airnav-font-display);
  font-size: 80px;
  font-weight: 400;
  line-height: 88px;
  letter-spacing: -1.6px;
  white-space: nowrap;
}

.data-stream-hero__body {
  width: 451px;
  margin-top: 12px;
  color: rgba(17, 32, 27, 0.7);
  font-family: var(--airnav-font-body);
  font-size: 20px;
  font-weight: 400;
  line-height: 27px;
}

.data-stream-hero__cta {
  width: 177px;
  margin-top: 44px;
}

.data-stream-hero__uptime {
  position: absolute;
  z-index: 2;
  top: 315px;
  left: 586px;
  width: 774px;
  height: 304px;
  overflow: hidden;
  color: var(--airnav-color-canvas);
  background: var(--airnav-color-forest);
  border-radius: var(--airnav-radius-card) var(--airnav-radius-card) var(--airnav-radius-card) 0;
}

.data-stream-hero__uptime-glow {
  position: absolute;
  width: 400px;
  max-width: none;
  height: 400px;
}

.data-stream-hero__uptime-glow--top {
  top: -200px;
  left: -200px;
}

.data-stream-hero__uptime-glow--bottom {
  right: -200px;
  bottom: -200px;
}

.data-stream-hero__uptime-benefits {
  position: absolute;
  top: 64px;
  left: 64px;
  display: grid;
  gap: 40px;
}

.data-stream-hero__uptime-benefit {
  display: flex;
  align-items: center;
  gap: 12px;
  min-height: 32px;
  color: var(--airnav-color-canvas);
  font-family: var(--airnav-font-body);
  font-size: 18px;
  font-weight: 700;
  line-height: 25px;
  white-space: nowrap;
}

.data-stream-hero__uptime-benefit img {
  width: 32px;
  height: 32px;
  flex: 0 0 32px;
}

.data-stream-hero__uptime-divider {
  position: absolute;
  top: 64px;
  left: 374px;
  width: 1px;
  height: 176px;
}

.data-stream-hero__uptime-summary {
  position: absolute;
  top: 64px;
  left: 414px;
}

.data-stream-hero__uptime-summary p {
  width: 280px;
  color: rgba(255, 255, 255, 0.7);
  font-family: var(--airnav-font-body);
  font-size: 16px;
  font-weight: 400;
  line-height: 22px;
}

.data-stream-hero__uptime-summary strong {
  display: block;
  margin-top: 24px;
  color: var(--airnav-color-canvas);
  font-family: var(--airnav-font-display);
  font-size: 72px;
  font-weight: 100;
  line-height: 79px;
  letter-spacing: -1.44px;
}

.data-stream-hero__uptime-summary span {
  display: block;
  margin-top: 4px;
  color: var(--airnav-color-teal);
  font-family: var(--airnav-font-body);
  font-size: 18px;
  font-weight: 700;
  line-height: 25px;
}

.data-stream-hero__uptime-shield {
  position: absolute;
  top: 103px;
  left: 619px;
  width: 131px;
  height: 131px;
}

.data-stream-hero__statistics {
  position: absolute;
  z-index: 1;
  top: 409px;
  left: 0;
  display: flex;
  gap: 40px;
  width: 630px;
  height: 210px;
  padding: 32px 48px;
  background: var(--airnav-color-canvas);
  border-radius: var(--airnav-radius-card) 0 0 0;
}

.data-stream-hero__stat {
  display: flex;
  flex: 0 0 110px;
  flex-direction: column;
  gap: 24px;
  align-items: flex-start;
}

.data-stream-hero__stat > img {
  width: 40px;
  height: 40px;
}

.data-stream-hero__stat strong {
  color: var(--airnav-color-forest);
  font-family: var(--airnav-font-display);
  font-size: 26px;
  font-weight: 400;
  line-height: 29px;
}

.data-stream-hero__stat span {
  margin-top: -12px;
  color: rgba(17, 32, 27, 0.7);
  font-family: var(--airnav-font-body);
  font-size: 18px;
  font-weight: 400;
  line-height: 25px;
}

.data-stream-hero__stat-divider {
  width: 1px;
  height: 146px;
}

@media (min-width: 1101px) {
  .data-stream-hero__uptime-glow {
    width: 1400px;
    height: 1400px;
  }

  .data-stream-hero__uptime-glow--top {
    top: -700px;
    left: -700px;
  }

  .data-stream-hero__uptime-glow--bottom {
    right: -700px;
    bottom: -700px;
  }
}

.data-stream-realtime {
  height: 680px;
  overflow: hidden;
  background: var(--airnav-color-surface);
}

.data-stream-realtime__container {
  position: relative;
  height: 100%;
  padding-top: 120px;
}

.data-stream-realtime__content {
  width: 630px;
}

.data-stream-realtime__title,
.data-stream-realtime__body,
.data-stream-realtime__body p {
  padding: 0;
  margin: 0;
}

.data-stream-realtime__title {
  width: 522px;
  color: var(--airnav-color-forest);
  font-family: var(--airnav-font-display);
  font-size: 64px;
  font-weight: 400;
  line-height: 1.1;
  letter-spacing: -1.28px;
}

.data-stream-realtime__title span {
  display: block;
}

.data-stream-realtime__title span:last-child {
  color: var(--airnav-color-green);
}

.data-stream-realtime__body {
  width: 630px;
  margin-top: 39.21875px;
  color: rgba(17, 32, 27, 0.7);
  font-family: var(--airnav-font-body);
  font-size: 16px;
  font-weight: 400;
  line-height: normal;
}

.data-stream-realtime__body p + p {
  margin-top: 22px;
}

.data-stream-realtime__visual {
  position: absolute;
  top: 54px;
  left: 701px;
  width: 572px;
  height: 572px;
  padding: 0;
  margin: 0;
}

.data-stream-realtime__visual img,
.data-stream-realtime__visual-mask {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
}

.data-stream-realtime__visual img {
  max-width: none;
  object-fit: fill;
  object-position: bottom;
}

.data-stream-realtime__visual-mask {
  pointer-events: none;
  background: url("../images/data-stream-api/real-time-data/globe-edge-mask.svg") center / 100% 100% no-repeat;
  mix-blend-mode: darken;
}

.data-stream-feeds {
  padding: 140px 0;
  background: var(--airnav-color-canvas);
}

/*
 * The title, then its text and rule, in one 70px row as the design draws them
 * (title 341px, text 262px, rule 597px). A longer title takes the room it
 * needs and the rule shortens; when the text and an 80px rule no longer fit
 * beside it, they move together below the title, and the row grows.
 */
.data-stream-feeds__header {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  column-gap: 40px;
  row-gap: 24px;
  min-height: 70px;
}

.data-stream-feeds__aside {
  display: flex;
  flex: 1 1 0;
  align-items: center;
  column-gap: 40px;
}

.data-stream-feeds__header h2,
.data-stream-feeds__header p,
.data-stream-feed-card h3,
.data-stream-feed-card p,
.data-stream-feeds__compare h3,
.data-stream-feeds__compare p,
.data-stream-feed-card__metadata {
  padding: 0;
  margin: 0;
}

.data-stream-feeds__header h2 {
  flex: 0 1 auto;
  min-width: 341px;
  color: var(--airnav-color-forest);
  font-family: var(--airnav-font-display);
  font-size: 64px;
  font-weight: 400;
  line-height: 1.1;
  letter-spacing: -1.28px;
}

.data-stream-feeds__header p {
  flex: 0 1 262px;
  color: rgba(17, 32, 27, 0.7);
  font-family: var(--airnav-font-body);
  font-size: 18px;
  font-weight: 400;
  line-height: 25px;
  white-space: nowrap;
}

.data-stream-feeds__aside > img {
  flex: 1 1 0;
  min-width: 80px;
  height: 1px;
  margin-top: 54px;
}

@media (min-width: 1440px) {
  /* A line is 70.4px; the row is the design's 70px, the title centred in it. */
  .data-stream-feeds__header h2 {
    margin: calc((70px - 64px * 1.1) / 2) 0;
  }
}

.data-stream-feeds__grid {
  display: grid;
  grid-template-columns: repeat(4, 305px);
  gap: 20px;
  padding: 0;
  margin: 64px 0 0;
  list-style: none;
}

.data-stream-feeds__item {
  min-width: 0;
  height: 516px;
}

.data-stream-feeds__item--short {
  height: 472px;
}

.data-stream-feed-card,
.data-stream-feeds__compare {
  display: flex;
  flex-direction: column;
  width: 100%;
  height: 100%;
  overflow: hidden;
  background: var(--airnav-color-surface);
  border-radius: var(--airnav-radius-card);
}

.data-stream-feed-card__image {
  width: 100%;
  height: 160px;
  flex: 0 0 160px;
  overflow: hidden;
}

.data-stream-feed-card__image img {
  display: block;
  width: 100%;
  max-width: none;
  height: 100%;
  object-fit: cover;
  object-position: center top;
}

.data-stream-feeds__item:nth-child(n + 5):nth-child(-n + 7) .data-stream-feed-card__image {
  height: auto;
  flex-basis: auto;
  aspect-ratio: 1718 / 916;
}

.data-stream-feed-card__content {
  display: flex;
  flex: 1;
  flex-direction: column;
  gap: 12px;
  min-height: 0;
  padding: 24px;
}

.data-stream-feed-card__intro {
  min-height: 132px;
}

.data-stream-feeds__item--short .data-stream-feed-card__intro {
  min-height: 108px;
}

.data-stream-feed-card h3 {
  color: var(--airnav-color-forest);
  font-family: var(--airnav-font-display);
  font-size: 24px;
  font-weight: 400;
  line-height: 1.1;
  letter-spacing: -0.48px;
}

.data-stream-feed-card__intro > p {
  margin-top: 8px;
  color: rgba(17, 32, 27, 0.7);
  font-family: var(--airnav-font-body);
  font-size: 16px;
  font-weight: 600;
  line-height: 1.5;
}

.data-stream-feed-card__divider {
  width: 100%;
  height: 1px;
}

.data-stream-feed-card__details {
  display: flex;
  flex: 1;
  flex-direction: column;
  gap: 16px;
  min-height: 0;
}

.data-stream-feed-card__review {
  color: rgba(17, 32, 27, 0.7);
  font-family: var(--airnav-font-body);
  font-size: 13px;
  font-style: italic;
  font-weight: 400;
  line-height: 1.5;
}

.data-stream-feed-card__metadata {
  display: grid;
  gap: 20px;
  margin-top: auto;
}

.data-stream-feed-card__metadata > div {
  display: grid;
  grid-template-columns: 16px auto 1fr;
  gap: 4px;
  align-items: center;
  color: var(--airnav-color-forest);
  font-family: var(--airnav-font-body);
  font-size: 13px;
  font-weight: 400;
  line-height: normal;
  white-space: nowrap;
}

.data-stream-feed-card__metadata img {
  width: 16px;
  height: 16px;
}

.data-stream-feed-card__metadata dt,
.data-stream-feed-card__metadata dd {
  margin: 0;
}

.data-stream-feed-card__metadata dd {
  color: var(--airnav-color-teal);
  font-weight: 700;
}

.data-stream-feeds__compare {
  gap: 32px;
  padding: 24px;
}

.data-stream-feeds__compare h3 {
  color: var(--airnav-color-forest);
  font-family: var(--airnav-font-display);
  font-size: 32px;
  font-weight: 400;
  line-height: 1.1;
}

.data-stream-feeds__compare > img {
  width: 40px;
  height: 1px;
}

.data-stream-feeds__compare > p {
  color: rgba(17, 32, 27, 0.7);
  font-family: var(--airnav-font-body);
  font-size: 16px;
  font-weight: 600;
  line-height: 1.5;
}

.data-stream-feeds__download {
  width: 100%;
  min-height: 60px;
  margin-top: auto;
}

.data-stream-capabilities {
  position: relative;
  height: 814px;
  overflow: hidden;
  color: #fff;
  isolation: isolate;
}

.data-stream-capabilities__background {
  position: absolute;
  z-index: -1;
  top: 0;
  right: 0;
  bottom: 0;
  left: 0;
  display: block;
  width: 100%;
  max-width: none;
  height: 100%;
  object-fit: cover;
}

@media (min-width: 1441px) {
  .data-stream-capabilities__background {
    width: calc(100% + 80px);
    object-position: center 68%;
  }
}

.data-stream-capabilities__layout {
  display: grid;
  grid-template-columns: 413px 847px;
  gap: 20px;
  height: 100%;
  padding-top: 72px;
}

.data-stream-capabilities__header h2,
.data-stream-capabilities__header p,
.data-stream-capability-card h3,
.data-stream-capability-card__bullets {
  margin: 0;
}

/*
 * Room for two lines of title, the design's 140px box, and more when an
 * editor writes a longer one, which then pushes the divider and text down.
 * Two lines measure 140.8px; the margin ends the box where the 140px did.
 */
.data-stream-capabilities__header h2 {
  width: 315px;
  min-height: calc(64px * 1.1 * 2);
  margin-bottom: calc(140px - 64px * 1.1 * 2);
  color: #fff;
  font-family: var(--airnav-font-display);
  font-size: 64px;
  font-weight: 400;
  line-height: 1.1;
  letter-spacing: -1.28px;
}

.data-stream-capabilities__header > img {
  display: block;
  width: 80px;
  height: 1px;
  margin-top: 32px;
}

.data-stream-capabilities__header p {
  width: 248px;
  margin-top: 31px;
  color: #fff;
  font-family: var(--airnav-font-body);
  font-size: 18px;
  font-weight: 400;
  line-height: 25px;
}

.data-stream-capabilities__grid {
  display: grid;
  grid-template-columns: repeat(2, 413.5px);
  grid-template-rows: 399px 251px;
  gap: 20px;
  width: 847px;
  height: 670px;
  padding: 0;
  margin: 0;
  list-style: none;
}

.data-stream-capabilities__item {
  min-width: 0;
  overflow: hidden;
  border: 1px solid;
  border-radius: var(--airnav-radius-card);
}

.data-stream-capabilities__item--teal {
  border-color: rgba(0, 164, 154, 0.4);
}

.data-stream-capabilities__item--green {
  border-color: rgba(0, 121, 68, 0.4);
}

.data-stream-capability-card {
  position: relative;
  display: flex;
  flex-direction: column;
  gap: 32px;
  width: 100%;
  height: 100%;
  padding: 32px;
  overflow: hidden;
  border-radius: inherit;
  background: transparent;
  backdrop-filter: blur(10px);
  -webkit-backdrop-filter: blur(10px);
}

.data-stream-capability-card::before {
  position: absolute;
  z-index: 0;
  inset: 0;
  content: "";
  background: rgba(0, 4, 12, 0.78);
  backdrop-filter: blur(10px);
}

.data-stream-capability-card__ellipse {
  position: absolute;
  z-index: 0;
  width: 200px;
  height: 200px;
  overflow: visible;
  opacity: 0.65;
}

.data-stream-capability-card__ellipse img {
  position: absolute;
  inset: -100%;
  display: block;
  width: 600px;
  max-width: none;
  height: 600px;
}

.data-stream-capabilities__item--ellipse-top-left .data-stream-capability-card__ellipse {
  top: -101px;
  left: -101px;
}

.data-stream-capabilities__item--ellipse-right-middle .data-stream-capability-card__ellipse {
  top: calc(50% + 0.5px);
  right: -101.5px;
  transform: translateY(-50%);
}

.data-stream-capabilities__item--ellipse-right-upper .data-stream-capability-card__ellipse {
  top: calc(50% + 0.5px);
  right: -101.5px;
  transform: translateY(-50%);
}

.data-stream-capabilities__item--ellipse-bottom-right .data-stream-capability-card__ellipse {
  right: -101.5px;
  bottom: -101px;
}

.data-stream-capability-card__header {
  position: relative;
  z-index: 1;
  display: flex;
  gap: 12px;
  align-items: center;
  min-height: 49px;
}

.data-stream-capability-card__header h3 {
  flex: 1;
  color: #fff;
  font-family: var(--airnav-font-display);
  font-size: 26px;
  font-weight: 400;
  line-height: 1.1;
}

.data-stream-capability-card__header span {
  flex: 0 0 auto;
  font-family: var(--airnav-font-display);
  font-size: 66px;
  font-weight: 100;
  line-height: 1.1;
}

.data-stream-capabilities__item--teal .data-stream-capability-card__header span {
  color: var(--airnav-color-teal);
}

.data-stream-capabilities__item--green .data-stream-capability-card__header span {
  color: #4ca17c;
}

.data-stream-capability-card__bullets {
  position: relative;
  z-index: 1;
  display: grid;
  gap: 16px;
  padding: 0;
  list-style: none;
}

.data-stream-capability-card__bullets li {
  display: grid;
  grid-template-columns: 16px minmax(0, 1fr);
  gap: 8px;
  align-items: start;
  color: #fff;
  font-family: var(--airnav-font-body);
  font-size: 16px;
  font-weight: 400;
  line-height: 22px;
}

.data-stream-capability-card__bullets img {
  width: 16px;
  height: 16px;
  margin-top: 3px;
}

.data-stream-sources { position: relative; height: 828px; overflow: hidden; background: #f3f6f6; isolation: isolate; }
.data-stream-sources__background { position: absolute; z-index: -2; inset: 0; display: block; width: 100%; max-width: none; height: 100%; object-fit: cover; object-position: center; }
.data-stream-sources__gradient { position: absolute; z-index: -1; top: 0; right: 0; left: 0; height: 400px; background: linear-gradient(to bottom, #f3f6f6, rgba(243,246,246,0)); pointer-events: none; }
.data-stream-sources__content { position: relative; height: 100%; padding-top: 72px; }
/*
 * Data Sources' title, then its text and rule, in one 70px row as the design
 * draws them (title 371px, text 357px, the rule 19px after it to the end).
 * A longer title takes the room it needs and the rule shortens; when the
 * text and an 80px rule no longer fit beside it, they move together below
 * the title. The text stays within the row's 70px, overflowing it a little
 * where it wraps to three lines, as before.
 */
.data-stream-sources__header { position: relative; display: flex; flex-wrap: wrap; align-items: center; column-gap: 40px; row-gap: 24px; min-height: 70px; }
.data-stream-sources__aside { display: flex; flex: 1 1 0; align-self: stretch; align-items: center; column-gap: 19px; max-height: 70px; }
.data-stream-sources__header h2, .data-stream-sources__header p, .data-stream-source-card h3, .data-stream-source-card p { margin: 0; }
.data-stream-sources__header h2 { flex: 0 0 auto; min-width: 371px; max-width: 100%; margin: calc((70px - 64px * 1.1) / 2) 0; color: var(--airnav-color-forest); font-family: var(--airnav-font-display); font-size: 64px; font-weight: 400; line-height: 1.1; letter-spacing: -1.28px; }
/* Where the old row squeezed the title to its text's width. */
@media (max-width: 863.98px) { .data-stream-sources__header h2 { min-width: 0; } }
.data-stream-sources__header p { flex: 0 1 357px; color: rgba(17,32,27,.7); font-family: var(--airnav-font-body); font-size: 18px; font-weight: 400; line-height: 25px; }
.data-stream-sources__aside > img { flex: 1 1 0; align-self: flex-start; min-width: 80px; height: 1px; margin-top: 54px; }
.data-stream-sources__viewport { margin-top: 64px; overflow: hidden; }
.data-stream-sources__grid { display: flex; gap: 20px; padding: 0; margin: 0; list-style: none; transform: translateX(calc(-1 * var(--data-sources-carousel-offset, 0px))); transition: transform 220ms ease; }
.data-stream-sources__grid > li { flex: 0 0 calc((100% - 40px) / 3); }
.data-stream-sources__grid > li { height: 438px; min-width: 0; }
.data-stream-source-card { display: grid; grid-template-rows: auto minmax(0, 1fr) 1px auto; gap: 24px; width: 100%; height: 100%; padding: 32px; overflow: hidden; background: #fff; border-radius: var(--airnav-radius-card); }
.data-stream-source-card__number { color: var(--airnav-color-green); font-family: var(--airnav-font-display); font-size: 32px; font-weight: 400; line-height: 1.1; letter-spacing: -.64px; }
.data-stream-source-card__copy { display: grid; grid-template-rows: minmax(70px, auto) auto; align-content: start; gap: 16px; min-height: 0; }
.data-stream-source-card h3 { color: var(--airnav-color-forest); font-family: var(--airnav-font-display); font-size: 32px; font-weight: 400; line-height: 1.1; letter-spacing: -.64px; }
.data-stream-source-card p { color: rgba(17,32,27,.7); font-family: var(--airnav-font-body); font-size: 16px; font-weight: 400; line-height: 1.5; }
.data-stream-source-card__divider { width: 100%; height: 1px; }
.data-stream-source-card footer { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 16px; min-height: 48px; margin: 0; color: var(--airnav-color-forest); font-family: var(--airnav-font-body); font-size: 16px; font-weight: 600; line-height: 1.5; }
.data-stream-source-card__metric { display: grid; grid-template-columns: 24px minmax(0, 1fr); gap: 12px; align-items: start; min-width: 0; }
.data-stream-source-card__metric-label { min-width: 0; overflow-wrap: anywhere; }
.data-stream-source-card footer img { width: 24px; height: 24px; }
.data-stream-sources__cta { position: absolute; bottom: 72px; left: 50%; min-width: 240px; min-height: 60px; padding: 16px 32px; color: #fff; background: #007944; border: 0; border-radius: 8px; font-family: var(--airnav-font-body); font-size: 18px; font-weight: 700; transform: translateX(-50%); }
.data-stream-sources__controls { display: contents; }
.data-stream-sources__control { position: absolute; bottom: 72px; display: grid; width: 60px; height: 60px; padding: 0; place-items: center; background: transparent; border: 1px solid; border-radius: 8px; cursor: pointer; transition: background-color 160ms ease, border-color 160ms ease, transform 120ms ease; }.data-stream-sources__control img { width: 20px; height: 20px; }.data-stream-sources__control--prev { right: 84px; border-color: rgba(17,32,27,.15); }.data-stream-sources__control--prev:not(:disabled), .data-stream-sources__control--next { border-color: #007944; }.data-stream-sources__control--next { right: 0; }.data-stream-sources__control:not(:disabled):hover, .data-stream-sources__control:not(:disabled):focus-visible { background-color: rgb(0 164 154 / 8%); border-color: #007944; }.data-stream-sources__control:not(:disabled):active { transform: scale(.96); }.data-stream-sources__control:disabled { opacity: .45; cursor: not-allowed; }.data-stream-sources__control:focus-visible { outline: 3px solid var(--airnav-color-teal); outline-offset: 3px; }

@media (min-width: 1101px) and (max-width: 1439px) { .data-stream-sources__aside > img { display: none; } }
@media (max-width: 1100px) { .data-stream-sources { height: auto; padding: 72px 0; }.data-stream-sources__content { height: auto; padding-top: 0; }.data-stream-sources__aside > img { display: none; }.data-stream-sources__viewport { margin-top: 64px; }.data-stream-sources__grid > li { flex-basis: calc((100% - 20px) / 2); height: auto; min-height: 504px; }.data-stream-sources__cta, .data-stream-sources__control { position: static; }.data-stream-sources__controls { display: flex; gap: 20px; margin-top: 24px; }.data-stream-sources__cta { display: inline-flex; margin-top: 24px; transform: none; }.data-stream-sources__control { display: inline-grid; } }
@media (max-width: 700px) { .data-stream-sources__header { display: block; }.data-stream-sources__aside { display: block; max-height: none; }.data-stream-sources__header h2 { margin: 0; font-size: 40px; letter-spacing: -.8px; white-space: normal; }.data-stream-source-card__number, .data-stream-source-card h3 { font-size: 24px; letter-spacing: -.48px; }.data-stream-source-card__copy { grid-template-rows: auto auto; }.data-stream-sources__header p { width: auto; margin: 16px 0 0; }.data-stream-sources__viewport { margin-top: 48px; touch-action: pan-y; }.data-stream-sources__grid > li { flex-basis: 100%; }.data-stream-source-card footer { grid-template-columns: 1fr; min-height: 0; } }

@media (prefers-reduced-motion: reduce) { .data-stream-sources__grid, .data-stream-sources__control { transition: none; } }

@media (max-width: 1439px) {
  .data-stream-capabilities {
    height: auto;
    padding: 72px 0;
    background: var(--airnav-color-forest);
  }

  .data-stream-capabilities__background {
    top: 0;
    height: 100%;
    object-fit: cover;
  }

  .data-stream-capabilities__layout {
    display: block;
    height: auto;
    padding-top: 0;
  }

  .data-stream-capabilities__grid {
    grid-template-columns: repeat(2, minmax(0, 1fr));
    grid-template-rows: repeat(2, auto);
    width: 100%;
    height: auto;
    margin-top: 48px;
  }

  .data-stream-capabilities__item:nth-child(-n + 2) {
    min-height: 399px;
  }

  .data-stream-capabilities__item:nth-child(n + 3) {
    min-height: 251px;
  }
}

@media (max-width: 700px) {
  .data-stream-capabilities__header h2 {
    width: auto;
    min-height: 0;
    margin-bottom: 0;
    font-size: 40px;
    letter-spacing: -0.8px;
  }

  .data-stream-capabilities__header h2 br {
    display: none;
  }

  .data-stream-capabilities__grid {
    grid-template-columns: minmax(0, 1fr);
    grid-template-rows: none;
  }

  .data-stream-capabilities__item,
  .data-stream-capabilities__item:nth-child(-n + 2),
  .data-stream-capabilities__item:nth-child(n + 3) {
    min-height: 0;
  }

  .data-stream-capability-card {
    min-height: 251px;
  }

  .data-stream-capability-card__header h3 {
    font-size: 20px;
  }

  .data-stream-capability-card__header span {
    font-size: 52px;
    letter-spacing: -1.04px;
  }
}

@media (max-width: 1439px) {
  .data-stream-feeds__header {
    height: auto;
    min-height: 70px;
  }

  .data-stream-feeds__aside > img {
    display: none;
  }

  .data-stream-feeds__grid {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }

  /* Wider two-column cards grow their images, so the fixed desktop heights would clip the details. */
  .data-stream-feeds__item,
  .data-stream-feeds__item--short {
    height: auto;
  }
}

@media (max-width: 700px) {
  .data-stream-feeds {
    padding: 72px 0;
  }

  .data-stream-feeds__header {
    display: block;
  }

  .data-stream-feeds__header h2 {
    min-width: 0;
    font-size: 40px;
    letter-spacing: -0.8px;
    white-space: normal;
  }

  .data-stream-feeds__header p {
    width: auto;
    margin: 16px 0 0;
    white-space: normal;
  }

  .data-stream-feeds__grid {
    grid-template-columns: minmax(0, 1fr);
    margin-top: 40px;
  }

  .data-stream-feeds__item,
  .data-stream-feeds__item--short {
    width: 100%;
    height: auto;
    min-height: 472px;
  }

  .data-stream-feed-card__intro,
  .data-stream-feeds__item--short .data-stream-feed-card__intro {
    min-height: auto;
  }

  .data-stream-feed-card__image {
    height: auto;
    flex-basis: auto;
    aspect-ratio: 305 / 160;
  }

  .data-stream-feed-card__metadata > div {
    white-space: normal;
  }
}

/* The overlapping composition needs the full 1440px: the uptime card ends on the viewport edge there. Below it, stack. */
@media (max-width: 1439px) {
  .data-stream-hero {
    height: auto;
    min-height: 0;
    margin-top: 0;
    padding: 80px 0 0;
    overflow: clip;
  }

  .data-stream-hero::after {
    height: 409px;
  }

  .data-stream-hero__background {
    bottom: auto;
    height: 409px;
  }

  .data-stream-hero__background img {
    inset: auto;
    top: -142px;
    left: 0;
    width: 100%;
    height: 551px;
    object-fit: cover;
    object-position: center top;
  }

  .data-stream-hero__container {
    display: flex;
    flex-direction: column;
    height: auto;
    gap: 48px;
    padding-bottom: 0;
  }

  .data-stream-hero__copy,
  .data-stream-hero__uptime,
  .data-stream-hero__statistics {
    position: relative;
    top: auto;
    left: auto;
  }

  .data-stream-hero__copy {
    width: min(100%, 569px);
  }

  /* Stacked, both cards keep their size and share one centre line. */
  .data-stream-hero__uptime {
    width: min(100%, 774px);
    margin-inline: auto;
  }

  .data-stream-hero__statistics {
    width: min(100%, 630px);
    margin-top: -48px;
    margin-inline: auto;
  }
}

/* The uptime card's absolute layout only fits at its full 774px; flow it as columns so it can narrow. */
@media (min-width: 701px) and (max-width: 1439px) {
  .data-stream-hero__uptime {
    display: grid;
    grid-template-columns: max-content 1px minmax(0, 1fr);
    column-gap: 40px;
    align-items: start;
    height: auto;
    min-height: 304px;
    padding: 64px;
    /* Centred over the narrower statistics card, so no corner lines up with it any more. */
    border-radius: var(--airnav-radius-card);
  }

  .data-stream-hero__statistics {
    border-radius: 0;
  }

  .data-stream-hero__uptime-benefits,
  .data-stream-hero__uptime-divider,
  .data-stream-hero__uptime-summary {
    position: relative;
    top: auto;
    left: auto;
    grid-row: 1;
  }

  .data-stream-hero__uptime-benefits {
    grid-column: 1;
  }

  .data-stream-hero__uptime-divider {
    grid-column: 2;
  }

  .data-stream-hero__uptime-summary {
    grid-column: 3;
  }

  .data-stream-hero__uptime-summary p {
    width: auto;
    max-width: 280px;
  }

  /* Beside the number, bottom-aligned with "Uptime Guarantee" as on desktop, however many lines the text above takes;
     it narrows (the shield is 91.5% of its square artwork) rather than run under the number. */
  .data-stream-hero__uptime-shield {
    position: relative;
    z-index: 0;
    top: auto;
    right: auto;
    left: auto;
    grid-row: 1;
    grid-column: 3;
    justify-self: end;
    align-self: end;
    width: 111px;
    height: auto;
    margin-right: -29px;
    margin-bottom: 4px;
  }

  .data-stream-hero__uptime-summary {
    z-index: 1;
  }
}

@media (min-width: 701px) and (max-width: 900px) {
  .data-stream-hero__uptime {
    column-gap: 32px;
    padding: 48px 32px;
  }

  /* The number is 183px wide. */
  .data-stream-hero__uptime-shield {
    width: clamp(64px, calc((100% - 195px) * 1.093), 96px);
    margin-right: 0;
  }
}

/* No room beside the number for even the smallest shield. */
@media (min-width: 701px) and (max-width: 733px) {
  .data-stream-hero__uptime-shield {
    display: none;
  }
}

@media (max-width: 700px) {
  /* Design order: copy, full-width button, the photo as a band, statistics, then the SLA card.
     The container is flattened so the photo (a sibling of it) can sit between its children. */
  .data-stream-hero {
    display: flex;
    flex-direction: column;
    padding-top: 40px;
  }

  .data-stream-hero::after,
  .data-stream-hero__overlay {
    display: none;
  }

  .data-stream-hero__background {
    position: relative;
    inset: auto;
    order: 2;
    height: 255px;
    margin-top: -106px;
    -webkit-mask-image: linear-gradient(to bottom, transparent 0, #000 40px, #000 179px, transparent 245px);
    mask-image: linear-gradient(to bottom, transparent 0, #000 40px, #000 179px, transparent 245px);
  }

  .data-stream-hero__background img {
    top: 0;
    height: 100%;
    object-position: 90% center;
  }

  .data-stream-hero__container {
    display: contents;
  }

  .data-stream-hero__copy,
  .data-stream-hero__uptime,
  .data-stream-hero__statistics {
    width: auto;
    margin-inline: var(--airnav-gutter);
  }

  .data-stream-hero__copy {
    z-index: 2;
    order: 1;
  }

  .data-stream-hero__title {
    margin-top: 8px;
    font-size: 40px;
    line-height: 1.1;
    letter-spacing: -0.8px;
    white-space: normal;
  }

  .data-stream-hero__body {
    width: auto;
    margin-top: 6px;
    font-size: 18px;
    line-height: 1.5;
  }

  .data-stream-hero__cta {
    width: 100%;
    margin-top: 24px;
  }

  /* Phone design: benefits, a divider, then the SLA summary, flowing; the shield sits in the bottom right corner. */
  .data-stream-hero__uptime {
    order: 4;
    display: flex;
    flex-direction: column;
    height: auto;
    min-height: 0;
    padding: 32px;
    margin-top: -16px;
    border-radius: var(--airnav-radius-card);
  }

  .data-stream-hero__uptime-benefits,
  .data-stream-hero__uptime-summary {
    position: relative;
    top: auto;
    left: auto;
  }

  .data-stream-hero__uptime-benefits {
    gap: 24px;
  }

  .data-stream-hero__uptime-benefit {
    gap: 12px;
    padding-right: 24px;
    white-space: normal;
  }

  .data-stream-hero__uptime-divider {
    display: none;
  }

  .data-stream-hero__uptime-summary {
    z-index: 1;
    padding-top: 24px;
    margin-top: 24px;
    border-top: 1px solid rgb(0 164 154 / 40%);
  }

  .data-stream-hero__uptime-summary p {
    width: auto;
  }

  /* The line break is for the desktop column; here the text wraps on its own. */
  .data-stream-hero__uptime-summary p br {
    display: none;
  }

  .data-stream-hero__uptime-summary strong {
    font-size: clamp(56px, 18vw, 72px);
    line-height: 1.1;
  }

  /* The artwork is square with the shield 96 x 115 inside it (8.3% side margins): that shield sits 32px from the right and
     37px from the bottom. Below 390px it shrinks so it stays clear of the number. */
  .data-stream-hero__uptime-shield {
    --shield: clamp(48px, calc(94.3vw - 253px), 115px);
    top: auto;
    right: calc(32px - var(--shield) * 0.0832);
    bottom: 37px;
    left: auto;
    width: var(--shield);
    height: var(--shield);
  }

  /* Overlaps the photo band's foot; the SLA card overlaps its last 16px so its rounded top corners sit on white. */
  .data-stream-hero__statistics {
    order: 3;
    display: grid;
    grid-template-columns: 1fr;
    gap: 24px;
    height: auto;
    padding: 32px 32px 48px;
    margin-top: -38px;
    border-radius: var(--airnav-radius-card) var(--airnav-radius-card) 0 0;
  }

  .data-stream-hero__stat {
    display: grid;
    grid-template-columns: 40px 1fr;
    grid-template-rows: auto auto;
    column-gap: 20px;
    width: 100%;
    min-height: 72px;
  }

  .data-stream-hero__stat > img {
    grid-row: 1 / span 2;
  }

  .data-stream-hero__stat strong {
    line-height: 1;
  }

  .data-stream-hero__stat span {
    margin-top: 0;
  }

  .data-stream-hero__stat-divider {
    display: none;
  }
}

@media (max-width: 1100px) {
  .data-stream-realtime {
    height: auto;
    overflow: clip;
  }

  .data-stream-realtime__container {
    display: flex;
    flex-direction: column;
    gap: 56px;
    height: auto;
    padding-top: 80px;
    padding-bottom: 72px;
  }

  .data-stream-realtime__content {
    width: min(100%, 630px);
  }

  .data-stream-realtime__visual {
    position: relative;
    top: auto;
    left: auto;
    align-self: center;
    width: min(100%, 572px);
    height: auto;
    aspect-ratio: 1;
  }
}

@media (max-width: 700px) {
  .data-stream-realtime__container {
    gap: 40px;
    padding-top: 72px;
    padding-bottom: 72px;
  }

  /* Design order: heading, globe, text. */
  .data-stream-realtime__content {
    display: contents;
  }

  .data-stream-realtime__title {
    order: 1;
    width: auto;
    font-size: 40px;
    letter-spacing: -0.8px;
  }

  .data-stream-realtime__visual {
    order: 2;
  }

  .data-stream-realtime__body {
    order: 3;
    width: auto;
    margin-top: 0;
    line-height: 1.5;
  }

  .data-stream-realtime__body p + p {
    margin-top: 24px;
  }
}


.data-stream-contact__form{position:relative;gap:13px;align-self:start;height:auto;min-height:0;margin-top:6px}
.data-stream-contact__left header h2{white-space:nowrap}.data-stream-contact__field{position:relative;display:block}.data-stream-contact__field>img{position:absolute;z-index:1;top:22px;left:20px;width:16px;height:16px}.data-stream-contact__field--textarea>img{top:21px}.data-stream-contact__field input,.data-stream-contact__field textarea{padding-left:48px!important}
/* Phone: one wrapping line, as in the design; must follow the nowrap above. */
@media(max-width:700px){.data-stream-contact__left header h2{white-space:normal}}

@media (min-width: 1440px) {
  .data-stream-contact__left header h2 { width: 528px; height: 70px; white-space: nowrap; }
  .data-stream-contact__left header h2 br { display: none; }
.data-stream-contact__form { box-sizing: border-box; height: 708px; min-height: 0; margin-top: 6px; gap: 24px; }
}

/* Phones: the hero statistic labels sit on one line in the design. */
@media (max-width: 700px) { .data-stream-hero__statistics span br { display: none; } }
/* The Data Sources intro's saved line break is for the wide header; narrower, it leaves "that" alone on a line. */
@media (max-width: 900px) { .data-stream-sources__header p br { display: none; } }

/* Phones, Data Sources: the arrows at either side, lined up with the card's edges; the coverage map button centred under them. */
@media (max-width: 700px) {
  .data-stream-sources__controls { justify-content: space-between; }
  .data-stream-sources__cta { display: flex; width: fit-content; margin-inline: auto; }
}
