/*
Theme Name: Nouvelle Vague
Theme URI: https://paristourism.org/
Author: Paristourism Desk
Author URI: https://paristourism.org/
Description: An editorial WordPress theme in the Art-Nouveau métro register — cream paper, deep green ink, brass accents, arched image frames and hairline rules. Built for independent city-guide publishing: reading time, derived tables of contents, ordinal archive rows and a house callout block, with every label editable from the Customizer.
Version: 1.0.0
Requires at least: 6.4
Tested up to: 6.8
Requires PHP: 7.4
License: GNU General Public License v2 or later
License URI: https://www.gnu.org/licenses/gpl-2.0.html
Text Domain: nouvelle-vague
Tags: blog, news, one-column, two-columns, custom-colors, custom-logo, custom-menu, editor-style, featured-images, block-styles, wide-blocks, translation-ready, accessibility-ready, threaded-comments, full-width-template
*/

/* ==========================================================================
   1. Fonts
   ========================================================================== */

@font-face {
	font-family: 'Italiana';
	font-style: normal;
	font-weight: 400;
	font-display: swap;
	src: url('assets/fonts/italiana-400-latin.woff2') format('woff2');
	unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}

@font-face {
	font-family: 'Jost';
	font-style: normal;
	font-weight: 100 900;
	font-display: swap;
	src: url('assets/fonts/jost-var-latin.woff2') format('woff2');
	unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}

@font-face {
	font-family: 'Jost';
	font-style: normal;
	font-weight: 100 900;
	font-display: swap;
	src: url('assets/fonts/jost-var-latin-ext.woff2') format('woff2');
	unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
}

/* ==========================================================================
   2. Tokens
   --------------------------------------------------------------------------
   The identity colours are used two ways. Brass and meta stay exactly as the
   design specifies wherever they are *shapes* — rules, borders, ornaments and
   display type. For small tracked text they fall under WCAG AA on cream
   (brass 3.64:1, meta 2.77:1), so the deeper --nv-brass-text / --nv-meta-text
   variants carry the words. Same hue, same feel, legible.
   ========================================================================== */

:root {
	--nv-ink: #17372b;
	--nv-cream: #f3eee1;
	--nv-brass: #8a7a4e;
	--nv-brass-text: #736641;
	--nv-brass-on-ink: #ae9d6b;
	--nv-panel: #ece5d2;
	--nv-text-soft: #3d5245;
	--nv-text-body: #22392e;
	--nv-hairline: #d8cfb8;
	--nv-hairline-strong: #cfc6ae;
	--nv-chip-border: #93875d;
	--nv-meta: #9a8f74;
	--nv-meta-text: #6f6650;
	--nv-placeholder: #e6dec9;
	--nv-placeholder-alt: #ded4bb;

	--nv-footer-bg: var(--nv-ink);
	--nv-footer-secondary: #b9cbbf;
	--nv-footer-link: #d7e2da;
	--nv-footer-hairline: #2c4f3f;
	--nv-footer-meta: #8fa79a;

	--nv-display: 'Italiana', 'Cormorant Garamond', Georgia, 'Times New Roman', serif;
	--nv-sans: 'Jost', 'Futura', 'Century Gothic', 'Avenir Next', system-ui, -apple-system, 'Segoe UI', sans-serif;
	--nv-mono: 'IBM Plex Mono', ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;

	--nv-gutter: 56px;
	--nv-content: 680px;
	--nv-header-width: 760px;
	--nv-hero-width: 900px;
	--nv-wide: 1168px;

	--nv-arch-hero: 230px;
	--nv-arch-feature: 160px;
	--nv-arch-card: 120px;

	--nv-section-y: 64px;
	--nv-grid-gap: 36px;

	--nv-ease: 150ms ease;
}

@media (max-width: 1023px) {
	:root {
		--nv-gutter: 32px;
		--nv-section-y: 48px;
		--nv-grid-gap: 32px;
	}
}

@media (max-width: 639px) {
	:root {
		--nv-gutter: 24px;
		--nv-section-y: 40px;
		--nv-arch-hero: 140px;
		--nv-arch-feature: 110px;
		--nv-arch-card: 96px;
	}
}

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

/* ==========================================================================
   3. Reset & base
   ========================================================================== */

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

html {
	-webkit-text-size-adjust: 100%;
	scroll-behavior: smooth;
	scroll-padding-top: 96px;
}

body {
	margin: 0;
	background: var(--nv-cream);
	color: var(--nv-text-body);
	font-family: var(--nv-sans);
	font-size: 17px;
	font-weight: 300;
	line-height: 1.8;
	-webkit-font-smoothing: antialiased;
	-moz-osx-font-smoothing: grayscale;
	overflow-wrap: break-word;
}

img,
svg,
video,
iframe,
embed,
object {
	max-width: 100%;
	height: auto;
}

img {
	display: block;
}

figure {
	margin: 0;
}

a {
	color: inherit;
	text-decoration: none;
	transition: opacity var(--nv-ease), color var(--nv-ease), background-color var(--nv-ease);
}

a:hover {
	opacity: 0.7;
}

:where(a, button, input, select, textarea, summary, [tabindex]):focus-visible {
	outline: 2px solid var(--nv-brass-text);
	outline-offset: 3px;
	opacity: 1;
}

h1,
h2,
h3,
h4,
h5,
h6 {
	font-family: var(--nv-display);
	font-weight: 400;
	color: var(--nv-ink);
	letter-spacing: 0.01em;
	overflow-wrap: break-word;
	hyphens: auto;
}

p {
	margin: 0 0 1.2em;
}

hr,
.wp-block-separator {
	border: 0;
	border-top: 1px solid var(--nv-hairline);
	margin: 40px 0;
	height: 0;
	opacity: 1;
}

::selection {
	background: var(--nv-ink);
	color: var(--nv-cream);
}

/* ==========================================================================
   4. Shared utilities
   ========================================================================== */

.nv-shell {
	width: 100%;
	max-width: calc(var(--nv-wide) + (var(--nv-gutter) * 2));
	margin-inline: auto;
	padding-inline: var(--nv-gutter);
}

.nv-eyebrow {
	display: block;
	font-family: var(--nv-sans);
	font-size: 11px;
	font-weight: 400;
	line-height: 1.6;
	letter-spacing: 0.28em;
	text-transform: uppercase;
	color: var(--nv-brass-text);
	margin: 0;
}

.nv-eyebrow--wide {
	font-size: 12px;
	letter-spacing: 0.3em;
}

.nv-meta {
	font-size: 11px;
	font-weight: 400;
	letter-spacing: 0.14em;
	text-transform: uppercase;
	color: var(--nv-meta-text);
	line-height: 1.6;
}

