/*
 * DriftGuard styles. Plain CSS, no build step: native nesting, custom properties,
 * light-dark() and cascade layers. Layers are listed lowest priority first.
 */
@layer reset, tokens, base, layout, components, utilities;

@layer reset {
	*, *::before, *::after {
		box-sizing: border-box;
	}

	* {
		margin: 0;
	}

	img, svg {
		display: block;
		max-width: 100%;
	}

	input, button, select, textarea {
		font: inherit;
		color: inherit;
	}
}

@layer tokens {
	:root {
		color-scheme: light dark;

		&[data-theme="light"] {
			color-scheme: light;
		}

		&[data-theme="dark"] {
			color-scheme: dark;
		}

		--font-sans: ui-sans-serif, system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;
		--font-mono: ui-monospace, "SF Mono", Menlo, Consolas, monospace;

		--text-sm: 0.875rem;
		--text-base: 1rem;
		--text-lg: 1.125rem;
		--text-xl: clamp(1.375rem, 1.2rem + 0.8vw, 1.75rem);
		--text-hero: clamp(2rem, 1.4rem + 3vw, 3.5rem);

		--space-1: 0.25rem;
		--space-2: 0.5rem;
		--space-3: 0.75rem;
		--space-4: 1rem;
		--space-6: 1.5rem;
		--space-8: 2rem;
		--space-12: 3rem;

		--radius: 0.5rem;
		--radius-lg: 0.875rem;
		--content-width: 64rem;
		--form-width: 26rem;

		--bg: light-dark(oklch(98.5% 0.002 260), oklch(17% 0.01 260));
		--surface: light-dark(oklch(100% 0 0), oklch(21% 0.012 260));
		--surface-sunken: light-dark(oklch(96.5% 0.004 260), oklch(19% 0.01 260));
		--border: light-dark(oklch(91% 0.006 260), oklch(30% 0.014 260));
		--border-strong: light-dark(oklch(84% 0.008 260), oklch(40% 0.016 260));
		--text: light-dark(oklch(22% 0.015 260), oklch(94% 0.006 260));
		--text-muted: light-dark(oklch(50% 0.015 260), oklch(70% 0.012 260));

		--accent: light-dark(oklch(52% 0.19 268), oklch(70% 0.15 268));
		--accent-hover: light-dark(oklch(46% 0.2 268), oklch(76% 0.13 268));
		--accent-text: light-dark(oklch(99% 0 0), oklch(18% 0.02 268));
		--accent-soft: light-dark(oklch(95% 0.03 268), oklch(28% 0.06 268));

		--danger: light-dark(oklch(52% 0.19 25), oklch(72% 0.15 25));
		--danger-soft: light-dark(oklch(96% 0.03 25), oklch(27% 0.06 25));
		--success: light-dark(oklch(50% 0.13 150), oklch(74% 0.14 150));
		--success-soft: light-dark(oklch(96% 0.035 150), oklch(27% 0.05 150));

		--shadow: 0 1px 2px light-dark(oklch(0% 0 0 / 0.05), oklch(0% 0 0 / 0.4)),
			0 4px 16px light-dark(oklch(0% 0 0 / 0.04), oklch(0% 0 0 / 0.3));
		--chart-findings: light-dark(oklch(60% 0.15 268), oklch(70% 0.13 268));
		--chart-incidents: light-dark(oklch(65% 0.15 150), oklch(72% 0.14 150));

		--focus-ring: 0 0 0 3px color-mix(in oklch, var(--accent) 35%, transparent);
	}
}

