/*
Theme Name: Neonwire
Theme URI: https://thebighead.ca/free-themes/neonwire
Author: The Big Head
Author URI: https://thebighead.ca/
Description: A portfolio theme that looks like the HUD of an operating system from a neon-soaked future — and works like a genuinely usable portfolio. A giant glitching hero title, a typewriter line of roles, a live clock, an availability LED, a once-per-session boot sequence, an animated perspective grid, scanlines, vignette and film noise (every effect a Customizer toggle, all of them off under reduced motion). Projects are ordinary posts in a category with a "Project details" box for client, year, role, stack and live URL; tags become no-reload HUD filter toggles. Services, stats, process, testimonials, clients and a spam-protected contact terminal are edited from the Customizer. Four colour presets including a light "daylight terminal", bundled open-source fonts and zero external requests.
Version: 1.0.0
Requires at least: 6.4
Tested up to: 6.8
Requires PHP: 7.4
License: GPL-2.0-or-later
License URI: https://www.gnu.org/licenses/gpl-2.0.html
Text Domain: neonwire
Update URI: false
Tags: portfolio, blog, grid-layout, one-column, two-columns, right-sidebar, custom-colors, custom-logo, custom-menu, featured-images, footer-widgets, full-width-template, sticky-post, threaded-comments, block-patterns, block-styles, wide-blocks, editor-style, translation-ready

Neonwire is free software distributed under the terms of the GNU GPL.
*/

/* ==========================================================================
   00  Tokens. Every colour below reads from these; the Customizer rewrites
       them in one inline block (functions.php → neonwire_custom_css()).
       The @font-face rules are printed inline too, with absolute addresses.
   ========================================================================== */

:root {
	--nw-bg: #05060a;
	--nw-panel: #0c0f17;
	--nw-line: #1b2230;
	--nw-text: #d7e1ec;
	--nw-muted: #7a8699;
	--nw-c1: #00f0ff;
	--nw-c2: #ff2a6d;
	--nw-c3: #f9f002;
	--nw-ink: #00f0ff;   /* the primary neon as small text */
	--nw-on: #05060a;    /* text on a neon fill */

	--nw-line-2: color-mix(in srgb, var(--nw-text) 22%, var(--nw-bg));
	--nw-panel-2: color-mix(in srgb, var(--nw-text) 7%, var(--nw-bg));
	--nw-c1-soft: color-mix(in srgb, var(--nw-c1) 14%, transparent);
	--nw-c2-soft: color-mix(in srgb, var(--nw-c2) 14%, transparent);
	--nw-glow: 0 0 26px color-mix(in srgb, var(--nw-c1) 42%, transparent);

	--nw-font-display: "Instrument Sans", "Arial Narrow", "Helvetica Neue", Arial, sans-serif;
	--nw-font-mono: "IBM Plex Mono", ui-monospace, "SF Mono", Menlo, Consolas, "Liberation Mono", monospace;
	--nw-font-body: Inter, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;

	--nw-wrap: 1360px;
	--nw-narrow: 660px;
	--nw-pad: clamp(18px, 4.4vw, 60px);
	--nw-ch: 14px;          /* the chamfer */
	--nw-header-h: 64px;
	--nw-ease: cubic-bezier(.2, .7, .2, 1);
}

/* ==========================================================================
   01  Base
   ========================================================================== */

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

html {
	-webkit-text-size-adjust: 100%;
	text-size-adjust: 100%;
	scroll-behavior: smooth;
	scroll-padding-top: calc(var(--nw-header-h) + 24px);
	background: var(--nw-bg);
}

body {
	margin: 0;
	background: var(--nw-bg);
	color: var(--nw-text);
	font-family: var(--nw-font-body);
	font-size: 1.0625rem;
	line-height: 1.7;
	-webkit-font-smoothing: antialiased;
	-moz-osx-font-smoothing: grayscale;
	text-rendering: optimizeLegibility;
	overflow-x: hidden;
}

::selection {
	background: var(--nw-c1);
	color: var(--nw-on);
}

img,
svg,
video,
canvas,
iframe {
	max-width: 100%;
}

img,
video {
	height: auto;
	display: block;
}

figure {
	margin: 0;
}

a {
	color: var(--nw-ink);
	text-decoration-thickness: 1px;
	text-underline-offset: .2em;
	transition: color .18s, background-color .18s, border-color .18s;
}

a:hover {
	color: var(--nw-text);
}

:focus-visible {
	outline: 2px solid var(--nw-c1);
	outline-offset: 3px;
}

.nw-mode-light :focus-visible {
	outline-color: var(--nw-text);
}

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

hr {
	border: 0;
	height: 1px;
	background: var(--nw-line);
	margin: 2.6rem 0;
}

h1,
h2,
h3,
h4,
h5,
h6 {
	margin: 0 0 .5em;
	color: var(--nw-text);
	text-wrap: balance;
}

h1,
h2,
h3,
h4,
.nw-display {
	font-family: var(--nw-font-display);
	font-stretch: 75%;
	font-variation-settings: "wdth" 75;
	font-weight: 800;
	text-transform: uppercase;
	letter-spacing: -.012em;
	line-height: .96;
}

h1 { font-size: clamp(2.8rem, 7vw, 5.6rem); }
h2 { font-size: clamp(2.1rem, 4.4vw, 3.4rem); }
h3 { font-size: clamp(1.6rem, 2.8vw, 2.2rem); line-height: 1; }
h4 { font-size: 1.35rem; line-height: 1.05; letter-spacing: 0; }

h5,
h6 {
	font-family: var(--nw-font-mono);
	font-size: .78rem;
	font-weight: 700;
	letter-spacing: .16em;
	text-transform: uppercase;
	color: var(--nw-ink);
	line-height: 1.4;
}

p {
	margin: 0 0 1.35em;
}

small {
	font-size: .85em;
}

code,
kbd,
samp,
pre {
	font-family: var(--nw-font-mono);
	font-size: .9em;
}

abbr[title] {
	text-decoration: underline dotted;
	cursor: help;
}

mark {
	background: var(--nw-c3);
	color: #0a0a07;
	padding: 0 .2em;
}

/* ---------- Accessibility helpers ---------- */

.screen-reader-text {
	border: 0;
	clip: rect(1px, 1px, 1px, 1px);
	clip-path: inset(50%);
	height: 1px;
	margin: -1px;
	overflow: hidden;
	padding: 0;
	position: absolute !important;
	width: 1px;
	word-wrap: normal !important;
}

.skip-link:focus {
	clip: auto !important;
	clip-path: none;
	height: auto;
	width: auto;
	left: 12px;
	top: 12px;
	z-index: 100000;
	padding: 14px 20px;
	background: var(--nw-c1);
	color: var(--nw-on);
	font: 700 .8rem/1 var(--nw-font-mono);
	letter-spacing: .12em;
	text-transform: uppercase;
	text-decoration: none;
}

/* ---------- Layout helpers ---------- */

.nw-wrap {
	width: 100%;
	max-width: calc(var(--nw-wrap) + 2 * var(--nw-pad));
	margin-inline: auto;
	padding-inline: var(--nw-pad);
}

.nw-narrow {
	max-width: var(--nw-narrow);
	margin-inline: auto;
}

.site {
	position: relative;
	min-height: 100vh;
	display: flex;
	flex-direction: column;
}

.site-content {
	flex: 1 0 auto;
}

/* ==========================================================================
   02  The HUD kit: chamfers, brackets, buttons, LEDs, tags, glitch, duotone
   ========================================================================== */

/* A chamfered panel. clip-path cuts two opposite corners; because a clip also
   cuts the border there, the two diagonal edges are redrawn as hairline
   gradients in the corner squares. Works on anything, inputs included.
   --bd is the border colour, --fill the surface, --cut the chamfer. */
.nw-cut {
	--bd: var(--nw-line);
	--fill: var(--nw-panel);
	--cut: var(--nw-ch);
	position: relative;
	border: 1px solid var(--bd);
	background:
		linear-gradient(45deg, transparent calc(50% - 1.2px), var(--bd) calc(50% - 1.2px), var(--bd) 50%, transparent 50%) top right / var(--cut) var(--cut) no-repeat border-box,
		linear-gradient(45deg, transparent 50%, var(--bd) 50%, var(--bd) calc(50% + 1.2px), transparent calc(50% + 1.2px)) bottom left / var(--cut) var(--cut) no-repeat border-box,
		var(--fill);
	clip-path: polygon(0 0, calc(100% - var(--cut)) 0, 100% var(--cut), 100% 100%, var(--cut) 100%, 0 calc(100% - var(--cut)));
	transition: border-color .25s;
}

/* Corner brackets on the two corners the chamfer leaves square. */
.nw-bracket::before,
.nw-bracket::after {
	content: "";
	position: absolute;
	z-index: 2;
	width: 16px;
	height: 16px;
	border: 2px solid var(--nw-c1);
	pointer-events: none;
}

.nw-bracket::before {
	top: -1px;
	left: -1px;
	border-right: 0;
	border-bottom: 0;
}

.nw-bracket::after {
	right: -1px;
	bottom: -1px;
	border-left: 0;
	border-top: 0;
}

/* Mono UI label */
.nw-label,
.nw-readout {
	font-family: var(--nw-font-mono);
	font-size: .72rem;
	letter-spacing: .16em;
	text-transform: uppercase;
	color: var(--nw-muted);
	line-height: 1.5;
}

/* ---------- Buttons ---------- */

.nw-btn,
.wp-block-button__link,
.wp-element-button,
button.submit,
input[type="submit"],
.post-password-form input[type="submit"] {
	--cut: 11px;
	display: inline-flex;
	align-items: center;
	justify-content: center;
	gap: .7em;
	min-height: 50px;
	padding: 6px 26px;
	border: 0;
	border-radius: 0;
	background: var(--nw-c1);
	color: var(--nw-on);
	font-family: var(--nw-font-mono);
	font-size: .78rem;
	font-weight: 700;
	letter-spacing: .16em;
	line-height: 1.2;
	text-transform: uppercase;
	text-decoration: none;
	text-align: center;
	cursor: pointer;
	clip-path: polygon(0 0, calc(100% - var(--cut)) 0, 100% var(--cut), 100% 100%, var(--cut) 100%, 0 calc(100% - var(--cut)));
	transition: background-color .2s, color .2s, transform .2s var(--nw-ease);
	-webkit-appearance: none;
	appearance: none;
}

.nw-btn:hover,
.wp-block-button__link:hover,
.wp-element-button:hover,
button.submit:hover,
input[type="submit"]:hover {
	background: var(--nw-text);
	color: var(--nw-bg);
}

.nw-btn:active {
	transform: translateY(1px);
}

.nw-btn .nw-icon {
	flex: none;
	transition: transform .25s var(--nw-ease);
}

.nw-btn:hover .nw-icon--arrow {
	transform: translateX(4px);
}

.nw-btn:hover .nw-icon--external {
	transform: translate(2px, -2px);
}

/* Outlined variant: the same hairline-gradient trick as .nw-cut. */
.nw-btn--ghost,
.is-style-neon .wp-block-button__link,
.is-style-outline .wp-block-button__link {
	--bd: var(--nw-c1);
	border: 1px solid var(--bd);
	color: var(--nw-ink);
	background:
		linear-gradient(45deg, transparent calc(50% - 1.2px), var(--bd) calc(50% - 1.2px), var(--bd) 50%, transparent 50%) top right / var(--cut) var(--cut) no-repeat border-box,
		linear-gradient(45deg, transparent 50%, var(--bd) 50%, var(--bd) calc(50% + 1.2px), transparent calc(50% + 1.2px)) bottom left / var(--cut) var(--cut) no-repeat border-box,
		transparent;
}

.nw-btn--ghost:hover,
.is-style-neon .wp-block-button__link:hover,
.is-style-outline .wp-block-button__link:hover {
	color: var(--nw-text);
	background:
		linear-gradient(45deg, transparent calc(50% - 1.2px), var(--bd) calc(50% - 1.2px), var(--bd) 50%, transparent 50%) top right / var(--cut) var(--cut) no-repeat border-box,
		linear-gradient(45deg, transparent 50%, var(--bd) 50%, var(--bd) calc(50% + 1.2px), transparent calc(50% + 1.2px)) bottom left / var(--cut) var(--cut) no-repeat border-box,
		var(--nw-c1-soft);
}

.nw-btn--block {
	display: flex;
	width: 100%;
}

/* ---------- Status LED ---------- */

.nw-led {
	display: inline-block;
	flex: none;
	width: 8px;
	height: 8px;
	background: var(--nw-c1);
	box-shadow: 0 0 0 3px color-mix(in srgb, var(--nw-c1) 22%, transparent), 0 0 12px var(--nw-c1);
	animation: nw-pulse 2.2s ease-in-out infinite;
}

@keyframes nw-pulse {
	0%, 100% { opacity: 1; }
	50% { opacity: .35; }
}

.nw-status {
	display: inline-flex;
	align-items: center;
	gap: 12px;
	margin: 0;
	padding: 9px 14px 9px 12px;
	border: 1px solid var(--nw-line);
	background: color-mix(in srgb, var(--nw-panel) 88%, transparent);
	font-family: var(--nw-font-mono);
	font-size: .72rem;
	font-weight: 700;
	letter-spacing: .16em;
	text-transform: uppercase;
	color: var(--nw-text);
	line-height: 1.3;
}

.nw-status--limited .nw-led {
	background: var(--nw-c3);
	box-shadow: 0 0 0 3px color-mix(in srgb, var(--nw-c3) 22%, transparent), 0 0 12px var(--nw-c3);
}

.nw-status--booked .nw-led {
	background: var(--nw-c2);
	box-shadow: 0 0 0 3px color-mix(in srgb, var(--nw-c2) 22%, transparent), 0 0 12px var(--nw-c2);
	animation: none;
}

/* ---------- Log-level tags and chips ---------- */

.nw-level {
	--tone: var(--nw-c1);
	--tone-ink: var(--nw-ink);
	display: inline-flex;
	align-items: center;
	gap: 6px;
	padding: 4px 9px 3px;
	border: 1px solid color-mix(in srgb, var(--tone) 55%, transparent);
	background: color-mix(in srgb, var(--tone) 10%, transparent);
	color: var(--tone-ink);
	font-family: var(--nw-font-mono);
	font-size: .68rem;
	font-weight: 700;
	letter-spacing: .14em;
	line-height: 1.2;
	text-transform: uppercase;
	text-decoration: none;
	white-space: nowrap;
}

a.nw-level:hover {
	background: var(--tone);
	color: var(--nw-on);
}

.nw-tone-1 { --tone: var(--nw-c1); --tone-ink: var(--nw-ink); color: var(--tone-ink); }
.nw-tone-2 { --tone: var(--nw-c2); --tone-ink: color-mix(in srgb, var(--nw-c2) 78%, var(--nw-text)); color: var(--tone-ink); }
.nw-tone-3 { --tone: var(--nw-c3); --tone-ink: var(--nw-c3); color: var(--tone-ink); }

.nw-mode-light .nw-tone-2 { --tone-ink: var(--nw-text); }
.nw-mode-light .nw-tone-3 { --tone-ink: var(--nw-ink); }

.nw-level--pin { --tone: var(--nw-c3); --tone-ink: var(--nw-c3); }
.nw-level--lock { --tone: var(--nw-c2); --tone-ink: color-mix(in srgb, var(--nw-c2) 78%, var(--nw-text)); }
.nw-mode-light .nw-level--pin { --tone-ink: var(--nw-ink); }
.nw-mode-light .nw-level--lock { --tone-ink: var(--nw-text); }

.nw-chips {
	display: flex;
	flex-wrap: wrap;
	gap: 6px;
	margin: 0;
	padding: 0;
	list-style: none;
}

.nw-chips li,
.entry-tags a,
.wp-block-tag-cloud a,
.tagcloud a {
	display: inline-flex;
	align-items: center;
	min-height: 28px;
	padding: 3px 10px;
	border: 1px solid var(--nw-line-2);
	color: var(--nw-text);
	font-family: var(--nw-font-mono);
	font-size: .72rem !important;
	letter-spacing: .06em;
	line-height: 1.3;
	text-decoration: none;
}

.entry-tags a::before,
.wp-block-tag-cloud a::before,
.tagcloud a::before {
	content: "#";
	color: var(--nw-ink);
	margin-right: 2px;
}

.entry-tags a:hover,
.wp-block-tag-cloud a:hover,
.tagcloud a:hover {
	border-color: var(--nw-c1);
	color: var(--nw-ink);
}

.nw-icon {
	display: inline-block;
	vertical-align: -.2em;
}

/* ---------- Glitch. The element carries its own text in data-text; two copies
   in the two neons are sliced with clip-path and knocked sideways. It twitches
   and rests — it is never a constant flicker. ---------- */

.nw-glitch {
	position: relative;
}

.nw-fx-glitch .nw-glitch::before,
.nw-fx-glitch .nw-glitch::after {
	content: attr(data-text);
	content: attr(data-text) / "";
	position: absolute;
	inset: 0;
	opacity: 0;
	pointer-events: none;
	clip-path: inset(0 0 100% 0);
}

.nw-fx-glitch .nw-glitch::before {
	color: var(--nw-c1);
	animation: nw-glitch-a .9s steps(1) .35s 1;
}

.nw-fx-glitch .nw-glitch::after {
	color: var(--nw-c2);
	animation: nw-glitch-b .9s steps(1) .35s 1;
}

/* The hero and the 404 keep twitching, with long rests in between. */
.nw-fx-glitch .nw-hero-title.nw-glitch::before { animation: nw-glitch-a-idle 7s steps(1) 1.4s infinite; }
.nw-fx-glitch .nw-hero-title.nw-glitch::after { animation: nw-glitch-b-idle 7s steps(1) 1.4s infinite; }
.nw-fx-glitch .nw-hero-title.nw-glitch { animation: nw-glitch-skew 7s steps(1) 1.4s infinite; }

.nw-fx-glitch .nw-glitch--loud::before { animation: nw-glitch-a-idle 3.2s steps(1) infinite; }
.nw-fx-glitch .nw-glitch--loud::after { animation: nw-glitch-b-idle 3.2s steps(1) .1s infinite; }
.nw-fx-glitch .nw-glitch--loud { animation: nw-glitch-skew 3.2s steps(1) infinite; }

@keyframes nw-glitch-a {
	0%   { opacity: 1; clip-path: inset(8% 0 72% 0);  transform: translate(-5px, 0); }
	18%  { opacity: 1; clip-path: inset(58% 0 20% 0); transform: translate(4px, 0); }
	36%  { opacity: 1; clip-path: inset(30% 0 52% 0); transform: translate(-3px, 0); }
	54%  { opacity: 1; clip-path: inset(80% 0 4% 0);  transform: translate(5px, 0); }
	72%  { opacity: 1; clip-path: inset(44% 0 38% 0); transform: translate(-2px, 0); }
	88%, 100% { opacity: 0; clip-path: inset(0 0 100% 0); transform: none; }
}

