/* Site stylesheet. Structure is generated by jemdoc; classes below cover
   everything jemdoc emits (menu, info/code blocks, tables, equations) plus
   the flex layout and profile block added on top of it. */

:root {
	--bg: #ffffff;
	--bg-panel: #f7f8fa;
	--fg: #1f2430;
	--fg-muted: #5b6472;
	--border: #e2e5ea;
	--accent: #1f5eb0;
	--accent-strong: #163f7a;
	--code-bg: #f2f4f7;
	--shadow: 0 1px 2px rgba(15, 23, 42, 0.06), 0 8px 24px rgba(15, 23, 42, 0.05);
}

@media (prefers-color-scheme: dark) {
	:root {
		--bg: #12151c;
		--bg-panel: #191d26;
		--fg: #e4e7ec;
		--fg-muted: #9aa3b2;
		--border: #2b303c;
		--accent: #6fa8ff;
		--accent-strong: #9cc2ff;
		--code-bg: #1c212c;
		--shadow: 0 1px 2px rgba(0, 0, 0, 0.3), 0 8px 24px rgba(0, 0, 0, 0.35);
	}
}

* {
	box-sizing: border-box;
}

body {
	background: var(--bg);
	color: var(--fg);
	font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif;
	margin: 0;
	line-height: 1.55;
}

#tlayout {
	display: flex;
	align-items: flex-start;
	max-width: 1100px;
	margin: 0 auto;
	min-height: 100vh;
}

#layout-menu {
	flex: 0 0 220px;
	position: sticky;
	top: 0;
	align-self: flex-start;
	height: 100vh;
	overflow-y: auto;
	background: var(--bg-panel);
	border-right: 1px solid var(--border);
	padding: 1.5em 1em;
}

#layout-content {
	flex: 1 1 auto;
	min-width: 0;
	padding: 2em 2.5em 3em;
	max-width: 840px;
}

a.skip-link {
	position: absolute;
	top: -3em;
	left: 0.5em;
	z-index: 10;
	background: var(--accent);
	color: #ffffff;
	padding: 0.5em 1em;
	border-radius: 6px;
	transition: top 0.15s ease;
}

a.skip-link:focus {
	top: 0.5em;
	border-bottom: none;
}

div.menu-category {
	font-weight: 600;
	font-size: 1.05em;
	color: var(--fg);
	border-bottom: none;
	margin-top: 0;
	margin-bottom: 1em;
	padding-bottom: 0.5em;
	border-bottom: 1px solid var(--border);
}

div.menu-item {
	text-indent: 0;
	padding-left: 0;
	margin: 0.15em 0;
}

#layout-menu a {
	display: block;
	padding: 0.4em 0.6em;
	margin-left: 0;
	line-height: 1.3em;
	border-radius: 6px;
	color: var(--fg-muted);
}

#layout-menu a:hover {
	background: var(--border);
	border-bottom: none;
	color: var(--fg);
}

#layout-menu a.current:link, #layout-menu a.current:visited {
	color: var(--accent);
	background: rgba(31, 94, 176, 0.1);
	font-weight: 600;
	border-bottom: none;
}

a, a > tt {
	color: var(--accent);
	text-decoration: none;
}

a:hover {
	border-bottom: 1px solid var(--accent);
}

tt {
	background: var(--code-bg);
	border-radius: 3px;
	padding: 0.1em 0.3em;
}

pre, tt {
	font-size: 90%;
	font-family: ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;
}

div#toptitle {
	padding-bottom: 0.4em;
	margin-bottom: 1.2em;
	border-bottom: 2px solid var(--border);
}

div#subtitle {
	margin: 0;
	color: var(--fg-muted);
}

em {
	font-style: italic;
}

strong, b {
	font-weight: 600;
}

h1, h2, h3 {
	color: var(--fg);
	font-weight: 600;
	line-height: 1.25;
	margin-top: 1em;
	margin-bottom: 0.4em;
	padding: 0;
	border-bottom: none;
}

h1 {
	font-size: 1.9em;
	letter-spacing: -0.01em;
}

nav.page-toc {
	margin-bottom: 1.5em;
}

nav.page-toc ul {
	list-style: none;
	margin: 0;
	padding: 0;
	display: flex;
	flex-wrap: wrap;
	gap: 0.5em;
}

nav.page-toc a {
	display: inline-block;
	padding: 0.3em 0.8em;
	border: 1px solid var(--border);
	border-radius: 999px;
	color: var(--fg-muted);
	font-size: 0.9em;
}

nav.page-toc a:hover {
	border-color: var(--accent);
	color: var(--accent);
	border-bottom: 1px solid var(--accent);
}

