/*
Theme Name:   Patrick
Description:  Custom theme for the Patrick scholarly publishing plugin. See ../docs/THEME-BRIEF.md for the full specification. Renders plugin data only — never queries plugin tables directly; see THEME-BRIEF.md §2 for the plugin/theme division of responsibility.
Author:       Dan Williford
Version:      0.0.17
Requires at least: 6.0
Requires PHP: 8.1
Text Domain:  patrick-theme
*/

:root {
	/* Strict grayscale (D-1): the ten approved shades, no chromatic accent, no pure white or black. Photographs, artworks and documents keep their own colours. Verified pairs: MONOCHROME-DESIGN-SYSTEM §2. */
	--gray-50: #FAFAFA; --gray-100: #F6F6F6; --gray-150: #F0F0F0; --gray-200: #E8E8E8; --gray-300: #DADADA; --gray-400: #BDBDBD; --gray-500: #858585; --gray-600: #656565; --gray-700: #454545; --gray-800: #242424;
	--paper: var(--gray-100); --paper-light: var(--gray-50); --band: var(--gray-150); --pressed: var(--gray-200);
	--rule: var(--gray-300); --rule-strong: var(--gray-500);
	--ink: var(--gray-800); --ink-muted: var(--gray-700); --ink-tertiary: var(--gray-600); --inverse-secondary: var(--gray-400); --focus: var(--gray-800);
	/* Typography C (D-14): Inter 4 for the interface, Literata 3 for long-form reading at 18px (17px on phones) in a 36rem column of about 60–65 characters. The faces are declared in functions.php. */
	--font-ui: "Inter", "Inter Fallback", Arial, Helvetica, sans-serif; --font-reading: "Literata", "Literata Fallback", Georgia, "Times New Roman", serif; --reading-size: 1.125rem;
	--measure: 68rem; --measure-prose: 36rem; --measure-wide: 56rem; --pad-x: 1rem;
	--space-1: .5rem; --space-2: 1rem; --space-3: 1.5rem; --space-4: 2.5rem; --space-5: 4rem;
	--font-body: var(--font-ui);
}
* { box-sizing: border-box; }
html { scroll-behavior: smooth; }
body { display: flex; flex-direction: column; min-height: 100vh; min-width: 0; margin: 0; color: var(--ink); background: var(--paper); font-family: var(--font-body); line-height: 1.6; color-scheme: light; accent-color: var(--ink); }
::selection { color: var(--ink); background: var(--gray-300); }
::placeholder { color: var(--ink-tertiary); opacity: 1; }
/* Links (D-2): ink, never identified by colour. Links in running text are always underlined; the underline thickens on hover, keyboard focus and press, and is never removed on hover. Navigation, cards, destination panels and buttons carry their own non-colour cues below. Visited links are not styled (no colour channel). */
a { color: var(--ink); text-decoration-line: underline; text-decoration-thickness: 1px; text-underline-offset: .18em; }
a:hover, a:focus-visible, a:active { color: var(--ink); text-decoration-thickness: 2px; }
.prose a:active, .post-research-link a:active, .patrick-form-note a:active { background: var(--pressed); }
.site-footer a:hover, .site-footer a:focus-visible { color: var(--paper-light); }
/* Inside page text the underline also wins over WordPress block styles (for example the post titles of a Query Loop). */
.prose a, .patrick-form-note a, .patrick-form-status a { text-decoration-line: underline; }
.patrick-profile__social a { text-decoration-line: none; }
/* One 3px focus ring for every control, form fields included (11 N2): ink on light surfaces, near-white on the dark footer, 2px from the control. Shown for keyboard and programmatic focus, not for a mouse click. The skip-link target takes focus programmatically and needs no ring of its own (11 N1). */
a:focus-visible, button:focus-visible, [tabindex]:focus-visible, input:focus-visible, select:focus-visible, textarea:focus-visible { outline: 3px solid var(--focus); outline-offset: 2px; }
@supports not selector(:focus-visible) { a:focus, button:focus, [tabindex]:focus { outline: 3px solid var(--focus); outline-offset: 2px; } }
.site-footer a:focus, .site-footer a:focus-visible { outline-color: var(--paper-light); }
.skip-link { position: absolute; left: .5rem; top: .5rem; z-index: 10; padding: .5rem .75rem; color: var(--paper-light); background: var(--ink); text-decoration-line: none; transform: translateY(-200%); }
.skip-link:focus { transform: translateY(0); }
.skip-link:focus-visible { outline-color: var(--paper-light); outline-offset: -5px; }
input:focus, select:focus, textarea:focus { outline: 3px solid var(--focus); outline-offset: 2px; }
#primary:focus { outline: none; }
.site-header { border-bottom: 1px solid var(--rule); background: var(--paper); }
.site-header, .site-footer, .site-main { min-width: 0; }
.site-header__inner, .site-footer__inner, .site-main { width: min(calc(100% - var(--pad-x) - var(--pad-x)), var(--measure-prose)); min-width: 0; margin: 0 auto; }
.site-header__inner { display: flex; flex-wrap: wrap; gap: var(--space-2) var(--space-4); align-items: baseline; padding: var(--space-3) 0; }
.site-identity { display: inline-flex; flex-direction: column; color: inherit; font-weight: 700; text-decoration: none; }
.site-identity:hover .site-identity__name, .site-identity:focus-visible .site-identity__name { text-decoration-line: underline; text-decoration-thickness: 2px; }
.site-identity__name { font-size: 1.25rem; letter-spacing: .01em; }
.site-identity__parent { color: var(--ink-muted); font-size: .8rem; font-weight: 400; }
.primary-navigation ul, .site-footer ul { display: flex; flex-wrap: wrap; gap: .75rem 1.25rem; margin: 0; padding: 0; list-style: none; }
.primary-navigation { min-width: 0; margin-left: auto; }
/* Navigation is identified by its landmark and position, so its links carry no underline until hovered or focused; the current section is bold with a 2px bar under the label, plus aria-current (D-2). */
.primary-navigation a { text-decoration-line: none; font-weight: 500; }
.primary-navigation a:hover, .primary-navigation a:focus-visible { text-decoration-line: underline; text-decoration-thickness: 2px; }
.primary-navigation a[aria-current="page"], .primary-navigation a[aria-current="true"] { font-weight: 700; text-decoration-line: underline; text-decoration-thickness: 2px; text-underline-offset: .4em; }
.site-main { flex: 1 0 auto; padding: var(--space-4) 0 var(--space-5); }
@supports (min-height: 100dvh) { body { min-height: 100dvh; } }
body.admin-bar { min-height: calc(100vh - 32px); }
@media (max-width: 782px) { body.admin-bar { min-height: calc(100vh - 46px); } }
.hero { max-width: var(--measure-prose); padding-bottom: var(--space-5); }
.hero h1, .error-page h1 { max-width: var(--measure-prose); margin: 0 0 var(--space-2); font-size: clamp(2.25rem, 7vw, 4.5rem); line-height: 1.05; letter-spacing: -.035em; }
.archive-header, .article-header { max-width: var(--measure-prose); padding-bottom: var(--space-4); }
.archive-header h1, .article-header h1 { margin: 0 0 var(--space-2); font-size: 1.75rem; line-height: 1.2; letter-spacing: normal; overflow-wrap: anywhere; }
.article-list { display: grid; gap: var(--space-3); max-width: var(--measure-prose); }
.article-card { border-top: 1px solid var(--ink); padding-top: var(--space-2); }
.article-card__title { margin: 0 0 .35rem; font-size: 1.5rem; line-height: 1.2; }
.article-card__title a, .work-family-card__title a { color: inherit; text-decoration-line: none; }
.article-card__title a:hover, .article-card__title a:focus-visible, .work-family-card__title a:hover, .work-family-card__title a:focus-visible { text-decoration-line: underline; text-decoration-thickness: 2px; }
/* A long unbroken address in a title or excerpt wraps inside the card instead of widening the page (11 F4, WCAG 1.4.10). */
.article-list > *, .article-card { min-width: 0; }
.article-card__title, .post-summary__excerpt { overflow-wrap: anywhere; }
.article-meta { display: flex; flex-wrap: wrap; gap: .5rem 1rem; color: var(--ink-muted); font-size: .9rem; }
.byline { color: var(--ink); }
.article-detail { max-width: var(--measure-prose); }
.article-header .eyebrow a { color: inherit; }
.body-text { margin-bottom: var(--space-5); }
.body-text p { margin: 0 0 var(--space-3); }
.article-placements { margin-top: var(--space-5); border-top: 1px solid var(--ink); padding-top: var(--space-3); }
.article-placements h2, .credits-panel h2 { font-size: 1.35rem; }
.article-placement { margin: var(--space-4) 0; border: 1px solid var(--rule); background: var(--paper-light); }
.article-placement img { display: block; width: 100%; height: auto; }
.article-placement figcaption { padding: var(--space-2); }
.figure-number, .figure-credit { display: block; }
.figure-credit { color: var(--ink-muted); font-size: .9rem; }
.item-detail, .person-detail { max-width: var(--measure-prose); }
.item-representations, .used-in, .contributed-works, .authority-reference { margin-top: var(--space-5); }
.representation-list { display: grid; gap: var(--space-3); }
.representation-card { margin: 0; border: 1px solid var(--rule); background: var(--paper-light); }
.representation-card img { display: block; width: 100%; height: auto; }
.representation-card figcaption { display: flex; flex-wrap: wrap; gap: .5rem 1rem; padding: var(--space-2); }
.representation-unavailable { padding: var(--space-5) var(--space-2); color: var(--ink-muted); text-align: center; }
.relationship-list { display: grid; gap: .75rem; margin: 0; padding-left: 1.25rem; }
.relationship-note, .person-dates { color: var(--ink-muted); }
.person-biography { margin-bottom: var(--space-4); }
.credits-panel { margin-top: var(--space-5); border-top: 1px solid var(--ink); padding-top: var(--space-3); font-size: .95rem; }
.pagination { display: flex; flex-wrap: wrap; gap: 1rem; align-items: center; max-width: var(--measure-prose); margin-top: var(--space-4); border-top: 1px solid var(--rule); padding-top: var(--space-3); }
.work-family-list { display: grid; gap: var(--space-3); max-width: var(--measure-prose); }
.work-family-card { border-top: 1px solid var(--ink); padding-top: var(--space-2); }
.work-family-card__title { margin: 0 0 .35rem; font-size: 1.5rem; line-height: 1.2; }
.work-family-date { color: var(--ink-muted); font-size: .9rem; }
.work-family-detail { max-width: var(--measure-prose); }
.work-family-children { display: grid; gap: var(--space-3); margin-top: var(--space-5); }
.work-family-child { border-top: 1px solid var(--ink); padding-top: var(--space-2); scroll-margin-top: 1rem; }
.work-family-child h3 { margin: 0 0 .35rem; font-size: 1.25rem; }
.work-family-child__meta { color: var(--ink-muted); font-size: .9rem; }
.work-family-child__body { margin-top: var(--space-2); }
.section-navigation { display: flex; flex-wrap: wrap; gap: .75rem 1rem; margin: var(--space-3) 0; padding: 0; list-style: none; }
.lede { max-width: 34rem; color: var(--ink-muted); font-size: 1.2rem; }
.eyebrow { margin: 0 0 var(--space-1); color: var(--ink-muted); font-size: .78rem; font-weight: 700; letter-spacing: .12em; text-transform: uppercase; }
.surface-section { border-top: 1px solid var(--ink); padding-top: var(--space-3); }
.surface-section h2 { margin: 0 0 var(--space-3); font-size: 1.35rem; }
.empty-state { padding: var(--space-3); border: 1px dashed var(--ink-muted); color: var(--ink-muted); }
.error-page, .utility-page, .prose { max-width: var(--measure-prose); }
.prose { overflow-wrap: break-word; }
/* Long-form reading in Literata; headings, tables, captions, code and interface components inside the text stay in Inter at interface size. Figures are lining (dates and call numbers), tabular in tables. */
.prose, .body-text, .post-research-link, .person-biography, .work-family-child__body { font-family: var(--font-reading); font-size: var(--reading-size); line-height: 1.6; font-variant-numeric: lining-nums proportional-nums; font-optical-sizing: auto; }
.prose h1, .prose h2, .prose h3, .prose h4, .prose h5, .prose h6, .body-text h2, .body-text h3, .body-text h4, .prose table, .prose caption, .prose figcaption, .prose .wp-caption-text, .prose .wp-element-caption, .prose .patrick-profile, .prose .patrick-profile__card, .prose .patrick-section > h2, .prose .patrick-destination-list, .prose .patrick-form, .prose .search-form { font-family: var(--font-ui); }
.prose .patrick-profile, .prose .patrick-profile__card, .prose .patrick-destination-list, .prose .patrick-form, .prose table { font-size: 1rem; }
.prose table { font-variant-numeric: lining-nums tabular-nums; }
.prose code, .prose pre, .prose kbd, .prose samp { font-family: ui-monospace, SFMono-Regular, Menlo, Consolas, monospace; font-size: .875em; }
.prose > :first-child { margin-top: 0; }
.prose p { margin: 0 0 var(--space-3); }
.prose h2 { margin: var(--space-4) 0 var(--space-2); font-size: 1.35rem; line-height: 1.3; }
.prose h3 { margin: var(--space-3) 0 var(--space-1); font-size: 1.25rem; line-height: 1.3; }
.prose h4 { margin: var(--space-3) 0 var(--space-1); font-size: 1.1rem; line-height: 1.35; }
.button-link { display: inline-block; padding: .65rem 1rem; color: var(--paper-light); background: var(--ink); text-decoration: none; }
.site-footer { color: var(--paper-light); background: var(--ink); font-size: .875rem; }
.site-footer a { color: var(--paper-light); }
.site-footer__inner { display: grid; gap: var(--space-2); padding: var(--space-3) 0; }
.site-footer__identity { display: flex; flex-direction: column; gap: .125rem; }
.site-footer__identity a { color: var(--paper-light); font-size: 1rem; font-weight: 700; }
.site-footer__identity span { color: var(--inverse-secondary); font-size: .8rem; }
.site-footer h2 { margin: 0 0 .5rem; font-size: .75rem; letter-spacing: .08em; text-transform: uppercase; }
.site-footer__privacy { margin: 0; }
.patrick-profile { max-width: var(--measure-prose); margin-bottom: var(--space-3); }
.patrick-profile__portrait-wrap { width: 100%; }
.patrick-profile__portrait-wrap--standalone { margin-bottom: var(--space-3); }
.patrick-profile__portrait { display: block; width: 100%; height: auto; border-radius: .5rem; }
.patrick-profile__portrait-wrap:not(.patrick-profile__portrait-wrap--standalone) .patrick-profile__portrait { border-radius: .5rem .5rem 0 0; }
.patrick-profile__card { display: grid; gap: var(--space-2); padding: var(--space-3) var(--space-3) var(--space-2); border: 1px solid var(--rule); border-radius: .5rem; background: var(--paper-light); }
.patrick-profile__portrait-wrap:not(.patrick-profile__portrait-wrap--standalone) + .patrick-profile__card { border-top-left-radius: 0; border-top-right-radius: 0; }
.patrick-profile__details { display: grid; gap: .35rem; }
.patrick-profile__details h1, .patrick-profile__details h2 { margin: 0; font-size: 1.75rem; line-height: 1.2; letter-spacing: normal; }
.patrick-profile__details p { margin: 0; }
.patrick-profile__role, .patrick-profile__workplace, .patrick-profile__location { margin: 0; color: var(--ink-muted); }
.patrick-profile__institution { margin: var(--space-1) 0 0; color: var(--ink); font-weight: 700; }
.patrick-profile__contact { display: grid; gap: var(--space-1); }
.patrick-profile__contact p, .patrick-profile__address { margin: 0; }
.patrick-profile__address { font-style: normal; }
.patrick-profile__contact-row { display: grid; grid-template-columns: 1.1rem minmax(0, 1fr); gap: var(--space-1); align-items: start; }
.patrick-profile__contact-icon { display: inline-flex; width: 1.1rem; height: 1.1rem; color: var(--ink); }
.patrick-profile__icon { display: block; width: 100%; height: 100%; fill: none; stroke: currentColor; stroke-linecap: round; stroke-linejoin: round; stroke-width: 1.7; }
.patrick-profile__icon--brand { fill: currentColor; stroke: none; }
.patrick-profile__social-row { display: flex; flex-wrap: wrap; align-items: center; gap: var(--space-1); }
.patrick-profile__social-label { font: inherit; color: inherit; }
.patrick-profile__social { display: flex; flex-wrap: wrap; gap: var(--space-1); align-items: center; justify-content: flex-start; margin: var(--space-1) 0 0; padding: 0; list-style: none; }
.prose .patrick-profile__social-row .patrick-profile__social { margin: 0; }
.prose .patrick-profile__social { margin: var(--space-1) 0 0; padding: 0; }
.prose .patrick-profile__social li + li { margin-top: 0; }
.patrick-profile__social a { display: inline-flex; width: 2rem; height: 2rem; align-items: center; justify-content: center; border-radius: .25rem; }
.patrick-profile__social a:hover { background: var(--band); }
.patrick-profile__social a:active { background: var(--pressed); }
.patrick-profile__social .patrick-profile__icon { width: 1.25rem; height: 1.25rem; }
.patrick-section { max-width: var(--measure-prose); margin-top: var(--space-3); border-top: 1px solid var(--rule); padding-top: var(--space-2); }
.patrick-section h2 { margin: 0 0 var(--space-2); font-size: 1.35rem; line-height: 1.3; }
.prose ul, .prose ol, .patrick-section ul, .patrick-section ol { margin: 0 0 var(--space-3); padding-left: 1.25rem; }
.prose li + li, .patrick-section li + li { margin-top: var(--space-1); }
.prose ul ul, .prose ul ol, .prose ol ul, .prose ol ol, .patrick-section ul ul, .patrick-section ul ol, .patrick-section ol ul, .patrick-section ol ol { margin-top: var(--space-1); margin-bottom: 0; }
.patrick-destination-list, .prose .patrick-destination-list, .patrick-section[aria-labelledby="explore-title"] > ul { margin: 0 0 var(--space-3); padding: 0; list-style: none; }
.patrick-destination-list li + li, .patrick-section[aria-labelledby="explore-title"] > ul li + li { margin-top: var(--space-2); }
.patrick-destination-list a, .patrick-section[aria-labelledby="explore-title"] > ul a { display: flex; gap: var(--space-2); align-items: center; justify-content: space-between; padding: var(--space-2); border: 1px solid var(--rule-strong); border-left: 2px solid var(--ink); border-radius: .5rem; color: var(--ink); background: var(--paper-light); font-weight: 600; text-decoration: none; transition: border-color .15s ease, background-color .15s ease; }
.patrick-destination-list a::after, .patrick-section[aria-labelledby="explore-title"] > ul a::after { content: "\2192"; content: "\2192" / ""; flex: none; color: var(--ink); font-weight: 400; transition: transform .15s ease; }
.patrick-destination-list a:hover, .patrick-section[aria-labelledby="explore-title"] > ul a:hover, .patrick-destination-list a:focus-visible, .patrick-section[aria-labelledby="explore-title"] > ul a:focus-visible { border-color: var(--ink); color: var(--ink); background: var(--band); text-decoration: none; }
.patrick-destination-list a:active, .patrick-section[aria-labelledby="explore-title"] > ul a:active { background: var(--pressed); }
.patrick-destination-list a:hover::after, .patrick-section[aria-labelledby="explore-title"] > ul a:hover::after, .patrick-destination-list a:focus-visible::after, .patrick-section[aria-labelledby="explore-title"] > ul a:focus-visible::after { transform: translateX(.25rem); }
.prose blockquote { margin: var(--space-4) 0; padding: 0 0 0 var(--space-3); border-left: 2px solid var(--rule); color: var(--ink); }
.prose blockquote p:last-child { margin-bottom: 0; }
.prose figure { max-width: 100%; margin: var(--space-4) 0; }
.prose figure img, .prose > img { display: block; width: auto; max-width: 100%; height: auto; }
.prose figcaption { margin-top: var(--space-1); color: var(--ink-muted); font-size: .9rem; line-height: 1.5; }
.prose hr { margin: var(--space-4) 0; border: 0; border-top: 1px solid var(--rule); }
.prose table { display: block; width: 100%; max-width: 100%; overflow-x: auto; border-collapse: collapse; border-spacing: 0; }
.prose caption { padding-bottom: var(--space-1); text-align: left; font-size: .9rem; font-weight: 700; }
.prose th, .prose td { padding: var(--space-1) var(--space-2); border: 1px solid var(--rule); text-align: left; vertical-align: top; }
.prose table th, .prose table td, .prose table.has-fixed-layout th, .prose table.has-fixed-layout td { word-break: normal; overflow-wrap: break-word; }
.prose th { color: var(--ink); background: var(--pressed); font-weight: 600; }
.prose code { font-size: .9em; }
.prose pre { max-width: 100%; margin: var(--space-3) 0; overflow-x: auto; padding: var(--space-2); border: 1px solid var(--rule); background: var(--paper-light); }
.prose pre code { white-space: pre; }
.patrick-form { max-width: var(--measure-prose); margin-top: var(--space-3); padding: var(--space-2); border: 1px solid var(--rule); border-radius: .5rem; background: var(--paper-light); }
.patrick-form form { display: grid; gap: var(--space-1); }
.patrick-form form > p:last-child { margin-top: var(--space-1); }
.patrick-form form p { margin: 0; }
.patrick-form h2 { margin: 0 0 var(--space-1); font-size: 1.25rem; line-height: 1.3; }
.patrick-form-intro { margin: 0 0 var(--space-2); color: var(--ink-muted); font-size: .95rem; line-height: 1.5; }
.patrick-form label { display: block; margin-bottom: .25rem; font-size: .875rem; font-weight: 600; line-height: 1.35; }
.patrick-form input:not([type="hidden"]), .patrick-form textarea { display: block; box-sizing: border-box; width: 100%; max-width: 100%; border: 1px solid var(--rule-strong); border-radius: .25rem; background: var(--paper-light); font: inherit; line-height: 1.5; }
.patrick-form input:not([type="hidden"]) { min-height: 2.25rem; padding: .25rem .5rem; }
.patrick-form textarea { min-height: 4rem; padding: .375rem .5rem; resize: vertical; }
.button-link, .patrick-form button { display: inline-block; min-height: 2.5rem; padding: .3125rem .75rem; border: 1px solid var(--ink); border-radius: .25rem; color: var(--paper-light); background: var(--ink); font: inherit; font-size: .9375rem; font-weight: 700; cursor: pointer; }
.button-link { text-decoration: none; }
.button-link:hover, .patrick-form button:hover, .search-form .search-submit:hover { border-color: var(--ink-muted); background: var(--ink-muted); text-decoration-line: underline; text-decoration-thickness: 2px; text-underline-offset: .18em; }
/* Disabled: grey text on a pale fill, plus the disabled attribute and a not-allowed cursor; never the only cue (MONOCHROME-DESIGN-SYSTEM §4). */
.patrick-form button:disabled, .button-link[aria-disabled="true"] { border-color: var(--rule-strong); color: var(--rule-strong); background: var(--band); text-decoration-line: none; cursor: not-allowed; }
.patrick-form input:focus, .patrick-form textarea:focus, .patrick-form button:focus { outline: 3px solid var(--focus); outline-offset: 2px; }
.patrick-form-note, .patrick-form-status { margin: var(--space-3) 0 0; color: var(--ink-muted); font-size: .85rem; line-height: 1.5; }
.patrick-form > form + .patrick-form-note { margin: var(--space-3) 0 0; }
.patrick-form-status { border-top: 1px solid var(--rule); padding-top: var(--space-2); }
.patrick-form-status--error { color: var(--ink); }
/* Errors are carried by words ("Error:"), a heavier border and the message under the label, never by colour alone (11 F3). */
.patrick-form-status--error { margin-bottom: var(--space-2); border-top-width: 2px; border-top-color: var(--ink); }
.patrick-form-status--error ul { margin: .25rem 0 0; padding-left: 1.25rem; }
.patrick-form-status--error a { color: inherit; }
.patrick-field-error { display: block; margin: 0 0 .25rem; color: var(--ink); font-size: .875rem; font-weight: 600; line-height: 1.4; }
/* An exclamation mark in a circle before each field message (D-3); decorative, since the message itself begins "Error:". */
.patrick-field-error::before { content: "!"; content: "!" / ""; display: inline-flex; width: 1.15em; height: 1.15em; align-items: center; justify-content: center; margin-right: .35em; border: 2px solid currentColor; border-radius: 50%; font-size: .85em; font-weight: 700; line-height: 1; vertical-align: -.1em; }
.patrick-form input[aria-invalid="true"], .patrick-form textarea[aria-invalid="true"] { border: 2px solid var(--ink); }
.patrick-honeypot { position: absolute !important; left: -10000px !important; width: 1px !important; height: 1px !important; overflow: hidden !important; clip: rect(0 0 0 0) !important; clip-path: inset(50%) !important; white-space: nowrap !important; }
.utility-page h1 { max-width: var(--measure-prose); margin: 0 0 var(--space-2); font-size: 1.75rem; line-height: 1.2; letter-spacing: normal; }
.body-text { max-width: var(--measure-prose); margin-top: var(--space-4); }
.body-text h2 { margin-top: var(--space-4); }
.body-text h3 { margin-top: var(--space-3); }
.body-text a { overflow-wrap: anywhere; }
.body-text sup[id^="fnref-"] { font-size: .72em; line-height: 0; }
.body-text p[id^="fn-"] { margin-top: .9rem; padding-top: .7rem; border-top: 1px solid var(--rule); font-size: .91rem; line-height: 1.55; }
.body-text h2:last-of-type + ol { padding-left: 2rem; font-size: .96rem; line-height: 1.6; }
.patrick-visually-hidden { position: absolute !important; width: 1px !important; height: 1px !important; padding: 0 !important; margin: -1px !important; overflow: hidden !important; clip: rect(0 0 0 0) !important; clip-path: inset(50%) !important; white-space: nowrap !important; border: 0 !important; }

