/*
Theme Name: NFTVideoGames Child
Theme URI: https://nftvideogames.com
Description: Child theme for Kadence. All NFTVideoGames customisation lives here so the parent theme can be updated safely.
Author: NFTVideoGames
Template: kadence
Version: 0.4.269
Text Domain: nftvideogames-child
*/

/* Parent styles are enqueued in functions.php, not imported here (@import blocks rendering). */

/* ---------------------------------------------------------------------
   NFTVideoGames design tokens.
   Same platform family as the flagship (indigo base) with a gaming
   accent shift: cyan primary + violet secondary. Light content surfaces,
   dark-leaning feature areas only where explicitly styled (nv-hero).
--------------------------------------------------------------------- */
:root {
	--nv-accent: #0891b2;        /* cyan-600 — decorative accents only (borders): 3.68:1 on white, below AA for text */
	--nv-link: #0e7490;          /* cyan-700 — text links/controls: 5.36:1 on white, AA-pass */
	/* Kadence palette1 feeds --global-palette-highlight (link color) and
	   --global-palette-btn-bg; both render 3.68:1 on white. Re-point them
	   to the AA-pass link color; palette1 stays for decorative use. */
	--global-palette-highlight: var(--nv-link);
	--global-palette-btn-bg: var(--nv-link);
	--nv-accent-dark: #155e75;   /* cyan-800 */
	--nv-violet: #7c3aed;        /* secondary accent */
	--nv-violet-dark: #5b21b6;
	--nv-ink: #0f172a;           /* slate-900 headings */
	--nv-body: #334155;          /* slate-700 body */
	--nv-muted: #64748b;         /* slate-500 */
	--nv-line: #e2e8f0;          /* slate-200 */
	--nv-surface: #f8fafc;       /* slate-50 */
	--nv-hero-from: #101a3c;     /* deep indigo */
	--nv-hero-to: #312e81;       /* indigo-900 */
	--nv-radius: 10px;
	--nv-card-shadow: 0 1px 2px rgba(15, 23, 42, 0.06), 0 8px 24px -12px rgba(15, 23, 42, 0.18);
}

/* --- Typography refinements (system stack via Kadence base font) --- */
.entry-content h1, .entry-content h2, .entry-content h3,
.entry-content h4, .entry-content h5, .entry-content h6 {
	color: var(--nv-ink);
	letter-spacing: -0.01em;
}
.entry-content h2 { margin-top: 2.25rem; }
.entry-content a { text-decoration-thickness: 1px; text-underline-offset: 0.18em; }
.entry-content a:hover { color: var(--nv-accent-dark); }