@keyframes nw-glitch-b {
	0%   { opacity: 1; clip-path: inset(66% 0 12% 0); transform: translate(5px, 0); }
	18%  { opacity: 1; clip-path: inset(14% 0 66% 0); transform: translate(-4px, 0); }
	36%  { opacity: 1; clip-path: inset(48% 0 30% 0); transform: translate(3px, 0); }
	54%  { opacity: 1; clip-path: inset(2% 0 84% 0);  transform: translate(-5px, 0); }
	72%  { opacity: 1; clip-path: inset(72% 0 10% 0); transform: translate(2px, 0); }
	88%, 100% { opacity: 0; clip-path: inset(0 0 100% 0); transform: none; }
}

@keyframes nw-glitch-a-idle {
	0%, 100% { opacity: 0; clip-path: inset(0 0 100% 0); transform: none; }
	2%  { opacity: 1; clip-path: inset(10% 0 70% 0); transform: translate(-6px, 0); }
	4%  { opacity: 1; clip-path: inset(60% 0 18% 0); transform: translate(5px, 0); }
	6%  { opacity: 1; clip-path: inset(34% 0 50% 0); transform: translate(-3px, 0); }
	8%  { opacity: 1; clip-path: inset(82% 0 3% 0);  transform: translate(6px, 0); }
	10% { opacity: 0; clip-path: inset(0 0 100% 0); transform: none; }
	52% { opacity: 1; clip-path: inset(46% 0 40% 0); transform: translate(4px, 0); }
	54% { opacity: 0; clip-path: inset(0 0 100% 0); transform: none; }
}

@keyframes nw-glitch-b-idle {
	0%, 100% { opacity: 0; clip-path: inset(0 0 100% 0); transform: none; }
	2%  { opacity: 1; clip-path: inset(68% 0 10% 0); transform: translate(6px, 0); }
	4%  { opacity: 1; clip-path: inset(16% 0 64% 0); transform: translate(-5px, 0); }
	6%  { opacity: 1; clip-path: inset(50% 0 28% 0); transform: translate(3px, 0); }
	8%  { opacity: 1; clip-path: inset(4% 0 86% 0);  transform: translate(-6px, 0); }
	10% { opacity: 0; clip-path: inset(0 0 100% 0); transform: none; }
	52% { opacity: 1; clip-path: inset(20% 0 62% 0); transform: translate(-4px, 0); }
	54% { opacity: 0; clip-path: inset(0 0 100% 0); transform: none; }
}

@keyframes nw-glitch-skew {
	0%, 100% { transform: none; }
	3% { transform: skewX(-7deg); }
	5% { transform: skewX(4deg) translateX(3px); }
	7% { transform: none; }
}

/* ---------- Neon duotone. The image goes greyscale and a two-neon gradient is
   multiplied over it; pointing at the link shows the true colours. ---------- */

.nw-duo {
	position: relative;
	overflow: hidden;
	isolation: isolate;
	background: var(--nw-panel);
}

.nw-fx-duotone .nw-duo::before {
	content: "";
	position: absolute;
	inset: 0;
	z-index: 1;
	background: linear-gradient(135deg, var(--nw-c1) 0%, color-mix(in srgb, var(--nw-c1) 40%, var(--nw-c2)) 45%, var(--nw-c2) 100%);
	mix-blend-mode: multiply;
	pointer-events: none;
	transition: opacity .5s;
}

.nw-fx-duotone .nw-duo img {
	filter: grayscale(1) contrast(1.12) brightness(1.3);
	transition: filter .5s, transform .8s var(--nw-ease);
}

.nw-fx-duotone a:hover .nw-duo::before,
.nw-fx-duotone a:focus-visible .nw-duo::before,
.nw-fx-duotone .nw-duo:hover::before {
	opacity: 0;
}

.nw-fx-duotone a:hover .nw-duo img,
.nw-fx-duotone a:focus-visible .nw-duo img,
.nw-fx-duotone .nw-duo:hover img {
	filter: none;
}

/* ---------- Marquee ---------- */

.nw-marquee {
	display: block;
	overflow: hidden;
	white-space: nowrap;
}

.nw-marquee-track {
	display: inline-flex;
	will-change: transform;
}

.nw-fx-marquee .nw-marquee-track {
	animation: nw-marquee 26s linear infinite;
}

.nw-marquee-item {
	flex: none;
	padding-right: .6em;
}

.nw-marquee-item::after {
	content: "\2014";
	margin-left: .6em;
	color: var(--nw-c2);
}

@keyframes nw-marquee {
	to { transform: translateX(-50%); }
}

/* ---------- Notices ---------- */

.nw-notice {
	margin: 0 0 22px;
	padding: 14px 16px;
	border: 1px solid var(--nw-c1);
	background: var(--nw-c1-soft);
	font-family: var(--nw-font-mono);
	font-size: .82rem;
	line-height: 1.6;
}

.nw-notice p {
	margin: 0;
}

.nw-notice b {
	color: var(--nw-ink);
	margin-right: 6px;
}

.nw-notice--error {
	border-color: var(--nw-c2);
	background: var(--nw-c2-soft);
}

.nw-notice--error b {
	color: color-mix(in srgb, var(--nw-c2) 78%, var(--nw-text));
}

/* ==========================================================================
   03  Atmosphere: vignette, scanlines, film noise, cursor ring, boot curtain
   ========================================================================== */

.nw-fx {
	position: fixed;
	inset: 0;
	z-index: 9000;
	pointer-events: none;
	overflow: hidden;
}

.nw-fx-layer {
	position: absolute;
	inset: 0;
	display: none;
}

.nw-fx-vignette .nw-fx-layer--vignette {
	display: block;
	background: radial-gradient(ellipse at 50% 45%, transparent 52%, rgba(0, 0, 0, .5) 100%);
}

.nw-fx-scanlines .nw-fx-layer--scanlines {
	display: block;
	background: repeating-linear-gradient(to bottom, transparent 0, transparent 2px, rgba(0, 0, 0, .2) 2px, rgba(0, 0, 0, .2) 3px);
}

/* A slow beam rolling down the glass. */
.nw-fx-scanlines .nw-fx-layer--scanlines::after {
	content: "";
	position: absolute;
	left: 0;
	right: 0;
	top: 0;
	height: 22vh;
	background: linear-gradient(to bottom, transparent, color-mix(in srgb, var(--nw-c1) 5%, transparent) 60%, transparent);
	transform: translateY(-30vh);
	animation: nw-beam 9s linear infinite;
}

@keyframes nw-beam {
	to { transform: translateY(130vh); }
}

.nw-fx-noise .nw-fx-layer--noise {
	display: block;
	inset: -12%;
	background-image: var(--nw-noise);
	background-size: 180px 180px;
	opacity: .075;
	animation: nw-noise .6s steps(1) infinite;
}

@keyframes nw-noise {
	0% { transform: translate(0, 0); }
	20% { transform: translate(-4%, 3%); }
	40% { transform: translate(3%, -5%); }
	60% { transform: translate(-2%, -3%); }
	80% { transform: translate(5%, 4%); }
}

.nw-mode-light.nw-fx-vignette .nw-fx-layer--vignette {
	background: radial-gradient(ellipse at 50% 45%, transparent 58%, rgba(12, 13, 16, .13) 100%);
}

.nw-mode-light.nw-fx-scanlines .nw-fx-layer--scanlines {
	background: repeating-linear-gradient(to bottom, transparent 0, transparent 2px, rgba(12, 13, 16, .05) 2px, rgba(12, 13, 16, .05) 3px);
}

.nw-mode-light.nw-fx-noise .nw-fx-layer--noise {
	opacity: .11;
	filter: invert(1);
}

/* Cursor ring (added by theme.js on devices with a fine pointer only) */
.nw-cursor {
	position: fixed;
	left: 0;
	top: 0;
	z-index: 9500;
	width: 38px;
	height: 38px;
	margin: -19px 0 0 -19px;
	border: 1px solid var(--nw-c1);
	border-radius: 50%;
	pointer-events: none;
	opacity: 0;
	transition: opacity .3s, width .25s var(--nw-ease), height .25s var(--nw-ease), margin .25s var(--nw-ease), border-color .25s;
}

.nw-cursor::before,
.nw-cursor::after {
	content: "";
	position: absolute;
	background: var(--nw-c1);
}

.nw-cursor::before {
	left: 50%;
	top: -7px;
	bottom: -7px;
	width: 1px;
	clip-path: polygon(0 0, 100% 0, 100% 9px, 0 9px, 0 calc(100% - 9px), 100% calc(100% - 9px), 100% 100%, 0 100%);
}

.nw-cursor::after {
	top: 50%;
	left: -7px;
	right: -7px;
	height: 1px;
	clip-path: polygon(0 0, 9px 0, 9px 100%, 0 100%, 0 0, calc(100% - 9px) 0, 100% 0, 100% 100%, calc(100% - 9px) 100%, calc(100% - 9px) 0);
}

.nw-cursor.is-on {
	opacity: .85;
}

.nw-cursor.is-link {
	width: 58px;
	height: 58px;
	margin: -29px 0 0 -29px;
	border-color: var(--nw-c2);
}

/* Boot curtain + terminal */
html.nw-booting body::before {
	content: "";
	position: fixed;
	inset: 0;
	z-index: 9998;
	background: var(--nw-bg);
}

.nw-boot {
	position: fixed;
	inset: 0;
	z-index: 9999;
	display: flex;
	flex-direction: column;
	justify-content: center;
	padding: var(--nw-pad);
	background: var(--nw-bg);
	color: var(--nw-ink);
	font-family: var(--nw-font-mono);
	font-size: clamp(.78rem, 1.5vw, .95rem);
	letter-spacing: .06em;
	line-height: 1.9;
	text-transform: uppercase;
	cursor: pointer;
	transition: opacity .28s, transform .28s cubic-bezier(.7, 0, .84, 0);
}

.nw-boot.is-done {
	opacity: 0;
	transform: scaleY(.006);
}

.nw-boot-inner {
	width: 100%;
	max-width: 760px;
	margin: 0 auto;
}

.nw-boot-line {
	margin: 0;
	white-space: pre-wrap;
	overflow-wrap: anywhere;
}

.nw-boot-line:last-of-type {
	color: var(--nw-text);
}

.nw-boot-line:last-of-type::after {
	content: "";
	display: inline-block;
	width: .6em;
	height: 1.05em;
	margin-left: .3em;
	vertical-align: -.18em;
	background: var(--nw-c1);
	animation: nw-blink .7s steps(1) infinite;
}

.nw-boot-bar {
	height: 3px;
	margin-top: 22px;
	background: var(--nw-line);
	overflow: hidden;
}

.nw-boot-bar i {
	display: block;
	height: 100%;
	width: 100%;
	background: linear-gradient(90deg, var(--nw-c1), var(--nw-c2));
	transform: scaleX(0);
	transform-origin: 0 50%;
	transition: transform .2s linear;
}

.nw-boot-skip {
	position: absolute;
	left: var(--nw-pad);
	right: var(--nw-pad);
	bottom: 28px;
	margin: 0;
	color: var(--nw-muted);
	font-size: .68rem;
	letter-spacing: .2em;
	text-align: center;
}

@keyframes nw-blink {
	50% { opacity: 0; }
}

/* ==========================================================================
   04  Header and navigation
   ========================================================================== */

.site-header {
	position: relative;
	z-index: 600;
	border-bottom: 1px solid var(--nw-line);
	background: color-mix(in srgb, var(--nw-bg) 94%, transparent);
}

.nw-sticky .site-header {
	position: sticky;
	top: 0;
}

.admin-bar.nw-sticky .site-header {
	top: var(--wp-admin--admin-bar--height, 32px);
}

@media (max-width: 600px) {
	/* The admin bar is not fixed on small screens. */
	.admin-bar.nw-sticky .site-header { top: 0; }
}

.site-header-inner {
	display: flex;
	align-items: center;
	gap: 28px;
	min-height: var(--nw-header-h);
}

.site-branding {
	display: flex;
	align-items: center;
	gap: 12px;
	min-width: 0;
	margin-right: auto;
}

.nw-brand-mark {
	flex: none;
	width: 22px;
	height: 22px;
	background: linear-gradient(135deg, var(--nw-c1), var(--nw-c2));
	clip-path: polygon(0 0, calc(100% - 7px) 0, 100% 7px, 100% 100%, 7px 100%, 0 calc(100% - 7px));
}

.custom-logo-link {
	display: block;
	flex: none;
}

.custom-logo {
	width: auto;
	max-height: 40px;
}

.site-title {
	margin: 0;
	font-family: var(--nw-font-display);
	font-stretch: 75%;
	font-variation-settings: "wdth" 75;
	font-size: 1.5rem;
	font-weight: 800;
	letter-spacing: .01em;
	line-height: 1;
	text-transform: uppercase;
	white-space: nowrap;
	overflow: hidden;
	text-overflow: ellipsis;
}

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

.site-title a:hover {
	color: var(--nw-ink);
}

.site-description {
	margin: 0;
	padding-left: 12px;
	border-left: 1px solid var(--nw-line-2);
	font-family: var(--nw-font-mono);
	font-size: .66rem;
	letter-spacing: .14em;
	line-height: 1.4;
	text-transform: uppercase;
	color: var(--nw-muted);
	white-space: nowrap;
	overflow: hidden;
	text-overflow: ellipsis;
}

.nw-header-clock {
	display: none;
	align-items: center;
	gap: 10px;
	margin: 0;
	padding-left: 24px;
	border-left: 1px solid var(--nw-line);
	font-family: var(--nw-font-mono);
	font-size: .72rem;
	letter-spacing: .14em;
	color: var(--nw-muted);
	font-variant-numeric: tabular-nums;
}

.nw-header-clock .nw-led {
	width: 6px;
	height: 6px;
}

/* ---------- Menu (desktop first; the phone overlay is further down) ---------- */

.main-navigation ul {
	margin: 0;
	padding: 0;
	list-style: none;
}

.main-navigation .menu,
.main-navigation > ul {
	display: flex;
	align-items: center;
	gap: 4px;
	counter-reset: nwnav;
}

.main-navigation li {
	position: relative;
}

.main-navigation .menu > li,
.main-navigation > ul > li {
	counter-increment: nwnav;
}

.main-navigation a {
	display: flex;
	align-items: center;
	gap: 8px;
	min-height: 44px;
	padding: 0 14px;
	color: var(--nw-text);
	font-family: var(--nw-font-mono);
	font-size: .74rem;
	font-weight: 700;
	letter-spacing: .16em;
	text-decoration: none;
	text-transform: uppercase;
	white-space: nowrap;
}

.main-navigation .menu > li > a::before,
.main-navigation > ul > li > a::before {
	content: counter(nwnav, decimal-leading-zero);
	color: var(--nw-muted);
	font-weight: 400;
	font-size: .66rem;
	transition: color .18s;
}

.main-navigation a:hover,
.main-navigation .current-menu-item > a,
.main-navigation .current_page_item > a,
.main-navigation .current-menu-ancestor > a,
.main-navigation .current_page_parent > a {
	color: var(--nw-ink);
}

.main-navigation a:hover::before,
.main-navigation .current-menu-item > a::before,
.main-navigation .current_page_item > a::before {
	color: var(--nw-c2);
}

.main-navigation .menu > .current-menu-item > a,
.main-navigation .menu > .current_page_item > a,
.main-navigation .menu > .current-menu-ancestor > a,
.main-navigation .menu > .current_page_parent > a {
	box-shadow: inset 0 -2px 0 var(--nw-c1);
}

.nw-nav-extra {
	display: none;
}

.submenu-toggle {
	display: none;
}

.menu-toggle {
	display: none;
}

@media (min-width: 961px) {

	.main-navigation .sub-menu,
	.main-navigation .children {
		position: absolute;
		top: 100%;
		left: 0;
		z-index: 20;
		min-width: 230px;
		padding: 8px;
		border: 1px solid var(--nw-line-2);
		background: var(--nw-panel);
		opacity: 0;
		visibility: hidden;
		transform: translateY(6px);
		transition: opacity .18s, transform .18s, visibility .18s;
	}

	.main-navigation .sub-menu .sub-menu,
	.main-navigation .children .children {
		top: -9px;
		left: 100%;
	}

	.main-navigation li:hover > .sub-menu,
	.main-navigation li:focus-within > .sub-menu,
	.main-navigation li.is-open > .sub-menu,
	.main-navigation li:hover > .children,
	.main-navigation li:focus-within > .children {
		opacity: 1;
		visibility: visible;
		transform: none;
	}

	.main-navigation .sub-menu a,
	.main-navigation .children a {
		padding: 0 12px;
		letter-spacing: .1em;
		white-space: normal;
	}

	.main-navigation .sub-menu a::before,
	.main-navigation .children a::before {
		content: ">";
		color: var(--nw-muted);
	}

	.main-navigation .sub-menu a:hover {
		background: var(--nw-c1-soft);
	}

	.main-navigation .menu-item-has-children > a::after,
	.main-navigation .page_item_has_children > a::after {
		content: "";
		width: 6px;
		height: 6px;
		margin-left: 2px;
		border-right: 1px solid currentColor;
		border-bottom: 1px solid currentColor;
		transform: translateY(-2px) rotate(45deg);
	}

	.main-navigation .sub-menu .menu-item-has-children > a::after {
		margin-left: auto;
		transform: rotate(-45deg);
	}
}

@media (min-width: 1180px) {
	.nw-header-clock {
		display: inline-flex;
	}
}

@media (max-width: 1180px) {
	.site-description {
		display: none;
	}
}

/* ---------- Phone and tablet: a full-screen system menu ---------- */