@layer base {
	html {
		-webkit-text-size-adjust: 100%;
	}

	body {
		min-height: 100dvh;
		display: flex;
		flex-direction: column;
		background: var(--bg);
		color: var(--text);
		font-family: var(--font-sans);
		font-size: var(--text-base);
		line-height: 1.55;
		-webkit-font-smoothing: antialiased;
	}

	h1, h2, h3 {
		line-height: 1.2;
		letter-spacing: -0.015em;
		text-wrap: balance;
	}

	h1 {
		font-size: var(--text-xl);
		font-weight: 650;
	}

	h2 {
		font-size: var(--text-lg);
		font-weight: 600;
	}

	p {
		text-wrap: pretty;
	}

	a {
		color: var(--accent);
		text-decoration: none;

		&:hover {
			text-decoration: underline;
			text-underline-offset: 0.2em;
		}
	}

	:focus-visible {
		outline: 2px solid var(--accent);
		outline-offset: 2px;
	}

	code {
		font-family: var(--font-mono);
		font-size: 0.9em;
	}

	.icon {
		width: 1.25rem;
		height: 1.25rem;
		flex: none;
	}
}

@layer layout {
	.container {
		width: 100%;
		max-width: var(--content-width);
		margin-inline: auto;
		padding-inline: var(--space-4);

		@media (min-width: 40rem) {
			padding-inline: var(--space-6);
		}
	}

	.site-header {
		position: sticky;
		top: 0;
		z-index: 10;
		background: color-mix(in oklch, var(--bg) 85%, transparent);
		backdrop-filter: blur(10px);
		border-bottom: 1px solid var(--border);

		& .container {
			display: flex;
			align-items: center;
			gap: var(--space-4);
			min-height: 3.5rem;
		}
	}

	.brand {
		display: inline-flex;
		align-items: center;
		gap: var(--space-2);
		color: var(--text);
		font-weight: 650;
		letter-spacing: -0.01em;

		&:hover {
			text-decoration: none;
		}

		& svg {
			width: 1.375rem;
			height: 1.375rem;
			color: var(--accent);
		}
	}

	.site-nav {
		display: flex;
		align-items: center;
		gap: var(--space-1);
		margin-inline-start: auto;

		& a:not(.button) {
			color: var(--text-muted);
			padding: var(--space-2) var(--space-3);
			border-radius: var(--radius);
			font-size: var(--text-sm);
			font-weight: 500;

			&:hover, &[aria-current="page"] {
				color: var(--text);
				background: var(--surface-sunken);
				text-decoration: none;
			}
		}

		& form {
			display: contents;
		}
	}

	main {
		flex: 1;
		padding-block: var(--space-8) var(--space-12);

		@media (min-width: 40rem) {
			padding-block: var(--space-12);
		}
	}

	.site-footer {
		border-top: 1px solid var(--border);
		padding-block: var(--space-6);
		color: var(--text-muted);
		font-size: var(--text-sm);
	}

	.narrow {
		max-width: 36rem;
	}

	/* Signed-in pages: sidebar and content. The sidebar slides in on narrow screens. */
	.app-body {
		background: var(--surface-sunken);
	}

	.app {
		display: grid;
		grid-template-columns: minmax(0, 1fr);
		min-height: 100dvh;

		@media (min-width: 64rem) {
			grid-template-columns: 16rem minmax(0, 1fr);
		}
	}

	/*
	 * A popover, so phones open it with a plain button (popovertarget) and get Escape,
	 * light dismiss and a backdrop for free. On desktop it is an ordinary column.
	 */
	.sidebar {
		display: flex;
		flex-direction: column;
		gap: var(--space-4);
		height: 100dvh;
		max-height: none;
		margin: 0;
		padding: var(--space-4) var(--space-3);
		border: 0;
		background: var(--surface-sunken);
		color: var(--text);
		overflow-y: auto;

		@media (min-width: 64rem) {
			position: sticky;
			inset: 0 auto auto 0;
			width: auto;
		}

		@media (max-width: 63.99rem) {
			inset: 0 auto 0 0;
			width: min(18rem, 85vw);
			box-shadow: var(--shadow);

			&:not(:popover-open) {
				display: none;
			}

			&::backdrop {
				background: oklch(0% 0 0 / 0.35);
			}
		}
	}

	.sidebar-top {
		display: flex;
		align-items: center;
		justify-content: space-between;
		padding-inline: var(--space-3);
		min-height: 2.5rem;
	}

	.sidebar-nav {
		display: grid;
		gap: 1px;
	}

	.nav-section {
		margin-block: var(--space-4) var(--space-1);
		padding-inline: var(--space-3);
		font-size: 0.75rem;
		font-weight: 550;
		color: var(--text-muted);
	}

	.sidebar-bottom {
		display: grid;
		gap: 1px;
		margin-block-start: auto;
	}

	.app-main {
		display: flex;
		flex-direction: column;
		min-width: 0;

		@media (min-width: 64rem) {
			padding: var(--space-2) var(--space-2) var(--space-2) 0;
		}
	}

	.app-topbar {
		display: flex;
		align-items: center;
		gap: var(--space-2);
		padding: var(--space-2) var(--space-3);
		background: var(--surface-sunken);
		border-bottom: 1px solid var(--border);

		@media (min-width: 64rem) {
			display: none;
		}
	}

	.app-content {
		flex: 1;
		padding: var(--space-6) var(--space-4) var(--space-12);
		background: var(--bg);

		@media (min-width: 40rem) {
			padding: var(--space-8);
		}

		@media (min-width: 64rem) {
			border: 1px solid var(--border);
			border-radius: var(--radius-lg);
		}
	}

	/* Single centered card: sign in, sign up, invitations. */
	.auth {
		max-width: var(--form-width);
		margin-inline: auto;
	}

	.page-header {
		display: flex;
		flex-wrap: wrap;
		align-items: end;
		justify-content: space-between;
		gap: var(--space-4);
		margin-block-end: var(--space-6);
	}

	.stack {
		display: grid;
		gap: var(--space-6);
		align-content: start;
	}

	/* Secondary panels side by side, as many as fit; one column on phones. */
	.panels {
		display: grid;
		gap: var(--space-6);
		align-items: start;
		grid-template-columns: repeat(auto-fit, minmax(min(100%, 18rem), 1fr));
	}
}