/* --- Callouts (flagship parity: note / warn) --- */
.nv-note, .nv-warn {
	border-radius: var(--nv-radius);
	padding: 1rem 1.25rem;
	margin: 1.5rem 0;
	border: 1px solid var(--nv-line);
	border-left-width: 4px;
	background: var(--nv-surface);
}
.nv-note { border-left-color: var(--nv-accent); }
.nv-warn { border-left-color: #d97706; background: #fffbeb; }
.nv-note > :first-child, .nv-warn > :first-child { margin-top: 0; }
.nv-note > :last-child, .nv-warn > :last-child { margin-bottom: 0; }

/* --- Status pill component (.nv-status--*) ---
   Reusable registry status indicator: colored pill + label.
   Reads on light and dark surfaces (sufficient-contrast chip fills). */
.nv-status {
	display: inline-flex;
	align-items: center;
	gap: 0.4em;
	padding: 0.18em 0.7em;
	border-radius: 999px;
	font-size: 0.78em;
	font-weight: 600;
	line-height: 1.6;
	letter-spacing: 0.02em;
	text-transform: uppercase;
	white-space: nowrap;
	border: 1px solid transparent;
}
.nv-status::before {
	content: "";
	display: inline-block;
	width: 0.5em;
	height: 0.5em;
	border-radius: 50%;
	background: currentColor;
}
.nv-status--active        { color: #15803d; background: #dcfce7; border-color: #bbf7d0; }
.nv-status--early-access  { color: #a16207; background: #fef9c3; border-color: #fde68a; }
.nv-status--in-development{ color: #1d4ed8; background: #dbeafe; border-color: #bfdbfe; }
.nv-status--paused        { color: #475569; background: #e2e8f0; border-color: #cbd5e1; }
.nv-status--pivoted       { color: #6d28d9; background: #ede9fe; border-color: #ddd6fe; }
.nv-status--shut-down     { color: #b91c1c; background: #fee2e2; border-color: #fecaca; }
.nv-status--sunset        { color: #c2410c; background: #ffedd5; border-color: #fed7aa; }
.nv-status--unknown       { color: #525252; background: #f5f5f5; border-color: #e5e5e5; }
/* Aliases matching the schema's snake_case vocabulary verbatim. */
.nv-status--early_access  { color: #a16207; background: #fef9c3; border-color: #fde68a; }
.nv-status--in_development{ color: #1d4ed8; background: #dbeafe; border-color: #bfdbfe; }
.nv-status--shut_down     { color: #b91c1c; background: #fee2e2; border-color: #fecaca; }
/* On dark surfaces (hero/cards), switch to solid pill for legibility. */
.nv-on-dark .nv-status, .nv-hero .nv-status {
	background: rgba(255, 255, 255, 0.92);
	border-color: transparent;
}

/* --- Hero / feature areas --- */
.nv-hero {
	background:
		radial-gradient(1200px 500px at 85% -10%, rgba(124, 58, 237, 0.35), transparent 60%),
		radial-gradient(900px 420px at 5% 110%, rgba(8, 145, 178, 0.30), transparent 55%),
		linear-gradient(135deg, var(--nv-hero-from), var(--nv-hero-to));
	color: #f1f5f9;
	border-radius: var(--nv-radius);
	padding: clamp(2rem, 5vw, 4rem);
}
.nv-hero h1, .nv-hero h2, .nv-hero h3 { color: #ffffff; }
.nv-hero .nv-eyebrow {
	display: inline-block;
	font-size: 0.8rem;
	font-weight: 700;
	letter-spacing: 0.12em;
	text-transform: uppercase;
	color: #67e8f9;
	margin-bottom: 0.75rem;
}
.nv-hero .nv-lede { font-size: 1.15rem; color: #cbd5e1; max-width: 56ch; }
.nv-hero a { color: #a5f3fc; }

/* --- 404 page --- */
.nv-404 { text-align: left; margin: 2.5rem 0; }
.nv-404-title {
	font-size: clamp(2rem, 4.5vw, 3rem);
	letter-spacing: -0.02em;
	margin: 0 0 1rem;
}
.nv-404 .nv-lede { margin-bottom: 1.75rem; }
.nv-404-actions { display: flex; gap: 0.75rem; flex-wrap: wrap; margin-bottom: 2rem; }
.nv-404-btn {
	display: inline-block; padding: 0.7rem 1.3rem; border-radius: 8px;
	font-weight: 600; border: 1px solid transparent; text-decoration: none;
}
.nv-404-btn:not(.nv-404-btn--ghost) { background: var(--nv-accent); color: #ffffff; }
.nv-404-btn:not(.nv-404-btn--ghost):hover { background: var(--nv-accent-dark); color: #ffffff; }
.nv-404-btn--ghost { border-color: rgba(255, 255, 255, 0.45); color: #f1f5f9; }
.nv-404-btn--ghost:hover { border-color: #ffffff; color: #ffffff; }
.nv-404-search-label { font-size: 0.85rem; color: #cbd5e1; margin-bottom: 0.5rem; }
.nv-404-search .search-form { max-width: 28rem; }

/* --- Cards & grids --- */
.nv-grid { display: grid; gap: 1.25rem; grid-template-columns: repeat(auto-fit, minmax(240px, 1fr)); margin: 1.5rem 0; }
.nv-card {
	background: #ffffff;
	border: 1px solid var(--nv-line);
	border-radius: var(--nv-radius);
	box-shadow: var(--nv-card-shadow);
	padding: 1.25rem 1.5rem;
}
.nv-card > :first-child { margin-top: 0; }
.nv-card > :last-child { margin-bottom: 0; }
.nv-card .nv-card-kicker {
	font-size: 0.78rem; font-weight: 700; letter-spacing: 0.08em;
	text-transform: uppercase; color: var(--nv-link); margin-bottom: 0.4rem;
}
.nv-card--placeholder { background: var(--nv-surface); border-style: dashed; box-shadow: none; }
.nv-card--placeholder .nv-card-kicker { color: var(--nv-muted); }

/* --- Corpus stat strip (hero) --- */
.nv-statstrip {
	font-size: 0.95rem;
	color: #cbd5e1;
	margin-bottom: 0;
}
.nv-statstrip strong { color: #ffffff; font-weight: 700; }

/* --- Collection/link chips --- */
.nv-chips { display: flex; flex-wrap: wrap; gap: 0.6rem; margin: 0.5rem 0; }
.nv-chip {
	display: inline-block;
	padding: 0.45rem 0.9rem;
	border: 1px solid var(--nv-line);
	border-radius: 999px;
	background: #ffffff;
	font-weight: 600;
	font-size: 0.92rem;
	text-decoration: none;
}
.nv-chip:hover { border-color: var(--nv-link); color: var(--nv-accent-dark); }

/* --- Mobile drawer palette: align the dark drawer with the indigo identity --- */
#mobile-drawer, #mobile-drawer .drawer-inner { background: var(--nv-hero-from); }

/* --- Section helpers --- */
.nv-section { margin: 3rem 0; }
.nv-section-heading {
	display: flex; align-items: baseline; gap: 0.75rem; flex-wrap: wrap;
	border-bottom: 1px solid var(--nv-line); padding-bottom: 0.5rem; margin-bottom: 1.25rem;
}
.nv-section-heading .nv-tag { font-size: 0.8rem; color: var(--nv-muted); font-weight: 600; }
.nv-boundary {
	border-top: 1px solid var(--nv-line);
	padding-top: 1.25rem; margin-top: 3rem;
	color: var(--nv-muted); font-size: 0.95rem;
}

/* --- Header / footer polish --- */
.site-header-row-container-inner .custom-logo { max-height: 44px; width: auto; }
#colophon .footer-navigation .footer-menu-container > ul {
	display: flex; flex-wrap: wrap; gap: 0.5rem 1.5rem;
	list-style: none; margin: 0; padding: 0; justify-content: center;
}
#colophon .footer-navigation a { font-size: 0.9rem; }
.site-bottom-footer-inner-wrap { row-gap: 0.5rem; }

/* --- Buttons: nudge Kadence/ buttons toward the accent family --- */
.entry-content .wp-block-button__link,
.entry-content .button {
	border-radius: 8px;
}
.entry-content .wp-block-button__link:hover { filter: brightness(1.08); }
.wp-block-button.is-style-outline .wp-block-button__link { border-width: 2px; }

/* --- Responsive --- */
@media (max-width: 767px) {
	.nv-hero { padding: 1.75rem 1.25rem; }
	.nv-grid { grid-template-columns: 1fr !important; }
	.nv-section-heading { flex-wrap: wrap !important; }
	.nv-section-heading h2, .nv-section-heading .nv-tag { flex-basis: 100%; }
	.nv-hero .nv-lede { font-size: 1.05rem; }
	.entry-content h1 { line-height: 1.2; }
	.nv-section { margin: 2rem 0; }
}

/* Hide the redundant "Home" page title on the static front page. */
.home .entry-header.page-title { display: none; }

/* --- Registry v1 renderer output --- */
.nv-registry-list {
	list-style: none; margin: 0; padding: 0;
	display: grid; gap: 0.75rem;
}
.nv-registry-item {
	display: flex; flex-wrap: wrap; align-items: center; gap: 0.4rem 0.75rem;
	padding: 0.8rem 1rem; border: 1px solid var(--nv-line);
	border-radius: var(--nv-radius, 10px); background: #fff;
}
.nv-registry-item > a { font-weight: 600; }
.nv-verified { color: var(--nv-muted); font-size: 0.85rem; }
.nv-profile-head {
	display: flex; flex-wrap: wrap; align-items: center; gap: 0.75rem;
	margin-bottom: 1rem;
}
.nv-info {
	width: 100%; border-collapse: collapse; margin: 1rem 0;
	border: 1px solid var(--nv-line); border-radius: var(--nv-radius, 10px);
	overflow: hidden;
}
.nv-info th, .nv-info td {
	text-align: left; padding: 0.6rem 0.9rem;
	border-bottom: 1px solid var(--nv-line); vertical-align: top;
}
.nv-info th {
	width: 11rem; background: #f8fafc; font-weight: 600;
	color: var(--nv-ink);
}
.nv-info tr:last-child th, .nv-info tr:last-child td { border-bottom: 0; }
.nv-official a { font-weight: 600; }
.nv-sources ul { margin-top: 0.5rem; }
.nv-verified-note { color: var(--nv-muted); font-size: 0.9rem; margin-top: -0.5rem; }

/* Generated profile/collection furniture — previously unstyled plain text */
.nv-verification, .nv-dev-note, .nv-muted { color: var(--nv-muted); font-size: 0.9rem; }
.nv-further, .nv-related, .nv-collections, .nv-coll-stats {
	margin: 1.25rem 0; padding: 0.75rem 1rem;
	border: 1px solid var(--nv-line); border-radius: var(--nv-radius, 10px);
	background: var(--nv-surface); font-size: 0.9rem;
}
.nv-further, .nv-related { border-left: 4px solid var(--nv-accent); }
.nv-coll-stats { border-left: 4px solid #d97706; }
.nv-collection {
	list-style: none; margin: 0; padding: 0;
	display: grid; gap: 0.75rem;
}
.nv-collection li {
	padding: 0.8rem 1rem; border: 1px solid var(--nv-line);
	border-radius: var(--nv-radius, 10px); background: #fff;
}
.nv-collection li > a { font-weight: 600; }
.nv-community { padding-left: 1.25rem; }
.nv-community li { margin-bottom: 0.3rem; }
@media (max-width: 767px) {
	.nv-info th, .nv-info td { display: block; width: auto; }
	.nv-info th { padding-bottom: 0.15rem; border-bottom: 0; }
	.nv-info td { padding-top: 0.15rem; }
}

/* Registry index table (/registry/) — horizontal scroll on mobile, no column collapse */
.nv-table-wrap { margin: 1rem 0; }
.nv-index {
	width: 100%; min-width: 46rem; border-collapse: collapse;
	border: 1px solid var(--nv-line); border-radius: var(--nv-radius, 10px);
	font-size: 0.95rem;
}
.nv-index th, .nv-index td {
	text-align: left; padding: 0.55rem 0.8rem;
	border-bottom: 1px solid var(--nv-line); vertical-align: top;
}
.nv-index thead th {
	background: #f8fafc; font-weight: 600; color: var(--nv-ink);
	white-space: nowrap;
}
.nv-index tbody tr:last-child td { border-bottom: 0; }

/* Per-source watcher observation dates on profiles */
.nv-src-checked { font-size: 0.85em; color: var(--nv-dim, #6b7280); white-space: nowrap; }

/* Mobile: keep the game column pinned while the row scrolls sideways;
   larger padding raises tap-target size without losing columns. */
@media (max-width: 767px) {
	.nv-index th, .nv-index td { padding: 0.8rem 0.9rem; }
	.nv-index th:first-child, .nv-index td:first-child {
		position: sticky; left: 0; z-index: 1;
		background: #fff;
		box-shadow: 2px 0 0 var(--nv-line);
	}
	.nv-index thead th:first-child { background: #f8fafc; }
}

/* ── Finder/compare app (A3, Gate-2) ─────────────────────────────── */
.nv-finder { margin: 1.2rem 0 2rem; }
.nv-f-controls { display: grid; gap: 0.75rem; margin-bottom: 0.9rem; }
.nv-f-controls input[type="search"] {
	padding: 0.6rem 0.8rem; border: 1px solid #d8dee6; border-radius: 8px;
	font: inherit; width: 100%; max-width: 34rem;
}
.nv-f-dims { display: flex; flex-wrap: wrap; gap: 0.6rem 1rem; }
.nv-f-dim { display: grid; gap: 0.2rem; font-size: 0.85rem; }
.nv-f-dim label { font-weight: 600; color: #4a5568; }
.nv-f-dim select {
	padding: 0.4rem 0.6rem; border: 1px solid #d8dee6; border-radius: 6px;
	font: inherit; background: #fff; min-height: 2.4rem;
}
.nv-f-count { color: #4a5568; font-size: 0.9rem; margin: 0.5rem 0; }
.nv-f-tray { display: flex; flex-wrap: wrap; align-items: center; gap: 0.4rem; margin: 0.4rem 0; }
.nv-f-tray-label { font-size: 0.85rem; color: #4a5568; }
.nv-f-tray-chip {
	background: #eef2f7; border: 1px solid #d8dee6; border-radius: 999px;
	padding: 0.3rem 0.75rem; font: inherit; font-size: 0.85rem; cursor: pointer;
}
.nv-f-list { display: grid; gap: 0.35rem; }
.nv-f-row {
	display: flex; align-items: center; justify-content: space-between;
	gap: 0.75rem; padding: 0.55rem 0.7rem; border: 1px solid #eef1f4;
	border-radius: 8px;
}
.nv-f-row-main { display: grid; gap: 0.15rem; min-width: 0; }
.nv-f-row-main a { font-weight: 600; }
.nv-f-meta { color: #4a5568; font-size: 0.8rem; }
.nv-f-cmp {
	flex: none; border: 1px solid #0e7490; color: #0e7490; background: #fff;
	border-radius: 6px; padding: 0.35rem 0.7rem; font: inherit;
	font-size: 0.85rem; cursor: pointer; min-height: 2.25rem;
}
.nv-f-cmp[aria-pressed="true"] { background: #0e7490; color: #fff; }
.nv-f-compare { margin: 1rem 0; overflow-x: auto; }
.nv-f-table { border-collapse: collapse; width: 100%; font-size: 0.9rem; }
.nv-f-table th, .nv-f-table td {
	border: 1px solid #e2e8f0; padding: 0.5rem 0.65rem; text-align: left;
	vertical-align: top;
}
.nv-f-table thead th { background: #f6f8fb; }
.nv-f-empty { color: #4a5568; }
.nv-f-row-main .nv-status { justify-self: start; }
@media (max-width: 640px) {
	.nv-f-row { flex-direction: column; align-items: stretch; }
	.nv-f-cmp { align-self: flex-start; }
}

/* =========================================================
   Archive cards — stock Kadence loop entries onto the design
   system. CSS-only: no markup change, SEO/URLs untouched.
   ========================================================= */
body.archive article.loop-entry,
body.search article.loop-entry {
	background: #ffffff;
	border: 1px solid var(--nv-line);
	border-radius: var(--nv-radius);
	box-shadow: var(--nv-card-shadow);
	padding: clamp(1.25rem, 3vw, 2rem);
	margin-bottom: 1.25rem;
}
body.archive article.loop-entry .entry-title,
body.search article.loop-entry .entry-title {
	font-size: clamp(1.25rem, 2.4vw, 1.5rem);
	line-height: 1.3;
	letter-spacing: -0.01em;
}
body.archive article.loop-entry .entry-title a,
body.search article.loop-entry .entry-title a { color: var(--nv-ink); }
body.archive article.loop-entry .entry-title a:hover,
body.search article.loop-entry .entry-title a:hover { color: var(--nv-link); }
/* Category term as an nv pill (matches .nv-status vocabulary). */
body.archive article.loop-entry .category-links a,
body.search article.loop-entry .category-links a {
	display: inline-block;
	font-size: 0.72rem;
	font-weight: 700;
	letter-spacing: 0.1em;
	text-transform: uppercase;
	color: var(--nv-link);
	background: #ecfeff;
	border: 1px solid #a5f3fc;
	border-radius: 999px;
	padding: 0.18rem 0.7rem;
}
body.archive article.loop-entry .entry-summary,
body.search article.loop-entry .entry-summary { color: var(--nv-body); }
/* Read More as a quiet on-palette button instead of bare text. */
body.archive article.loop-entry .post-more-link,
body.search article.loop-entry .post-more-link {
	display: inline-flex;
	align-items: center;
	gap: 0.4rem;
	font-weight: 600;
	color: var(--nv-link);
	border: 1px solid var(--nv-line);
	border-radius: 8px;
	padding: 0.45rem 0.9rem;
	background: var(--nv-surface);
}
body.archive article.loop-entry .post-more-link:hover,
body.search article.loop-entry .post-more-link:hover {
	border-color: var(--nv-accent);
	color: var(--nv-accent-dark);
}
@media (max-width: 640px) {
	body.archive article.loop-entry,
	body.search article.loop-entry { padding: 1.1rem 1rem; }
}

/* =========================================================
   Single-post header band — the stock .entry-header becomes a
   designed title surface in the nv vocabulary. CSS-only.
   ========================================================= */
body.single .entry-header {
	background:
		radial-gradient(600px 180px at 100% 0%, rgba(8, 145, 178, 0.07), transparent 60%),
		var(--nv-surface);
	border: 1px solid var(--nv-line);
	border-radius: var(--nv-radius);
	padding: clamp(1.5rem, 4vw, 2.5rem) clamp(1.25rem, 4vw, 2.5rem);
	margin-bottom: 1.5rem;
}
body.single .entry-header .entry-title {
	font-size: clamp(1.75rem, 4vw, 2.5rem);
	line-height: 1.15;
	letter-spacing: -0.02em;
	color: var(--nv-ink);
	margin-bottom: 0.5rem;
}
body.single .entry-header .category-links a {
	display: inline-block;
	font-size: 0.72rem;
	font-weight: 700;
	letter-spacing: 0.1em;
	text-transform: uppercase;
	color: var(--nv-link);
	background: #ecfeff;
	border: 1px solid #a5f3fc;
	border-radius: 999px;
	padding: 0.18rem 0.7rem;
}
body.single .entry-header .entry-meta { color: var(--nv-muted); font-size: 0.9rem; }
body.single .entry-header .entry-meta a { color: var(--nv-muted); }
body.single .entry-header .entry-meta a:hover { color: var(--nv-link); }
@media (max-width: 640px) {
	body.single .entry-header { padding: 1.25rem 1rem; }
}

/* =========================================================
   Site chrome — header hairline + dark footer band in the
   indigo palette. CSS-only; widget markup untouched.
   ========================================================= */
/* Indigo hairline under the header — a quiet brand rule. */
.site-header-wrap {
	border-bottom: 3px solid transparent;
	border-image: linear-gradient(90deg, var(--nv-hero-from), var(--nv-accent), var(--nv-hero-to)) 1;
}
/* Nav links: nv-ink labels with a cyan underline on hover/focus. */
.site-header-row .main-navigation .menu > .menu-item > .menu-link {
	color: var(--nv-ink);
	transition: color 0.15s ease;
}
.site-header-row .main-navigation .menu > .menu-item > .menu-link:hover,
.site-header-row .main-navigation .menu > .menu-item > .menu-link:focus-visible {
	color: var(--nv-link);
}
/* Dark footer band — matches the hero's deep-indigo gradient. */
.site-footer-wrap {
	background:
		radial-gradient(900px 320px at 90% 0%, rgba(124, 58, 237, 0.22), transparent 55%),
		linear-gradient(135deg, var(--nv-hero-from), var(--nv-hero-to));
	color: #cbd5e1;
}
body .site-footer-wrap a { color: #a5f3fc !important; }
body .site-footer-wrap a:hover, body .site-footer-wrap a:focus-visible { color: #67e8f9 !important; }
.site-footer-wrap .site-footer-row { border-top: none; }

/* =========================================================
   Article body typography — reading surface for the registry.
   Sectioned headings, tuned links, list + quote polish.
   CSS-only; content markup untouched.
   ========================================================= */
body.single .entry-content h2 {
	margin: 2.5rem 0 1rem;
	padding-left: 0.9rem;
	border-left: 4px solid var(--nv-accent);
	line-height: 1.25;
}
body.single .entry-content h3,
body.single .entry-content h4 {
	margin: 2rem 0 0.75rem;
	color: var(--nv-ink);
}
body.single .entry-content p,
body.single .entry-content ul,
body.single .entry-content ol {
	margin: 0 0 1.15rem;
}
body.single .entry-content a {
	color: var(--nv-link);
	font-weight: 500;
	text-decoration-line: underline;
	text-decoration-color: rgba(8, 145, 178, 0.35);
	text-decoration-thickness: 1.5px;
	text-underline-offset: 3px;
	transition: color 0.15s ease, text-decoration-color 0.15s ease;
}
body.single .entry-content a:hover,
body.single .entry-content a:focus-visible {
	color: var(--nv-accent);
	text-decoration-color: var(--nv-accent);
}
body.single .entry-content li { margin-bottom: 0.4rem; }
body.single .entry-content li::marker { color: var(--nv-accent); font-weight: 700; }
body.single .entry-content blockquote {
	margin: 2rem 0;
	padding: 1.1rem 1.4rem;
	background: linear-gradient(135deg, rgba(49, 46, 129, 0.05), rgba(8, 145, 178, 0.06));
	border: 1px solid var(--nv-line);
	border-left: 4px solid var(--nv-hero-to);
	border-radius: var(--nv-radius);
	font-style: italic;
}
body.single .entry-content blockquote p { margin-bottom: 0.6rem; }
body.single .entry-content hr {
	margin: 2.5rem auto;
	border: none;
	height: 2px;
	width: 42%;
	background: linear-gradient(90deg, transparent, var(--nv-accent), transparent);
}
body.single .entry-content table {
	width: 100%;
	border-collapse: collapse;
	margin: 1.75rem 0;
	border: 1px solid var(--nv-line);
	border-radius: var(--nv-radius);
	overflow: hidden;
	box-shadow: var(--nv-card-shadow);
}
body.single .entry-content th {
	background: var(--nv-hero-from);
	color: #e2e8f0;
	padding: 0.7rem 0.9rem;
	text-align: left;
}
body.single .entry-content td {
	padding: 0.65rem 0.9rem;
	border-top: 1px solid var(--nv-line);
}
body.single .entry-content tr:nth-child(even) td { background: rgba(16, 26, 60, 0.03); }
body.single .entry-content img { border-radius: var(--nv-radius); }
body.single .entry-content .wp-caption,
body.single .entry-content figcaption {
	font-size: 0.85rem;
	color: #64748b;
	text-align: center;
	margin-top: 0.5rem;
}

/* =========================================================
   Post navigation — designed prev/next cards at article end.
   CSS-only; nav markup untouched.
   ========================================================= */
body.single .post-navigation .nav-links { gap: 1rem; }
body.single .post-navigation .nav-previous a,
body.single .post-navigation .nav-next a {
	display: flex;
	flex-direction: column;
	justify-content: center;
	gap: 0.35rem;
	background: #fff;
	border: 1px solid var(--nv-line);
	border-radius: var(--nv-radius);
	box-shadow: var(--nv-card-shadow);
	padding: 1rem 1.15rem;
	color: var(--nv-ink);
	font-weight: 600;
	font-size: 1rem;
	line-height: 1.35;
	text-decoration: none;
	transition: border-color 0.15s ease, box-shadow 0.15s ease, transform 0.15s ease;
}
body.single .post-navigation .nav-previous a:hover,
body.single .post-navigation .nav-next a:hover {
	border-color: var(--nv-accent);
	box-shadow: 0 10px 24px rgba(16, 26, 60, 0.14);
	transform: translateY(-1px);
}
body.single .post-navigation .nav-next a { text-align: right; align-items: flex-end; }
body.single .post-navigation .post-navigation-sub {
	font-size: 0.72rem;
	font-weight: 700;
	letter-spacing: 0.1em;
	text-transform: uppercase;
	color: var(--nv-link);
}
body.single .post-navigation .post-navigation-sub small { font-size: inherit; }
@media (max-width: 640px) {
	body.single .post-navigation .nav-links { grid-template-columns: 1fr; }
	body.single .post-navigation .nav-next a { text-align: left; align-items: flex-start; }
}

/* =========================================================
   Archive header band — designed title + description surface
   matching the single-post header band. CSS-only.
   ========================================================= */
body.archive .archive-title {
	background:
		radial-gradient(600px 180px at 100% 0%, rgba(8, 145, 178, 0.07), transparent 60%),
		var(--nv-surface);
	border: 1px solid var(--nv-line);
	border-radius: var(--nv-radius);
	padding: 1.5rem 1.75rem 1.4rem;
	margin-bottom: 1.5rem;
	font-size: clamp(1.6rem, 3.5vw, 2.25rem);
	line-height: 1.15;
	letter-spacing: -0.02em;
	color: var(--nv-ink);
}
/* When a description follows, the two elements form one band. */
body.archive .archive-title:has(+ .archive-description) {
	border-bottom: none;
	border-radius: var(--nv-radius) var(--nv-radius) 0 0;
	padding-bottom: 0.2rem;
	margin-bottom: 0;
}
body.archive .archive-description {
	background:
		radial-gradient(600px 180px at 100% 0%, rgba(8, 145, 178, 0.07), transparent 60%),
		var(--nv-surface);
	border: 1px solid var(--nv-line);
	border-top: none;
	border-radius: 0 0 var(--nv-radius) var(--nv-radius);
	padding: 0.1rem 1.75rem 1.4rem;
	margin-bottom: 1.5rem;
	color: var(--nv-muted);
	font-size: 1.02rem;
	line-height: 1.55;
}
body.archive .archive-description p { margin: 0; }

/* =========================================================
   Pagination — designed chip row matching the card system
   (bare links currently float under the archive loop).
   CSS-only; markup/rel/URLs unchanged.
   ========================================================= */
body.archive .pagination .nav-links,
body.home .pagination .nav-links,
body.search .pagination .nav-links {
	display: flex;
	flex-wrap: wrap;
	justify-content: center;
	align-items: center;
	gap: 0.5rem;
	padding: 0.5rem 0 0.25rem;
}
.pagination .nav-links .page-numbers {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	min-width: 42px;
	height: 42px;
	padding: 0 0.65rem;
	margin: 0;
	background: var(--nv-surface);
	border: 1px solid var(--nv-line) !important;
	border-radius: 10px !important;
	color: var(--nv-ink);
	font-size: 0.95rem;
	font-weight: 600;
	line-height: 1;
	text-decoration: none;
	transition: border-color 160ms ease, transform 160ms ease, box-shadow 160ms ease, background 160ms ease;
}
a.page-numbers:hover {
	border-color: var(--nv-link) !important;
	color: var(--nv-link);
	background: var(--nv-surface);
	transform: translateY(-1px);
	box-shadow: 0 4px 12px -6px rgba(15, 23, 42, 0.3);
}
.pagination .nav-links .page-numbers.current {
	background: linear-gradient(135deg, var(--nv-link), #0a5a72);
	border-color: transparent !important;
	color: #fff;
}
.pagination .nav-links .page-numbers.dots {
	background: transparent;
	border-color: transparent !important;
	color: var(--nv-muted);
	font-weight: 500;
	min-width: 24px;
	padding: 0;
}
.pagination .nav-links .page-numbers.prev,
.pagination .nav-links .page-numbers.next { padding: 0 0.9rem; }
.pagination .nav-links .page-numbers .kadence-svg-icon { display: inline-flex; }

/* =========================================================
   Related-posts carousel — compact card sizing. The default
   entry-title renders at the 40px archive size inside the
   related slider, stretching every card to ~1000px with a
   giant empty region under each title. CSS-only.
   ========================================================= */
body.single .entry-related {
	border-top: 1px solid var(--nv-line);
	padding-top: 2rem;
}
body.single .entry-related .entry-related-title {
	font-size: 0.78rem;
	font-weight: 700;
	letter-spacing: 0.14em;
	text-transform: uppercase;
	color: var(--nv-muted);
	margin: 0 0 1.25rem;
}
body.single .entry-related .entry-title {
	font-size: 1.15rem;
	line-height: 1.35;
	letter-spacing: -0.01em;
	margin: 0 0 0.65rem;
}
body.single .entry-related .entry-meta {
	font-size: 0.85rem;
	line-height: 1.4;
}
body.single .entry-related article.loop-entry {
	transition: border-color 160ms ease, transform 160ms ease, box-shadow 160ms ease;
}
body.single .entry-related article.loop-entry:hover {
	border-color: var(--nv-link);
	transform: translateY(-2px);
	box-shadow: 0 10px 24px -12px rgba(15, 23, 42, 0.35);
}
@media (max-width: 640px) {
	body.single .entry-related .entry-title { font-size: 1.05rem; }
}

/* Related carousel — equalize card heights: cap the portrait
   thumbnail slot and clamp the excerpt so the tallest card
   stops dragging the whole row to ~1000px. */
body.single .entry-related .post-thumbnail {
	display: block;
	aspect-ratio: auto;
}
body.single .entry-related .post-thumbnail-inner {
	height: 170px;
	overflow: hidden;
	display: block;
}
body.single .entry-related .post-thumbnail-inner img {
	width: 100%;
	height: 170px;
	object-fit: cover;
	display: block;
}
body.single .entry-related .entry-summary p {
	display: -webkit-box;
	-webkit-line-clamp: 2;
	-webkit-box-orient: vertical;
	overflow: hidden;
	font-size: 0.9rem;
	line-height: 1.45;
	color: var(--nv-muted);
	margin: 0;
}
body.single .entry-related .entry-summary { margin-top: 0.35rem; }
body.single .entry-related .entry-taxonomies { margin-bottom: 0.5rem; }

/* Cap the thumbnail anchor itself — the ratio class lives on the
   .post-thumbnail anchor, not the inner/img. */
body.single .entry-related .post-thumbnail {
	height: 170px;
	overflow: hidden;
	position: relative;
	padding: 0 !important;
}

/* Stop stretching the card to the row's tallest slide — align
   cards top so the dead space lives in the invisible slide, not
   inside the visible card. */
body.single .entry-related .splide__list { align-items: flex-start; }
body.single .entry-related li.splide__slide { align-items: flex-start; }
body.single .entry-related li.splide__slide article.entry {
	flex: none;
	height: auto;
	align-self: flex-start;
}

/* Uniform related cards: the thumbnail exists on only one slide
   and its ratio class drives the whole carousel tall. Related
   cards read as clean uniform text cards. */
body.single .entry-related .post-thumbnail { display: none; }

/* =========================================================
   Mobile navigation drawer — designed surface. The stock
   drawer was a flat panel with 14px hairline links. CSS-only.
   ========================================================= */
#mobile-drawer .drawer-inner {
	background: linear-gradient(180deg, rgba(8, 145, 178, 0.14), rgba(16, 26, 60, 0) 180px), var(--nv-hero-from);
}
#mobile-drawer .drawer-inner::before {
	content: "";
	display: block;
	height: 3px;
	background: linear-gradient(90deg, var(--nv-accent), transparent 70%);
}
#mobile-drawer #mobile-menu > li > a,
#mobile-drawer #mobile-menu .drawer-nav-drop-wrap > a {
	font-size: 1.05rem;
	font-weight: 600;
	padding: 1rem 1.5rem;
	color: #e8eef9;
}
#mobile-drawer #mobile-menu > li.current-menu-item > a,
#mobile-drawer #mobile-menu > li.current-menu-item > .drawer-nav-drop-wrap > a,
#mobile-drawer #mobile-menu > li.current_page_item > a {
	color: #22d3ee;
	box-shadow: inset 3px 0 0 var(--nv-accent);
	background: rgba(8, 145, 178, 0.12);
}
#mobile-drawer #mobile-menu ul.sub-menu > li > a {
	font-size: 0.95rem;
	font-weight: 500;
	color: var(--nv-muted);
	padding-left: 2.5rem;
}
#mobile-drawer .drawer-sub-toggle {
	width: 52px;
}
#mobile-drawer .drawer-sub-toggle:hover {
	color: #22d3ee;
}

/* =========================================================
   Sticky site header — persistent nav on scroll. The header
   scrolled away entirely; pin it with an elevation shadow.
   CSS-only.
   ========================================================= */
body .site-header {
	position: sticky !important;
	top: 0;
	z-index: 40;
	box-shadow: 0 8px 24px -18px rgba(15, 23, 42, 0.55);
}
body.admin-bar .site-header { top: 32px; }
@media screen and (max-width: 782px) {
	body.admin-bar .site-header { top: 46px; }
}

/* =========================================================
   Registry records table — designed data grid (pass 13).
   CSS-only; no markup/SEO/URL change.
   ========================================================= */
table.records {
	width: 100%;
	border-collapse: separate;
	border-spacing: 0;
	margin: 1.25rem 0 2rem;
	border: 1px solid var(--nv-line);
	border-radius: var(--nv-radius);
	overflow: hidden;
	font-size: 0.92rem;
}
table.records thead th {
	padding: 0.7rem 0.95rem;
	text-align: left;
	font-size: 0.72rem;
	font-weight: 700;
	letter-spacing: 0.09em;
	text-transform: uppercase;
	color: var(--nv-muted);
	background: #f4f8fb;
	border-bottom: 1px solid var(--nv-line);
}
table.records tbody td {
	padding: 0.65rem 0.95rem;
	border-bottom: 1px solid #edf2f7;
}
table.records tbody tr:last-child td { border-bottom: 0; }
table.records tbody tr:nth-child(even) { background: #f7fafc; }
table.records tbody tr:hover { background: rgba(8, 145, 178, 0.07); }
table.records tbody td:first-child a { font-weight: 650; }
table.records tbody td:nth-child(3) {
	font-size: 0.78rem;
	font-weight: 700;
	letter-spacing: 0.04em;
	color: var(--nv-muted);
	white-space: nowrap;
}

/* =========================================================
   Record support surfaces — sources/community/official/
   dev-note components (pass 14). CSS-only.
   ========================================================= */
.entry-content p.nv-dev-note {
	font-size: 0.88rem;
	font-style: italic;
	color: var(--nv-muted);
}
.entry-content p.nv-official { font-weight: 650; }
.entry-content ul.nv-community {
	list-style: none;
	margin: 1rem 0;
	padding: 0;
}
.entry-content ul.nv-community li {
	margin: 0.4rem 0;
	padding: 0.55rem 0.9rem;
	border: 1px solid var(--nv-line);
	border-radius: 8px;
	background: #f8fafc;
	font-size: 0.92rem;
}
.entry-content div.nv-sources {
	margin-top: 1.5rem;
	padding: 1.1rem 1.25rem;
	border: 1px solid var(--nv-line);
	border-radius: var(--nv-radius);
	background: #f8fafc;
	font-size: 0.88rem;
}
.entry-content div.nv-sources h2 { font-size: 1.05rem; }
.entry-content div.nv-sources a { color: var(--nv-link); word-break: break-word; }

/* =========================================================
   Nav interaction states + anchor scroll offset (pass 15).
   ========================================================= */
.site-header .main-navigation .primary-menu-container > ul > li.menu-item > a {
	transition: color 0.15s ease;
}
.site-header .main-navigation .primary-menu-container > ul > li.menu-item > a:hover {
	color: var(--nv-accent);
}
.site-header .main-navigation .primary-menu-container > ul > li.menu-item.current-menu-item > a,
.site-header .main-navigation .primary-menu-container > ul > li.menu-item.current_page_item > a,
.site-header .main-navigation .primary-menu-container > ul > li.menu-item > a[aria-current="page"] {
	color: var(--nv-link);
	font-weight: 650;
	box-shadow: inset 0 -2px 0 var(--nv-accent);
}
.site-header .main-navigation .primary-menu-container > ul > li.menu-item > a:focus-visible {
	outline: 2px solid var(--nv-accent);
	outline-offset: 3px;
	border-radius: 4px;
}
[id] { scroll-margin-top: 96px; }
body.admin-bar [id] { scroll-margin-top: 130px; }
@media (max-width: 782px) { body.admin-bar [id] { scroll-margin-top: 142px; } }

/* =========================================================
   Related-posts carousel chrome (pass 16). CSS-only.
   ========================================================= */
.entry-related-carousel .splide__arrow { background: rgba(15, 23, 42, 0.55); }
.entry-related-carousel .splide__arrow:hover,
.entry-related-carousel .splide__arrow:focus-visible { background: var(--nv-accent); }
.entry-related-carousel .splide__pagination__page.is-active { background: var(--nv-accent); }
.entry-related-carousel .splide__pagination__page:hover { background: rgba(8, 145, 178, 0.55); }

/* =========================================================
   Verification mark chip (pass 17). CSS-only.
   ========================================================= */
.entry-content p.nv-verification {
  display: inline-flex;
  align-items: center;
  gap: 0.45rem;
  background: #ecfeff;
  border: 1px solid #a5f3fc;
  border-radius: 999px;
  padding: 0.4rem 0.85rem;
  font-weight: 600;
  color: var(--nv-link);
}
.entry-content p.nv-verification::before {
  content: "\2713";
  font-weight: 700;
  color: var(--nv-accent);
}

/* =========================================================
   Verified-date marks (pass 18). CSS-only.
   ========================================================= */
.nv-profile-head .nv-verified {
  display: inline-flex;
  align-items: center;
  gap: 0.35rem;
  font-weight: 550;
  font-size: 0.85rem;
  color: var(--nv-muted);
}
.nv-profile-head .nv-verified::before {
  content: "\2713";
  color: var(--nv-accent);
  font-weight: 700;
}

/* =========================================================
   Read-progress indicator (pass 19). GPU transform-only bar
   driven by assets/nv-progress.js. CSS-only chrome; a11y-safe
   (aria-hidden, pointer-events none).
   ========================================================= */
.read-progress {
  position: fixed;
  top: 0;
  left: 0;
  width: 100%;
  height: 3px;
  background: var(--nv-accent);
  transform-origin: 0 0;
  transform: scaleX(0);
  z-index: 100000;
  pointer-events: none;
  will-change: transform;
}
@media (prefers-reduced-motion: reduce) {
  .read-progress { display: none; }
}

/* =========================================================
   Branded browser chrome (pass 20). Selection tint, focus
   ring, scrollbar polish — CSS only.
   ========================================================= */
::selection {
  background: rgba(8, 145, 178, 0.22);
  color: var(--nv-ink);
}
a:focus-visible,
button:focus-visible,
input:focus-visible,
textarea:focus-visible,
select:focus-visible,
[tabindex]:focus-visible {
  outline: 2px solid var(--nv-accent);
  outline-offset: 2px;
  border-radius: 3px;
}
::-webkit-scrollbar {
  width: 10px;
  height: 10px;
}
::-webkit-scrollbar-track {
  background: #f1f5f9;
}
::-webkit-scrollbar-thumb {
  background: #cbd5e1;
  border: 2px solid #f1f5f9;
  border-radius: 5px;
}
::-webkit-scrollbar-thumb:hover {
  background: var(--nv-accent);
}

/* =========================================================
   Back-to-top control (pass 21). Fixed accent chip; fades in
   past 600px scroll via .is-visible. Reduced-motion aware.
   ========================================================= */
.back-to-top {
  position: fixed;
  right: 1.25rem;
  bottom: 1.25rem;
  width: 44px;
  height: 44px;
  padding: 0;
  border: 0;
  border-radius: 50%;
  background: var(--nv-accent);
  color: #fff;
  display: flex;
  align-items: center;
  justify-content: center;
  cursor: pointer;
  opacity: 0;
  visibility: hidden;
  transform: translateY(10px);
  transition: opacity 0.2s ease, transform 0.2s ease, visibility 0.2s ease;
  box-shadow: 0 6px 18px rgba(15, 23, 42, 0.28);
  z-index: 99999;
}
.back-to-top.is-visible {
  opacity: 1;
  visibility: visible;
  transform: translateY(0);
}
.back-to-top:hover {
  filter: brightness(1.12);
}
.back-to-top svg {
  display: block;
}
@media (prefers-reduced-motion: reduce) {
  .back-to-top {
    transition: none;
  }
}

/* =========================================================
   Print styles (pass 22). Strip interactive furniture and
   ink-heavy bands; readable single-column record output.
   ========================================================= */
@media print {
  header, footer, nav,
  .read-progress, .back-to-top,
  .post-navigation, .nav-links,
  #comments, #respond, .comment-respond, .comments-area,
  form, button,
  [class*='carousel'], [class*='drawer'], [class*='-filter'] {
    display: none !important;
  }
  * {
    box-shadow: none !important;
    text-shadow: none !important;
  }
  html, body {
    background: #fff !important;
    color: #111 !important;
  }
  a {
    color: inherit;
  }
  [class*='-hero'], [class*='-band'], [class*='-panel'], [class*='-card'] {
    background: #fff !important;
    color: #111 !important;
  }
  h1, h2, h3, h4 {
    color: #000 !important;
    page-break-after: avoid;
  }
  table, article {
    page-break-inside: avoid;
  }
}

/* =========================================================
   Typographic refinements (pass 23). Balanced headings,
   tabular numerals in data tables, tuned link underlines.
   ========================================================= */
h1, h2, h3 {
  text-wrap: balance;
}
table,
[class*='stat'] {
  font-variant-numeric: tabular-nums;
}
article a,
.entry-content a {
  text-underline-offset: 0.15em;
  text-decoration-thickness: 0.06em;
}

/* =========================================================
   Breadcrumb trail (pass 24). Compact wayfinding row above
   article content: Home / Category / Current.
   ========================================================= */
.nv-crumbs {
  margin: 0 0 1.25rem;
}
.nv-crumbs ol {
  display: flex;
  flex-wrap: wrap;
  gap: 0.375rem;
  list-style: none;
  margin: 0;
  padding: 0;
}
.nv-crumbs li {
  display: flex;
  align-items: center;
  gap: 0.375rem;
  font-size: 0.78rem;
  font-weight: 600;
  letter-spacing: 0.02em;
  text-transform: uppercase;
  color: rgba(15, 23, 42, 0.55);
}
.nv-crumbs li + li::before {
  content: "›";
  color: rgba(15, 23, 42, 0.3);
}
.nv-crumbs a {
  color: rgba(15, 23, 42, 0.7);
  text-decoration: none;
}
.nv-crumbs a:hover {
  color: var(--nv-accent);
}
.nv-crumbs [aria-current='page'] {
  color: var(--nv-ink);
}

/* =========================================================
   Nav search (pass 25). Compact GET search tucked into the
   primary menu; expands on focus, full-width in the drawer.
   ========================================================= */
.nv-nav-search {
  display: flex;
  align-items: center;
}
.nv-nav-search-form {
  display: flex;
  align-items: center;
  gap: 0.375rem;
  margin-left: 0.5rem;
}
input.nv-nav-search-input {
  width: 8.5rem;
  height: 2.1rem;
  padding: 0 0.75rem;
  font-size: 0.85rem;
  color: var(--nv-ink);
  background: #fff;
  border: 1px solid rgba(15, 23, 42, 0.18);
  border-radius: 999px;
  transition: width 0.2s ease, border-color 0.2s ease;
}
input.nv-nav-search-input:focus {
  width: 11rem;
  border-color: var(--nv-accent);
  outline: none;
}
button.nv-nav-search-btn {
  display: flex;
  align-items: center;
  justify-content: center;
  width: 2.1rem;
  height: 2.1rem;
  padding: 0;
  color: #fff;
  background: var(--nv-accent);
  border: none;
  border-radius: 50%;
  cursor: pointer;
}
button.nv-nav-search-btn:hover {
  filter: brightness(1.08);
}
@media (max-width: 1024px) {
  .nv-nav-search-form {
    margin: 0.5rem 0 0;
    width: 100%;
  }
  inputinput.nv-nav-search-input {
    flex: 1;
    width: auto;
  }
}

/* =========================================================
   External-link indicator (pass 26). Subtle ↗ after outbound
   links inside article content; internal links untouched.
   ========================================================= */
.entry-content a[href^='http']:not([href*='nftvideogames.com'])::after,
article a[href^='http']:not([href*='nftvideogames.com'])::after {
  content: '↗';
  display: inline-block;
  margin-left: 0.12em;
  font-size: 0.72em;
  line-height: 1;
  vertical-align: 0.08em;
  opacity: 0.6;
  transition: opacity 0.15s ease;
}
.entry-content a[href^='http']:not([href*='nftvideogames.com']):hover::after,
article a[href^='http']:not([href*='nftvideogames.com']):hover::after {
  opacity: 1;
}

/* =========================================================
   Footer sitemap band (pass 27). Ink section above the dark
   footer with Explore/Latest link columns.
   ========================================================= */
.nv-sitemap {
  background: var(--nv-ink, #0f172a);
  padding: 2rem max(1.25rem, 4vw) 0.75rem;
  color: rgba(226, 232, 240, 0.72);
}
.nv-sitemap-grid {
  max-width: 72rem;
  margin: 0 auto;
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(14rem, 1fr));
  gap: 1.5rem;
}
.nv-sitemap-head {
  margin: 0 0 0.625rem;
  font-size: 0.72rem;
  font-weight: 700;
  letter-spacing: 0.1em;
  text-transform: uppercase;
  color: #a5f3fc;
}
.nv-sitemap ul {
  list-style: none;
  margin: 0;
  padding: 0;
  display: grid;
  gap: 0.375rem;
}
.nv-sitemap a {
  color: rgba(226, 232, 240, 0.78);
  text-decoration: none;
  font-size: 0.9rem;
}
.nv-sitemap a:hover { color: #67e8f9; }

/* =========================================================
   Reading-time chip (pass 28). Right-aligned pill inside the
   breadcrumb row; muted like the trail, chip-outlined.
   ========================================================= */
.nv-crumbs li.nv-readtime::before { content: none; }
.nv-crumbs .nv-readtime {
  margin-left: auto;
  padding: 0.125rem 0.625rem;
  border: 1px solid rgba(15, 23, 42, 0.15);
  border-radius: 999px;
  font-size: 0.72rem;
  font-weight: 600;
  letter-spacing: 0.04em;
  color: rgba(15, 23, 42, 0.5);
  text-transform: none;
}
@media (max-width: 640px) {
  .nv-crumbs .nv-readtime { margin-left: 0; }
}

/* =========================================================
   Heading anchor links (pass 29). '#' deep-link affordance
   revealed on heading hover / keyboard focus.
   ========================================================= */
.entry-content h2 .nv-anchor,
.entry-content h3 .nv-anchor {
  margin-left: 0.45rem;
  font-size: 0.8em;
  font-weight: 600;
  color: var(--nv-accent, #0891b2);
  text-decoration: none;
  opacity: 0;
  transition: opacity 0.15s ease;
}
.entry-content h2:hover .nv-anchor,
.entry-content h3:hover .nv-anchor,
.entry-content .nv-anchor:focus-visible {
  opacity: 0.85;
}
.entry-content .nv-anchor:hover { opacity: 1; }

/* =========================================================
   Byline chip bar (pass 30). Entry meta becomes compact
   accent-tinted pills: author chip + date chip; dot divider
   suppressed inside the chip row.
   ========================================================= */
.entry-meta {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 0.5rem;
}
.entry-meta.entry-meta-divider-dot .posted-by::before,
.entry-meta.entry-meta-divider-dot .posted-on::before {
  content: none;
}
.entry-meta .posted-by,
.entry-meta .posted-on {
  display: inline-flex;
  align-items: center;
  gap: 0.35rem;
  padding: 0.2rem 0.7rem;
  border: 1px solid rgba(15, 23, 42, 0.12);
  border-radius: 999px;
  background: rgba(8, 145, 178, 0.06);
  font-size: 0.78rem;
  color: rgba(15, 23, 42, 0.7);
}
.entry-meta .posted-by .meta-label {
  color: rgba(15, 23, 42, 0.45);
}
.entry-meta .author a {
  color: var(--nv-ink, #0f172a);
  font-weight: 600;
  text-decoration: none;
}
.entry-meta .author a:hover {
  color: var(--nv-accent, #0891b2);
}

/* =========================================================
   Author box (pass 31). Branded author card at article end.
   ========================================================= */
.nv-authorbox {
  margin-top: 2.5rem;
  display: flex;
  gap: 0.9rem;
  align-items: flex-start;
  padding: 1.125rem 1.25rem;
  border: 1px solid rgba(15, 23, 42, 0.1);
  border-left: 3px solid var(--nv-accent, #0891b2);
  border-radius: 12px;
  background: rgba(15, 23, 42, 0.02);
}
.nv-authorbox-mono {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 2.5rem;
  height: 2.5rem;
  border-radius: 999px;
  background: var(--nv-accent, #0891b2);
  color: #ffffff;
  font-weight: 700;
  font-size: 1rem;
  flex: none;
}
.nv-authorbox-label {
  display: block;
  font-size: 0.68rem;
  font-weight: 700;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  color: rgba(15, 23, 42, 0.5);
}
.nv-authorbox-name {
  font-weight: 600;
  color: var(--nv-ink, #0f172a);
  text-decoration: none;
  font-size: 1rem;
}
.nv-authorbox-name:hover {
  color: var(--nv-accent, #0891b2);
}
.nv-authorbox-bio {
  margin: 0.3rem 0 0;
  font-size: 0.85rem;
  color: rgba(15, 23, 42, 0.65);
  line-height: 1.5;
}

/* =========================================================
   In-article table of contents (pass 32). Jump list card
   before the first heading on multi-section posts.
   ========================================================= */
.nv-toc {
  margin: 0 0 2rem;
  padding: 1rem 1.25rem;
  border: 1px solid rgba(15, 23, 42, 0.1);
  border-radius: 14px;
  background: rgba(8, 145, 178, 0.04);
  max-width: 26rem;
}
.nv-toc-head {
  display: block;
  font-size: 0.72rem;
  font-weight: 700;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  color: rgba(15, 23, 42, 0.5);
  margin-bottom: 0.5rem;
}
.nv-toc-list {
  margin: 0;
  padding-left: 1.15rem;
  display: grid;
  gap: 0.3rem;
  font-size: 0.88rem;
}
.nv-toc-list li::marker {
  color: var(--nv-accent, #0891b2);
}
.nv-toc-list a {
  color: var(--nv-ink, #0f172a);
  text-decoration: none;
}
.nv-toc-list a:hover {
  color: var(--nv-accent, #0891b2);
  text-decoration: underline;
}
.nv-toc-sub {
  margin-left: 1rem;
  font-size: 0.95em;
  list-style: circle;
}

/* =========================================================
   Filed-under category chips (pass 33). Real categories as
   accent pills at article end.
   ========================================================= */
.nv-filed {
  margin-top: 1.25rem;
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 0.5rem;
}
.nv-filed-label {
  font-size: 0.68rem;
  font-weight: 700;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  color: rgba(15, 23, 42, 0.5);
}
.nv-filed-chip {
  display: inline-flex;
  padding: 0.25rem 0.75rem;
  border: 1px solid rgba(8, 145, 178, 0.35);
  border-radius: 999px;
  background: rgba(8, 145, 178, 0.05);
  color: var(--nv-accent, #0891b2);
  font-size: 0.78rem;
  font-weight: 600;
  text-decoration: none;
  transition: background 0.15s ease, color 0.15s ease;
}
.nv-filed-chip:hover {
  background: var(--nv-accent, #0891b2);
  color: #ffffff;
}

/* =========================================================
   Freshness stamp (pass 34). Muted "Updated <date>" token in
   the meta row, injected by nv-late.js when updated differs.
   ========================================================= */
.nv-fresh {
  font-size: 0.72rem;
  font-weight: 600;
  color: rgba(15, 23, 42, 0.45);
  white-space: nowrap;
}

/* =========================================================
   ToC scrollspy (pass 35). Accent state on the current
   section's jump-list link, toggled by nv-late.js.
   ========================================================= */
.nv-toc-list a.nv-toc-active {
  color: var(--nv-accent, #0891b2);
  font-weight: 600;
}

/* =========================================================
   Category topic chips (pass 36). Sibling/child category
   pill row above the archive grid.
   ========================================================= */
.nv-catsub {
  display: flex;
  flex-wrap: wrap;
  gap: 0.45rem;
  margin: 0 0 1.25rem;
}
.nv-catsub-chip {
  display: inline-flex;
  padding: 0.28rem 0.8rem;
  border: 1px solid rgba(8, 145, 178, 0.3);
  border-radius: 999px;
  background: rgba(8, 145, 178, 0.05);
  color: var(--nv-accent, #0891b2);
  font-size: 0.78rem;
  font-weight: 600;
  text-decoration: none;
  transition: background 0.15s ease, color 0.15s ease;
}
.nv-catsub-chip:hover {
  background: var(--nv-accent, #0891b2);
  color: #ffffff;
}
.nv-catsub-chip.nv-catsub-current {
  background: var(--nv-accent, #0891b2);
  color: #ffffff;
}

/* =========================================================
   Search-results refine bar (pass 37). Prefilled form +
   result count above the results grid.
   ========================================================= */
.nv-sres {
  margin: 0 0 1.5rem;
  padding: 1.1rem 1.25rem 1rem;
  border: 1px solid rgba(8, 145, 178, 0.25);
  border-radius: 14px;
  background: rgba(8, 145, 178, 0.04);
}
.nv-sres-label {
  display: block;
  font-size: 1.05rem;
  font-weight: 700;
  color: var(--nv-ink, #0f172a);
  margin-bottom: 0.75rem;
}
.nv-sres-row {
  display: flex;
  gap: 0.6rem;
}
.nv-sres-input {
  flex: 1;
  min-width: 0;
  padding: 0.6rem 0.9rem;
  border: 1px solid rgba(8, 145, 178, 0.35);
  border-radius: 9px;
  font: inherit;
  color: var(--nv-ink, #0f172a);
  background: #ffffff;
}
.nv-sres-input:focus {
  outline: 2px solid rgba(8, 145, 178, 0.45);
  outline-offset: 1px;
}
.nv-sres-btn {
  padding: 0.6rem 1.3rem;
  border: 0;
  border-radius: 9px;
  background: var(--nv-accent, #0891b2);
  color: #ffffff;
  font-weight: 600;
  font-size: 0.92rem;
  cursor: pointer;
  transition: filter 0.15s ease;
}
.nv-sres-btn:hover {
  filter: brightness(1.08);
}
.nv-sres-count {
  margin: 0.6rem 0 0;
  font-size: 0.78rem;
  font-weight: 600;
  letter-spacing: 0.06em;
  text-transform: uppercase;
  color: rgba(15, 23, 42, 0.45);
}

/* =========================================================
   Archive sort controls (pass 38). Newest/Oldest/Title A–Z
   chip row above archive grids.
   ========================================================= */
.nv-sort {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 0.45rem;
  margin: 0 0 1.1rem;
}
.nv-sort-label {
  font-size: 0.68rem;
  font-weight: 700;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  color: rgba(15, 23, 42, 0.5);
}
.nv-sort-chip {
  display: inline-flex;
  padding: 0.24rem 0.7rem;
  border: 1px solid rgba(8, 145, 178, 0.3);
  border-radius: 999px;
  background: rgba(8, 145, 178, 0.05);
  color: var(--nv-accent, #0891b2);
  font-size: 0.75rem;
  font-weight: 600;
  text-decoration: none;
  transition: background 0.15s ease, color 0.15s ease;
}
.nv-sort-chip:hover {
  background: var(--nv-accent, #0891b2);
  color: #ffffff;
}
.nv-sort-chip.nv-sort-current {
  background: var(--nv-accent, #0891b2);
  color: #ffffff;
}

/* =========================================================
   Reader font-size control (pass 39). A− / A / A+ chips in
   the meta row; scales .entry-content body text.
   ========================================================= */
.nv-fontctl {
  display: inline-flex;
  gap: 0.3rem;
  margin-left: 0.5rem;
  vertical-align: middle;
}
.nv-fontctl-btn {
  min-width: 1.7rem;
  padding: 0.12rem 0.35rem;
  border: 1px solid rgba(8, 145, 178, 0.3);
  border-radius: 7px;
  background: rgba(8, 145, 178, 0.05);
  color: var(--nv-accent, #0891b2);
  font-size: 0.72rem;
  font-weight: 700;
  cursor: pointer;
  transition: background 0.15s ease, color 0.15s ease;
}
.nv-fontctl-btn:hover {
  background: var(--nv-accent, #0891b2);
  color: #ffffff;
}
.nv-fontctl-btn.nv-fontctl-on {
  background: var(--nv-accent, #0891b2);
  color: #ffffff;
}

/* =========================================================
   Freshness badge (pass 40). Accent "New" pill on card
   titles for posts under 21 days old.
   ========================================================= */
.nv-fresh {
  display: inline-block;
  margin-right: 0.45rem;
  padding: 0.08rem 0.45rem;
  border-radius: 999px;
  background: var(--nv-accent, #0891b2);
  color: #ffffff;
  font-size: 0.62rem;
  font-weight: 700;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  vertical-align: middle;
  transform: translateY(-1px);
}

/* =========================================================
   Archive intelligence (pass 41). Reading-time chip on card
   titles + post-count line in the archive header band.
   ========================================================= */
.nv-card-rt {
  display: inline-block;
  margin-left: 0.5rem;
  padding: 0.08rem 0.45rem;
  border: 1px solid rgba(8, 145, 178, 0.3);
  border-radius: 999px;
  background: rgba(8, 145, 178, 0.05);
  color: var(--nv-accent, #0891b2);
  font-size: 0.6rem;
  font-weight: 700;
  letter-spacing: 0.05em;
  vertical-align: middle;
  transform: translateY(-1px);
  white-space: nowrap;
}
.nv-archive-count {
  display: block;
  margin-top: 0.3rem;
  font-size: 0.78rem;
  font-weight: 600;
  letter-spacing: 0.04em;
  color: rgba(15, 23, 42, 0.55);
}

/* =========================================================
   Updated badge (pass 42). Outlined "Updated" pill on cards
   for posts meaningfully revised after publish.
   ========================================================= */
.nv-fresh.nv-updated {
  background: rgba(8, 145, 178, 0.08);
  color: var(--nv-accent, #0891b2);
  border: 1px solid rgba(8, 145, 178, 0.35);
}

/* =========================================================
   Zero-results search guidance (pass 44). Topic chips + latest
   links inside a designed panel on search-no-results.
   ========================================================= */
.nv-none {
  margin: 1.2rem 0;
  padding: 1.4rem 1.5rem;
  border: 1px solid rgba(8, 145, 178, 0.18);
  border-radius: 0.9rem;
  background: rgba(8, 145, 178, 0.04);
}
.nv-none-title {
  margin: 0 0 0.35rem;
  font-size: 1.15rem;
  font-weight: 700;
  color: var(--nv-ink, #0f172a);
}
.nv-none-sub {
  margin: 0 0 0.9rem;
  font-size: 0.85rem;
  color: rgba(15, 23, 42, 0.6);
}
.nv-none-topics {
  display: flex;
  flex-wrap: wrap;
  gap: 0.45rem;
  margin-bottom: 1rem;
}
.nv-none-chip {
  display: inline-block;
  padding: 0.3rem 0.75rem;
  border: 1px solid rgba(8, 145, 178, 0.3);
  border-radius: 999px;
  background: #fff;
  color: var(--nv-accent, #0891b2);
  font-size: 0.72rem;
  font-weight: 700;
  letter-spacing: 0.03em;
  text-decoration: none;
}
.nv-none-chip:hover {
  background: var(--nv-accent, #0891b2);
  color: #fff;
}
.nv-none-latest {
  display: grid;
  gap: 0.35rem;
}
.nv-none-link {
  font-size: 0.85rem;
  font-weight: 600;
  color: var(--nv-ink, #0f172a);
  text-decoration: none;
}
.nv-none-link:hover {
  color: var(--nv-accent, #0891b2);
}

/* =========================================================
   Copy-link share chip (pass 45). Copies the canonical URL to
   the clipboard from the filed-under row.
   ========================================================= */
.nv-share {
  margin-left: auto;
  padding: 0.3rem 0.8rem;
  border: 1px solid rgba(8, 145, 178, 0.35);
  border-radius: 999px;
  background: #fff;
  color: var(--nv-accent, #0891b2);
  font-size: 0.72rem;
  font-weight: 700;
  letter-spacing: 0.03em;
  cursor: pointer;
}
.nv-share:hover {
  background: var(--nv-accent, #0891b2);
  color: #fff;
}
.nv-share.nv-share-done {
  background: var(--nv-accent, #0891b2);
  color: #fff;
  border-color: var(--nv-accent, #0891b2);
}

/* =========================================================
   404 browse-ramp (pass 46). Real category chips + latest posts
   inside the branded 404 — dead end becomes a directory.
   ========================================================= */
.nv-404-ramp {
  margin-top: 1.6rem;
  text-align: left;
}
.nv-404-ramp .nv-none-topics {
  margin-bottom: 1rem;
}

/* =========================================================
   Sticky section rail (pass 47). A right-edge dot-nav cloned
   from the in-article ToC on wide viewports — scrollspy-synced
   anchors for long records without stealing content width.
   ========================================================= */
.nv-rail {
  display: none;
}
@media (min-width: 1360px) {
  .nv-rail {
    position: fixed;
    right: 18px;
    top: 50%;
    transform: translateY(-50%);
    z-index: 60;
    display: flex;
    flex-direction: column;
    gap: 0.5rem;
    max-width: 180px;
  }
  .nv-rail a {
    display: flex;
    align-items: center;
    justify-content: flex-end;
    gap: 0.45rem;
    font-size: 0;
    line-height: 1;
    text-decoration: none;
    color: rgba(15, 23, 42, 0.45);
  }
  .nv-rail a::after {
    content: "";
    width: 7px;
    height: 7px;
    border-radius: 999px;
    background: rgba(8, 145, 178, 0.35);
    flex: none;
    transition: transform 0.15s ease, background 0.15s ease;
  }
  .nv-rail a:hover,
  .nv-rail a.nv-rail-active {
    font-size: 0.68rem;
    font-weight: 700;
    color: var(--nv-ink, #0f172a);
  }
  .nv-rail a.nv-rail-active::after {
    background: var(--nv-accent, #0891b2);
    transform: scale(1.35);
  }
}

/* =========================================================
   Share cluster (pass 48). The copy-link chip grows into a
   real share group: outbound share intent links to X,
   Facebook and Reddit as accent-ringed icon buttons beside
   the copy pill. Icons carry no ↗ marker (they're affordances,
   not content links).
   ========================================================= */
.nv-sharegrp {
  margin-left: auto;
  display: flex;
  align-items: center;
  gap: 0.4rem;
}
.nv-sharegrp .nv-share {
  margin-left: 0;
}
.nv-share-a {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 26px;
  height: 26px;
  border: 1px solid rgba(8, 145, 178, 0.35);
  border-radius: 999px;
  color: #0891b2;
  transition: background 0.15s ease, color 0.15s ease, border-color 0.15s ease;
}
.nv-share-a svg {
  fill: currentColor;
  display: block;
}
.nv-share-a:hover {
  background: #0891b2;
  border-color: #0891b2;
  color: #fff;
}
article a.nv-share-a::after,
.entry-content a.nv-share-a::after {
  content: none;
}

/* =========================================================
   Author profile band (pass 49). Author archives open with a
   designed profile card — accent monogram, display name, real
   published count and (when set) the user's bio — instead of a
   bare "Author: X" header row.
   ========================================================= */
.nv-author-band {
  display: flex;
  align-items: center;
  gap: 0.9rem;
  margin: 0 0 1.4rem;
  padding: 1.1rem 1.3rem;
  background: #fff;
  border: 1px solid rgba(15, 23, 42, 0.09);
  border-radius: 16px;
}
.nv-author-band-mono {
  width: 52px;
  height: 52px;
  border-radius: 999px;
  background: #0891b2;
  color: #fff;
  display: flex;
  align-items: center;
  justify-content: center;
  font-size: 1.3rem;
  font-weight: 800;
  flex: none;
}
.nv-author-band-meta {
  display: flex;
  flex-direction: column;
  gap: 0.15rem;
}
.nv-author-band-meta strong {
  font-size: 1.05rem;
  color: #0f172a;
}
.nv-author-band-meta span {
  font-size: 0.78rem;
  color: rgba(15, 23, 42, 0.55);
}
.nv-author-band-desc {
  margin-top: 0.25rem;
}

/* =========================================================
   Search-term highlighting (pass 50). On search results the
   matched terms in card titles and excerpts are wrapped in
   accent-tinted marks so the relevance of each result is
   visible at a glance.
   ========================================================= */
mark.nv-mark {
  background: rgba(8, 145, 178, 0.16);
  color: inherit;
  padding: 0 0.12em;
  border-radius: 3px;
}

/* =========================================================
   Designed dropdown menu panels (pass 51). Desktop primary
   nav sub-menus render as white card panels — rounded,
   shadowed, token-weight links with accent hover — instead of
   the theme's flat dark default strip. Arms for future menus.
   ========================================================= */
@media (min-width: 1025px) {
  .site-header .main-navigation .menu-item-has-children .sub-menu {
    background: #fff;
    border: 1px solid rgba(15, 23, 42, 0.09);
    border-radius: 12px;
    box-shadow: 0 12px 30px rgba(15, 23, 42, 0.14);
    padding: 0.5rem;
    min-width: 220px;
  }
  .site-header .main-navigation .menu-item-has-children .sub-menu li a {
    background: transparent;
    color: #0f172a;
    font-weight: 600;
    font-size: 0.85rem;
    border-radius: 8px;
    padding: 0.55em 0.8em;
  }
  .site-header .main-navigation .menu-item-has-children .sub-menu li a:hover,
  .site-header .main-navigation .menu-item-has-children .sub-menu li a:focus {
    background: rgba(8, 145, 178, 0.08);
    color: #0891b2;
  }
}

/* =========================================================
   Archive description surface (pass 52). Category archives
   render the real curated category description under the
   title row — previously it only reached meta tags.
   ========================================================= */
.nv-arch-desc {
  margin: 0 0 1.1rem;
  font-size: 0.92rem;
  line-height: 1.65;
  color: rgba(15, 23, 42, 0.66);
  max-width: 64ch;
}
.nv-arch-desc a {
  color: #0891b2;
}

/* =========================================================
   Topic RSS subscribe chip (pass 53). Category archives
   surface their real feed as a right-aligned chip in the
   sort row — live subscribe surface per topic.
   ========================================================= */
.nv-sort-rss {
  margin-left: auto;
  display: inline-flex;
  align-items: center;
  gap: 0.32rem;
  padding: 0.24rem 0.7rem;
  border: 1px solid rgba(8, 145, 178, 0.3);
  border-radius: 999px;
  color: var(--nv-accent, #0891b2);
  font-size: 0.75rem;
  font-weight: 600;
  text-decoration: none;
}
.nv-sort-rss:hover,
.nv-sort-rss:focus {
  background: var(--nv-accent, #0891b2);
  color: #ffffff;
}

/* =========================================================
   Archive breadcrumb trail (pass 54). Category and author
   archives get a real Home / ... / Here crumb row at the
   top of the archive band — IA context singular posts
   already had.
   ========================================================= */
.nv-crumbs {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 0.45rem;
  margin: 0 0 0.7rem;
  font-size: 0.76rem;
  font-weight: 600;
}
.nv-crumbs a {
  color: var(--nv-accent, #0891b2);
  text-decoration: none;
}
.nv-crumbs a:hover,
.nv-crumbs a:focus {
  text-decoration: underline;
}
.nv-crumbs span:last-child {
  color: rgba(15, 23, 42, 0.6);
}
.nv-crumb-sep {
  color: rgba(15, 23, 42, 0.35);
}

/* =========================================================
   Comment CTA chip (pass 55). A comments_open()-gated
   "Comment" pill beside the share cluster — only renders on
   posts with an open discussion; scrolls to #respond.
   ========================================================= */
.nv-cta-comment {
  display: inline-flex;
  align-items: center;
  gap: 0.32rem;
  margin-left: 0.45rem;
  padding: 0.24rem 0.7rem;
  border: 1px solid rgba(8, 145, 178, 0.3);
  border-radius: 999px;
  color: #0891b2;
  font-size: 0.75rem;
  font-weight: 600;
  text-decoration: none;
}
.nv-cta-comment:hover,
.nv-cta-comment:focus {
  background: #0891b2;
  color: #fff;
}

/* =========================================================
   Archive card lift (pass 56). Loop cards get a transform/
   shadow-only hover raise + accent border tint, and the lead
   card of each archive/search gets an accent top rail —
   lifts the top-of-list entry without invented labels.
   ========================================================= */
body.archive article.loop-entry,
body.search article.loop-entry,
body.single .entry-related article.loop-entry {
	transition: transform 0.18s ease, box-shadow 0.18s ease, border-color 0.18s ease;
}
body.archive article.loop-entry:hover,
body.archive article.loop-entry:focus-within,
body.search article.loop-entry:hover,
body.search article.loop-entry:focus-within,
body.single .entry-related article.loop-entry:hover,
body.single .entry-related article.loop-entry:focus-within {
	transform: translateY(-3px);
	box-shadow: 0 10px 30px rgba(15, 23, 42, 0.1);
	border-color: rgba(8, 145, 178, 0.35);
}
body.archive #archive-container > li.entry-list-item:first-of-type article.loop-entry,
body.search #archive-container > li.entry-list-item:first-of-type article.loop-entry {
	border-top: 3px solid var(--nv-accent);
}
@media (prefers-reduced-motion: reduce) {
	body.archive article.loop-entry,
	body.search article.loop-entry,
	body.single .entry-related article.loop-entry {
		transition: none;
	}
}

/* =========================================================
   Card meta pill row (pass 57). The By/Posted-on meta inside
   archive/search cards becomes a quiet chip row — muted
   pills matching the site's chip vocabulary instead of bare
   dot-separated text.
   ========================================================= */
body.archive article.loop-entry .entry-meta,
body.search article.loop-entry .entry-meta,
body.single .entry-related article.loop-entry .entry-meta {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	gap: 0.4rem;
	font-size: 0.75rem;
}
body.archive article.loop-entry .entry-meta .posted-by,
body.search article.loop-entry .entry-meta .posted-by,
body.archive article.loop-entry .entry-meta .posted-on,
body.search article.loop-entry .entry-meta .posted-on,
body.single .entry-related article.loop-entry .entry-meta .posted-by,
body.single .entry-related article.loop-entry .entry-meta .posted-on {
	display: inline-flex;
	align-items: center;
	gap: 0.3rem;
	padding: 0.2rem 0.65rem;
	border: 1px solid rgba(8, 145, 178, 0.16);
	border-radius: 999px;
	background: rgba(8, 145, 178, 0.05);
	color: rgba(15, 23, 42, 0.72);
	font-weight: 500;
}
body.archive article.loop-entry .entry-meta a,
body.search article.loop-entry .entry-meta a,
body.single .entry-related article.loop-entry .entry-meta a {
	color: inherit;
	text-decoration: none;
}
body.archive article.loop-entry .entry-meta a:hover,
body.search article.loop-entry .entry-meta a:hover,
body.single .entry-related article.loop-entry .entry-meta a:hover {
	color: var(--nv-accent);
}
body.archive article.loop-entry .entry-meta .meta-label,
body.search article.loop-entry .entry-meta .meta-label,
body.single .entry-related article.loop-entry .entry-meta .meta-label {
	font-size: 0.68rem;
	font-weight: 700;
	letter-spacing: 0.06em;
	text-transform: uppercase;
	color: rgba(15, 23, 42, 0.45);
}

/* =========================================================
   Static-page header band (pass 58). Pages (About, Privacy,
   etc.) still render the stock bare h1 while posts get the
   designed band — mirror the single-post header treatment on
   body.page. CSS-only.
   ========================================================= */
body.page:not(.home) .entry-header {
	background:
		radial-gradient(600px 180px at 100% 0%, rgba(8, 145, 178, 0.07), transparent 60%),
		var(--nv-surface);
	border: 1px solid var(--nv-line);
	border-radius: var(--nv-radius);
	padding: clamp(1.5rem, 4vw, 2.5rem) clamp(1.25rem, 4vw, 2.5rem);
	margin-bottom: 1.5rem;
}
body.page:not(.home) .entry-header .entry-title {
	font-size: clamp(1.75rem, 4vw, 2.5rem);
	line-height: 1.15;
	letter-spacing: -0.02em;
	color: var(--nv-ink);
	margin-bottom: 0;
}
@media (max-width: 640px) {
	body.page:not(.home) .entry-header { padding: 1.25rem 1rem; }
}

/* =========================================================
   NV VISUAL RESCUE (deep pass) — the archive posts list is a
   real CSS grid, so every loop_start emitter (crumbs, count,
   description, topic chips, sort) was landing as a grid
   column and stretching into vertical "chip towers"; the
   archive band rendered as two separated boxes (floating
   title card); the curated description printed twice (hero +
   loop emitter); and the wide-screen section rail leaked its
   active label as permanent text.
   ========================================================= */

/* 1 — any emitter inside the posts grid is a full-width row. */
ul.content-wrap.kadence-posts-list > *:not(li) {
	grid-column: 1 / -1;
}

/* 2 — one unified archive band: title + description inside a
   single surface instead of a floating title card. */
body.archive .entry-header.post-archive-title {
	background:
		radial-gradient(600px 180px at 100% 0%, rgba(8, 145, 178, 0.07), transparent 60%),
		var(--nv-surface);
	border: 1px solid var(--nv-line);
	border-radius: var(--nv-radius);
	padding: clamp(1.5rem, 4vw, 2.25rem) clamp(1.25rem, 4vw, 2.5rem);
	margin-bottom: 1.5rem;
	text-align: center;
}
body.archive .entry-header.post-archive-title .archive-title,
body.archive .entry-header.post-archive-title .archive-description {
	background: none;
	border: none;
	border-radius: 0;
	padding: 0;
	margin-bottom: 0;
}
body.archive .entry-header.post-archive-title .archive-title {
	margin-bottom: 0.4rem;
}
body.archive .entry-header.post-archive-title .archive-description {
	max-width: 68ch;
	margin: 0 auto;
}
@media (max-width: 640px) {
	body.archive .entry-header.post-archive-title {
		padding: 1.25rem 1rem;
	}
}

/* 3 — the loop emitter prints the same description the hero
   band already carries (it renders BEFORE the emitter); one
   source of truth stays in the band. */
.nv-arch-desc {
	display: none;
}

/* 4 — rail: an active section keeps the accent dot but never
   its label text (hover still reveals labels on any dot). */
@media (min-width: 1360px) {
	.nv-rail a.nv-rail-active {
		font-size: 0;
		font-weight: 400;
	}
}

/* =========================================================
   Lead feature card (pass 59). The first card on page 1 of
   an archive/search stops being another uniform cell and
   becomes a real feature slot — spans the full row, larger
   title, breathing excerpt. Page 2+ keeps the even grid
   (body.paged excludes it). Builds on the pass-56 accent
   top rail. CSS-only; markup/rel/URLs unchanged.
   ========================================================= */
body.archive:not(.paged) #archive-container > li.entry-list-item:first-of-type,
body.search:not(.paged) #archive-container > li.entry-list-item:first-of-type {
	grid-column: 1 / -1;
}
body.archive:not(.paged) #archive-container > li.entry-list-item:first-of-type article.loop-entry,
body.search:not(.paged) #archive-container > li.entry-list-item:first-of-type article.loop-entry {
	background:
		radial-gradient(700px 240px at 100% 0%, rgba(8, 145, 178, 0.07), transparent 60%),
		#ffffff;
	border-left: 4px solid var(--nv-accent);
}
body.archive:not(.paged) #archive-container > li.entry-list-item:first-of-type article.loop-entry .entry-title,
body.search:not(.paged) #archive-container > li.entry-list-item:first-of-type article.loop-entry .entry-title {
	font-size: clamp(1.55rem, 3vw, 2.1rem);
}
body.archive:not(.paged) #archive-container > li.entry-list-item:first-of-type article.loop-entry .entry-summary,
body.search:not(.paged) #archive-container > li.entry-list-item:first-of-type article.loop-entry .entry-summary {
	max-width: 72ch;
	font-size: 1.02rem;
	line-height: 1.65;
}
@media (max-width: 640px) {
	body.archive:not(.paged) #archive-container > li.entry-list-item:first-of-type article.loop-entry,
	body.search:not(.paged) #archive-container > li.entry-list-item:first-of-type article.loop-entry {
		border-left-width: 3px;
	}
}

/* =========================================================
   Dense archive view (pass 65). The sort row's View toggle
   (?density=compact) adds body.nv-dense: a 4-up tight grid
   with excerpts/read-more hidden — registry users can scan
   ~2.6x more records per screen. Comfort remains default.
   ========================================================= */
body.nv-dense.archive ul.content-wrap.kadence-posts-list,
body.nv-dense.search ul.content-wrap.kadence-posts-list,
body.nv-dense.blog ul.content-wrap.kadence-posts-list {
	grid-template-columns: repeat(4, minmax(0, 1fr));
	gap: 0.9rem;
}
body.nv-dense article.loop-entry {
	padding: 1rem 1rem;
	margin-bottom: 0;
}
body.nv-dense article.loop-entry .entry-title {
	font-size: 1rem;
	line-height: 1.35;
}
body.nv-dense article.loop-entry .entry-summary,
body.nv-dense article.loop-entry .post-more-link {
	display: none;
}
body.nv-dense article.loop-entry .entry-meta {
	font-size: 0.68rem;
	gap: 0.3rem;
}
body.nv-dense article.loop-entry .category-links a {
	font-size: 0.62rem;
	padding: 0.12rem 0.5rem;
}
/* Dense lead card: still a feature slot but compact. */
body.nv-dense.archive:not(.paged) #archive-container > li.entry-list-item:first-of-type,
body.nv-dense.search:not(.paged) #archive-container > li.entry-list-item:first-of-type {
	grid-column: span 2;
}
body.nv-dense.archive:not(.paged) #archive-container > li.entry-list-item:first-of-type article.loop-entry .entry-title,
body.nv-dense.search:not(.paged) #archive-container > li.entry-list-item:first-of-type article.loop-entry .entry-title {
	font-size: 1.35rem;
}
@media (max-width: 1080px) {
	body.nv-dense.archive ul.content-wrap.kadence-posts-list,
	body.nv-dense.search ul.content-wrap.kadence-posts-list,
	body.nv-dense.blog ul.content-wrap.kadence-posts-list {
		grid-template-columns: repeat(3, minmax(0, 1fr));
	}
}
@media (max-width: 700px) {
	body.nv-dense.archive ul.content-wrap.kadence-posts-list,
	body.nv-dense.search ul.content-wrap.kadence-posts-list,
	body.nv-dense.blog ul.content-wrap.kadence-posts-list {
		grid-template-columns: repeat(2, minmax(0, 1fr));
	}
}
@media (max-width: 460px) {
	body.nv-dense.archive ul.content-wrap.kadence-posts-list,
	body.nv-dense.search ul.content-wrap.kadence-posts-list,
	body.nv-dense.blog ul.content-wrap.kadence-posts-list {
		grid-template-columns: minmax(0, 1fr);
	}
}

/* Dense meta: the byline is always the same editorial team —
   collapse it in dense cards so the row is just the date. */
body.nv-dense article.loop-entry .entry-meta .posted-by {
	display: none;
}

/* ---------------------------------------------------------------
   Live search dropdown (pass 71). nv-search-live.js renders
   debounced /wp-json hits under every search input — a designed
   card with hit rows + an "All results" footer link.
   --------------------------------------------------------------- */
form.nv-live-wrap {
	position: relative;
}
.nv-search-drop {
	position: absolute;
	top: calc(100% + 6px);
	left: 0;
	right: 0;
	z-index: 60;
	display: none;
	background: #fff;
	border: 1px solid var(--nv-line);
	border-radius: 12px;
	box-shadow: 0 12px 32px rgba(15, 23, 42, 0.14), 0 2px 6px rgba(15, 23, 42, 0.08);
	overflow: hidden;
}
.nv-search-drop.is-open {
	display: block;
}
.nv-search-drop-head {
	padding: 0.45rem 0.8rem;
	font-size: 0.66rem;
	font-weight: 700;
	letter-spacing: 0.07em;
	text-transform: uppercase;
	color: var(--nv-muted);
	border-bottom: 1px solid var(--nv-line);
}
.nv-hit-title {
	display: -webkit-box;
	-webkit-line-clamp: 2;
	-webkit-box-orient: vertical;
	overflow: hidden;
}
a.nv-search-hit {
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: 0.6rem;
	padding: 0.55rem 0.8rem;
	font-size: 0.85rem;
	color: var(--nv-ink);
	text-decoration: none;
}
a.nv-search-hit:hover,
a.nv-search-hit:focus {
	background: var(--nv-surface);
	outline: none;
}
a.nv-search-hit + a.nv-search-hit {
	border-top: 1px solid var(--nv-line);
}
.nv-hit-kind {
	flex: 0 0 auto;
	font-size: 0.62rem;
	font-weight: 700;
	letter-spacing: 0.05em;
	text-transform: uppercase;
	color: var(--nv-link);
	background: rgba(8, 145, 178, 0.1);
	border-radius: 999px;
	padding: 0.15rem 0.5rem;
}
a.nv-search-all {
	display: block;
	padding: 0.55rem 0.8rem;
	font-size: 0.82rem;
	font-weight: 600;
	color: var(--nv-link);
	text-decoration: none;
	border-top: 1px solid var(--nv-line);
	background: var(--nv-surface);
}
a.nv-search-all:hover,
a.nv-search-all:focus {
	color: var(--nv-accent-dark);
	outline: none;
}

/* ---------------------------------------------------------------
   Progressive archive loading (pass 77). nv-loadmore.js fetches the
   next archive page and appends its real card markup; the button
   sits between the list and the (still-intact) pagination.
   --------------------------------------------------------------- */
.nv-loadmore-wrap {
	display: flex;
	align-items: center;
	justify-content: center;
	gap: 0.75rem;
	grid-column: 1 / -1;
	margin: 1.4rem 0 0.6rem;
}
button.nv-loadmore-btn {
	font: inherit;
	font-size: 0.88rem;
	font-weight: 600;
	color: var(--nv-link);
	background: #fff;
	border: 1.5px solid var(--nv-accent);
	border-radius: 999px;
	padding: 0.6rem 1.6rem;
	cursor: pointer;
	transition: background 0.15s ease, color 0.15s ease, box-shadow 0.15s ease;
}
button.nv-loadmore-btn:hover:not(:disabled),
button.nv-loadmore-btn:focus:not(:disabled) {
	background: var(--nv-accent);
	color: #fff;
	box-shadow: 0 4px 14px rgba(8, 145, 178, 0.25);
	outline: none;
}
button.nv-loadmore-btn:disabled {
	opacity: 0.55;
	cursor: default;
}
.nv-loadmore-status {
	font-size: 0.8rem;
	color: var(--nv-muted);
}
li.nv-loadmore-sep {
	list-style: none;
	grid-column: 1 / -1;
	display: flex;
	align-items: center;
	gap: 0.9rem;
	font-size: 0.7rem;
	font-weight: 700;
	letter-spacing: 0.08em;
	text-transform: uppercase;
	color: var(--nv-muted);
	margin: 0.5rem 0 0.15rem;
	padding: 0;
}
li.nv-loadmore-sep::before,
li.nv-loadmore-sep::after {
	content: "";
	flex: 1 1 auto;
	height: 1px;
	background: var(--nv-line);
}
li.nv-loadmore-sep::before {
	max-width: 2.5rem;
}

/* ---------------------------------------------------------------
   Command palette (pass 83). Ctrl/Cmd+K opens a site-wide search
   overlay powered by /wp-json — discoverable via a Ctrl+K chip in
   the nav search form.
   --------------------------------------------------------------- */
body.nv-pal-open {
	overflow: hidden;
}
.nv-pal-backdrop {
	position: fixed;
	inset: 0;
	z-index: 200;
	display: none;
	background: rgba(15, 23, 42, 0.45);
	backdrop-filter: blur(2px);
	padding: 12vh 1rem 1rem;
}
.nv-pal-backdrop.is-open {
	display: block;
}
.nv-pal {
	max-width: 34rem;
	margin: 0 auto;
	background: #fff;
	border: 1px solid var(--nv-line);
	border-radius: 16px;
	box-shadow: 0 24px 64px rgba(15, 23, 42, 0.28), 0 4px 12px rgba(15, 23, 42, 0.12);
	overflow: hidden;
}
.nv-pal-input {
	width: 100%;
	font: inherit;
	font-size: 1rem;
	padding: 0.9rem 1.1rem;
	border: none;
	border-bottom: 1px solid var(--nv-line);
	outline: none;
	background: #fff;
	color: var(--nv-ink);
}
.nv-pal-list {
	max-height: 22rem;
	overflow-y: auto;
}
.nv-pal-hint {
	padding: 0.8rem 1.1rem;
	font-size: 0.82rem;
	color: var(--nv-muted);
}
a.nv-pal-hit {
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: 0.6rem;
	padding: 0.6rem 1.1rem;
	font-size: 0.9rem;
	color: var(--nv-ink);
	text-decoration: none;
}
a.nv-pal-hit:hover,
a.nv-pal-hit:focus {
	background: var(--nv-surface);
	outline: none;
}
a.nv-pal-hit + a.nv-pal-hit {
	border-top: 1px solid var(--nv-line);
}
.nv-pal-hit-title {
	display: -webkit-box;
	-webkit-line-clamp: 2;
	-webkit-box-orient: vertical;
	overflow: hidden;
}
.nv-pal-hit-kind {
	flex: 0 0 auto;
	font-size: 0.62rem;
	font-weight: 700;
	letter-spacing: 0.05em;
	text-transform: uppercase;
	color: var(--nv-link);
	background: var(--nv-surface);
	border: 1px solid var(--nv-line);
	border-radius: 999px;
	padding: 0.15rem 0.5rem;
}
a.nv-pal-all {
	display: block;
	padding: 0.6rem 1.1rem;
	font-size: 0.85rem;
	font-weight: 600;
	color: var(--nv-link);
	text-decoration: none;
	border-top: 1px solid var(--nv-line);
	background: var(--nv-surface);
}
a.nv-pal-all:hover,
a.nv-pal-all:focus {
	color: var(--nv-accent);
	outline: none;
}
.nv-pal-foot {
	display: flex;
	gap: 1rem;
	padding: 0.5rem 1.1rem;
	font-size: 0.72rem;
	color: var(--nv-muted);
	border-top: 1px solid var(--nv-line);
	background: var(--nv-surface);
}
.nv-pal-foot kbd,
.nv-pal-chip kbd {
	font: inherit;
	font-size: 0.68rem;
	font-weight: 700;
	background: #fff;
	border: 1px solid var(--nv-line);
	border-bottom-width: 2px;
	border-radius: 4px;
	padding: 0.05rem 0.35rem;
}
button.nv-pal-chip {
	flex: 0 0 auto;
	display: inline-flex;
	gap: 2px;
	font: inherit;
	background: none;
	border: none;
	padding: 0.15rem;
	cursor: pointer;
	opacity: 0.75;
}
button.nv-pal-chip:hover,
button.nv-pal-chip:focus {
	opacity: 1;
	outline: none;
}
@media (max-width: 700px) {
	.nv-pal-foot {
		display: none;
	}
}

/* ---------------------------------------------------------------
   Resume reading (pass 89). nv-resume.js remembers scroll depth per
   article; this chip offers one-click return on revisit.
   --------------------------------------------------------------- */
button.nv-resume-chip {
	position: fixed;
	left: 1.1rem;
	bottom: 1.1rem;
	z-index: 110;
	font: inherit;
	font-size: 0.8rem;
	font-weight: 600;
	color: var(--nv-link);
	background: #fff;
	border: 1.5px solid var(--nv-accent);
	border-radius: 999px;
	padding: 0.5rem 1.1rem;
	cursor: pointer;
	box-shadow: 0 8px 24px rgba(15, 23, 42, 0.18);
	opacity: 0;
	transform: translateY(8px);
	transition: opacity 0.3s ease, transform 0.3s ease, background 0.15s ease, color 0.15s ease;
}
button.nv-resume-chip.is-visible {
	opacity: 1;
	transform: translateY(0);
}
button.nv-resume-chip:hover,
button.nv-resume-chip:focus {
	background: var(--nv-accent);
	color: #fff;
	outline: none;
}

/* Search topic filter (pass 95). Category chips narrowing a search
   via the native 'cat' query var, under the refine bar. */
.nv-stopic {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	gap: 0.45rem;
	margin: -0.4rem 0 1.1rem;
}
.nv-stopic-label {
	font-size: 0.68rem;
	font-weight: 700;
	letter-spacing: 0.08em;
	text-transform: uppercase;
	color: rgba(15, 23, 42, 0.5);
}
.nv-stopic-chip {
	display: inline-flex;
	align-items: center;
	gap: 0.3rem;
	padding: 0.24rem 0.7rem;
	border: 1px solid rgba(8, 145, 178, 0.3);
	border-radius: 999px;
	background: rgba(8, 145, 178, 0.05);
	color: var(--nv-accent, #0891b2);
	font-size: 0.75rem;
	font-weight: 600;
	text-decoration: none;
	transition: background 0.15s ease, color 0.15s ease;
}
.nv-stopic-chip:hover {
	background: var(--nv-accent, #0891b2);
	color: #ffffff;
}
.nv-stopic-chip.nv-stopic-current {
	background: var(--nv-accent, #0891b2);
	color: #ffffff;
}
.nv-stopic-n {
	opacity: 0.65;
	font-size: 0.9em;
}

/* Link previews (pass 101). Floating title + excerpt card shown on
   hover/focus of internal article links; positioned by nv-previews.js. */
.nv-peek {
	position: absolute;
	z-index: 140;
	display: none;
	flex-direction: column;
	gap: 0.3rem;
	padding: 0.75rem 0.9rem;
	background: #ffffff;
	border: 1px solid var(--nv-line, #e2e8f0);
	border-left: 3px solid var(--nv-accent, #0891b2);
	border-radius: 10px;
	box-shadow: 0 12px 32px rgba(15, 23, 42, 0.18);
	pointer-events: none;
}
.nv-peek.is-visible {
	display: flex;
}
.nv-peek-kind {
	font-size: 0.62rem;
	font-weight: 700;
	letter-spacing: 0.08em;
	text-transform: uppercase;
	color: var(--nv-accent, #0891b2);
}
.nv-peek-title {
	font-size: 0.82rem;
	font-weight: 600;
	line-height: 1.35;
	color: var(--nv-ink, #0f172a);
}
.nv-peek-ex {
	font-size: 0.75rem;
	line-height: 1.5;
	color: var(--nv-muted, #64748b);
	display: -webkit-box;
	-webkit-line-clamp: 3;
	-webkit-box-orient: vertical;
	overflow: hidden;
}

/* Contextual reading bar (pass 107). Slim bar pinned under the sticky
   header on articles once the reader passes the title — carries the
   article title and live progress so context is never lost mid-read. */
.nv-cbar {
	position: fixed;
	top: 0;
	left: 0;
	right: 0;
	z-index: 120;
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: 1rem;
	padding: 0.45rem 1.1rem;
	background: rgba(255, 255, 255, 0.97);
	border-bottom: 1px solid var(--nv-line, #e2e8f0);
	box-shadow: 0 4px 18px rgba(15, 23, 42, 0.08);
	transform: translateY(-110%);
	transition: transform 0.28s ease;
	pointer-events: none;
}
.nv-cbar.is-on {
	transform: translateY(0);
}
.nv-cbar-title {
	font-size: 0.8rem;
	font-weight: 600;
	color: var(--nv-ink, #0f172a);
	white-space: nowrap;
	overflow: hidden;
	text-overflow: ellipsis;
	max-width: 78vw;
}
.nv-cbar-title::before {
	content: "";
	display: inline-block;
	width: 8px;
	height: 8px;
	border-radius: 2px;
	background: var(--nv-accent, #0891b2);
	margin-right: 0.5rem;
	vertical-align: 1px;
}
.nv-cbar-pct {
	flex-shrink: 0;
	font-size: 0.72rem;
	font-weight: 700;
	letter-spacing: 0.04em;
	color: var(--nv-accent, #0891b2);
	background: rgba(8, 145, 178, 0.1);
	border: 1px solid rgba(8, 145, 178, 0.3);
	border-radius: 999px;
	padding: 0.12rem 0.55rem;
}
@media (max-width: 640px) {
	.nv-cbar-title {
		max-width: 62vw;
		font-size: 0.72rem;
	}
}

/* Save-for-later (pass 113). Persistent reading list: a ☆/★ chip in the
   article meta row and a floating shelf listing saved reads. */
.nv-save {
	display: inline-flex;
	align-items: center;
	gap: 0.3rem;
	padding: 0.2rem 0.65rem;
	font: inherit;
	font-size: 0.72rem;
	font-weight: 600;
	color: var(--nv-accent, #0891b2);
	background: rgba(8, 145, 178, 0.08);
	border: 1px solid rgba(8, 145, 178, 0.32);
	border-radius: 999px;
	cursor: pointer;
	transition: background 0.15s ease, color 0.15s ease;
}
.nv-save:hover {
	background: rgba(8, 145, 178, 0.16);
}
.nv-save.is-saved {
	color: #ffffff;
	background: var(--nv-accent, #0891b2);
	border-color: var(--nv-accent, #0891b2);
}
.nv-shelf {
	position: fixed;
	left: 1rem;
	bottom: 1rem;
	z-index: 130;
	display: none;
}
.nv-shelf.has-items {
	display: block;
}
.nv-shelf-btn {
	display: inline-flex;
	align-items: center;
	gap: 0.35rem;
	padding: 0.5rem 0.8rem;
	font: inherit;
	font-size: 0.85rem;
	font-weight: 700;
	color: #ffffff;
	background: var(--nv-accent, #0891b2);
	border: 0;
	border-radius: 999px;
	box-shadow: 0 8px 22px rgba(8, 145, 178, 0.4);
	cursor: pointer;
}
.nv-shelf-panel {
	position: absolute;
	left: 0;
	bottom: calc(100% + 0.6rem);
	width: 280px;
	max-height: 320px;
	overflow-y: auto;
	display: none;
	flex-direction: column;
	background: #ffffff;
	border: 1px solid var(--nv-line, #e2e8f0);
	border-radius: 12px;
	box-shadow: 0 16px 40px rgba(15, 23, 42, 0.2);
}
.nv-shelf-panel.is-open {
	display: flex;
}
.nv-shelf-head {
	padding: 0.6rem 0.9rem;
	font-size: 0.68rem;
	font-weight: 700;
	letter-spacing: 0.08em;
	text-transform: uppercase;
	color: var(--nv-muted, #64748b);
	border-bottom: 1px solid var(--nv-line, #e2e8f0);
}
.nv-shelf-empty {
	padding: 0.8rem 0.9rem;
	font-size: 0.78rem;
	color: var(--nv-muted, #64748b);
}
.nv-shelf-item {
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: 0.5rem;
	padding: 0.55rem 0.9rem;
	font-size: 0.8rem;
	line-height: 1.35;
	color: var(--nv-ink, #0f172a);
	text-decoration: none;
	border-bottom: 1px solid var(--nv-line, #e2e8f0);
}
.nv-shelf-item:last-child {
	border-bottom: 0;
}
.nv-shelf-item:hover {
	background: var(--nv-surface, #f8fafc);
	color: var(--nv-accent, #0891b2);
}
.nv-shelf-item-x {
	flex-shrink: 0;
	width: 18px;
	height: 18px;
	line-height: 16px;
	text-align: center;
	border-radius: 50%;
	font-size: 0.85rem;
	color: var(--nv-muted, #64748b);
}
.nv-shelf-item-x:hover {
	background: rgba(8, 145, 178, 0.15);
	color: var(--nv-accent, #0891b2);
}

/* Since-your-last-visit (pass 119). Slim banner on listings naming the
   articles published since the reader's prior visit. */
.nv-since {
	display: flex;
	align-items: center;
	flex-wrap: wrap;
	gap: 0.4rem 0.75rem;
	padding: 0.6rem 1rem;
	margin: 0 0 1.25rem;
	background: rgba(8, 145, 178, 0.07);
	border: 1px solid rgba(8, 145, 178, 0.25);
	border-radius: 12px;
	font-size: 0.8rem;
}
.nv-since-count {
	font-weight: 700;
	color: var(--nv-accent, #0891b2);
	white-space: nowrap;
}
.nv-since-list {
	display: inline-flex;
	flex-wrap: wrap;
	gap: 0.35rem 0.85rem;
	min-width: 0;
}
.nv-since-item {
	color: var(--nv-ink, #0f172a);
	text-decoration: none;
	border-bottom: 1px dotted rgba(8, 145, 178, 0.45);
}
.nv-since-item:hover {
	color: var(--nv-accent, #0891b2);
	border-bottom-style: solid;
}
.nv-since-more {
	color: var(--nv-muted, #64748b);
	font-weight: 600;
}

/* Keyboard navigation (pass 125). j/k selection ring + ? shortcuts sheet. */
.nv-keysel {
	outline: 2px solid var(--nv-accent, #0891b2) !important;
	outline-offset: 3px;
	border-radius: 10px;
	scroll-margin-top: 40vh;
}
.entry-content h2.nv-keysel,
.entry-content h3.nv-keysel {
	outline-width: 0;
	border-left: 4px solid var(--nv-accent, #0891b2);
	padding-left: 0.5rem;
}
.nv-keysheet {
	position: fixed;
	inset: 0;
	z-index: 140;
	display: none;
	align-items: center;
	justify-content: center;
	background: rgba(15, 23, 42, 0.45);
	backdrop-filter: blur(2px);
}
.nv-keysheet.is-open {
	display: flex;
}
.nv-keysheet-card {
	background: #ffffff;
	border: 1px solid var(--nv-line, #e2e8f0);
	border-radius: 14px;
	box-shadow: 0 24px 60px rgba(15, 23, 42, 0.3);
	padding: 1.1rem 1.4rem;
	min-width: 280px;
}
.nv-keysheet-head {
	font-size: 0.72rem;
	font-weight: 700;
	letter-spacing: 0.08em;
	text-transform: uppercase;
	color: var(--nv-muted, #64748b);
	margin-bottom: 0.7rem;
}
.nv-keysheet-list {
	list-style: none;
	margin: 0;
	padding: 0;
	display: grid;
	gap: 0.45rem;
}
.nv-keysheet-list li {
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: 1.5rem;
	font-size: 0.82rem;
	color: var(--nv-ink, #0f172a);
}
.nv-keysheet-list kbd {
	font-family: inherit;
	font-size: 0.72rem;
	font-weight: 700;
	padding: 0.12rem 0.45rem;
	background: var(--nv-surface, #f8fafc);
	border: 1px solid var(--nv-line, #e2e8f0);
	border-bottom-width: 2px;
	border-radius: 6px;
	color: var(--nv-accent, #0891b2);
}

/* Related posts band (leg 13) — same-topic siblings at article end. */
.nv-related {
	grid-column: 1 / -1;
	margin-top: 2.2rem;
	padding: 1.3rem 1.4rem;
	background: var(--nv-surface);
	border: 1px solid var(--nv-line);
	border-radius: 14px;
}
.nv-related-title {
	margin: 0 0 0.9rem;
	font-size: 0.75rem;
	font-weight: 700;
	letter-spacing: 0.08em;
	text-transform: uppercase;
	color: var(--nv-accent);
}
.nv-related-grid {
	display: grid;
	grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));
	gap: 0.8rem;
}
.nv-related-card {
	display: flex;
	flex-direction: column;
	gap: 0.4rem;
	padding: 0.85rem 1rem;
	background: #ffffff;
	border: 1px solid var(--nv-line);
	border-radius: 10px;
	text-decoration: none;
	transition: transform 0.16s ease, border-color 0.16s ease, box-shadow 0.16s ease;
}
.nv-related-card:hover,
.nv-related-card:focus-visible {
	transform: translateY(-2px);
	border-color: var(--nv-accent);
	box-shadow: 0 6px 18px rgba(8, 145, 178, 0.14);
}
.nv-related-date {
	font-size: 0.7rem;
	font-weight: 600;
	letter-spacing: 0.05em;
	text-transform: uppercase;
	color: var(--nv-muted);
}
.nv-related-name {
	font-size: 0.88rem;
	font-weight: 650;
	line-height: 1.35;
	color: var(--nv-ink);
}

/* Select-to-copy quote chip (leg 14) — floats above a text selection. */
.nv-quote {
	position: absolute;
	z-index: 150;
	display: none;
	padding: 0.42rem 0.85rem;
	background: var(--nv-accent);
	border: none;
	border-radius: 999px;
	box-shadow: 0 8px 22px rgba(8, 145, 178, 0.38);
	font: inherit;
	font-size: 0.75rem;
	font-weight: 700;
	letter-spacing: 0.04em;
	color: #ffffff;
	cursor: pointer;
	transition: opacity 0.15s ease, transform 0.15s ease;
}
.nv-quote.is-open {
	display: block;
	animation: nvquotein 0.16s ease;
}
@keyframes nvquotein {
	from { opacity: 0; transform: translateY(4px); }
	to { opacity: 1; transform: translateY(0); }
}

/* Recently-viewed rail (leg 16) — prior articles at article end. */
.nv-recent {
	display: flex;
	align-items: baseline;
	gap: 0.75rem;
	flex-wrap: wrap;
	margin-top: 2rem;
	padding-top: 1.25rem;
	border-top: 1px solid var(--nv-line, #e2e8f0);
}
.nv-recent-label {
	font-size: 0.72rem;
	font-weight: 800;
	letter-spacing: 0.08em;
	text-transform: uppercase;
	color: var(--nv-muted, #64748b);
	white-space: nowrap;
}
.nv-recent-row {
	display: flex;
	gap: 0.5rem;
	flex-wrap: wrap;
}
.nv-recent-chip {
	display: inline-block;
	padding: 0.3rem 0.75rem;
	border: 1px solid var(--nv-line, #e2e8f0);
	border-radius: 999px;
	background: var(--nv-surface, #f8fafc);
	color: var(--nv-ink, #0f172a);
	font-size: 0.8rem;
	font-weight: 600;
	text-decoration: none;
	transition: border-color 0.15s ease, color 0.15s ease, background 0.15s ease;
}
.nv-recent-chip:hover {
	border-color: var(--nv-accent, #0891b2);
	color: var(--nv-accent, #0891b2);
	background: #ffffff;
}

/* Listen-to-article chip (leg 17) — meta-row Web Speech control. */
.nv-listen {
	display: inline-block;
	padding: 0.22rem 0.7rem;
	border: 1px solid var(--nv-accent, #0891b2);
	border-radius: 999px;
	background: transparent;
	color: var(--nv-accent, #0891b2);
	font: inherit;
	font-size: 0.75rem;
	font-weight: 700;
	cursor: pointer;
	vertical-align: middle;
	transition: background 0.15s ease, color 0.15s ease;
}
.nv-listen:hover {
	background: var(--nv-accent, #0891b2);
	color: #ffffff;
}
.nv-listen.is-on {
	background: var(--nv-accent, #0891b2);
	color: #ffffff;
}

/* Focus mode (leg 18) — meta-row chip hides chrome for distraction-free reading. */
.nv-focus {
	display: inline-block;
	padding: 0.22rem 0.7rem;
	border: 1px solid var(--nv-accent);
	border-radius: 999px;
	background: transparent;
	color: var(--nv-accent);
	font: inherit;
	font-size: 0.75rem;
	font-weight: 700;
	cursor: pointer;
	vertical-align: middle;
	transition: background 0.15s ease, color 0.15s ease;
}
.nv-focus:hover {
	background: var(--nv-accent);
	color: #ffffff;
}
.nv-focus.is-on {
	background: var(--nv-accent);
	color: #ffffff;
}
.nv-focus-mode #masthead,
.nv-focus-mode #colophon,
.nv-focus-mode .nv-crumbs,
.nv-focus-mode .nv-toc,
.nv-focus-mode .nv-rail,
.nv-focus-mode .nv-related,
.nv-focus-mode .nv-authorbox,
.nv-focus-mode .nv-filed,
.nv-focus-mode .nv-share,
.nv-focus-mode .nv-recent,
.nv-focus-mode .nv-quote,
.nv-focus-mode .post-navigation {
	display: none !important;
}

/* Reading-width control (leg 19) — cycles article column Default / Cozy / Wide. */
.nv-width {
	display: inline-block;
	padding: 0.22rem 0.7rem;
	border: 1px solid var(--nv-accent);
	border-radius: 999px;
	background: transparent;
	color: var(--nv-accent);
	font: inherit;
	font-size: 0.75rem;
	font-weight: 700;
	cursor: pointer;
	vertical-align: middle;
	transition: background 0.15s ease, color 0.15s ease;
}
.nv-width:hover {
	background: var(--nv-accent);
	color: #ffffff;
}
.nv-width.is-on {
	background: var(--nv-accent);
	color: #ffffff;
}
body.nv-w-cozy article.single-entry {
	max-width: 46rem;
	margin-left: auto;
	margin-right: auto;
}
body.nv-w-wide article.single-entry {
	max-width: none;
}

/* Saved-marker (leg 20) — '★' on cards whose article is in the shelf. */
.nv-saved-mark {
	color: var(--nv-accent);
	font-size: 0.8em;
	vertical-align: baseline;
}

/* Comment-count chip (leg 21) — real count pill on listing cards. */
.nv-comments {
  display: inline-block;
  margin-left: 0.5rem;
  padding: 0.08rem 0.45rem;
  border: 1px solid rgba(8, 145, 178, 0.3);
  border-radius: 999px;
  background: rgba(8, 145, 178, 0.05);
  color: var(--nv-accent, #0891b2);
  font-size: 0.6rem;
  font-weight: 700;
  letter-spacing: 0.05em;
  vertical-align: middle;
  transform: translateY(-1px);
  white-space: nowrap;
}

/* Table-scroll (leg 22) — wide tables get a scroll region + edge shadows. */
.nv-tscroll {
	overflow-x: auto;
	-webkit-overflow-scrolling: touch;
	max-width: 100%;
	background-image:
		linear-gradient(to right, var(--nv-bg, #ffffff), var(--nv-bg, #ffffff)),
		linear-gradient(to left, var(--nv-bg, #ffffff), var(--nv-bg, #ffffff)),
		radial-gradient(farthest-side at 0 50%, rgba(0, 0, 0, 0.16), transparent),
		radial-gradient(farthest-side at 100% 50%, rgba(0, 0, 0, 0.16), transparent);
	background-position: 0 0, 100% 0, 0 0, 100% 0;
	background-repeat: no-repeat;
	background-size: 14px 100%, 14px 100%, 8px 100%, 8px 100%;
	background-attachment: local, local, scroll, scroll;
}
.nv-tscroll table {
	min-width: 100%;
}

/* Image lightbox (leg 23) — click-to-zoom overlay on article images. */
.nv-zoomable {
	cursor: zoom-in;
}
.nv-zoom {
	position: fixed;
	inset: 0;
	z-index: 99999;
	display: none;
	align-items: center;
	justify-content: center;
	flex-direction: column;
	padding: 2rem;
	background: rgba(10, 15, 30, 0.9);
	backdrop-filter: blur(4px);
}
.nv-zoom.is-open {
	display: flex;
}
.nv-zoom img {
	max-width: 92vw;
	max-height: 82vh;
	border-radius: 8px;
	box-shadow: 0 20px 60px rgba(0, 0, 0, 0.5);
}
.nv-zoom-cap {
	margin: 0.8rem 0 0;
	color: #cbd5e1;
	font-size: 0.8rem;
	text-align: center;
}
body.nv-zoom-lock {
	overflow: hidden;
}

/* Collapsible ToC (leg 24) — 'In this article' head flips the jump list. */
.nv-toc-flippable .nv-toc-head {
	cursor: pointer;
	display: flex;
	align-items: center;
	justify-content: space-between;
	user-select: none;
}
.nv-toc-flippable .nv-toc-head::after {
	content: '';
	display: inline-block;
	width: 0.45rem;
	height: 0.45rem;
	border-right: 2px solid var(--nv-accent, #0891b2);
	border-bottom: 2px solid var(--nv-accent, #0891b2);
	transform: rotate(45deg) translateY(-2px);
	transition: transform 0.2s ease;
}
.nv-toc-flippable.is-collapsed .nv-toc-head::after {
	transform: rotate(-45deg) translateY(2px);
}
.nv-toc-flippable.is-collapsed .nv-toc-list {
	display: none;
}

/* Article-meta sticky bar (leg 25) — title + copy-link pinned under the header on scroll. */
.nv-articlebar {
	position: fixed;
	top: 0;
	left: 0;
	right: 0;
	z-index: 9998;
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: 1rem;
	padding: 0.45rem 1rem;
	background: rgba(255, 255, 255, 0.92);
	backdrop-filter: blur(6px);
	border-bottom: 1px solid rgba(15, 23, 42, 0.08);
	box-shadow: 0 4px 16px rgba(15, 23, 42, 0.06);
	transform: translateY(-110%);
	transition: transform 0.25s ease;
}
.nv-articlebar.is-open {
	transform: translateY(0);
}
.nv-articlebar-title {
	font-weight: 700;
	font-size: 0.82rem;
	color: #0f172a;
	white-space: nowrap;
	overflow: hidden;
	text-overflow: ellipsis;
}
.nv-articlebar-copy {
	flex: none;
	padding: 0.28rem 0.8rem;
	border: 1px solid rgba(8, 145, 178, 0.35);
	border-radius: 999px;
	background: rgba(8, 145, 178, 0.06);
	color: var(--nv-accent, #0891b2);
	font-size: 0.68rem;
	font-weight: 700;
	letter-spacing: 0.05em;
	text-transform: uppercase;
	cursor: pointer;
	transition: background 0.2s ease;
}
.nv-articlebar-copy:hover {
	background: rgba(8, 145, 178, 0.14);
}

/* Reveal-on-scroll (leg 26) — cards and article blocks fade up as they enter. */
.nv-reveal {
	opacity: 0;
	transform: translateY(14px);
	transition: opacity 0.5s ease, transform 0.5s ease;
}
.nv-reveal.is-in {
	opacity: 1;
	transform: none;
}
@media (prefers-reduced-motion: reduce) {
	.nv-reveal {
		transition: none;
	}
}

/* nv article progress — live read-% + minutes-left inside the sticky meta bar */
.nv-articlebar-prog{color:rgba(15,23,42,.55);font-size:.66rem;font-weight:700;letter-spacing:.04em;white-space:nowrap}
@media (max-width: 640px){.nv-articlebar-prog{display:none}}


/* nv dark — floating mode toggle + full dark palette overrides */
.nv-dark-wrap{position:fixed;top:.55rem;right:.75rem;z-index:10001}
.nv-dark{width:30px;height:30px;border-radius:999px;border:1px solid rgba(15,23,42,.15);background:#fff;color:#0f172a;display:flex;align-items:center;justify-content:center;cursor:pointer;box-shadow:0 2px 8px rgba(15,23,42,.12);padding:0}
.nv-dark:hover{border-color:rgba(8,145,178,.5);color:#0891b2}
.nv-dark-on .nv-dark{background:#0f172a;color:#cbd5e1;border-color:rgba(226,232,240,.3);box-shadow:0 2px 8px rgba(0,0,0,.4)}
.nv-dark-on .nv-dark:hover{color:#67e8f9;border-color:rgba(103,232,249,.5)}

html.nv-dark-on{color-scheme:dark}
.nv-dark-on,.nv-dark-on body,.nv-dark-on .site,.nv-dark-on .content-container,.nv-dark-on .content-wrap{background:#0b1220;color:#cbd5e1}
.nv-dark-on .entry-content,.nv-dark-on .entry-content p,.nv-dark-on .entry-title,.nv-dark-on .entry-content h1,.nv-dark-on .entry-content h2,.nv-dark-on .entry-content h3,.nv-dark-on .entry-content h4{color:#e2e8f0}
.nv-dark-on .entry-content em,.nv-dark-on .entry-content strong{color:inherit}
.nv-dark-on a{color:#67e8f9}
.nv-dark-on a:hover{color:#a5f3fc}
.nv-dark-on .site-header,.nv-dark-on #masthead,.nv-dark-on .header-menu-nav,.nv-dark-on .main-navigation,.nv-dark-on .nav-menu,.nv-dark-on .menu{background:#0f172a;border-color:rgba(148,163,184,.2);box-shadow:0 1px 0 rgba(148,163,184,.12)}
.nv-dark-on .menu a,.nv-dark-on .nav-menu a,.nv-dark-on .menu-item a{color:#cbd5e1}
.nv-dark-on .menu a:hover,.nv-dark-on .nav-menu a:hover,.nv-dark-on .current-menu-item>a{color:#67e8f9}
.nv-dark-on .menu .sub-menu,.nv-dark-on .sub-menu{background:#111c30;border-color:rgba(148,163,184,.2);box-shadow:0 8px 24px rgba(0,0,0,.5)}
.nv-dark-on article.post,.nv-dark-on article.entry,.nv-dark-on .nv-card,.nv-dark-on .nv-registry-item,.nv-dark-on .nftu-tool,.nv-dark-on .nv-record,.nv-dark-on .lead-card,.nv-dark-on .post,.nv-dark-on .type-post,.nv-dark-on .nv-keysheet-card,.nv-dark-on .nv-authorbox,.nv-dark-on .nv-toc,.nv-dark-on .nv-sitemap-grid,.nv-dark-on .nv-404,.nv-dark-on .error404 .entry,.nv-dark-on .nv-share,.nv-dark-on .nv-sort,.nv-dark-on .nv-refine,.nv-dark-on .nv-authorband,.nv-dark-on .nv-palette,.nv-dark-on .nv-palette-list,.nv-dark-on .comment-body,.nv-dark-on .comment-respond,.nv-dark-on .comments-area,.nv-dark-on .nv-stat,.nv-dark-on .nv-band,.nv-dark-on .nv-hero,.nv-dark-on .nv-meta-pill,.nv-dark-on .nv-filed,.nv-dark-on .nv-postnav a,.nv-dark-on .nv-zeroguide{background:#111c30;border-color:rgba(148,163,184,.2);color:#cbd5e1}
.nv-dark-on article.post:hover,.nv-dark-on article.entry:hover,.nv-dark-on .nv-card:hover,.nv-dark-on .nv-registry-item:hover{box-shadow:0 8px 28px rgba(0,0,0,.45)}
.nv-dark-on .entry-title a,.nv-dark-on .entry-title a:visited,.nv-dark-on h1,.nv-dark-on h2,.nv-dark-on h3,.nv-dark-on h4,.nv-dark-on .nv-card-title,.nv-dark-on .site-title,.nv-dark-on .site-title a{color:#f1f5f9}
.nv-dark-on .entry-title a:hover{color:#67e8f9}
.nv-dark-on .entry-meta,.nv-dark-on .posted-on,.nv-dark-on .byline,.nv-dark-on .meta,.nv-dark-on .nv-meta,.nv-dark-on .nv-excerpt,.nv-dark-on .entry-summary,.nv-dark-on .description,.nv-dark-on .archive-description,.nv-dark-on .nv-toc-list a,.nv-dark-on .nv-sitemap a,.nv-dark-on .nv-latest a,.nv-dark-on .nv-filed a{color:#94a3b8}
.nv-dark-on .nv-filed a:hover,.nv-dark-on .nv-toc-list a:hover,.nv-dark-on .nv-toc-active{color:#67e8f9}
.nv-dark-on .nv-articlebar{background:rgba(15,23,42,.94);border-bottom-color:rgba(148,163,184,.2);box-shadow:0 4px 16px rgba(0,0,0,.4)}
.nv-dark-on .nv-articlebar-title{color:#e2e8f0}
.nv-dark-on .nv-articlebar-copy,.nv-dark-on .nv-articlebar-prog{color:#94a3b8}
.nv-dark-on .nv-articlebar-copy{background:rgba(103,232,249,.1);border-color:rgba(103,232,249,.35);color:#67e8f9}
.nv-dark-on .nv-breadcrumb,.nv-dark-on .nv-breadcrumb a,.nv-dark-on .nv-crumbs,.nv-dark-on .nv-crumbs a{color:#94a3b8}
.nv-dark-on .nv-breadcrumb a:hover,.nv-dark-on .nv-crumbs a:hover{color:#67e8f9}
.nv-dark-on input,.nv-dark-on textarea,.nv-dark-on select,.nv-dark-on .search-field,.nv-dark-on .nv-search input,.nv-dark-on .nv-refine input,.nv-dark-on .nv-palette input{background:#0f172a;color:#e2e8f0;border-color:rgba(148,163,184,.35)}
.nv-dark-on input::placeholder{color:#64748b}
.nv-dark-on input:focus,.nv-dark-on textarea:focus,.nv-dark-on select:focus{border-color:rgba(103,232,249,.6);outline:none}
.nv-dark-on table,.nv-dark-on th,.nv-dark-on td{border-color:rgba(148,163,184,.25)}
.nv-dark-on th{background:#0f172a;color:#94a3b8}
.nv-dark-on td{background:transparent}
.nv-dark-on blockquote{border-color:rgba(103,232,249,.4);background:rgba(103,232,249,.06);color:#cbd5e1}
.nv-dark-on code,.nv-dark-on pre{background:#0f172a;color:#a5f3fc;border-color:rgba(148,163,184,.25)}
.nv-dark-on mark{background:rgba(103,232,249,.25);color:#f8fafc}
.nv-dark-on hr{border-color:rgba(148,163,184,.25)}
.nv-dark-on .nv-chips a,.nv-dark-on .nv-sort a,.nv-dark-on .nv-view,.nv-dark-on .nv-view a,.nv-dark-on .nv-font a,.nv-dark-on .page-numbers,.nv-dark-on .nv-loadmore,.nv-dark-on .nv-share a,.nv-dark-on .nv-share button,.nv-dark-on .nv-rss,.nv-dark-on .nv-cta{background:rgba(103,232,249,.08);border-color:rgba(103,232,249,.3);color:#67e8f9}
.nv-dark-on .nv-chips a:hover,.nv-dark-on .nv-sort a:hover,.nv-dark-on .page-numbers:hover,.nv-dark-on .page-numbers.current,.nv-dark-on .nv-loadmore:hover,.nv-dark-on .nv-share a:hover,.nv-dark-on .nv-sort .is-active,.nv-dark-on .nv-sort a.is-active,.nv-dark-on .nv-view .is-active,.nv-dark-on .nv-view a.is-active,.nv-dark-on .nv-font a.is-active,.nv-dark-on .nv-font .is-active{background:#67e8f9;color:#0f172a;border-color:#67e8f9}
.nv-dark-on .nv-badge,.nv-dark-on .nv-new,.nv-dark-on .nv-updated,.nv-dark-on .nv-fresh,.nv-dark-on .nv-rt,.nv-dark-on .nv-card-rt,.nv-dark-on .nv-read,.nv-dark-on .nv-comments,.nv-dark-on .nv-verified{background:rgba(103,232,249,.15);color:#67e8f9;border-color:rgba(103,232,249,.3)}
.nv-dark-on .nv-zoom{background:rgba(5,8,16,.94)}
.nv-dark-on .nv-rail a{background:rgba(148,163,184,.25)}
.nv-dark-on .nv-rail a.is-active,.nv-dark-on .nv-rail .is-active{background:#67e8f9}
.nv-dark-on .nv-progress{background:rgba(148,163,184,.2)}
.nv-dark-on .nv-backtop{background:#0f172a;color:#67e8f9;border-color:rgba(103,232,249,.3)}
.nv-dark-on .nv-backtop:hover{border-color:#67e8f9}
.nv-dark-on .site-footer,.nv-dark-on .site-bottom-footer-wrap,.nv-dark-on footer{background:#0a1018}
.nv-dark-on .site-footer a{color:#94a3b8}
.nv-dark-on .site-footer a:hover{color:#67e8f9}
.nv-dark-on ::selection{background:rgba(103,232,249,.35);color:#f8fafc}
.nv-dark-on img{filter:brightness(.92)}
.nv-dark-on ::-webkit-scrollbar-thumb{background:rgba(103,232,249,.3)}
.nv-dark-on ::-webkit-scrollbar-track{background:#0b1220}
.nv-dark-on .nv-palette{background:#0f172a;border-color:rgba(148,163,184,.3);box-shadow:0 16px 48px rgba(0,0,0,.6)}
.nv-dark-on .nv-palette-list a,.nv-dark-on .nv-palette a{color:#cbd5e1}
.nv-dark-on .nv-palette-list a:hover,.nv-dark-on .nv-palette a:hover,.nv-dark-on .nv-palette .is-active{color:#67e8f9}
.nv-dark-on .nv-zoom-cap{color:#cbd5e1}
.nv-dark-on .nv-search-drop,.nv-dark-on .nv-livesearch{background:#111c30;border-color:rgba(148,163,184,.25)}
.nv-dark-on .nv-search-drop a,.nv-dark-on .nv-livesearch a{color:#cbd5e1}
.nv-dark-on .nv-search-drop a:hover,.nv-dark-on .nv-livesearch a:hover{background:rgba(103,232,249,.1);color:#67e8f9}


/* nv visited — muted 'Read' state on already-read listing cards */
.nv-read .entry-title a,.nv-read a.nv-read-title{opacity:.55}
.nv-read-chip{display:inline-block;margin-left:.45rem;padding:.1rem .45rem;border-radius:999px;font-size:.58rem;font-weight:700;letter-spacing:.05em;text-transform:uppercase;color:rgba(8,145,178,.9);background:rgba(8,145,178,.1);border:1px solid rgba(8,145,178,.3);vertical-align:.12em;opacity:1;white-space:nowrap}

/* Infinite archive loading hint (leg 30) */
.nv-loadmore-hint{display:block;margin-top:.5rem;font-size:.62rem;font-weight:700;letter-spacing:.07em;text-transform:uppercase;color:rgba(8,145,178,.75)}
/* Focus mode — distraction-free reading (leg 31) */
.nv-focus-btn{margin-left:auto;font:inherit;font-size:.68rem;font-weight:800;letter-spacing:.05em;text-transform:uppercase;color:#0891b2;background:rgba(8,145,178,.08);border:1px solid rgba(8,145,178,.4);border-radius:999px;padding:.3rem .8rem;cursor:pointer;white-space:nowrap}
.nv-focus-btn:hover{background:rgba(8,145,178,.16)}
.nv-focus-btn[aria-pressed="true"]{color:#fff;background:#0891b2;border-color:#0891b2}
html.nv-focus-on .site-header,
html.nv-focus-on .site-footer,
html.nv-focus-on .nv-related,
html.nv-focus-on .nv-share,
html.nv-focus-on .nv-sitemap,
html.nv-focus-on .nv-totop,
html.nv-focus-on .nv-railnav,
html.nv-focus-on .nv-section-rail,
html.nv-focus-on .nv-search,
html.nv-focus-on .nv-drawer,
html.nv-focus-on .nv-breadcrumbs,
html.nv-focus-on .comments-area,
html.nv-focus-on #comments{display:none!important}
html.nv-focus-on .nv-articlebar{top:0!important}
html.nv-focus-on .entry-content{max-width:46rem;margin-inline:auto}
/* Inline related — 'Read next' card (leg 32) */
.nv-inread{margin:1.6rem 0;padding:1.1rem 1.25rem 1.2rem;background:rgba(8,145,178,.05);border:1px solid rgba(8,145,178,.22);border-left:4px solid #0891b2;border-radius:10px}
.nv-inread-k{display:block;font-size:.6rem;font-weight:800;letter-spacing:.12em;text-transform:uppercase;color:#0891b2;margin-bottom:.35rem}
.nv-inread-title{display:block;font-size:1.05rem;font-weight:750;line-height:1.3;color:#0f172a;text-decoration:none}
.nv-inread-title:hover{text-decoration:underline}
.nv-inread-meta{margin:.4rem 0 0;font-size:.72rem;color:rgba(15,23,42,.55)}


/* Recently viewed rail — session history strip at article end (leg 33). */
.nv-recent {
	margin: 2rem 0 0;
	padding: 1.1rem 1.25rem 1.2rem;
	border-top: 1px solid rgba(8,145,178,.2);
}
.nv-recent-k {
	display: block;
	font-size: .66rem;
	font-weight: 700;
	letter-spacing: .14em;
	text-transform: uppercase;
	color: rgba(8,145,178,.85);
	margin-bottom: .7rem;
}
.nv-recent-row {
	display: flex;
	gap: .6rem;
	overflow-x: auto;
	padding-bottom: .2rem;
	scrollbar-width: thin;
}
.nv-recent-item {
	flex: 0 0 auto;
	max-width: 16rem;
	padding: .55rem .8rem;
	font-size: .82rem;
	font-weight: 600;
	line-height: 1.35;
	color: inherit;
	text-decoration: none;
	background: rgba(8,145,178,.05);
	border: 1px solid rgba(8,145,178,.22);
	border-radius: 8px;
	display: -webkit-box;
	-webkit-line-clamp: 2;
	-webkit-box-orient: vertical;
	overflow: hidden;
}
.nv-recent-item:hover {
	border-color: #0891b2;
	background: rgba(8,145,178,.1);
}


/* Reader typeface toggle — serif article body (leg 34). */
.nv-serif-btn {
	margin-left: .5rem;
	padding: .3rem .8rem;
	font-size: .72rem;
	font-weight: 700;
	letter-spacing: .06em;
	text-transform: uppercase;
	color: #0891b2;
	background: rgba(8,145,178,.08);
	border: 1px solid rgba(8,145,178,.3);
	border-radius: 999px;
	cursor: pointer;
}
.nv-serif-btn:hover {
	background: rgba(8,145,178,.16);
}
.nv-serif-btn[aria-pressed="true"] {
	color: #fff;
	background: #0891b2;
	border-color: #0891b2;
}
html.nv-serif-on .entry-content,
html.nv-serif-on .entry-content p,
html.nv-serif-on .entry-content li,
html.nv-serif-on .entry-content blockquote {
	font-family: Georgia, 'Times New Roman', serif;
}
html.nv-serif-on .entry-content p,
html.nv-serif-on .entry-content li {
	font-size: 1.04em;
	line-height: 1.75;
}


/* Skeleton shimmer — load-more placeholder cards (leg 35). */
.nv-skel {
	height: 9rem;
	border-radius: 10px;
	background: linear-gradient( 100deg, rgba(8,145,178,.06) 40%, rgba(8,145,178,.16) 50%, rgba(8,145,178,.06) 60% );
	background-size: 200% 100%;
	animation: nv-skel-shimmer 1.2s linear infinite;
}
@keyframes nv-skel-shimmer {
	0% { background-position: 200% 0; }
	100% { background-position: -200% 0; }
}

/* Archive card topic chip — category link rendered as an accent pill (leg 36). */
.entry-taxonomies .category-links a {
	display: inline-block;
	padding: .28rem .7rem;
	border-radius: 999px;
	font-size: .72rem;
	font-weight: 700;
	letter-spacing: .07em;
	text-transform: uppercase;
	color: rgb(8,145,178);
	background: rgba(8,145,178,.1);
	text-decoration: none;
	transition: background .15s, color .15s;
}
.entry-taxonomies .category-links a:hover,
.entry-taxonomies .category-links a:focus-visible {
	background: rgb(8,145,178);
	color: #fff;
}

/* New-since-last-visit archive banner (leg 37). */
.nv-newsin {
	display: inline-block;
	margin: 0 0 1rem;
	padding: .35rem .9rem;
	border-radius: 999px;
	font-size: .78rem;
	font-weight: 700;
	letter-spacing: .04em;
	text-transform: uppercase;
	color: #0891b2;
	background: rgba(8,145,178,.1);
	border: 1px solid rgba(8,145,178,.25);
}

/* ── Cite this article — citation panel behind the share-row chip ── */
.nv-cite-btn {
	display: inline-flex;
	align-items: center;
	gap: .35em;
	padding: .3em .85em;
	font-size: .72rem;
	font-weight: 700;
	line-height: 1.3;
	border: 1px solid rgba( 8,145,178, .45 );
	border-radius: 999px;
	background: rgba( 8,145,178, .06 );
	color: #0891b2;
	cursor: pointer;
}
.nv-cite-btn:hover, .nv-cite-btn[aria-expanded="true"] {
	background: rgba( 8,145,178, .14 );
}
.nv-cite {
	margin: .65em 0 0;
	padding: .9em 1.1em 1em;
	border: 1px solid rgba( 8,145,178, .3 );
	border-left: 3px solid #0891b2;
	border-radius: 8px;
	background: rgba( 8,145,178, .05 );
}
.nv-cite figcaption {
	margin-bottom: .45em;
	font-size: .7rem;
	font-weight: 700;
	letter-spacing: .08em;
	text-transform: uppercase;
	color: #0891b2;
}
.nv-cite-text {
	margin: 0 0 .6em;
	font-size: .82rem;
	line-height: 1.55;
	color: inherit;
}
.nv-cite-copy {
	padding: .3em .9em;
	font-size: .72rem;
	font-weight: 700;
	border: 1px solid rgba( 8,145,178, .45 );
	border-radius: 999px;
	background: #fff;
	color: #0891b2;
	cursor: pointer;
}
.nv-cite-copy:hover {
	background: rgba( 8,145,178, .12 );
}
@media print {
	.nv-cite-btn, .nv-cite { display: none; }
}

/* ── Quote-share popover — select article text → copy/share affordance ── */
.nv-qshare {
	position: absolute;
	z-index: 100000;
	display: inline-flex;
	align-items: center;
	gap: .4em;
	padding: .3em .45em;
	border-radius: 999px;
	background: #111827;
	box-shadow: 0 4px 18px rgba( 0,0,0,.28 );
	white-space: nowrap;
}
.nv-qshare-copy {
	padding: .28em .8em;
	font-size: .68rem;
	font-weight: 700;
	border: 0;
	border-radius: 999px;
	background: #0891b2;
	color: #fff;
	cursor: pointer;
}
.nv-qshare-copy:hover {
	filter: brightness( 1.12 );
}
.nv-qshare-x {
	display: inline-flex;
	align-items: center;
	gap: .3em;
	padding: .28em .7em;
	font-size: .68rem;
	font-weight: 700;
	color: #e5e7eb;
	text-decoration: none;
	border-radius: 999px;
}
.nv-qshare-x:hover {
	background: rgba( 255,255,255,.12 );
	color: #fff;
}
.nv-qshare-x svg {
	fill: currentColor;
}
.nv-qshare-search {
	display: inline-flex;
	align-items: center;
	padding: .28em .7em;
	font-size: .68rem;
	font-weight: 700;
	color: #e5e7eb;
	text-decoration: none;
	border-left: 1px solid rgba( 226,232,240,.18 );
}
.nv-qshare-search:hover {
	background: rgba( 255,255,255,.12 );
	color: #fff;
}
.nv-qshare-card {
	display: inline-flex;
	align-items: center;
	padding: .28em .7em;
	font-size: .68rem;
	font-weight: 700;
	color: #e5e7eb;
	background: none;
	border: 0;
	border-left: 1px solid rgba( 226,232,240,.18 );
	border-radius: 0;
	cursor: pointer;
}
.nv-qshare-card:hover {
	background: rgba( 255,255,255,.12 );
	color: #fff;
}
.nv-qshare-speak {
	display: inline-flex;
	align-items: center;
	padding: .28em .7em;
	font-size: .66rem;
	font-weight: 700;
	line-height: 1;
	color: #e5e7eb;
	background: none;
	border: 0;
	border-left: 1px solid rgba( 226,232,240,.18 );
	border-radius: 0;
	cursor: pointer;
}
.nv-qshare-speak:hover {
	background: rgba( 255,255,255,.12 );
	color: #fff;
}

.nv-qshare-define {
	display: inline-flex;
	align-items: center;
	padding: .28em .7em;
	font-size: .66rem;
	font-weight: 700;
	line-height: 1;
	color: #e5e7eb;
	background: none;
	border: 0;
	border-left: 1px solid rgba( 226,232,240,.18 );
	border-radius: 0;
	cursor: pointer;
}
.nv-qshare-define:hover {
	background: rgba( 255,255,255,.12 );
	color: #fff;
}
.nv-qshare-def {
	position: absolute;
	top: calc( 100% + 8px );
	left: 0;
	width: 17rem;
	max-height: 16rem;
	overflow: auto;
	padding: .7em .85em;
	border-radius: 12px;
	background: #111827;
	box-shadow: 0 8px 26px rgba( 0,0,0,.34 );
	font-size: .72rem;
	font-weight: 400;
	line-height: 1.5;
	color: #e5e7eb;
	white-space: normal;
}
.nv-qshare-pos {
	text-transform: uppercase;
	font-size: .62rem;
	font-weight: 700;
	color: var( --nv-accent, #818cf8 );
}
.nv-qshare-def-more {
	color: #fff;
	text-decoration: underline;
	font-size: .68rem;
}



@media print {
	.nv-qshare { display: none; }
}

/* ---------------------------------------------------------------
   Mobile section navigator — floating 'Sections' chip (≤768px only)
   opens a bottom sheet mirroring the article ToC (leg 40).
   --------------------------------------------------------------- */
.nv-sectnav {
	position: fixed;
	left: 16px;
	bottom: 16px;
	z-index: 9000;
	display: none;
	align-items: center;
	gap: 6px;
	padding: 9px 15px;
	border: none;
	border-radius: 999px;
	background: #0891b2;
	color: #fff;
	font: 700 .8rem/1 system-ui, sans-serif;
	letter-spacing: .02em;
	cursor: pointer;
	box-shadow: 0 6px 20px rgba(8, 145, 178, .4), 0 1px 4px rgba(0, 0, 0, .18);
}
.nv-sectnav:active {
	transform: translateY(1px);
}
.nv-sectnav-scrim {
	position: fixed;
	inset: 0;
	z-index: 9001;
	background: rgba(17, 24, 39, .45);
}
.nv-sectnav-sheet {
	position: fixed;
	left: 0;
	right: 0;
	bottom: 0;
	z-index: 9002;
	max-height: 62vh;
	overflow-y: auto;
	padding: 16px 20px 28px;
	background: #fff;
	border-radius: 16px 16px 0 0;
	box-shadow: 0 -8px 30px rgba(0, 0, 0, .22);
	animation: nv-sectnav-rise .18s ease-out;
}
@keyframes nv-sectnav-rise {
	from { transform: translateY(40px); opacity: 0; }
	to { transform: translateY(0); opacity: 1; }
}
.nv-sectnav-head {
	display: block;
	font: 700 .72rem/1 system-ui, sans-serif;
	text-transform: uppercase;
	letter-spacing: .09em;
	color: #0891b2;
	margin-bottom: 10px;
}
.nv-sectnav-close {
	position: absolute;
	top: 10px;
	right: 14px;
	border: none;
	background: none;
	font-size: 1.5rem;
	line-height: 1;
	color: #6b7280;
	cursor: pointer;
	padding: 4px;
}
.nv-sectnav-list {
	list-style: none;
	margin: 0;
	padding: 0;
}
.nv-sectnav-list li {
	margin: 0;
}
.nv-sectnav-list a {
	display: block;
	padding: 11px 6px;
	border-bottom: 1px solid #f1f5f9;
	color: #1f2937;
	font: 500 .95rem/1.3 system-ui, sans-serif;
	text-decoration: none;
}
.nv-sectnav-list a:active,
.nv-sectnav-list a.nv-toc-active {
	color: #0891b2;
	font-weight: 700;
}
.nv-sectnav-list li.nv-toc-sub a {
	padding-left: 22px;
	font-size: .88rem;
	color: #4b5563;
}
@media (max-width: 768px) {
	.nv-sectnav { display: inline-flex; }
}
@media print {
	.nv-sectnav, .nv-sectnav-scrim, .nv-sectnav-sheet { display: none !important; }
}

/* ---------------------------------------------------------------
   'Unread only' archive filter — toggle appended to the sort row;
   filters listing cards against the visited store (leg 41).
   --------------------------------------------------------------- */
button.nv-unread {
	display: inline-flex;
	align-items: center;
	gap: 7px;
	margin-left: auto;
	padding: 5px 12px;
	border: 1px solid rgba(8, 145, 178, .3);
	border-radius: 999px;
	background: #fff;
	color: #0891b2;
	font: 700 .76rem/1 system-ui, sans-serif;
	cursor: pointer;
	transition: background .15s, color .15s;
}
button.nv-unread:hover {
	background: rgba(8, 145, 178, .07);
}
button.nv-unread .nv-unread-dot {
	width: 8px;
	height: 8px;
	border-radius: 50%;
	background: rgba(8, 145, 178, .35);
	transition: background .15s;
}
button.nv-unread.nv-sort-current {
	background: #0891b2;
	border-color: #0891b2;
	color: #fff;
}
button.nv-unread.nv-sort-current .nv-unread-dot {
	background: #fff;
}
p.nv-unread-empty {
	margin: 8px 0 14px;
	padding: 10px 14px;
	border: 1px dashed rgba(8, 145, 178, .35);
	border-radius: 10px;
	background: rgba(8, 145, 178, .05);
	color: #0891b2;
	font: 600 .82rem/1.4 system-ui, sans-serif;
}
@media print {
	button.nv-unread { display: none !important; }
}

/* ---------------------------------------------------------------
   'Continue reading' strip — persistent cross-page resume banner on
   listing surfaces (leg 42). Accent-rail card above the post list.
   --------------------------------------------------------------- */
.nv-continue {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	gap: 6px 14px;
	margin: 0 0 18px;
	padding: 12px 16px;
	border: 1px solid rgba(8, 145, 178, .25);
	border-left: 4px solid #0891b2;
	border-radius: 10px;
	background: rgba(8, 145, 178, .05);
}
.nv-continue-k {
	flex: 0 0 100%;
	font: 700 .68rem/1 system-ui, sans-serif;
	text-transform: uppercase;
	letter-spacing: .1em;
	color: #0891b2;
}
.nv-continue-t {
	flex: 1 1 auto;
	min-width: 0;
	font: 700 .95rem/1.35 system-ui, sans-serif;
	color: #111827;
	text-decoration: none;
}
.nv-continue-t:hover {
	color: #0891b2;
	text-decoration: underline;
}
.nv-continue-p {
	flex: 0 0 auto;
	font: 600 .78rem/1 system-ui, sans-serif;
	color: #6b7280;
}
.nv-continue-x {
	flex: 0 0 auto;
	border: none;
	background: none;
	padding: 2px 6px;
	font-size: 1.25rem;
	line-height: 1;
	color: #9ca3af;
	cursor: pointer;
}
.nv-continue-x:hover {
	color: #111827;
}
@media print {
	.nv-continue { display: none !important; }
}

/* ---------------------------------------------------------------
   'Up next' slide-in card — bottom-right card surfacing the first
   related post near article end (leg 43). Accent-rail, rise-in.
   --------------------------------------------------------------- */
.nv-nextread {
	position: fixed;
	right: 18px;
	bottom: 78px;
	z-index: 8000;
	max-width: 320px;
	padding: 12px 34px 12px 14px;
	border: 1px solid rgba(8, 145, 178, .25);
	border-left: 4px solid #0891b2;
	border-radius: 10px;
	background: #fff;
	box-shadow: 0 12px 32px rgba(17, 24, 39, .18);
	opacity: 0;
	transform: translateY(18px);
	pointer-events: none;
	transition: opacity .28s ease, transform .28s ease;
}
.nv-nextread.nv-nextread-on {
	opacity: 1;
	transform: none;
	pointer-events: auto;
}
.nv-nextread-k {
	display: block;
	margin-bottom: 4px;
	font: 700 .66rem/1 system-ui, sans-serif;
	text-transform: uppercase;
	letter-spacing: .1em;
	color: #0891b2;
}
.nv-nextread-t {
	display: block;
	font: 700 .92rem/1.35 system-ui, sans-serif;
	color: #111827;
	text-decoration: none;
}
.nv-nextread-t:hover {
	color: #0891b2;
	text-decoration: underline;
}
.nv-nextread-x {
	position: absolute;
	top: 6px;
	right: 8px;
	border: none;
	background: none;
	padding: 2px 6px;
	font-size: 1.25rem;
	line-height: 1;
	color: #9ca3af;
	cursor: pointer;
}
.nv-nextread-x:hover {
	color: #111827;
}
@media (max-width: 640px) {
	.nv-nextread {
		left: 18px;
		max-width: none;
	}
}
@media print {
	.nv-nextread { display: none !important; }
}

/* 'Minutes left' progress chip (leg 44) */
.nv-progchip {
	position: fixed; left: 18px; bottom: 70px; z-index: 7990;
	display: flex; align-items: center; gap: 10px;
	padding: 8px 14px; border-radius: 999px;
	background: #ffffff; border: 1px solid #e2e8f0;
	box-shadow: 0 6px 18px rgba(2, 6, 23, .10);
	opacity: 0; transform: translateY(8px); pointer-events: none;
	transition: opacity .25s ease, transform .25s ease;
}
.nv-progchip-on { opacity: 1; transform: none; }
.nv-progchip-rail { width: 56px; height: 4px; border-radius: 2px; background: #e2e8f0; overflow: hidden; }
.nv-progchip-fill { display: block; height: 100%; width: 0; background: #0891b2; border-radius: 2px; transition: width .2s ease; }
.nv-progchip-t { font-size: 12.5px; font-weight: 600; color: #475569; white-space: nowrap; }
@media (max-width:767px){.nv-progchip{display:none!important}}
@media print { .nv-progchip { display: none !important; } }

/* Find-in-article tool (leg 45) */
.nv-find {
	margin-left: auto; padding: 4px 10px; border-radius: 999px;
	border: 1px solid #e2e8f0; background: #f8fafc; color: #475569;
	font-size: 12px; font-weight: 600; cursor: pointer;
	display: inline-flex; align-items: center; gap: 6px;
}
.nv-find:hover { border-color: #0891b2; color: #0891b2; }
.nv-find kbd {
	font: 600 10px/1 ui-monospace, monospace; color: #64748b;
	border: 1px solid #cbd5e1; border-bottom-width: 2px; border-radius: 4px;
	padding: 2px 5px; background: #fff;
}
.nv-findbar {
	position: fixed; top: 12vh; left: 50%; z-index: 7998;
	display: flex; align-items: center; gap: 8px;
	padding: 8px 10px; border-radius: 12px; width: min(430px, 92vw);
	background: #ffffff; border: 1px solid #e2e8f0;
	box-shadow: 0 12px 32px rgba(2, 6, 23, .16);
	opacity: 0; transform: translate(-50%, -8px); pointer-events: none;
	transition: opacity .2s ease, transform .2s ease;
}
.nv-findbar-on { opacity: 1; transform: translate(-50%, 0); pointer-events: auto; }
.nv-findbar-in {
	flex: 1; min-width: 0; border: 0; outline: none; font-size: 14px;
	padding: 6px 8px; border-radius: 8px; background: #f1f5f9; color: #0f172a;
}
.nv-findbar-n { font-size: 12px; font-weight: 700; color: #64748b; min-width: 34px; text-align: center; font-variant-numeric: tabular-nums; }
.nv-findbar button, .nv-findbar-up, .nv-findbar-dn, .nv-findbar-x {
	border: 1px solid #e2e8f0; background: #fff; color: #475569;
	width: 28px; height: 28px; border-radius: 8px; cursor: pointer;
	font-size: 13px; line-height: 1; display: inline-flex; align-items: center; justify-content: center;
}
.nv-findbar button:hover { border-color: #0891b2; color: #0891b2; }
mark.nv-findhit { background: rgba(8, 145, 178, .22); color: inherit; padding: 0 1px; border-radius: 2px; }
mark.nv-findhit-cur { background: #0891b2; color: #fff; }
@media print { .nv-find, .nv-findbar { display: none !important; } }

/* Relative-time stamps (leg 46) */
.nv-rel { font-size: .85em; color: #94a3b8; margin-left: 4px; white-space: nowrap; }
@media print { .nv-rel { display: none !important; } }

/* Sibling-topic chips on articles (leg 47) */
.nv-morecats { display: flex; flex-wrap: wrap; align-items: center; gap: 8px; margin-top: 10px; }
.nv-morecats-label { font-size: 11px; font-weight: 700; letter-spacing: .08em; text-transform: uppercase; color: #64748b; margin-right: 2px; }
.nv-morecats-chip { display: inline-flex; padding: .22rem .72rem; border: 1px solid #e2e8f0; border-radius: 999px; background: #fff; color: #475569; font-size: .78rem; font-weight: 600; text-decoration: none; transition: border-color .15s, color .15s; }
.nv-morecats-chip:hover { border-color: rgba(8,145,178,.45); color: #0891b2; }
@media print { .nv-morecats { display: none !important; } }

/* Copy section link (leg 48) */
.entry-content .nv-anchor { position: relative; }
.entry-content .nv-anchor-copied { opacity: 1; color: #0891b2; }
.entry-content .nv-anchor-copied::after { content: attr(data-label); position: absolute; left: 50%; bottom: 140%; transform: translateX(-50%); background: #0f172a; color: #fff; font-size: 10px; font-weight: 600; padding: 2px 8px; border-radius: 5px; white-space: nowrap; }
@media print { .entry-content .nv-anchor-copied::after { display: none; } }

/* Sticky share rail (leg 50) */
.nv-sharerail { position: fixed; left: 14px; top: 50%; transform: translateY(-50%); z-index: 7900; display: flex; flex-direction: column; gap: 8px; opacity: 0; animation: nv-sharerail-in .4s ease .6s forwards; }
@keyframes nv-sharerail-in { to { opacity: 1; } }
.nv-sharerail-b { display: flex; align-items: center; justify-content: center; width: 36px; height: 36px; border-radius: 50%; background: #fff; border: 1px solid #e2e8f0; color: #64748b; cursor: pointer; transition: color .15s, border-color .15s, box-shadow .15s; box-shadow: 0 1px 3px rgba(15,23,42,.06); padding: 0; }
.nv-sharerail-b:hover { color: #0891b2; border-color: rgba(8,145,178,.45); box-shadow: 0 4px 10px rgba(15,23,42,.12); }
.nv-sharerail-copy { position: relative; }
.nv-sharerail-copy.nv-sharerail-on { color: #fff; background: #0891b2; border-color: #0891b2; }
.nv-sharerail-copy.nv-sharerail-on::after { content: attr(data-label); position: absolute; left: 46px; top: 50%; transform: translateY(-50%); background: #0f172a; color: #fff; font-size: 10px; font-weight: 600; padding: 3px 8px; border-radius: 5px; white-space: nowrap; }
@media (max-width: 1359px) { .nv-sharerail { display: none; } }
@media print { .nv-sharerail { display: none !important; } }

/* Date-range filter row under the sort row (leg 51) */
.nv-datefilter{display:flex;flex-wrap:wrap;align-items:center;gap:8px;margin:-6px 0 14px}
@media print{.nv-datefilter{display:none}}

/* Search type facets above the sort row (leg 52) */
.nv-searchtabs{display:flex;flex-wrap:wrap;align-items:center;gap:8px;margin:0 0 10px}
@media print{.nv-searchtabs{display:none}}

/* A–Z index surface at /az/ (leg 53) */
.nv-az-head{margin:28px 0 10px}
.nv-az-title{margin:0 0 4px;font-size:1.5rem}
.nv-az-count{color:#64748b;font-size:.85rem;margin:0 0 14px}
.nv-az-jump{display:flex;flex-wrap:wrap;gap:6px}
.nv-az-letter{min-width:30px;text-align:center;padding:.28rem .5rem;border:1px solid #e2e8f0;border-radius:8px;background:#fff;color:#475569;font-weight:600;font-size:.8rem;text-decoration:none}
.nv-az-letter:hover{border-color:#0891b2;color:#0891b2}
.nv-az-group{margin:22px 0 8px}
.nv-az-group-head{font-size:.95rem;letter-spacing:.08em;text-transform:uppercase;color:#0891b2;border-bottom:2px solid rgba(8,145,178,.35);padding-bottom:4px;margin:0 0 8px}
.nv-az-list{list-style:none;margin:0;padding:0;columns:2;column-gap:28px}
.nv-az-list li{break-inside:avoid;display:flex;justify-content:space-between;align-items:baseline;gap:10px;padding:4px 0;border-bottom:1px dashed #eef2f7}
.nv-az-list a{color:#1e293b;text-decoration:none;font-size:.92rem}
.nv-az-list a:hover{color:#0891b2}
.nv-az-type{font-size:.68rem;font-weight:700;letter-spacing:.06em;text-transform:uppercase;color:#94a3b8;white-space:nowrap}
@media (max-width:700px){.nv-az-list{columns:1}}
@media print{.nv-az-jump{display:none}}

/* Jump-to-page control in archive pagination (leg 54) */
.nv-pagejump{display:inline-flex;align-items:center;gap:6px;margin-left:8px}
.nv-pagejump input{width:64px;padding:.3rem .5rem;border:1px solid #e2e8f0;border-radius:8px;background:#fff;color:#475569;font-size:.8rem;font-weight:600}
.nv-pagejump input:focus{outline:2px solid rgba(8,145,178,.4);border-color:#0891b2}
.nv-pagejump button{padding:.3rem .7rem;border:1px solid #e2e8f0;border-radius:8px;background:#fff;color:#475569;font-size:.8rem;font-weight:700;cursor:pointer}
.nv-pagejump button:hover{border-color:#0891b2;color:#0891b2}
@media print{.nv-pagejump{display:none}}


/* Markdown export chip (leg 55) */
.nv-md{margin-left:2px}

/* Reader highlighter (leg 56) */
mark.nv-hl{background:rgba(8,145,178,.22);color:inherit;padding:0 1px;border-radius:3px;cursor:pointer;border-bottom:1px dashed rgba(8,145,178,.5)}
mark.nv-hl:hover{background:rgba(8,145,178,.35)}
.nv-hltip{padding:.32rem .7rem;border:none;border-radius:999px;background:#0891b2;color:#fff;font-size:.72rem;font-weight:700;letter-spacing:.02em;cursor:pointer;box-shadow:0 4px 14px rgba(8,145,178,.4)}
.nv-hltip:hover{filter:brightness(1.08)}
@media print{mark.nv-hl{background:none;border-bottom:none}}

/* In-topic prev/next chips (leg 57) */
.nv-intopic{display:flex;flex-wrap:wrap;align-items:center;gap:8px;margin:10px 0 0}
.nv-intopic-label{font-size:.68rem;font-weight:800;letter-spacing:.12em;text-transform:uppercase;color:#94a3b8;margin-right:2px}
.nv-intopic-a{display:inline-flex;align-items:center;gap:6px;max-width:44%;padding:.4rem .8rem;border:1px solid #e2e8f0;border-radius:999px;background:#fff;color:#475569;font-size:.8rem;font-weight:600;text-decoration:none;line-height:1.3}
.nv-intopic-a:hover{border-color:#0891b2;color:#0891b2}
.nv-intopic-t{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.nv-intopic-dir{font-weight:800}
.nv-intopic-next{margin-left:auto}
@media(max-width:640px){.nv-intopic-a{max-width:100%}}
@media print{.nv-intopic{display:none}}

/* Archive read-coverage chip (leg 58) */
.nv-coverage{display:inline-flex;align-items:center;gap:.45rem;margin-left:auto;padding:.32rem .75rem;border:1px solid #e2e8f0;border-radius:999px;background:#f8fafc;color:#475569;font-size:.72rem;font-weight:700;letter-spacing:.02em;white-space:nowrap}
.nv-coverage-bar{display:inline-block;width:34px;height:5px;border-radius:999px;background:#e2e8f0;overflow:hidden;vertical-align:1px}
.nv-coverage-bar i{display:block;height:100%;background:#0891b2;border-radius:999px}
@media print{.nv-coverage{display:none}}

/* Sticky reading bar (leg 59) */
.nv-readbar{position:fixed;top:0;left:0;right:0;z-index:90;display:flex;align-items:center;gap:14px;padding:.55rem 1.1rem;background:rgba(255,255,255,.96);backdrop-filter:blur(6px);border-bottom:1px solid #e2e8f0;box-shadow:0 6px 18px rgba(15,23,42,.06);transform:translateY(-110%);transition:transform .25s ease}
.nv-readbar.on{transform:translateY(0)}
.nv-readbar-t{flex:1;min-width:0;font-size:.85rem;font-weight:800;color:#0f172a;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.nv-readbar-track{flex:0 1 180px;height:4px;border-radius:999px;background:#e2e8f0;overflow:hidden}
.nv-readbar-fill{display:block;height:100%;background:#0891b2;border-radius:999px}
.nv-readbar-pct{font-size:.72rem;font-weight:800;color:#0891b2;font-variant-numeric:tabular-nums}
@media(max-width:640px){.nv-readbar-track{display:none}}
@media print{.nv-readbar{display:none}}

/* Surprise-me random-read chip (leg 61) */
.nv-random{border-style:dashed}
@media print{.nv-random{display:none}}

/* Filter-list input in the archive sort row (leg 62) */
.nv-listfilter{display:inline-flex;align-items:center;gap:.45rem}
.nv-listfilter-in{padding:.35rem .8rem;border:1px solid #e2e8f0;border-radius:999px;font-size:.75rem;font-weight:600;color:#334155;background:#fff;min-width:8.5rem;outline:none}
.nv-listfilter-in:focus{border-color:rgba(8,145,178,.55);box-shadow:0 0 0 3px rgba(8,145,178,.12)}
.nv-listfilter-n{font-size:.68rem;font-weight:700;color:#94a3b8;font-variant-numeric:tabular-nums;white-space:nowrap}
.nv-lf-hide{display:none !important}
@media print{.nv-listfilter{display:none}}

/* nv-timeline — month-grouped archive view */
.nv-tlv { cursor: pointer; }
ul.nv-tl-on { grid-template-columns: 1fr !important; gap: 1.1rem !important; }
.nv-tl-wrap { display: block; grid-column: 1 / -1; }
.nv-tl-group { display: grid; gap: 1rem; grid-template-columns: repeat(3, minmax(0, 1fr)); padding-bottom: 1.2rem; margin-bottom: 1.2rem; border-bottom: 1px solid rgba(15, 23, 42, 0.08); position: relative; }
.nv-tl-group::before { content: ""; position: absolute; left: 0; top: 0.4rem; bottom: 0.4rem; width: 3px; border-radius: 3px; background: rgba(8, 145, 178, 0.55); }
.nv-tl-month { grid-column: 1 / -1; margin: 0 0 0.2rem; padding: 0.28rem 0.9rem 0.28rem 1rem; font-size: 0.72rem; font-weight: 800; letter-spacing: 0.1em; text-transform: uppercase; color: #0891b2; }
@media (max-width: 980px) { .nv-tl-group { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
@media (max-width: 600px) { .nv-tl-group { grid-template-columns: 1fr; } }
@media print { .nv-tlv { display: none; } }

/* nv-peek — hover preview popover on archive cards */
ul.kadence-posts-list > li, .nv-grid > li { position: relative; }
.nv-peek { position: absolute; z-index: 40; left: 1rem; right: 1rem; top: calc(100% - 0.5rem); background: #fff; border: 1px solid rgba(15, 23, 42, 0.1); border-top: 3px solid #0891b2; border-radius: 10px; box-shadow: 0 14px 36px -12px rgba(15, 23, 42, 0.35); padding: 0.8rem 0.95rem; }
.nv-peek-t { display: block; font-size: 0.85rem; line-height: 1.35; color: #0f172a; margin-bottom: 0.35rem; }
.nv-peek-e { margin: 0 0 0.45rem; font-size: 0.78rem; line-height: 1.5; color: #475569; display: -webkit-box; -webkit-line-clamp: 4; -webkit-box-orient: vertical; overflow: hidden; }
.nv-peek-l { font-size: 0.75rem; color: #94a3b8; }
.nv-peek-a { font-size: 0.75rem; font-weight: 700; color: #0891b2; text-decoration: none; }
.nv-peek-a:hover { text-decoration: underline; }
@media (max-width: 600px) { .nv-peek { display: none; } }

/* nv-stick — sticky archive toolbar */
.nv-sort.nv-stick { position: sticky; top: var(--nv-stick-top, 90px); z-index: 26; background: #fff; padding: 0.55rem 0.6rem; margin-bottom: 0.8rem; border-radius: 12px; transition: box-shadow 0.18s ease; }
.nv-sort.nv-stick.nv-stuck { box-shadow: 0 12px 26px -14px rgba(15, 23, 42, 0.5); }
.nv-dark-on .nv-sort.nv-stick { background: #0e1626; }
@media print { .nv-sort.nv-stick { position: static; } }

/* nv-azview — alphabetical index view for archives */
.nv-azv { cursor: pointer; }
.nv-az-wrap { display: block; grid-column: 1 / -1; background: #fff; border: 1px solid rgba(15, 23, 42, 0.08); border-radius: 12px; padding: 1.1rem 1.3rem; }
.nv-az-group { margin-bottom: 1.15rem; }
.nv-az-group:last-child { margin-bottom: 0; }
.nv-az-letter { font-size: 0.72rem; font-weight: 800; letter-spacing: 0.1em; text-transform: uppercase; color: var(--nv-accent, #0891b2); border-bottom: 1px solid rgba(15, 23, 42, 0.1); padding-bottom: 0.3rem; margin: 0 0 0.55rem; }
.nv-az-list { list-style: none; margin: 0; padding: 0; columns: 3; column-gap: 1.6rem; }
.nv-az-list li { break-inside: avoid; margin-bottom: 0.32rem; }
.nv-az-list a { font-size: 0.84rem; color: #0f172a; text-decoration: none; }
.nv-az-list a:hover { color: var(--nv-accent, #0891b2); text-decoration: underline; }
.nv-dark-on .nv-az-wrap { background: #111c30; border-color: rgba(148, 163, 184, 0.2); }
.nv-dark-on .nv-az-list a { color: #cbd5e1; }
@media (max-width: 980px) { .nv-az-list { columns: 2; } }
@media (max-width: 600px) { .nv-az-list { columns: 1; } }
@media print { .nv-azv { display: none; } }

/* nv-notes — per-article reader notes dock */
.nv-notes-n { display: inline-block; min-width: 1.1em; margin-left: 0.25rem; padding: 0 0.3rem; border-radius: 999px; background: var(--nv-accent, #0891b2); color: #fff; font-size: 0.68rem; font-weight: 700; }
.nv-notes-dock { position: fixed; right: 1.1rem; bottom: 1.1rem; z-index: 60; width: 300px; max-width: calc(100vw - 2.2rem); background: #fff; border: 1px solid rgba(15, 23, 42, 0.1); border-top: 3px solid var(--nv-accent, #0891b2); border-radius: 12px; box-shadow: 0 18px 44px -14px rgba(15, 23, 42, 0.4); padding: 0.85rem 0.95rem; display: none; }
.nv-notes-dock.is-open { display: block; }
.nv-notes-head { display: flex; justify-content: space-between; align-items: center; margin-bottom: 0.5rem; }
.nv-notes-head strong { font-size: 0.82rem; color: #0f172a; }
.nv-notes-x { border: 0; background: none; font-size: 1.1rem; line-height: 1; color: #94a3b8; cursor: pointer; }
.nv-notes-x:hover { color: #0f172a; }
.nv-notes-list { max-height: 170px; overflow-y: auto; margin-bottom: 0.55rem; }
.nv-notes-empty { font-size: 0.76rem; color: #94a3b8; margin: 0 0 0.4rem; }
.nv-notes-item { position: relative; padding: 0.5rem 1.2rem 0.5rem 0.6rem; margin-bottom: 0.4rem; background: rgba(15, 23, 42, 0.04); border-left: 3px solid var(--nv-accent, #0891b2); border-radius: 6px; }
.nv-notes-text { font-size: 0.8rem; color: #1e293b; margin: 0 0 0.15rem; white-space: pre-wrap; }
.nv-notes-ts { font-size: 0.66rem; color: #94a3b8; }
.nv-notes-rm { position: absolute; top: 0.3rem; right: 0.35rem; border: 0; background: none; color: #94a3b8; cursor: pointer; font-size: 0.95rem; line-height: 1; }
.nv-notes-rm:hover { color: #dc2626; }
.nv-notes-ta { width: 100%; box-sizing: border-box; font-size: 0.8rem; color: #0f172a; border: 1px solid rgba(15, 23, 42, 0.15); border-radius: 8px; padding: 0.45rem 0.55rem; resize: vertical; font-family: inherit; }
.nv-notes-ta:focus { outline: none; border-color: var(--nv-accent, #0891b2); box-shadow: 0 0 0 3px rgba(8, 145, 178, 0.15); }
.nv-notes-add { margin-top: 0.45rem; width: 100%; border: 0; border-radius: 8px; background: var(--nv-accent, #0891b2); color: #fff; font-size: 0.78rem; font-weight: 700; padding: 0.45rem 0; cursor: pointer; }
.nv-notes-add:hover { filter: brightness(1.07); }
.nv-dark-on .nv-notes-dock { background: #111c30; border-color: rgba(148, 163, 184, 0.25); }
.nv-dark-on .nv-notes-head strong { color: #e2e8f0; }
.nv-dark-on .nv-notes-item { background: rgba(148, 163, 184, 0.1); }
.nv-dark-on .nv-notes-text { color: #cbd5e1; }
.nv-dark-on .nv-notes-ta { background: #0e1626; color: #e2e8f0; border-color: rgba(148, 163, 184, 0.3); }
@media (max-width: 600px) { .nv-notes-dock { right: 0.6rem; bottom: 0.6rem; } }
@media print { .nv-notes, .nv-notes-dock { display: none !important; } }

/* =========================================================
   Labeled section rail (leg 69). On very wide screens the
   dot rail becomes an always-visible 'On this page' index —
   titles show without hovering; dots stay under 1600px.
   ========================================================= */
@media (min-width: 1600px) {
  .nv-rail {
    right: 1.4rem;
    padding: 0.8rem 0.9rem;
    background: #fff;
    border: 1px solid rgba(15, 23, 42, 0.08);
    border-radius: 14px;
    box-shadow: 0 10px 30px -14px rgba(15, 23, 42, 0.2);
    gap: 0.3rem;
  }
  .nv-rail::before {
    content: "On this page";
    font-size: 0.6rem;
    font-weight: 800;
    letter-spacing: 0.09em;
    text-transform: uppercase;
    color: var(--nv-accent);
    margin-bottom: 0.25rem;
  }
  .nv-rail a {
    flex-direction: row-reverse;
    justify-content: flex-end;
    font-size: 0.72rem;
    font-weight: 600;
    line-height: 1.3;
    color: rgba(15, 23, 42, 0.55);
  }
  .nv-rail a::after { width: 5px; height: 5px; }
  .nv-rail a:hover, .nv-rail a.nv-rail-active { font-size: 0.72rem; }
  .nv-dark-on .nv-rail { background: #0e1626; border-color: rgba(148, 163, 184, 0.15); }
  .nv-dark-on .nv-rail a { color: rgba(226, 232, 240, 0.6); }
} /* wide-rail */

/* 'Start at the beginning' chip (leg 121) */
a.nv-startbegin {
	display: inline-flex;
	flex-wrap: wrap;
	align-items: baseline;
	gap: 0.4em;
	margin: 0.9em 0 0;
	padding: 0.5em 1em;
	border: 1px solid var(--nv-line, #e2e8f0);
	border-left: 3px solid var(--nv-accent, #0891b2);
	border-radius: 10px;
	text-decoration: none;
	background: var(--nv-card, #fff);
	grid-column: 1 / -1;
}
a.nv-startbegin:hover { border-color: var(--nv-accent, #0891b2); }
.nv-startbegin-k { font-size: 0.66rem; font-weight: 700; letter-spacing: 0.08em; text-transform: uppercase; color: var(--nv-accent, #0891b2); }
.nv-startbegin-t { font-size: 0.92rem; font-weight: 600; color: inherit; }
@media print { a.nv-startbegin { display: none; } }

/* Topic-scoped search (leg 122) */
.nv-topicsearch {
	display: flex;
	align-items: center;
	gap: 0.5em;
	margin: 0.7em 0 0;
	padding: 0.35em 0.4em 0.35em 0.9em;
	border: 1px solid var(--nv-line, #e2e8f0);
	border-radius: 999px;
	background: var(--nv-card, #fff);
	max-width: 560px;
	grid-column: 1 / -1;
}
.nv-topicsearch-q {
	flex: 1;
	min-width: 0;
	border: 0;
	background: transparent;
	font: inherit;
	font-size: 0.9rem;
	color: inherit;
	outline: none;
}
.nv-topicsearch-btn {
	border: 0;
	border-radius: 999px;
	padding: 0.42em 1.1em;
	font-size: 0.72rem;
	font-weight: 700;
	letter-spacing: 0.06em;
	text-transform: uppercase;
	color: #fff;
	background: var(--nv-accent, #0891b2);
	cursor: pointer;
}
.nv-topicsearch-btn:hover { filter: brightness(1.08); }
@media print { .nv-topicsearch { display: none; } }

/* 'From the archive' daily pick (leg 123) */
.nv-dailypick {
	display: block;
	margin: 0 0 1.4em;
	padding: 1em 1.4em 1.1em;
	border: 1px solid var(--nv-line, #e2e8f0);
	border-left: 3px solid var(--nv-accent, #0891b2);
	border-radius: 12px;
	background: var(--nv-card, #fff);
	grid-column: 1 / -1;
}
.nv-dailypick-k {
	display: block;
	font-size: 0.66rem;
	font-weight: 700;
	letter-spacing: 0.1em;
	text-transform: uppercase;
	color: var(--nv-accent, #0891b2);
	margin-bottom: 0.35em;
}
.nv-dailypick-t { margin: 0; font-size: 1.3rem; line-height: 1.3; }
.nv-dailypick-t a { color: inherit; text-decoration: none; }
.nv-dailypick-t a:hover { color: var(--nv-accent, #0891b2); }
.nv-dailypick-c {
	display: inline-block;
	margin-top: 0.55em;
	font-size: 0.72rem;
	font-weight: 600;
	text-transform: uppercase;
	letter-spacing: 0.06em;
	color: var(--nv-muted, #64748b);
	text-decoration: none;
}
.nv-dailypick-c:hover { color: var(--nv-accent, #0891b2); }

.nv-qshare-md {
	font-size: .66rem;
	font-weight: 700;
	color: #e5e7eb;
	background: #111827;
	border: 0;
	border-left: 1px solid rgba( 255,255,255,.14 );
	padding: .45em .8em;
	cursor: pointer;
	white-space: nowrap;
}
.nv-qshare-md:hover { color: var( --nv-accent, #6366f1 ); }

/* ---------------------------------------------------------------
   Rows view (?density=rows, leg 198) — a third archive density:
   single-column one-line scan rows (title + meta), no excerpts or
   imagery, for fastest registry scanning.
   ============================================================ */
body.nv-rows.archive ul.content-wrap.kadence-posts-list,
body.nv-rows.search ul.content-wrap.kadence-posts-list,
body.nv-rows.blog ul.content-wrap.kadence-posts-list {
	grid-template-columns: 1fr;
	gap: 0;
}
body.nv-rows li.entry-list-item {
	border: none;
	border-radius: 0;
	box-shadow: none;
	border-bottom: 1px solid rgba(0,0,0,.08);
}
body.nv-rows article.loop-entry {
	display: flex;
	align-items: baseline;
	gap: .9rem;
	padding: .5rem .4rem;
	margin: 0;
	box-shadow: none;
}
body.nv-rows article.loop-entry .entry-title {
	font-size: .95rem;
	line-height: 1.35;
	margin: 0;
}
body.nv-rows article.loop-entry .entry-summary,
body.nv-rows article.loop-entry .post-more-link,
body.nv-rows article.loop-entry .post-thumbnail,
body.nv-rows article.loop-entry figure,
body.nv-rows article.loop-entry .entry-content {
	display: none;
}
body.nv-rows article.loop-entry .entry-meta {
	font-size: .7rem;
	margin-left: auto;
	white-space: nowrap;
}
body.nv-rows article.loop-entry .category-links {
	margin-left: auto;
}
body.nv-rows article.loop-entry .category-links a {
	font-size: .62rem;
	padding: .1rem .45rem;
}

/* Rows internal layout — header flattens into the flex row, footer
   and decorative blocks hide; title ellipsizes to one line. */
body.nv-rows article.loop-entry .entry-content-wrap {
	display: flex;
	align-items: center;
	gap: .8rem;
	width: 100%;
	min-width: 0;
}
body.nv-rows article.loop-entry .entry-header { display: contents; }
body.nv-rows article.loop-entry .entry-footer { display: none; }
body.nv-rows article.loop-entry .entry-title {
	flex: 1 1 auto;
	min-width: 0;
	overflow: hidden;
	text-overflow: ellipsis;
	white-space: nowrap;
}
body.nv-rows article.loop-entry .entry-taxonomies { margin: 0; }
body.nv-rows article.loop-entry .entry-meta { margin-left: auto; }

/* Rows — collapse Kadence's generous card padding. */
body.nv-rows article.loop-entry .entry-content-wrap { padding: .4rem .8rem; }
body.nv-rows article.loop-entry { padding: 0; }
body.nv-rows li.entry-list-item.nv-lead-card,
body.nv-rows li.entry-list-item { min-height: 0; }
