/*
Theme Name: NULL & Void NoBackups
Description: A restrained late-night operations-console style for NoBackups, built as a child theme of Twenty Twenty-Five.
Author: NULL & Void Publishing Co.
Template: twentytwentyfive
Version: 1.0.4
Text Domain: null-void-nobackups
*/

:root {
	--nv-bg: #111315;
	--nv-surface: #1c2024;
	--nv-text: #ece8df;
	--nv-muted: #b7b4ac;
	--nv-accent: #e8ae54;
	--nv-rule: #3b4146;
}

html {
	background: var(--nv-bg);
}

body {
	background: var(--nv-bg);
	color: var(--nv-text);
}

.wp-site-blocks {
	min-height: 100vh;
	background: var(--nv-bg);
}

.nv-masthead {
	border-bottom: 1px solid var(--nv-rule);
}

.nv-masthead .wp-block-site-tagline {
	margin-inline-start: auto;
	text-align: right;
}

.nv-home > .wp-block-heading {
	font-family: ui-monospace, "SFMono-Regular", Consolas, "Liberation Mono", monospace;
	font-size: 0.8125rem;
	font-weight: 500;
	letter-spacing: 0.08em;
	margin-block: 0 1.25rem;
	text-transform: uppercase;
}

.nv-story {
	border-top: 1px solid var(--nv-rule);
}

.wp-block-site-title,
.wp-block-site-title a,
.wp-block-post-date,
.wp-block-post-terms,
.wp-block-query-pagination,
.wp-block-navigation,
.wp-block-post-meta,
.wp-block-post-author-name {
	font-family: ui-monospace, "SFMono-Regular", Consolas, "Liberation Mono", monospace;
}

.wp-block-site-title {
	font-size: clamp(1.25rem, 2vw, 1.65rem);
	font-weight: 650;
	letter-spacing: -0.045em;
}

.wp-block-site-title a {
	color: var(--nv-text);
	text-decoration: none;
}

.wp-block-site-title a:hover,
.wp-block-site-title a:focus-visible {
	color: var(--nv-accent);
}

.wp-block-site-tagline {
	color: var(--nv-muted);
	font-size: 0.875rem;
}

.wp-block-post-template > li,
.wp-block-query .wp-block-post-template > li {
	padding-block: 0;
}

.wp-block-post-title {
	text-wrap: pretty;
	letter-spacing: -0.035em;
}

.wp-block-post-title a {
	color: var(--nv-text);
	text-decoration-color: transparent;
	text-decoration-thickness: 1px;
	text-underline-offset: 0.18em;
	transition: color 140ms ease, text-decoration-color 140ms ease;
}

.wp-block-post-title a:hover,
.wp-block-post-title a:focus-visible {
	color: var(--nv-accent);
	text-decoration-color: currentColor;
}

.wp-block-post-date,
.wp-block-post-terms,
.wp-block-post-author-name,
.wp-block-post-excerpt__more-link {
	color: var(--nv-muted);
	font-size: 0.8125rem;
}

.wp-block-post-excerpt__more-link {
	color: var(--nv-accent);
	font-family: ui-monospace, "SFMono-Regular", Consolas, "Liberation Mono", monospace;
	text-decoration-thickness: 1px;
	text-underline-offset: 0.2em;
}

.wp-block-post-content,
.wp-block-post-excerpt,
.wp-block-post-content p,
.wp-block-post-content li {
	font-size: clamp(1.0625rem, 1.1vw, 1.1875rem);
	line-height: 1.78;
}

.wp-block-post-content p {
	margin-block: 0 1.35em;
}

.wp-block-post-content h2,
.wp-block-post-content h3,
.wp-block-post-content h4 {
	color: var(--nv-text);
	letter-spacing: -0.025em;
	line-height: 1.25;
	margin-block: 2em 0.7em;
}

.wp-block-post-content blockquote {
	border-inline-start: 2px solid var(--nv-accent);
	color: var(--nv-muted);
	padding-inline-start: 1.25rem;
}

