body.is-modal-open {
	overflow: hidden;
}

.modal {
	position: fixed;
	inset: 0;
	display: grid;
	place-items: center;
	opacity: 0;
	visibility: hidden;
	pointer-events: none;
	transition: opacity .25s ease, visibility 0s linear .25s;
}

.modal.is-open {
	opacity: 1;
	visibility: visible;
	pointer-events: auto;
	transition: opacity .25s ease, visibility 0s;
}

.modal__overlay {
	position: absolute;
	inset: 0;
	opacity: 0;
	transition: opacity .25s ease;
}

.modal.is-open .modal__overlay {
	opacity: 1;
}

.modal__content {
	position: relative;
	z-index: 10;

	width: min(90vw, 500px);
	margin: 10vh auto;
	padding: 2rem;

	background: #eee;
	border-radius: 8px;

	position: relative;
	transform: translateY(10px) scale(.98);
	opacity: 0;
	transition: transform .25s ease, opacity .25s ease;
}

.modal__close {
	position: absolute;
	top: 0.5rem;
	right: 0.5rem;

	background: none;
	border: none;
	font-size: 1.5rem;
	cursor: pointer;
}

.modal.is-open .modal__content {
	transform: translateY(0) scale(1);
	opacity: 1;
}

@media (prefers-reduced-motion: reduce) {
	.modal,
	.modal__overlay,
	.modal__content {
		transition: none !important;
	}
}