/* Ordinary WordPress content: the retained blog, its archives and search, and ordinary Pages. */
.screen-reader-text { position: absolute !important; width: 1px !important; height: 1px !important; padding: 0 !important; margin: -1px !important; overflow: hidden !important; clip: rect(0 0 0 0) !important; clip-path: inset(50%) !important; white-space: nowrap !important; border: 0 !important; }
.post-meta a { color: inherit; text-decoration-line: underline; }
.post-meta__categories::before { content: "·"; margin-right: 1rem; }
.post-summary__excerpt { margin-top: var(--space-1); }
.post-summary__excerpt p { margin: 0; }
.archive-description { margin-top: var(--space-2); color: var(--ink-muted); }
.post-detail__image { max-width: var(--measure-prose); margin: 0 0 var(--space-4); }
.post-detail__image img { display: block; width: 100%; height: auto; }
/* Historical-post research link (CORE-ADR-0035): one sentence after the article body; a plain paragraph that wraps at any width. */
.post-research-link { max-width: var(--measure-prose); margin: var(--space-4) 0 0; }
.post-research-link a { text-decoration-line: underline; }
.post-tags { margin-top: var(--space-4); }
.pagination .nav-links, .post-navigation .nav-links { display: flex; flex-wrap: wrap; gap: .75rem 1.25rem; align-items: baseline; }
.pagination .page-numbers.current { font-weight: 700; }
/* Page numbers are at least 24px targets (WCAG 2.5.8); the block pagination on Resources was 9×17px (11 F5). */
.pagination .page-numbers, .wp-block-query-pagination a, .wp-block-query-pagination .page-numbers { display: inline-flex; align-items: center; justify-content: center; min-width: 2.75rem; min-height: 2.75rem; padding: 0 .5rem; }
.wp-block-query-pagination, .wp-block-query-pagination-numbers { display: flex; flex-wrap: wrap; gap: .25rem; align-items: center; }
.post-navigation { max-width: var(--measure-prose); margin-top: var(--space-4); border-top: 1px solid var(--rule); padding-top: var(--space-3); }
.post-navigation .nav-links { justify-content: space-between; }
.post-navigation .eyebrow { display: block; }
.search-panel { margin-top: var(--space-2); }
.search-form { display: flex; flex-wrap: wrap; gap: var(--space-1); align-items: stretch; }
.search-form label { flex: 1 1 16rem; }
.search-form .search-field { width: 100%; min-height: 2.5rem; padding: .25rem .5rem; border: 1px solid var(--rule-strong); background: var(--paper-light); font: inherit; }
.search-form .search-submit { min-height: 2.5rem; padding: .3125rem .75rem; border: 1px solid var(--ink); border-radius: .25rem; color: var(--paper-light); background: var(--ink); font: inherit; font-weight: 700; cursor: pointer; }
.prose .alignleft { float: left; margin: .25rem var(--space-3) var(--space-2) 0; }
.prose .alignright { float: right; margin: .25rem 0 var(--space-2) var(--space-3); }
.prose .aligncenter { display: block; margin-right: auto; margin-left: auto; text-align: center; }
.prose .aligncenter img { margin-right: auto; margin-left: auto; }
/* Visual content may be wider than the 36rem reading column (owner decision 22 October 2026): galleries, blocks the author
   marked wide or full, and Patrick image placements widen symmetrically up to 56rem, never past the page's side padding.
   Ordinary images keep to the text column. Without the wider space (phones) they are exactly the column's width. */