.nv-link-arrow {
	font-size: 12px;
	font-weight: 400;
	letter-spacing: 0.22em;
	text-transform: uppercase;
	color: var(--nv-brass-text);
	white-space: nowrap;
}

.nv-link-underline {
	font-size: 12.5px;
	font-weight: 500;
	letter-spacing: 0.18em;
	text-transform: uppercase;
	color: var(--nv-brass-text);
	border-bottom: 1px solid var(--nv-brass);
	padding-bottom: 3px;
}

.nv-button,
.wp-block-button.is-style-nv-pill > .wp-block-button__link,
.wp-block-search .wp-block-search__button {
	display: inline-block;
	border: 1.5px solid var(--nv-ink);
	border-radius: 999px;
	padding: 14px 32px;
	font-family: var(--nv-sans);
	font-size: 12.5px;
	font-weight: 500;
	line-height: 1;
	letter-spacing: 0.18em;
	text-transform: uppercase;
	color: var(--nv-ink);
	background: transparent;
	cursor: pointer;
	transition: background-color var(--nv-ease), color var(--nv-ease);
}

.nv-button:hover,
.nv-button:focus-visible,
.wp-block-button.is-style-nv-pill > .wp-block-button__link:hover,
.wp-block-search .wp-block-search__button:hover {
	background: var(--nv-ink);
	color: var(--nv-cream);
	opacity: 1;
}

.nv-button--filled {
	background: var(--nv-ink);
	color: var(--nv-cream);
}

.nv-button--filled:hover,
.nv-button--filled:focus-visible {
	background: transparent;
	color: var(--nv-ink);
}

.screen-reader-text {
	border: 0;
	clip-path: inset(50%);
	height: 1px;
	margin: -1px;
	overflow: hidden;
	padding: 0;
	position: absolute;
	white-space: nowrap;
	width: 1px;
}

/* Focus must undo every part of the hiding, clip-path included. */
.skip-link:focus,
.screen-reader-text:focus {
	clip-path: none;
	position: fixed;
	top: 12px;
	left: 12px;
	z-index: 1000;
	width: auto;
	height: auto;
	margin: 0;
	padding: 14px 24px;
	background: var(--nv-ink);
	color: var(--nv-cream);
	font-size: 12.5px;
	font-weight: 500;
	letter-spacing: 0.18em;
	text-transform: uppercase;
	text-decoration: none;
	border-radius: 999px;
	white-space: nowrap;
}

/* --- Arch image frame: the signature motif ------------------------------- */

.nv-arch {
	border: 1.5px solid var(--nv-ink);
	border-radius: var(--nv-arch, 120px) var(--nv-arch, 120px) 0 0;
	padding: 10px;
	overflow: hidden;
	background: transparent;
}

.nv-arch > * {
	display: block;
	width: 100%;
	height: 100%;
	border-radius: calc(var(--nv-arch, 120px) - 10px) calc(var(--nv-arch, 120px) - 10px) 0 0;
	object-fit: cover;
	background: repeating-linear-gradient(45deg, var(--nv-placeholder), var(--nv-placeholder) 12px, var(--nv-placeholder-alt) 12px, var(--nv-placeholder-alt) 24px);
}

.nv-arch--card {
	--nv-arch: var(--nv-arch-card);
	padding: 0;
	border: 0;
}

.nv-arch--card > * {
	border-radius: var(--nv-arch-card) var(--nv-arch-card) 0 0;
}

.nv-arch--hero {
	--nv-arch: var(--nv-arch-hero);
}

.nv-arch--feature {
	--nv-arch: var(--nv-arch-feature);
	padding: 8px;
}

.nv-ratio {
	position: relative;
	display: block;
}

.nv-ratio > img,
.nv-ratio > .nv-ph {
	position: absolute;
	inset: 0;
	width: 100%;
	height: 100%;
	object-fit: cover;
}

.nv-ph {
	background: repeating-linear-gradient(45deg, var(--nv-placeholder), var(--nv-placeholder) 12px, var(--nv-placeholder-alt) 12px, var(--nv-placeholder-alt) 24px);
}

/* ==========================================================================
   5. Header
   ========================================================================== */

.nv-header {
	border-bottom: 1px solid var(--nv-hairline);
	background: var(--nv-cream);
}

.nv-header__inner {
	display: flex;
	justify-content: space-between;
	align-items: center;
	gap: 24px;
	padding-block: 22px;
}

.nv-brand {
	display: inline-flex;
	align-items: center;
	gap: 14px;
	flex-shrink: 0;
	color: var(--nv-ink);
}

.nv-brand__roundel {
	width: 44px;
	height: 44px;
	flex-shrink: 0;
	border: 2px solid currentColor;
	border-radius: 50%;
	display: flex;
	align-items: center;
	justify-content: center;
	font-family: var(--nv-display);
	font-size: 26px;
	line-height: 1;
	padding-top: 2px;
}

.nv-brand__text {
	display: flex;
	flex-direction: column;
	min-width: 0;
}

.nv-brand__name {
	font-family: var(--nv-display);
	font-size: 22px;
	line-height: 1.1;
	letter-spacing: 0.06em;
}

.nv-brand__tagline {
	font-size: 10px;
	font-weight: 400;
	line-height: 1.6;
	letter-spacing: 0.34em;
	text-transform: uppercase;
	color: var(--nv-brass-text);
}

.nv-brand__logo img {
	max-height: 52px;
	width: auto;
}

.nv-nav {
	display: flex;
	align-items: center;
	gap: 30px;
	min-width: 0;
}

.nv-nav__menu {
	display: flex;
	align-items: center;
	gap: 30px;
	margin: 0;
	padding: 0;
	list-style: none;
}

.nv-nav__menu li {
	position: relative;
}

.nv-nav__menu a {
	display: inline-block;
	font-size: 12.5px;
	font-weight: 500;
	line-height: 1.4;
	letter-spacing: 0.18em;
	text-transform: uppercase;
	color: var(--nv-ink);
	padding-bottom: 2px;
	border-bottom: 1px solid transparent;
}

.nv-nav__menu .current-menu-item > a,
.nv-nav__menu .current-menu-ancestor > a,
.nv-nav__menu .current_page_item > a,
.nv-nav__menu .current_page_ancestor > a,
.nv-nav__menu .nv-current > a {
	border-bottom-color: var(--nv-brass);
}

/*
 * Sub-menus keep the paper feel: no shadow, hairline border.
 *
 * Anchored to the right, not the left: the nav sits against the right edge of
 * the header, and a left-anchored panel pushes past the viewport at ~900px —
 * an absolutely positioned menu still widens the document while hidden.
 */
