/**
 * States & utilities (§54) + shared visual language.
 *//* Empty states */
.msi-empty {
	display: grid;
	justify-items: center;
	gap: 10px;
	text-align: center;
	padding-block: var(--msi-space-7);
	padding-inline: var(--msi-space-5);
}
.msi-empty--compact { padding-block: var(--msi-space-5); }
.msi-empty__icon {
	display: grid;
	place-items: center;
	width: 52px; height: 52px;
	border-radius: 50%;
	background: var(--msi-surface);
	border: 1px solid var(--msi-border);
	color: var(--ms-color-text-quaternary);
	margin-block-end: 4px;
}
.msi-empty__icon .msi-icon { width: 22px; height: 22px; }
.msi-empty__title { margin: 0; font-size: var(--msi-fs-h3); }
.msi-empty__text { margin: 0; color: var(--ms-color-text-quaternary); font-size: var(--msi-fs-meta); max-inline-size: 46ch; }
.msi-empty__cta { margin-block-start: var(--msi-space-3); }
/* Loading skeletons */
.msi-skeleton {
	background: linear-gradient(90deg, var(--msi-surface) 25%, var(--msi-surface-2) 50%, var(--msi-surface) 75%);
	background-size: 200% 100%;
	border-radius: var(--msi-radius-sm);
	animation: msi-shimmer 1.6s linear infinite;
}
.msi-skeleton--line { height: 14px; margin-block-end: 10px; }
.msi-skeleton--line:last-child { width: 62%; }
.msi-skeleton--block { height: 180px; }
.msi-skeleton--card { height: 260px; border-radius: var(--msi-radius-lg); }
@keyframes msi-shimmer {
	from { background-position: 200% 0; }
	to { background-position: -200% 0; }
}
/* Error pages (§54) */
.msi-errorpage {
	min-height: calc(100vh - var(--msi-header-h));
	display: grid;
	place-items: center;
	text-align: center;
	padding-block: var(--msi-space-8);
	position: relative;
	overflow: hidden;
}
.msi-errorpage::before {
	content: "";
	position: absolute;
	inset: 0;
	background-image: radial-gradient(circle at 1px 1px, var(--msi-border-strong) 1px, transparent 0);
	background-size: 32px 32px;
	opacity: 0.05;
	mask-image: radial-gradient(ellipse at center, black 20%, transparent 70%);
	-webkit-mask-image: radial-gradient(ellipse at center, black 20%, transparent 70%);
	pointer-events: none;
}
.msi-errorpage__inner {
	position: relative;
	display: grid;
	justify-items: center;
	gap: var(--msi-space-4);
	max-inline-size: 560px;
}
.msi-errorpage__code {
	font-family: var(--msi-font-data);
	font-size: clamp(4rem, 10vw, 7rem);
	font-weight: 600;
	color: var(--msi-gold);
	line-height: 1;
	letter-spacing: 0.04em;
}
.msi-errorpage__title { margin: 0; font-size: var(--msi-fs-h1); }
.msi-errorpage__text { margin: 0; color: var(--msi-text-2); max-inline-size: 48ch; }
.msi-errorpage__actions { display: flex; gap: var(--msi-space-3); flex-wrap: wrap; justify-content: center; margin-block-start: var(--msi-space-3); }
.msi-errorpage__mark { color: var(--msi-gold); opacity: 0.6; }
/* Maintenance (§54) */
.msi-maintenance {
	min-height: 100vh;
	display: grid;
	place-items: center;
	background: var(--msi-sunken);
}
.msi-maintenance__panel { text-align: center; display: grid; gap: var(--msi-space-4); justify-items: center; max-inline-size: 480px; padding: var(--msi-space-5); }
/* Utility classes */
.msi-text-muted { color: var(--ms-color-text-quaternary); }
.msi-text-2 { color: var(--msi-text-2); }
.msi-text-sm { font-size: var(--msi-fs-meta); }
.msi-text-xs { font-size: var(--msi-fs-caption); }
/* Wordmark spacing in titles */
.msi-kicker {
	font-family: var(--msi-font-data);
	font-size: var(--msi-fs-label);
	text-transform: uppercase;
	color: var(--msi-gold);
	padding: 0 10px;
}
/* Long-word protection for entity names/spec values *//* Print */
@media print {
	.msi-header, .msi-footer, .msi-subnav, .msi-actions, .msi-appsidebar, .msi-toasts { display: none !important; }
	body { background: #fff; color: #111; }
}