@media (max-width: 960px) {

	.menu-toggle {
		--cut: 9px;
		display: inline-flex;
		align-items: center;
		gap: 10px;
		min-height: 44px;
		padding: 0 14px 0 12px;
		border: 1px solid var(--nw-line-2);
		background: transparent;
		color: var(--nw-text);
		font-family: var(--nw-font-mono);
		font-size: .72rem;
		font-weight: 700;
		letter-spacing: .16em;
		text-transform: uppercase;
		cursor: pointer;
		clip-path: polygon(0 0, calc(100% - var(--cut)) 0, 100% var(--cut), 100% 100%, var(--cut) 100%, 0 calc(100% - var(--cut)));
	}

	.menu-toggle[aria-expanded="true"] {
		border-color: var(--nw-c1);
		color: var(--nw-ink);
		background: var(--nw-c1-soft);
	}

	.menu-toggle-bars {
		display: grid;
		gap: 4px;
		width: 18px;
	}

	.menu-toggle-bars span {
		display: block;
		height: 2px;
		background: currentColor;
		transition: transform .25s var(--nw-ease), opacity .2s, width .25s;
	}

	.menu-toggle-bars span:nth-child(2) {
		width: 60%;
	}

	.menu-toggle[aria-expanded="true"] .menu-toggle-bars span:nth-child(1) {
		transform: translateY(6px) rotate(45deg);
	}

	.menu-toggle[aria-expanded="true"] .menu-toggle-bars span:nth-child(2) {
		opacity: 0;
	}

	.menu-toggle[aria-expanded="true"] .menu-toggle-bars span:nth-child(3) {
		transform: translateY(-6px) rotate(-45deg);
	}

	.main-navigation {
		position: fixed;
		top: calc(var(--nw-header-h) + 1px);
		right: 0;
		bottom: 0;
		left: 0;
		z-index: 590;
		display: flex;
		flex-direction: column;
		gap: 28px;
		padding: 26px var(--nw-pad) 44px;
		overflow-y: auto;
		overscroll-behavior: contain;
		background:
			linear-gradient(var(--nw-c1-soft) 1px, transparent 1px) 0 0 / 100% 56px,
			linear-gradient(90deg, var(--nw-c1-soft) 1px, transparent 1px) 0 0 / 56px 100%,
			var(--nw-bg);
		opacity: 0;
		visibility: hidden;
		transform: translateY(-10px);
		transition: opacity .22s, transform .22s var(--nw-ease), visibility .22s;
	}

	.admin-bar .main-navigation {
		top: calc(var(--nw-header-h) + 1px + var(--wp-admin--admin-bar--height, 46px));
	}

	.main-navigation.is-open {
		opacity: 1;
		visibility: visible;
		transform: none;
	}

	html.nw-menu-open {
		overflow: hidden;
	}

	.main-navigation .menu,
	.main-navigation > ul {
		flex-direction: column;
		align-items: stretch;
		gap: 0;
	}

	.main-navigation .menu > li,
	.main-navigation > ul > li {
		display: grid;
		grid-template-columns: 1fr auto;
		border-bottom: 1px solid var(--nw-line);
	}

	.main-navigation .menu > li > a,
	.main-navigation > ul > li > a {
		min-height: 64px;
		padding: 8px 0;
		gap: 14px;
		font-family: var(--nw-font-display);
		font-stretch: 75%;
		font-variation-settings: "wdth" 75;
		font-size: clamp(2rem, 9.5vw, 3rem);
		font-weight: 800;
		letter-spacing: -.005em;
		line-height: 1;
		white-space: normal;
		box-shadow: none !important;
	}

	.main-navigation .menu > li > a::before,
	.main-navigation > ul > li > a::before {
		font-family: var(--nw-font-mono);
		font-size: .72rem;
		letter-spacing: .1em;
		align-self: flex-start;
		margin-top: 12px;
		color: var(--nw-ink);
	}

	.submenu-toggle {
		display: inline-flex;
		align-items: center;
		justify-content: center;
		width: 48px;
		min-height: 48px;
		align-self: center;
		border: 1px solid var(--nw-line-2);
		background: transparent;
		color: var(--nw-ink);
		font-family: var(--nw-font-mono);
		font-size: 1.2rem;
		cursor: pointer;
	}

	.main-navigation .sub-menu,
	.main-navigation .children {
		grid-column: 1 / -1;
		display: none;
		padding: 0 0 14px 28px;
	}

	.main-navigation li.is-open > .sub-menu,
	.main-navigation li.is-open > .children {
		display: block;
	}

	.main-navigation .sub-menu li,
	.main-navigation .children li {
		display: grid;
		grid-template-columns: 1fr auto;
	}

	.main-navigation .sub-menu a,
	.main-navigation .children a {
		min-height: 46px;
		padding: 0;
		font-size: .82rem;
		white-space: normal;
	}

	.main-navigation .sub-menu a::before,
	.main-navigation .children a::before {
		content: ">";
		color: var(--nw-muted);
	}

	.nw-nav-extra {
		display: grid;
		gap: 16px;
		justify-items: start;
		margin-top: auto;
	}

	.nw-nav-extra .nw-readout {
		margin: 0;
	}
}

/* ---------- Social links (text labels) ---------- */

.nw-social ul {
	display: flex;
	flex-wrap: wrap;
	gap: 6px 8px;
	margin: 0;
	padding: 0;
	list-style: none;
}

.nw-social a {
	display: inline-flex;
	align-items: center;
	gap: 6px;
	min-height: 44px;
	padding: 0 12px;
	border: 1px solid var(--nw-line-2);
	color: var(--nw-text);
	font-family: var(--nw-font-mono);
	font-size: .72rem;
	font-weight: 700;
	letter-spacing: .14em;
	text-decoration: none;
	text-transform: uppercase;
}

.nw-social a:hover {
	border-color: var(--nw-c1);
	color: var(--nw-ink);
	background: var(--nw-c1-soft);
}

.nw-social .nw-icon {
	color: var(--nw-muted);
}

/* ==========================================================================
   05  Hero
   ========================================================================== */

.nw-hero {
	position: relative;
	display: flex;
	min-height: calc(100vh - var(--nw-header-h));
	min-height: calc(100svh - var(--nw-header-h));
	overflow: hidden;
	border-bottom: 1px solid var(--nw-line);
	isolation: isolate;
}

.nw-hero-bg {
	position: absolute;
	inset: 0;
	z-index: -1;
	/* a faint flat grid, so the hero is never an empty black field even with
	   the perspective floor switched off */
	background:
		linear-gradient(color-mix(in srgb, var(--nw-c1) 5%, transparent) 1px, transparent 1px) 0 0 / 100% 72px,
		linear-gradient(90deg, color-mix(in srgb, var(--nw-c1) 5%, transparent) 1px, transparent 1px) 0 0 / 72px 100%;
}

.nw-hero-glow {
	position: absolute;
	inset: 0;
	background:
		radial-gradient(60% 46% at 50% 58%, color-mix(in srgb, var(--nw-c2) 26%, transparent), transparent 70%),
		radial-gradient(38% 40% at 12% 8%, color-mix(in srgb, var(--nw-c1) 16%, transparent), transparent 70%),
		radial-gradient(30% 34% at 92% 24%, color-mix(in srgb, var(--nw-c2) 10%, transparent), transparent 70%);
}

.nw-gridfloor,
.nw-hero-horizon {
	display: none;
}

