.modal {
  align-items: center;
  display: none;
  height: 100%;
  inset: 0;
  overflow: auto;
  padding: var(--space-large);
  position: fixed;
  width: 100%;
}

.modal[open] {
  display: grid;
}

.modal:modal {
  max-height: none;
  max-width: none;
}

.modal::backdrop {
  background: none;
}

.modal__backdrop {
  backdrop-filter: blur(1em);
  -webkit-backdrop-filter: blur(1em);
  background: oklch(var(--oklch-canvas) / 0.75);
  cursor: zoom-out;
  inset: 0;
  position: fixed;
  user-select: none;
  -webkit-user-select: none;
}

.modal__container {
  display: grid;
  position: relative;
}

.modal__close {
  background: url('/assets/images/general/icon-close.svg') center / 0.8em auto no-repeat var(--color-blue);
  border: max(1px, 0.05em) solid var(--color-blue);
  border-radius: 100%;
  box-shadow: var(--box-shadow-button);
  cursor: pointer;
  height: 2.5em;
  position: absolute;
  right: -1.25em;
  top: -1.25em;
  width: 2.5em;
}

.modal__image,
.modal__video {
  border-radius: var(--border-radius);
  box-shadow: var(--box-shadow);
  display: grid;
  overflow: clip;
  user-select: none;
  -webkit-user-select: none;
}

.modal__image {
  cursor: zoom-out;
}

.modal__video {
  position: relative;
}

.modal__video button {
  cursor: pointer;
  display: grid;
  inset: 0;
  place-items: center;
  position: absolute;
}

.modal__video button:before,
.modal__video button:after {
  content: '';
  pointer-events: none;
  position: absolute;
}

.modal__video button:before {
  background: linear-gradient(
    180deg,
    oklch(var(--oklch-black) / 0.6),
    oklch(var(--oklch-black) / 0.15) 80%
  );
  inset: 0;
  transition: opacity var(--transition-slow);
}

.modal__video button:after {
  background: url('/assets/images/general/icon-play.svg') center / 1.3em auto no-repeat var(--color-white);
  border-radius: 100%;
  box-shadow: var(--box-shadow-modal);
  height: 3em;
  width: 3em;
}



.modal__video--playing button {
  display: none;
}



@media(hover: hover) {

  .modal__close {
    transition:
      background-color var(--transition),
      border-color var(--transition),
      transform var(--transition)
    ;
    will-change: transform;
  }

  .modal__close:hover {
    background-color: var(--color-blue-hover);
    border-color: var(--color-blue-hover);
    transform: scale(1.06);
  }

  .modal__video button:before {
    transition: opacity var(--transition);
  }

  .modal__video button:after {
    transition: transform var(--transition);
    will-change: transform;
  }

  .modal__video button:hover:before {
    opacity: 0.9;
  }

  .modal__video button:hover:after {
    transform: scale(1.03);
  }

}



@media(min-width: 64em) {

  .modal {
    padding-inline: var(--space-xx-large);
  }

}
