.ds-card-grid .ds-card {
  background: var(--newtab-background-color-secondary);
  border-radius: var(--border-radius-small);

  &:not(.placeholder) {
    border-radius: var(--border-radius-medium);
    box-shadow: $shadow-card;

    img,
    .placeholder-image {
      border-radius: var(--border-radius-medium) var(--border-radius-medium) 0 0;
    }
  }
}

.ds-card:not(.placeholder) {
  .img-wrapper .img {
    height: 160px;
    width: 100%;
  }
}

.ds-card-grid {
  display: grid;
  grid-gap: var(--space-xlarge);
  position: relative;

  &.ds-card-grid-compact {
    grid-gap: var(--space-large);
  }

  &.ad-sizing-variant-a,
  &.ad-sizing-variant-b {
    row-gap: var(--space-xlarge);
    column-gap: var(--space-large);
  }

  .ds-card-link:focus {
    @include ds-focus;

    transition: none;
    border-radius: var(--border-radius-medium);
  }

  // "2/3 width layout"
  .ds-column-5 &,
  .ds-column-6 &,
  .ds-column-7 &,
  .ds-column-8 & {
    grid-template-columns: repeat(2, 1fr);
  }

  // "Full width layout"
  .ds-column-9 &,
  .ds-column-10 &,
  .ds-column-11 &,
  .ds-column-12 & {
    grid-template-columns: repeat(1, 1fr);

    @media (min-width: $break-point-medium) {
      grid-template-columns: repeat(2, 1fr);
    }

    @media (min-width: $break-point-large) {
      grid-template-columns: repeat(3, 1fr);
    }

    .title {
      font-size: var(--font-size-large);
    }

    .excerpt {
      @include limit-visible-lines(3, 24, 15);
    }
  }

  &.empty {
    grid-template-columns: auto;
  }

  @mixin small-cards {
    .ds-card {
      &.placeholder {
        min-height: 247px;
      }

      .meta {
        .story-footer {
          margin-block-start: var(--space-small);
        }

        .source,
        .story-sponsored-label,
        .status-message .story-context-label {
          color: var(--newtab-text-secondary-color);
          -webkit-line-clamp: 2;
        }

        .source,
        .story-sponsored-label {
          font-size: var(--font-size-small);
        }

        .status-message .story-context-label {
          font-size: var(--font-size-small);
        }

        .story-badge-icon {
          margin-inline-end: var(--space-xxsmall);
          margin-block-end: var(--space-xxsmall);
          height: 14px;
          width: 14px;
          background-size: 14px;
        }

        .title {
          font-size: inherit;
        }

        .info-wrap {
          flex-grow: 0;
        }
      }
    }
  }

  &.ds-card-grid-four-card-variant {
    // "Full width layout"
    .ds-column-9 &,
    .ds-column-10 &,
    .ds-column-11 &,
    .ds-column-12 & {
      grid-template-columns: repeat(1, 1fr);

      @media (min-width: $break-point-medium) {
        grid-template-columns: repeat(2, 1fr);
      }

      @media (min-width: $break-point-large) {
        grid-template-columns: repeat(3, 1fr);
      }

      @media (min-width: $break-point-widest) {
        grid-template-columns: repeat(4, 1fr);
      }
    }

    @include small-cards;
  }

  &.ds-card-grid-hybrid-layout {
    .ds-column-9 &,
    .ds-column-10 &,
    .ds-column-11 &,
    .ds-column-12 & {
      grid-template-columns: repeat(1, 1fr);

      @media (min-width: $break-point-medium) {
        grid-template-columns: repeat(2, 1fr);
      }

      @media (min-width: $break-point-large) {
        grid-template-columns: repeat(3, 1fr);
      }

      @media (height <= 1065px) {
        .excerpt {
          display: none;
        }
      }

      @media (max-width: $break-point-widest) {
        @include small-cards;
      }

      @media (min-width: $break-point-widest) and (height <= 964px) {
        @include small-cards;

        grid-template-columns: repeat(4, 1fr);
      }
    }
  }
}

.outer-wrapper .ds-card-grid.ds-card-grid-hide-background .ds-card,
.outer-wrapper.newtab-experience .ds-card-grid.ds-card-grid-hide-background .ds-card {
  &:not(.placeholder) {
    box-shadow: none;
    background: none;

    .ds-card-link:focus {
      box-shadow: none;

      .img-wrapper .img img {
        @include ds-focus;
      }
    }

    .img-wrapper .img img {
      border-radius: var(--border-radius-medium);
      box-shadow: $shadow-card;
    }

    .meta {
      padding: var(--space-medium) 0 0;
    }
  }
}

// @nova-cleanup(remove-conditional): Remove when sections are always enabled.
// ds-header spans 1/-1 of ds-card-grid-container's auto-fill tracks.
.nova-enabled .content .ds-card-grid-container .ds-header {
  grid-column: 1 / -1;
}

// @nova-cleanup(remove-conditional): Remove when sections are always enabled.
// ds-card-grid uses subgrid to inherit those tracks without restating the column definition.
.nova-enabled .content .ds-card-grid-container .ds-card-grid {
  grid-column: 1 / -1;
  grid-template-columns: subgrid;
  row-gap: var(--space-xlarge);
}

.ds-layout {
  .ds-sub-header {
    margin-block-start: var(--space-xlarge);

    .section-title-container {
      flex-direction: row;
      align-items: baseline;
      justify-content: space-between;
      display: flex;
    }

    .section-sub-link {
      color: var(--newtab-primary-action-background);
      font-size: inherit;
      cursor: pointer;

      &:hover {
        text-decoration: underline;
      }

      &:active {
        color: var(--newtab-primary-element-active-color);
      }
    }
  }
}
