.promo-grid {
  display: grid;
  grid-template-columns: minmax(0, 1fr);
  .promo-grid_item {
    grid-column: span 1 / span 1;
    position: relative;
    z-index: auto;

    .pg_subheading {
      letter-spacing: 0.4rem;
      text-transform: uppercase;
    }
    .pg_subheading,
    .pg_text,
    .rich-text__heading {
      margin: 0 0 0.8rem 0;
    }
  }

  .promo-grid_item a {
    text-decoration: none;
  }

  .promo-grid_item .promo-grid_item-adv,
  .promo-grid_item .promo-grid_item-banner,
  .promo-grid_item .promo-grid_product,
  .promo-grid_item .promo-grid_advanced-graphic {
    font-size: calc(var(--font-scale) * 1.5rem);
    .h1 {
      font-size: calc(var(--font-scale) * 3rem);
    }
    h2,
    .h2 {
      font-size: calc(var(--font-scale) * 2rem);
    }
  }

  .promo-grid_item-banner.framed::before,
  .promo-grid_simple.framed::before,
  .promo-grid_advanced-graphic.framed::before,
  .pg_advanced-graphic-content.framed::before {
    content: '';
    position: absolute;
    inset: 1rem;
    border: 1px solid rgb(var(--color-foreground));
    pointer-events: none;
  }

  .promo-grid_item .promo-grid_item-adv {
    display: flex;
    width: 100%;
    height: 100%;

    color: rgb(250, 250, 250);
    .rich-text__heading {
      color: rgb(250, 250, 250);
    }

    .button {
      --color-button-text: 250, 250, 250;
    }
    .button--secondary {
      background-color: transparent;
    }

    &:has(.left) {
      justify-content: start;
    }
    &:has(.center) {
      justify-content: center;
    }
    &:has(.right) {
      justify-content: end;
    }

    .adv-image {
      position: absolute;
      height: 100%;
      width: 100%;
      left: 0;
      top: 0;
    }
    .adv-image img {
      height: 100%;
      width: 100%;
      object-fit: cover;
      position: relative;
    }

    .adv-image .promo-video-bg .deferred-media {
      background-repeat: no-repeat;
      background-size: cover;
      z-index: 0;
      inset: 0;
      position: absolute;
      width: 100%;
      background-position: 50% 50%;

      iframe {
        height: 100%;
        width: 100%;
        border: 0;
        inset: 0;
        pointer-events: none;
        position: absolute;
      }
    }

    &.boxed {
      padding: 2rem;
      .adv-content {
        background-color: rgb(var(--color-background));
        color: rgb(var(--color-foreground));
        .rich-text__heading {
          color: rgb(var(--color-foreground));
        }
      }
    }

    &.boxed.framed .adv-content::before {
      content: '';
      position: absolute;
      inset: 1rem;
      border: 1px solid rgb(var(--color-foreground));
      pointer-events: none;
    }
    &.framed:not(.boxed)::after {
      content: '';
      position: absolute;
      inset: 1rem;
      border: 1px solid rgb(250, 250, 250);
      pointer-events: none;
    }

    .adv-content {
      width: fit-content;
      height: fit-content;
      position: relative;
      padding: 2rem;
      .adv_subheading {
        letter-spacing: 0.4rem;
        text-transform: uppercase;
      }
      .adv_subheading,
      .adv_text,
      .rich-text__heading {
        margin: 0 0 0.8rem 0;
      }
    }
    .adv-content.top {
      align-self: flex-start;
    }
    .adv-content.middle {
      align-self: center;
    }
    .adv-content.bottom {
      align-self: flex-end;
    }

    .adv-content .button {
      margin: 0.3rem;
    }
  }

  .promo-grid_item-banner {
    position: relative;
    z-index: 2;
    color: rgb(var(--color-foreground));
    padding: calc(var(--banner-padding) * 0.75);
    text-align: center;
    &.framed {
      padding: calc(var(--banner-padding) * 2 * 0.75);
    }
    &.stack_none,
    &.stack_btn {
      display: flex;
      justify-content: center;
    }
    &.stack_all .banner-text,
    &.stack_btn .banner-text {
      flex-direction: column;
    }
    .banner-text {
      display: flex;
      align-items: center;
      justify-content: center;
      .button {
        padding: 0.8rem 2rem;
        min-width: 8rem;
        min-height: fit-content;
      }
    }
    p,
    h2 {
      margin: 0.5rem 1rem;
    }
    &.compare .button {
      min-height: calc(4rem + var(--buttons-border-width) * 2);
      padding: 0 3rem;
    }
    &.compare h2 {
      margin: 0rem 1rem 1rem 1rem;
    }
  }
  .promo-grid_banner-img {
    position: absolute;
    height: 100%;
    width: 100%;
    left: 0;
    top: 0;
  }
  .promo-grid_banner-img img {
    height: 100%;
    width: 100%;
    object-fit: cover;
    position: relative;
  }

  .promo-grid_item .image-wrapper {
    width: 100%;
    position: relative;
    overflow: hidden;
    img {
      height: auto;
      width: 100%;
      object-fit: cover;
    }
  }
  .promo-grid_product {
    display: flex;
    flex-wrap: wrap;

    flex-direction: column;
    gap: 1.5rem;
    .text-content,
    .images-wrapper {
      flex: 1 1 100%;
    }
    .text-content {
      order: 2;
    }
    .images-wrapper {
      align-items: stretch;
      display: flex;
      position: relative;
      width: 100%;
      order: 1;
    }
    .pg_product-image:first-child {
      max-width: 75%;
      width: 100%;
    }
    .pg_product-image {
      position: relative;
    }
    .pg_product-image:nth-child(2) {
      bottom: 40px;
      max-width: 30%;
      position: absolute;
      right: 0;
      width: 100%;
    }
    .image-wrap {
      position: relative;
    }
    .pg_product-image img {
      display: block;
      height: auto;
      height: 100%;
      left: 0;
      position: absolute;
      top: 0;
      width: 100%;
      object-fit: cover;
      object-position: center center;
      transition: opacity 0.4s cubic-bezier(0.25, 0.46, 0.45, 0.94);
    }

    .pg_product-badges {
      position: absolute;
      text-align: right;
      z-index: 3;
      top: -1rem;
      right: -1rem;
      .pg_product-badge {
        background-color: rgb(var(--color-button));
        color: rgb(var(--color-button-text));
        padding: 0.4rem 1.2rem;
        width: fit-content;
        float: right;
        clear: both;
      }
      .pg_product-price {
        background-color: rgb(var(--color-background));
        color: rgb(var(--color-foreground));
      }
    }
  }

  .promo-grid_simple {
    height: 100%;
    display: flex;
    align-items: center;
    justify-content: center;
    position: relative;
    --color-foreground: 255, 255, 255;
    .pg_simple-bg {
      pointer-events: none;
      position: absolute;
      width: 100%;
      height: 100%;
      left: 0;
      top: 0;
      img {
        height: 100%;
        object-fit: cover;
        position: relative;
        width: 100%;
      }
    }
    .pg_simple-content {
      position: relative;
      z-index: 2;
      padding: 3rem;
      h2 {
        margin: 0;
      }
    }
    &.framed::before {
      z-index: 2;
    }
  }

  .promo-grid_advanced-graphic {
    position: relative;
    z-index: 2;
    color: rgb(var(--color-foreground));
    display: flex;
    height: 100%;

    .button {
      --color-button-text: 250, 250, 250;
    }
    .button--secondary {
      background-color: transparent;
    }

    .pg_advanced-graphic-bg {
      position: absolute;
      height: 100%;
      width: 100%;
      left: 0;
      top: 0;
    }
    .pg_advanced-graphic-bg img {
      height: 100%;
      width: 100%;
      object-fit: cover;
      position: relative;
    }

    &.top {
      align-items: start;
    }
    &.middle {
      align-items: center;
    }
    &.bottom {
      align-items: end;
    }
    &.left {
      justify-content: start;
    }
    &.center {
      justify-content: center;
    }
    &.right {
      justify-content: end;
    }
    .pg_advanced-graphic-content {
      padding: 2.7rem 3.4rem;
      width: fit-content;
      position: relative;
      display: flex;
      flex-direction: column;
      justify-content: center;
      align-items: center;
      &.boxed {
        background-color: rgb(var(--color-background));
      }
      &.boxed:not(.full-height) {
        margin: 1rem;
      }
      &.boxed.full-height {
        height: 100%;
      }
      .wrap-text {
        font-size: calc(var(--font-scale) * 1.1rem);
        letter-spacing: 0.4rem;
        line-height: 1.3;
        text-transform: uppercase;
      }
      .middle-text {
        font-family: var(--font-heading-family);
        font-style: var(--font-heading-style);
        font-weight: var(--font-heading-weight);
        letter-spacing: calc(var(--font-scale) * 0.06rem);
        line-height: calc(1 + 0.3 / max(1, var(--font-scale)));
        display: block;
        position: relative;
        font-size: calc(var(--font-scale) * 4rem);
        sup {
          top: -1.2rem;
          font-size: 60%;
          position: relative;
          vertical-align: baseline;
        }
        small {
          display: inline;
          font-size: calc(var(--font-scale) * 1rem);
          letter-spacing: 0;
          margin-left: -2.8rem;
        }
      }
      .adv-grid-links {
        width: fit-content;
        margin-top: 1rem;
        display: grid;
        gap: 0.6rem;
        grid-template-columns: 1fr;
      }
    }
  }
}

