:root {
  --grid-square: repeat(2, minmax(0, 1fr));
  --grid-vertical: repeat(3, minmax(0, 1fr));
}

.media-grid {
  display: grid;
  gap: var(--sizing-sm);
  margin-bottom: var(--sizing-base);

  &.no-pagination {
    margin-bottom: 0;
  }

  &.square {
    grid-template-columns: var(--grid-square);

    & a {
      aspect-ratio: var(--aspect-ratio-square);
    }

    & img {
      width: 100%;
      height: 100%;
      border-radius: var(--border-radius-slight);
    }
  }

  &.vertical {
    grid-template-columns: var(--grid-vertical);

    & a {
      aspect-ratio: var(--aspect-ratio-vertical);
    }

    & img {
      width: 100%;
      height: auto;
      border-radius: var(--border-radius-slight);
    }
  }

  & .item-wrapper {
    width: 100%;
    height: 100%;
    position: relative;
    display: flex;

    &.shadow::after {
      position: absolute;
      z-index: 1;
      content: '';
      top: 0;
      left: 0;
      box-shadow: inset 0 -85px 60px -60px var(--black);
      width: 100%;
      height: 100%;
      border: var(--border-default);
      border-radius: var(--border-radius-slight);
      transition-property: border-color;
      transition-timing-function: var(--transition-ease-in-out);
      transition-duration: 300ms;
    }
  }

  & a:hover .item-wrapper.shadow::after,
  & a:active .item-wrapper.shadow::after {
    border-color: var(--accent-color-hover)
  }

  & a:focus .item-wrapper.shadow::after,
  & a:focus-within .item-wrapper.shadow::after {
    border: 0;
    outline: var(----outline-default);
  }

  & .meta-text {
    position: absolute;
    z-index: 2;
    padding: 0 var(--sizing-sm);
    bottom: var(--sizing-sm);
    width: 100%;
    box-sizing: border-box;

    & .header,
    & .subheader {
      color: var(--color-lightest);
      font-size: var(--font-size-sm);
      line-height: 1.5;
      text-shadow: var(--black) 0px 0px 10px;
    }

    & .header {
      font-weight: var(--font-weight-bold);
    }
  }
}

@media screen and (min-width: 768px) {
  :root {
    --grid-square: repeat(4, minmax(0, 1fr));
    --grid-vertical: repeat(6, minmax(0, 1fr));
  }
}