.nv-nav__menu .sub-menu {
	position: absolute;
	top: 100%;
	right: -18px;
	left: auto;
	z-index: 40;
	min-width: 220px;
	margin: 0;
	padding: 14px 18px;
	list-style: none;
	background: var(--nv-cream);
	border: 1px solid var(--nv-hairline-strong);
	display: flex;
	flex-direction: column;
	gap: 12px;
	opacity: 0;
	visibility: hidden;
	transform: translateY(-6px);
	transition: opacity var(--nv-ease), transform var(--nv-ease), visibility var(--nv-ease);
}

.nv-nav__menu li:hover > .sub-menu,
.nv-nav__menu li:focus-within > .sub-menu {
	opacity: 1;
	visibility: visible;
	transform: translateY(0);
}

.nv-nav__menu .sub-menu a {
	letter-spacing: 0.14em;
	font-size: 12px;
}

.nv-nav__search {
	display: inline-flex;
	align-items: center;
	gap: 8px;
	border-left: 1px solid var(--nv-hairline-strong);
	padding-left: 30px;
	font-size: 12.5px;
	font-weight: 500;
	letter-spacing: 0.18em;
	text-transform: uppercase;
	color: var(--nv-brass-text);
	background: none;
	border-top: 0;
	border-right: 0;
	border-bottom: 0;
	font-family: inherit;
	cursor: pointer;
}

.nv-nav-toggle {
	display: none;
	align-items: center;
	gap: 10px;
	background: none;
	border: 0;
	padding: 8px 0;
	font-family: var(--nv-sans);
	font-size: 12.5px;
	font-weight: 500;
	letter-spacing: 0.18em;
	text-transform: uppercase;
	color: var(--nv-ink);
	cursor: pointer;
}

.nv-nav-toggle__bars {
	display: inline-flex;
	flex-direction: column;
	gap: 5px;
	width: 22px;
}

.nv-nav-toggle__bars span {
	display: block;
	height: 1.5px;
	background: currentColor;
	transition: transform var(--nv-ease), opacity var(--nv-ease);
}

.nv-nav-toggle[aria-expanded='true'] .nv-nav-toggle__bars span:nth-child(1) {
	transform: translateY(6.5px) rotate(45deg);
}

.nv-nav-toggle[aria-expanded='true'] .nv-nav-toggle__bars span:nth-child(2) {
	opacity: 0;
}

.nv-nav-toggle[aria-expanded='true'] .nv-nav-toggle__bars span:nth-child(3) {
	transform: translateY(-6.5px) rotate(-45deg);
}

/* --- Search panel -------------------------------------------------------- */

.nv-searchpanel {
	display: none;
	border-bottom: 1px solid var(--nv-hairline);
	background: var(--nv-cream);
}

.nv-searchpanel.is-open {
	display: block;
}

.nv-searchpanel__inner {
	padding-block: 32px 36px;
	max-width: var(--nv-header-width);
	margin-inline: auto;
}

.nv-searchform {
	display: flex;
	align-items: center;
	gap: 16px;
	border-bottom: 1.5px solid var(--nv-ink);
	padding-bottom: 10px;
}

.nv-searchform__field {
	flex: 1 1 auto;
	min-width: 0;
	border: 0;
	background: transparent;
	font-family: var(--nv-display);
	font-size: 28px;
	line-height: 1.3;
	color: var(--nv-ink);
	padding: 4px 0;
}

.nv-searchform__field::placeholder {
	color: var(--nv-meta-text);
	opacity: 1;
}

.nv-searchform__field:focus {
	outline: none;
}

.nv-searchform:focus-within {
	border-bottom-color: var(--nv-brass);
}

.nv-searchform__submit {
	flex-shrink: 0;
}

/* ==========================================================================
   6. Hero (front page)
   ========================================================================== */

.nv-hero {
	display: grid;
	grid-template-columns: 1.1fr 0.9fr;
	gap: 64px;
	align-items: center;
	padding-block: 72px var(--nv-section-y);
}

.nv-hero--single-column {
	grid-template-columns: 1fr;
	max-width: var(--nv-header-width);
}

.nv-hero__text {
	display: flex;
	flex-direction: column;
	gap: 24px;
	min-width: 0;
}

.nv-hero__title {
	margin: 0;
	font-size: clamp(40px, 5.4vw, 68px);
	line-height: 1.05;
}

.nv-hero__deck {
	margin: 0;
	font-size: 17px;
	font-weight: 300;
	line-height: 1.7;
	max-width: 44ch;
	color: var(--nv-text-body);
}

.nv-hero__actions {
	display: flex;
	flex-wrap: wrap;
	gap: 20px 28px;
	align-items: center;
}

.nv-hero__media {
	min-width: 0;
}

.nv-hero__media .nv-arch {
	height: 440px;
}

/* ==========================================================================
   7. Section headings
   ========================================================================== */

.nv-sectionhead {
	display: flex;
	justify-content: space-between;
	align-items: baseline;
	gap: 24px;
	padding-bottom: 24px;
}

.nv-sectionhead__title {
	margin: 0;
	font-size: clamp(26px, 3vw, 34px);
	line-height: 1.15;
	min-width: 0;
}

/* ==========================================================================
   8. Card grid
   ========================================================================== */

.nv-grid {
	display: grid;
	grid-template-columns: repeat(3, minmax(0, 1fr));
	gap: var(--nv-grid-gap);
	padding-bottom: var(--nv-section-y);
}

.nv-grid--2 {
	grid-template-columns: repeat(2, minmax(0, 1fr));
}

.nv-card {
	display: flex;
	flex-direction: column;
	gap: 16px;
	border-top: 1px solid var(--nv-ink);
	padding-top: 20px;
	min-width: 0;
}

.nv-card__media {
	--nv-arch: var(--nv-arch-card);
	height: 190px;
}

.nv-card__media .nv-ph,
.nv-card__media img {
	height: 100%;
	width: 100%;
	object-fit: cover;
	border-radius: var(--nv-arch-card) var(--nv-arch-card) 0 0;
}

.nv-card__title {
	margin: 0;
	font-size: 26px;
	line-height: 1.2;
}

.nv-card__excerpt {
	margin: 0;
	font-size: 14px;
	font-weight: 300;
	line-height: 1.6;
	color: var(--nv-text-soft);
}

.nv-card__link::after {
	content: '';
	position: absolute;
	inset: 0;
}

.nv-card {
	position: relative;
}

.nv-card:hover .nv-card__title,
.nv-card:focus-within .nv-card__title {
	color: var(--nv-brass-text);
}

