/*
Theme Name: DatBTrue
Theme URI: https://datbtrue.org
Author: datbtrue.org
Description: An annotated reading room for one author's archive and its forum. Oxblood ink on parchment, a typographic masthead, scholarly rules and a compact topic index; decoration only where it orders the reading.
Version: 0.2.0
Requires at least: 6.4
Requires PHP: 8.0
License: GPL-2.0-or-later
Text Domain: dbt
*/

/* ---------- fonts ---------- */
/* Self-hosted variable faces already shipped with the bundled default themes on this install.
   If those themes are removed, the stacks below fall back to system serifs. */
@font-face {
	font-family: "DBT Display";
	src: url("../twentytwentyfive/assets/fonts/vollkorn/Vollkorn-VariableFont_wght.woff2") format("woff2");
	font-weight: 400 900; font-style: normal; font-display: swap;
}
@font-face {
	font-family: "DBT Display";
	src: url("../twentytwentyfive/assets/fonts/vollkorn/Vollkorn-Italic-VariableFont_wght.woff2") format("woff2");
	font-weight: 400 900; font-style: italic; font-display: swap;
}
@font-face {
	font-family: "DBT Text";
	src: url("../twentytwentythree/assets/fonts/source-serif-pro/SourceSerif4Variable-Roman.ttf.woff2") format("woff2");
	font-weight: 200 900; font-style: normal; font-display: swap;
}
@font-face {
	font-family: "DBT Text";
	src: url("../twentytwentythree/assets/fonts/source-serif-pro/SourceSerif4Variable-Italic.ttf.woff2") format("woff2");
	font-weight: 200 900; font-style: italic; font-display: swap;
}

/* ---------- tokens ---------- */
:root {
	--paper: #f3ecdf;          /* parchment */
	--paper-2: #fbf7ee;        /* a fresh leaf, for rows and slips */
	--paper-3: #e9dfcc;        /* worn edge */
	--ink: #221a17;
	--ink-soft: #43362f;
	--muted: #6e5f55;
	--rule: #d9ccb6;
	--rule-strong: #b9a68a;
	--rule-input: #8a7663;     /* 3:1 against parchment, for field boundaries */
	--accent: #6b1e24;         /* oxblood */
	--accent-deep: #3b1216;
	--accent-soft: #ead6cf;
	--ok: #2f5d46;
	--radius: 2px;
	--wrap: 68rem;
	--measure: 42rem;
	--display: "DBT Display", "Iowan Old Style", "Palatino Linotype", Palatino, Georgia, serif;
	--serif: "DBT Text", "Iowan Old Style", "Palatino Linotype", Palatino, Georgia, "Times New Roman", serif;
	--sans: system-ui, -apple-system, "Segoe UI", Roboto, Helvetica, Arial, sans-serif;
	--mono: ui-monospace, "SF Mono", Menlo, Consolas, monospace;
	/* Thick-thin rule, drawn as two backgrounds so it needs no extra markup. */
	--rule-double: linear-gradient(var(--ink), var(--ink)) top / 100% 3px no-repeat,
		linear-gradient(var(--ink), var(--ink)) 0 5px / 100% 1px no-repeat;
}

/* ---------- reset ---------- */
*, *::before, *::after { box-sizing: border-box; }
html { -webkit-text-size-adjust: 100%; scroll-behavior: smooth; scroll-padding-top: 1.5rem; }
body {
	margin: 0;
	background: var(--paper);
	color: var(--ink);
	font-family: var(--serif);
	font-size: 17px;
	line-height: 1.65;
	font-optical-sizing: auto;
	text-rendering: optimizeLegibility;
	-webkit-font-smoothing: antialiased;
}
::selection { background: var(--accent-soft); color: var(--ink); }
img, svg, video { max-width: 100%; height: auto; display: block; }
a { color: var(--ink); text-decoration-color: var(--rule-strong); text-decoration-thickness: 1px; text-underline-offset: .18em; }
a:hover { color: var(--accent); text-decoration-color: currentColor; }
:focus-visible { outline: 2px solid var(--accent); outline-offset: 2px; }
hr { border: 0; border-top: 1px solid var(--rule-strong); margin: 2.5rem 0; }
.screen-reader-text {
	position: absolute; width: 1px; height: 1px; overflow: hidden;
	clip: rect(0 0 0 0); clip-path: inset(50%); white-space: nowrap;
}
.skip-link {
	position: absolute; left: -9999px; top: 0; background: var(--accent); color: var(--paper-2);
	padding: .6rem 1rem; z-index: 100;
}
.skip-link:focus { left: 1rem; top: 1rem; }

/* ---------- layout ---------- */
.wrap { width: 100%; max-width: var(--wrap); margin-inline: auto; padding-inline: 1.25rem; }
.narrow { max-width: var(--measure); }
.site-main { display: block; padding-block: 2.5rem 5rem; }

/* ---------- masthead ---------- */
.site-header { background: var(--paper); }
.masthead { padding-block: 1.6rem 1.1rem; }
.brand { display: inline-flex; flex-direction: column; gap: .2rem; text-decoration: none; color: var(--ink); }
.brand:hover { color: var(--ink); }
.brand-name {
	font-family: var(--display); font-weight: 600;
	font-size: clamp(2.1rem, 1.35rem + 2.8vw, 3.4rem); line-height: .95; letter-spacing: -.025em;
}
.brand-tld { color: var(--accent); font-style: italic; font-weight: 400; letter-spacing: -.01em; }
.brand:hover .brand-name { text-decoration: underline; text-decoration-color: var(--accent); text-decoration-thickness: 2px; text-underline-offset: .12em; }
.brand-tagline { display: block; font-family: var(--serif); font-style: italic; font-size: 1.02rem; color: var(--muted); }

