/* kacky.css — kacky-ds skin for Material for MkDocs (dark-only).
   Load via mkdocs.yml: extra_css: [stylesheets/kacky.css]
   Tokens are copied verbatim from kacky-ds. Never add new hex values here —
   if a color is missing, take it from the kacky-ds token sheet. */

:root {
	/* kacky-ds tokens */
	--kk-bg: #0a0d12;
	--kk-card: #10151b;
	--kk-card-2: #171e27;
	--kk-line: #212a37;
	--kk-fg: #e8eef7;
	--kk-mut: #9aa7ba;
	--kk-faint: #8b97a9;
	--kk-score: #7aa2f7;
	--kk-warn: #e0a35e;
	--kk-danger: #c7363d;
	--kk-success: #72d5a3;
	--kk-season-from: oklch(70% 0.25 45);
	--kk-season-via: oklch(64% 0.24 355);
	--kk-season-to: oklch(50% 0.22 300);
}

/* Single color scheme: register as `kacky` (mkdocs.yml palette.scheme: kacky) */
[data-md-color-scheme="kacky"] {
	color-scheme: dark;

	/* Surfaces & text */
	--md-default-bg-color: var(--kk-bg);
	--md-default-fg-color: var(--kk-fg);
	--md-default-fg-color--light: var(--kk-mut);
	--md-default-fg-color--lighter: var(--kk-faint);
	--md-default-fg-color--lightest: var(--kk-line);
	--md-typeset-color: var(--kk-fg);

	/* Header/chrome stays neutral (no colored app bar) */
	--md-primary-fg-color: var(--kk-card);
	--md-primary-bg-color: var(--kk-fg);
	--md-primary-bg-color--light: var(--kk-mut);
	--md-footer-bg-color: var(--kk-card);
	--md-footer-bg-color--dark: var(--kk-bg);
	--md-footer-fg-color: var(--kk-mut);
	--md-footer-fg-color--light: var(--kk-faint);

	/* Interactive = score blue (links, active nav, focus) */
	--md-accent-fg-color: var(--kk-score);
	--md-accent-fg-color--transparent: color-mix(
		in srgb,
		var(--kk-score) 10%,
		transparent
	);
	--md-typeset-a-color: var(--kk-score);

	/* Code */
	--md-code-bg-color: var(--kk-card);
	--md-code-fg-color: var(--kk-fg);
	--md-code-hl-color: color-mix(in srgb, var(--kk-score) 18%, transparent);
	--md-code-hl-keyword-color: var(--kk-score);
	--md-code-hl-string-color: var(--kk-success);
	--md-code-hl-number-color: var(--kk-warn);
	--md-code-hl-function-color: var(--kk-fg);
	--md-code-hl-comment-color: var(--kk-faint);

	/* Admonition tones (soft-tint recipe) */
	--md-admonition-fg-color: var(--kk-fg);
	--md-admonition-bg-color: var(--kk-card);
	--md-typeset-table-color: var(--kk-line);
}

/* Signature brand-gradient sweep: ONE identity moment — a 2px hairline on the header */
[data-md-color-scheme="kacky"] .md-header {
	border-bottom: 1px solid var(--kk-line);
	background: var(--kk-card);
}
[data-md-color-scheme="kacky"] .md-header::before {
	content: "";
	display: block;
	height: 2px;
	background: linear-gradient(
		90deg,
		var(--kk-season-from),
		var(--kk-season-via),
		var(--kk-season-to)
	);
}
[data-md-color-scheme="kacky"] .md-tabs {
	background: var(--kk-card);
	border-bottom: 1px solid var(--kk-line);
}

/* Search box: card-2 surface */
[data-md-color-scheme="kacky"] .md-search__form {
	background: var(--kk-card-2);
	border: 1px solid var(--kk-line);
	border-radius: 7px;
}

/* Sidebar nav: mut at rest, active item score-tinted (matches admin sidebar) */
[data-md-color-scheme="kacky"] .md-nav__link {
	color: var(--kk-mut);
	border-radius: 6px;
}
[data-md-color-scheme="kacky"] .md-nav__link:hover {
	color: var(--kk-fg);
	background: var(--kk-card-2);
}
[data-md-color-scheme="kacky"] .md-nav__link--active,
[data-md-color-scheme="kacky"] .md-nav__item--active > .md-nav__link {
	color: var(--kk-score);
	background: color-mix(in srgb, var(--kk-score) 10%, transparent);
	font-weight: 500;
}