.nv-card a:hover {
	opacity: 1;
}

.nv-card--text-only {
	gap: 12px;
	padding-top: 16px;
}

.nv-card--text-only .nv-card__title {
	font-size: 24px;
	line-height: 1.25;
}

/* ==========================================================================
   9. Stats band
   ========================================================================== */

.nv-stats {
	border-top: 1px solid var(--nv-hairline);
	display: grid;
	grid-template-columns: repeat(4, minmax(0, 1fr));
	gap: 32px;
	padding-block: 40px;
}

.nv-stat {
	display: flex;
	flex-direction: column;
	gap: 8px;
	min-width: 0;
}

.nv-stat__number {
	font-family: var(--nv-display);
	font-size: 38px;
	line-height: 1;
	color: var(--nv-ink);
}

.nv-stat__label {
	font-size: 11px;
	font-weight: 400;
	line-height: 1.5;
	letter-spacing: 0.24em;
	text-transform: uppercase;
	color: var(--nv-brass-text);
}

/* ==========================================================================
   10. Article
   ========================================================================== */

.nv-article__header {
	max-width: var(--nv-header-width);
	margin-inline: auto;
	padding-top: 64px;
	display: flex;
	flex-direction: column;
	gap: 22px;
	text-align: center;
}

.nv-breadcrumb {
	font-size: 12px;
	font-weight: 400;
	letter-spacing: 0.14em;
	text-transform: uppercase;
	color: var(--nv-meta-text);
}

.nv-breadcrumb a {
	color: inherit;
}

.nv-breadcrumb .separator,
.nv-breadcrumb__sep {
	color: var(--nv-meta);
	padding-inline: 4px;
}

.nv-article__title {
	margin: 0;
	font-size: clamp(34px, 4.6vw, 56px);
	line-height: 1.08;
}

.nv-article__standfirst {
	margin: 0;
	font-size: 18px;
	font-weight: 300;
	line-height: 1.6;
	color: var(--nv-text-soft);
}

.nv-article__meta {
	display: flex;
	flex-wrap: wrap;
	justify-content: center;
	gap: 10px 22px;
	font-size: 11.5px;
	font-weight: 400;
	letter-spacing: 0.2em;
	text-transform: uppercase;
	color: var(--nv-brass-text);
}

.nv-article__meta .nv-dot {
	color: var(--nv-hairline-strong);
}

.nv-article__hero {
	max-width: var(--nv-hero-width);
	margin: 40px auto 0;
}

.nv-article__hero .nv-arch {
	height: 380px;
}

.nv-article__hero figcaption {
	margin-top: 12px;
	font-size: 12.5px;
	letter-spacing: 0.08em;
	color: var(--nv-meta-text);
	text-align: center;
}

/* --- Body ---------------------------------------------------------------- */

.nv-entry {
	max-width: var(--nv-content);
	margin-inline: auto;
	padding-block: 48px var(--nv-section-y);
	font-size: 17px;
	font-weight: 300;
	line-height: 1.8;
	color: var(--nv-text-body);
}

.nv-entry > * {
	margin-block: 0 26px;
}

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

.nv-entry h2 {
	font-size: 32px;
	line-height: 1.2;
	margin-block: 44px 22px;
}

.nv-entry h3 {
	font-size: 25px;
	line-height: 1.25;
	margin-block: 36px 18px;
}

.nv-entry h4 {
	font-family: var(--nv-sans);
	font-size: 13px;
	font-weight: 500;
	letter-spacing: 0.18em;
	text-transform: uppercase;
	margin-block: 32px 14px;
}

.nv-entry a:not(.nv-button):not(.wp-block-button__link) {
	color: var(--nv-brass-text);
	border-bottom: 1px solid var(--nv-hairline-strong);
	padding-bottom: 1px;
}

.nv-entry a:not(.nv-button):not(.wp-block-button__link):hover {
	border-bottom-color: var(--nv-brass);
	opacity: 1;
}

.nv-entry ul,
.nv-entry ol {
	padding-left: 22px;
	margin-block: 0 26px;
}

.nv-entry li {
	margin-bottom: 10px;
}

.nv-entry li::marker {
	color: var(--nv-brass);
}

.nv-entry blockquote,
.nv-entry .wp-block-quote {
	margin: 12px 0 26px;
	padding: 0 0 0 28px;
	border-left: 1.5px solid var(--nv-brass);
	font-family: var(--nv-display);
	font-size: 26px;
	font-weight: 400;
	line-height: 1.4;
	color: var(--nv-ink);
}

.nv-entry blockquote p,
.nv-entry .wp-block-quote p {
	margin: 0 0 12px;
	font-family: inherit;
	font-size: inherit;
	line-height: inherit;
}

.nv-entry blockquote cite,
.nv-entry .wp-block-quote cite {
	display: block;
	font-family: var(--nv-sans);
	font-size: 11px;
	font-weight: 400;
	font-style: normal;
	letter-spacing: 0.2em;
	text-transform: uppercase;
	color: var(--nv-brass-text);
}

.nv-entry .wp-block-pullquote {
	border: 0;
	border-top: 1px solid var(--nv-ink);
	border-bottom: 1px solid var(--nv-ink);
	padding: 32px 0;
	text-align: left;
	background: none;
}

.nv-entry figure,
.nv-entry .wp-block-image {
	margin-block: 12px 26px;
}

.nv-entry figcaption,
.nv-entry .wp-block-image figcaption {
	margin-top: 10px;
	font-size: 12.5px;
	font-weight: 300;
	line-height: 1.6;
	letter-spacing: 0.08em;
	color: var(--nv-meta-text);
	text-align: center;
}

.nv-entry .wp-block-table {
	margin-block: 12px 26px;
}

.nv-entry table {
	width: 100%;
	border-collapse: collapse;
	font-size: 15px;
}

/* Core's wp-block-styles boxes every cell; the house style is rules only. */
.nv-entry th,
.nv-entry td,
.nv-entry .wp-block-table th,
.nv-entry .wp-block-table td {
	border: 0;
	border-bottom: 1px solid var(--nv-hairline);
	padding: 12px 14px 12px 0;
	text-align: left;
	vertical-align: top;
}

.nv-entry .wp-block-table table,
.nv-entry .wp-block-table figcaption {
	border: 0;
}

.nv-entry th,
.nv-entry .wp-block-table th {
	font-family: var(--nv-sans);
	font-size: 11px;
	font-weight: 500;
	letter-spacing: 0.18em;
	text-transform: uppercase;
	color: var(--nv-brass-text);
	border-bottom-color: var(--nv-ink);
}