.site-nav-bar { background: var(--rule-double); padding-top: 6px; border-bottom: 1px solid var(--rule-strong); }
.site-nav .menu { display: flex; flex-wrap: wrap; gap: 0 1.75rem; list-style: none; margin: 0; padding: 0; }
.site-nav a {
	display: block; padding-block: .6rem .5rem;
	font-family: var(--serif); font-size: 1.02rem; font-variant-caps: all-small-caps; letter-spacing: .07em;
	text-decoration: none; color: var(--ink-soft);
	border-bottom: 2px solid transparent; margin-bottom: -1px;
}
.site-nav a:hover { color: var(--accent); }
.site-nav { display: flex; flex-wrap: wrap; justify-content: space-between; gap: 0 1.75rem; }
.site-account { margin-left: auto; }
.site-nav .current-menu-item > a, .site-nav .current_page_item > a, .site-nav a[aria-current="page"] { color: var(--accent); border-bottom-color: var(--accent); }

/* ---------- type ---------- */
h1, h2, h3, h4 { font-family: var(--display); font-weight: 550; line-height: 1.15; letter-spacing: -.012em; margin: 0 0 .6em; text-wrap: balance; }
h1 { font-size: clamp(2.1rem, 1.4rem + 2.4vw, 3.2rem); letter-spacing: -.02em; line-height: 1.06; }
h2 { font-size: clamp(1.45rem, 1.2rem + 1vw, 1.9rem); margin-top: 2.2em; }
h3 { font-size: 1.25rem; margin-top: 1.8em; }
p, ul, ol, blockquote { margin: 0 0 1.1em; }
.lede { font-size: 1.2rem; color: var(--ink-soft); }