h2 {
	font-size: 1.3em;
	margin-top: 1.4em;
	padding-bottom: 0.3em;
	border-bottom: 1px solid var(--border);
}

h3 {
	font-size: 1.1em;
}

#layout-content h1:first-child, #layout-content h2:first-child, #layout-content h3:first-child {
	margin-top: 0;
}

p {
	margin: 0 0 0.9em;
	padding: 0;
}

pre {
	padding: 0;
	margin: 0;
}

/* Profile block (index page) */
div.profile {
	display: flex;
	gap: 1.75em;
	flex-wrap: wrap;
	align-items: flex-start;
	margin-bottom: 1.5em;
}

img.profile-photo {
	width: 190px;
	height: auto;
	border-radius: 10px;
	box-shadow: var(--shadow);
	flex: 0 0 auto;
}

div.profile-info {
	flex: 1 1 260px;
	min-width: 0;
}

p.profile-links a {
	display: inline-block;
	margin-right: 1em;
}

div#footer {
	font-size: 0.85em;
	border-top: 1px solid var(--border);
	padding-top: 0.8em;
	margin-top: 3em;
	color: var(--fg-muted);
}

div#footer a {
	color: var(--fg-muted);
}

ul, ol, dl {
	margin: 0.5em 0 0.8em;
	padding-left: 1.4em;
	line-height: 1.5;
}

dt {
	margin-top: 0.5em;
	margin-bottom: 0;
	font-weight: 600;
}

dl {
	margin-left: 0;
	padding-left: 0;
}

dd {
	color: var(--fg);
	margin-left: 1.4em;
}

dd > *:first-child {
	margin-top: 0;
}

ul {
	list-style-type: disc;
}

p + ul, p + ol {
	margin-top: -0.4em;
}

li ul, li ol {
	margin-top: 0.2em;
}

ol {
	list-style-type: decimal;
}

li p, dd p {
	margin-bottom: 0.3em;
}

li {
	margin-bottom: 0.4em;
}

ol ol {
	list-style-type: lower-alpha;
}

ol ol ol {
	list-style-type: lower-roman;
}

div.codeblock, div.infoblock {
	margin: 1.2em 0 1.3em;
}

div.blocktitle {
	font-weight: 600;
	color: var(--accent-strong);
	margin-top: 1.2em;
	margin-bottom: 0.3em;
}

div.blockcontent {
	border: 1px solid var(--border);
	border-radius: 6px;
	padding: 0.6em 0.9em;
}

div.infoblock > div.blockcontent {
	background: var(--bg-panel);
}

div.blockcontent p + ul, div.blockcontent p + ol {
	margin-top: 0.4em;
}

div.infoblock p {
	margin-bottom: 0em;
}

div.infoblock li p, div.infoblock dd p {
	margin-bottom: 0.5em;
}

div.infoblock p + p {
	margin-top: 0.8em;
}

div.codeblock > div.blockcontent {
	background: var(--code-bg);
}

span.pycommand {
	color: #2451a4;
}

span.statement {
	color: #1a7f37;
}

span.builtin {
	color: #0550ae;
}

span.special {
	color: #cf222e;
}

span.operator {
	color: #953800;
}

span.error {
	color: #cf222e;
}

span.comment, span.comment > *, span.string, span.string > * {
	color: var(--fg-muted);
}

img.eq {
	padding: 0 0.1em;
	margin: 0;
}

img.eqwl {
	padding-left: 2em;
	padding-top: 0.6em;
	padding-bottom: 0.2em;
	margin: 0;
}

table {
	border: 1px solid var(--border);
	border-collapse: collapse;
	margin: 1em 0;
}

td {
	padding: 0.3em 0.7em;
	text-align: center;
	border: 1px solid var(--border);
}

table + table {
	margin-top: 1em;
}

tr.heading {
	font-weight: 600;
	border-bottom: 2px solid var(--border);
}

img {
	border: none;
	max-width: 100%;
}

table.imgtable, table.imgtable td {
	border: none;
	text-align: left;
}

@media print {
	#layout-menu { display: none; }
	#tlayout { display: block; }
}

@media (max-width: 760px) {
	#tlayout {
		flex-direction: column;
	}

	#layout-menu {
		position: static;
		height: auto;
		width: auto;
		flex: none;
		border-right: none;
		border-bottom: 1px solid var(--border);
		padding: 1em;
		display: flex;
		flex-wrap: wrap;
		gap: 0.3em;
	}

	div.menu-category {
		display: none;
	}

	div.menu-item {
		margin: 0;
	}

	#layout-content {
		padding: 1.5em 1.25em 2.5em;
		max-width: none;
	}

	div.profile {
		flex-direction: column;
		align-items: center;
		text-align: left;
	}
}