@layer components {
	.card {
		background: var(--surface);
		border: 1px solid var(--border);
		border-radius: var(--radius-lg);
		box-shadow: var(--shadow);
		padding: var(--space-6);

		@media (min-width: 40rem) {
			padding: var(--space-8);
		}

		&.flush {
			padding: 0;
			overflow: hidden;
		}

		& > h2 {
			margin-block-end: var(--space-4);
		}
	}

	.card-header {
		display: flex;
		align-items: center;
		justify-content: space-between;
		gap: var(--space-4);
		padding: var(--space-4) var(--space-6);
		border-bottom: 1px solid var(--border);
	}

	.lead {
		color: var(--text-muted);
		margin-block-start: var(--space-2);
	}

	.form {
		display: grid;
		gap: var(--space-4);

		& .actions {
			margin-block-start: var(--space-2);
		}
	}

	.field {
		display: grid;
		gap: var(--space-1);

		& > span:first-child {
			font-size: var(--text-sm);
			font-weight: 550;
		}

		& .hint {
			font-size: var(--text-sm);
			color: var(--text-muted);
		}
	}

	input:not([type="hidden"]), select {
		width: 100%;
		min-height: 2.625rem;
		padding: var(--space-2) var(--space-3);
		background: var(--surface);
		border: 1px solid var(--border-strong);
		border-radius: var(--radius);
		transition: border-color 0.15s, box-shadow 0.15s;

		&:hover {
			border-color: color-mix(in oklch, var(--border-strong), var(--text) 20%);
		}

		&:focus {
			outline: none;
			border-color: var(--accent);
			box-shadow: var(--focus-ring);
		}
	}

	select {
		width: auto;
		padding-inline-end: var(--space-8);
		appearance: none;
		background-image: linear-gradient(45deg, transparent 50%, currentColor 50%),
			linear-gradient(-45deg, transparent 50%, currentColor 50%);
		background-position: right 1rem center, right 0.7rem center;
		background-size: 0.3rem 0.3rem;
		background-repeat: no-repeat;
	}

	.button, button {
		display: inline-flex;
		align-items: center;
		justify-content: center;
		gap: var(--space-2);
		min-height: 2.625rem;
		padding: var(--space-2) var(--space-4);
		border: 1px solid transparent;
		border-radius: var(--radius);
		background: var(--accent);
		color: var(--accent-text);
		font-size: var(--text-sm);
		font-weight: 600;
		white-space: nowrap;
		cursor: pointer;
		transition: background-color 0.15s, border-color 0.15s, color 0.15s;

		&:hover {
			background: var(--accent-hover);
			text-decoration: none;
		}

		&:focus-visible {
			outline: none;
			box-shadow: var(--focus-ring);
		}

		&.secondary {
			background: var(--surface);
			color: var(--text);
			border-color: var(--border-strong);

			&:hover {
				background: var(--surface-sunken);
			}
		}

		&.ghost {
			background: transparent;
			color: var(--text-muted);

			&:hover {
				background: var(--surface-sunken);
				color: var(--text);
			}
		}

		&.danger {
			background: transparent;
			color: var(--danger);
			border-color: color-mix(in oklch, var(--danger) 35%, transparent);

			&:hover {
				background: var(--danger-soft);
			}
		}

		&.small {
			min-height: 2rem;
			padding: var(--space-1) var(--space-3);
		}

		&.block {
			width: 100%;
		}
	}

	.alert {
		padding: var(--space-3) var(--space-4);
		border-radius: var(--radius);
		border: 1px solid;
		font-size: var(--text-sm);

		&.error {
			background: var(--danger-soft);
			border-color: color-mix(in oklch, var(--danger) 30%, transparent);
			color: var(--danger);
		}

		&.success {
			background: var(--success-soft);
			border-color: color-mix(in oklch, var(--success) 30%, transparent);
			color: var(--success);
		}

		&.info {
			background: var(--accent-soft);
			border-color: color-mix(in oklch, var(--accent) 25%, transparent);
			color: var(--text);
		}
	}

	.badge {
		display: inline-block;
		padding: 0.125rem var(--space-2);
		border-radius: 999px;
		font-size: 0.75rem;
		font-weight: 600;
		letter-spacing: 0.02em;
		text-transform: lowercase;
		background: var(--surface-sunken);
		color: var(--text-muted);
		border: 1px solid var(--border);

		&.owner {
			background: var(--accent-soft);
			color: var(--accent);
			border-color: transparent;
		}
	}

	/* One-time link with a copy button. */
	.secret {
		display: grid;
		gap: var(--space-3);

		& .value {
			display: flex;
			gap: var(--space-2);
			align-items: stretch;

			& code {
				flex: 1;
				min-width: 0;
				padding: var(--space-2) var(--space-3);
				background: var(--surface);
				border: 1px solid var(--border-strong);
				border-radius: var(--radius);
				overflow-wrap: anywhere;
				align-content: center;
			}
		}
	}

	/* Rows on wide screens, stacked cards on narrow ones. */
	.members {
		container-type: inline-size;

		& table {
			width: 100%;
			border-collapse: collapse;
			font-size: var(--text-sm);
		}

		& th {
			text-align: start;
			font-weight: 550;
			color: var(--text-muted);
			padding: var(--space-3) var(--space-6);
			background: var(--surface-sunken);
			border-bottom: 1px solid var(--border);
		}

		& td {
			padding: var(--space-3) var(--space-6);
			border-bottom: 1px solid var(--border);
			vertical-align: middle;
		}

		& tr:last-child td {
			border-bottom: 0;
		}

		/* Role and actions shrink to their content; the member column takes the rest. */
		& :is(th, td):not(:first-child) {
			width: 1%;
			white-space: nowrap;
		}

		& tr.disabled td {
			color: var(--text-muted);
		}

		& .who {
			display: grid;

			& strong {
				font-weight: 550;
			}

			& span {
				color: var(--text-muted);
				overflow-wrap: break-word;
			}
		}

		& .row-actions {
			display: flex;
			gap: var(--space-2);
			justify-content: end;
		}

		& .inline {
			display: inline-flex;
			gap: var(--space-2);
			align-items: center;
		}

		& select {
			min-height: 2rem;
			padding-block: var(--space-1);
		}

		@container (max-width: 34rem) {
			& thead {
				display: none;
			}

			& tr {
				display: grid;
				gap: var(--space-2);
				padding: var(--space-4);
				border-bottom: 1px solid var(--border);
			}

			& tr:last-child {
				border-bottom: 0;
			}

			& td, & td:not(:first-child) {
				width: auto;
				padding: 0;
				border: 0;
			}

			& .row-actions {
				flex-wrap: wrap;
				justify-content: start;
			}
		}
	}

	.empty {
		padding: var(--space-6);
		color: var(--text-muted);
		text-align: center;
		font-size: var(--text-sm);
	}

	.invites {
		display: grid;
		gap: var(--space-3);
		padding: 0;
		list-style: none;

		& li {
			display: flex;
			flex-wrap: wrap;
			align-items: center;
			justify-content: space-between;
			gap: var(--space-2);
			font-size: var(--text-sm);
		}

		& .meta {
			display: grid;
			min-width: 0;

			& span {
				overflow-wrap: break-word;
			}

			& small {
				color: var(--text-muted);
			}
		}
	}

	.hero {
		display: grid;
		gap: var(--space-6);
		justify-items: center;
		text-align: center;
		padding-block: var(--space-12);

		& h1 {
			font-size: var(--text-hero);
			font-weight: 700;
			letter-spacing: -0.03em;
		}

		& .lead {
			max-width: 34rem;
			font-size: var(--text-lg);
		}

		& .cta {
			display: flex;
			flex-wrap: wrap;
			gap: var(--space-3);
			justify-content: center;
		}
	}

	.status-code {
		font-size: var(--text-hero);
		font-weight: 700;
		color: var(--text-muted);
		letter-spacing: -0.03em;
	}
}

