/*
Theme Name: The Journal — SamWebb.org
Theme URI: https://www.samwebb.org/
Author: Sam Webb
Description: A quiet print-weekly theme for SamWebb.org. Built for a 1,750-post classic-editor essay archive: paste the text, pick a category, publish. Full posts on the homepage, a hairline-ruled sidebar, and no per-post configuration of any kind.
Version: 1.0.0
Requires at least: 6.0
Tested up to: 6.8
Requires PHP: 8.0
License: GNU General Public License v2 or later
License URI: http://www.gnu.org/licenses/gpl-2.0.html
Text Domain: samwebb
Tags: blog, one-column, two-columns, right-sidebar, custom-logo, custom-menu, editor-style, translation-ready, accessibility-ready
*/

/* =========================================================================
   1. Design tokens
   ========================================================================= */

:root {
	--paper:        #faf8f4;
	--paper-2:      #f2eee6;
	--ink:          #1c1a17;
	--ink-body:     #26231f;
	--ink-soft:     #4a453e;
	--ink-muted:    #6f685e;
	--ink-faint:    #8a8378;
	--ink-ghost:    #a49c90;
	--rule:         rgba(28, 26, 23, 0.16);
	--rule-strong:  rgba(28, 26, 23, 0.30);
	--field-border: rgba(28, 26, 23, 0.28);
	--accent:       oklch(0.52 0.14 32);
	--highlight:    #f0e2b8;
	--field-bg:     #ffffff;
	--bar-text:     #d8d3c9;

	/* Derived, used for slashes and pill borders in the mockups. */
	--rule-pill:    rgba(28, 26, 23, 0.22);
	--rule-pill-2:  rgba(28, 26, 23, 0.24);
	--divider:      #c3bcb0;

	--font-serif: "Source Serif 4", Georgia, "Times New Roman", serif;
	--font-ui:    "Archivo", system-ui, -apple-system, "Segoe UI", sans-serif;
	--font-mono:  "IBM Plex Mono", ui-monospace, SFMono-Regular, Menlo, monospace;

	--gutter: 56px;
	--gutter-band: 40px;
	--sidebar-w: 258px;
	--grid-gap: 60px;
	--measure: 66ch;
}