/* Content: heading hairlines, links underline on hover only */
[data-md-color-scheme="kacky"] .md-typeset h2 {
	border-bottom: 1px solid var(--kk-line);
	padding-bottom: 0.3em;
}
[data-md-color-scheme="kacky"] .md-typeset a {
	text-decoration: none;
}
[data-md-color-scheme="kacky"] .md-typeset a:hover {
	text-decoration: underline;
	color: var(--kk-score);
}

/* Inline code + code blocks on card surfaces */
[data-md-color-scheme="kacky"] .md-typeset code {
	background: var(--kk-card-2);
	border: 1px solid var(--kk-line);
	border-radius: 5px;
}
[data-md-color-scheme="kacky"] .md-typeset pre > code {
	background: var(--kk-card);
	border: 1px solid var(--kk-line);
	border-radius: 8px;
}

/* Admonitions: kacky soft-tint pattern (border tone/25, bg tone/8, title in tone).
   Map Material's types onto the four kacky tones — do not introduce other admonition colors. */
[data-md-color-scheme="kacky"] .md-typeset .admonition {
	border-radius: 8px;
	border-width: 1px;
	box-shadow: none;
	background: var(--kk-card);
}
[data-md-color-scheme="kacky"] .md-typeset .admonition.note,
[data-md-color-scheme="kacky"] .md-typeset .admonition.info,
[data-md-color-scheme="kacky"] .md-typeset .admonition.abstract {
	border-color: color-mix(in srgb, var(--kk-score) 25%, transparent);
	background: color-mix(in srgb, var(--kk-score) 8%, transparent);
}
[data-md-color-scheme="kacky"] .md-typeset .note > .admonition-title {
	color: var(--kk-score);
	background: transparent;
}
[data-md-color-scheme="kacky"] .md-typeset .admonition.tip,
[data-md-color-scheme="kacky"] .md-typeset .admonition.success {
	border-color: color-mix(in srgb, var(--kk-success) 25%, transparent);
	background: color-mix(in srgb, var(--kk-success) 8%, transparent);
}
[data-md-color-scheme="kacky"]
	.md-typeset
	:is(.tip, .success)
	> .admonition-title {
	color: var(--kk-success);
	background: transparent;
}
[data-md-color-scheme="kacky"] .md-typeset .admonition.warning,
[data-md-color-scheme="kacky"] .md-typeset .admonition.question {
	border-color: color-mix(in srgb, var(--kk-warn) 25%, transparent);
	background: color-mix(in srgb, var(--kk-warn) 8%, transparent);
}
[data-md-color-scheme="kacky"]
	.md-typeset
	:is(.warning, .question)
	> .admonition-title {
	color: var(--kk-warn);
	background: transparent;
}
[data-md-color-scheme="kacky"] .md-typeset .admonition.danger,
[data-md-color-scheme="kacky"] .md-typeset .admonition.failure,
[data-md-color-scheme="kacky"] .md-typeset .admonition.bug {
	border-color: color-mix(in srgb, var(--kk-danger) 25%, transparent);
	background: color-mix(in srgb, var(--kk-danger) 8%, transparent);
}
[data-md-color-scheme="kacky"]
	.md-typeset
	:is(.danger, .failure, .bug)
	> .admonition-title {
	color: var(--kk-danger);
	background: transparent;
}
[data-md-color-scheme="kacky"]
	.md-typeset
	:is(.admonition, details)
	> .admonition-title::before {
	background-color: currentColor;
}

/* Tables: admin data-grid look */
[data-md-color-scheme="kacky"] .md-typeset table:not([class]) {
	border: 1px solid var(--kk-line);
	border-radius: 10px;
	overflow: hidden;
	background: var(--kk-card);
}
[data-md-color-scheme="kacky"] .md-typeset table:not([class]) th {
	color: var(--kk-faint);
	font-size: 0.68rem;
	font-weight: 600;
	background: transparent;
	border-bottom: 1px solid var(--kk-line);
}
[data-md-color-scheme="kacky"] .md-typeset table:not([class]) td {
	border-top: 1px solid var(--kk-line);
}
[data-md-color-scheme="kacky"] .md-typeset table:not([class]) tbody tr:hover {
	background: color-mix(in srgb, var(--kk-card-2) 55%, transparent);
}