.nv-entry code,
.nv-entry kbd {
	font-family: var(--nv-mono);
	font-size: 0.88em;
	background: var(--nv-panel);
	padding: 2px 6px;
}

.nv-entry pre {
	font-family: var(--nv-mono);
	font-size: 13px;
	line-height: 1.7;
	background: var(--nv-panel);
	border: 1px solid var(--nv-hairline-strong);
	padding: 20px 24px;
	overflow-x: auto;
}

.nv-entry .wp-block-embed,
.nv-entry .wp-block-video {
	margin-block: 12px 26px;
}

.nv-entry .wp-block-embed__wrapper iframe {
	width: 100%;
	aspect-ratio: 16 / 9;
	height: auto;
}

/* Drop cap on the opening paragraph. */
.nv-entry--dropcap > p:first-of-type::first-letter,
.nv-entry .has-drop-cap:not(:focus)::first-letter {
	font-family: var(--nv-display);
	font-size: 64px;
	line-height: 0.78;
	float: left;
	padding: 8px 12px 0 0;
	color: var(--nv-ink);
	font-weight: 400;
}

.nv-entry .has-drop-cap:not(:focus)::after {
	content: '';
	display: table;
	clear: both;
}

/* Wide and full alignments inside the narrow measure. */
.nv-entry .alignwide {
	width: min(var(--nv-hero-width), calc(100vw - (var(--nv-gutter) * 2)));
	margin-inline: calc(50% - min(var(--nv-hero-width), calc(100vw - (var(--nv-gutter) * 2))) / 2);
	max-width: none;
}

.nv-entry .alignfull {
	width: calc(100vw - (var(--nv-gutter) * 2));
	margin-inline: calc(50% - (100vw - (var(--nv-gutter) * 2)) / 2);
	max-width: none;
}

.nv-entry .alignleft {
	float: left;
	margin: 6px 32px 20px 0;
	max-width: 45%;
}

.nv-entry .alignright {
	float: right;
	margin: 6px 0 20px 32px;
	max-width: 45%;
}

.nv-entry .aligncenter {
	margin-inline: auto;
}

/* --- Bon à savoir callout ------------------------------------------------ */

/*
 * Block layout, not flex. Core's constrained layout gives every child
 * `margin-inline: auto`, which under a flex parent centres each shrink-wrapped
 * child instead of stacking them left-aligned.
 */
.nv-callout,
.wp-block-group.is-style-nv-callout,
.is-style-nv-callout {
	background: var(--nv-panel);
	border: 1px solid var(--nv-hairline-strong);
	padding: 24px 28px;
	display: block;
}

.nv-callout > * + *,
.is-style-nv-callout > * + * {
	margin-top: 8px;
}

.nv-callout > *:first-child,
.is-style-nv-callout > *:first-child {
	margin-top: 0;
}

.nv-callout > *:last-child,
.is-style-nv-callout > *:last-child {
	margin-bottom: 0;
}

.nv-callout__title {
	font-family: var(--nv-sans);
	font-size: 11px;
	font-weight: 400;
	line-height: 1.6;
	letter-spacing: 0.28em;
	text-transform: uppercase;
	color: var(--nv-brass-text);
	margin: 0;
}

.nv-callout p,
.wp-block-group.is-style-nv-callout p {
	margin: 0;
	font-size: 15px;
	font-weight: 300;
	line-height: 1.7;
}

.wp-block-group.is-style-nv-callout > * + * {
	margin-top: 8px;
}

.wp-block-group.is-style-nv-callout > :first-child:is(h1, h2, h3, h4, h5, h6, p) {
	font-family: var(--nv-sans);
	font-size: 11px;
	font-weight: 400;
	letter-spacing: 0.28em;
	text-transform: uppercase;
	color: var(--nv-brass-text);
}

/* --- Article footer ------------------------------------------------------ */

.nv-tags {
	display: flex;
	flex-wrap: wrap;
	gap: 10px;
	max-width: var(--nv-content);
	margin: 0 auto 12px;
	padding-bottom: var(--nv-section-y);
}

.nv-chip {
	display: inline-block;
	border: 1px solid var(--nv-chip-border);
	border-radius: 999px;
	padding: 8px 18px;
	font-size: 12px;
	font-weight: 400;
	line-height: 1.2;
	letter-spacing: 0.14em;
	text-transform: uppercase;
	color: var(--nv-ink);
}

.nv-chip--active,
.nv-chip[aria-current='page'] {
	background: var(--nv-ink);
	border: 1.5px solid var(--nv-ink);
	color: var(--nv-cream);
}

.nv-chip:hover {
	opacity: 1;
	border-color: var(--nv-ink);
}

.nv-related {
	border-top: 1px solid var(--nv-ink);
	padding-block: 40px 56px;
}

.nv-postnav {
	display: grid;
	grid-template-columns: repeat(2, minmax(0, 1fr));
	gap: var(--nv-grid-gap);
	border-top: 1px solid var(--nv-hairline);
	padding-block: 36px;
}

.nv-postnav__item {
	display: flex;
	flex-direction: column;
	gap: 10px;
	min-width: 0;
}

.nv-postnav__item--next {
	text-align: right;
}

.nv-postnav__label {
	font-size: 11px;
	letter-spacing: 0.28em;
	text-transform: uppercase;
	color: var(--nv-brass-text);
}

.nv-postnav__title {
	font-family: var(--nv-display);
	font-size: 22px;
	line-height: 1.25;
	color: var(--nv-ink);
}

.nv-author {
	display: flex;
	gap: 24px;
	align-items: flex-start;
	max-width: var(--nv-content);
	margin-inline: auto;
	border-top: 1px solid var(--nv-hairline);
	padding-top: 28px;
	margin-bottom: 40px;
}

.nv-author__avatar img {
	border-radius: 50%;
}

.nv-author__name {
	font-family: var(--nv-display);
	font-size: 22px;
	color: var(--nv-ink);
	margin: 0 0 6px;
}

.nv-author__bio {
	margin: 0;
	font-size: 15px;
	line-height: 1.7;
	color: var(--nv-text-soft);
}

/* ==========================================================================
   11. Archive
   ========================================================================== */

.nv-masthead {
	padding-block: 64px 36px;
	border-bottom: 1px solid var(--nv-hairline);
	display: flex;
	flex-direction: column;
	gap: 18px;
}

.nv-masthead__title {
	margin: 0;
	font-size: clamp(36px, 5vw, 58px);
	line-height: 1.05;
	min-width: 0;
}

.nv-masthead__description {
	margin: 0;
	font-size: 16.5px;
	font-weight: 300;
	line-height: 1.7;
	max-width: 60ch;
	color: var(--nv-text-soft);
}

