:root {
	--highlight: yellow;
	--background: rgb(80, 100, 200);
	--primary: white;
	--alert: rgb(220, 50, 50);
}
body {
	background: lightgray;
	font-family: Verdana, Arial, sans-serif;
	font-size: 20pt;
	color: black;
	margin: 0;
	padding: 0;
}
header {
	display: grid;
	grid-template-columns: 50% 50%;
	background: var(--background);
	color: var(--primary);
	padding: 1rem;
}
header h1 {
	font-size: 140%;
	font-weight: normal;
	padding: 0;
	margin: 0;
}
header h1 strong {
	font-weight: bolder;
	color: var(--highlight);
}
header .time {
	text-align: right;
}
main {
	padding: 1rem;
}
.load-error-overlay {
	position: fixed;
	inset: 0;
	background: rgba(0, 0, 0, 0.6);
	display: flex;
	align-items: center;
	justify-content: center;
	z-index: 900;
}
.load-error-overlay[hidden] {
	display: none;
}
.load-error-modal {
	width: 80%;
	height: 80%;
	background: var(--alert);
	color: white;
	border-radius: 10px;
	display: flex;
	flex-direction: column;
	align-items: center;
	justify-content: center;
	text-align: center;
	padding: 2rem;
}
.load-error-modal h2 {
	font-size: 250%;
	margin: 0 0 1rem;
}
.load-error-modal p {
	font-weight: bold;
	font-size: 130%;
	margin: 0;
}
.schedule {
	list-style-type: none;
	padding: 0;
	margin: 0;
	min-height: 22vh;
}
#today-schedule.schedule {
	min-height: 32vh;
}
.schedule li {
	display: flex;
	flex-direction: row;
	flex-wrap: no-wrap;
	margin-bottom: 1rem;
	background: white;
}
.schedule li time {
	background: var(--background);
	padding: 0.5rem 1rem;
	font-size: 120%;
	font-weight: bold;
	color: var(--primary);
	border-radius: 5px 0 0 5px;
}
.schedule li card {
	border: 2px var(--background) solid;
	border-radius: 0 5px 5px 0;
	padding: 0.5rem 1rem;
	width: auto;
	flex-grow: 2;
}
.schedule li.past {
	opacity: 0.4;
}
.schedule li.empty {
	background: none;
	color: #666;
	font-style: italic;
	padding: 0.5rem;
}
.calendar {
	border-top: 1px #888 solid;
	margin-top: 3rem;
	padding-top: 2rem;
	display: grid;
	grid-template-columns: 50% 50%;
	font-size: 70%;
	gap: 0.5rem;
}
.calendar card {
	border: 2px var(--background) solid;
	border-radius: 5px;
}
.calendar card h2 {
	margin: 0;
	padding: 0.5rem 1rem;
	font-size: 130%;
	background: var(--background);
	color: var(--primary);
}
.calendar card li {
	margin-bottom: 0;
	border-bottom: 1px var(--background) solid;
}
.calendar card time {
	border-radius: 0;
}
.calendar card card {
	border: none;
}

.alert-overlay {
	position: fixed;
	inset: 0;
	background: var(--alert);
	color: white;
	display: flex;
	align-items: center;
	justify-content: center;
	padding: 2rem;
	z-index: 1000;
	animation: alert-flash 1s step-start infinite;
}

.alert-overlay[hidden] {
	display: none;
}

.alert-modal {
	max-width: 40rem;
	width: 100%;
	text-align: center;
}

.alert-modal h2 {
	font-size: 250%;
	margin: 0 0 1rem;
}

.alert-modal p {
	margin: 0.5rem 0;
}

.alert-event-name {
	font-size: 150%;
	font-weight: bold;
	margin: 1rem 0 2rem;
}

.alert-slider {
	position: relative;
	height: 4.5rem;
	background: rgba(255, 255, 255, 0.25);
	border-radius: 999px;
	margin-top: 2rem;
	overflow: hidden;
}

.alert-slider-label {
	position: absolute;
	inset: 0;
	display: flex;
	align-items: center;
	justify-content: center;
	font-size: 110%;
	pointer-events: none;
}

.alert-slider-thumb {
	position: absolute;
	top: 0.25rem;
	left: 0.25rem;
	width: 4rem;
	height: 4rem;
	border-radius: 50%;
	background: white;
	touch-action: none;
	cursor: grab;
}

@keyframes alert-flash {
	50% {
		filter: brightness(1.3);
	}
}
