@media only screen and (max-width: 40em) {

  #modal {
    height: 100vh;
    width: 100vw;
  }
  .modal-close {
    grid-column: 4 / 5;
    grid-row: 1 / 2;
    justify-self: end;
    align-self: end;
  }
  .modal-container {
    grid-template-columns: repeat(4, 1fr);
    grid-template-rows: 1fr 5fr 2fr 10fr 1fr 4fr;
    gap: 0.5em;
  }

  .modal-img {
    grid-column: 1 / 5;
    grid-row: 2 / 3;
    justify-self:center;
  }

  .modal-title {
  grid-column: 1 / 5;
  grid-row: 3 / 4;
  }

  .modal-content {
  grid-column: 1 / 5;
  grid-row: 4 / 5;
  overflow: scroll;
  }

  .modal-extra {
  grid-column: 1 / 5;
  grid-row: 6 / 7;
  overflow: scroll;
  }

  .modal-nav {
  grid-column: 1 / 5;
  grid-row: 5 / 6;
  }

  .modal-nav a {
    font-size: 1em;
  }

  .modal-nav-prev {
  grid-column: 1 / 3;
  justify-self: start;
  align-self: center;
  }

  .modal-nav-next {
  grid-column: 3 / 5;
  justify-self: end;
  align-self: center;
  }

}

@media only screen and (min-width: 40em) {

  #modal {
    height: 95vh;
    width: 95vw;
  }

  .modal-close {
    padding: 1em;
    grid-column: 6 / 7;
    grid-row: 1 / 2;
    justify-self: end;
    align-self: start;
  }

  .modal-container {
    grid-template-columns: repeat(6, 1fr);
    grid-template-rows: repeat(6, 1fr);
    gap: 2em;
    max-width: 80em;
  }

  .modal-img {
    grid-column: 1 / 3;
    grid-row: 1 / 3;
    justify-self:end;
  }

  .modal-title {
  grid-column: 3 / 6;
  grid-row: 1 / 2;
  }

  .modal-content {
  grid-column: 3 / 6;
  grid-row: 2 / 7;
  overflow: scroll;
  }

  .modal-extra {
  grid-column: 1 / 3;
  grid-row: 3 / 6;
  justify-self:end;
  align-self: start;
  }

  .modal-nav {
  grid-column: 1 / 7;
  grid-row: 6 / 7;
  }
  
  .modal-nav-prev {
  grid-column: 1 / 2;
  justify-self:center;
  align-self: start;
  }

  .modal-nav-next {
  grid-column: 6 / 7;
  justify-self:center;
  align-self: start;
  }
}

.body-blackout {
  position: fixed;
  overscroll-behavior: contain;
  z-index: 1010;
  left: 0;
  top: 0;
  width: 100%;
  height: 100%;
  background-color: rgba(0, 0, 0, .55);
  display: none;

  &.is-blacked-out {
    display: block;
  }
}   

#modal {
  position: fixed;
  overscroll-behavior: contain;
  left: 50%;
  top: 50%;
  transform: translate(-50%, -50%);
  z-index: 1011;
  visibility: hidden;
  pointer-events: none;
  background-color: white;

  &.is--visible {
    visibility: visible;
    pointer-events: auto;
  }
}

.modal-container {
	display: grid;
  margin: 0 auto;
  padding:1%;
  width: 98%;
  height: 98%;
}

.modal-img {
  
  align-self: end;
  max-width: 100%;
  max-height: 100%;
  object-fit: contain;
}

.modal-img img, .modal-img svg {
	width: 100%;
}

.modal-title {
  justify-self:start;
  align-self: end;
}

.modal-content {
  height:100%;
  justify-self:start;
  align-self: start;
}

.modal-content ul li {
	font-family: 'IBM Plex Mono';
	font-weight: 200;
	font-style: italic;
}

.modal-extra {
  text-align: right;
  padding-left:1em;
}

.modal-extra p, .modal-nav, .modal-close {
	font-family: 'IBM Plex Sans SemiCondensed';
}

.modal-close a {
	font-size: 2em;
	text-decoration: none;
  cursor: pointer;
  padding: 1em;
}

.modal-nav {
	display: grid;
  grid-template-columns: subgrid;
}

.modal-nav-prev, .modal-nav-next {
    border: 1px solid;
    border-radius: 5px;
    text-decoration: none;
    padding-left: 0.5em;
    padding-right: 0.5em;
    color: #000;
    border-color: #000;
    display: block;
}

.modal-nav-prev::before {
  content: "<\202F";
}

.modal-nav-next::after {
  content: "\202F>";
}

.modal-content p {
	font-family: 'IBM Plex Mono';
	font-style: italic;
	padding-bottom: 1em;
	margin-block: 0;
	font-weight: 300;
}

body:has(.is--visible) {
  overflow: hidden;
}