.prose .alignwide, .prose .alignfull, .prose .wp-block-gallery, .prose .gallery, .article-placement, .representation-list { width: max(100%, min(var(--measure-wide), 100vw - 2 * var(--pad-x) - 1rem)); max-width: none; margin-left: calc((100% - max(100%, min(var(--measure-wide), 100vw - 2 * var(--pad-x) - 1rem))) / 2); margin-right: 0; }
.prose::after { display: table; clear: both; content: ""; }
.prose .wp-caption { max-width: 100%; }
.prose .wp-caption-text, .prose .wp-element-caption { margin-top: var(--space-1); color: var(--ink-muted); font-size: .9rem; line-height: 1.5; }
.prose .gallery { display: grid; grid-template-columns: repeat(auto-fill, minmax(8rem, 1fr)); gap: var(--space-2); margin: var(--space-4) 0; }
.prose .gallery-item { margin: 0; }
.prose img, .prose video, .prose iframe, .prose embed, .prose object { max-width: 100%; }
.prose img { height: auto; }
@media (max-width: 639px) { .prose .alignleft, .prose .alignright { float: none; margin: var(--space-3) 0; } }

@media (min-width: 640px) {
	:root { --pad-x: 2rem; }
}
@media (max-width: 639px) { :root { --reading-size: 1.0625rem; } }
@media (max-width: 639px) { .primary-navigation { flex-basis: 100%; width: 100%; margin-left: 0; } .primary-navigation .menu, .primary-navigation ul { max-width: 100%; column-gap: .75rem; } }
@media (prefers-reduced-motion: reduce) {
	html { scroll-behavior: auto; }
	*, *::before, *::after { transition-duration: .01ms !important; animation-duration: .01ms !important; animation-iteration-count: 1 !important; }
}

