.viewer-list {
	display: grid;
	gap: 1rem;
	list-style: none;
	padding: 0;
}

.viewer-list li,
.metadata {
	border: 1px solid #ddd;
	border-radius: 0.5rem;
	padding: 1rem;
}

.metadata {
	display: grid;
	gap: 0.5rem 1rem;
	grid-template-columns: max-content 1fr;
}

.metadata dt {
	font-weight: 700;
}

.mode-nav {
	border-bottom: 1px solid #ddd;
	display: flex;
	flex-wrap: wrap;
	gap: 0.75rem 1rem;
	padding-bottom: 1rem;
}

.source {
	background: #f7f7f7;
	border: 1px solid #ddd;
	border-radius: 0.5rem;
	overflow: auto;
	padding: 1rem;
	tab-size: 2;
}

.preview {
	border: 1px solid #ddd;
	border-radius: 0.5rem;
	height: 70vh;
	width: 100%;
}

.warning {
	background: #fff4ce;
	border: 1px solid #f0c36d;
	border-radius: 0.5rem;
	padding: 1rem;
}

.hljs-comment,
.hljs-quote {
	color: #59636e;
}

.hljs-keyword,
.hljs-selector-tag,
.hljs-subst {
	color: #cf222e;
}

.hljs-literal,
.hljs-number,
.hljs-string,
.hljs-title {
	color: #0a3069;
}

.hljs-attr,
.hljs-attribute,
.hljs-name,
.hljs-selector-id {
	color: #8250df;
}

/*
	Mobile breakpoint - stack the metadata list, shrink the source font slightly,
	and force the viewer card grid to a single column. The preview iframe is
	already full width so it just keeps its 70vh height.
*/
@media (max-width: 719px) {
	.viewer-list {
		grid-template-columns: 1fr;
	}

	.metadata {
		grid-template-columns: 1fr;
		row-gap: 0.25rem;
	}

	.metadata dt {
		margin-top: 0.5rem;
	}

	.metadata dt:first-of-type {
		margin-top: 0;
	}

	.metadata dd {
		margin: 0;
		overflow-wrap: anywhere;
	}

	.metadata dd code {
		overflow-wrap: anywhere;
		word-break: break-all;
	}

	.source {
		font-size: 0.85rem;
		padding: 0.75rem;
	}

	.preview {
		height: 60vh;
	}
}
