@import "./themes/light.css";
@import "./themes/dark.css";
@import "./themes/solarized.css";

html {
	box-sizing: border-box;
}
*, *::before, *::after {
	box-sizing: inherit;
}

body {
	font-family: system-ui, -apple-system, Segoe UI, Roboto, sans-serif;
	font-size: 14px;
	line-height: 1.5;
	margin: 0;
	padding: 12px 16px;
	background-color: var(--pgw-bg);
	color: var(--pgw-text);
	border: 1px solid var(--pgw-border);
	height: auto;
}
body:has(.page) {
	padding: 0;
}

/* Fluid vertical layout: fixed sidebar + main content offset */
.page .navbar-vertical.position-fixed {
	top: 0;
	bottom: 0;
	left: 0;
	z-index: 1030;
}
.page .navbar-vertical.position-fixed ~ .page-wrapper {
	margin-left: var(--tblr-navbar-vertical-width, 15rem);
}

a {
	color: var(--pgw-link);
	text-decoration: none;
}
a:hover {
	color: var(--pgw-link-hover);
}
a:visited {
	color: var(--pgw-link-visited);
}

h1, h2, h3 {
	margin: 0 0 0.5em;
	color: var(--pgw-accent-text);
	font-weight: 600;
}

/* Tables */
table {
	border-collapse: collapse;
	border-spacing: 0;
	background-color: var(--pgw-bg-raised);
	border: 1px solid var(--pgw-border);
}

th, td {
	padding: 0.1rem 0.2rem;
	text-align: left;
	vertical-align: top;
	border-bottom: 1px solid var(--pgw-border-muted);
}
th {
	background-color: var(--pgw-accent-bg);
	color: var(--pgw-accent-text);
	font-weight: 600;
}
tbody tr:nth-child(even) {
	background-color: var(--pgw-table-stripe);
}
tbody tr:hover {
	background-color: var(--pgw-table-hover);
}

/* Optional: page header / footer blocks for future use */
.page_header,
.page_footer {
	padding: 8px 12px;
	background-color: var(--pgw-accent-bg);
	color: var(--pgw-accent-text);
	border: 1px solid var(--pgw-border);
}
.page_footer_text {
	color: var(--pgw-text-muted);
	font-style: italic;
}
.page_body {
	padding: 8px;
	font-family: ui-monospace, monospace;
	background-color: var(--pgw-code-bg);
	border: 1px solid var(--pgw-code-border);
}
.title, .title_text {
	background-color: var(--pgw-title-bg);
	padding: 6px 8px;
	border-bottom: 1px solid var(--pgw-border);
}
.title:hover, a.title:hover {
	background-color: var(--pgw-title-hover-bg);
}

/* Vertical navbar: size inline nav icons */
.navbar-vertical .nav-link-icon {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	width: 1.5rem;
	height: 1.5rem;
}
.navbar-vertical .nav-link-icon svg {
	width: 1.25rem;
	height: 1.25rem;
}
.navbar-user .avatar svg {
	width: 1.25rem;
	height: 1.25rem;
}

/* Diff/status helpers (use var(--pgw-add-*) etc. in markup if needed) */
.diff-add { color: var(--pgw-add-fg); background-color: var(--pgw-add-bg); }
.diff-rem { color: var(--pgw-rem-fg); background-color: var(--pgw-rem-bg); }
.text-muted { color: var(--pgw-text-muted); }

/* Blob view: line numbers + code with syntax highlighting */
.blob-view {
	display: flex;
	margin: 0.5em 0;
	max-width: 100%;
	overflow: auto;
	background-color: var(--pgw-code-bg);
	border: 1px solid var(--pgw-code-border);
}
.blob-line-nums {
	flex-shrink: 0;
	user-select: none;
	padding: 0.75em 1em 0.75em 0.5em;
	text-align: right;
	color: var(--pgw-text-muted);
	white-space: pre;
	font-family: ui-monospace, "Fira Code", "Fira Mono", monospace;
	font-size: 0.9rem;
	line-height: 1.5;
	border-right: 1px solid var(--pgw-border);
}
.blob-view .blob-content {
	flex: 1;
	margin: 0;
	padding: 0.75em 1em;
	overflow: auto;
	font-family: ui-monospace, "Fira Code", "Fira Mono", monospace;
	font-size: 0.9rem;
	line-height: 1.5;
	min-width: 0;
}
.blob-view .blob-content code {
	background: none;
	padding: 0;
	font-size: inherit;
	line-height: inherit;
}

/* Line selection from URL param lines= (client-side) */
.blob-view .blob-line-selected,
.blob-view .blob-selection {
	background-color: var(--pgw-blob-selection-bg, rgba(193, 173, 0, 0.35));
}

/* README markdown: linkable section headings + table of contents */
.markdown-body .readme-heading-wrap {
	position: relative;
	display: block;
}
.markdown-body .readme-section-anchor {
	position: absolute;
	right: 100%;
	padding-right: 0.35em;
	opacity: 0;
	color: var(--pgw-text-muted);
	font-size: 1.3rem;
	text-decoration: none;
	transition: opacity 0.15s ease;
}
.markdown-body .readme-heading-wrap:hover .readme-section-anchor,
.markdown-body .readme-section-anchor:hover {
	opacity: 1;
}
.markdown-body .readme-section-anchor:focus {
	opacity: 1;
}

.readme-toc-mount {
	position: fixed;
	left: var(--tblr-navbar-vertical-width, 15rem);
	top: 0;
	bottom: 0;
	width: 12rem;
	z-index: 1040;
	pointer-events: none;
	overflow: hidden;
}
.readme-toc-mount .readme-toc {
	pointer-events: auto;
	padding: 1rem 0.5rem 1rem 0;
	max-height: 100%;
	overflow-y: auto;
}
.readme-toc-list {
	list-style: none;
	margin: 0;
	padding: 0;
	font-size: 0.8rem;
}
.readme-toc-item {
	margin: 0.2em 0;
}
.readme-toc-link {
	display: block;
	padding: 0.2em 0.4em;
	color: var(--pgw-text-muted);
	text-decoration: none;
	border-radius: 4px;
	white-space: nowrap;
	overflow: hidden;
	text-overflow: ellipsis;
}
.readme-toc-link:hover {
	color: var(--pgw-link-hover);
	background-color: var(--pgw-bg-raised, rgba(128, 128, 128, 0.1));
}
.readme-toc-item.readme-toc-active .readme-toc-link {
	color: var(--pgw-link);
	font-weight: 600;
	background-color: var(--pgw-accent-bg, rgba(128, 128, 128, 0.15));
}
.readme-toc-level-1 { padding-left: 0; }
.readme-toc-level-2 { padding-left: 0.5rem; }
.readme-toc-level-3 { padding-left: 1rem; }
.readme-toc-level-4 { padding-left: 1.5rem; }
.readme-toc-level-5 { padding-left: 2rem; }
.readme-toc-level-6 { padding-left: 2.5rem; }