/* Main-site editorial system (owner decisions, 2 November 2026; DESIGN-GUIDELINES.md §2–3). Everything below applies only under body.site-main-type and body.site-section-*, which functions.php sets by exact Page path, so historical Posts, the Society's Pages, Contexts and the journal keep D-1, D-2 and D-14. */
/* MAIN-SITE PALETTE BEGIN */
.site-main-type { --cmy-magenta: #EC008C; --cmy-cyan: #00AEEF; --cmy-yellow: #FFF200; --gray-medium: #777777; --gray-light: #F1F1F1; --white: #FFFFFF; --tint-library: #F0F7FA; }
/* MAIN-SITE PALETTE END */
/* Roles (owner, 3 November 2026). Magenta 3.9:1 on the page carries underlines. Cyan (2.3:1) and yellow (1.1:1) are too faint to mark a link or carry text, so they take rules, edges, fills and highlights, always under charcoal text; links in those sections keep a charcoal underline. Medium gray (4.1:1) is for borders only, never small text; light gray for subtle backgrounds. Card borders keep #DADADA, because #F1F1F1 vanishes against the page. */
.site-main-type { --accent-about: var(--cmy-magenta); --accent-library: var(--cmy-cyan); --accent-work: var(--cmy-yellow); --link-underline: var(--ink); --rule-strong: var(--gray-medium); --band: var(--gray-light); --paper-light: var(--white); }
.site-main-type { --section-accent: var(--ink); --font-body: "Source Sans 3", "Source Sans 3 Fallback", Arial, Helvetica, sans-serif; --font-ui: var(--font-body); --font-reading: var(--font-body); --reading-size: 1.1875rem; }
.site-section-about { --section-accent: var(--accent-about); --link-underline: var(--cmy-magenta); }
.site-section-qb { --section-accent: var(--cmy-magenta); --link-underline: var(--cmy-magenta); }
.site-section-cil { --section-accent: var(--cmy-cyan); }
.site-section-library { --section-accent: var(--accent-library); }
.site-section-work { --section-accent: var(--accent-work); }
.site-section-sa { --section-accent: var(--cmy-yellow); }
@media (max-width: 639px) { .site-main-type { --reading-size: 1.125rem; } }

/* Scale. Charcoal headings throughout; line length stays within the 36rem column. */
.site-main-type .prose, .site-main-type .body-text { line-height: 1.55; }
.site-main-type .utility-page h1, .site-main-type .archive-header h1 { font-size: 2rem; font-weight: 600; line-height: 1.2; }
.site-main-type .prose h2, .site-main-type .patrick-section h2 { font-size: 1.5rem; font-weight: 600; line-height: 1.25; }
.site-main-type .prose h3, .site-main-type .prose .research-card h2, .site-main-type .patrick-form h2 { font-size: 1.25rem; font-weight: 600; line-height: 1.3; }
.site-main-type .patrick-profile__details h1, .site-main-type .patrick-profile__details h2 { font-size: 1.75rem; font-weight: 700; line-height: 1.2; }
.site-main-type .primary-navigation a { font-size: 1.0625rem; }
.site-main-type .prose .patrick-profile, .site-main-type .prose .patrick-profile__card, .site-main-type .prose .patrick-destination-list, .site-main-type .prose .patrick-form, .site-main-type .patrick-form input:not([type="hidden"]), .site-main-type .patrick-form textarea, .site-main-type .patrick-form button, .site-main-type .button-link { font-size: 1.0625rem; }
.site-main-type .patrick-form label, .site-main-type .prose figcaption, .site-main-type .prose .wp-element-caption, .site-main-type .patrick-form-note, .site-main-type .patrick-form-intro, .site-main-type .site-footer { font-size: .9375rem; }
@media (max-width: 639px) { .site-main-type .utility-page h1, .site-main-type .archive-header h1 { font-size: 1.75rem; } .site-main-type .prose h2, .site-main-type .patrick-section h2 { font-size: 1.375rem; } .site-main-type .prose .research-card h2 { font-size: 1.25rem; } }

/* Accents, selectively: the current-page bar, link underlines, short rules and a few named details. Link text stays charcoal and underlined (D-2 as amended). */
.site-main-type .primary-navigation a[aria-current="page"], .site-main-type .primary-navigation a[aria-current="true"] { text-decoration-color: var(--section-accent); text-decoration-thickness: 3px; }
.site-main-type .prose a:not(.button-link) { text-decoration-color: var(--link-underline); text-decoration-thickness: 2px; }
.site-main-type .prose a:not(.button-link):hover, .site-main-type .prose a:not(.button-link):focus-visible { text-decoration-thickness: 3px; }
.site-section-library .prose a:not(.button-link):hover, .site-section-library .prose a:not(.button-link):focus-visible, .site-section-cil .prose a:not(.button-link):hover, .site-section-cil .prose a:not(.button-link):focus-visible { text-decoration-color: var(--cmy-cyan); }
.site-section-work .prose a:not(.button-link):hover, .site-section-work .prose a:not(.button-link):focus-visible, .site-section-sa .prose a:not(.button-link):hover, .site-section-sa .prose a:not(.button-link):focus-visible { background-color: var(--cmy-yellow); }
.site-section-cil .utility-page > h1::before, .site-section-qb .utility-page > h1::before, .site-section-sa .utility-page > h1::before, .site-page-work .prose > h2::before, .site-section-home .patrick-section[aria-labelledby="ringling-library-title"] h2::before { content: ""; display: block; width: 2.5rem; height: 3px; margin-bottom: var(--space-1); background: var(--section-accent); }
/* Sarasota Archives: yellow is the faintest accent (1.1:1), so its title rule is 1px heavier; its top edge and the title stay where they were. */
.site-section-sa .utility-page > h1::before { height: 4px; margin-bottom: calc(var(--space-1) - 1px); }
/* Home's Research section, and the Research (/work/) and Publications Pages: one small three-colour rule, built from a fill and two borders, no gradient. */
.site-section-home .patrick-section[aria-labelledby="research-title"] h2::before, .site-page-work .utility-page > h1::before, .site-page-publications .utility-page > h1::before { content: ""; display: block; box-sizing: content-box; width: 1.25rem; height: 3px; margin-bottom: var(--space-1); border-left: 1.25rem solid var(--cmy-magenta); border-right: 1.25rem solid var(--cmy-yellow); background: var(--cmy-cyan); }
.site-section-library .button-link { border-color: var(--ink); color: var(--ink); background: var(--cmy-cyan); }
.site-main-type .prose .button-link { font-family: var(--font-ui); text-decoration-line: none; }
.site-main-type .prose .button-link:hover, .site-main-type .prose .button-link:focus-visible { text-decoration-line: underline; }

/* All four header links stay on one row at every width, with no menu button and no scrolling. */
.site-main-type .primary-navigation { flex: 0 1 auto; }
.site-main-type .primary-navigation > ul, .site-main-type .primary-navigation > div > ul { flex-wrap: nowrap; gap: .75rem clamp(.625rem, 3.5vw, 1.25rem); }
.site-main-type .primary-navigation a { white-space: nowrap; padding-block: .25rem; } /* inline padding: a target at least 24px tall (WCAG 2.2, 2.5.8) without moving the text or the row */
@media (max-width: 26rem) { .site-main-type .site-header__inner .primary-navigation { margin-left: 0; width: 100%; } .site-main-type .primary-navigation a { font-size: 1rem; } }

/* Homepage: same content and order. Neutral borders; Ringling Library takes cyan details, Research ochre. */
.site-section-home .patrick-section[aria-labelledby="ringling-library-title"] { --section-accent: var(--accent-library); margin-top: var(--space-4); border-radius: .5rem; }
.site-section-home .patrick-section[aria-labelledby="research-title"] { --section-accent: var(--accent-work); margin-top: var(--space-4); padding-top: var(--space-3); }
.site-section-home .patrick-section[aria-labelledby="ringling-library-title"] p:last-child { margin-bottom: 0; }
.site-section-home .patrick-section[aria-labelledby="ringling-library-title"] a { text-decoration-color: var(--ink); text-decoration-thickness: 2px; }
.site-section-home .patrick-section[aria-labelledby="research-title"] .patrick-destination-list a, .site-page-work .patrick-destination-list a { border-radius: .5rem; }
.site-section-home .patrick-section[aria-labelledby="research-title"] .patrick-destination-list a[href="/critical-information-literacy/"], .site-page-work .patrick-destination-list a[href="/critical-information-literacy/"] { border-left: 4px solid var(--cmy-cyan); }
.site-section-home .patrick-section[aria-labelledby="research-title"] .patrick-destination-list a[href="/queer-bibliography/"], .site-page-work .patrick-destination-list a[href="/queer-bibliography/"] { border-left: 4px solid var(--cmy-magenta); }
.site-section-home .patrick-section[aria-labelledby="research-title"] .patrick-destination-list a[href="/sarasota-archives/"], .site-page-work .patrick-destination-list a[href="/sarasota-archives/"] { border-left: 4px solid var(--cmy-yellow); }
.site-section-home .prose > .patrick-form, .site-section-contact .prose > .patrick-form { margin-top: var(--space-4); }
.site-main-type .patrick-profile__card, .site-main-type .patrick-form { border-radius: .5rem; }

/* Library: dividers between major sections (already in the Page), the tinted consultation box, citations. */
.prose .consultation-box { margin: var(--space-4) 0; padding: var(--space-3); border: 1px solid var(--accent-library); border-radius: .5rem; background: var(--tint-library); }
.prose .consultation-box h2 { margin-top: 0; }
.prose .consultation-box p:last-child { margin-bottom: 0; }
.site-main-type .prose .citation { padding-left: 1.5rem; text-indent: -1.5rem; }

/* About: paragraph rhythm. */
.site-section-about .prose > p { margin-bottom: var(--space-3); }

/* Research: stacked cards with neutral borders and charcoal headings; each card's top edge takes its area's colour. */
.research-card { margin: 0 0 var(--space-3); padding: var(--space-3); border: 1px solid var(--rule); border-top: 3px solid var(--rule); border-radius: .5rem; background: var(--paper-light); }
.research-card:has(a[href="/critical-information-literacy/"]) { border-top-color: var(--cmy-cyan); }
.research-card:has(a[href="/queer-bibliography/"]) { border-top-color: var(--cmy-magenta); }
.research-card:has(a[href="/sarasota-archives/"]) { border-top-color: var(--cmy-yellow); }
.site-main-type .research-card h2 a { text-decoration-color: var(--ink); }
.prose .research-card h2 { margin: 0 0 var(--space-1); }
.prose .research-card p { margin: 0; }

/* Contact: card and form spacing; details and form stacked at every width. */
.site-section-contact .patrick-profile__card { gap: var(--space-3); }
.site-main-type .patrick-form form { gap: var(--space-2); }
.site-main-type .patrick-form input:not([type="hidden"]), .site-main-type .patrick-form textarea { border-color: var(--rule-strong); border-radius: .25rem; }
.site-main-type .patrick-form input:not([type="hidden"]) { min-height: 2.75rem; }
.site-main-type .patrick-form button { min-height: 2.75rem; padding: .5rem 1.25rem; }
/* The confirmation takes focus when it appears. The standard 3px ring stays, but sits on the message's own border rather than outside it, so there is one visibly thicker frame instead of two. Everywhere else the ring is unchanged. */
#patrick-form-status:focus, #patrick-form-status:focus-visible { outline: 3px solid var(--focus); outline-offset: -3px; }