.nv-chiprow {
	display: flex;
	gap: 10px;
	flex-wrap: wrap;
	padding-top: 8px;
	margin: 0;
	padding-left: 0;
	list-style: none;
}

.nv-featured {
	display: grid;
	grid-template-columns: repeat(2, minmax(0, 1fr));
	gap: 48px;
	align-items: center;
	padding-block: 48px;
	border-bottom: 1px solid var(--nv-hairline);
	position: relative;
}

.nv-featured__media {
	height: 300px;
}

.nv-featured__body {
	display: flex;
	flex-direction: column;
	gap: 16px;
	min-width: 0;
}

.nv-featured__title {
	margin: 0;
	font-size: clamp(28px, 3.4vw, 40px);
	line-height: 1.1;
}

.nv-featured__excerpt {
	margin: 0;
	font-size: 15.5px;
	font-weight: 300;
	line-height: 1.7;
	color: var(--nv-text-soft);
}

.nv-featured:hover .nv-featured__title,
.nv-featured:focus-within .nv-featured__title {
	color: var(--nv-brass-text);
}

/* --- List rows ----------------------------------------------------------- */

.nv-rows {
	display: flex;
	flex-direction: column;
}

.nv-row {
	display: grid;
	grid-template-columns: 70px 200px minmax(0, 1fr) 130px;
	gap: 32px;
	align-items: center;
	padding-block: 26px;
	border-bottom: 1px solid var(--nv-hairline);
	position: relative;
}

.nv-row__ordinal {
	font-family: var(--nv-display);
	font-size: 32px;
	line-height: 1;
	color: var(--nv-brass-text);
}

.nv-row__media {
	height: 80px;
	overflow: hidden;
}

.nv-row__media img,
.nv-row__media .nv-ph {
	width: 100%;
	height: 100%;
	object-fit: cover;
}

.nv-row__body {
	display: flex;
	flex-direction: column;
	gap: 6px;
	min-width: 0;
}

.nv-row__title {
	font-family: var(--nv-display);
	font-size: 24px;
	line-height: 1.2;
	color: var(--nv-ink);
	margin: 0;
}

.nv-row__excerpt {
	font-size: 14px;
	font-weight: 300;
	line-height: 1.6;
	color: var(--nv-text-soft);
	margin: 0;
}

.nv-row__meta {
	text-align: right;
}

.nv-row:hover .nv-row__title,
.nv-row:focus-within .nv-row__title {
	color: var(--nv-brass-text);
}

/* --- Pagination ---------------------------------------------------------- */

.nv-pagination {
	display: flex;
	justify-content: center;
	align-items: center;
	flex-wrap: wrap;
	gap: 14px;
	padding-block: 36px 48px;
	font-size: 12px;
	font-weight: 400;
	letter-spacing: 0.18em;
	text-transform: uppercase;
}

.nv-pagination .page-numbers {
	width: 36px;
	height: 36px;
	border: 1px solid var(--nv-chip-border);
	border-radius: 50%;
	display: inline-flex;
	align-items: center;
	justify-content: center;
	color: var(--nv-brass-text);
}

.nv-pagination .page-numbers.current {
	border: 1.5px solid var(--nv-ink);
	color: var(--nv-ink);
}

.nv-pagination .page-numbers.dots {
	border-color: transparent;
	color: var(--nv-meta-text);
}

.nv-pagination .next,
.nv-pagination .prev {
	width: auto;
	border-radius: 999px;
	padding-inline: 18px;
}

.nv-pagination a.page-numbers:hover {
	opacity: 1;
	border-color: var(--nv-ink);
	color: var(--nv-ink);
}

/* ==========================================================================
   12. Page template with contents rail
   ========================================================================== */

.nv-page {
	display: grid;
	grid-template-columns: 260px minmax(0, 1fr);
	gap: 64px;
	padding-block: 64px 72px;
	align-items: start;
}

.nv-page--no-toc {
	grid-template-columns: minmax(0, 1fr);
}

.nv-toc {
	display: flex;
	flex-direction: column;
	position: sticky;
	top: 40px;
	min-width: 0;
}

.nv-toc__title {
	font-size: 11px;
	font-weight: 400;
	letter-spacing: 0.28em;
	text-transform: uppercase;
	color: var(--nv-brass-text);
	padding-bottom: 16px;
	border-bottom: 1px solid var(--nv-ink);
	margin: 0;
}

.nv-toc__list {
	list-style: none;
	margin: 0;
	padding: 0;
}

.nv-toc__list a {
	display: block;
	padding-block: 14px;
	border-bottom: 1px solid var(--nv-hairline);
	font-size: 14px;
	font-weight: 300;
	line-height: 1.5;
	color: var(--nv-text-soft);
}

.nv-toc__list .is-current a,
.nv-toc__list a[aria-current='true'] {
	font-weight: 500;
	color: var(--nv-ink);
}

.nv-toc__list .nv-toc__sub a {
	padding-left: 16px;
	font-size: 13px;
}

.nv-page__body {
	max-width: 640px;
	min-width: 0;
}

.nv-page__title {
	margin: 0 0 24px;
	font-size: clamp(34px, 4.4vw, 52px);
	line-height: 1.08;
}

.nv-page__body .nv-entry {
	max-width: none;
	margin-inline: 0;
	padding-block: 0 0;
}

.nv-page__body .nv-entry h2 {
	font-size: 30px;
	margin-block: 40px 20px;
}

/* Full-width page template. */
.nv-page--wide .nv-page__body {
	max-width: none;
}

/* ==========================================================================
   13. Footer
   ========================================================================== */

.nv-footer {
	background: var(--nv-footer-bg);
	color: var(--nv-cream);
	padding-top: 56px;
	margin-top: auto;
}

.nv-footer__grid {
	display: grid;
	grid-template-columns: 1.4fr repeat(3, minmax(0, 1fr));
	gap: 40px;
	padding-bottom: 48px;
}

.nv-footer__brand {
	display: flex;
	flex-direction: column;
	gap: 16px;
	min-width: 0;
}

.nv-footer__lockup {
	display: inline-flex;
	align-items: center;
	gap: 12px;
	color: var(--nv-cream);
}

.nv-footer__roundel {
	width: 38px;
	height: 38px;
	flex-shrink: 0;
	border: 1.5px solid currentColor;
	border-radius: 50%;
	display: flex;
	align-items: center;
	justify-content: center;
	font-family: var(--nv-display);
	font-size: 22px;
	line-height: 1;
	padding-top: 2px;
}

.nv-footer__name {
	font-family: var(--nv-display);
	font-size: 21px;
	letter-spacing: 0.06em;
}