@layer components {
	.nav-item {
		display: flex;
		align-items: center;
		gap: var(--space-3);
		width: 100%;
		min-height: 2.25rem;
		padding: var(--space-2) var(--space-3);
		border: 0;
		border-radius: var(--radius);
		background: transparent;
		color: var(--text);
		font-size: var(--text-sm);
		font-weight: 500;
		text-align: start;
		cursor: pointer;

		& .icon {
			width: 1.125rem;
			height: 1.125rem;
			flex: none;
			color: var(--text-muted);
		}

		&:hover {
			background: color-mix(in oklch, var(--text) 6%, transparent);
			color: var(--text);
			text-decoration: none;
		}

		&[aria-current="page"] {
			background: var(--surface);
			box-shadow: 0 0 0 1px var(--border);

			& .icon {
				color: var(--accent);
			}
		}

		&[aria-disabled="true"] {
			cursor: default;
			color: var(--text-muted);

			&:hover {
				background: transparent;
				color: var(--text-muted);
			}
		}
	}

	/* In components, after .button, so it can hide a button. */
	.sidebar-close {
		@media (min-width: 64rem) {
			display: none;
		}
	}

	.theme-toggle {
		& .switch {
			margin-inline-start: auto;
			position: relative;
			width: 2.25rem;
			height: 1.25rem;
			border-radius: 999px;
			background: var(--border-strong);
			transition: background-color 0.15s;

			&::after {
				content: "";
				position: absolute;
				inset: 0.125rem auto 0.125rem 0.125rem;
				aspect-ratio: 1;
				border-radius: 50%;
				background: var(--surface);
				box-shadow: 0 1px 2px oklch(0% 0 0 / 0.2);
				transition: translate 0.15s;
			}
		}

		&[aria-checked="true"] .switch {
			background: var(--accent);

			&::after {
				translate: 1rem 0;
			}
		}
	}

	.user-menu {
		position: relative;
		margin-block-start: var(--space-3);
		padding-block-start: var(--space-3);
		border-top: 1px solid var(--border);

		& summary {
			display: flex;
			align-items: center;
			gap: var(--space-3);
			padding: var(--space-2);
			border-radius: var(--radius);
			cursor: pointer;
			list-style: none;

			&::-webkit-details-marker {
				display: none;
			}

			&:hover {
				background: color-mix(in oklch, var(--text) 6%, transparent);
			}

			& > .icon {
				width: 1.125rem;
				height: 1.125rem;
				margin-inline-start: auto;
				color: var(--text-muted);
			}
		}

		& .user-name {
			display: grid;
			min-width: 0;
			font-size: var(--text-sm);
			line-height: 1.3;

			& strong, & small {
				overflow: hidden;
				text-overflow: ellipsis;
				white-space: nowrap;
			}

			& strong {
				font-weight: 550;
			}

			& small {
				color: var(--text-muted);
			}
		}

		& .menu {
			position: absolute;
			inset: auto 0 calc(100% + var(--space-1)) 0;
			display: grid;
			padding: var(--space-1);
			background: var(--surface);
			border: 1px solid var(--border);
			border-radius: var(--radius);
			box-shadow: var(--shadow);

			& a, & button {
				display: flex;
				align-items: center;
				gap: var(--space-3);
				width: 100%;
				min-height: 2.25rem;
				padding: var(--space-2) var(--space-3);
				border: 0;
				border-radius: calc(var(--radius) - 2px);
				background: transparent;
				color: var(--text);
				font-size: var(--text-sm);
				font-weight: 500;
				justify-content: start;

				&:hover {
					background: var(--surface-sunken);
					text-decoration: none;
				}
			}

			& .icon {
				width: 1rem;
				height: 1rem;
				color: var(--text-muted);
			}
		}
	}

	.avatar {
		display: inline-grid;
		place-items: center;
		flex: none;
		width: 2rem;
		height: 2rem;
		border-radius: 50%;
		background: var(--accent-soft);
		color: var(--accent);
		font-size: 0.75rem;
		font-weight: 650;
	}

	.brand .icon {
		width: 1.375rem;
		height: 1.375rem;
		color: var(--accent);
	}

	/* Overview: four figures, then chart and latest incidents. */
	.stats {
		display: grid;
		gap: var(--space-4);
		grid-template-columns: repeat(auto-fit, minmax(min(100%, 14rem), 1fr));
	}

	.stat {
		display: grid;
		gap: var(--space-2);
		align-content: start;

		&.card {
			padding: var(--space-6);
		}

		& header {
			display: flex;
			align-items: start;
			justify-content: space-between;
			gap: var(--space-2);
		}

		& h2 {
			font-size: var(--text-sm);
			font-weight: 500;
			color: var(--text-muted);
			letter-spacing: 0;
		}

		& .value {
			font-size: 1.875rem;
			font-weight: 650;
			letter-spacing: -0.02em;
			line-height: 1.1;
			font-variant-numeric: tabular-nums;

			& small {
				font-size: var(--text-sm);
				font-weight: 500;
				color: var(--text-muted);
				letter-spacing: 0;
			}
		}

		& .label {
			display: flex;
			align-items: center;
			gap: var(--space-2);
			margin-block-start: var(--space-2);
			font-size: var(--text-sm);
			font-weight: 550;

			& .icon {
				width: 1rem;
				height: 1rem;
			}
		}

		& .detail {
			font-size: var(--text-sm);
			color: var(--text-muted);
		}
	}

	.trend {
		display: inline-flex;
		align-items: center;
		gap: var(--space-1);
		flex: none;
		padding: 0.125rem var(--space-2);
		border: 1px solid var(--border);
		border-radius: 999px;
		font-size: 0.75rem;
		font-weight: 600;

		& .icon {
			width: 0.875rem;
			height: 0.875rem;
		}
	}

	.dashboard-grid {
		display: grid;
		gap: var(--space-4);

		@media (min-width: 80rem) {
			grid-template-columns: minmax(0, 2fr) minmax(18rem, 1fr);
		}
	}

	.chart-header {
		display: flex;
		flex-wrap: wrap;
		align-items: start;
		justify-content: space-between;
		gap: var(--space-4);
		margin-block-end: var(--space-6);
	}

	.segmented {
		display: inline-flex;
		max-width: 100%;

		& .long {
			@media (max-width: 30rem) {
				display: none;
			}
		}

		padding: 0.1875rem;
		border: 1px solid var(--border);
		border-radius: var(--radius);
		background: var(--surface-sunken);

		& a {
			padding: var(--space-1) var(--space-3);
			border-radius: calc(var(--radius) - 3px);
			color: var(--text-muted);
			font-size: var(--text-sm);
			font-weight: 500;
			white-space: nowrap;

			&:hover {
				color: var(--text);
				text-decoration: none;
			}

			&[aria-current="page"] {
				background: var(--surface);
				color: var(--text);
				box-shadow: 0 1px 2px oklch(0% 0 0 / 0.08);
			}
		}
	}

	.chart {
		margin: 0;

		& svg {
			display: block;
			width: 100%;
			height: clamp(10rem, 22vw, 15rem);
			overflow: visible;
		}

		& path {
			vector-effect: non-scaling-stroke;
		}

		& .grid {
			stroke: var(--border);
			stroke-width: 1;
		}

		& .line {
			fill: none;
			stroke-width: 1.75;
		}

		& .line.findings {
			stroke: var(--chart-findings);
		}

		& .line.incidents {
			stroke: var(--chart-incidents);
		}

		& .area.findings {
			fill: url(#fill-findings);
		}

		& .area.incidents {
			fill: url(#fill-incidents);
		}

		& .stop-findings {
			stop-color: var(--chart-findings);
			stop-opacity: 0.35;
		}

		& .stop-incidents {
			stop-color: var(--chart-incidents);
			stop-opacity: 0.35;
		}

		& .fade {
			stop-opacity: 0.03;
		}

		& .axis {
			display: flex;
			justify-content: space-between;
			margin-block-start: var(--space-3);
			color: var(--text-muted);
			font-size: 0.75rem;
			font-variant-numeric: tabular-nums;

			/* Every other date on phones. */
			@media (max-width: 40rem) {
				& span:nth-child(even) {
					display: none;
				}
			}
		}
	}

	.legend {
		display: flex;
		gap: var(--space-4);
		margin-block-start: var(--space-4);
		padding: 0;
		list-style: none;
		font-size: var(--text-sm);
		color: var(--text-muted);

		& li::before {
			content: "";
			display: inline-block;
			width: 0.625rem;
			height: 0.625rem;
			margin-inline-end: var(--space-2);
			border-radius: 2px;
		}

		& .findings::before {
			background: var(--chart-findings);
		}

		& .incidents::before {
			background: var(--chart-incidents);
		}
	}
}

@layer utilities {
	.muted {
		color: var(--text-muted);
	}

	.small {
		font-size: var(--text-sm);
	}

	.center {
		text-align: center;
	}

	.visually-hidden {
		position: absolute;
		width: 1px;
		height: 1px;
		overflow: hidden;
		clip-path: inset(50%);
		white-space: nowrap;
	}
}

@media (prefers-reduced-motion: reduce) {
	* {
		transition: none !important;
	}
}