.wp-block-post-content pre,
.wp-block-post-content code,
.wp-block-post-content kbd,
.wp-block-post-content samp {
	font-family: ui-monospace, "SFMono-Regular", Consolas, "Liberation Mono", monospace;
}

.wp-block-post-content pre {
	background: var(--nv-surface);
	border: 1px solid var(--nv-rule);
	border-radius: 0.45rem;
	color: var(--nv-text);
	max-width: 100%;
	overflow-x: auto;
	padding: 1rem 1.15rem;
	white-space: pre;
}

.wp-block-post-content a,
.wp-block-post-excerpt a:not(.wp-block-post-excerpt__more-link),
.wp-block-navigation a,
.wp-block-query-pagination a {
	color: var(--nv-accent);
	text-underline-offset: 0.2em;
}

.wp-block-post-content a:hover,
.wp-block-navigation a:hover,
.wp-block-query-pagination a:hover {
	color: var(--nv-text);
}

.wp-block-query-pagination {
	border-top: 1px solid var(--nv-rule);
	font-size: 0.875rem;
	padding-top: 1.25rem;
}

.wp-block-separator {
	border-color: var(--nv-rule);
}

.wp-block-site-logo img {
	max-height: 3rem;
	width: auto;
}

.nv-footer {
	border-top: 1px solid var(--nv-rule);
	color: var(--nv-muted);
	font-size: 0.875rem;
	margin-top: clamp(3rem, 8vw, 6rem);
}

.nv-footer .wp-block-site-title a {
	font-size: 1rem;
}

a:focus-visible,
button:focus-visible,
input:focus-visible,
textarea:focus-visible,
select:focus-visible,
[tabindex]:focus-visible {
	outline: 2px solid var(--nv-accent);
	outline-offset: 4px;
}

::selection {
	background: var(--nv-accent);
	color: var(--nv-bg);
}

@media (max-width: 600px) {
	.wp-site-blocks {
		padding-inline: 1.15rem;
	}

	.wp-block-post-template > li,
	.wp-block-query .wp-block-post-template > li {
		padding-block: 1.4rem;
	}

	.nv-masthead .wp-block-site-tagline {
		margin-inline-start: 0;
		text-align: left;
	}

	.wp-block-post-content pre {
		font-size: 0.875rem;
		margin-inline: 0;
	}
}

@media (prefers-reduced-motion: reduce) {
	*,
	*::before,
	*::after {
		animation-duration: 0.01ms !important;
		animation-iteration-count: 1 !important;
		scroll-behavior: auto !important;
		transition-duration: 0.01ms !important;
	}
}

/* Fixed terminal cue; startup is a short flourish, navigation remains indeterminate. */
.nv-navigation-progress {
	background: transparent;
	inset: 0 0 auto;
	height: 3px;
	overflow: hidden;
	pointer-events: none;
	position: fixed;
	width: 100%;
	z-index: 1000000;
}

.nv-navigation-progress::after {
	background: var(--nv-accent);
	content: "";
	display: block;
	height: 100%;
	transform: translateX(-110%);
	width: 32%;
}

html.nv-startup-visible .nv-navigation-progress::after {
	animation: nv-startup-travel 850ms ease-out 1 both;
}

html.nv-navigation-pending .nv-navigation-progress::after {
	animation: nv-progress-travel 900ms ease-in-out infinite;
}

@keyframes nv-startup-travel {
	from { transform: translateX(-15%); }
	to { transform: translateX(315%); }
}

@keyframes nv-progress-travel {
	from { transform: translateX(-110%); }
	to { transform: translateX(315%); }
}

@media (prefers-reduced-motion: reduce) {
	html.nv-startup-visible .nv-navigation-progress::after,
	html.nv-navigation-pending .nv-navigation-progress::after {
		animation: none;
		transform: none;
		width: 100%;
	}
}