.nv-footer__mission {
	margin: 0;
	font-size: 14px;
	font-weight: 300;
	line-height: 1.7;
	color: var(--nv-footer-secondary);
	max-width: 36ch;
}

.nv-footer__col {
	display: flex;
	flex-direction: column;
	gap: 14px;
	min-width: 0;
}

.nv-footer__heading {
	font-size: 11px;
	font-weight: 400;
	line-height: 1.6;
	letter-spacing: 0.28em;
	text-transform: uppercase;
	color: var(--nv-brass-on-ink);
	margin: 0;
}

.nv-footer__menu {
	list-style: none;
	margin: 0;
	padding: 0;
	display: flex;
	flex-direction: column;
	gap: 14px;
}

.nv-footer__menu a {
	font-size: 14px;
	font-weight: 300;
	line-height: 1.5;
	color: var(--nv-footer-link);
}

.nv-footer__bar {
	border-top: 1px solid var(--nv-footer-hairline);
	display: flex;
	justify-content: space-between;
	align-items: center;
	flex-wrap: wrap;
	gap: 12px 24px;
	padding-block: 20px;
}

.nv-footer__copy {
	font-size: 12px;
	letter-spacing: 0.12em;
	color: var(--nv-footer-meta);
}

.nv-footer__stamp {
	font-family: var(--nv-display);
	font-size: 13px;
	letter-spacing: 0.3em;
	text-transform: uppercase;
	color: var(--nv-brass-on-ink);
}

.nv-footer :where(a):focus-visible {
	outline-color: var(--nv-brass-on-ink);
}

/* Widget area, so orphaned widgets have a home that matches the house style. */
.nv-widgets {
	max-width: var(--nv-content);
	margin-inline: auto;
	padding-bottom: var(--nv-section-y);
}

.nv-widget {
	border-top: 1px solid var(--nv-hairline);
	padding-top: 20px;
	margin-bottom: 28px;
}

.nv-widget__title {
	font-family: var(--nv-sans);
	font-size: 11px;
	font-weight: 400;
	letter-spacing: 0.28em;
	text-transform: uppercase;
	color: var(--nv-brass-text);
	margin: 0 0 14px;
}

.nv-widget ul {
	list-style: none;
	margin: 0;
	padding: 0;
	display: flex;
	flex-direction: column;
	gap: 10px;
	font-size: 15px;
}

/* ==========================================================================
   14. Search results, 404, comments
   ========================================================================== */

.nv-searchresults .nv-row {
	grid-template-columns: 200px minmax(0, 1fr) 130px;
}

.nv-none {
	max-width: var(--nv-content);
	margin-inline: auto;
	padding-block: 64px 80px;
	text-align: center;
	display: flex;
	flex-direction: column;
	gap: 20px;
	align-items: center;
}

.nv-none__title {
	margin: 0;
	font-size: clamp(32px, 4.4vw, 52px);
	line-height: 1.1;
}

.nv-none__text {
	margin: 0;
	font-size: 17px;
	font-weight: 300;
	line-height: 1.8;
	color: var(--nv-text-soft);
	max-width: 48ch;
}

.nv-none .nv-searchform {
	width: min(100%, 480px);
}

.nv-comments {
	max-width: var(--nv-content);
	margin-inline: auto;
	padding-bottom: var(--nv-section-y);
}

.nv-comments__title {
	font-size: 30px;
	margin: 0 0 28px;
	border-top: 1px solid var(--nv-ink);
	padding-top: 28px;
}

.nv-comments .comment-list {
	list-style: none;
	margin: 0 0 40px;
	padding: 0;
}

.nv-comments .comment-list ol.children {
	list-style: none;
	margin: 20px 0 0 32px;
	padding: 0;
}

.nv-comments .comment-body {
	border-top: 1px solid var(--nv-hairline);
	padding-block: 20px;
}

.nv-comments .comment-author {
	font-family: var(--nv-display);
	font-size: 20px;
	color: var(--nv-ink);
}

.nv-comments .comment-metadata {
	font-size: 11px;
	letter-spacing: 0.14em;
	text-transform: uppercase;
	color: var(--nv-meta-text);
	margin-bottom: 10px;
}

.nv-comments .comment-content {
	font-size: 16px;
	line-height: 1.75;
}

.nv-comments .reply {
	font-size: 11px;
	letter-spacing: 0.2em;
	text-transform: uppercase;
	color: var(--nv-brass-text);
}

.nv-comments input[type='text'],
.nv-comments input[type='email'],
.nv-comments input[type='url'],
.nv-comments textarea,
.nv-form-field {
	width: 100%;
	font-family: var(--nv-sans);
	font-size: 16px;
	font-weight: 300;
	color: var(--nv-text-body);
	background: transparent;
	border: 1px solid var(--nv-hairline-strong);
	padding: 12px 14px;
}

.nv-comments label {
	display: block;
	font-size: 11px;
	letter-spacing: 0.2em;
	text-transform: uppercase;
	color: var(--nv-brass-text);
	margin-bottom: 8px;
}

.nv-comments .comment-form > p {
	margin-bottom: 20px;
}

.nv-comments .form-submit input[type='submit'] {
	border: 1.5px solid var(--nv-ink);
	border-radius: 999px;
	padding: 14px 32px;
	font-family: var(--nv-sans);
	font-size: 12.5px;
	font-weight: 500;
	letter-spacing: 0.18em;
	text-transform: uppercase;
	color: var(--nv-ink);
	background: transparent;
	cursor: pointer;
}

.nv-comments .form-submit input[type='submit']:hover {
	background: var(--nv-ink);
	color: var(--nv-cream);
}

/* ==========================================================================
   15. Block styles exposed to the editor
   ========================================================================== */

.wp-block-image.is-style-nv-arch img {
	border: 1.5px solid var(--nv-ink);
	border-radius: var(--nv-arch-feature) var(--nv-arch-feature) 0 0;
	padding: 10px;
}

.wp-block-group.is-style-nv-hairline {
	border-top: 1px solid var(--nv-ink);
	padding-top: 20px;
}

.wp-block-paragraph.is-style-nv-eyebrow,
h1.is-style-nv-eyebrow,
h2.is-style-nv-eyebrow,
h3.is-style-nv-eyebrow,
h4.is-style-nv-eyebrow {
	font-family: var(--nv-sans);
	font-size: 11px;
	font-weight: 400;
	line-height: 1.6;
	letter-spacing: 0.28em;
	text-transform: uppercase;
	color: var(--nv-brass-text);
}