/* ---------- page ---------- */
.page-header { padding-block: 2rem 1rem; }
.page-body { max-width: var(--measure); margin-inline: auto; font-family: var(--serif); font-size: 1.08rem; }
.page-header { max-width: calc(var(--measure) + 2.5rem); }
.page-body:has(.dbt-index), .page-body:has(table) { max-width: 52rem; }
.page:has(.dbt-index, table) .page-header { max-width: 54.5rem; }
.page-body:has(#wpforo) { max-width: none; font-family: var(--sans); }
.page:has(#wpforo) .page-header { max-width: var(--wrap); }
.page-body > .lede { max-width: var(--measure); }
.page-body > p:first-of-type { font-size: 1.14rem; color: var(--ink-soft); }
.page-body h2 { padding-top: .7rem; border-top: 1px solid var(--rule-strong); }
.page-body ul, .page-body ol { padding-left: 1.2rem; }
.page-body li { margin-bottom: .5rem; }
.page-body li::marker { color: var(--accent); }
.page-body a, .term-description a { text-decoration-color: var(--accent); }

/* The home document shares the reading measure; its opening spans the wrap. */
.home .page-header { padding: 0; }
.home .page-body { max-width: none; }
.home .page-body > :not(.hero) { max-width: var(--measure); margin-inline: auto; }
.hero {
	padding-block: 2.5rem 2rem; margin-bottom: 2.5rem; max-width: var(--measure); margin-inline: auto;
	border-bottom: 1px solid var(--rule-strong);
}
.hero-title { max-width: 16ch; font-size: clamp(2.5rem, 5.4vw, 4.4rem); font-weight: 600; line-height: 1.02; letter-spacing: -.03em; text-wrap: balance; }
.hero-lede { max-width: 52ch; font-size: 1.22rem; line-height: 1.6; color: var(--ink-soft); }
.hero-actions { display: flex; flex-wrap: wrap; gap: .65rem; margin: 1.6rem 0 0; }

/* Timeline: retain source links in every viewport. */
.page-body table { width: 100%; border-collapse: collapse; margin-block: 1.5rem 2.5rem; font-family: var(--serif); font-size: .96rem; line-height: 1.6; }
.page-body th, .page-body td { text-align: left; vertical-align: top; padding: 1.05rem .85rem; border-bottom: 1px solid var(--rule); overflow-wrap: anywhere; }
.page-body thead th { background: var(--rule-double); padding-top: calc(1.05rem + 6px); }
.page-body th { border-bottom: 1px solid var(--rule-strong); font-size: 1rem; font-weight: 600; font-variant-caps: all-small-caps; letter-spacing: .07em; color: var(--accent); }
.page-body td:first-child { width: 9rem; font-size: .9rem; font-weight: 600; font-variant-numeric: lining-nums tabular-nums; color: var(--ink); }
.page-body td:last-child { width: 26%; font-size: .85rem; color: var(--muted); }
.page-body td:last-child a { color: inherit; }

/* ---------- article ---------- */
.article-header { padding-block: 2rem 2rem; max-width: calc(var(--measure) + 2.5rem); }
.article-body, .dbt-provenance { margin-inline: auto; }
.article-footer { max-width: calc(var(--measure) + 2.5rem); }
.article-title { max-width: 30ch; font-weight: 560; }
/* The meta line reads as a catalogue card: author, extent, dates, between two rules. */
.article-meta {
	display: flex; flex-wrap: wrap; gap: .25rem 1rem; margin: 1.1rem 0 1.25rem; padding-block: .45rem;
	border-block: 1px solid var(--rule-strong);
	font-size: 1rem; font-variant-caps: all-small-caps; font-variant-numeric: lining-nums tabular-nums;
	letter-spacing: .06em; color: var(--muted);
}
.article-meta span:first-child { color: var(--accent); font-weight: 600; }
.article-meta span + span { border-left: 1px solid var(--rule-strong); padding-left: 1rem; }

/* Index terms: each list is labelled with its own aria-label, so no copy is invented. */
.tags { display: flex; flex-wrap: wrap; align-items: baseline; gap: .3rem .35rem; list-style: none; margin: 0 0 .45rem; padding: 0; }
.tags[aria-label]::before {
	content: attr(aria-label); content: attr(aria-label) / "";
	flex: 0 0 9.5rem; font-size: .98rem; font-style: italic; color: var(--muted);
}
.tag {
	display: inline-block;
	font-size: .9rem; line-height: 1.4; letter-spacing: .01em;
	border: 1px solid var(--rule-strong); border-radius: var(--radius); padding: .1rem .5rem; color: var(--ink-soft);
	background: transparent;
}
a.tag { text-decoration: none; }
a.tag:hover { border-color: var(--accent); color: var(--accent); background: var(--paper-2); }
.tags-topic .tag { color: var(--accent); border-color: color-mix(in srgb, var(--accent) 45%, var(--paper)); font-weight: 600; }

.article-body {
	max-width: var(--measure);
	font-family: var(--serif); font-size: 1.17rem; line-height: 1.72;
	overflow-wrap: break-word;
}
.article-body p { hyphens: auto; }
/* The opening line of the text is set in small capitals, as in a printed edition. */
.article-body > p:first-child::first-line,
.article-body > .article-notice + p::first-line { font-variant-caps: small-caps; letter-spacing: .03em; }
.article-body a { color: var(--accent); text-decoration-color: color-mix(in srgb, var(--accent) 40%, transparent); }
.article-body a:hover { text-decoration-color: currentColor; }
.article-body h2, .article-body h3 { font-family: var(--display); letter-spacing: -.01em; }
.article-body h2::before {
	content: ""; display: block; width: 2.5rem; height: 2px; margin-bottom: .7rem; background: var(--accent);
}
.article-body blockquote {
	margin-inline: 0; padding: .1rem 0 .1rem 1.25rem;
	border-left: 2px solid var(--accent); color: var(--ink-soft); font-size: .95em;
}
.article-body ul, .article-body ol { padding-left: 1.25rem; }
.article-body li { margin-bottom: .45rem; }
.article-body li::marker { color: var(--accent); }
.article-body code, .article-body pre { font-family: var(--mono); font-size: .85em; }
.article-body pre { padding: 1rem; overflow-x: auto; background: var(--paper-2); border: 1px solid var(--rule); }
.article-body table { width: 100%; border-collapse: collapse; font-size: .9em; }
.article-body th, .article-body td { padding: .45rem .6rem; border-bottom: 1px solid var(--rule); text-align: left; vertical-align: top; }

/* Provenance is set as an endnote under a thick-thin rule. */
.dbt-provenance {
	max-width: var(--measure); margin: 3.5rem auto 0; padding: 1.1rem 0 0;
	background: var(--rule-double); font-family: var(--serif); font-size: .95rem; line-height: 1.6; color: var(--muted);
}
.article-body .dbt-provenance h2, .dbt-provenance h2 {
	font-family: var(--serif); font-size: 1.02rem; font-weight: 600; font-variant-caps: all-small-caps; letter-spacing: .09em;
	margin: 0 0 .35rem; border: 0; padding: 0; color: var(--accent);
}
.article-body .dbt-provenance h2::before { content: none; }
.dbt-provenance p { margin: 0; hyphens: manual; }
.dbt-provenance a { color: var(--accent); }

.article-footer { margin-top: 3rem; }
.article-nav { display: grid; gap: 1.5rem; grid-template-columns: repeat(2, minmax(0, 1fr)); padding-top: 6px; background: var(--rule-double); border-bottom: 1px solid var(--rule-strong); }
.article-nav-link {
	display: block; padding: 1.1rem 0 1.2rem; text-decoration: none;
}
.article-nav-link:hover .article-nav-title { color: var(--accent); text-decoration: underline; text-underline-offset: .2em; }
.article-nav-label { display: block; font-size: 1rem; font-variant-caps: all-small-caps; letter-spacing: .09em; color: var(--accent); }
.article-nav-title { font-family: var(--display); font-size: 1.15rem; line-height: 1.3; }
.article-nav-next { text-align: right; }
.article-cta { margin-top: 1.5rem; font-size: .98rem; color: var(--muted); }
.tags-topic { margin-bottom: .45rem; }

/* ---------- discussion links ---------- */
.dbt-discuss { margin-top: 2.5rem; padding: 0; font-family: var(--serif); }
.dbt-discuss h2 { margin: 0 0 .5rem; font-size: 1.45rem; }
/* Thread lists use dotted leaders, as in a table of contents. */
.dbt-thread-list, .dbt-latest { list-style: none; margin: 0 0 1.25rem; padding: 0; }
.dbt-thread-list li, .dbt-latest li { display: flex; align-items: baseline; gap: .6rem; padding: .5rem 0; border-bottom: 1px solid var(--rule); }
.dbt-thread-list li::after, .dbt-latest li::after { content: ""; order: 2; flex: 1 1 1.5rem; min-width: 1.5rem; border-bottom: 1px dotted var(--rule-input); transform: translateY(-.3em); }
.dbt-thread-list a, .dbt-latest a { order: 1; font-family: var(--display); font-size: 1.1rem; line-height: 1.35; }
.dbt-thread-list .dbt-meta, .dbt-latest .dbt-meta { order: 3; }
.dbt-discuss-actions { display: flex; flex-wrap: wrap; gap: .5rem; margin: 0 0 .6rem; }
.dbt-discuss-note { margin: 0; font-size: .95rem; font-style: italic; color: var(--muted); }
.dbt-thread-backlink {
	margin: 0 0 1.25rem; padding: .75rem 1rem .8rem; font-family: var(--serif); font-size: 1rem;
	border: 1px solid var(--rule-strong); border-left: 3px solid var(--accent); background: var(--paper-2);
}
.dbt-thread-backlink span { display: block; font-size: 1rem; font-variant-caps: all-small-caps; letter-spacing: .09em; color: var(--accent); }
.dbt-thread-backlink a { font-family: var(--display); font-size: 1.2rem; }

/* ---------- topic / peptide archives ---------- */
.term-header { padding-block: 2rem 1rem; max-width: calc(var(--measure) + 2.5rem); }
.term-description { max-width: var(--measure); color: var(--ink-soft); font-size: 1.1rem; }
.term-related { display: flex; flex-wrap: wrap; gap: .5rem; margin: 0 0 1.5rem; }
.term-body { max-width: 52rem; }
/* Sibling terms as a compact multi-column index. */
.term-directory {
	list-style: none; margin: 3rem 0 0; padding: 1.1rem 0 0;
	columns: 13rem auto; column-gap: 2rem; background: var(--rule-double);
}
.term-directory[aria-label]::before {
	content: attr(aria-label); content: attr(aria-label) / "";
	display: block; column-span: all; margin-bottom: .6rem;
	font-size: 1.02rem; font-weight: 600; font-variant-caps: all-small-caps; letter-spacing: .09em; color: var(--accent);
}
.term-directory li { break-inside: avoid; }
.term-directory .tag {
	display: block; padding: .2rem 0 .2rem .6rem; border: 0; border-left: 2px solid transparent; border-radius: 0;
	font-size: .98rem; color: var(--ink-soft); font-variant-numeric: lining-nums;
}
.term-directory a.tag:hover { background: transparent; border-left-color: var(--rule-input); text-decoration: underline; }
.term-directory .is-current .tag { border-left-color: var(--accent); color: var(--accent); font-weight: 600; background: transparent; }

/* ---------- article notice ---------- */
.article-notice {
	margin: 0 0 2rem; padding: .8rem 1rem;
	border: 1px solid var(--rule-strong); border-left: 3px solid var(--accent);
	background: var(--paper-2); font-family: var(--serif); font-size: .95rem; line-height: 1.55; font-style: italic; color: var(--ink-soft);
	hyphens: manual;
}
.article-notice a { color: var(--accent); font-style: normal; }

/* ---------- archive index ---------- */
.dbt-stats {
	font-size: 1rem; font-variant-numeric: lining-nums; color: var(--muted); margin-bottom: 1.8rem;
	padding-block: .55rem; border-block: 1px solid var(--rule-strong);
}
.dbt-stats strong { font-family: var(--display); font-weight: 600; font-size: 1.12em; color: var(--accent); }
.dbt-index { font-family: var(--serif); }
.dbt-index-controls { display: grid; gap: .8rem; margin-bottom: .9rem; padding-block: 12px .8rem; background: var(--rule-double), var(--paper); border-bottom: 1px solid var(--rule-strong); }
.dbt-search input {
	width: 100%; padding: .6rem .1rem .55rem; font: inherit; font-size: 1.25rem; color: var(--ink);
	background: transparent; border: 0; border-bottom: 2px solid var(--rule-input); border-radius: 0;
}
.dbt-search input:focus-visible { border-color: var(--accent); outline: 2px solid var(--accent); outline-offset: 3px; }
.dbt-search input::placeholder { color: var(--muted); font-style: italic; opacity: 1; }
/* Topic filter set as a compact index line rather than pills. */
.dbt-chips { display: flex; flex-wrap: wrap; align-items: baseline; gap: .1rem .2rem; }
.dbt-chips[aria-label]::before {
	content: attr(aria-label); content: attr(aria-label) / "";
	margin-right: .5rem; font-style: italic; font-size: .98rem; color: var(--muted);
}
.dbt-chip {
	font: inherit; font-size: 1.02rem; font-variant-caps: all-small-caps; letter-spacing: .06em;
	min-height: 2rem; padding: .15rem .45rem; cursor: pointer;
	background: transparent; color: var(--ink-soft);
	border: 0; border-bottom: 2px solid transparent; border-radius: 0;
}
.dbt-chip:hover { color: var(--accent); border-bottom-color: var(--rule-input); }
.dbt-chip.is-active, .dbt-chip[aria-pressed="true"] { color: var(--accent); border-bottom-color: var(--accent); font-weight: 650; }
.dbt-result-count { font-size: 1rem; font-variant-caps: all-small-caps; letter-spacing: .08em; color: var(--accent); margin-bottom: .6rem; }
.dbt-list { list-style: none; margin: 0; padding: 0; border-top: 1px solid var(--ink); }
.dbt-item { padding: .9rem .75rem; border-bottom: 1px solid var(--rule); }
.dbt-item:hover, .dbt-item:focus-within { background: var(--paper-2); box-shadow: inset 3px 0 0 var(--accent); }
.dbt-item:focus-within .dbt-item-title, .dbt-item:hover .dbt-item-title { color: var(--accent); text-decoration: underline; text-underline-offset: .2em; }
.dbt-item[hidden] { display: none; }
.dbt-item-title { font-family: var(--display); font-weight: 520; font-size: 1.3rem; line-height: 1.25; text-decoration: none; }
.dbt-item-title:hover { color: var(--accent); }
.dbt-item-excerpt { margin: .25rem 0 .4rem; color: var(--ink-soft); font-size: .98rem; line-height: 1.5; max-width: 70ch; }
.dbt-item-meta { margin: 0; font-size: .98rem; font-variant-caps: all-small-caps; font-variant-numeric: lining-nums tabular-nums; letter-spacing: .06em; color: var(--muted); }
.dbt-item-meta:empty { display: none; }
.dbt-meta { font-size: .95rem; font-variant-caps: all-small-caps; font-variant-numeric: lining-nums tabular-nums; letter-spacing: .05em; color: var(--muted); white-space: nowrap; }

/* ---------- board search ---------- */
.board-search { display: flex; flex-wrap: wrap; align-items: end; gap: .6rem; margin: 0 0 1.5rem; max-width: 34rem; }
.board-search label { display: block; width: 100%; font-family: var(--serif); font-size: 1rem; font-variant-caps: all-small-caps; letter-spacing: .09em; color: var(--accent); }
.board-search input[type="search"] { flex: 1 1 14rem; min-height: 2.75rem; padding: .6rem .8rem; font: inherit; color: var(--ink); background: var(--paper-2); border: 1px solid var(--rule-input); border-radius: var(--radius); }
.board-search input[type="search"]:focus { border-color: var(--accent); outline: 2px solid var(--accent); outline-offset: 2px; }

/* ---------- buttons ---------- */
.btn {
	display: inline-flex; align-items: center; min-height: 2.75rem; padding: .55rem 1.1rem; border-radius: var(--radius);
	font-family: var(--serif); font-size: 1rem; font-weight: 600; line-height: 1.2; text-decoration: none; cursor: pointer;
	border: 1px solid var(--ink);
	transition: background .15s ease, color .15s ease, border-color .15s ease;
}
.btn-primary { background: var(--accent); border-color: var(--accent); color: var(--paper-2); }
.btn-primary:hover { background: var(--accent-deep); border-color: var(--accent-deep); color: var(--paper-2); }
.btn-ghost { background: transparent; color: var(--ink); }
.btn-ghost:hover { border-color: var(--accent); color: var(--accent); background: var(--paper-2); }

/* ---------- footer (colophon) ---------- */
.site-footer {
	padding-block: 2.75rem 1.75rem; background: var(--accent-deep); color: #efe4d2;
	border-top: 3px solid var(--ink);
}
.site-footer :focus-visible { outline-color: #efe4d2; }
.footer-inner { display: flex; flex-wrap: wrap; gap: 1.5rem 3rem; justify-content: space-between; align-items: flex-start; }
.footer-name { font-family: var(--display); font-weight: 600; font-size: 1.7rem; line-height: 1.1; letter-spacing: -.015em; margin: 0; }
.footer-note { margin: .45rem 0 0; max-width: 42ch; font-size: .98rem; font-style: italic; color: #c9b6a3; }
.footer-nav .menu { display: flex; flex-wrap: wrap; gap: .1rem 1.4rem; list-style: none; margin: 0; padding: 0; }
.footer-nav a {
	display: inline-block; padding-block: .3rem; color: #efe4d2; text-decoration: none;
	font-size: 1.02rem; font-variant-caps: all-small-caps; letter-spacing: .08em;
}
.footer-nav a:hover { color: #fff; text-decoration: underline; text-underline-offset: .25em; }
.footer-legal { margin-top: 2.25rem; padding-top: 1rem; border-top: 1px solid rgb(239 228 210 / .25); }
.footer-legal p { margin: 0; font-size: .9rem; line-height: 1.55; color: #c9b6a3; max-width: 80ch; }

/* ---------- wpForo ---------- */
/* Repeat the wrapper ID for specificity over wpForo's later dynamic stylesheet. */
#wpforo #wpforo-wrap#wpforo-wrap { font-family: var(--sans); font-size: .95rem; background: var(--paper); color: var(--ink); }
#wpforo #wpforo-wrap#wpforo-wrap a { color: var(--accent); }
#wpforo #wpforo-wrap#wpforo-wrap a:hover { color: var(--ink); text-decoration: underline; }
#wpforo #wpforo-wrap#wpforo-wrap :focus-visible { outline: 2px solid var(--accent); outline-offset: 3px; }
#wpforo #wpforo-wrap#wpforo-wrap *::selection { background: var(--accent-soft); color: var(--ink); }
#wpforo #wpforo-wrap#wpforo-wrap #wpforo-menu { background: transparent; border: 0; padding-block: .25rem .5rem; }
#wpforo #wpforo-wrap#wpforo-wrap #wpforo-menu .wpf-bar-right { width: 100%; display: flex; justify-content: flex-end; }
#wpforo #wpforo-wrap#wpforo-wrap #wpforo-menu .wpf-search-form { margin: 0; }
#wpforo #wpforo-wrap#wpforo-wrap .wpforo-section { margin-bottom: 2rem; }
#wpforo #wpforo-wrap#wpforo-wrap .wpforo-category { border: 0; background: transparent; padding: 0; }
#wpforo #wpforo-wrap#wpforo-wrap .wpforo-cat-panel { background: var(--rule-double), var(--paper); border: 0; border-bottom: 1px solid var(--rule-strong); padding: calc(.85rem + 6px) 1rem .75rem; }
#wpforo #wpforo-wrap#wpforo-wrap .cat-title, #wpforo #wpforo-wrap#wpforo-wrap .cat-name { color: var(--ink); font-family: var(--display); font-weight: 600; font-size: 1.45rem; letter-spacing: -.01em; }
#wpforo #wpforo-wrap#wpforo-wrap .forum-wrap { border-bottom: 1px solid var(--rule); background: var(--paper-2); }
#wpforo #wpforo-wrap#wpforo-wrap .wpforo-forum { background: transparent; border: 0; padding-block: 1.1rem; }
#wpforo #wpforo-wrap#wpforo-wrap .forum-wrap:hover { background: var(--paper-2); box-shadow: inset 3px 0 0 var(--accent); }
#wpforo #wpforo-wrap#wpforo-wrap .wpforo-forum-title a { color: var(--ink); }
#wpforo #wpforo-wrap#wpforo-wrap .wpforo-forum-title a:hover { color: var(--accent); }
#wpforo #wpforo-wrap#wpforo-wrap .wpforo-forum-title { font-family: var(--display); font-weight: 550; font-size: 1.25rem !important; line-height: 1.3 !important; /* wpForo dynamic CSS marks both title values important. */ margin: 0 0 .35rem; }
#wpforo #wpforo-wrap#wpforo-wrap .wpforo-forum-description { font-family: var(--serif); font-size: .98rem; line-height: 1.5; color: var(--ink-soft); }
#wpforo #wpforo-wrap#wpforo-wrap .wpforo-forum-info > div:last-child { font-size: .78rem !important; /* Counts use an inline 12px font size. */ font-variant-numeric: tabular-nums; letter-spacing: .02em; color: var(--muted); }
#wpforo #wpforo-wrap#wpforo-wrap .wpf-breadcrumb { font-family: var(--serif); font-size: .92rem; color: var(--muted); margin-block: .8rem; }
#wpforo #wpforo-wrap#wpforo-wrap .wpf-breadcrumb .wpf-item-element { background: var(--paper-2); border-color: var(--rule-strong); }
#wpforo #wpforo-wrap#wpforo-wrap .wpf-breadcrumb .wpf-end { border-left-color: var(--rule-strong); }
#wpforo #wpforo-wrap#wpforo-wrap #wpforo-title { font-family: var(--display); font-weight: 560; font-size: 1.4rem; color: var(--ink); }
#wpforo #wpforo-wrap#wpforo-wrap .wpforo-feed { font-family: var(--sans); font-size: .78rem; }
#wpforo #wpforo-wrap#wpforo-wrap .wpf-search input[type="text"].wpf-search-field { width: 12rem; max-width: 100%; height: 2.75rem; padding-left: 1.8rem; font: inherit; font-size: 1rem; background-color: var(--paper-2); color: var(--ink); border: 1px solid var(--rule-input); cursor: text; transition: none; }
#wpforo #wpforo-wrap#wpforo-wrap .wpf-search input[type="text"].wpf-search-field:focus { width: 12rem; }
#wpforo #wpforo-wrap#wpforo-wrap .wpf-button, #wpforo #wpforo-wrap#wpforo-wrap .wpf-button-outlined { background: var(--accent); color: var(--paper-2) !important; /* wpForo category buttons force blue text with important. */ border: 1px solid var(--accent); border-radius: var(--radius); box-shadow: none; font-family: var(--serif); font-weight: 600; min-height: 2.75rem; }
#wpforo #wpforo-wrap#wpforo-wrap .wpf-button:hover, #wpforo #wpforo-wrap#wpforo-wrap .wpf-button-outlined:hover { background: var(--accent-deep); border-color: var(--accent-deep); color: var(--paper-2); }
#wpforo #wpforo-wrap#wpforo-wrap .wpf-button-secondary { background: var(--paper-2) !important; color: var(--ink) !important; border-color: var(--rule-input) !important; /* wpForo forces all three secondary-button colors with important. */ }
#wpforo #wpforo-wrap#wpforo-wrap .wpf-button-secondary:hover { background: var(--paper) !important; /* wpForo also forces the hover background. */ }
/* Topic rules use classes verified in the installed layout-1 templates. */
#wpforo #wpforo-wrap#wpforo-wrap .wpforo-post-head, #wpforo #wpforo-wrap#wpforo-wrap .wpforo-post-head .wpf-post-head-top { background: var(--paper); color: var(--ink); border-radius: 0; border-bottom: 1px solid var(--rule); }
#wpforo #wpforo-wrap#wpforo-wrap .wpforo-post { background: var(--paper-2); color: var(--ink); border-color: var(--rule-strong); border-radius: 0; box-shadow: none; }
#wpforo #wpforo-wrap#wpforo-wrap .wpforo-post .wpforo-post-content { font-family: var(--serif); font-size: 1.1rem !important; /* wpForo dynamic CSS forces a 15px post size. */ line-height: 1.7; padding: 1.25rem; overflow-wrap: anywhere; }
#wpforo #wpforo-wrap#wpforo-wrap .wpforo-post .wpforo-post-content p { font-size: inherit; }
#wpforo #wpforo-wrap#wpforo-wrap .wpforo-post .wpforo-post-content blockquote { margin-inline: 0; padding: .4rem 0 .4rem 1rem; border: 0; border-left: 2px solid var(--accent); background: transparent; color: var(--ink-soft); }
#wpforo #wpforo-wrap#wpforo-wrap .wpforo-post-content-top, #wpforo #wpforo-wrap#wpforo-wrap .wpforo-topic-meta { color: var(--muted); font-family: var(--sans); border-color: var(--rule); }
#wpforo #wpforo-wrap#wpforo-wrap #wpforo-footer { background: var(--paper); border-top: 1px solid var(--rule-strong); }
#wpforo #wpforo-wrap#wpforo-wrap .wpf-stat-label, #wpforo #wpforo-wrap#wpforo-wrap .wpf-stat-value { color: var(--muted); }
#wpforo #wpforo-wrap#wpforo-wrap .wp-block-search__input { min-width: 0; background: var(--paper-2); color: var(--ink); border-color: var(--rule-input); }
#wpforo #wpforo-wrap#wpforo-wrap .wp-block-search__button { background: var(--accent); color: var(--paper-2); border: 1px solid var(--accent); }

/* ---------- wpForo board width ---------- */
/* The plugin pulls WordPress's default widgets into its sidebar (Search, Recent Posts,
   Recent Comments). On a board with four topics that is noise, so the board takes the
   full width and the plugin search bar stays as the single search entry point. */
#wpforo #wpforo-wrap#wpforo-wrap .wpforo-right-sidebar { display: none; }
#wpforo #wpforo-wrap#wpforo-wrap .wpforo-main.wpforo-right-sidebar-layout .wpforo-content { width: 100%; float: none; }
#wpforo #wpforo-wrap#wpforo-wrap .wpforo-section { width: 100%; float: none; }
/* The plugin sets an inline-style-width float on .wpforo-content for the sidebar layout. */
#wpforo #wpforo-wrap#wpforo-wrap .wpforo-content { width: 100% !important; float: none !important; }
/* The plugin's own search bar holds a single unlabelled field and floats over the board.
   The board search is provided by the page intro instead. */
#wpforo #wpforo-wrap#wpforo-wrap #wpforo-menu { display: none; }
#wpforo #wpforo-wrap#wpforo-wrap .wpforo-forum-info { width: auto; flex: 1 1 auto; }


/* wpForo sub-pages: the board breadcrumb replaces the page header. */
.is-forum-subpage .page-header { display: none; }
.is-forum-subpage .site-main { padding-top: 1.5rem; }


/* wpForo topic page: the topic title is the page heading, and the feed button is a utility. */
#wpforo #wpforo-wrap#wpforo-wrap #wpforo-title { font-size: clamp(1.6rem, 1.15rem + 1.5vw, 2.2rem); line-height: 1.2; margin: 0 0 1.25rem; }
#wpforo #wpforo-wrap#wpforo-wrap .wpf-topic-icons .wpf-rss, #wpforo #wpforo-wrap#wpforo-wrap .wpf-topic-navi .wpf-rss { background: transparent; color: var(--muted); border: 1px solid var(--rule-input); box-shadow: none; }

/* ---------- misc ---------- */
.post-list { list-style: none; padding: 0; border-top: 1px solid var(--ink); }
.post-list-item { display: flex; justify-content: space-between; align-items: baseline; gap: 1rem; padding: .7rem 0; border-bottom: 1px solid var(--rule); }
.post-list-item > a { font-family: var(--display); font-size: 1.15rem; }
.post-list-meta { font-size: .95rem; font-variant-caps: all-small-caps; letter-spacing: .06em; color: var(--muted); }
.search-form { display: flex; gap: .5rem; max-width: 32rem; }
.search-field { flex: 1; min-height: 2.75rem; padding: .6rem .8rem; border: 1px solid var(--rule-input); border-radius: var(--radius); background: var(--paper-2); font: inherit; color: var(--ink); }
.search-form [type="submit"] { min-height: 2.75rem; padding: .55rem 1rem; font: inherit; font-weight: 600; color: var(--paper-2); background: var(--accent); border: 1px solid var(--accent); border-radius: var(--radius); cursor: pointer; }
.search-form [type="submit"]:hover { background: var(--accent-deep); }

/* ---------- media queries ---------- */
@media (min-width: 721px) {
	/* Archive rows: title and excerpt on the left, the catalogue line in its own column. */
	.dbt-item { display: grid; grid-template-columns: minmax(0, 1fr) 12.5rem; column-gap: 2rem; align-items: baseline; }
	.dbt-item-title, .dbt-item-excerpt { grid-column: 1; }
	.dbt-item-meta { grid-column: 2; grid-row: 1 / span 2; text-align: right; line-height: 1.45; }
}

@media (min-width: 901px) {
	.masthead { padding-block: 2.2rem 1.3rem; }
	.hero { padding-block: 3.5rem 2.5rem; }
	.hero-title { font-size: clamp(2.9rem, 5.6vw, 4.4rem); }
	.hero-lede { font-size: 1.25rem; }
	.dbt-index-controls { position: sticky; top: var(--wp-admin--admin-bar--height, 0px); z-index: 10; }
}

/* Wide screens: the transcription notice moves into the left margin as a gloss. */
@media (min-width: 75rem) {
	.article-body > .article-notice {
		float: left; width: 10.5rem; margin: .4rem 0 1rem -12rem; padding: .6rem 0 0;
		border: 0; border-top: 2px solid var(--accent); background: transparent;
		font-size: .86rem; line-height: 1.5; color: var(--muted);
	}
}

@media (max-width: 900px) {
	.site-nav .menu { gap: 0 1.25rem; }
}

@media (max-width: 720px) {
	body { font-size: 16px; }
	.wrap { padding-inline: 1.25rem; }
	.site-main { padding-block: 1.5rem 3.5rem; }
	.masthead { padding-block: 1.1rem .8rem; }
	.brand-name { font-size: clamp(2rem, 10vw, 2.6rem); }
	.brand-tagline { font-size: .95rem; }
	.site-nav .menu { justify-content: space-between; gap: 0 .6rem; }
	.site-nav .menu:not(.site-account) { flex-basis: 100%; }
	.site-account { gap: 0 1.25rem !important; }
	.site-nav a { display: flex; align-items: center; min-height: 2.75rem; padding-block: .25rem; font-size: .98rem; letter-spacing: .05em; }
	.page-header, .article-header { padding-block: 1rem 1.5rem; }
	.page-body { font-size: 1.05rem; }
	.hero { padding-block: 1.5rem 2rem; margin-bottom: 2rem; }
	.hero-title { font-size: clamp(2.4rem, 9.8vw, 3.5rem); }
	.hero-lede { font-size: 1.12rem; }
	.hero-actions .btn { padding-inline: .9rem; }
	.article-title { max-width: none; overflow-wrap: break-word; }
	.article-meta span + span { padding-left: .7rem; }
	.article-meta { column-gap: .7rem; }
	.tags[aria-label]::before { flex-basis: 100%; }
	.article-body { font-size: 1.1rem; line-height: 1.7; }
	.article-nav { grid-template-columns: minmax(0, 1fr); gap: 0; }
	.article-nav-link + .article-nav-link { border-top: 1px solid var(--rule); }
	.article-nav-next { text-align: left; }
	.dbt-thread-list li, .dbt-latest li { flex-wrap: wrap; }
	.dbt-thread-list li::after, .dbt-latest li::after { display: none; }
	.dbt-thread-list .dbt-meta, .dbt-latest .dbt-meta { flex-basis: 100%; }
	.dbt-chips { flex-wrap: nowrap; overflow-x: auto; padding: .1rem .2rem .4rem; scroll-padding-inline: .2rem; }
	.dbt-chips[aria-label]::before { flex: 0 0 auto; white-space: nowrap; }
	.dbt-chip { flex: 0 0 auto; min-height: 2.75rem; white-space: nowrap; }
	.dbt-item { padding: .9rem .3rem; }
	.dbt-item-title { font-size: 1.22rem; }
	.term-directory { columns: 2; }
	.term-directory .tag { min-height: 2.75rem; display: flex; align-items: center; }
	.footer-name { font-size: 1.45rem; }
	.footer-nav a { padding-block: .6rem; }
	/* Stack all three existing cells: dates lead, sources stay subordinate. */
	.page-body table, .page-body tbody, .page-body thead { display: block; }
	.page-body tr { display: grid; grid-template-columns: minmax(0, 1fr); padding-block: 1rem; border-bottom: 1px solid var(--rule); }
	.page-body th, .page-body td { display: block; width: auto; padding: .2rem 0; border: 0; }
	.page-body thead tr { display: flex; gap: 1rem; padding-block: .6rem; border-bottom: 1px solid var(--rule-strong); }
	.page-body thead { background: var(--rule-double); padding-top: 6px; }
	.page-body thead th { background: none; padding-top: .2rem; }
	.page-body td:first-child { width: auto; font-weight: 600; }
	.page-body td:last-child { width: auto; margin-top: .35rem; }
	#wpforo #wpforo-wrap#wpforo-wrap .wpforo-cat-panel { padding-inline: .75rem; }
	#wpforo #wpforo-wrap#wpforo-wrap .wpforo-forum-title { font-size: 1.15rem !important; /* Override the plugin's important title size on mobile. */ }
	#wpforo #wpforo-wrap#wpforo-wrap .wpf-search input[type="text"].wpf-search-field { width: 10rem; }
	#wpforo #wpforo-wrap#wpforo-wrap .wpf-search input[type="text"].wpf-search-field:focus { width: 10rem; }
}

@media (prefers-reduced-motion: reduce) {
	html { scroll-behavior: auto; }
	.btn { transition: none; }
}

@media (forced-colors: active) {
	.site-nav-bar, .dbt-provenance, .article-nav, .term-directory, .dbt-index-controls, .page-body thead th { border-top: 3px double CanvasText; }
	.dbt-chip.is-active, .dbt-chip[aria-pressed="true"] { text-decoration: underline; }
}

@media print {
	@page { margin: 18mm; }
	body { background: white; color: black; font-size: 11pt; }
	.site-header, .site-footer, .skip-link, .article-nav, .article-cta, .dbt-discuss { display: none; }
	.site-main, .article-header, .article-footer, .wrap { padding: 0; margin-block: 0; max-width: none; }
	.article-body, .dbt-provenance { max-width: none; color: black; background: transparent; }
	.article-body { font-size: 11pt; line-height: 1.5; }
	.article-body > .article-notice { float: none; width: auto; margin: 0 0 12pt; color: black; }
	.article-title { font-size: 24pt; }
	.article-meta, .tag, .dbt-provenance h2, .article-body blockquote, .eyebrow { color: black; }
	a, .article-body a { color: black; text-decoration: underline; }
	.tag { background: transparent; border-color: black; }
	.dbt-provenance { border-top: 1pt solid black; font-size: 9pt; }
	h1, h2, h3, h4 { break-after: avoid; }
	p { orphans: 3; widows: 3; }
}