/* Fallback for browsers without oklch(). */
@supports not (color: oklch(0.52 0.14 32)) {
	:root { --accent: #a24a35; }
}

/* =========================================================================
   2. Reset and base
   ========================================================================= */

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

html { -webkit-text-size-adjust: 100%; }

body {
	margin: 0;
	background: var(--paper);
	color: var(--ink-body);
	font-family: var(--font-serif);
	font-size: 20px;
	line-height: 1.72;
	-webkit-font-smoothing: antialiased;
	-moz-osx-font-smoothing: grayscale;
	text-rendering: optimizeLegibility;
}

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

h1, h2, h3, h4, h5, h6, p, figure, blockquote, ul, ol, dl, dd { margin: 0; }
ul, ol { padding: 0; }

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

/* Nothing in this design has a corner radius. */
input, textarea, select, button, img, .sw-pill, .sw-btn { border-radius: 0; }

table { border-collapse: collapse; }

/* =========================================================================
   3. Links, buttons, focus
   ========================================================================= */

a {
	color: var(--accent);
	text-decoration: underline;
	text-decoration-thickness: 1px;
	text-underline-offset: 0.16em;
	transition: color 120ms ease;
}

a:hover,
a:focus-visible { color: var(--ink); }

/* Structural links (titles, nav, meta) inherit colour and hover to accent. */
.sw-link-plain,
.sw-nav a,
.sw-utility a,
.sw-entry__title a,
.sw-widget a,
.sw-adjacent a,
.sw-masthead a,
.sw-result__title a,
.sw-list__title a {
	color: inherit;
	text-decoration: none;
}

.sw-link-plain:hover,
.sw-nav a:hover,
.sw-utility a:hover,
.sw-entry__title a:hover,
.sw-widget a:hover,
.sw-adjacent a:hover,
.sw-result__title a:hover,
.sw-list__title a:hover,
.sw-link-plain:focus-visible,
.sw-nav a:focus-visible,
.sw-entry__title a:focus-visible { color: var(--accent); }

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

.sw-btn {
	display: inline-block;
	padding: 11px 28px;
	border: 1px solid var(--ink);
	background: var(--ink);
	color: var(--paper);
	font-family: var(--font-ui);
	font-size: 11px;
	font-weight: 600;
	letter-spacing: 0.14em;
	text-transform: uppercase;
	text-decoration: none;
	line-height: 1.2;
	cursor: pointer;
	transition: background-color 120ms ease, border-color 120ms ease;
}

.sw-btn:hover,
.sw-btn:focus-visible {
	background: var(--accent);
	border-color: var(--accent);
	color: var(--paper);
}

.sw-skip-link {
	position: absolute;
	left: -9999px;
	top: 0;
	z-index: 100;
	padding: 12px 20px;
	background: var(--ink);
	color: var(--paper);
	font-family: var(--font-ui);
	font-size: 13px;
	text-decoration: none;
}

.sw-skip-link:focus {
	left: 0;
	color: var(--paper);
}

.screen-reader-text {
	position: absolute !important;
	width: 1px;
	height: 1px;
	padding: 0;
	margin: -1px;
	overflow: hidden;
	clip: rect(0, 0, 0, 0);
	white-space: nowrap;
	border: 0;
}

.screen-reader-text:focus {
	position: static !important;
	width: auto;
	height: auto;
	margin: 0;
	clip: auto;
	white-space: normal;
}

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

.sw-meta {
	display: flex;
	flex-wrap: wrap;
	gap: 12px;
	align-items: center;
	font-family: var(--font-mono);
	font-size: 10.5px;
	font-weight: 500;
	letter-spacing: 0.10em;
	text-transform: uppercase;
	line-height: 1.4;
}

.sw-meta__cat { color: var(--accent); }
.sw-meta__cat a { color: inherit; text-decoration: none; }
.sw-meta__cat a:hover { color: var(--ink); }
.sw-meta__sep { color: var(--divider); }
.sw-meta__date,
.sw-meta__read { color: var(--ink-faint); }

.sw-label {
	font-family: var(--font-mono);
	font-size: 10px;
	font-weight: 500;
	letter-spacing: 0.18em;
	text-transform: uppercase;
	color: var(--ink-faint);
	line-height: 1.4;
}

.sw-pill {
	display: inline-block;
	padding: 5px 12px;
	border: 1px solid var(--rule-pill-2);
	font-family: var(--font-ui);
	font-size: 11px;
	font-weight: 600;
	letter-spacing: 0.10em;
	text-transform: uppercase;
	color: var(--ink-soft);
	text-decoration: none;
	line-height: 1.4;
	transition: color 120ms ease, border-color 120ms ease;
}

.sw-pill:hover,
.sw-pill:focus-visible { color: var(--accent); border-color: var(--accent); }

.sw-pill.is-current {
	background: var(--ink);
	border-color: var(--ink);
	color: var(--paper);
}

.sw-pill.is-current:hover { background: var(--accent); border-color: var(--accent); color: var(--paper); }

.sw-more {
	display: inline-block;
	font-family: var(--font-ui);
	font-size: 11px;
	font-weight: 600;
	letter-spacing: 0.14em;
	text-transform: uppercase;
	color: var(--ink);
	text-decoration: none;
	border-bottom: 2px solid var(--accent);
	padding-bottom: 3px;
}

.sw-more:hover,
.sw-more:focus-visible { color: var(--accent); }

/* =========================================================================
   5. Layout
   ========================================================================= */

.sw-site {
	max-width: 1160px;
	margin: 0 auto;
	background: var(--paper);
}

.sw-grid {
	display: grid;
	grid-template-columns: minmax(0, 1fr) var(--sidebar-w);
	gap: var(--grid-gap);
	padding: 48px var(--gutter) 56px;
	align-items: start;
}

.sw-grid__main { min-width: 0; }

.sw-grid--tight { padding-top: 36px; }

/* About page inverts the grid. */
.sw-grid--about {
	grid-template-columns: 300px minmax(0, 1fr);
	gap: 56px;
	padding: 52px var(--gutter) 56px;
}

/* =========================================================================
   6. Site header
   ========================================================================= */

.sw-utility {
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: 16px;
	padding: 9px var(--gutter-band);
	background: var(--ink);
	color: var(--bar-text);
	font-family: var(--font-mono);
	font-size: 10.5px;
	font-weight: 500;
	letter-spacing: 0.12em;
	text-transform: uppercase;
	line-height: 1.5;
}

.sw-utility__links {
	display: flex;
	gap: 22px;
	flex: none;
}

.sw-utility a { color: var(--bar-text); }
.sw-utility a:hover,
.sw-utility a:focus-visible { color: var(--paper); }
.sw-utility a.is-emphasis { color: var(--paper); }
.sw-utility a.is-emphasis:hover { color: var(--bar-text); }

.sw-utility :focus-visible { outline-color: var(--paper); }

.sw-masthead {
	display: flex;
	flex-direction: column;
	align-items: center;
	gap: 14px;
	padding: 34px var(--gutter-band) 22px;
	text-align: center;
}

.sw-masthead--home { padding: 46px var(--gutter-band) 28px; }

.sw-masthead__logo { display: block; line-height: 0; }
.sw-masthead__logo img {
	display: block;
	height: 56px;
	width: auto;
	max-width: 100%;
}

.sw-masthead--home .sw-masthead__logo img { height: 76px; }

/* Text fallback when no Custom Logo is set. */
.sw-masthead__title {
	margin: 0;
	font-family: var(--font-serif);
	font-size: 44px;
	font-weight: 600;
	letter-spacing: -0.02em;
	line-height: 1.05;
	color: var(--ink);
}

.sw-masthead__tagline {
	font-family: var(--font-mono);
	font-size: 10.5px;
	font-weight: 500;
	letter-spacing: 0.24em;
	text-transform: uppercase;
	color: var(--ink-faint);
	line-height: 1.5;
}

/* =========================================================================
   7. Primary navigation
   ========================================================================= */

.sw-nav {
	border-top: 1px solid var(--ink);
	border-bottom: 3px double var(--ink);
	padding: 15px var(--gutter-band);
}

.sw-nav__list {
	display: flex;
	justify-content: center;
	flex-wrap: wrap;
	gap: 32px;
	list-style: none;
	margin: 0;
	padding: 0;
}

.sw-nav__list li { margin: 0; }

.sw-nav a {
	font-family: var(--font-ui);
	font-size: 12px;
	font-weight: 500;
	letter-spacing: 0.14em;
	text-transform: uppercase;
	color: var(--ink-soft);
	text-decoration: none;
	line-height: 1.4;
}

.sw-nav .current-menu-item > a,
.sw-nav .current_page_item > a,
.sw-nav .current-menu-ancestor > a,
.sw-nav .current-post-ancestor > a,
.sw-nav .current-menu-parent > a,
.sw-nav .sw-nav__item--current > a {
	color: var(--ink);
	font-weight: 700;
}

/* Speeches is a child of Articles on the live site; the theme flattens
   descendants into the same row rather than building a dropdown. */
.sw-nav__list .sub-menu {
	display: contents;
	list-style: none;
	margin: 0;
	padding: 0;
}

.sw-nav__toggle { display: none; }

/* =========================================================================
   8. Post loop — homepage full posts
   ========================================================================= */

.sw-entry { padding: 0 0 44px; }
.sw-entry + .sw-entry { padding-top: 40px; }
.sw-entry:not(:last-child),
.sw-loop .sw-entry { border-bottom: 3px double var(--rule-strong); }

.sw-entry__title {
	margin: 14px 0 0;
	font-family: var(--font-serif);
	font-size: 38px;
	font-weight: 600;
	line-height: 1.12;
	letter-spacing: -0.02em;
	color: var(--ink);
	text-wrap: pretty;
}

/* The first post on page one of the homepage is set larger. */
.sw-entry--lead .sw-entry__title {
	font-size: 44px;
	line-height: 1.10;
}

.sw-entry__body { margin-top: 20px; }
.sw-entry--lead .sw-entry__body { margin-top: 26px; }

.sw-entry__body,
.sw-entry__body p { font-size: 19.5px; line-height: 1.68; }

/* =========================================================================
   9. Single article
   ========================================================================= */

.sw-single__title {
	margin: 16px 0 0;
	font-family: var(--font-serif);
	font-size: 52px;
	font-weight: 600;
	line-height: 1.06;
	letter-spacing: -0.025em;
	color: var(--ink);
	max-width: 19ch;
	text-wrap: pretty;
}

.sw-byline {
	margin-top: 26px;
	padding: 14px 0;
	border-top: 1px solid var(--rule);
	border-bottom: 1px solid var(--rule);
	display: flex;
	align-items: center;
	gap: 12px;
	flex-wrap: wrap;
}

.sw-byline__avatar {
	width: 36px;
	height: 36px;
	object-fit: cover;
	border-radius: 50%;
	display: block;
	flex: none;
	filter: grayscale(1);
}

.sw-byline__name {
	font-family: var(--font-ui);
	font-size: 13px;
	font-weight: 600;
	color: var(--ink);
	line-height: 1.4;
}

.sw-byline__spacer { flex: 1 1 auto; }

.sw-author {
	margin-top: 44px;
	padding: 26px 0;
	border-top: 3px double var(--rule-strong);
	display: flex;
	gap: 22px;
	align-items: flex-start;
}

.sw-author__photo {
	width: 96px;
	height: 96px;
	object-fit: cover;
	display: block;
	flex: none;
	filter: grayscale(1) contrast(1.05);
}

.sw-author__name {
	margin-top: 6px;
	font-family: var(--font-serif);
	font-size: 22px;
	font-weight: 600;
	color: var(--ink);
	line-height: 1.25;
}

.sw-author__bio {
	margin: 8px 0 0;
	font-family: var(--font-serif);
	font-size: 16px;
	line-height: 1.6;
	color: var(--ink-soft);
	max-width: 62ch;
}

.sw-adjacent {
	display: grid;
	grid-template-columns: 1fr 1fr;
	gap: 24px;
	padding: 26px 0 52px;
	border-top: 1px solid var(--rule);
}

.sw-adjacent__cell--next {
	text-align: right;
	border-left: 1px solid var(--rule);
	padding-left: 24px;
}

.sw-adjacent__title {
	margin-top: 8px;
	font-family: var(--font-serif);
	font-size: 19px;
	font-weight: 600;
	line-height: 1.3;
	color: var(--ink);
	text-wrap: pretty;
}

/* =========================================================================
   10. Share row
   ========================================================================= */

.sw-share {
	margin-top: 34px;
	display: flex;
	align-items: center;
	flex-wrap: wrap;
	gap: 18px;
}

.sw-byline .sw-share { margin-top: 0; gap: 14px; }

.sw-share__label {
	font-family: var(--font-mono);
	font-size: 10.5px;
	font-weight: 500;
	letter-spacing: 0.12em;
	text-transform: uppercase;
	color: var(--ink-faint);
	line-height: 1.4;
}

.sw-share__sep { color: var(--divider); }

.sw-share__link {
	font-family: var(--font-ui);
	font-size: 11.5px;
	font-weight: 500;
	color: var(--ink);
	text-decoration: none;
	background: none;
	border: 0;
	padding: 0;
	cursor: pointer;
	line-height: 1.4;
	transition: color 120ms ease;
}

.sw-byline .sw-share__label { font-size: 10px; letter-spacing: 0.14em; }

.sw-share__link:hover,
.sw-share__link:focus-visible { color: var(--accent); }

.sw-share__link[data-sw-copied="true"]::after {
	content: " ✓";
	color: var(--accent);
}

/* =========================================================================
   11. Archive header and list
   ========================================================================= */

.sw-archive-head {
	padding: 44px var(--gutter) 28px;
	border-bottom: 1px solid var(--rule);
}

.sw-archive-head__label {
	font-family: var(--font-mono);
	font-size: 10.5px;
	font-weight: 500;
	letter-spacing: 0.18em;
	text-transform: uppercase;
	color: var(--ink-faint);
	line-height: 1.4;
}

.sw-archive-head__title {
	margin: 8px 0 0;
	font-family: var(--font-serif);
	font-size: 46px;
	font-weight: 600;
	line-height: 1;
	letter-spacing: -0.02em;
	color: var(--ink);
	text-wrap: pretty;
}

.sw-archive-head__meta {
	margin-top: 14px;
	display: flex;
	align-items: center;
	flex-wrap: wrap;
	gap: 10px 22px;
}

.sw-archive-head__count {
	font-family: var(--font-serif);
	font-size: 17px;
	color: var(--ink-muted);
	line-height: 1.4;
}

.sw-archive-head__divider {
	height: 14px;
	width: 1px;
	background: var(--divider);
	flex: none;
}

.sw-archive-head__sublabel {
	font-family: var(--font-mono);
	font-size: 11px;
	font-weight: 500;
	letter-spacing: 0.10em;
	text-transform: uppercase;
	color: var(--ink-faint);
}

.sw-archive-head__desc {
	margin-top: 14px;
	font-family: var(--font-serif);
	font-size: 17px;
	line-height: 1.6;
	color: var(--ink-muted);
	max-width: 70ch;
	text-wrap: pretty;
}

.sw-list__item {
	display: grid;
	grid-template-columns: 118px minmax(0, 1fr);
	gap: 26px;
	padding: 22px 0;
	border-bottom: 1px solid var(--rule);
}

.sw-list__date {
	font-family: var(--font-mono);
	font-size: 12px;
	font-weight: 400;
	color: var(--ink-faint);
	padding-top: 5px;
	line-height: 1.4;
}

.sw-list__read {
	display: block;
	margin-top: 4px;
	font-family: var(--font-mono);
	font-size: 11px;
	font-weight: 400;
	color: var(--ink-ghost);
	line-height: 1.4;
}

.sw-list__title {
	font-family: var(--font-serif);
	font-size: 25px;
	font-weight: 600;
	line-height: 1.22;
	color: var(--ink);
	text-wrap: pretty;
}

.sw-list__excerpt {
	margin: 7px 0 0;
	font-family: var(--font-serif);
	font-size: 16.5px;
	line-height: 1.55;
	color: var(--ink-muted);
	max-width: 70ch;
	text-wrap: pretty;
}

/* =========================================================================
   12. Search
   ========================================================================= */

.sw-searchband {
	padding: 40px var(--gutter) 26px;
	border-bottom: 1px solid var(--rule);
}

.sw-searchband__form {
	display: flex;
	align-items: center;
	gap: 12px;
	padding: 14px 18px;
	background: var(--field-bg);
	border: 1px solid var(--ink);
	max-width: 640px;
}

.sw-searchband__icon { flex: none; display: block; color: var(--ink); }

.sw-searchband__input {
	flex: 1 1 auto;
	min-width: 0;
	border: 0;
	background: none;
	padding: 0;
	font-family: var(--font-serif);
	font-size: 20px;
	color: var(--ink);
	line-height: 1.4;
}

.sw-searchband__input::placeholder { color: var(--ink-ghost); }
.sw-searchband__input:focus { outline: none; }
.sw-searchband__form:focus-within { outline: 2px solid var(--accent); outline-offset: 2px; }

.sw-searchband__clear {
	flex: none;
	font-family: var(--font-mono);
	font-size: 10px;
	font-weight: 500;
	letter-spacing: 0.14em;
	text-transform: uppercase;
	color: var(--ink-ghost);
	text-decoration: none;
	background: none;
	border: 0;
	cursor: pointer;
}

.sw-searchband__clear:hover { color: var(--accent); }

.sw-searchband__filters {
	margin-top: 18px;
	display: flex;
	align-items: center;
	gap: 10px;
	flex-wrap: wrap;
}

.sw-searchband__count {
	font-family: var(--font-serif);
	font-size: 16.5px;
	color: var(--ink-muted);
	margin-right: 8px;
	line-height: 1.4;
}

.sw-searchband__spacer { flex: 1 1 auto; }

.sw-sort {
	font-family: var(--font-mono);
	font-size: 11px;
	font-weight: 500;
	letter-spacing: 0.10em;
	text-transform: uppercase;
	color: var(--ink-faint);
	text-decoration: none;
	line-height: 1.4;
}

.sw-sort:hover { color: var(--accent); }

.sw-result {
	padding: 22px 0;
	border-bottom: 1px solid var(--rule);
}

.sw-result:first-child { padding-top: 0; }

.sw-result__title {
	margin-top: 8px;
	font-family: var(--font-serif);
	font-size: 26px;
	font-weight: 600;
	line-height: 1.2;
	color: var(--ink);
	text-wrap: pretty;
}

.sw-result__snippet {
	margin: 8px 0 0;
	font-family: var(--font-serif);
	font-size: 17px;
	line-height: 1.6;
	color: var(--ink-soft);
	max-width: 70ch;
	text-wrap: pretty;
}

/* Relevanssi is configured to emit this class; the inline style in the
   mockup is expressed here so highlighting is not plugin-styled. */
mark,
.sw-highlight,
.sw-result__snippet mark {
	background: var(--highlight);
	color: var(--ink);
	padding: 0 2px;
}

.sw-empty {
	padding: 8px 0 0;
	font-family: var(--font-serif);
	font-size: 19px;
	line-height: 1.7;
	color: var(--ink-soft);
	max-width: 62ch;
}

/* =========================================================================
   13. About page
   ========================================================================= */

.sw-about__rail img {
	width: 100%;
	display: block;
	filter: grayscale(1) contrast(1.05);
}

.sw-about__rail-block {
	margin-top: 22px;
	padding-top: 18px;
	border-top: 1px solid var(--rule);
}

.sw-about__rail-block:first-of-type { margin-top: 20px; }

.sw-about__elsewhere {
	margin-top: 8px;
	display: flex;
	flex-direction: column;
	gap: 4px;
}

.sw-about__elsewhere a {
	font-family: var(--font-serif);
	font-size: 16px;
	color: var(--ink);
	text-decoration: none;
	line-height: 1.5;
}

.sw-about__elsewhere a:hover { color: var(--accent); }

.sw-page__title {
	margin: 0;
	font-family: var(--font-serif);
	font-size: 52px;
	font-weight: 600;
	line-height: 1.02;
	letter-spacing: -0.025em;
	color: var(--ink);
	text-wrap: pretty;
}

.sw-about__body { margin-top: 22px; }

.sw-content.sw-about__body > p {
	font-family: var(--font-serif);
	font-size: 19.5px;
	line-height: 1.7;
	color: var(--ink-soft);
	max-width: 62ch;
	text-wrap: pretty;
}

.sw-content.sw-about__body > p + p { margin-top: 20px; }

/* First paragraph reads as the lead. */
.sw-content.sw-about__body > p:first-of-type {
	font-size: 21px;
	line-height: 1.68;
	color: var(--ink-body);
}

.sw-facts {
	margin: 34px 0 0;
	padding: 24px 0;
	border-top: 1px solid var(--rule);
	border-bottom: 1px solid var(--rule);
	display: grid;
	grid-template-columns: 1fr 1fr;
	gap: 18px 36px;
}

.sw-facts__value {
	margin-top: 5px;
	font-family: var(--font-serif);
	font-size: 18px;
	color: var(--ink);
	line-height: 1.4;
	text-wrap: pretty;
}

.sw-about__contact-title {
	margin: 40px 0 0;
	font-family: var(--font-serif);
	font-size: 32px;
	font-weight: 600;
	letter-spacing: -0.02em;
	color: var(--ink);
	line-height: 1.15;
}

.sw-about__contact-intro {
	margin: 10px 0 0;
	font-family: var(--font-serif);
	font-size: 18px;
	line-height: 1.6;
	color: var(--ink-soft);
	max-width: 56ch;
}

.sw-about__form { margin-top: 20px; max-width: 600px; }

.sw-copyright-notice {
	margin: 36px 0 0;
	padding-top: 20px;
	border-top: 1px solid var(--rule);
	font-family: var(--font-mono);
	font-size: 11px;
	font-weight: 400;
	line-height: 1.7;
	color: var(--ink-ghost);
	max-width: 62ch;
}

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

.sw-pagination {
	padding: 34px 0 0;
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: 20px;
	flex-wrap: wrap;
}

.sw-pagination__numbers {
	display: flex;
	gap: 6px;
	align-items: center;
	flex-wrap: wrap;
	font-family: var(--font-mono);
	font-size: 12.5px;
	font-weight: 500;
	color: var(--ink-soft);
}

.sw-pagination__numbers .page-numbers {
	padding: 7px 12px;
	border: 1px solid var(--rule-pill);
	color: var(--ink-soft);
	text-decoration: none;
	line-height: 1.2;
	transition: color 120ms ease, border-color 120ms ease;
}

.sw-pagination__numbers .page-numbers:hover,
.sw-pagination__numbers .page-numbers:focus-visible {
	color: var(--accent);
	border-color: var(--accent);
}

.sw-pagination__numbers .page-numbers.current {
	background: var(--ink);
	border-color: var(--ink);
	color: var(--paper);
}

.sw-pagination__numbers .page-numbers.dots {
	padding: 0 6px;
	border: 0;
	color: var(--ink-ghost);
}

/* The prev/next arrows live in the right-hand link, not the number row. */
.sw-pagination__numbers .prev,
.sw-pagination__numbers .next { display: none; }

/* =========================================================================
   15. Post content — must degrade across ten years of pasted markup
   ========================================================================= */

.sw-content {
	font-family: var(--font-serif);
	font-size: 20px;
	line-height: 1.72;
	color: var(--ink-body);
}

.sw-content > * { max-width: var(--measure); }

.sw-content p {
	margin: 20px 0 0;
	text-wrap: pretty;
}

.sw-content > p:first-child { margin-top: 0; }

.sw-content h1,
.sw-content h2,
.sw-content h3,
.sw-content h4,
.sw-content h5,
.sw-content h6 {
	font-family: var(--font-serif);
	font-weight: 600;
	color: var(--ink);
	line-height: 1.25;
	text-wrap: pretty;
	margin: 36px 0 0;
}

.sw-content h1 { font-size: 30px; }
.sw-content h2 { font-size: 25px; }
.sw-content h3 { font-size: 22px; }
.sw-content h4,
.sw-content h5,
.sw-content h6 { font-size: 20px; }

.sw-content h2 + p,
.sw-content h3 + p,
.sw-content h4 + p { margin-top: 14px; }

/* Paragraphs that are nothing but a short bold run — Sam's "**Introduction**"
   and "**1.**" pattern — are promoted to headings by a content filter. */
.sw-content .sw-content__heading {
	margin: 36px 0 0;
	font-size: 25px;
	font-weight: 600;
	color: var(--ink);
	line-height: 1.3;
}

.sw-content .sw-content__heading + p { margin-top: 14px; }

.sw-content a { color: var(--accent); text-decoration: underline; text-decoration-thickness: 1px; text-underline-offset: 0.16em; }
.sw-content a:hover { color: var(--ink); }

.sw-content strong, .sw-content b { font-weight: 600; }
.sw-content em, .sw-content i { font-style: italic; }

.sw-content ul,
.sw-content ol {
	margin: 20px 0 0;
	padding-left: 1.4em;
}

.sw-content li { margin-top: 8px; }
.sw-content li > ul,
.sw-content li > ol { margin-top: 8px; }

.sw-content li::marker { color: var(--ink-faint); }

.sw-content blockquote {
	margin: 30px 0 0;
	padding: 0 0 0 22px;
	border-left: 2px solid var(--accent);
	font-family: var(--font-serif);
	font-style: italic;
	font-size: 18.5px;
	line-height: 1.60;
	color: var(--ink-soft);
	max-width: 60ch;
}

.sw-content blockquote p { margin-top: 14px; font-size: inherit; line-height: inherit; }
.sw-content blockquote > p:first-child { margin-top: 0; }

.sw-content blockquote cite,
.sw-content blockquote .sw-cite {
	display: block;
	margin-top: 10px;
	font-style: normal;
	font-family: var(--font-mono);
	font-size: 10.5px;
	font-weight: 500;
	letter-spacing: 0.10em;
	text-transform: uppercase;
	color: var(--ink-faint);
}

/* Pull quote — only rendered when a quote is explicitly marked as one. */
.sw-content .sw-pullquote,
.sw-content blockquote.pullquote,
.sw-content .wp-block-pullquote {
	margin: 34px 0;
	padding: 18px 0;
	border: 0;
	border-top: 1px solid var(--rule);
	border-bottom: 1px solid var(--rule);
	font-family: var(--font-serif);
	font-style: normal;
	font-size: 26px;
	font-weight: 600;
	line-height: 1.34;
	color: var(--ink);
	max-width: 44ch;
	text-wrap: pretty;
}

.sw-content .sw-pullquote p,
.sw-content blockquote.pullquote p,
.sw-content .wp-block-pullquote p { font-size: inherit; line-height: inherit; margin-top: 0; }

.sw-content hr {
	margin: 40px 0;
	border: 0;
	border-top: 3px double var(--rule-strong);
	max-width: var(--measure);
}

.sw-content img,
.sw-content iframe,
.sw-content video { display: block; max-width: 100%; height: auto; }

.sw-content figure { margin: 30px 0 0; }

.sw-content figcaption,
.sw-content .wp-caption-text {
	margin-top: 8px;
	font-family: var(--font-mono);
	font-size: 11px;
	line-height: 1.5;
	color: var(--ink-faint);
}

.sw-content .wp-caption { max-width: 100%; height: auto; }
.sw-content .wp-caption img { margin: 0; }

.sw-content .alignleft {
	float: left;
	margin: 6px 26px 18px 0;
	max-width: 50%;
}

.sw-content .alignright {
	float: right;
	margin: 6px 0 18px 26px;
	max-width: 50%;
}

.sw-content .aligncenter {
	display: block;
	margin-left: auto;
	margin-right: auto;
}

.sw-content .alignnone { margin: 24px 0 0; }

.sw-content .alignwide,
.sw-content .alignfull { max-width: 100%; }

.sw-content table {
	margin: 24px 0 0;
	width: 100%;
	font-size: 17px;
}

.sw-content th,
.sw-content td {
	padding: 8px 12px;
	border-bottom: 1px solid var(--rule);
	text-align: left;
	vertical-align: top;
}

.sw-content th {
	font-family: var(--font-ui);
	font-size: 12px;
	font-weight: 600;
	letter-spacing: 0.08em;
	text-transform: uppercase;
	color: var(--ink-soft);
}

.sw-content pre {
	margin: 24px 0 0;
	padding: 16px 18px;
	background: var(--paper-2);
	font-family: var(--font-mono);
	font-size: 14px;
	line-height: 1.6;
	overflow-x: auto;
}

.sw-content code {
	font-family: var(--font-mono);
	font-size: 0.88em;
	background: var(--paper-2);
	padding: 1px 4px;
}

.sw-content pre code { background: none; padding: 0; font-size: inherit; }

/* Old pastes carry inline <font> tags and hard-coded colours. Neutralise the
   colour so the palette holds, but leave the rest of the markup alone. */
.sw-content font { font-family: inherit !important; color: inherit !important; }
.sw-content [style*="font-family"] { font-family: var(--font-serif) !important; }
.sw-content [style*="background-color: rgb(255, 255, 255)"] { background: none !important; }

.sw-content .gallery {
	display: grid;
	grid-template-columns: repeat(auto-fit, minmax(160px, 1fr));
	gap: 14px;
	margin: 26px 0 0;
	max-width: 100%;
}

.sw-content .gallery-item { margin: 0; width: auto !important; }

.sw-content > :last-child { margin-bottom: 0; }
.sw-content::after { content: ""; display: table; clear: both; }

/* =========================================================================
   16. Forms — theme fields and Gravity Forms
   ========================================================================= */

.sw-field {
	display: block;
	width: 100%;
	padding: 9px 12px;
	background: var(--field-bg);
	border: 1px solid var(--field-border);
	font-family: var(--font-ui);
	font-size: 13px;
	color: var(--ink);
	line-height: 1.5;
}

.sw-field::placeholder { color: var(--ink-ghost); }

.sw-field-label {
	display: block;
	margin-bottom: 6px;
	font-family: var(--font-mono);
	font-size: 10px;
	font-weight: 500;
	letter-spacing: 0.16em;
	text-transform: uppercase;
	color: var(--ink-faint);
}

/* Gravity Forms. Restyled to the design; GF's own grid columns are kept, so
   set Name and Email to "One Half" width in the form editor to get the
   two-column row shown in the design. */
.sw-about__form .gform_wrapper.gravity-theme,
.sw-about__form .gform_wrapper {
	--gf-form-gap-y: 12px;
	--gf-form-gap-x: 12px;
	--gf-color-primary: var(--ink);
	font-family: var(--font-ui);
	margin: 0;
}

.sw-about__form .gform_wrapper .gform_fields { row-gap: 12px; column-gap: 12px; }

.sw-about__form .gform_wrapper .gfield_label,
.sw-about__form .gform_wrapper legend.gfield_label {
	display: block;
	margin: 0 0 6px;
	font-family: var(--font-mono);
	font-size: 10px;
	font-weight: 500;
	letter-spacing: 0.16em;
	text-transform: uppercase;
	color: var(--ink-faint);
}

.sw-about__form .gform_wrapper .gfield_required { color: var(--accent); }

.sw-about__form .gform_wrapper input[type="text"],
.sw-about__form .gform_wrapper input[type="email"],
.sw-about__form .gform_wrapper input[type="url"],
.sw-about__form .gform_wrapper input[type="tel"],
.sw-about__form .gform_wrapper select,
.sw-about__form .gform_wrapper textarea {
	width: 100%;
	padding: 10px 12px;
	background: var(--field-bg);
	border: 1px solid var(--field-border);
	border-radius: 0;
	font-family: var(--font-ui);
	font-size: 14px;
	color: var(--ink);
	line-height: 1.5;
	box-shadow: none;
}

.sw-about__form .gform_wrapper textarea { height: 88px; min-height: 88px; resize: vertical; }

.sw-about__form .gform_wrapper input:focus,
.sw-about__form .gform_wrapper textarea:focus,
.sw-about__form .gform_wrapper select:focus {
	outline: 2px solid var(--accent);
	outline-offset: 2px;
	border-color: var(--field-border);
}

.sw-about__form .gform_wrapper .gform_footer { margin: 16px 0 0; padding: 0; }

.sw-about__form .gform_wrapper .gform_footer input[type="submit"],
.sw-about__form .gform_wrapper .gform_button {
	width: auto;
	padding: 11px 28px;
	background: var(--ink);
	border: 1px solid var(--ink);
	border-radius: 0;
	color: var(--paper);
	font-family: var(--font-ui);
	font-size: 11px;
	font-weight: 600;
	letter-spacing: 0.14em;
	text-transform: uppercase;
	cursor: pointer;
	transition: background-color 120ms ease, border-color 120ms ease;
}

.sw-about__form .gform_wrapper .gform_footer input[type="submit"]:hover,
.sw-about__form .gform_wrapper .gform_button:hover {
	background: var(--accent);
	border-color: var(--accent);
}

.sw-about__form .gform_wrapper .gfield_description,
.sw-about__form .gform_wrapper .gform_validation_errors,
.sw-about__form .gform_wrapper .validation_message {
	font-family: var(--font-ui);
	font-size: 13px;
	line-height: 1.5;
	border-radius: 0;
}

.sw-about__form .gform_wrapper .validation_message,
.sw-about__form .gform_wrapper .gform_validation_errors > h2 { color: var(--accent); }

.sw-about__form .gform_wrapper .gform_validation_errors {
	background: var(--paper-2);
	border: 1px solid var(--field-border);
	box-shadow: none;
	padding: 12px 14px;
}

.sw-about__form .gform_confirmation_message {
	font-family: var(--font-serif);
	font-size: 19px;
	line-height: 1.6;
	color: var(--ink-body);
	padding: 18px 0;
	border-top: 1px solid var(--rule);
	border-bottom: 1px solid var(--rule);
}

.sw-notice {
	padding: 14px 16px;
	background: var(--paper-2);
	border-left: 2px solid var(--accent);
	font-family: var(--font-ui);
	font-size: 14px;
	line-height: 1.55;
	color: var(--ink-soft);
}

/* =========================================================================
   17. Sidebar and widgets
   ========================================================================= */

.sw-sidebar {
	display: flex;
	flex-direction: column;
	min-width: 0;
}

.sw-widget {
	padding: 26px 0;
	border-bottom: 1px solid var(--rule);
}

.sw-widget:first-child { padding-top: 0; padding-bottom: 24px; }
.sw-widget:last-child { padding-bottom: 0; border-bottom: 0; }

.sw-widget__title {
	font-family: var(--font-mono);
	font-size: 10px;
	font-weight: 500;
	letter-spacing: 0.18em;
	text-transform: uppercase;
	color: var(--ink-faint);
	line-height: 1.4;
}

.sw-widget p {
	margin: 10px 0 0;
	font-family: var(--font-serif);
	font-size: 15px;
	line-height: 1.60;
	color: var(--ink-soft);
}

.sw-widget__photo {
	margin-top: 14px;
	width: 100%;
	display: block;
	filter: grayscale(1) contrast(1.05);
}

.sw-widget__link {
	margin-top: 12px;
	display: inline-block;
	font-family: var(--font-mono);
	font-size: 10.5px;
	font-weight: 500;
	letter-spacing: 0.10em;
	text-transform: uppercase;
	color: var(--ink);
	text-decoration: none;
	border-bottom: 1px solid var(--accent);
	padding-bottom: 2px;
}

.sw-widget__link:hover,
.sw-widget__link:focus-visible { color: var(--accent); }

.sw-widget ul {
	list-style: none;
	margin: 14px 0 0;
	padding: 0;
	display: flex;
	flex-direction: column;
	gap: 14px;
}

.sw-widget li { margin: 0; }

.sw-widget li > a { display: block; }

.sw-widget__post-title {
	display: block;
	font-family: var(--font-serif);
	font-size: 16px;
	font-weight: 600;
	line-height: 1.30;
	color: var(--ink);
	text-wrap: pretty;
}

.sw-widget__post-date {
	display: block;
	margin-top: 3px;
	font-family: var(--font-mono);
	font-size: 11px;
	font-weight: 400;
	color: var(--ink-faint);
}

.sw-years {
	margin-top: 12px;
	display: flex;
	flex-wrap: wrap;
	gap: 6px;
	list-style: none;
	padding: 0;
	flex-direction: row;
}

.sw-years a,
.sw-years li > a {
	display: inline-block;
	padding: 5px 10px;
	border: 1px solid rgba(28, 26, 23, 0.2);
	font-family: var(--font-mono);
	font-size: 12px;
	font-weight: 400;
	color: #3a352e;
	text-decoration: none;
	line-height: 1.3;
	transition: color 120ms ease, border-color 120ms ease;
}

.sw-years a:hover,
.sw-years a:focus-visible { color: var(--accent); border-color: var(--accent); }

.sw-subscribe { margin-top: 12px; display: flex; flex-direction: column; gap: 8px; }
.sw-subscribe .sw-btn { text-align: center; width: 100%; padding: 10px 12px; }

.sw-widget p.sw-widget__copyright {
	margin: 0;
	font-family: var(--font-mono);
	font-size: 11px;
	font-weight: 400;
	line-height: 1.60;
	color: var(--ink-ghost);
}

/* Core/plugin widgets dropped into these areas inherit the same chrome. */
.sw-widget .widget-title,
.sw-widget .wp-block-heading {
	font-family: var(--font-mono);
	font-size: 10px;
	font-weight: 500;
	letter-spacing: 0.18em;
	text-transform: uppercase;
	color: var(--ink-faint);
	margin: 0;
}

.sw-widget .search-form,
.sw-widget .wp-block-search__inside-wrapper { display: block; }

/* =========================================================================
   18. Sidebar search field
   ========================================================================= */

.sw-searchbox {
	display: flex;
	align-items: center;
	gap: 10px;
	padding: 9px 12px;
	background: var(--field-bg);
	border: 1px solid var(--field-border);
}

.sw-searchbox:focus-within { outline: 2px solid var(--accent); outline-offset: 2px; }

.sw-searchbox__icon { flex: none; display: block; color: var(--ink-faint); }

.sw-searchbox__input {
	flex: 1 1 auto;
	min-width: 0;
	border: 0;
	background: none;
	padding: 0;
	font-family: var(--font-ui);
	font-size: 13px;
	color: var(--ink);
	line-height: 1.5;
}

.sw-searchbox__input::placeholder { color: var(--ink-faint); }
.sw-searchbox__input:focus { outline: none; }
.sw-searchbox__submit { position: absolute; left: -9999px; }

/* =========================================================================
   19. Footer, 404, comments
   ========================================================================= */

.sw-footer {
	padding: 26px var(--gutter) 40px;
	border-top: 1px solid var(--rule);
	display: flex;
	align-items: baseline;
	justify-content: space-between;
	gap: 18px;
	flex-wrap: wrap;
}

.sw-footer__nav ul {
	display: flex;
	gap: 22px;
	list-style: none;
	margin: 0;
	padding: 0;
	flex-wrap: wrap;
}

.sw-footer__nav a {
	font-family: var(--font-ui);
	font-size: 11px;
	font-weight: 500;
	letter-spacing: 0.14em;
	text-transform: uppercase;
	color: var(--ink-soft);
	text-decoration: none;
}

.sw-footer__nav a:hover { color: var(--accent); }

.sw-footer__copyright {
	font-family: var(--font-mono);
	font-size: 11px;
	line-height: 1.6;
	color: var(--ink-ghost);
}

.sw-404 { padding: 64px var(--gutter) 72px; max-width: 62ch; }

.sw-404__title {
	font-family: var(--font-serif);
	font-size: 46px;
	font-weight: 600;
	line-height: 1.05;
	letter-spacing: -0.02em;
	color: var(--ink);
}

.sw-404__text {
	margin-top: 16px;
	font-family: var(--font-serif);
	font-size: 19px;
	line-height: 1.7;
	color: var(--ink-soft);
}

.sw-404__search { margin-top: 24px; max-width: 420px; }

.sw-comments { padding: 26px 0 52px; border-top: 1px solid var(--rule); }
.sw-comments__title {
	font-family: var(--font-serif);
	font-size: 25px;
	font-weight: 600;
	color: var(--ink);
}
.sw-comments ol { list-style: none; padding: 0; margin: 18px 0 0; }
.sw-comments .comment-body { padding: 16px 0; border-bottom: 1px solid var(--rule); }

/* =========================================================================
   19b. Page body, About prose and rail blocks
   ========================================================================= */

.sw-grid--single-column { grid-template-columns: minmax(0, 1fr); }
.sw-grid--single-column .sw-grid__main { max-width: 74ch; }

/* The About page body is edited as ordinary page content, so it needs the
   same heading and sign-off treatment the design shows. */
.sw-content.sw-about__body h2 { font-size: 28px; margin-top: 34px; }
.sw-content.sw-about__body h3 { font-size: 22px; margin-top: 28px; }

.sw-content.sw-about__body .sw-signoff {
	margin-top: 26px;
	font-style: italic;
	font-size: 18px;
	color: var(--ink-muted);
}

/* A widget dropped into an About-rail block supplies its own rule. */
.sw-about__rail-block .sw-widget {
	padding: 0;
	border: 0;
}

/* =========================================================================
   20. Tablet — 860px to 1100px
   ========================================================================= */

@media (max-width: 1100px) {
	:root {
		--gutter: 32px;
		--gutter-band: 32px;
		--sidebar-w: 220px;
		--grid-gap: 40px;
	}

	.sw-single__title { font-size: 42px; }
	.sw-page__title { font-size: 42px; }
	.sw-archive-head__title { font-size: 40px; }
	.sw-entry--lead .sw-entry__title { font-size: 38px; }
	.sw-entry__title { font-size: 33px; }

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

	.sw-nav__list { gap: 24px; }
	.sw-nav a { font-size: 11.5px; letter-spacing: 0.12em; }

	.sw-list__item { grid-template-columns: 104px minmax(0, 1fr); gap: 20px; }
}

/* =========================================================================
   21. Mobile — below 860px
   ========================================================================= */

@media (max-width: 860px) {
	:root {
		--gutter: 20px;
		--gutter-band: 20px;
		--measure: none;
	}

	body { font-size: 18px; line-height: 1.7; }

	/* One column; the sidebar follows the content. */
	.sw-grid,
	.sw-grid--about {
		grid-template-columns: minmax(0, 1fr);
		gap: 0;
		padding: 32px var(--gutter) 40px;
	}

	.sw-sidebar {
		margin-top: 36px;
		padding-top: 30px;
		border-top: 3px double var(--rule-strong);
	}

	/* Utility bar: the section descriptor is decorative, so it goes first. */
	.sw-utility { justify-content: center; padding: 9px var(--gutter-band); }
	.sw-utility__tagline { display: none; }
	.sw-utility__links { gap: 26px; }

	.sw-masthead,
	.sw-masthead--home { padding: 26px var(--gutter-band) 18px; gap: 10px; }
	.sw-masthead__logo img,
	.sw-masthead--home .sw-masthead__logo img { height: 48px; }
	.sw-masthead__title { font-size: 32px; }
	.sw-masthead__tagline { font-size: 9.5px; letter-spacing: 0.18em; }

	/* Nav collapses to a single toggle revealing a stacked list. */
	.sw-nav { padding: 0 var(--gutter-band); }

	.sw-nav__toggle {
		display: flex;
		align-items: center;
		justify-content: center;
		gap: 10px;
		width: 100%;
		min-height: 48px;
		padding: 12px 0;
		background: none;
		border: 0;
		font-family: var(--font-ui);
		font-size: 12px;
		font-weight: 600;
		letter-spacing: 0.14em;
		text-transform: uppercase;
		color: var(--ink);
		cursor: pointer;
	}

	.sw-nav__toggle-icon {
		display: block;
		width: 16px;
		height: 10px;
		border-top: 1.5px solid currentColor;
		border-bottom: 1.5px solid currentColor;
		position: relative;
	}

	.sw-nav__toggle-icon::after {
		content: "";
		position: absolute;
		left: 0;
		top: 50%;
		width: 100%;
		border-top: 1.5px solid currentColor;
	}

	.sw-nav.is-open .sw-nav__toggle-icon { border-bottom-color: transparent; }

	.js .sw-nav__list { display: none; }
	.js .sw-nav.is-open .sw-nav__list { display: flex; }

	.sw-nav__list {
		flex-direction: column;
		align-items: stretch;
		gap: 0;
		padding-bottom: 8px;
	}

	.sw-nav__list li { border-top: 1px solid var(--rule); }

	.sw-nav a {
		display: flex;
		align-items: center;
		min-height: 44px;
		font-size: 13px;
	}

	.sw-nav__list .sub-menu { display: contents; }
	.sw-nav__list .sub-menu a { padding-left: 18px; }

	/* Headlines */
	.sw-single__title { font-size: 34px; max-width: none; }
	.sw-page__title { font-size: 34px; }
	.sw-archive-head__title { font-size: 34px; }
	.sw-entry--lead .sw-entry__title,
	.sw-entry__title { font-size: 30px; }
	.sw-list__title { font-size: 22px; }
	.sw-result__title { font-size: 22px; }
	.sw-about__contact-title { font-size: 27px; }
	.sw-404__title { font-size: 34px; }

	/* Body */
	.sw-content,
	.sw-content p,
	.sw-entry__body,
	.sw-entry__body p { font-size: 18px; line-height: 1.7; }

	.sw-content > * { max-width: none; }
	.sw-content blockquote { max-width: none; font-size: 17.5px; }
	.sw-content .sw-pullquote,
	.sw-content .wp-block-pullquote { font-size: 22px; max-width: none; }
	.sw-content .sw-content__heading,
	.sw-content h2 { font-size: 22px; }

	/* Floated images are unhelpful at this width. */
	.sw-content .alignleft,
	.sw-content .alignright {
		float: none;
		margin: 24px 0 0;
		max-width: 100%;
	}

	.sw-entry { padding-bottom: 34px; }
	.sw-entry + .sw-entry { padding-top: 30px; }

	/* Archive rows stack: date above title. */
	.sw-list__item {
		grid-template-columns: minmax(0, 1fr);
		gap: 6px;
		padding: 20px 0;
	}

	.sw-list__date {
		padding-top: 0;
		display: flex;
		flex-wrap: wrap;
		align-items: baseline;
		gap: 8px;
	}

	.sw-list__read { margin-top: 0; }

	.sw-list__read::before {
		content: "·";
		margin-right: 8px;
		color: var(--divider);
	}
	.sw-list__excerpt { max-width: none; }

	.sw-archive-head { padding: 30px var(--gutter) 22px; }
	.sw-archive-head__meta { gap: 8px 14px; }
	.sw-archive-head__divider { display: none; }

	.sw-searchband { padding: 26px var(--gutter) 22px; }
	.sw-searchband__form { padding: 12px 14px; }
	.sw-searchband__input { font-size: 17px; }
	.sw-searchband__spacer { display: none; }
	.sw-result__snippet { max-width: none; }

	/* Byline and share wrap rather than compress. */
	.sw-byline { gap: 10px 12px; }
	.sw-byline__spacer { display: none; }
	.sw-byline .sw-share { flex-basis: 100%; }
	.sw-share { gap: 14px; margin-top: 26px; }

	/* Tap targets for share and pagination. */
	.sw-share__link { min-height: 32px; display: inline-flex; align-items: center; }
	.sw-pagination__numbers .page-numbers { min-width: 40px; text-align: center; padding: 9px 10px; }
	.sw-pagination { padding-top: 26px; gap: 16px; }

	.sw-author { gap: 18px; margin-top: 34px; }
	.sw-author__photo { width: 76px; height: 76px; }
	.sw-author__bio { max-width: none; font-size: 15.5px; }

	.sw-adjacent {
		grid-template-columns: minmax(0, 1fr);
		gap: 20px;
		padding-bottom: 36px;
	}

	.sw-adjacent__cell--next {
		text-align: left;
		border-left: 0;
		padding-left: 0;
		border-top: 1px solid var(--rule);
		padding-top: 20px;
	}

	/* About page */
	.sw-about__rail img,
	.sw-widget__photo { max-width: 300px; }
	.sw-about__body > p,
	.sw-about__body > p:first-of-type,
	.sw-copyright-notice,
	.sw-about__contact-intro { max-width: none; }
	.sw-content.sw-about__body > p:first-of-type { font-size: 19.5px; }
	.sw-about__body > p { font-size: 18px; }
	.sw-content.sw-about__body h2 { font-size: 24px; }
	.sw-facts { grid-template-columns: minmax(0, 1fr); gap: 16px; }
	.sw-about__form { max-width: none; }
	.sw-about__form .gform_wrapper .gform_fields { grid-template-columns: minmax(0, 1fr) !important; }
	.sw-about__form .gform_wrapper .gfield { grid-column: 1 / -1 !important; }

	.sw-footer { padding: 22px var(--gutter) 32px; }
	.sw-404 { padding: 44px var(--gutter) 52px; }
}

/* =========================================================================
   22. Small phones — down to 320px
   ========================================================================= */

@media (max-width: 400px) {
	.sw-single__title,
	.sw-page__title,
	.sw-archive-head__title,
	.sw-404__title { font-size: 29px; }

	.sw-entry--lead .sw-entry__title,
	.sw-entry__title { font-size: 26px; }

	.sw-masthead__logo img,
	.sw-masthead--home .sw-masthead__logo img { height: 42px; }

	.sw-meta { gap: 8px; font-size: 10px; }
	.sw-utility { font-size: 10px; }
	.sw-utility__links { gap: 18px; }

	.sw-author { flex-direction: column; gap: 14px; }

	.sw-pagination { justify-content: flex-start; }
	.sw-pagination__numbers { font-size: 12px; }

	.sw-searchband__filters { gap: 8px; }
}

/* =========================================================================
   23. Motion and print
   ========================================================================= */

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

@media print {
	.sw-utility,
	.sw-nav,
	.sw-sidebar,
	.sw-share,
	.sw-adjacent,
	.sw-pagination,
	.sw-footer,
	.sw-skip-link { display: none !important; }

	body { background: #fff; color: #000; font-size: 12pt; line-height: 1.5; }
	.sw-site { max-width: none; }
	.sw-grid { display: block; padding: 0; }
	.sw-content > *, .sw-content { max-width: none; }
	.sw-single__title { font-size: 24pt; max-width: none; }
	.sw-content a { color: #000; }
	.sw-content a[href^="http"]::after { content: " (" attr(href) ")"; font-size: 9pt; color: #444; }
	.sw-masthead { padding: 0 0 12pt; }
}
