.image-constrained {
  display: flex;
  flex-direction: row;
  align-items: center;
  justify-content: center;
}

.media-list {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(var(--media-container-width), 1fr));
  grid-auto-rows: 1fr;
  grid-gap: var(--padding-small);
}

.media-list:before {
  content: "";
  width: 0;
  padding-bottom: calc(100% + var(--media-header-height));
  grid-row: 1 / 1;
  grid-column: 1 / 1;
}

@mixin if-phone {
  .media-list {
    grid-template-columns: repeat(auto-fill, minmax(var(--media-small-container-width), 1fr));
  }
}

.media-box {
  background: var(--background-color);
  border: 1px solid var(--secondary-muted-color);
  border-radius: var(--border-radius-inner);
  overflow: hidden;
}

.media-box:first-child {
  grid-row: 1 / 1;
  grid-column: 1 / 1;
}

.media-box__header {
  display: flex;
  line-height: var(--media-header-height);
  padding: 0 var(--padding-small);
  justify-content: center;
  font-size: var(--font-tiny-size);
}

.media-box__header--link-row {
  display: grid;
  grid-template-columns: 1fr 1fr 1.5fr 1fr 1fr;
  text-align: center;
  width: fit-content;
}

.media-box__content {
  width: 100%;
  padding-top: 100%;
  position: relative;
  border-radius: 0 0 var(--border-radius-inner) var(--border-radius-inner);
  overflow: hidden;
}

.media-box__image {
  max-width: 100%;
  height: auto;
}

.media-box__content--featured .media-box__image {
  max-height: var(--media-featured-width);
}

.media-box__overlay {
  display: block;
  position: absolute;
  z-index: 4;
  min-width: 95%;
  text-align: left;
  font-weight: bold;
  word-wrap: break-word;
  color: var(--text-color);
  background: var(--primary-color);
  padding: 0 var(--padding-normal);
  line-height: var(--media-header-height);
  pointer-events: none;
  top: 0;
}

.media-box__overlay:nth-child(2) {
  top: var(--media-header-height);
}

.post-image-container,
.post-image-container img {
  width: var(--media-tiny-container-width);
  height: var(--media-tiny-container-width);
}

.media-tiny-container,
.media-tiny-container img {
  width: var(--media-tiny-container-width);
  height: var(--media-tiny-container-width);
}

.thumb-tiny,
.thumb-tiny img {
  max-width: var(--media-tiny-container-width);
  max-height: var(--media-tiny-container-width);
}

.image-container {
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
}

.image-container a {
  display: flex;
  max-height: 100%;
  width: 100%;
  height: auto;
}

/* For some reason tall images don't center properly within the container
    without this hack. I blame CSS. */

.image-container a img {
  max-height: 100%;
  margin: auto;
}

.image-container picture {
  display: inline-flex;
  justify-content: center;
  align-self: center;
  width: 100%;
  height: 100%;
}

.media-box__content .image-container {
  position: absolute;
  inset: 0;
}

.media__standalone {
  position: relative;
}

.thumb-tiny .media-box__overlay {
  width: 100%;
  max-width: 100%;
  padding: 0 var(--padding-tiny);
  line-height: var(--media-small-header-height);
  font-size: var(--font-micro-size);
}

.media-grid {
  display: grid;
  grid-template-columns: 1fr 1fr;
  grid-template-rows: auto;
  grid-gap: var(--padding-small);
}

.image-scaled {
  max-width: 100%;
}