/* Core colour utility classes generated from theme.json. */
.has-nv-ink-color { color: var(--nv-ink); }
.has-nv-cream-color { color: var(--nv-cream); }
.has-nv-brass-color { color: var(--nv-brass-text); }
.has-nv-soft-color { color: var(--nv-text-soft); }
.has-nv-ink-background-color { background-color: var(--nv-ink); }
.has-nv-cream-background-color { background-color: var(--nv-cream); }
.has-nv-panel-background-color { background-color: var(--nv-panel); }
.has-nv-brass-background-color { background-color: var(--nv-brass); }

/* ==========================================================================
   16. Layout skeleton
   ========================================================================== */

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

.nv-main {
	flex: 1 0 auto;
}

.wp-block-columns {
	gap: var(--nv-grid-gap);
}

.sticky .nv-card__title::before {
	content: '★ ';
	color: var(--nv-brass);
}

.admin-bar .nv-toc,
.admin-bar .nv-searchpanel {
	top: 72px;
}

.admin-bar {
	scroll-padding-top: 128px;
}

/* ==========================================================================
   17. Responsive
   ========================================================================== */

@media (max-width: 1200px) {
	.nv-nav__menu {
		gap: 22px;
	}

	.nv-nav__search {
		padding-left: 22px;
	}
}

@media (max-width: 1023px) {
	.nv-hero {
		grid-template-columns: minmax(0, 1fr);
		gap: 40px;
		padding-block: 48px var(--nv-section-y);
	}

	.nv-hero__media .nv-arch {
		height: 340px;
	}

	.nv-grid {
		grid-template-columns: repeat(2, minmax(0, 1fr));
	}

	.nv-stats {
		grid-template-columns: repeat(2, minmax(0, 1fr));
		gap: 28px 32px;
	}

	.nv-featured {
		grid-template-columns: minmax(0, 1fr);
		gap: 28px;
	}

	.nv-featured__media {
		height: 260px;
	}

	.nv-row {
		grid-template-columns: 60px 150px minmax(0, 1fr);
		gap: 20px 24px;
	}

	.nv-row__meta {
		grid-column: 2 / -1;
		text-align: left;
	}

	.nv-searchresults .nv-row {
		grid-template-columns: 150px minmax(0, 1fr);
	}

	/* Doubled selector so this beats anything more specific upstream. */
	.nv-page.nv-page {
		grid-template-columns: minmax(0, 1fr);
		gap: 40px;
	}

	.nv-toc {
		position: static;
	}

	.nv-page__body {
		max-width: none;
	}

	.nv-article__hero .nv-arch {
		height: 300px;
	}
}

@media (max-width: 899px) {
	.nv-nav__menu,
	.nv-nav__search {
		display: none;
	}

	.nv-nav-toggle {
		display: inline-flex;
	}

	.nv-nav.is-open {
		position: fixed;
		inset: 0;
		z-index: 90;
		display: flex;
		flex-direction: column;
		justify-content: center;
		align-items: flex-start;
		gap: 28px;
		padding: 96px var(--nv-gutter) 48px;
		background: var(--nv-cream);
		overflow-y: auto;
	}

	.nv-nav.is-open .nv-nav__menu {
		display: flex;
		flex-direction: column;
		align-items: flex-start;
		gap: 22px;
		width: 100%;
	}

	.nv-nav.is-open .nv-nav__menu a {
		font-size: 16px;
		letter-spacing: 0.2em;
	}

	.nv-nav.is-open .nv-nav__menu .sub-menu {
		position: static;
		right: auto;
		opacity: 1;
		visibility: visible;
		transform: none;
		border: 0;
		border-left: 1px solid var(--nv-hairline);
		padding: 14px 0 4px 18px;
		margin-top: 14px;
		min-width: 0;
	}

	.nv-nav.is-open .nv-nav__search {
		display: inline-flex;
		border-left: 0;
		border-top: 1px solid var(--nv-hairline-strong);
		padding-left: 0;
		padding-top: 24px;
		width: 100%;
	}

	.nv-nav-toggle {
		position: relative;
		z-index: 95;
	}

	body.nv-nav-open {
		overflow: hidden;
	}
}

@media (max-width: 767px) {
	body {
		font-size: 16px;
	}

	.nv-grid {
		grid-template-columns: minmax(0, 1fr);
		gap: 40px;
	}

	.nv-sectionhead {
		flex-direction: column;
		align-items: flex-start;
		gap: 12px;
	}

	.nv-article__header {
		padding-top: 44px;
	}

	.nv-article__hero .nv-arch {
		height: 240px;
		padding: 8px;
	}

	.nv-entry {
		padding-block: 36px var(--nv-section-y);
		font-size: 16px;
	}

	.nv-entry h2 {
		font-size: 27px;
		margin-block: 36px 18px;
	}

	.nv-entry blockquote,
	.nv-entry .wp-block-quote {
		font-size: 22px;
		padding-left: 20px;
	}

	.nv-entry .alignleft,
	.nv-entry .alignright {
		float: none;
		margin-inline: 0;
		max-width: 100%;
	}

	.nv-postnav {
		grid-template-columns: minmax(0, 1fr);
		gap: 28px;
	}

	.nv-postnav__item--next {
		text-align: left;
	}

	.nv-footer__grid {
		grid-template-columns: repeat(2, minmax(0, 1fr));
		gap: 32px;
	}

	.nv-searchform__field {
		font-size: 22px;
	}
}

@media (max-width: 639px) {
	.nv-hero__media .nv-arch {
		height: 260px;
	}

	.nv-stats {
		grid-template-columns: minmax(0, 1fr);
		gap: 24px;
	}

	.nv-row,
	.nv-searchresults .nv-row {
		grid-template-columns: minmax(0, 1fr);
		gap: 10px;
		padding-block: 22px;
	}

	/* Under 640px the thumbnail is decoration, not information. */
	.nv-row__media {
		display: none;
	}

	.nv-row__ordinal {
		font-size: 26px;
	}

	.nv-row__meta {
		grid-column: auto;
	}

	.nv-featured__media {
		height: 220px;
	}

	.nv-footer__grid {
		grid-template-columns: minmax(0, 1fr);
	}

	.nv-brand__name {
		font-size: 19px;
	}

	.nv-brand__tagline {
		font-size: 9px;
		letter-spacing: 0.28em;
	}

	.nv-brand__roundel {
		width: 38px;
		height: 38px;
		font-size: 22px;
	}

	.nv-author {
		flex-direction: column;
		gap: 16px;
	}
}

@media print {
	.nv-header,
	.nv-footer,
	.nv-toc,
	.nv-related,
	.nv-postnav,
	.nv-pagination,
	.skip-link {
		display: none !important;
	}

	body {
		background: #fff;
		color: #000;
	}
}