@media screen and (min-width: 450px) {
  .promo-grid .promo-grid_advanced-graphic .adv-grid-links {
    &:has(> :nth-child(2)) {
      grid-template-columns: 1fr 1fr;
    }
    > :nth-child(3):last-child {
      grid-column: span 2;
    }
  }
}

@media screen and (min-width: 750px) {
  .promo-grid {
    grid-template-columns: repeat(6, minmax(0, 1fr));

    .promo-grid_item {
      grid-column: span 6 / span 6;

      .pg_subheading,
      .pg_text,
      .rich-text__heading {
        margin: 0 0 1.2rem 0;
      }
    }
    .promo-grid_item.width-50 {
      grid-column: span 3 / span 3;
    }
    .promo-grid_item.width-33 {
      grid-column: span 2 / span 2;
    }

    .promo-grid_item .promo-grid_item-adv,
    .promo-grid_item .promo-grid_item-banner,
    .promo-grid_item .promo-grid_product,
    .promo-grid_item .promo-grid_advanced-graphic {
      font-size: calc(var(--font-scale) * 1.6rem);
      .h1 {
        font-size: calc(var(--font-scale) * 4rem);
      }
      h2,
      .h2 {
        font-size: calc(var(--font-scale) * 2.4rem);
      }
    }

    .promo-grid_item .promo-grid_item-adv .adv-content {
      padding: 3rem;
      .adv_subheading,
      .adv_text,
      .rich-text__heading {
        margin: 0 0 1.2rem 0;
      }
    }
    .promo-grid_item .promo-grid_item-adv.boxed.framed .adv-content::before,
    .promo-grid_item .promo-grid_item-adv.framed:not(.boxed)::after {
      inset: 1.5rem;
    }

    .promo-grid_item-banner.framed::before,
    .promo-grid_simple.framed::before,
    .promo-grid_advanced-graphic.framed::before,
    .pg_advanced-graphic-content.framed::before {
      inset: 1.5rem;
    }
    .promo-grid_item-banner {
      padding: var(--banner-padding);
      &.framed {
        padding: calc(var(--banner-padding) * 2);
      }
    }

    .promo-grid_product {
      flex-direction: row;
      gap: 0;
      align-items: center;
      .text-content,
      .images-wrapper {
        flex-basis: 50%;
      }
      .text-content {
        padding-right: 2rem;
        order: 1;
      }
      .images-wrapper {
        order: 2;
      }
    }

    .promo-grid_advanced-graphic {
      .pg_advanced-graphic-content {
        padding: 4.5rem 5.6rem;
        &.boxed:not(.full-height) {
          margin: 1.5rem;
        }
        .wrap-text {
          font-size: calc(var(--font-scale) * 2.1rem);
        }
        .middle-text {
          font-size: calc(var(--font-scale) * 7.5rem);
          sup {
            top: -2.2rem;
          }
          small {
            font-size: calc(var(--font-scale) * 1.9rem);
            margin-left: -5.5rem;
          }
        }
        .adv-grid-links {
          margin-top: 1.5rem;
          gap: 1rem;
        }
      }
    }
  }
  .promo-grid .promo-grid_item .promo-grid_item-adv .adv-image .promo-video-bg .deferred-media iframe {
    height: 150%;
    left: -150%;
    max-width: none;
    width: 400%;
  }
}

@media screen and (min-width: 1024px) {
  .promo-grid .promo-grid_item .promo-grid_item-adv .adv-image .promo-video-bg .deferred-media iframe {
    height: 300%;
    left: auto;
    top: -100%;
    width: 100%;
  }
}