.nw-fx-grid .nw-gridfloor {
	display: block;
	position: absolute;
	left: 0;
	right: 0;
	bottom: 0;
	height: 42%;
	overflow: hidden;
	perspective: 340px;
	perspective-origin: 50% 0;
	background: linear-gradient(to bottom, color-mix(in srgb, var(--nw-bg) 70%, transparent), var(--nw-bg) 90%);
	-webkit-mask-image: linear-gradient(to bottom, transparent 0, #000 22%, #000 70%, transparent 100%);
	mask-image: linear-gradient(to bottom, transparent 0, #000 22%, #000 70%, transparent 100%);
}

.nw-gridfloor-plane {
	position: absolute;
	left: -60%;
	right: -60%;
	top: 0;
	height: 300%;
	transform-origin: 50% 0;
	transform: rotateX(68deg);
	background:
		linear-gradient(to right, color-mix(in srgb, var(--nw-c1) 62%, transparent) 1.5px, transparent 1.5px) 50% 0 / 80px 80px,
		linear-gradient(to bottom, color-mix(in srgb, var(--nw-c1) 62%, transparent) 1.5px, transparent 1.5px) 50% 0 / 80px 80px;
	animation: nw-floor 2.4s linear infinite;
	will-change: transform;
}

@keyframes nw-floor {
	from { transform: rotateX(68deg) translateY(0); }
	to { transform: rotateX(68deg) translateY(80px); }
}

.nw-fx-grid .nw-hero-horizon {
	display: block;
	position: absolute;
	left: 0;
	right: 0;
	bottom: 42%;
	height: 1px;
	background: linear-gradient(90deg, transparent, var(--nw-c2) 22%, var(--nw-c1) 50%, var(--nw-c2) 78%, transparent);
	box-shadow: 0 0 34px 3px color-mix(in srgb, var(--nw-c2) 55%, transparent), 0 0 80px 10px color-mix(in srgb, var(--nw-c1) 18%, transparent);
	opacity: .9;
}

.nw-hero-inner {
	position: relative;
	display: grid;
	grid-template-columns: minmax(0, 1fr);
	grid-template-rows: auto 1fr auto;
	gap: clamp(20px, 3.4vh, 40px);
	padding-block: clamp(26px, 4.6vh, 52px);
}

/* HUD frame corners */
.nw-corner {
	position: absolute;
	width: 26px;
	height: 26px;
	border: 2px solid var(--nw-c1);
	opacity: .9;
	pointer-events: none;
}

.nw-corner--tl { top: 14px; left: calc(var(--nw-pad) - 14px); border-right: 0; border-bottom: 0; }
.nw-corner--tr { top: 14px; right: calc(var(--nw-pad) - 14px); border-left: 0; border-bottom: 0; }
.nw-corner--bl { bottom: 14px; left: calc(var(--nw-pad) - 14px); border-right: 0; border-top: 0; }
.nw-corner--br { bottom: 14px; right: calc(var(--nw-pad) - 14px); border-left: 0; border-top: 0; }

.nw-hero-top {
	display: flex;
	flex-wrap: wrap;
	align-items: baseline;
	justify-content: space-between;
	gap: 6px 28px;
	padding-inline: 14px;
}

.nw-hero-kicker,
.nw-hero-readout {
	margin: 0;
	font-family: var(--nw-font-mono);
	font-size: .72rem;
	letter-spacing: .18em;
	line-height: 1.6;
	text-transform: uppercase;
}

.nw-hero-kicker {
	color: var(--nw-ink);
}

.nw-hero-kicker::before {
	content: "";
	display: inline-block;
	width: 22px;
	height: 1px;
	margin-right: 12px;
	vertical-align: .32em;
	background: var(--nw-c1);
}

.nw-hero-readout {
	display: flex;
	flex-wrap: wrap;
	gap: 4px 22px;
	color: var(--nw-muted);
	font-variant-numeric: tabular-nums;
}

.nw-hero-clock span {
	color: var(--nw-text);
}

.nw-hero-main {
	align-self: center;
	min-width: 0;
	padding-inline: 14px;
}

.nw-hero-title {
	margin: 0;
	/* One word per line, sized so the longest word always fits the measure. */
	font-size: min(clamp(4.2rem, 17.5vw, 15.5rem), calc((100vw - 2 * var(--nw-pad) - 28px) / (var(--nw-title-word) * .6)));
	line-height: .84;
	letter-spacing: -.022em;
	word-spacing: 100vw;
	color: var(--nw-text);
	text-shadow: 0 0 42px color-mix(in srgb, var(--nw-c1) 30%, transparent);
	text-wrap: initial;
}

.nw-hero-roles {
	display: flex;
	align-items: center;
	flex-wrap: wrap;
	gap: 0 .6em;
	margin: clamp(18px, 3vh, 30px) 0 0;
	min-height: 1.7em;
	font-family: var(--nw-font-mono);
	font-size: clamp(.92rem, 1.7vw, 1.2rem);
	letter-spacing: .06em;
	color: var(--nw-text);
	text-transform: uppercase;
}

.nw-prompt {
	color: var(--nw-c2);
	font-weight: 700;
}

.nw-caret {
	display: inline-block;
	width: .62em;
	height: 1.15em;
	margin-left: -.35em;
	background: var(--nw-c1);
	animation: nw-blink 1s steps(1) infinite;
}

.nw-hero-intro {
	max-width: 50ch;
	margin: clamp(14px, 2.2vh, 22px) 0 0;
	color: color-mix(in srgb, var(--nw-text) 82%, var(--nw-bg));
	font-size: clamp(1rem, 1.4vw, 1.16rem);
	line-height: 1.6;
}

.nw-hero-actions {
	display: flex;
	flex-wrap: wrap;
	gap: 12px;
	margin-top: clamp(20px, 3.4vh, 34px);
}

.nw-hero-bottom {
	display: flex;
	flex-wrap: wrap;
	align-items: flex-end;
	justify-content: space-between;
	gap: 16px;
	padding-inline: 14px;
}

.nw-scrollcue {
	display: inline-flex;
	align-items: center;
	gap: 12px;
	min-height: 44px;
	margin-left: auto;
	color: var(--nw-muted);
	font-family: var(--nw-font-mono);
	font-size: .7rem;
	letter-spacing: .24em;
	text-decoration: none;
	text-transform: uppercase;
}

.nw-scrollcue:hover {
	color: var(--nw-ink);
}

.nw-scrollcue-line {
	position: relative;
	display: block;
	width: 1px;
	height: 44px;
	background: var(--nw-line-2);
	overflow: hidden;
}

.nw-scrollcue-line::after {
	content: "";
	position: absolute;
	left: 0;
	top: 0;
	width: 1px;
	height: 16px;
	background: var(--nw-c1);
	animation: nw-cue 1.9s var(--nw-ease) infinite;
}

@keyframes nw-cue {
	from { transform: translateY(-16px); }
	to { transform: translateY(44px); }
}

/* Optional key visual */
.nw-hero-visual {
	display: none;
}

@media (min-width: 1000px) {

	.nw-hero--visual .nw-hero-inner {
		grid-template-columns: minmax(0, 1fr) minmax(300px, 30vw);
		column-gap: clamp(30px, 4vw, 70px);
	}

	.nw-hero--visual .nw-hero-top,
	.nw-hero--visual .nw-hero-bottom {
		grid-column: 1 / -1;
	}

	.nw-hero--visual .nw-hero-title {
		font-size: min(clamp(4.2rem, 13vw, 13rem), calc((68vw - 2 * var(--nw-pad)) / (var(--nw-title-word) * .6)));
	}

	.nw-hero-visual {
		display: block;
		align-self: center;
		margin-right: 14px;
		aspect-ratio: 4 / 5;
		max-height: 62vh;
		justify-self: end;
		width: 100%;
		border: 1px solid var(--nw-line-2);
		clip-path: polygon(0 0, calc(100% - 28px) 0, 100% 28px, 100% 100%, 28px 100%, 0 calc(100% - 28px));
	}

	.nw-hero-visual img {
		width: 100%;
		height: 100%;
		object-fit: cover;
	}

	.nw-hero-visual-tag {
		position: absolute;
		left: 0;
		right: 0;
		bottom: 0;
		z-index: 2;
		padding: 30px 16px 12px 40px;
		background: linear-gradient(to top, rgba(0, 0, 0, .78), transparent);
		color: #fff;
		font-family: var(--nw-font-mono);
		font-size: .66rem;
		letter-spacing: .18em;
		text-transform: uppercase;
	}
}

@media (max-width: 640px) {

	.nw-hero-top {
		flex-direction: column;
		gap: 4px;
	}

	.nw-hero-readout {
		font-size: .64rem;
		letter-spacing: .12em;
	}

	.nw-hero-actions .nw-btn {
		flex: 1 1 auto;
	}

	.nw-corner {
		width: 18px;
		height: 18px;
	}

	.nw-corner--tl,
	.nw-corner--tr { top: 10px; }

	.nw-corner--bl,
	.nw-corner--br { bottom: 10px; }

	.nw-corner--tl,
	.nw-corner--bl { left: 8px; }

	.nw-corner--tr,
	.nw-corner--br { right: 8px; }

	.nw-hero-top,
	.nw-hero-main,
	.nw-hero-bottom {
		padding-inline: 6px;
	}

	.nw-fx-grid .nw-gridfloor { height: 34%; }
	.nw-fx-grid .nw-hero-horizon { bottom: 34%; }
}

/* ==========================================================================
   06  Sections
   ========================================================================== */

.nw-section {
	position: relative;
	padding-block: clamp(64px, 9vw, 132px);
	border-bottom: 1px solid var(--nw-line);
}

.nw-section--intro {
	padding-block: clamp(48px, 6vw, 88px);
}

.nw-section-head {
	display: grid;
	grid-template-columns: 1fr auto;
	align-items: end;
	gap: 10px 30px;
	margin-bottom: clamp(30px, 4.4vw, 60px);
	padding-bottom: 22px;
	border-bottom: 1px solid var(--nw-line);
	position: relative;
}

.nw-section-head::after {
	content: "";
	position: absolute;
	left: 0;
	bottom: -1px;
	width: clamp(60px, 12vw, 160px);
	height: 1px;
	background: var(--nw-c1);
	box-shadow: 0 0 12px var(--nw-c1);
}

.nw-section-kicker {
	grid-column: 1 / -1;
	display: flex;
	align-items: center;
	gap: 12px;
	margin: 0 0 6px;
	font-family: var(--nw-font-mono);
	font-size: .72rem;
	letter-spacing: .2em;
	line-height: 1.4;
	text-transform: uppercase;
	color: var(--nw-muted);
}

.nw-section-num {
	color: var(--nw-c2);
	font-weight: 700;
}

.nw-mode-light .nw-section-num {
	color: var(--nw-ink);
}

.nw-section-label::before {
	content: "";
	display: inline-block;
	width: 28px;
	height: 1px;
	margin-right: 12px;
	vertical-align: .3em;
	background: var(--nw-line-2);
}

.nw-section-title {
	margin: 0;
	font-size: clamp(2.7rem, 7.4vw, 6.2rem);
	line-height: .9;
	letter-spacing: -.02em;
}

.nw-more {
	display: inline-flex;
	align-items: center;
	gap: 8px;
	min-height: 44px;
	color: var(--nw-ink);
	font-family: var(--nw-font-mono);
	font-size: .74rem;
	font-weight: 700;
	letter-spacing: .16em;
	text-decoration: none;
	text-transform: uppercase;
}

.nw-more .nw-icon {
	transition: transform .25s var(--nw-ease);
}

.nw-more:hover .nw-icon {
	transform: translateX(5px);
}

@media (max-width: 640px) {
	.nw-section-head {
		grid-template-columns: 1fr;
	}
}

/* ---------- Work: filters, grid and cards ---------- */

.nw-filters {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	gap: 8px;
	margin-bottom: clamp(22px, 3vw, 36px);
}

.nw-filters-label {
	margin-right: 8px;
	font-family: var(--nw-font-mono);
	font-size: .7rem;
	letter-spacing: .2em;
	text-transform: uppercase;
	color: var(--nw-muted);
}

.nw-filters-label::after {
	content: " //";
	color: var(--nw-c2);
}

.nw-filter {
	position: relative;
	display: inline-flex;
	align-items: center;
	gap: 10px;
	min-height: 44px;
	padding: 0 16px 0 14px;
	border: 1px solid var(--nw-line-2);
	background: transparent;
	color: var(--nw-text);
	font-family: var(--nw-font-mono);
	font-size: .72rem;
	font-weight: 700;
	letter-spacing: .14em;
	text-transform: uppercase;
	cursor: pointer;
	transition: border-color .2s, color .2s, background-color .2s;
}

/* The toggle's own little indicator light */
.nw-filter::before {
	content: "";
	width: 7px;
	height: 7px;
	border: 1px solid var(--nw-muted);
	transition: background-color .2s, border-color .2s, box-shadow .2s;
}

.nw-filter:hover {
	border-color: var(--nw-c1);
}

.nw-filter.is-active {
	border-color: var(--nw-c1);
	background: var(--nw-c1-soft);
	color: var(--nw-ink);
}

.nw-filter.is-active::before {
	border-color: var(--nw-c1);
	background: var(--nw-c1);
	box-shadow: 0 0 10px var(--nw-c1);
}

.nw-filters-count {
	margin-left: auto;
	font-family: var(--nw-font-mono);
	font-size: .7rem;
	letter-spacing: .16em;
	text-transform: uppercase;
	color: var(--nw-muted);
}

.nw-grid {
	display: grid;
	grid-template-columns: repeat(12, minmax(0, 1fr));
	gap: clamp(14px, 1.8vw, 26px);
}

.nw-card {
	grid-column: span 4;
	min-width: 0;
	transition: filter .3s;
}

/* A zig-zag of double-width cards: wide-left, then wide-right. */
.nw-grid--feature .nw-card:nth-child(4n+1),
.nw-grid--feature .nw-card:nth-child(4n+4) {
	grid-column: span 8;
}

.nw-grid--feature .nw-card:last-child:nth-child(odd) {
	grid-column: span 12;
}

/* While a filter is on, every card is the same size so the grid packs cleanly. */
.nw-grid.is-filtered .nw-card {
	grid-column: span 4 !important;
}

.nw-card.is-hidden {
	display: none;
}

.nw-card-link {
	--cut: 22px;
	display: flex;
	flex-direction: column;
	height: 100%;
	color: var(--nw-text);
	text-decoration: none;
}

.nw-card-hud {
	display: flex;
	justify-content: space-between;
	align-items: center;
	padding: 10px 30px 10px 14px;
	border-bottom: 1px solid var(--bd);
	font-family: var(--nw-font-mono);
	font-size: .7rem;
	letter-spacing: .18em;
	color: var(--nw-muted);
	transition: border-color .25s;
}

.nw-card-index {
	color: var(--nw-ink);
	font-weight: 700;
}

.nw-card-index::before {
	content: "N\00BA ";
	color: var(--nw-muted);
	font-weight: 400;
}

.nw-card-media {
	flex: 1 1 auto;
	height: clamp(230px, 27vw, 400px);
}

.nw-card-media img {
	width: 100%;
	height: 100%;
	object-fit: cover;
}

.nw-card-media--empty {
	background:
		linear-gradient(var(--nw-c1-soft) 1px, transparent 1px) 0 0 / 100% 28px,
		linear-gradient(90deg, var(--nw-c1-soft) 1px, transparent 1px) 0 0 / 28px 100%,
		var(--nw-panel);
}

.nw-card-sweep {
	position: absolute;
	left: 0;
	right: 0;
	top: 0;
	z-index: 2;
	height: 2px;
	background: var(--nw-c1);
	box-shadow: 0 0 18px 4px color-mix(in srgb, var(--nw-c1) 60%, transparent);
	opacity: 0;
	pointer-events: none;
}

.nw-card-body {
	position: relative;
	display: grid;
	grid-template-columns: 1fr auto;
	gap: 6px 16px;
	align-items: end;
	padding: 18px 16px 20px 30px;
	border-top: 1px solid var(--bd);
	transition: border-color .25s;
}

.nw-card-title {
	grid-column: 1;
	margin: 0;
	font-size: clamp(1.5rem, 2.3vw, 2.1rem);
	line-height: .98;
	transition: color .2s;
	overflow-wrap: anywhere;
}

.nw-card-meta {
	grid-column: 1;
	display: flex;
	flex-wrap: wrap;
	gap: 2px 14px;
	font-family: var(--nw-font-mono);
	font-size: .7rem;
	letter-spacing: .12em;
	line-height: 1.5;
	text-transform: uppercase;
	color: var(--nw-muted);
}

.nw-card-client {
	color: color-mix(in srgb, var(--nw-text) 85%, var(--nw-bg));
}

.nw-card-open {
	grid-column: 2;
	grid-row: 1 / span 2;
	display: grid;
	place-items: center;
	width: 40px;
	height: 40px;
	border: 1px solid var(--nw-line-2);
	color: var(--nw-muted);
	transition: color .2s, border-color .2s, background-color .2s;
}

/* Hover: the border ignites, a scan line sweeps the image, the card jitters once. */
.nw-card-link:hover,
.nw-card-link:focus-visible {
	--bd: var(--nw-c1);
}

.nw-card:hover,
.nw-card:focus-within {
	filter: drop-shadow(0 0 16px color-mix(in srgb, var(--nw-c1) 32%, transparent));
}

.nw-mode-light .nw-card:hover,
.nw-mode-light .nw-card:focus-within {
	filter: drop-shadow(0 8px 22px rgba(12, 13, 16, .16));
}

.nw-card-link:hover .nw-card-title {
	color: var(--nw-ink);
}

.nw-card-link:hover .nw-card-open {
	color: var(--nw-on);
	border-color: var(--nw-c1);
	background: var(--nw-c1);
}

.nw-card-link:hover .nw-card-media img {
	transform: scale(1.04);
}

.nw-fx-hover .nw-card-link:hover .nw-card-sweep {
	animation: nw-sweep 1.1s linear infinite;
}

.nw-fx-hover .nw-card-link:hover {
	animation: nw-jitter .28s steps(2) 1;
}

@keyframes nw-sweep {
	0% { opacity: 0; top: 0; }
	8% { opacity: 1; }
	92% { opacity: 1; }
	100% { opacity: 0; top: 100%; }
}

@keyframes nw-jitter {
	0% { transform: translate(2px, -1px); }
	50% { transform: translate(-2px, 1px); }
	100% { transform: none; }
}

@media (max-width: 1000px) {

	.nw-card,
	.nw-grid.is-filtered .nw-card {
		grid-column: span 6 !important;
	}

	.nw-grid--feature:not(.is-filtered) .nw-card:nth-child(4n+1) {
		grid-column: span 12 !important;
	}

	.nw-card-media {
		height: clamp(210px, 38vw, 360px);
	}
}

@media (max-width: 640px) {

	.nw-card,
	.nw-grid.is-filtered .nw-card {
		grid-column: span 12 !important;
	}

	.nw-card-media {
		height: 58vw;
	}

	.nw-filters {
		flex-wrap: nowrap;
		overflow-x: auto;
		margin-inline: calc(-1 * var(--nw-pad));
		padding: 2px var(--nw-pad) 10px;
		scrollbar-width: none;
	}

	.nw-filters::-webkit-scrollbar {
		display: none;
	}

	.nw-filter {
		flex: none;
	}

	.nw-filters-label,
	.nw-filters-count {
		display: none;
	}
}

.nw-empty {
	padding: 40px 24px;
	border: 1px dashed var(--nw-line-2);
	color: var(--nw-muted);
	font-family: var(--nw-font-mono);
	font-size: .85rem;
	text-align: center;
}

/* ---------- Modules (services) ---------- */

.nw-modules {
	display: grid;
	grid-template-columns: repeat(3, minmax(0, 1fr));
	gap: clamp(14px, 1.8vw, 24px);
	margin: 0;
	padding: 0;
	list-style: none;
}

.nw-module {
	--cut: 20px;
	display: flex;
	flex-direction: column;
	padding: 22px 24px 20px;
	min-height: 290px;
}

.nw-module:hover {
	--bd: var(--nw-c1);
}

.nw-module-id {
	margin: 0 0 26px;
	font-family: var(--nw-font-mono);
	font-size: .68rem;
	letter-spacing: .2em;
	color: var(--nw-muted);
}

.nw-module-icon {
	display: grid;
	place-items: center;
	width: 64px;
	height: 64px;
	margin-bottom: 22px;
	border: 1px solid var(--nw-line-2);
	color: var(--nw-ink);
	background: var(--nw-c1-soft);
	clip-path: polygon(0 0, calc(100% - 12px) 0, 100% 12px, 100% 100%, 12px 100%, 0 calc(100% - 12px));
	transition: background-color .25s, color .25s;
}

.nw-module:hover .nw-module-icon {
	background: var(--nw-c1);
	color: var(--nw-on);
}

.nw-module-title {
	margin: 0 0 10px;
	font-size: clamp(1.55rem, 2.2vw, 1.95rem);
}

.nw-module-text {
	margin: 0 0 22px;
	color: color-mix(in srgb, var(--nw-text) 80%, var(--nw-bg));
	font-size: .97rem;
	line-height: 1.62;
}

.nw-module-state {
	display: flex;
	align-items: center;
	gap: 10px;
	margin: auto 0 0;
	padding-top: 14px;
	border-top: 1px solid var(--nw-line);
	font-family: var(--nw-font-mono);
	font-size: .66rem;
	letter-spacing: .2em;
	text-transform: uppercase;
	color: var(--nw-muted);
}

.nw-module-state .nw-led {
	width: 6px;
	height: 6px;
}

@media (max-width: 1000px) {
	.nw-modules { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}

@media (max-width: 640px) {
	.nw-modules { grid-template-columns: 1fr; }
	.nw-module { min-height: 0; }
}

/* ---------- Stats ---------- */

.nw-section--stats {
	background:
		linear-gradient(color-mix(in srgb, var(--nw-c1) 4%, transparent) 1px, transparent 1px) 0 0 / 100% 48px,
		linear-gradient(90deg, color-mix(in srgb, var(--nw-c1) 4%, transparent) 1px, transparent 1px) 0 0 / 48px 100%;
}

.nw-stats {
	display: grid;
	grid-template-columns: repeat(auto-fit, minmax(220px, 1fr));
	margin: 0;
	border: 1px solid var(--nw-line);
	background: color-mix(in srgb, var(--nw-panel) 92%, transparent);
}

.nw-stat {
	position: relative;
	display: flex;
	flex-direction: column-reverse;
	justify-content: flex-end;
	gap: 8px;
	padding: clamp(22px, 3vw, 40px) clamp(18px, 2.4vw, 34px);
	border-right: 1px solid var(--nw-line);
	border-bottom: 1px solid var(--nw-line);
	margin: 0 -1px -1px 0;
}

.nw-stat::after {
	content: "";
	position: absolute;
	left: clamp(18px, 2.4vw, 34px);
	right: clamp(18px, 2.4vw, 34px);
	bottom: 18px;
	height: 2px;
	background: linear-gradient(90deg, var(--nw-c1) 0 38%, var(--nw-line) 38% 100%);
}

.nw-stat:nth-child(2n)::after { background: linear-gradient(90deg, var(--nw-c2) 0 64%, var(--nw-line) 64% 100%); }
.nw-stat:nth-child(3n)::after { background: linear-gradient(90deg, var(--nw-c3) 0 82%, var(--nw-line) 82% 100%); }

.nw-stat-number {
	margin: 0;
	font-family: var(--nw-font-display);
	font-stretch: 75%;
	font-variation-settings: "wdth" 75;
	font-size: clamp(4rem, 8.6vw, 7.6rem);
	font-weight: 800;
	line-height: .86;
	letter-spacing: -.02em;
	color: var(--nw-text);
	font-variant-numeric: tabular-nums;
	text-shadow: 0 0 34px color-mix(in srgb, var(--nw-c1) 28%, transparent);
}

.nw-stat-label {
	margin: 0 0 22px;
	font-family: var(--nw-font-mono);
	font-size: .74rem;
	letter-spacing: .16em;
	line-height: 1.5;
	text-transform: uppercase;
	color: var(--nw-muted);
}

/* ---------- Process timeline ---------- */

.nw-timeline {
	display: grid;
	grid-template-columns: repeat(auto-fit, minmax(220px, 1fr));
	gap: 0;
	margin: 0;
	padding: 0;
	list-style: none;
	counter-reset: nwstep;
}

.nw-step {
	position: relative;
	padding: 44px clamp(16px, 2vw, 30px) 0 0;
	border-top: 1px solid var(--nw-line-2);
}

.nw-step-node {
	position: absolute;
	top: -7px;
	left: 0;
	width: 13px;
	height: 13px;
	background: var(--nw-bg);
	border: 2px solid var(--nw-c1);
	transform: rotate(45deg);
	box-shadow: 0 0 14px color-mix(in srgb, var(--nw-c1) 60%, transparent);
}

.nw-step:nth-child(even) .nw-step-node {
	border-color: var(--nw-c2);
	box-shadow: 0 0 14px color-mix(in srgb, var(--nw-c2) 60%, transparent);
}

.nw-step-num {
	margin: 0 0 10px;
	font-family: var(--nw-font-mono);
	font-size: .72rem;
	font-weight: 700;
	letter-spacing: .2em;
	color: var(--nw-ink);
}

.nw-step-title {
	margin: 0 0 12px;
	font-size: clamp(1.8rem, 2.8vw, 2.5rem);
}

.nw-step-text {
	margin: 0;
	max-width: 36ch;
	color: color-mix(in srgb, var(--nw-text) 80%, var(--nw-bg));
	font-size: .97rem;
	line-height: 1.62;
}

@media (max-width: 760px) {

	.nw-timeline {
		grid-template-columns: 1fr;
	}

	.nw-step {
		padding: 0 0 34px 34px;
		border-top: 0;
		border-left: 1px solid var(--nw-line-2);
	}

	.nw-step:last-child {
		padding-bottom: 0;
	}

	.nw-step-node {
		top: 2px;
		left: -7px;
	}

	.nw-step-text {
		max-width: none;
	}
}

/* ---------- Transmissions (testimonials) ---------- */

.nw-transmissions {
	display: grid;
	grid-template-columns: repeat(auto-fit, minmax(290px, 1fr));
	gap: clamp(14px, 1.8vw, 24px);
}

.nw-transmission {
	--cut: 20px;
	display: flex;
	flex-direction: column;
	padding: 0 0 22px;
}

.nw-transmission-head {
	display: flex;
	align-items: center;
	gap: 12px;
	margin: 0 0 22px;
	padding: 11px 28px 11px 16px;
	border-bottom: 1px solid var(--nw-line);
	font-family: var(--nw-font-mono);
	font-size: .68rem;
	letter-spacing: .18em;
	text-transform: uppercase;
	color: var(--nw-muted);
}

.nw-transmission-state {
	margin-left: auto;
	color: var(--nw-ink);
}

/* Signal bars */
.nw-signal {
	display: inline-flex;
	align-items: flex-end;
	gap: 2px;
	height: 14px;
}

.nw-signal i {
	display: block;
	width: 3px;
	background: var(--nw-c1);
	transform-origin: 50% 100%;
	animation: nw-signal 1.6s ease-in-out infinite;
}

.nw-signal i:nth-child(1) { height: 4px; animation-delay: 0s; }
.nw-signal i:nth-child(2) { height: 6px; animation-delay: .12s; }
.nw-signal i:nth-child(3) { height: 9px; animation-delay: .24s; }
.nw-signal i:nth-child(4) { height: 12px; animation-delay: .36s; }
.nw-signal i:nth-child(5) { height: 14px; animation-delay: .48s; background: var(--nw-c2); }

@keyframes nw-signal {
	0%, 100% { opacity: 1; }
	50% { opacity: .3; }
}

.nw-transmission-quote {
	flex: 1 1 auto;
	margin: 0;
	padding: 0 24px;
	border: 0;
}

.nw-transmission-quote p {
	margin: 0;
	font-size: 1.08rem;
	line-height: 1.62;
	color: var(--nw-text);
}

.nw-transmission-quote p::before {
	content: "\201C";
	color: var(--nw-c2);
	font-family: var(--nw-font-display);
	font-weight: 800;
	font-size: 1.5em;
	line-height: 0;
	margin-right: .08em;
	vertical-align: -.22em;
}

.nw-transmission-from {
	display: grid;
	gap: 2px;
	margin: 22px 24px 0;
	padding-top: 14px;
	border-top: 1px dashed var(--nw-line-2);
	font-family: var(--nw-font-mono);
	font-size: .74rem;
	letter-spacing: .1em;
	text-transform: uppercase;
}

.nw-transmission-name {
	color: var(--nw-text);
	font-weight: 700;
}

.nw-transmission-role {
	color: var(--nw-muted);
}

/* ---------- Client strip ---------- */

.nw-section--clients {
	padding-block: clamp(40px, 5vw, 70px);
	overflow: hidden;
}

.nw-clients-title {
	display: flex;
	align-items: center;
	gap: 12px;
	margin: 0 0 26px;
	font-family: var(--nw-font-mono);
	font-stretch: 100%;
	font-variation-settings: normal;
	font-size: .72rem;
	font-weight: 400;
	letter-spacing: .2em;
	line-height: 1.4;
	color: var(--nw-muted);
}

.nw-clients {
	overflow: hidden;
	-webkit-mask-image: linear-gradient(90deg, transparent, #000 8%, #000 92%, transparent);
	mask-image: linear-gradient(90deg, transparent, #000 8%, #000 92%, transparent);
}

.nw-clients-track {
	display: flex;
	width: max-content;
}

.nw-fx-marquee .nw-clients-track {
	animation: nw-marquee 38s linear infinite;
}

.nw-clients:hover .nw-clients-track {
	animation-play-state: paused;
}

.nw-clients-list {
	display: flex;
	flex: none;
	align-items: center;
	margin: 0;
	padding: 0;
	list-style: none;
}

.nw-clients-list li {
	display: flex;
	align-items: center;
	font-family: var(--nw-font-display);
	font-stretch: 75%;
	font-variation-settings: "wdth" 75;
	font-size: clamp(2rem, 4.6vw, 3.6rem);
	font-weight: 800;
	line-height: 1;
	letter-spacing: -.005em;
	text-transform: uppercase;
	white-space: nowrap;
	color: var(--nw-text);
}

.nw-clients-list li:nth-child(even) {
	color: transparent;
	-webkit-text-stroke: 1px color-mix(in srgb, var(--nw-text) 70%, var(--nw-bg));
}

.nw-clients-list li::after {
	content: "";
	width: 10px;
	height: 10px;
	margin: 0 clamp(22px, 3vw, 44px);
	background: var(--nw-c2);
	transform: rotate(45deg);
	-webkit-text-stroke: 0;
}

/* Marquee off (or reduced motion): a still, wrapping, centred row. */
body:not(.nw-fx-marquee) .nw-clients {
	-webkit-mask-image: none;
	mask-image: none;
}

body:not(.nw-fx-marquee) .nw-clients-track {
	width: auto;
	padding-inline: var(--nw-pad);
}

body:not(.nw-fx-marquee) .nw-clients-list {
	flex-wrap: wrap;
	justify-content: center;
	row-gap: 14px;
}

body:not(.nw-fx-marquee) .nw-clients-list[aria-hidden="true"] {
	display: none;
}

/* ---------- Logs list ---------- */

.nw-logs {
	border-top: 1px solid var(--nw-line);
}

.nw-log {
	position: relative;
	display: grid;
	grid-template-columns: 150px minmax(0, 1fr) auto;
	gap: 8px clamp(18px, 3vw, 44px);
	align-items: start;
	padding: clamp(22px, 2.6vw, 34px) 0;
	border-bottom: 1px solid var(--nw-line);
	transition: background-color .25s;
}

.nw-log::before {
	content: "";
	position: absolute;
	left: calc(-1 * var(--nw-pad));
	top: -1px;
	bottom: -1px;
	width: 3px;
	background: var(--nw-c1);
	transform: scaleY(0);
	transform-origin: 50% 0;
	transition: transform .3s var(--nw-ease);
}

.nw-log:hover::before,
.nw-log:focus-within::before {
	transform: none;
}

.nw-log.sticky::before {
	background: var(--nw-c3);
	transform: none;
}

.nw-log-stamp {
	padding-top: 3px;
	font-family: var(--nw-font-mono);
	font-size: .74rem;
	letter-spacing: .1em;
	line-height: 1.6;
	color: var(--nw-muted);
	font-variant-numeric: tabular-nums;
}

.nw-log-stamp time {
	display: grid;
}

.nw-log-date {
	color: var(--nw-text);
}

.nw-log-flags {
	display: flex;
	flex-wrap: wrap;
	gap: 6px;
	margin: 0 0 12px;
}

.nw-log-title {
	margin: 0 0 10px;
	font-size: clamp(1.7rem, 3vw, 2.5rem);
	line-height: .98;
	overflow-wrap: anywhere;
}

.nw-log-title a {
	color: var(--nw-text);
	text-decoration: none;
	background: linear-gradient(var(--nw-c1), var(--nw-c1)) 0 100% / 0 2px no-repeat;
	transition: background-size .35s var(--nw-ease), color .2s;
}

.nw-log-title a:hover {
	color: var(--nw-ink);
	background-size: 100% 2px;
}

.nw-log-excerpt {
	max-width: 68ch;
	margin: 0 0 12px;
	color: color-mix(in srgb, var(--nw-text) 80%, var(--nw-bg));
	font-size: 1rem;
	line-height: 1.65;
}

.nw-log-foot {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	gap: 4px 18px;
	margin: 0;
	font-family: var(--nw-font-mono);
	font-size: .7rem;
	letter-spacing: .14em;
	text-transform: uppercase;
	color: var(--nw-muted);
}

.nw-log-open {
	display: inline-flex;
	align-items: center;
	gap: 6px;
	min-height: 32px;
	color: var(--nw-ink);
	text-decoration: none;
	font-weight: 700;
}

.nw-log-thumb {
	--cut: 14px;
	display: block;
	width: clamp(120px, 15vw, 190px);
	aspect-ratio: 4 / 3;
	overflow: hidden;
}

.nw-log-thumb img {
	width: 100%;
	height: 100%;
	object-fit: cover;
	transition: transform .6s var(--nw-ease);
}

.nw-log:hover .nw-log-thumb {
	--bd: var(--nw-c1);
}

.nw-log:hover .nw-log-thumb img {
	transform: scale(1.06);
}

@media (max-width: 760px) {

	.nw-log {
		grid-template-columns: minmax(0, 1fr) auto;
	}

	.nw-log-stamp {
		grid-column: 1 / -1;
		padding: 0;
	}

	.nw-log-stamp time {
		display: flex;
		gap: 12px;
	}

	.nw-log-thumb {
		width: 96px;
	}
}

/* ---------- Contact ---------- */

.nw-section--contact {
	border-bottom: 0;
	background:
		radial-gradient(50% 60% at 100% 0, color-mix(in srgb, var(--nw-c2) 10%, transparent), transparent 70%),
		radial-gradient(40% 50% at 0 100%, color-mix(in srgb, var(--nw-c1) 8%, transparent), transparent 70%);
}

.nw-contact {
	display: grid;
	grid-template-columns: minmax(0, 5fr) minmax(0, 7fr);
	gap: clamp(30px, 5vw, 80px);
	align-items: start;
}

.nw-contact-title {
	margin-bottom: 22px;
	font-size: clamp(2.7rem, 6.2vw, 5.4rem);
}

.nw-contact-intro {
	max-width: 46ch;
	color: color-mix(in srgb, var(--nw-text) 84%, var(--nw-bg));
	font-size: 1.1rem;
}

.nw-prompt-lines {
	margin: 26px 0;
	padding: 14px 16px;
	border-left: 2px solid var(--nw-c2);
	background: color-mix(in srgb, var(--nw-panel) 80%, transparent);
	font-family: var(--nw-font-mono);
	font-size: .8rem;
	line-height: 1.8;
	color: var(--nw-text);
	overflow-wrap: anywhere;
}

.nw-prompt-lines p {
	margin: 0;
}

.nw-prompt-reply {
	color: var(--nw-ink);
}

.nw-contact-mail {
	margin: 22px 0 18px;
}

.nw-contact-mail a {
	display: inline-flex;
	align-items: center;
	gap: 10px;
	min-height: 44px;
	font-family: var(--nw-font-mono);
	font-size: clamp(.95rem, 1.6vw, 1.15rem);
	overflow-wrap: anywhere;
}

.nw-terminal {
	--cut: 24px;
	padding: 0 clamp(16px, 2.4vw, 30px) clamp(20px, 2.6vw, 30px);
}

.nw-terminal-bar {
	display: flex;
	align-items: center;
	gap: 14px;
	margin: 0 calc(-1 * clamp(16px, 2.4vw, 30px)) 24px;
	padding: 12px 34px 12px 16px;
	border-bottom: 1px solid var(--nw-line);
	font-family: var(--nw-font-mono);
	font-size: .68rem;
	letter-spacing: .14em;
	color: var(--nw-muted);
	text-transform: uppercase;
}

.nw-terminal-dots {
	display: inline-flex;
	gap: 5px;
}

.nw-terminal-dots i {
	width: 8px;
	height: 8px;
	background: var(--nw-c2);
}

.nw-terminal-dots i:nth-child(2) { background: var(--nw-c3); }
.nw-terminal-dots i:nth-child(3) { background: var(--nw-c1); }

.nw-terminal-path {
	min-width: 0;
	overflow: hidden;
	text-overflow: ellipsis;
	white-space: nowrap;
	text-transform: none;
	letter-spacing: .04em;
}

.nw-terminal-state {
	margin-left: auto;
	color: var(--nw-ink);
	white-space: nowrap;
}

.nw-terminal-form {
	display: grid;
	grid-template-columns: repeat(2, minmax(0, 1fr));
	gap: 18px 20px;
}

.nw-field--full {
	grid-column: 1 / -1;
}

.nw-hp {
	position: absolute !important;
	left: -9999px;
	width: 1px;
	height: 1px;
	overflow: hidden;
}

.nw-terminal-send {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	gap: 14px 22px;
	margin: 4px 0 0;
}

.nw-terminal-hint {
	font-family: var(--nw-font-mono);
	font-size: .7rem;
	letter-spacing: .06em;
	color: var(--nw-muted);
}

@media (max-width: 900px) {
	.nw-contact { grid-template-columns: 1fr; }
}

@media (max-width: 560px) {
	.nw-terminal-form { grid-template-columns: 1fr; }
	.nw-terminal-state { display: none; }
}

/* ==========================================================================
   07  Forms — every field is a chamfered HUD input
   ========================================================================== */

label,
.nw-field > label,
.comment-form label {
	display: block;
	margin-bottom: 8px;
	font-family: var(--nw-font-mono);
	font-size: .7rem;
	font-weight: 700;
	letter-spacing: .16em;
	line-height: 1.4;
	text-transform: uppercase;
	color: var(--nw-muted);
}

.nw-field > label::before,
.comment-form-comment label::before,
.comment-form-author label::before,
.comment-form-email label::before,
.comment-form-url label::before {
	content: "> ";
	color: var(--nw-c2);
}

.nw-mode-light .nw-field > label::before,
.nw-mode-light .comment-form label::before {
	color: var(--nw-ink);
}

input[type="text"],
input[type="email"],
input[type="url"],
input[type="password"],
input[type="search"],
input[type="number"],
input[type="tel"],
input[type="date"],
select,
textarea {
	--bd: var(--nw-line-2);
	--cut: 10px;
	display: block;
	width: 100%;
	min-height: 50px;
	padding: 12px 14px;
	border: 1px solid var(--bd);
	border-radius: 0;
	background:
		linear-gradient(45deg, transparent calc(50% - 1.2px), var(--bd) calc(50% - 1.2px), var(--bd) 50%, transparent 50%) top right / var(--cut) var(--cut) no-repeat border-box,
		linear-gradient(45deg, transparent 50%, var(--bd) 50%, var(--bd) calc(50% + 1.2px), transparent calc(50% + 1.2px)) bottom left / var(--cut) var(--cut) no-repeat border-box,
		color-mix(in srgb, var(--nw-bg) 70%, var(--nw-panel));
	color: var(--nw-text);
	font-family: var(--nw-font-mono);
	font-size: 1rem; /* 16px+ keeps iOS from zooming on focus */
	line-height: 1.5;
	caret-color: var(--nw-c1);
	clip-path: polygon(0 0, calc(100% - var(--cut)) 0, 100% var(--cut), 100% 100%, var(--cut) 100%, 0 calc(100% - var(--cut)));
	transition: border-color .2s;
	-webkit-appearance: none;
	appearance: none;
}

textarea {
	min-height: 150px;
	resize: vertical;
}

select {
	padding-right: 44px;
	background:
		linear-gradient(45deg, transparent 50%, var(--nw-c1) 50%) calc(100% - 23px) 50% / 7px 7px no-repeat,
		linear-gradient(135deg, var(--nw-c1) 50%, transparent 50%) calc(100% - 16px) 50% / 7px 7px no-repeat,
		linear-gradient(45deg, transparent calc(50% - 1.2px), var(--bd) calc(50% - 1.2px), var(--bd) 50%, transparent 50%) top right / var(--cut) var(--cut) no-repeat border-box,
		linear-gradient(45deg, transparent 50%, var(--bd) 50%, var(--bd) calc(50% + 1.2px), transparent calc(50% + 1.2px)) bottom left / var(--cut) var(--cut) no-repeat border-box,
		color-mix(in srgb, var(--nw-bg) 70%, var(--nw-panel));
}

select option {
	background: var(--nw-panel);
	color: var(--nw-text);
}

input::placeholder,
textarea::placeholder {
	color: var(--nw-muted);
	opacity: .75;
}

input:hover,
select:hover,
textarea:hover {
	--bd: color-mix(in srgb, var(--nw-c1) 55%, var(--nw-line-2));
}

input:focus,
select:focus,
textarea:focus {
	--bd: var(--nw-c1);
	outline: 0;
}

/* clip-path would cut an outline off, so focus is the ignited border plus an
   inner glow line. */
input:focus-visible,
select:focus-visible,
textarea:focus-visible {
	outline: 0;
	box-shadow: inset 0 -3px 0 var(--nw-c1);
}

input[type="checkbox"],
input[type="radio"] {
	-webkit-appearance: none;
	appearance: none;
	display: inline-grid;
	place-content: center;
	flex: none;
	width: 22px;
	height: 22px;
	min-height: 0;
	margin: 0 10px 0 0;
	padding: 0;
	border: 1px solid var(--nw-line-2);
	background: transparent;
	vertical-align: -5px;
	cursor: pointer;
}

input[type="radio"] {
	border-radius: 50%;
}

input[type="checkbox"]::before,
input[type="radio"]::before {
	content: "";
	width: 12px;
	height: 12px;
	background: var(--nw-c1);
	transform: scale(0);
	transition: transform .15s var(--nw-ease);
}

input[type="radio"]::before {
	border-radius: 50%;
}

input[type="checkbox"]:checked,
input[type="radio"]:checked {
	border-color: var(--nw-c1);
}

input[type="checkbox"]:checked::before,
input[type="radio"]:checked::before {
	transform: scale(1);
}

.nw-consent,
.comment-form-cookies-consent {
	display: flex;
	align-items: flex-start;
}

.nw-consent label,
.comment-form-cookies-consent label {
	margin: 1px 0 0;
	font-family: var(--nw-font-body);
	font-size: .88rem;
	font-weight: 400;
	letter-spacing: 0;
	line-height: 1.5;
	text-transform: none;
	color: color-mix(in srgb, var(--nw-text) 80%, var(--nw-bg));
}

/* Search form: a command line */
.search-form {
	position: relative;
	display: flex;
	align-items: stretch;
	gap: 8px;
	max-width: 620px;
}

.search-form-prompt {
	position: absolute;
	left: 15px;
	top: 50%;
	z-index: 1;
	transform: translateY(-50%);
	color: var(--nw-c2);
	font-family: var(--nw-font-mono);
	font-weight: 700;
	pointer-events: none;
}

.search-form .search-field {
	flex: 1 1 auto;
	min-width: 0;
	padding-left: 36px;
}

.search-form .search-submit {
	flex: none;
	padding-inline: 18px;
}

.search-field::-webkit-search-cancel-button {
	-webkit-appearance: none;
}

@media (max-width: 480px) {
	.search-form .search-submit span {
		border: 0;
		clip: rect(1px, 1px, 1px, 1px);
		height: 1px;
		margin: -1px;
		overflow: hidden;
		position: absolute;
		width: 1px;
	}
}

/* Password-protected entries */
.post-password-form {
	padding: 26px;
	border: 1px solid var(--nw-c2);
	background: var(--nw-c2-soft);
}

.post-password-form p:first-child {
	font-family: var(--nw-font-mono);
	font-size: .85rem;
	color: var(--nw-text);
}

.post-password-form p:first-child::before {
	content: "[ ENCRYPTED ] ";
	color: color-mix(in srgb, var(--nw-c2) 78%, var(--nw-text));
	font-weight: 700;
}

.post-password-form p:last-child {
	display: flex;
	flex-wrap: wrap;
	align-items: flex-end;
	gap: 10px;
	margin: 0;
}

.post-password-form label {
	flex: 1 1 240px;
	margin: 0;
}

.post-password-form input[type="password"] {
	margin-top: 8px;
}

/* ==========================================================================
   08  Page headers, layouts, sidebar and widgets
   ========================================================================== */

.page-header {
	padding-top: clamp(44px, 7vw, 100px);
	padding-bottom: clamp(26px, 3.6vw, 48px);
}

.page-title {
	margin: 0;
	font-size: clamp(3.2rem, 10.5vw, 9rem);
	line-height: .86;
	letter-spacing: -.022em;
	overflow-wrap: anywhere;
}

.page-title .nw-query {
	color: var(--nw-ink);
}

.page-header--search .page-title {
	font-size: clamp(2.6rem, 7vw, 5.6rem);
}

.page-readout {
	display: inline-flex;
	align-items: center;
	gap: 10px;
	margin: 22px 0 0;
	font-family: var(--nw-font-mono);
	font-size: .72rem;
	letter-spacing: .18em;
	text-transform: uppercase;
	color: var(--nw-muted);
}

.page-readout::before {
	content: "";
	width: 8px;
	height: 8px;
	background: var(--nw-c1);
}

.page-header .search-form {
	margin-top: 26px;
}

.archive-description {
	max-width: 60ch;
	margin-top: 18px;
	color: color-mix(in srgb, var(--nw-text) 84%, var(--nw-bg));
	font-size: 1.1rem;
}

.archive-description p:last-child {
	margin-bottom: 0;
}

.nw-page-intro {
	max-width: 60ch;
	margin-top: 22px;
	font-size: 1.12rem;
	color: color-mix(in srgb, var(--nw-text) 86%, var(--nw-bg));
}

.nw-page-intro > :last-child {
	margin-bottom: 0;
}

.site-main {
	padding-bottom: clamp(60px, 8vw, 120px);
}

.nw-home.site-main,
.site-main:has(> .nw-section:last-child) {
	padding-bottom: 0;
}

.nw-layout {
	display: grid;
	grid-template-columns: minmax(0, 1fr);
	gap: clamp(36px, 5vw, 80px);
}

.has-sidebar .nw-layout {
	grid-template-columns: minmax(0, 1fr) minmax(260px, 320px);
}

.nw-layout--single {
	padding-top: clamp(40px, 6vw, 90px);
}

@media (max-width: 1000px) {
	.has-sidebar .nw-layout {
		grid-template-columns: minmax(0, 1fr);
	}
}

/* ---------- Widgets ---------- */

.widget-area {
	display: grid;
	gap: 22px;
	align-content: start;
}

.widget {
	--cut: 14px;
	position: relative;
	padding: 20px 20px 22px;
	border: 1px solid var(--nw-line);
	background: var(--nw-panel);
	font-size: .95rem;
	min-width: 0;
}

.widget-title,
.widget .wp-block-heading,
.widget_block > .wp-block-group > .wp-block-group__inner-container > h2,
.widget h2 {
	margin: 0 0 16px;
	padding-bottom: 12px;
	border-bottom: 1px solid var(--nw-line);
	font-family: var(--nw-font-mono);
	font-stretch: 100%;
	font-variation-settings: normal;
	font-size: .72rem;
	font-weight: 700;
	letter-spacing: .2em;
	line-height: 1.4;
	color: var(--nw-ink);
}

.widget-title::before,
.widget h2::before {
	content: "// ";
	color: var(--nw-c2);
}

.nw-mode-light .widget-title::before,
.nw-mode-light .widget h2::before {
	color: var(--nw-muted);
}

.widget ul,
.widget ol {
	margin: 0;
	padding: 0;
	list-style: none;
}

.widget li {
	position: relative;
	padding: 9px 0 9px 18px;
	border-bottom: 1px dashed var(--nw-line);
	line-height: 1.45;
}

.widget li:last-child {
	border-bottom: 0;
	padding-bottom: 0;
}

.widget li::before {
	content: ">";
	position: absolute;
	left: 0;
	color: var(--nw-muted);
	font-family: var(--nw-font-mono);
	font-size: .8rem;
}

.widget li a {
	color: var(--nw-text);
	text-decoration: none;
}

.widget li a:hover {
	color: var(--nw-ink);
}

.widget li ul {
	margin-top: 8px;
}

.widget .wp-block-latest-posts__post-date,
.widget .post-date {
	display: block;
	margin-top: 2px;
	font-family: var(--nw-font-mono);
	font-size: .68rem;
	letter-spacing: .1em;
	color: var(--nw-muted);
}

.widget .search-form,
.widget .wp-block-search {
	max-width: none;
}

.wp-block-search__label {
	margin-bottom: 8px;
}

.wp-block-search__inside-wrapper {
	display: flex;
	gap: 8px;
	border: 0 !important;
	padding: 0 !important;
}

.wp-block-search__input {
	flex: 1 1 auto;
	min-width: 0;
}

.wp-block-search__button {
	flex: none;
	margin: 0;
	padding-inline: 16px;
}

.wp-block-tag-cloud,
.tagcloud {
	display: flex;
	flex-wrap: wrap;
	gap: 6px;
}

.wp-calendar-table {
	width: 100%;
	font-family: var(--nw-font-mono);
	font-size: .78rem;
	text-align: center;
}

.wp-calendar-table caption {
	padding-bottom: 8px;
	color: var(--nw-ink);
	letter-spacing: .14em;
	text-transform: uppercase;
}

.footer-widgets {
	display: grid;
	grid-template-columns: repeat(auto-fit, minmax(240px, 1fr));
	gap: 22px;
	margin-bottom: clamp(40px, 6vw, 70px);
}

/* ==========================================================================
   09  Entry content and core blocks
   ========================================================================== */

.entry-content {
	font-size: 1.0625rem;
	line-height: 1.78;
	color: color-mix(in srgb, var(--nw-text) 92%, var(--nw-bg));
	overflow-wrap: break-word;
}

.entry-content::after {
	content: "";
	display: table;
	clear: both;
}

.entry-content > * {
	margin-top: 0;
	margin-bottom: 1.5rem;
}

.entry-content > :last-child {
	margin-bottom: 0;
}

.entry-content h2,
.entry-content h3,
.entry-content h4 {
	margin-top: 2.6rem;
	margin-bottom: 1rem;
}

.entry-content h5,
.entry-content h6 {
	margin-top: 2.2rem;
	margin-bottom: .8rem;
}

.entry-content > h2:first-child,
.entry-content > h3:first-child {
	margin-top: 0;
}

.entry-content a {
	color: var(--nw-ink);
}

.entry-content a:hover {
	color: var(--nw-text);
	text-decoration-color: var(--nw-c2);
}

.entry-content strong {
	color: var(--nw-text);
	font-weight: 650;
}

.entry-content ul,
.entry-content ol {
	padding-left: 1.4em;
}

.entry-content li {
	margin-bottom: .5em;
}

.entry-content ul > li::marker {
	color: var(--nw-c1);
	content: "\25B8\00A0";
}

.nw-mode-light .entry-content ul > li::marker {
	color: var(--nw-ink);
}

.entry-content ol > li::marker {
	color: var(--nw-ink);
	font-family: var(--nw-font-mono);
	font-size: .85em;
	font-weight: 700;
}

.entry-content dt {
	margin-top: 1em;
	font-family: var(--nw-font-mono);
	font-size: .78rem;
	font-weight: 700;
	letter-spacing: .14em;
	text-transform: uppercase;
	color: var(--nw-ink);
}

.entry-content dd {
	margin: .2em 0 0;
}

.has-drop-cap:not(:focus)::first-letter {
	float: left;
	margin: .06em .12em 0 0;
	font-family: var(--nw-font-display);
	font-stretch: 75%;
	font-size: 4.6em;
	font-weight: 800;
	line-height: .8;
	color: var(--nw-ink);
	text-transform: uppercase;
}

/* Alignments. Wide and full break out of the reading column on templates
   with a single centred column. */
.alignleft {
	float: left;
	max-width: 46%;
	margin: .4em 1.6em 1em 0;
}

.alignright {
	float: right;
	max-width: 46%;
	margin: .4em 0 1em 1.6em;
}

.aligncenter {
	margin-inline: auto;
	text-align: center;
}

.aligncenter img {
	margin-inline: auto;
}

.no-sidebar .nw-narrow.entry-content > .alignwide,
.nw-page .nw-narrow > .alignwide {
	width: min(1080px, calc(100vw - 2 * var(--nw-pad)));
	max-width: none;
	margin-left: 50%;
	transform: translateX(-50%);
}

.no-sidebar .nw-narrow.entry-content > .alignfull,
.nw-page .nw-narrow > .alignfull {
	width: 100vw;
	max-width: none;
	margin-left: 50%;
	transform: translateX(-50%);
}

.nw-content-wide > .alignfull {
	width: 100vw;
	max-width: none;
	margin-left: 50%;
	transform: translateX(-50%);
}

.nw-content-wide > :not(.alignwide):not(.alignfull):not(.wp-block-columns):not(.wp-block-gallery):not(.wp-block-group):not(.wp-block-cover):not(.wp-block-media-text) {
	max-width: var(--nw-narrow);
}

@media (max-width: 640px) {
	.alignleft,
	.alignright {
		float: none;
		max-width: 100%;
		margin: 0 0 1.5rem;
	}
}

/* ---------- Images, captions, galleries ---------- */

.wp-block-image img {
	height: auto;
}

.wp-block-image figcaption,
.wp-block-gallery figcaption,
.wp-block-video figcaption,
.wp-block-embed figcaption,
.wp-caption-text,
.wp-element-caption {
	margin: 10px 0 0;
	font-family: var(--nw-font-mono);
	font-size: .72rem;
	letter-spacing: .08em;
	line-height: 1.5;
	text-align: left;
	color: var(--nw-muted);
}

.wp-block-image figcaption::before,
.wp-caption-text::before {
	content: "FIG. // ";
	color: var(--nw-ink);
}

.wp-block-gallery.has-nested-images figure.wp-block-image figcaption {
	padding: 26px 12px 10px;
	background: linear-gradient(to top, rgba(0, 0, 0, .85), transparent);
	color: #e6eef6;
	font-size: .68rem;
	text-align: left;
}

.wp-block-gallery {
	--wp--style--unstable-gallery-gap: 12px;
	gap: 12px;
}

/* ---------- Quotes ---------- */

blockquote,
.wp-block-quote {
	position: relative;
	margin: 2.2rem 0;
	padding: 6px 0 6px 26px;
	border: 0;
	border-left: 2px solid var(--nw-c2);
	color: var(--nw-text);
	font-size: 1.22rem;
	line-height: 1.55;
}

blockquote p:last-of-type {
	margin-bottom: 0;
}

blockquote cite,
.wp-block-quote cite,
.wp-block-pullquote cite {
	display: block;
	margin-top: 14px;
	font-family: var(--nw-font-mono);
	font-size: .72rem;
	font-style: normal;
	letter-spacing: .16em;
	text-transform: uppercase;
	color: var(--nw-muted);
}

blockquote cite::before,
.wp-block-quote cite::before {
	content: "\2014\00A0";
	color: var(--nw-c2);
}

.wp-block-pullquote {
	margin: 3rem 0;
	padding: 34px 0;
	border-top: 1px solid var(--nw-line-2);
	border-bottom: 1px solid var(--nw-line-2);
	text-align: left;
	position: relative;
}

.wp-block-pullquote::before {
	content: "";
	position: absolute;
	left: 0;
	top: -1px;
	width: 90px;
	height: 1px;
	background: var(--nw-c1);
	box-shadow: 0 0 12px var(--nw-c1);
}

.wp-block-pullquote blockquote {
	margin: 0;
	padding: 0;
	border: 0;
}

.wp-block-pullquote p {
	margin: 0;
	font-family: var(--nw-font-display);
	font-stretch: 75%;
	font-variation-settings: "wdth" 75;
	font-size: clamp(2rem, 4.4vw, 3.2rem);
	font-weight: 800;
	line-height: .98;
	text-transform: uppercase;
	color: var(--nw-text);
}

/* ---------- Code ---------- */

:not(pre) > code,
kbd {
	padding: .12em .42em;
	border: 1px solid color-mix(in srgb, var(--nw-c1) 30%, transparent);
	background: var(--nw-c1-soft);
	color: var(--nw-ink);
	font-size: .86em;
}

pre,
.wp-block-code,
.wp-block-preformatted,
.wp-block-verse {
	--cut: 16px;
	position: relative;
	margin: 2rem 0;
	padding: 22px 24px;
	border: 1px solid var(--nw-line-2);
	background: var(--nw-panel);
	color: var(--nw-text);
	font-family: var(--nw-font-mono);
	font-size: .88rem;
	line-height: 1.7;
	overflow-x: auto;
	white-space: pre;
	tab-size: 2;
}

.wp-block-verse,
.wp-block-preformatted {
	white-space: pre-wrap;
}

.wp-block-code code {
	display: block;
	padding: 0;
	border: 0;
	background: none;
	color: inherit;
	font-size: inherit;
}

/* ---------- Tables ---------- */

.wp-block-table {
	margin: 2rem 0;
	overflow-x: auto;
}

table {
	width: 100%;
	border-collapse: collapse;
	font-size: .94rem;
}

th,
td,
.wp-block-table th,
.wp-block-table td {
	padding: 12px 14px;
	border: 1px solid var(--nw-line-2);
	text-align: left;
	vertical-align: top;
}

thead th,
.wp-block-table thead th {
	border-bottom: 1px solid var(--nw-c1);
	background: var(--nw-c1-soft);
	color: var(--nw-ink);
	font-family: var(--nw-font-mono);
	font-size: .72rem;
	font-weight: 700;
	letter-spacing: .16em;
	text-transform: uppercase;
}

.wp-block-table thead {
	border-bottom: 0;
}

tbody tr:nth-child(odd) td {
	background: color-mix(in srgb, var(--nw-panel) 70%, transparent);
}

tbody td:first-child {
	font-family: var(--nw-font-mono);
	font-size: .8rem;
	letter-spacing: .06em;
	color: var(--nw-muted);
	text-transform: uppercase;
	white-space: nowrap;
}

tfoot td,
.wp-block-table tfoot td {
	border-top: 1px solid var(--nw-line-2);
	font-family: var(--nw-font-mono);
	font-size: .78rem;
	color: var(--nw-muted);
}

.wp-block-table.is-style-stripes tbody tr:nth-child(odd) {
	background: none;
}

/* ---------- Separator ---------- */

.wp-block-separator,
.entry-content hr {
	position: relative;
	height: 1px;
	margin: 3rem auto;
	border: 0;
	background: var(--nw-line-2);
	opacity: 1;
	overflow: visible;
}

.wp-block-separator:not(.is-style-wide):not(.is-style-dots):not(.is-style-scan):not(.is-style-hazard) {
	max-width: 160px;
}

.wp-block-separator:not(.is-style-dots):not(.is-style-hazard)::after {
	content: "";
	position: absolute;
	left: 50%;
	top: 50%;
	width: 9px;
	height: 9px;
	margin: -5px 0 0 -5px;
	background: var(--nw-bg);
	border: 1px solid var(--nw-c1);
	transform: rotate(45deg);
}

.wp-block-separator.is-style-dots {
	background: none;
	height: auto;
}

.wp-block-separator.is-style-dots::before {
	color: var(--nw-c1);
	font-family: var(--nw-font-mono);
	letter-spacing: 1.4em;
	padding-left: 1.4em;
}

.wp-block-separator.is-style-scan {
	height: 2px;
	background: linear-gradient(90deg, transparent, var(--nw-c1) 20%, var(--nw-c2) 80%, transparent);
	box-shadow: 0 0 18px color-mix(in srgb, var(--nw-c1) 60%, transparent);
}

.wp-block-separator.is-style-scan::after {
	display: none;
}

.wp-block-separator.is-style-hazard {
	height: 12px;
	background: repeating-linear-gradient(-45deg, var(--nw-c3) 0 12px, transparent 12px 24px);
	border-top: 1px solid var(--nw-c3);
	border-bottom: 1px solid var(--nw-c3);
}

/* ---------- Buttons, columns, cover, media-text, details ---------- */

.wp-block-buttons {
	gap: 12px;
}

.wp-block-button__link {
	border-radius: 0 !important;
}

.wp-block-columns {
	gap: clamp(16px, 2.4vw, 32px);
	margin-block: 2rem;
}

.wp-block-cover {
	min-height: 420px;
	padding: clamp(24px, 4vw, 56px);
	clip-path: polygon(0 0, calc(100% - 28px) 0, 100% 28px, 100% 100%, 28px 100%, 0 calc(100% - 28px));
}

.wp-block-cover .wp-block-cover__inner-container {
	color: #fff;
}

.wp-block-cover h1,
.wp-block-cover h2,
.wp-block-cover h3,
.wp-block-cover p {
	color: inherit;
}

.wp-block-media-text {
	gap: clamp(18px, 3vw, 44px);
}

.wp-block-media-text .wp-block-media-text__content {
	padding: 0;
}

.wp-block-details {
	padding: 14px 18px;
	border: 1px solid var(--nw-line-2);
	background: var(--nw-panel);
}

.wp-block-details summary {
	cursor: pointer;
	font-family: var(--nw-font-mono);
	font-size: .8rem;
	font-weight: 700;
	letter-spacing: .12em;
	text-transform: uppercase;
	color: var(--nw-ink);
}

.wp-block-details[open] summary {
	margin-bottom: 12px;
}

.wp-block-embed iframe,
.wp-block-video video {
	border: 1px solid var(--nw-line-2);
}

.wp-block-file {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	gap: 14px;
	padding: 14px 18px;
	border: 1px dashed var(--nw-line-2);
	font-family: var(--nw-font-mono);
	font-size: .85rem;
}

.wp-block-latest-posts,
.wp-block-categories,
.wp-block-archives {
	padding-left: 0;
	list-style: none;
}

.has-background {
	padding: clamp(18px, 3vw, 34px);
}

/* ---------- Block styles ---------- */

/* Image: chamfered */
.wp-block-image.is-style-chamfer img {
	clip-path: polygon(0 0, calc(100% - 26px) 0, 100% 26px, 100% 100%, 26px 100%, 0 calc(100% - 26px));
}

/* Image + gallery: evidence frames — also applied to every image and gallery
   inside a project's content (.nw-evidence). */
.nw-evidence {
	counter-reset: nwframe;
}

.wp-block-image.is-style-evidence,
.wp-block-gallery.is-style-evidence figure.wp-block-image,
.nw-evidence figure.wp-block-image {
	position: relative;
	counter-increment: nwframe;
	padding: 8px;
	border: 1px solid var(--nw-line-2);
	background: var(--nw-panel);
	overflow: visible;
}

.wp-block-image.is-style-evidence::before,
.wp-block-gallery.is-style-evidence figure.wp-block-image::before,
.nw-evidence figure.wp-block-image::before {
	content: "EVIDENCE " counter(nwframe, decimal-leading-zero);
	position: absolute;
	top: 8px;
	left: 8px;
	z-index: 3;
	padding: 5px 9px;
	background: var(--nw-c1);
	color: var(--nw-on);
	font-family: var(--nw-font-mono);
	font-size: .62rem;
	font-weight: 700;
	letter-spacing: .16em;
}

.wp-block-image.is-style-evidence::after,
.wp-block-gallery.is-style-evidence figure.wp-block-image::after,
.nw-evidence figure.wp-block-image::after {
	content: "";
	position: absolute;
	right: -1px;
	bottom: -1px;
	z-index: 3;
	width: 18px;
	height: 18px;
	border-right: 2px solid var(--nw-c2);
	border-bottom: 2px solid var(--nw-c2);
	pointer-events: none;
}

.wp-block-gallery.is-style-evidence.has-nested-images figure.wp-block-image figcaption,
.nw-evidence .wp-block-gallery.has-nested-images figure.wp-block-image figcaption {
	left: 8px;
	right: 8px;
	bottom: 8px;
	width: auto;
	max-width: none;
}

.nw-evidence .wp-block-gallery.has-nested-images figure.wp-block-image:not(#individual-image) {
	flex-grow: 1;
}

/* Quote: HUD transmission */
.wp-block-quote.is-style-hud {
	--cut: 20px;
	padding: 56px 28px 26px;
	border: 1px solid var(--nw-line-2);
	background:
		linear-gradient(45deg, transparent calc(50% - 1.2px), var(--nw-line-2) calc(50% - 1.2px), var(--nw-line-2) 50%, transparent 50%) top right / var(--cut) var(--cut) no-repeat border-box,
		var(--nw-panel);
	clip-path: polygon(0 0, calc(100% - var(--cut)) 0, 100% var(--cut), 100% 100%, 0 100%);
	font-size: 1.16rem;
}

.wp-block-quote.is-style-hud::before {
	content: "INCOMING TRANSMISSION";
	position: absolute;
	top: 0;
	left: 0;
	right: 0;
	padding: 11px 28px 11px 58px;
	border-bottom: 1px solid var(--nw-line);
	/* five signal bars, drawn as one gradient */
	background:
		linear-gradient(var(--nw-c1), var(--nw-c1)) 28px calc(50% + 5px) / 3px 4px no-repeat,
		linear-gradient(var(--nw-c1), var(--nw-c1)) 33px calc(50% + 4px) / 3px 6px no-repeat,
		linear-gradient(var(--nw-c1), var(--nw-c1)) 38px calc(50% + 2.5px) / 3px 9px no-repeat,
		linear-gradient(var(--nw-c1), var(--nw-c1)) 43px calc(50% + 1px) / 3px 12px no-repeat,
		linear-gradient(var(--nw-c2), var(--nw-c2)) 48px 50% / 3px 14px no-repeat;
	color: var(--nw-muted);
	font-family: var(--nw-font-mono);
	font-size: .66rem;
	letter-spacing: .2em;
}

/* Code: terminal window */
.wp-block-code.is-style-terminal {
	padding-top: 58px;
	clip-path: polygon(0 0, calc(100% - var(--cut)) 0, 100% var(--cut), 100% 100%, var(--cut) 100%, 0 calc(100% - var(--cut)));
}

.wp-block-code.is-style-terminal::before {
	content: "bash — 80×24";
	position: absolute;
	top: 0;
	left: 0;
	right: 0;
	padding: 10px 24px 10px 62px;
	border-bottom: 1px solid var(--nw-line-2);
	background:
		linear-gradient(var(--nw-c2), var(--nw-c2)) 24px 50% / 8px 8px no-repeat,
		linear-gradient(var(--nw-c3), var(--nw-c3)) 36px 50% / 8px 8px no-repeat,
		linear-gradient(var(--nw-c1), var(--nw-c1)) 48px 50% / 8px 8px no-repeat,
		color-mix(in srgb, var(--nw-bg) 50%, var(--nw-panel));
	color: var(--nw-muted);
	font-size: .68rem;
	letter-spacing: .14em;
	text-transform: uppercase;
	white-space: nowrap;
}

/* Group / column: bracketed, and HUD panel */
.is-style-bracket,
.is-style-panel {
	position: relative;
	padding: clamp(20px, 3vw, 36px);
	border: 1px solid var(--nw-line-2);
	background: var(--nw-panel);
}

.is-style-bracket {
	background: color-mix(in srgb, var(--nw-panel) 60%, transparent);
	border-color: var(--nw-line);
}

.is-style-bracket::before,
.is-style-bracket::after {
	content: "";
	position: absolute;
	width: 20px;
	height: 20px;
	border: 2px solid var(--nw-c1);
	pointer-events: none;
}

.is-style-bracket::before {
	top: -1px;
	left: -1px;
	border-right: 0;
	border-bottom: 0;
}

.is-style-bracket::after {
	right: -1px;
	bottom: -1px;
	border-left: 0;
	border-top: 0;
}

.is-style-panel {
	--cut: 18px;
	background:
		linear-gradient(45deg, transparent calc(50% - 1.2px), var(--nw-line-2) calc(50% - 1.2px), var(--nw-line-2) 50%, transparent 50%) top right / var(--cut) var(--cut) no-repeat border-box,
		linear-gradient(45deg, transparent 50%, var(--nw-line-2) 50%, var(--nw-line-2) calc(50% + 1.2px), transparent calc(50% + 1.2px)) bottom left / var(--cut) var(--cut) no-repeat border-box,
		var(--nw-panel);
	clip-path: polygon(0 0, calc(100% - var(--cut)) 0, 100% var(--cut), 100% 100%, var(--cut) 100%, 0 calc(100% - var(--cut)));
}

.is-style-bracket > :first-child,
.is-style-panel > :first-child {
	margin-top: 0;
}

.is-style-bracket > :last-child,
.is-style-panel > :last-child {
	margin-bottom: 0;
}

/* Heading: mono label */
.is-style-label,
.entry-content .is-style-label {
	margin: 0 0 14px;
	font-family: var(--nw-font-mono);
	font-stretch: 100%;
	font-variation-settings: normal;
	font-size: .72rem;
	font-weight: 700;
	letter-spacing: .2em;
	line-height: 1.5;
	text-transform: uppercase;
	color: var(--nw-ink);
}

.is-style-label::before {
	content: "// ";
	color: var(--nw-muted);
}

/* List: readout */
.entry-content ul.is-style-readout,
ul.is-style-readout {
	padding: 0;
	list-style: none;
	border-top: 1px solid var(--nw-line-2);
	font-family: var(--nw-font-mono);
	font-size: .86rem;
	counter-reset: nwread;
}

ul.is-style-readout > li {
	position: relative;
	counter-increment: nwread;
	margin: 0;
	padding: 12px 0 12px 46px;
	border-bottom: 1px solid var(--nw-line-2);
}

ul.is-style-readout > li::marker {
	content: "";
}

ul.is-style-readout > li::before {
	content: counter(nwread, decimal-leading-zero);
	position: absolute;
	left: 0;
	color: var(--nw-ink);
	font-weight: 700;
}

/* Telemetry pattern */
.nw-telemetry .has-display-font-size {
	margin: 0 0 8px;
	font-family: var(--nw-font-display);
	font-stretch: 75%;
	font-variation-settings: "wdth" 75;
	font-weight: 800;
	line-height: .86;
	color: var(--nw-text);
	text-shadow: 0 0 34px color-mix(in srgb, var(--nw-c1) 28%, transparent);
}

.has-display-font-size {
	font-family: var(--nw-font-display);
	font-stretch: 75%;
	font-variation-settings: "wdth" 75;
	font-weight: 800;
	line-height: .9;
	text-transform: uppercase;
}

/* Page links (paginated posts) */
.page-links {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	gap: 6px;
	margin-top: 2.4rem;
	font-family: var(--nw-font-mono);
	font-size: .8rem;
}

.page-links-label {
	margin-right: 8px;
	letter-spacing: .16em;
	text-transform: uppercase;
	color: var(--nw-muted);
}

.page-links .post-page-numbers {
	display: grid;
	place-items: center;
	min-width: 44px;
	min-height: 44px;
	border: 1px solid var(--nw-line-2);
	color: var(--nw-text);
	text-decoration: none;
}

.page-links .post-page-numbers.current {
	border-color: var(--nw-c1);
	background: var(--nw-c1);
	color: var(--nw-on);
}

/* ==========================================================================
   10  Single log entry
   ========================================================================== */

.entry-header {
	margin-bottom: clamp(26px, 4vw, 44px);
}

.entry-meta {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	gap: 8px 16px;
	margin-bottom: 20px;
	font-family: var(--nw-font-mono);
	font-size: .74rem;
	letter-spacing: .12em;
	text-transform: uppercase;
	color: var(--nw-muted);
	font-variant-numeric: tabular-nums;
}

.entry-meta .entry-date {
	color: var(--nw-text);
}

.nw-entry .entry-title {
	margin: 0;
	font-size: clamp(2.5rem, 6.2vw, 4.6rem);
	line-height: .94;
	letter-spacing: -.015em;
	overflow-wrap: anywhere;
}

.nw-lead {
	margin: 20px 0 0;
	font-size: clamp(1.12rem, 1.8vw, 1.32rem);
	line-height: 1.55;
	color: color-mix(in srgb, var(--nw-text) 86%, var(--nw-bg));
}

.entry-hero {
	--cut: 26px;
	max-width: 1000px;
	margin: 0 auto clamp(30px, 4.4vw, 56px);
	padding: 0;
	overflow: hidden;
}

.entry-hero img {
	width: 100%;
}

.nw-narrow-wide {
	max-width: 1000px;
}

.entry-footer {
	margin-top: clamp(34px, 5vw, 60px);
	padding-top: 24px;
	border-top: 1px solid var(--nw-line);
}

.entry-tags {
	display: flex;
	flex-wrap: wrap;
	gap: 6px;
	margin-bottom: 20px;
}

.nw-signoff {
	display: flex;
	align-items: center;
	gap: 12px;
	margin: 0;
	font-family: var(--nw-font-mono);
	font-size: .74rem;
	letter-spacing: .14em;
	text-transform: uppercase;
	color: var(--nw-muted);
}

.nw-signoff-mark {
	padding: 3px 7px;
	background: var(--nw-text);
	color: var(--nw-bg);
	font-weight: 700;
}

/* Previous / next entry */
.post-navigation {
	margin-top: clamp(40px, 6vw, 70px);
}

.post-navigation .nav-links {
	display: grid;
	grid-template-columns: repeat(2, minmax(0, 1fr));
	gap: 12px;
}

.post-navigation .nav-next {
	grid-column: 2;
	text-align: right;
}

.post-navigation a {
	display: grid;
	gap: 8px;
	height: 100%;
	padding: 18px;
	border: 1px solid var(--nw-line);
	background: var(--nw-panel);
	color: var(--nw-text);
	text-decoration: none;
}

.post-navigation a:hover {
	border-color: var(--nw-c1);
}

.post-navigation .nav-label {
	font-family: var(--nw-font-mono);
	font-size: .68rem;
	font-weight: 700;
	letter-spacing: .18em;
	text-transform: uppercase;
	color: var(--nw-ink);
}

.post-navigation .nav-title {
	font-family: var(--nw-font-display);
	font-stretch: 75%;
	font-variation-settings: "wdth" 75;
	font-size: 1.35rem;
	font-weight: 800;
	line-height: 1.02;
	text-transform: uppercase;
	overflow-wrap: anywhere;
}

@media (max-width: 560px) {
	.post-navigation .nav-links {
		grid-template-columns: 1fr;
	}

	.post-navigation .nav-next {
		grid-column: 1;
	}
}

/* ==========================================================================
   11  Single project: cinematic header, spec panel, evidence, next marquee
   ========================================================================== */

.nw-project-hero {
	position: relative;
	display: flex;
	align-items: flex-end;
	min-height: min(78vh, 760px);
	border-bottom: 1px solid var(--nw-line);
	overflow: hidden;
	isolation: isolate;
}

.nw-project-hero--plain {
	min-height: 0;
	padding-top: clamp(44px, 7vw, 100px);
}

.nw-project-cover {
	position: absolute;
	inset: 0;
	z-index: -2;
}

.nw-project-cover img {
	width: 100%;
	height: 100%;
	object-fit: cover;
}

/* letterbox bars + a fade into the page, so the title always has contrast */
.nw-project-cover::after {
	content: "";
	position: absolute;
	inset: 0;
	background:
		linear-gradient(to bottom, var(--nw-bg) 0, transparent 9%),
		linear-gradient(to top, var(--nw-bg) 2%, color-mix(in srgb, var(--nw-bg) 78%, transparent) 34%, transparent 72%);
}

.nw-project-head {
	padding-top: 120px;
	padding-bottom: clamp(30px, 4.4vw, 60px);
}

.nw-project-year {
	margin-left: auto;
	color: var(--nw-text);
}

.nw-project .entry-title {
	max-width: 14ch;
	margin: 0;
	font-size: clamp(3.2rem, 11vw, 10rem);
	line-height: .84;
	letter-spacing: -.024em;
	overflow-wrap: anywhere;
	text-shadow: 0 0 40px color-mix(in srgb, var(--nw-bg) 70%, transparent);
}

.nw-project .nw-lead {
	max-width: 56ch;
	color: var(--nw-text);
}

.nw-project-body {
	display: grid;
	grid-template-columns: minmax(260px, 340px) minmax(0, 1fr);
	gap: clamp(30px, 5vw, 90px);
	align-items: start;
	padding-top: clamp(40px, 6vw, 84px);
}

.nw-project-body .entry-content {
	max-width: 820px;
}

.nw-project-body .entry-content > p,
.nw-project-body .entry-content > ul,
.nw-project-body .entry-content > ol,
.nw-project-body .entry-content > h2,
.nw-project-body .entry-content > h3,
.nw-project-body .entry-content > blockquote {
	max-width: var(--nw-narrow);
}

.nw-specs {
	--cut: 20px;
	position: sticky;
	top: calc(var(--nw-header-h) + 24px);
	padding: 0 22px 22px;
}

.nw-specs-head {
	display: flex;
	align-items: center;
	gap: 10px;
	margin: 0 -22px 6px;
	padding: 12px 30px 12px 22px;
	border-bottom: 1px solid var(--nw-line);
	font-family: var(--nw-font-mono);
	font-size: .68rem;
	font-weight: 700;
	letter-spacing: .2em;
	text-transform: uppercase;
	color: var(--nw-muted);
}

.nw-specs-head .nw-led {
	width: 6px;
	height: 6px;
}

.nw-specs-list {
	margin: 0 0 20px;
}

.nw-specs-list > div {
	display: grid;
	grid-template-columns: 96px minmax(0, 1fr);
	gap: 10px;
	padding: 12px 0;
	border-bottom: 1px dashed var(--nw-line-2);
}

.nw-specs-list > div:last-child {
	border-bottom: 0;
}

.nw-specs-list dt {
	padding-top: 3px;
	font-family: var(--nw-font-mono);
	font-size: .68rem;
	letter-spacing: .16em;
	text-transform: uppercase;
	color: var(--nw-muted);
}

.nw-specs-list dd {
	margin: 0;
	font-size: .96rem;
	line-height: 1.45;
	color: var(--nw-text);
	overflow-wrap: anywhere;
}

.nw-specs-list dd a {
	color: var(--nw-ink);
}

.nw-specs-stack {
	grid-template-columns: 1fr !important;
}

@media (max-width: 900px) {

	.nw-project-body {
		grid-template-columns: 1fr;
	}

	.nw-specs {
		position: relative;
		top: auto;
	}

	.nw-project-hero {
		min-height: 62vh;
	}
}

/* Next project: one huge marquee line */
.nw-next {
	margin-top: clamp(60px, 8vw, 120px);
	border-top: 1px solid var(--nw-line);
	border-bottom: 1px solid var(--nw-line);
	overflow: hidden;
}

.site-main:has(> .nw-next:last-child) {
	padding-bottom: 0;
}

.nw-next-link {
	display: block;
	padding: clamp(22px, 3vw, 40px) 0 clamp(18px, 2.6vw, 34px);
	color: var(--nw-text);
	text-decoration: none;
	transition: background-color .3s, color .3s;
}

.nw-next-label {
	display: flex;
	align-items: center;
	gap: 10px;
	padding-inline: var(--nw-pad);
	margin-bottom: 6px;
	font-family: var(--nw-font-mono);
	font-size: .74rem;
	font-weight: 700;
	letter-spacing: .2em;
	text-transform: uppercase;
	color: var(--nw-ink);
}

.nw-next .nw-marquee {
	font-family: var(--nw-font-display);
	font-stretch: 75%;
	font-variation-settings: "wdth" 75;
	font-size: clamp(4rem, 13vw, 12rem);
	font-weight: 800;
	line-height: .92;
	letter-spacing: -.02em;
	text-transform: uppercase;
}

.nw-next .nw-marquee-item:nth-child(even) {
	color: transparent;
	-webkit-text-stroke: 1.5px color-mix(in srgb, var(--nw-text) 75%, var(--nw-bg));
}

.nw-next-link:hover {
	background: var(--nw-c1);
	color: var(--nw-on);
}

.nw-next-link:hover .nw-next-label {
	color: var(--nw-on);
}

.nw-next-link:hover .nw-marquee-item::after {
	color: var(--nw-on);
}

.nw-next-link:hover .nw-marquee-item:nth-child(even) {
	-webkit-text-stroke-color: var(--nw-on);
}

body:not(.nw-fx-marquee) .nw-next .nw-marquee {
	padding-inline: var(--nw-pad);
	white-space: normal;
}

body:not(.nw-fx-marquee) .nw-next .nw-marquee-track {
	display: block;
}

body:not(.nw-fx-marquee) .nw-next .nw-marquee-item[aria-hidden="true"] {
	display: none;
}

body:not(.nw-fx-marquee) .nw-next .nw-marquee-item::after {
	content: "\2192";
}

/* ==========================================================================
   12  About (operator profile)
   ========================================================================== */

.nw-about-row {
	display: grid;
	grid-template-columns: minmax(260px, 380px) minmax(0, 1fr);
	gap: clamp(30px, 5vw, 90px);
	align-items: start;
	padding-bottom: clamp(50px, 7vw, 100px);
}

.nw-about-copy {
	max-width: var(--nw-narrow);
	font-size: 1.12rem;
}

.nw-about-copy > p:first-child {
	font-size: 1.32rem;
	line-height: 1.5;
	color: var(--nw-text);
}

.nw-idcard {
	--cut: 22px;
	padding: 10px 10px 20px;
}

.nw-idcard-photo {
	aspect-ratio: 4 / 3;
	margin-bottom: 16px;
}

.nw-idcard-photo img {
	width: 100%;
	height: 100%;
	object-fit: cover;
}

.nw-idcard-name {
	margin: 0 12px 10px;
	font-family: var(--nw-font-display);
	font-stretch: 75%;
	font-variation-settings: "wdth" 75;
	font-size: 2.1rem;
	font-weight: 800;
	line-height: .95;
	text-transform: uppercase;
}

.nw-idcard-list {
	margin: 0 12px 18px;
}

.nw-idcard-list > div {
	display: grid;
	grid-template-columns: 96px minmax(0, 1fr);
	gap: 10px;
	padding: 9px 0;
	border-bottom: 1px dashed var(--nw-line-2);
}

.nw-idcard-list dt {
	padding-top: 2px;
	font-family: var(--nw-font-mono);
	font-size: .66rem;
	letter-spacing: .16em;
	text-transform: uppercase;
	color: var(--nw-muted);
}

.nw-idcard-list dd {
	margin: 0;
	font-family: var(--nw-font-mono);
	font-size: .8rem;
	line-height: 1.5;
	color: var(--nw-text);
	overflow-wrap: anywhere;
}

.nw-idcard .nw-status {
	margin: 0 12px 16px;
}

.nw-idcard .nw-btn {
	width: calc(100% - 24px);
	margin-inline: 12px;
}

.nw-about + .nw-section,
.nw-about ~ .nw-section:first-of-type {
	border-top: 1px solid var(--nw-line);
}

@media (max-width: 860px) {
	.nw-about-row {
		grid-template-columns: 1fr;
	}

	.nw-idcard {
		max-width: 460px;
	}
}

/* ==========================================================================
   13  Comments — "comms"
   ========================================================================== */

.comments-area {
	margin-top: clamp(50px, 7vw, 90px);
	padding-top: clamp(30px, 4vw, 50px);
	border-top: 1px solid var(--nw-line);
}

.comments-title,
.comment-reply-title {
	margin: 0 0 26px;
	font-size: clamp(2rem, 4vw, 3rem);
}

.comment-list,
.comment-list .children {
	margin: 0;
	padding: 0;
	list-style: none;
}

.comment-list .children {
	margin-left: clamp(14px, 4vw, 44px);
	padding-left: clamp(12px, 2.4vw, 26px);
	border-left: 1px solid color-mix(in srgb, var(--nw-c1) 45%, var(--nw-line));
}

.comment-list li {
	margin: 0 0 14px;
}

.comment-list .children li:first-child {
	margin-top: 14px;
}

.nw-comment {
	position: relative;
	padding: 16px 18px 14px;
	border: 1px solid var(--nw-line);
	background: var(--nw-panel);
}

.nw-by-operator > .nw-comment {
	border-color: color-mix(in srgb, var(--nw-c1) 45%, var(--nw-line));
}

.nw-comment-head {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	gap: 6px 12px;
	margin-bottom: 12px;
}

.nw-comment-avatar {
	flex: none;
	display: grid;
	place-items: center;
	width: 44px;
	height: 44px;
	border: 1px solid var(--nw-line-2);
	background: var(--nw-bg);
	overflow: hidden;
}

.nw-comment-avatar img {
	width: 100%;
	height: 100%;
	object-fit: cover;
}

.nw-identicon {
	display: block;
}

.nw-comment-who {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	gap: 8px;
	font-family: var(--nw-font-mono);
	font-size: .84rem;
	letter-spacing: .06em;
}

.nw-comment-who .fn {
	color: var(--nw-text);
}

.nw-comment-who .fn a {
	color: inherit;
	text-decoration: none;
}

.nw-comment-time {
	margin-left: auto;
	font-family: var(--nw-font-mono);
	font-size: .7rem;
	letter-spacing: .1em;
	color: var(--nw-muted);
	text-decoration: none;
	font-variant-numeric: tabular-nums;
}

.nw-comment-body {
	font-size: 1rem;
	line-height: 1.65;
}

.nw-comment-body p:last-child {
	margin-bottom: 0;
}

.nw-comment-hold {
	color: var(--nw-c3);
	font-family: var(--nw-font-mono);
	font-size: .78rem;
}

.nw-comment-foot {
	display: flex;
	gap: 16px;
	margin-top: 10px;
}

.nw-comment-foot a {
	display: inline-flex;
	align-items: center;
	min-height: 36px;
	font-family: var(--nw-font-mono);
	font-size: .7rem;
	font-weight: 700;
	letter-spacing: .16em;
	text-decoration: none;
	text-transform: uppercase;
}

.comment-reply-link::before {
	content: "\21B3\00A0";
}

.pingback .nw-comment,
.trackback .nw-comment,
.comment-list > .pingback,
.comment-list > .trackback {
	font-family: var(--nw-font-mono);
	font-size: .82rem;
}

.comment-respond {
	--cut: 22px;
	margin-top: 34px;
	padding: clamp(20px, 3vw, 32px);
}

.comment-list .comment-respond {
	margin: 14px 0 20px;
}

.comment-reply-title small {
	display: inline-block;
	margin-left: 12px;
	font-family: var(--nw-font-mono);
	font-stretch: 100%;
	font-size: .7rem;
	font-weight: 700;
	letter-spacing: .14em;
	vertical-align: middle;
}

.comment-notes,
.logged-in-as {
	font-size: .88rem;
	color: var(--nw-muted);
}

.comment-form {
	display: grid;
	grid-template-columns: repeat(2, minmax(0, 1fr));
	gap: 16px 18px;
}

.comment-form > * {
	grid-column: 1 / -1;
	margin: 0;
}

.comment-form .comment-form-author,
.comment-form .comment-form-email {
	grid-column: span 1;
}

.comment-form .required {
	color: var(--nw-c2);
}

.no-comments {
	padding: 14px 16px;
	border: 1px dashed var(--nw-line-2);
	font-family: var(--nw-font-mono);
	font-size: .8rem;
	color: var(--nw-muted);
}

.comment-navigation .nav-links {
	display: flex;
	justify-content: space-between;
	gap: 12px;
	margin: 20px 0;
	font-family: var(--nw-font-mono);
	font-size: .74rem;
	letter-spacing: .14em;
	text-transform: uppercase;
}

@media (max-width: 560px) {
	.comment-form .comment-form-author,
	.comment-form .comment-form-email {
		grid-column: 1 / -1;
	}

	.nw-comment-time {
		margin-left: 0;
		width: 100%;
	}
}

/* ==========================================================================
   14  Pagination
   ========================================================================== */

.pagination {
	margin-top: clamp(34px, 5vw, 60px);
}

.pagination .nav-links {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	gap: 8px;
}

.page-numbers {
	--cut: 9px;
	display: inline-grid;
	place-items: center;
	grid-auto-flow: column;
	gap: 8px;
	min-width: 48px;
	min-height: 48px;
	padding: 0 14px;
	border: 1px solid var(--nw-line-2);
	color: var(--nw-text);
	font-family: var(--nw-font-mono);
	font-size: .78rem;
	font-weight: 700;
	letter-spacing: .12em;
	text-decoration: none;
	text-transform: uppercase;
	clip-path: polygon(0 0, calc(100% - var(--cut)) 0, 100% var(--cut), 100% 100%, var(--cut) 100%, 0 calc(100% - var(--cut)));
}

a.page-numbers:hover {
	border-color: var(--nw-c1);
	background: var(--nw-c1-soft);
	color: var(--nw-ink);
}

.page-numbers.current {
	border-color: var(--nw-c1);
	background: var(--nw-c1);
	color: var(--nw-on);
}

.page-numbers.dots {
	border-color: transparent;
	min-width: 24px;
	padding: 0;
	color: var(--nw-muted);
}

.page-numbers.next {
	margin-left: auto;
}

/* ==========================================================================
   15  404 and empty states
   ========================================================================== */

.nw-lost {
	display: grid;
	grid-template-columns: minmax(0, 6fr) minmax(0, 5fr);
	gap: clamp(30px, 5vw, 80px);
	align-items: center;
	padding-block: clamp(44px, 7vw, 110px);
}

.nw-lost-screen {
	--cut: 28px;
	--fill: #000;
	position: relative;
	aspect-ratio: 16 / 10;
	display: grid;
	place-items: center;
	overflow: hidden;
}

.nw-static {
	position: absolute;
	inset: 0;
	width: 100%;
	height: 100%;
	opacity: .55;
	image-rendering: pixelated;
}

.nw-lost-code {
	position: relative;
	z-index: 1;
	margin: 0;
	font-family: var(--nw-font-display);
	font-stretch: 75%;
	font-variation-settings: "wdth" 75;
	font-size: clamp(7rem, 24vw, 19rem);
	font-weight: 800;
	line-height: .8;
	letter-spacing: -.02em;
	color: #f2f6fa;
	text-shadow: 0 0 60px color-mix(in srgb, var(--nw-c2) 70%, transparent);
}

.nw-lost-readout {
	position: absolute;
	left: 18px;
	bottom: 14px;
	z-index: 1;
	display: flex;
	align-items: center;
	gap: 10px;
	margin: 0;
	font-family: var(--nw-font-mono);
	font-size: .7rem;
	letter-spacing: .2em;
	text-transform: uppercase;
	color: #f2f6fa;
}

.nw-lost-readout .nw-led {
	background: var(--nw-c2);
	box-shadow: 0 0 12px var(--nw-c2);
}

.nw-lost-copy .page-title {
	font-size: clamp(3rem, 7.4vw, 6.4rem);
}

.nw-lost-text {
	max-width: 50ch;
	margin: 22px 0 26px;
	color: color-mix(in srgb, var(--nw-text) 84%, var(--nw-bg));
}

.nw-lost-routes {
	display: flex;
	flex-wrap: wrap;
	gap: 12px;
	margin: 26px 0 0;
}

@media (max-width: 860px) {
	.nw-lost {
		grid-template-columns: 1fr;
	}
}

.nw-none {
	--cut: 22px;
	max-width: 760px;
	padding: clamp(24px, 4vw, 44px);
}

.nw-none-code {
	margin: 0 0 12px;
	font-family: var(--nw-font-mono);
	font-size: .74rem;
	letter-spacing: .2em;
	color: var(--nw-c2);
}

.nw-mode-light .nw-none-code {
	color: var(--nw-ink);
}

.nw-none-title {
	font-size: clamp(2rem, 4.4vw, 3.2rem);
}

/* ==========================================================================
   16  Footer: sign-off and system status bar
   ========================================================================== */

.site-footer {
	position: relative;
	margin-top: auto;
	border-top: 1px solid var(--nw-line);
	background: var(--nw-bg);
}

.nw-footer-main {
	padding-top: clamp(44px, 6vw, 84px);
	padding-bottom: clamp(30px, 4vw, 50px);
}

.nw-footer-sign {
	display: grid;
	grid-template-columns: minmax(0, 1fr) auto;
	gap: 24px clamp(30px, 5vw, 80px);
	align-items: end;
}

.nw-footer-name {
	margin: 0;
	font-family: var(--nw-font-display);
	font-stretch: 75%;
	font-variation-settings: "wdth" 75;
	font-size: clamp(3.4rem, 12vw, 11rem);
	font-weight: 800;
	line-height: .82;
	letter-spacing: -.022em;
	text-transform: uppercase;
	color: transparent;
	-webkit-text-stroke: 1px color-mix(in srgb, var(--nw-text) 46%, var(--nw-bg));
	overflow-wrap: anywhere;
}

.nw-footer-links {
	display: grid;
	gap: 14px;
	justify-items: end;
}

.footer-navigation ul {
	display: flex;
	flex-wrap: wrap;
	justify-content: flex-end;
	gap: 0 22px;
	margin: 0;
	padding: 0;
	list-style: none;
}

.footer-navigation a {
	display: inline-flex;
	align-items: center;
	min-height: 44px;
	color: var(--nw-text);
	font-family: var(--nw-font-mono);
	font-size: .74rem;
	font-weight: 700;
	letter-spacing: .16em;
	text-decoration: none;
	text-transform: uppercase;
}

.footer-navigation a:hover {
	color: var(--nw-ink);
}

.nw-social--footer ul {
	justify-content: flex-end;
}

.nw-footer-mail {
	margin: 0;
	font-family: var(--nw-font-mono);
	font-size: .9rem;
}

.nw-footer-mail a {
	display: inline-flex;
	align-items: center;
	min-height: 44px;
}

.nw-statusbar {
	border-top: 1px solid var(--nw-line);
	background: var(--nw-panel);
	font-family: var(--nw-font-mono);
	font-size: .7rem;
	letter-spacing: .14em;
	line-height: 1.5;
	text-transform: uppercase;
	color: var(--nw-muted);
}

.nw-statusbar-inner {
	display: grid;
	grid-template-columns: minmax(0, 1fr) auto auto;
	align-items: center;
	gap: 8px clamp(18px, 3vw, 44px);
	min-height: 56px;
	padding-block: 8px;
}

.nw-statusbar p {
	margin: 0;
}

.nw-statusbar-state {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	gap: 6px 12px;
	color: var(--nw-text);
}

.nw-statusbar-state .nw-led {
	width: 7px;
	height: 7px;
}

.nw-statusbar-uptime {
	padding-left: 12px;
	border-left: 1px solid var(--nw-line-2);
	color: var(--nw-muted);
	font-variant-numeric: tabular-nums;
}

.nw-statusbar-uptime span {
	color: var(--nw-ink);
}

.nw-statusbar-legal {
	display: flex;
	flex-wrap: wrap;
	gap: 2px 20px;
	justify-content: flex-end;
}

.nw-statusbar a {
	color: var(--nw-text);
	text-decoration-color: var(--nw-line-2);
}

.nw-statusbar a:hover {
	color: var(--nw-ink);
}

.nw-return {
	display: inline-flex;
	align-items: center;
	gap: 8px;
	min-height: 44px;
	padding: 0 14px;
	border-left: 1px solid var(--nw-line-2);
	font-weight: 700;
	text-decoration: none;
	color: var(--nw-ink) !important;
}

.nw-return .nw-icon {
	transition: transform .25s var(--nw-ease);
}

.nw-return:hover .nw-icon {
	transform: translateY(-4px);
}

@media (max-width: 900px) {

	.nw-footer-sign {
		grid-template-columns: 1fr;
	}

	.nw-footer-links {
		justify-items: start;
	}

	.footer-navigation ul,
	.nw-social--footer ul {
		justify-content: flex-start;
	}

	.nw-statusbar-inner {
		grid-template-columns: minmax(0, 1fr) auto;
		padding-block: 14px;
	}

	.nw-statusbar-legal {
		grid-column: 1 / -1;
		grid-row: 2;
		justify-content: flex-start;
	}

	.nw-return {
		grid-column: 2;
		grid-row: 1;
	}
}

/* ==========================================================================
   17  Preset personalities
   ========================================================================== */

/* Acid: hazard stripes on the structural edges. */
.nw-preset-acid .nw-hero::after,
.nw-preset-acid .site-footer::before {
	content: "";
	position: absolute;
	left: 0;
	right: 0;
	height: 10px;
	background: repeating-linear-gradient(-45deg, var(--nw-c1) 0 14px, var(--nw-bg) 14px 28px);
	pointer-events: none;
}

.nw-preset-acid .nw-hero::after {
	bottom: 0;
}

.nw-preset-acid .site-footer::before {
	top: -1px;
}

.nw-preset-acid .nw-footer-main {
	padding-top: clamp(54px, 7vw, 94px);
}

.nw-preset-acid .nw-section-head::after {
	height: 6px;
	bottom: -3px;
	background: repeating-linear-gradient(-45deg, var(--nw-c1) 0 6px, transparent 6px 12px);
	box-shadow: none;
}

.nw-preset-acid .nw-hero-glow {
	background:
		radial-gradient(60% 46% at 50% 58%, color-mix(in srgb, var(--nw-c2) 20%, transparent), transparent 70%),
		radial-gradient(38% 40% at 12% 8%, color-mix(in srgb, var(--nw-c1) 10%, transparent), transparent 70%);
}

/* Ghost: a daylight terminal. Ink on paper, one neon, no glow. */
.nw-mode-light {
	--nw-glow: none;
}

.nw-mode-light .nw-hero-title,
.nw-mode-light .nw-stat-number,
.nw-mode-light .nw-telemetry .has-display-font-size {
	text-shadow: none;
}

.nw-mode-light .nw-led {
	box-shadow: 0 0 0 3px color-mix(in srgb, var(--nw-c1) 22%, transparent);
}

.nw-mode-light .nw-hero-glow {
	background:
		radial-gradient(60% 46% at 50% 62%, color-mix(in srgb, var(--nw-c1) 16%, transparent), transparent 70%);
}

.nw-mode-light .nw-hero-bg {
	background:
		linear-gradient(rgba(12, 13, 16, .06) 1px, transparent 1px) 0 0 / 100% 72px,
		linear-gradient(90deg, rgba(12, 13, 16, .06) 1px, transparent 1px) 0 0 / 72px 100%;
}

.nw-mode-light .nw-gridfloor-plane {
	background:
		linear-gradient(to right, rgba(12, 13, 16, .5) 1.5px, transparent 1.5px) 50% 0 / 80px 80px,
		linear-gradient(to bottom, rgba(12, 13, 16, .5) 1.5px, transparent 1.5px) 50% 0 / 80px 80px;
}

.nw-mode-light.nw-fx-grid .nw-hero-horizon {
	background: linear-gradient(90deg, transparent, var(--nw-c1) 30%, var(--nw-c1) 70%, transparent);
	box-shadow: 0 0 30px 2px color-mix(in srgb, var(--nw-c1) 45%, transparent);
}

.nw-mode-light .nw-corner,
.nw-mode-light .nw-bracket::before,
.nw-mode-light .nw-bracket::after,
.nw-mode-light .is-style-bracket::before,
.nw-mode-light .is-style-bracket::after {
	border-color: var(--nw-text);
}

.nw-mode-light .nw-prompt,
.nw-mode-light .search-form-prompt {
	color: var(--nw-ink);
}

.nw-mode-light .nw-section-head::after {
	box-shadow: none;
	height: 3px;
	bottom: -2px;
}

.nw-mode-light .nw-clients-list li::after,
.nw-mode-light .nw-marquee-item::after {
	background-color: var(--nw-c1);
	color: var(--nw-c1);
}

.nw-mode-light .nw-marquee-item::after {
	background: none;
}

.nw-mode-light .nw-step:nth-child(even) .nw-step-node {
	border-color: var(--nw-text);
	box-shadow: none;
}

.nw-mode-light .nw-step-node {
	box-shadow: none;
}

.nw-mode-light blockquote,
.nw-mode-light .wp-block-quote {
	border-left-color: var(--nw-c1);
}

.nw-mode-light .nw-notice--error b {
	color: var(--nw-text);
}

.nw-mode-light .nw-statusbar {
	background: var(--nw-text);
	color: color-mix(in srgb, var(--nw-bg) 70%, var(--nw-text));
}

.nw-mode-light .nw-statusbar-state,
.nw-mode-light .nw-statusbar a {
	color: var(--nw-bg);
}

.nw-mode-light .nw-statusbar-uptime span,
.nw-mode-light .nw-return {
	color: var(--nw-c1) !important;
}

.nw-mode-light .nw-boot {
	color: var(--nw-text);
}

/* ==========================================================================
   18  Scroll reveal (theme.js adds .nw-pre only to elements still below the
       fold when the visitor first scrolls — nothing is ever hidden without JS)
   ========================================================================== */

.nw-pre {
	opacity: 0;
	transform: translateY(22px);
}

.nw-in {
	transition: opacity .7s var(--nw-ease), transform .7s var(--nw-ease);
}

/* ==========================================================================
   19  Reduced motion: every glitch, flicker, sweep, marquee, beam and pulse
       stops, and the overlays that exist only for atmosphere are removed.
   ========================================================================== */

@media (prefers-reduced-motion: reduce) {

	html {
		scroll-behavior: auto;
	}

	*,
	*::before,
	*::after {
		animation: none !important;
		transition-duration: .01ms !important;
		scroll-behavior: auto !important;
	}

	.nw-fx,
	.nw-cursor,
	.nw-boot {
		display: none !important;
	}

	.nw-glitch::before,
	.nw-glitch::after {
		display: none !important;
	}

	.nw-gridfloor-plane {
		transform: rotateX(68deg) !important;
	}

	.nw-marquee-track,
	.nw-clients-track {
		transform: none !important;
	}

	/* the marquees fall back to their still layouts */
	.nw-clients {
		-webkit-mask-image: none;
		mask-image: none;
	}

	.nw-clients-track {
		width: auto;
		padding-inline: var(--nw-pad);
	}

	.nw-clients-list {
		flex-wrap: wrap;
		justify-content: center;
		row-gap: 14px;
	}

	.nw-clients-list[aria-hidden="true"],
	.nw-next .nw-marquee-item[aria-hidden="true"] {
		display: none;
	}

	.nw-next .nw-marquee {
		padding-inline: var(--nw-pad);
		white-space: normal;
	}

	.nw-next .nw-marquee-track {
		display: block;
	}

	.nw-next .nw-marquee-item::after {
		content: "\2192";
	}

	.nw-caret {
		opacity: 1;
	}

	.nw-pre {
		opacity: 1;
		transform: none;
	}
}

/* ==========================================================================
   20  Print: ink on paper, no chrome
   ========================================================================== */

@media print {

	:root {
		--nw-bg: #fff;
		--nw-panel: #fff;
		--nw-text: #000;
		--nw-muted: #444;
		--nw-line: #bbb;
		--nw-ink: #000;
	}

	.nw-fx,
	.nw-cursor,
	.nw-boot,
	.site-header,
	.site-footer,
	.nw-next,
	.nw-hero-bg,
	.comment-respond,
	.nw-filters {
		display: none !important;
	}

	body {
		background: #fff;
		color: #000;
	}

	.nw-project-cover::after {
		display: none;
	}
}

/* ---- Phone hero: dense, not empty ----------------------------------------
   The hero is a three-row grid (readout / name / status) inside a full-height
   section. On a desktop the middle row's slack reads as poise; on a 390×844
   phone it pushed the name almost halfway down, so the opening screen was
   mostly empty black. Phones get a shorter hero and the rows sized to their
   content, with the slack shared rather than banked above the name. */
@media (max-width: 700px) {
	.nw-hero {
		min-height: 76svh;
	}
	.nw-hero-inner {
		grid-template-rows: auto auto auto;
		align-content: space-between;
		gap: clamp(18px, 2.6vh, 30px);
		padding-block: clamp(20px, 3vh, 34px);
	}
}
