/* ==========================================================================
   Jai for Ajax — harbour / civic instrumentation
   --------------------------------------------------------------------------
   The idea: a councillor's website that reads like an instrument panel.
   Dark "hull" sections carry live data. Light "chart paper" sections carry
   reading. Mono type is reserved for anything a machine produced — reference
   numbers, counts, coordinates.

   1.  Tokens
   2.  Reset and base
   3.  Layout utilities
   4.  Buttons and icons
   5.  Header, nav, drawer
   6.  Hero
   7.  Signal board
   8.  Cards and priorities
   9.  Ledger
   10. Story, voices, events
   11. Call to action, footer, dock
   12. Command palette and toast
   13. Forms
   14. Board, tracking, filters
   15. Blog and archives
   16. WordPress core classes
   17. Motion and responsive
   ========================================================================== */

/* 1. Tokens ================================================================ */

:root {
	/* Overridden inline by the Customizer. */
	--jfa-ink: #071A2B;
	--jfa-hull: #0C2740;
	--jfa-signal: #FFB627;
	--jfa-beacon: #2FD9BE;

	--jfa-hull-raised: #123350;
	--jfa-hull-line: rgba(255, 255, 255, .12);
	--jfa-paper: #EDF2F5;
	--jfa-paper-raised: #FFFFFF;
	--jfa-chart: #E2EAEF;
	--jfa-rule: #C9D6DE;
	--jfa-slate: #55707F;
	--jfa-flag: #E8503A;

	--jfa-on-hull: #F2F7FA;
	--jfa-on-hull-dim: #A9C0CF;
	--jfa-on-paper: #0B1F2E;
	--jfa-on-paper-dim: #4A6272;

	--jfa-display: "Bricolage Grotesque", "Instrument Sans", ui-sans-serif, system-ui, -apple-system, "Segoe UI", sans-serif;
	--jfa-body: "Instrument Sans", ui-sans-serif, system-ui, -apple-system, "Segoe UI", Roboto, sans-serif;
	--jfa-mono: "IBM Plex Mono", ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;

	--jfa-r-sm: 6px;
	--jfa-r: 12px;
	--jfa-r-lg: 20px;

	--jfa-shadow: 0 1px 2px rgba(7, 26, 43, .06), 0 8px 24px -12px rgba(7, 26, 43, .28);
	--jfa-shadow-lg: 0 2px 6px rgba(7, 26, 43, .08), 0 28px 60px -28px rgba(7, 26, 43, .40);

	--jfa-gap: clamp(1rem, 2.2vw, 1.75rem);
	--jfa-pad-y: clamp(3.25rem, 7vw, 6.5rem);
	--jfa-max: 1220px;
	--jfa-max-narrow: 760px;

	--jfa-bar-h: 68px;
	--jfa-ease: cubic-bezier(.22, .61, .36, 1);
}

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

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

html {
	-webkit-text-size-adjust: 100%;
	scroll-behavior: smooth;
	scroll-padding-top: calc(var(--jfa-bar-h) + 24px);
}

body {
	margin: 0;
	background: var(--jfa-paper);
	color: var(--jfa-on-paper);
	font-family: var(--jfa-body);
	font-size: 1.0625rem;
	line-height: 1.62;
	font-feature-settings: "kern", "liga";
	-webkit-font-smoothing: antialiased;
	text-rendering: optimizeLegibility;
	overflow-wrap: break-word;
}

body.jfa-menu-open { overflow: hidden; }

img, svg, video, canvas { max-width: 100%; height: auto; display: block; }
svg { flex: none; }

h1, h2, h3, h4, h5, h6 {
	font-family: var(--jfa-display);
	font-weight: 700;
	line-height: 1.08;
	letter-spacing: -.022em;
	margin: 0 0 .5em;
	text-wrap: balance;
}

p, ul, ol, dl, blockquote, figure, pre, table { margin: 0 0 1.1em; }
p:last-child, ul:last-child, ol:last-child { margin-bottom: 0; }

a { color: inherit; text-underline-offset: .18em; text-decoration-thickness: from-font; }

code, kbd, pre, samp { font-family: var(--jfa-mono); font-size: .92em; }

hr { border: 0; border-top: 1px solid var(--jfa-rule); margin: 2.5rem 0; }

::selection { background: var(--jfa-signal); color: var(--jfa-ink); }

:focus-visible {
	outline: 3px solid var(--jfa-signal);
	outline-offset: 3px;
	border-radius: 3px;
}

.jfa-shell { overflow-clip-margin: 1rem; }

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

.jfa-skip {
	position: fixed;
	top: 8px; left: 8px;
	z-index: 999;
	transform: translateY(-160%);
	background: var(--jfa-signal);
	color: var(--jfa-ink);
	font-weight: 700;
	padding: .7rem 1.1rem;
	border-radius: var(--jfa-r-sm);
	text-decoration: none;
	transition: transform .18s var(--jfa-ease);
}
.jfa-skip:focus { transform: translateY(0); }
.jfa-skip + .jfa-skip:focus { transform: translateY(0) translateX(0); top: 60px; }

/* 3. Layout utilities ====================================================== */

.jfa-main { display: block; min-height: 40vh; }
.jfa-main:focus { outline: none; }

.jfa-wrap {
	width: min(100% - 2.5rem, var(--jfa-max));
	margin-inline: auto;
}
.jfa-wrap--narrow { width: min(100% - 2.5rem, var(--jfa-max-narrow)); }

.jfa-section { padding-block: var(--jfa-pad-y); position: relative; }
.jfa-section--paper { background: var(--jfa-paper); color: var(--jfa-on-paper); }
.jfa-section--chart { background: var(--jfa-chart); color: var(--jfa-on-paper); }
.jfa-section--hull { background: var(--jfa-hull); color: var(--jfa-on-hull); }

.jfa-section--hull h1, .jfa-section--hull h2, .jfa-section--hull h3 { color: var(--jfa-on-hull); }

.jfa-eyebrow {
	display: inline-flex;
	align-items: center;
	gap: .5rem;
	font-family: var(--jfa-mono);
	font-size: .72rem;
	font-weight: 500;
	letter-spacing: .18em;
	text-transform: uppercase;
	color: var(--jfa-slate);
	margin: 0 0 .9rem;
}
.jfa-section--hull .jfa-eyebrow,
.jfa-hero .jfa-eyebrow,
.jfa-cta .jfa-eyebrow,
.jfa-footer .jfa-eyebrow { color: var(--jfa-beacon); }

.jfa-pulse {
	width: 7px; height: 7px;
	border-radius: 50%;
	background: var(--jfa-beacon);
	box-shadow: 0 0 0 0 rgba(47, 217, 190, .6);
	animation: jfa-pulse 2.4s infinite;
	flex: none;
}
@keyframes jfa-pulse {
	0%   { box-shadow: 0 0 0 0 rgba(47, 217, 190, .55); }
	70%  { box-shadow: 0 0 0 9px rgba(47, 217, 190, 0); }
	100% { box-shadow: 0 0 0 0 rgba(47, 217, 190, 0); }
}

.jfa-head { max-width: 62ch; margin-bottom: clamp(2rem, 4vw, 3rem); }
.jfa-head__title { font-size: clamp(1.85rem, 4.2vw, 3rem); margin-bottom: .45em; }
.jfa-head__lede {
	font-size: clamp(1.02rem, 1.6vw, 1.18rem);
	color: var(--jfa-on-paper-dim);
	margin: 0;
}
.jfa-section--hull .jfa-head__lede,
.jfa-section--hull .jfa-board__head .jfa-head__lede { color: var(--jfa-on-hull-dim); }

.jfa-prose { max-width: 68ch; }
.jfa-prose h2 { font-size: clamp(1.4rem, 2.6vw, 1.9rem); margin-top: 2em; }
.jfa-prose h3 { font-size: clamp(1.15rem, 2vw, 1.4rem); margin-top: 1.8em; }
.jfa-prose ul, .jfa-prose ol { padding-left: 1.25em; }
.jfa-prose li { margin-bottom: .5em; }
.jfa-prose a { color: var(--jfa-on-paper); text-decoration: underline; text-decoration-color: var(--jfa-signal); text-decoration-thickness: 2px; }
.jfa-prose a:hover { background: var(--jfa-signal); text-decoration: none; }
.jfa-prose blockquote {
	border-left: 3px solid var(--jfa-signal);
	padding-left: 1.2rem;
	font-size: 1.1em;
	color: var(--jfa-on-paper);
}
.jfa-prose--boxed {
	background: var(--jfa-paper-raised);
	border: 1px solid var(--jfa-rule);
	border-radius: var(--jfa-r);
	padding: clamp(1.4rem, 3vw, 2.25rem);
	margin-top: 2.5rem;
	max-width: none;
}

.jfa-link-arrow {
	display: inline-flex;
	align-items: center;
	gap: .5rem;
	font-weight: 600;
	text-decoration: none;
	color: inherit;
	border-bottom: 2px solid var(--jfa-signal);
	padding-bottom: 2px;
}
.jfa-link-arrow .jfa-icon { transition: transform .2s var(--jfa-ease); }
.jfa-link-arrow:hover .jfa-icon { transform: translateX(4px); }

/* 4. Buttons and icons ===================================================== */

.jfa-btn {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	gap: .55rem;
	font-family: var(--jfa-body);
	font-size: .97rem;
	font-weight: 700;
	line-height: 1.2;
	letter-spacing: -.005em;
	padding: .82rem 1.35rem;
	min-height: 46px;
	border: 2px solid transparent;
	border-radius: var(--jfa-r-sm);
	background: none;
	color: inherit;
	cursor: pointer;
	text-decoration: none;
	text-align: center;
	transition: transform .14s var(--jfa-ease), background-color .16s, border-color .16s, color .16s, box-shadow .16s;
}
.jfa-btn:active { transform: translateY(1px); }
.jfa-btn[disabled], .jfa-btn.is-busy { opacity: .6; cursor: progress; pointer-events: none; }

.jfa-btn--signal {
	background: var(--jfa-signal);
	border-color: var(--jfa-signal);
	color: var(--jfa-ink);
	box-shadow: 0 1px 0 rgba(0,0,0,.06), 0 10px 22px -14px rgba(255, 182, 39, .9);
}
.jfa-btn--signal:hover { background: #ffc44d; border-color: #ffc44d; }

.jfa-btn--ghost {
	border-color: rgba(255, 255, 255, .32);
	color: var(--jfa-on-hull);
}
.jfa-btn--ghost:hover { border-color: var(--jfa-beacon); color: var(--jfa-beacon); }

.jfa-btn--outline {
	border-color: var(--jfa-on-paper);
	color: var(--jfa-on-paper);
}
.jfa-btn--outline:hover { background: var(--jfa-on-paper); color: var(--jfa-paper); }
.jfa-section--hull .jfa-btn--outline { border-color: rgba(255,255,255,.4); color: var(--jfa-on-hull); }
.jfa-section--hull .jfa-btn--outline:hover { background: var(--jfa-on-hull); color: var(--jfa-hull); }

.jfa-btn--quiet { color: var(--jfa-slate); padding-inline: .8rem; }
.jfa-btn--quiet:hover { color: var(--jfa-on-paper); background: rgba(85, 112, 127, .1); }

.jfa-btn--lg { font-size: 1.03rem; padding: 1rem 1.7rem; min-height: 54px; }
.jfa-btn--sm { font-size: .85rem; padding: .5rem .85rem; min-height: 36px; }
.jfa-btn--block { width: 100%; }
.jfa-btn--icon { white-space: nowrap; }

.jfa-icon { display: inline-block; vertical-align: middle; }

/* 5. Header, nav, drawer =================================================== */

.jfa-header {
	position: sticky;
	top: 0;
	z-index: 60;
	background: var(--jfa-ink);
	color: var(--jfa-on-hull);
	transition: box-shadow .2s;
}
.jfa-header.is-stuck { box-shadow: 0 8px 30px -18px rgba(0, 0, 0, .9); }

.jfa-strip {
	background: #050f1a;
	border-bottom: 1px solid var(--jfa-hull-line);
	font-family: var(--jfa-mono);
	font-size: .69rem;
	letter-spacing: .1em;
	text-transform: uppercase;
	color: var(--jfa-on-hull-dim);
}
.jfa-strip__in {
	width: min(100% - 2.5rem, var(--jfa-max));
	margin-inline: auto;
	display: flex;
	align-items: center;
	gap: 1.2rem;
	min-height: 30px;
	white-space: nowrap;
	overflow-x: auto;
	scrollbar-width: none;
}
.jfa-strip__in::-webkit-scrollbar { display: none; }
.jfa-strip__coord { color: var(--jfa-slate); }
.jfa-strip__ward { color: var(--jfa-on-hull-dim); }
.jfa-strip__count { margin-left: auto; display: inline-flex; align-items: center; gap: .5rem; color: var(--jfa-on-hull); }
.jfa-strip__count b { color: var(--jfa-signal); font-weight: 600; }

.jfa-bar { border-bottom: 1px solid var(--jfa-hull-line); }
.jfa-bar__in {
	width: min(100% - 2.5rem, var(--jfa-max));
	margin-inline: auto;
	min-height: var(--jfa-bar-h);
	display: flex;
	align-items: center;
	gap: 1.25rem;
}
.jfa-bar__brand { margin-right: auto; }

.jfa-logo { display: inline-flex; align-items: center; gap: .7rem; text-decoration: none; color: inherit; }
.jfa-logo__img { max-height: 44px; width: auto; }
.jfa-logo--type .jfa-logo__mark {
	width: 38px; height: 38px;
	display: grid; place-items: center;
	background: var(--jfa-signal);
	color: var(--jfa-ink);
	font-family: var(--jfa-display);
	font-weight: 800;
	font-size: .95rem;
	letter-spacing: -.02em;
	border-radius: 9px;
}
.jfa-logo__words { display: grid; line-height: 1.15; }
.jfa-logo__words b { font-family: var(--jfa-display); font-size: 1.06rem; font-weight: 700; letter-spacing: -.02em; }
.jfa-logo__words i {
	font-style: normal;
	font-family: var(--jfa-mono);
	font-size: .64rem;
	letter-spacing: .14em;
	text-transform: uppercase;
	color: var(--jfa-on-hull-dim);
}

.jfa-nav { display: none; }
.jfa-nav__list { display: flex; align-items: center; gap: .35rem; list-style: none; margin: 0; padding: 0; }
.jfa-nav__item { position: relative; }
.jfa-nav__link {
	display: block;
	padding: .55rem .75rem;
	font-size: .95rem;
	font-weight: 600;
	color: var(--jfa-on-hull);
	text-decoration: none;
	border-radius: var(--jfa-r-sm);
	transition: background-color .15s, color .15s;
}
.jfa-nav__link:hover { background: rgba(255,255,255,.08); }
.jfa-nav__desc { display: none; }
.jfa-nav__item.current-menu-item > .jfa-nav__link,
.jfa-nav__item.current_page_item > .jfa-nav__link { color: var(--jfa-signal); }

.jfa-nav__sub {
	position: absolute;
	top: calc(100% + 8px);
	left: 0;
	min-width: 260px;
	background: var(--jfa-hull-raised);
	border: 1px solid var(--jfa-hull-line);
	border-radius: var(--jfa-r);
	box-shadow: var(--jfa-shadow-lg);
	padding: .5rem;
	list-style: none;
	margin: 0;
	display: grid;
	gap: 2px;
	opacity: 0;
	visibility: hidden;
	transform: translateY(-6px);
	transition: opacity .16s, transform .16s, visibility .16s;
	z-index: 5;
}
.jfa-nav__item:hover > .jfa-nav__sub,
.jfa-nav__item:focus-within > .jfa-nav__sub { opacity: 1; visibility: visible; transform: translateY(0); }
.jfa-nav__sub .jfa-nav__link { padding: .6rem .7rem; }
.jfa-nav__sub .jfa-nav__desc {
	display: block;
	font-family: var(--jfa-body);
	font-size: .8rem;
	font-weight: 400;
	color: var(--jfa-on-hull-dim);
	margin-top: 2px;
}

.jfa-bar__actions { display: flex; align-items: center; gap: .6rem; }

.jfa-cmd-open {
	display: none;
	align-items: center;
	gap: .5rem;
	background: rgba(255,255,255,.06);
	border: 1px solid var(--jfa-hull-line);
	color: var(--jfa-on-hull-dim);
	border-radius: var(--jfa-r-sm);
	padding: .5rem .7rem;
	cursor: pointer;
	transition: border-color .15s, color .15s;
}
.jfa-cmd-open:hover { border-color: var(--jfa-beacon); color: var(--jfa-on-hull); }
.jfa-cmd-open kbd {
	font-size: .68rem;
	border: 1px solid var(--jfa-hull-line);
	border-radius: 4px;
	padding: 0 .35em;
	line-height: 1.45;
}

.jfa-bar__cta { display: none; }

.jfa-burger {
	width: 46px; height: 46px;
	display: grid;
	place-items: center;
	background: rgba(255,255,255,.06);
	border: 1px solid var(--jfa-hull-line);
	border-radius: var(--jfa-r-sm);
	color: var(--jfa-on-hull);
	cursor: pointer;
}
.jfa-burger__box { display: grid; gap: 4px; width: 18px; }
.jfa-burger__box i { display: block; height: 2px; background: currentColor; border-radius: 2px; transition: transform .2s var(--jfa-ease), opacity .16s; }
.jfa-burger[aria-expanded="true"] .jfa-burger__box i:nth-child(1) { transform: translateY(6px) rotate(45deg); }
.jfa-burger[aria-expanded="true"] .jfa-burger__box i:nth-child(2) { opacity: 0; }
.jfa-burger[aria-expanded="true"] .jfa-burger__box i:nth-child(3) { transform: translateY(-6px) rotate(-45deg); }

.jfa-drawer {
	position: fixed;
	inset: 0;
	z-index: 90;
	background: var(--jfa-ink);
	color: var(--jfa-on-hull);
	overflow-y: auto;
	overscroll-behavior: contain;
	padding: 1.25rem 1.25rem calc(1.5rem + env(safe-area-inset-bottom));
	animation: jfa-drawer-in .22s var(--jfa-ease);
}
.jfa-drawer[hidden] { display: none; }
@keyframes jfa-drawer-in { from { opacity: 0; transform: translateY(-8px); } to { opacity: 1; transform: none; } }
.jfa-drawer__in { max-width: 640px; margin-inline: auto; display: grid; gap: 1.5rem; }
.jfa-drawer__top { display: flex; align-items: flex-start; justify-content: space-between; gap: 1rem; }
.jfa-drawer__top .jfa-eyebrow { margin: 0; }
.jfa-drawer__close {
	width: 44px; height: 44px;
	display: grid; place-items: center;
	background: rgba(255,255,255,.06);
	border: 1px solid var(--jfa-hull-line);
	border-radius: var(--jfa-r-sm);
	color: inherit;
	cursor: pointer;
}
.jfa-nav__list--drawer { display: grid; gap: 2px; }
.jfa-nav__list--drawer .jfa-nav__link {
	padding: .9rem .25rem;
	font-family: var(--jfa-display);
	font-size: 1.45rem;
	font-weight: 700;
	letter-spacing: -.02em;
	border-bottom: 1px solid var(--jfa-hull-line);
	border-radius: 0;
}
.jfa-nav__list--drawer .jfa-nav__link:hover { background: none; color: var(--jfa-signal); }
.jfa-nav__list--drawer .jfa-nav__desc {
	display: block;
	font-family: var(--jfa-body);
	font-size: .84rem;
	font-weight: 400;
	color: var(--jfa-on-hull-dim);
	margin-top: .2rem;
	letter-spacing: 0;
}
.jfa-nav__list--drawer .jfa-nav__sub {
	position: static;
	opacity: 1;
	visibility: visible;
	transform: none;
	background: none;
	border: 0;
	box-shadow: none;
	padding: 0 0 0 1rem;
}
.jfa-nav__list--drawer .jfa-nav__sub .jfa-nav__link { font-size: 1rem; font-family: var(--jfa-body); }
.jfa-drawer__foot { display: grid; gap: .8rem; padding-top: .5rem; }
.jfa-drawer__contact {
	display: inline-flex;
	align-items: center;
	gap: .6rem;
	color: var(--jfa-on-hull-dim);
	text-decoration: none;
	font-family: var(--jfa-mono);
	font-size: .88rem;
}
.jfa-drawer__contact:hover { color: var(--jfa-beacon); }

.jfa-social { display: flex; flex-wrap: wrap; gap: .5rem; }
.jfa-social__link {
	width: 40px; height: 40px;
	display: grid; place-items: center;
	border: 1px solid currentColor;
	border-radius: 50%;
	font-family: var(--jfa-mono);
	font-size: .72rem;
	font-weight: 600;
	letter-spacing: .02em;
	text-decoration: none;
	opacity: .7;
	transition: opacity .15s, color .15s, transform .15s var(--jfa-ease);
}
.jfa-social__link:hover { opacity: 1; color: var(--jfa-signal); transform: translateY(-2px); }

/* 6. Hero ================================================================== */

.jfa-hero {
	position: relative;
	background: var(--jfa-ink);
	color: var(--jfa-on-hull);
	padding-block: clamp(3rem, 8vw, 6.5rem);
	overflow: hidden;
	isolation: isolate;
}
.jfa-hero__grid {
	position: absolute;
	inset: 0;
	z-index: -1;
	background-image:
		linear-gradient(to right, rgba(255,255,255,.045) 1px, transparent 1px),
		linear-gradient(to bottom, rgba(255,255,255,.045) 1px, transparent 1px);
	background-size: 56px 56px;
	mask-image: radial-gradient(ellipse 90% 70% at 20% 0%, #000 30%, transparent 78%);
	-webkit-mask-image: radial-gradient(ellipse 90% 70% at 20% 0%, #000 30%, transparent 78%);
}
.jfa-hero::after {
	content: "";
	position: absolute;
	inset: auto -10% -40% 40%;
	height: 60%;
	z-index: -1;
	background: radial-gradient(ellipse at center, rgba(47, 217, 190, .16), transparent 65%);
	pointer-events: none;
}
.jfa-hero__in {
	width: min(100% - 2.5rem, var(--jfa-max));
	margin-inline: auto;
	display: grid;
	gap: clamp(2rem, 5vw, 3.5rem);
}
.jfa-hero__copy { max-width: 44ch; }
.jfa-hero__title {
	font-size: clamp(2.4rem, 7.2vw, 4.6rem);
	line-height: .98;
	letter-spacing: -.035em;
	margin-bottom: .4em;
}
.jfa-hero__sub {
	font-size: clamp(1.05rem, 2.1vw, 1.3rem);
	color: var(--jfa-on-hull-dim);
	max-width: 40ch;
	margin-bottom: 2rem;
}
.jfa-hero__actions { display: flex; flex-wrap: wrap; gap: .8rem; }

.jfa-hero__stats {
	display: grid;
	grid-template-columns: repeat(3, minmax(0, 1fr));
	gap: 1px;
	margin: 2.75rem 0 0;
	background: var(--jfa-hull-line);
	border: 1px solid var(--jfa-hull-line);
	border-radius: var(--jfa-r);
	overflow: hidden;
}
.jfa-hero__stats > div { background: rgba(255,255,255,.03); padding: 1rem 1.1rem; }
.jfa-hero__stats dt {
	font-family: var(--jfa-mono);
	font-size: .64rem;
	letter-spacing: .14em;
	text-transform: uppercase;
	color: var(--jfa-on-hull-dim);
	margin-bottom: .35rem;
}
.jfa-hero__stats dd {
	margin: 0;
	font-family: var(--jfa-display);
	font-size: clamp(1.5rem, 3.6vw, 2.1rem);
	font-weight: 700;
	line-height: 1;
	font-variant-numeric: tabular-nums;
	color: var(--jfa-on-hull);
}
.jfa-hero__stats > div:nth-child(2) dd { color: var(--jfa-signal); }
.jfa-hero__stats > div:nth-child(3) dd { color: var(--jfa-beacon); }

.jfa-hero__figure { margin: 0; }
.jfa-hero__frame {
	position: relative;
	border: 1px solid var(--jfa-hull-line);
	border-radius: var(--jfa-r-lg);
	overflow: hidden;
	background: var(--jfa-hull-raised);
	aspect-ratio: 4 / 5;
}
.jfa-hero__frame img { width: 100%; height: 100%; object-fit: cover; object-position: center 22%; }
.jfa-hero__tick { position: absolute; width: 26px; height: 26px; pointer-events: none; }
.jfa-hero__tick--tl { top: 12px; left: 12px; border-top: 2px solid var(--jfa-signal); border-left: 2px solid var(--jfa-signal); }
.jfa-hero__tick--br { bottom: 12px; right: 12px; border-bottom: 2px solid var(--jfa-signal); border-right: 2px solid var(--jfa-signal); }
.jfa-hero__cap {
	margin: .9rem 0 0;
	font-family: var(--jfa-mono);
	font-size: .74rem;
	letter-spacing: .06em;
	color: var(--jfa-on-hull-dim);
}

/* 7. Signal board ========================================================== */

.jfa-board__head {
	display: grid;
	gap: 1.25rem;
	margin-bottom: clamp(2rem, 4vw, 3rem);
}
.jfa-board__head > div:first-child { max-width: 60ch; }

.jfa-board__body { display: grid; gap: clamp(1.5rem, 3vw, 2.5rem); }

.jfa-section--chart .jfa-board__sub,
.jfa-section--paper .jfa-board__sub { color: var(--jfa-slate); border-bottom-color: var(--jfa-rule); }

.jfa-board__sub {
	font-family: var(--jfa-mono);
	font-size: .7rem;
	font-weight: 500;
	letter-spacing: .16em;
	text-transform: uppercase;
	color: var(--jfa-on-hull-dim);
	margin: 0 0 1.1rem;
	padding-bottom: .6rem;
	border-bottom: 1px solid var(--jfa-hull-line);
}
.jfa-board__sub--wide { margin-top: clamp(2rem, 4vw, 3rem); }

.jfa-bars__list { list-style: none; margin: 0; padding: 0; display: grid; gap: .7rem; }
.jfa-bars__row {
	display: grid;
	grid-template-columns: minmax(90px, 34%) 1fr auto;
	align-items: center;
	gap: .85rem;
}
.jfa-bars__label { font-size: .9rem; color: var(--jfa-on-hull); }
.jfa-bars__track { height: 9px; background: rgba(255,255,255,.08); border-radius: 99px; overflow: hidden; }
.jfa-bars__fill {
	display: block;
	height: 100%;
	width: var(--w, 0%);
	background: linear-gradient(90deg, var(--jfa-beacon), var(--jfa-signal));
	border-radius: 99px;
	transform-origin: left;
	animation: jfa-bar-grow .9s var(--jfa-ease) both;
}
@keyframes jfa-bar-grow { from { transform: scaleX(0); } to { transform: scaleX(1); } }
.jfa-bars__num {
	font-family: var(--jfa-mono);
	font-size: .85rem;
	font-variant-numeric: tabular-nums;
	color: var(--jfa-signal);
	min-width: 2.5ch;
	text-align: right;
}

.jfa-ladder__list { list-style: none; margin: 0; padding: 0; display: grid; gap: 1px; background: var(--jfa-hull-line); border: 1px solid var(--jfa-hull-line); border-radius: var(--jfa-r); overflow: hidden; }
.jfa-ladder__step {
	display: grid;
	grid-template-columns: auto 1fr auto;
	align-items: center;
	gap: .9rem;
	padding: .85rem 1rem;
	background: rgba(255,255,255,.03);
	position: relative;
}
.jfa-ladder__step::before {
	content: "";
	position: absolute;
	left: 0; top: 0; bottom: 0;
	width: 3px;
	background: var(--jfa-slate);
}
.jfa-ladder__step--new::before { background: var(--jfa-signal); }
.jfa-ladder__step--acknowledged::before { background: #7FB3D5; }
.jfa-ladder__step--raised::before { background: #9B8CFF; }
.jfa-ladder__step--progress::before { background: var(--jfa-beacon); }
.jfa-ladder__step--resolved::before { background: #6FCF6A; }
.jfa-ladder__no {
	font-family: var(--jfa-mono);
	font-size: .7rem;
	color: var(--jfa-slate);
}
.jfa-ladder__label { font-size: .93rem; font-weight: 600; }
.jfa-ladder__count {
	font-family: var(--jfa-mono);
	font-size: 1.05rem;
	font-variant-numeric: tabular-nums;
	color: var(--jfa-on-hull);
}

.jfa-feed { list-style: none; margin: 0; padding: 0; display: grid; gap: 1rem; grid-template-columns: 1fr; }
.jfa-feed__item {
	background: rgba(255,255,255,.04);
	border: 1px solid var(--jfa-hull-line);
	border-radius: var(--jfa-r);
	padding: 1.05rem 1.15rem;
	display: grid;
	gap: .5rem;
	align-content: start;
}
.jfa-feed__item.is-hotspot { border-color: rgba(232, 80, 58, .55); }
.jfa-feed__top { display: flex; align-items: center; justify-content: space-between; gap: .75rem; }
.jfa-feed__ref {
	font-family: var(--jfa-mono);
	font-size: .74rem;
	letter-spacing: .04em;
	color: var(--jfa-slate);
}
.jfa-feed__title { margin: 0; font-weight: 600; font-size: 1rem; line-height: 1.35; }
.jfa-feed__summary { margin: 0; font-size: .92rem; color: var(--jfa-on-hull-dim); }
.jfa-feed__meta {
	margin: 0;
	display: flex;
	flex-wrap: wrap;
	gap: .3rem .9rem;
	font-family: var(--jfa-mono);
	font-size: .72rem;
	color: var(--jfa-slate);
}
.jfa-feed__meta span { display: inline-flex; align-items: center; gap: .3rem; }
.jfa-feed__cat { color: var(--jfa-beacon); text-transform: uppercase; letter-spacing: .1em; }
.jfa-feed__flag {
	margin: 0;
	font-size: .78rem;
	font-weight: 600;
	color: #FF9C8A;
	display: inline-flex;
	align-items: center;
	gap: .4rem;
}
.jfa-feed__flag::before { content: "▲"; font-size: .65em; }

.jfa-tag {
	display: inline-flex;
	align-items: center;
	gap: .4em;
	padding: .22em .7em;
	border-radius: 99px;
	font-family: var(--jfa-mono);
	font-size: .66rem;
	font-weight: 500;
	letter-spacing: .1em;
	text-transform: uppercase;
	white-space: nowrap;
	background: rgba(255,255,255,.1);
	color: var(--jfa-on-hull);
}
.jfa-tag::before { content: ""; width: 6px; height: 6px; border-radius: 50%; background: currentColor; }
.jfa-tag--new { background: rgba(255, 182, 39, .16); color: #FFCB63; }
.jfa-tag--acknowledged { background: rgba(127, 179, 213, .16); color: #A6CFEA; }
.jfa-tag--raised { background: rgba(155, 140, 255, .16); color: #BFB4FF; }
.jfa-tag--progress { background: rgba(47, 217, 190, .16); color: var(--jfa-beacon); }
.jfa-tag--resolved { background: rgba(111, 207, 106, .16); color: #96E092; }
.jfa-tag--closed { background: rgba(169, 192, 207, .14); color: var(--jfa-on-hull-dim); }

.jfa-section--paper .jfa-tag,
.jfa-section--chart .jfa-tag { background: rgba(11, 31, 46, .07); color: var(--jfa-on-paper-dim); }
.jfa-section--paper .jfa-tag--new { background: #FFF1D4; color: #8A5A00; }
.jfa-section--paper .jfa-tag--acknowledged { background: #E1EEF8; color: #1C4F7C; }
.jfa-section--paper .jfa-tag--raised { background: #E9E3FF; color: #4B34A8; }
.jfa-section--paper .jfa-tag--progress { background: #D5F4EE; color: #0D6A5B; }
.jfa-section--paper .jfa-tag--resolved { background: #DEF3DB; color: #256B1F; }
.jfa-section--paper .jfa-tag--closed { background: #E6ECEF; color: #546069; }

.jfa-board--empty .jfa-head { margin-bottom: 1.5rem; }

/* 8. Cards and priorities ================================================== */

.jfa-cards {
	display: grid;
	gap: var(--jfa-gap);
	grid-template-columns: 1fr;
}
.jfa-card {
	position: relative;
	background: var(--jfa-paper-raised);
	border: 1px solid var(--jfa-rule);
	border-radius: var(--jfa-r);
	padding: 1.5rem 1.4rem 1.7rem;
	display: grid;
	gap: .6rem;
	align-content: start;
	overflow: hidden;
	transition: transform .2s var(--jfa-ease), box-shadow .2s, border-color .2s;
}
.jfa-card:hover { transform: translateY(-3px); box-shadow: var(--jfa-shadow); border-color: var(--jfa-slate); }
.jfa-card__icon {
	width: 44px; height: 44px;
	display: grid; place-items: center;
	background: var(--jfa-ink);
	color: var(--jfa-signal);
	border-radius: 11px;
	margin-bottom: .3rem;
}
.jfa-card__kicker {
	margin: 0;
	font-family: var(--jfa-mono);
	font-size: .66rem;
	letter-spacing: .16em;
	text-transform: uppercase;
	color: var(--jfa-slate);
}
.jfa-card__title { margin: 0; font-size: 1.24rem; }
.jfa-card__body { margin: 0; color: var(--jfa-on-paper-dim); font-size: .96rem; }
.jfa-card__rule {
	position: absolute;
	left: 0; bottom: 0;
	height: 3px;
	width: 100%;
	background: linear-gradient(90deg, var(--jfa-signal), transparent 70%);
	transform: scaleX(.18);
	transform-origin: left;
	transition: transform .3s var(--jfa-ease);
}
.jfa-card:hover .jfa-card__rule { transform: scaleX(1); }

/* 9. Ledger ================================================================ */

.jfa-ledger__block {
	border-top: 1px solid var(--jfa-hull-line);
	padding-top: clamp(1.5rem, 3vw, 2.25rem);
	margin-bottom: clamp(1.75rem, 4vw, 3rem);
}
.jfa-ledger__topic {
	font-size: clamp(1.3rem, 2.6vw, 1.75rem);
	margin-bottom: 1.25rem;
}
.jfa-ledger__cols { display: grid; gap: clamp(1.5rem, 3vw, 2.75rem); }
.jfa-ledger__col-h {
	font-family: var(--jfa-mono);
	font-size: .68rem;
	letter-spacing: .16em;
	text-transform: uppercase;
	color: var(--jfa-slate);
	margin: 0 0 1rem;
}
.jfa-ledger__do .jfa-ledger__col-h { color: var(--jfa-signal); }
.jfa-quotes { list-style: none; margin: 0; padding: 0; display: grid; gap: 1.1rem; }
.jfa-quote { border-left: 2px solid var(--jfa-hull-line); padding-left: 1.1rem; }
.jfa-quote blockquote { margin: 0; }
.jfa-quote blockquote p {
	margin: 0 0 .45rem;
	font-family: var(--jfa-display);
	font-size: 1.06rem;
	font-weight: 400;
	line-height: 1.42;
	color: var(--jfa-on-hull);
}
.jfa-quote blockquote p::before { content: "\201C"; }
.jfa-quote blockquote p::after { content: "\201D"; }
.jfa-quote cite {
	font-style: normal;
	font-family: var(--jfa-mono);
	font-size: .72rem;
	letter-spacing: .08em;
	text-transform: uppercase;
	color: var(--jfa-slate);
}
.jfa-ledger__intro { color: var(--jfa-on-hull-dim); margin-bottom: 1rem; }
.jfa-commits { list-style: none; margin: 0; padding: 0; display: grid; gap: .8rem; }
.jfa-commits li { display: grid; grid-template-columns: auto 1fr; gap: .75rem; align-items: start; font-size: .98rem; }
.jfa-commits__tick {
	width: 22px; height: 22px;
	display: grid; place-items: center;
	border-radius: 50%;
	background: rgba(255, 182, 39, .16);
	color: var(--jfa-signal);
	margin-top: 1px;
}
.jfa-ledger__cta {
	margin: 0;
	padding-top: 1.5rem;
	border-top: 1px solid var(--jfa-hull-line);
	color: var(--jfa-on-hull-dim);
	font-family: var(--jfa-mono);
	font-size: .85rem;
}
.jfa-ledger__cta a { color: var(--jfa-signal); font-weight: 500; }

/* 10. Story, voices, events ================================================ */

.jfa-story__grid { display: grid; gap: clamp(2rem, 5vw, 4rem); align-items: start; }
.jfa-story__lede { font-size: 1.08rem; color: var(--jfa-on-paper-dim); margin-bottom: 1.5rem; }
.jfa-creds { list-style: none; margin: 0; padding: 0; display: grid; gap: 1px; background: var(--jfa-rule); border: 1px solid var(--jfa-rule); border-radius: var(--jfa-r); overflow: hidden; }
.jfa-creds li { background: var(--jfa-paper-raised); padding: 1.15rem 1.25rem; display: grid; gap: .3rem; }
.jfa-creds b { font-family: var(--jfa-display); font-size: 1.05rem; letter-spacing: -.015em; }
.jfa-creds span { font-size: .92rem; color: var(--jfa-on-paper-dim); }
.jfa-creds--stack { grid-template-columns: 1fr; }

.jfa-voices__grid { display: grid; gap: var(--jfa-gap); grid-template-columns: 1fr; }
.jfa-voice {
	margin: 0;
	background: var(--jfa-paper-raised);
	border: 1px solid var(--jfa-rule);
	border-radius: var(--jfa-r);
	padding: 1.4rem;
	display: grid;
	gap: 1rem;
	align-content: space-between;
}
.jfa-voice blockquote { margin: 0; }
.jfa-voice blockquote p {
	margin: 0;
	font-family: var(--jfa-display);
	font-size: 1.06rem;
	line-height: 1.45;
	font-weight: 400;
}
.jfa-voice blockquote p::before { content: "\201C"; }
.jfa-voice blockquote p::after { content: "\201D"; }
.jfa-voice figcaption { display: grid; gap: .1rem; padding-top: .9rem; border-top: 1px solid var(--jfa-rule); }
.jfa-voice figcaption b { font-size: .95rem; }
.jfa-voice figcaption span {
	font-family: var(--jfa-mono);
	font-size: .7rem;
	letter-spacing: .08em;
	text-transform: uppercase;
	color: var(--jfa-slate);
}

.jfa-events__list { list-style: none; margin: 0; padding: 0; display: grid; gap: 1px; background: var(--jfa-rule); border: 1px solid var(--jfa-rule); border-radius: var(--jfa-r); overflow: hidden; }
.jfa-event { background: var(--jfa-paper-raised); padding: 1.15rem 1.25rem; display: grid; grid-template-columns: auto 1fr; gap: 1.2rem; align-items: center; }
.jfa-event__date {
	display: grid;
	place-items: center;
	width: 58px; height: 58px;
	background: var(--jfa-ink);
	color: var(--jfa-on-hull);
	border-radius: 11px;
	line-height: 1;
}
.jfa-event__date b { font-family: var(--jfa-display); font-size: 1.4rem; }
.jfa-event__date span { font-family: var(--jfa-mono); font-size: .62rem; letter-spacing: .12em; text-transform: uppercase; color: var(--jfa-signal); margin-top: 3px; }
.jfa-event__title { margin: 0 0 .3rem; font-size: 1.1rem; }
.jfa-event__title a { text-decoration: none; }
.jfa-event__title a:hover { text-decoration: underline; text-decoration-color: var(--jfa-signal); }
.jfa-event__meta { margin: 0; display: flex; flex-wrap: wrap; gap: .3rem .9rem; font-family: var(--jfa-mono); font-size: .74rem; color: var(--jfa-slate); }
.jfa-event__meta span { display: inline-flex; align-items: center; gap: .35rem; }

/* 11. Call to action, footer, dock ========================================= */

.jfa-cta {
	position: relative;
	background: var(--jfa-ink);
	color: var(--jfa-on-hull);
	padding-block: clamp(3.5rem, 8vw, 6rem);
	overflow: hidden;
	isolation: isolate;
	text-align: center;
}
.jfa-cta__grid {
	position: absolute;
	inset: 0;
	z-index: -1;
	background-image:
		linear-gradient(to right, rgba(255,255,255,.05) 1px, transparent 1px),
		linear-gradient(to bottom, rgba(255,255,255,.05) 1px, transparent 1px);
	background-size: 48px 48px;
	mask-image: radial-gradient(ellipse 70% 90% at 50% 100%, #000 20%, transparent 75%);
	-webkit-mask-image: radial-gradient(ellipse 70% 90% at 50% 100%, #000 20%, transparent 75%);
}
.jfa-cta__in { display: grid; justify-items: center; }
.jfa-cta__title { font-size: clamp(1.9rem, 5.4vw, 3.4rem); max-width: 18ch; margin-bottom: .4em; }
.jfa-cta__sub { max-width: 52ch; color: var(--jfa-on-hull-dim); margin-bottom: 2rem; }
.jfa-cta__actions { display: flex; flex-wrap: wrap; gap: .8rem; justify-content: center; }

.jfa-footer {
	background: #050f1a;
	color: var(--jfa-on-hull-dim);
	padding-top: clamp(2.75rem, 6vw, 4.5rem);
	font-size: .95rem;
}
.jfa-footer__grid {
	width: min(100% - 2.5rem, var(--jfa-max));
	margin-inline: auto;
	display: grid;
	gap: clamp(2rem, 4vw, 3rem);
	padding-bottom: clamp(2rem, 4vw, 3rem);
}
.jfa-footer__name { font-family: var(--jfa-display); font-size: 1.6rem; font-weight: 700; color: var(--jfa-on-hull); margin: 0 0 .2rem; letter-spacing: -.02em; }
.jfa-footer__tag { margin: 0 0 1.2rem; max-width: 34ch; }
.jfa-footer__contact { display: grid; gap: .5rem; margin-bottom: 1.2rem; }
.jfa-footer__contact a { display: inline-flex; align-items: center; gap: .6rem; text-decoration: none; font-family: var(--jfa-mono); font-size: .86rem; }
.jfa-footer__contact a:hover { color: var(--jfa-beacon); }
.jfa-footer__h {
	font-family: var(--jfa-mono);
	font-size: .68rem;
	font-weight: 500;
	letter-spacing: .16em;
	text-transform: uppercase;
	color: var(--jfa-slate);
	margin: 0 0 1rem;
}
.jfa-footer__menu { list-style: none; margin: 0; padding: 0; display: grid; gap: .55rem; }
.jfa-footer__menu a { text-decoration: none; }
.jfa-footer__menu a:hover { color: var(--jfa-signal); }
.jfa-footer__note { margin-bottom: 1rem; max-width: 34ch; }
.jfa-footer__quiet { display: inline-block; margin-top: .9rem; font-size: .86rem; color: var(--jfa-slate); }
.jfa-footer__quiet:hover { color: var(--jfa-beacon); }
.jfa-footer__base {
	border-top: 1px solid var(--jfa-hull-line);
	padding-block: 1.25rem calc(1.25rem + env(safe-area-inset-bottom));
}
.jfa-footer__base {
	width: min(100% - 2.5rem, var(--jfa-max));
	margin-inline: auto;
	display: flex;
	flex-wrap: wrap;
	gap: .75rem 1.5rem;
	align-items: center;
	justify-content: space-between;
}
.jfa-footer__legal { margin: 0; font-family: var(--jfa-mono); font-size: .72rem; letter-spacing: .04em; color: var(--jfa-slate); }
.jfa-footer__auth { display: block; margin-top: .3rem; }
.jfa-footer__legalmenu { list-style: none; margin: 0; padding: 0; display: flex; flex-wrap: wrap; gap: 1.1rem; font-size: .8rem; }
.jfa-footer__legalmenu a { text-decoration: none; }
.jfa-footer__legalmenu a:hover { color: var(--jfa-signal); }

.jfa-dock {
	position: fixed;
	left: 0; right: 0; bottom: 0;
	z-index: 70;
	display: grid;
	grid-auto-flow: column;
	grid-auto-columns: 1fr;
	background: rgba(7, 26, 43, .94);
	backdrop-filter: saturate(160%) blur(12px);
	-webkit-backdrop-filter: saturate(160%) blur(12px);
	border-top: 1px solid var(--jfa-hull-line);
	padding-bottom: env(safe-area-inset-bottom);
}
.jfa-dock__item {
	display: grid;
	justify-items: center;
	gap: 3px;
	padding: .55rem .25rem .6rem;
	background: none;
	border: 0;
	color: var(--jfa-on-hull-dim);
	font-family: var(--jfa-body);
	font-size: .66rem;
	font-weight: 600;
	letter-spacing: .03em;
	text-decoration: none;
	cursor: pointer;
	min-height: 56px;
}
.jfa-dock__item:hover { color: var(--jfa-on-hull); }
.jfa-dock__item--primary { color: var(--jfa-signal); }
body.jfa--has-dock { padding-bottom: 0; }
@media (max-width: 899px) {
	body.jfa--has-dock .jfa-footer__base { padding-bottom: calc(72px + env(safe-area-inset-bottom)); }
}

/* 12. Command palette and toast ============================================ */

.jfa-cmd { position: fixed; inset: 0; z-index: 95; display: grid; align-items: start; justify-items: center; padding: clamp(1rem, 10vh, 8rem) 1rem 1rem; }
.jfa-cmd[hidden] { display: none; }
.jfa-cmd__scrim { position: absolute; inset: 0; background: rgba(5, 15, 26, .72); backdrop-filter: blur(3px); -webkit-backdrop-filter: blur(3px); animation: jfa-fade .16s var(--jfa-ease); }
@keyframes jfa-fade { from { opacity: 0; } to { opacity: 1; } }
.jfa-cmd__box {
	position: relative;
	width: min(100%, 620px);
	background: var(--jfa-hull-raised);
	color: var(--jfa-on-hull);
	border: 1px solid var(--jfa-hull-line);
	border-radius: var(--jfa-r);
	box-shadow: var(--jfa-shadow-lg);
	overflow: hidden;
	animation: jfa-pop .2s var(--jfa-ease);
}
@keyframes jfa-pop { from { opacity: 0; transform: translateY(-10px) scale(.98); } to { opacity: 1; transform: none; } }
.jfa-cmd__field { display: flex; align-items: center; gap: .75rem; padding: .95rem 1rem; border-bottom: 1px solid var(--jfa-hull-line); color: var(--jfa-slate); }
.jfa-cmd__field input {
	flex: 1;
	background: none;
	border: 0;
	color: var(--jfa-on-hull);
	font-family: var(--jfa-body);
	font-size: 1.02rem;
	padding: .2rem 0;
}
.jfa-cmd__field input:focus { outline: none; }
.jfa-cmd__field input::placeholder { color: var(--jfa-slate); }
.jfa-cmd__esc {
	background: rgba(255,255,255,.06);
	border: 1px solid var(--jfa-hull-line);
	border-radius: 5px;
	color: var(--jfa-slate);
	font-family: var(--jfa-mono);
	font-size: .68rem;
	padding: .25rem .5rem;
	cursor: pointer;
}
.jfa-cmd__list { list-style: none; margin: 0; padding: .4rem; max-height: min(50vh, 380px); overflow-y: auto; }
.jfa-cmd__list li { margin: 0; }
.jfa-cmd__list a {
	display: grid;
	gap: 2px;
	padding: .65rem .75rem;
	border-radius: var(--jfa-r-sm);
	text-decoration: none;
	color: var(--jfa-on-hull);
}
.jfa-cmd__list a small { font-size: .78rem; color: var(--jfa-on-hull-dim); }
.jfa-cmd__list a:hover,
.jfa-cmd__list li.is-active a { background: rgba(255, 182, 39, .14); color: var(--jfa-signal); }
.jfa-cmd__list li.is-active a small { color: var(--jfa-on-hull-dim); }
.jfa-cmd__list .jfa-cmd__none { padding: 1rem .75rem; color: var(--jfa-slate); font-size: .9rem; }

.jfa-toast {
	position: fixed;
	left: 50%;
	bottom: calc(80px + env(safe-area-inset-bottom));
	transform: translateX(-50%);
	z-index: 96;
	max-width: min(92vw, 460px);
	background: var(--jfa-ink);
	color: var(--jfa-on-hull);
	border: 1px solid var(--jfa-hull-line);
	border-left: 3px solid var(--jfa-beacon);
	border-radius: var(--jfa-r-sm);
	box-shadow: var(--jfa-shadow-lg);
	padding: .85rem 1.1rem;
	font-size: .92rem;
	animation: jfa-toast-in .22s var(--jfa-ease);
}
.jfa-toast[hidden] { display: none; }
.jfa-toast.is-warn { border-left-color: var(--jfa-signal); }
.jfa-toast.is-error { border-left-color: var(--jfa-flag); }
@keyframes jfa-toast-in { from { opacity: 0; transform: translate(-50%, 12px); } to { opacity: 1; transform: translate(-50%, 0); } }

/* 13. Forms ================================================================ */

.jfa-formhero { padding-block: clamp(2.5rem, 6vw, 4.5rem); }
.jfa-formhero__in { max-width: 62ch; }
.jfa-formhero__title { font-size: clamp(2rem, 5.4vw, 3.2rem); margin-bottom: .35em; }
.jfa-formhero__sub { color: var(--jfa-on-hull-dim); font-size: clamp(1rem, 1.7vw, 1.14rem); margin-bottom: 0; }
.jfa-formhero__warn {
	margin: 1.4rem 0 0;
	padding: .8rem 1rem;
	border-left: 3px solid var(--jfa-flag);
	background: rgba(232, 80, 58, .1);
	border-radius: 0 var(--jfa-r-sm) var(--jfa-r-sm) 0;
	font-size: .9rem;
	color: #FFC5BA;
}
.jfa-formhero .jfa-hero__stats { margin-top: 2rem; }
.jfa-formhero__search { margin-top: 1.5rem; max-width: 480px; }

.jfa-form {
	background: var(--jfa-paper-raised);
	border: 1px solid var(--jfa-rule);
	border-radius: var(--jfa-r-lg);
	box-shadow: var(--jfa-shadow);
	padding: clamp(1.4rem, 3.5vw, 2.5rem);
}

.jfa-steps { margin-bottom: 2rem; }
.jfa-steps__track {
	list-style: none;
	margin: 0;
	padding: 0;
	display: grid;
	grid-auto-flow: column;
	grid-auto-columns: 1fr;
	gap: .4rem;
	counter-reset: jfa-step;
}
.jfa-steps__track li {
	counter-increment: jfa-step;
	margin: 0;
	padding-top: .6rem;
	border-top: 3px solid var(--jfa-rule);
	font-family: var(--jfa-mono);
	font-size: .68rem;
	letter-spacing: .1em;
	text-transform: uppercase;
	color: var(--jfa-slate);
	transition: border-color .2s, color .2s;
}
.jfa-steps__track li::before { content: counter(jfa-step, decimal-leading-zero) " "; opacity: .6; }
.jfa-steps__track li.is-active { border-top-color: var(--jfa-signal); color: var(--jfa-on-paper); }
.jfa-steps__track li.is-done { border-top-color: var(--jfa-beacon); color: var(--jfa-on-paper-dim); }
.jfa-steps__track li span { display: none; }
@media (min-width: 480px) { .jfa-steps__track li span { display: inline; } }

.jfa-step { border: 0; margin: 0; padding: 0; min-width: 0; }
.jfa-step[hidden] { display: none; }
.jfa-step.is-active { animation: jfa-step-in .22s var(--jfa-ease); }
@keyframes jfa-step-in { from { opacity: 0; transform: translateX(8px); } to { opacity: 1; transform: none; } }
.jfa-step__legend {
	font-family: var(--jfa-display);
	font-size: clamp(1.25rem, 3vw, 1.65rem);
	font-weight: 700;
	letter-spacing: -.02em;
	padding: 0;
	margin-bottom: 1.5rem;
	line-height: 1.15;
}
.jfa-step__nav { display: flex; flex-wrap: wrap; gap: .7rem; align-items: center; margin-top: 1.75rem; padding-top: 1.5rem; border-top: 1px solid var(--jfa-rule); }
.jfa-step__nav [data-jfa-next], .jfa-step__nav [data-jfa-submit] { margin-left: auto; }

.jfa-fieldset { border: 0; margin: 0 0 1.5rem; padding: 0; min-width: 0; }
.jfa-field { margin-bottom: 1.4rem; }
.jfa-field--half { max-width: 420px; }

.jfa-label {
	display: block;
	font-weight: 600;
	font-size: .95rem;
	margin-bottom: .45rem;
}
.jfa-req { color: var(--jfa-flag); }
.jfa-hint { margin: .5rem 0 0; font-size: .85rem; color: var(--jfa-on-paper-dim); }
.jfa-hint.is-ok { color: #16795F; }
.jfa-hint.is-err { color: #B0301C; }

.jfa-input {
	width: 100%;
	font-family: var(--jfa-body);
	font-size: 1rem;
	line-height: 1.45;
	color: var(--jfa-on-paper);
	background: var(--jfa-paper);
	border: 1.5px solid var(--jfa-rule);
	border-radius: var(--jfa-r-sm);
	padding: .78rem .9rem;
	min-height: 48px;
	transition: border-color .15s, box-shadow .15s, background-color .15s;
	-webkit-appearance: none;
	appearance: none;
}
select.jfa-input {
	background-image: url("data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 24 24' fill='none' stroke='%2355707F' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M6 9l6 6 6-6'/%3E%3C/svg%3E");
	background-repeat: no-repeat;
	background-position: right .85rem center;
	padding-right: 2.5rem;
}
.jfa-input:hover { border-color: var(--jfa-slate); }
.jfa-input:focus {
	outline: none;
	background: var(--jfa-paper-raised);
	border-color: var(--jfa-ink);
	box-shadow: 0 0 0 3px rgba(255, 182, 39, .35);
}
.jfa-input::placeholder { color: #90A6B2; }
.jfa-input--area { min-height: 140px; resize: vertical; }
.jfa-input--mono { font-family: var(--jfa-mono); letter-spacing: .08em; text-transform: uppercase; }
.jfa-input.is-error { border-color: var(--jfa-flag); background: #FDF1EF; }

.jfa-input-group { display: flex; flex-wrap: wrap; gap: .6rem; }
.jfa-input-group .jfa-input { flex: 1 1 240px; }

.jfa-checks { display: grid; gap: .8rem; margin: 1.5rem 0; }
.jfa-check {
	display: grid;
	grid-template-columns: auto 1fr;
	gap: .8rem;
	align-items: start;
	padding: .9rem 1rem;
	background: var(--jfa-paper);
	border: 1.5px solid var(--jfa-rule);
	border-radius: var(--jfa-r-sm);
	cursor: pointer;
	transition: border-color .15s, background-color .15s;
}
.jfa-check:hover { border-color: var(--jfa-slate); }
.jfa-check:has(input:checked) { border-color: var(--jfa-ink); background: var(--jfa-paper-raised); }
.jfa-check input[type="checkbox"],
.jfa-check input[type="radio"] {
	width: 20px; height: 20px;
	margin: 2px 0 0;
	accent-color: var(--jfa-ink);
	flex: none;
}
.jfa-check span { display: grid; gap: .2rem; }
.jfa-check b { font-size: .95rem; font-weight: 600; }
.jfa-check i { font-style: normal; font-size: .85rem; color: var(--jfa-on-paper-dim); }
.jfa-check.is-error { border-color: var(--jfa-flag); }

.jfa-chips { display: flex; flex-wrap: wrap; gap: .55rem; }
.jfa-chips .jfa-chip {
	display: inline-flex;
	align-items: center;
	gap: .5rem;
	padding: .55rem .95rem;
	background: var(--jfa-paper);
	border: 1.5px solid var(--jfa-rule);
	border-radius: 99px;
	font-size: .92rem;
	font-weight: 600;
	cursor: pointer;
	transition: background-color .15s, border-color .15s, color .15s;
	-webkit-tap-highlight-color: transparent;
}
.jfa-chips .jfa-chip input { position: absolute; opacity: 0; width: 1px; height: 1px; }
.jfa-chips .jfa-chip:hover { border-color: var(--jfa-slate); }
.jfa-chips .jfa-chip:has(input:checked) {
	background: var(--jfa-ink);
	border-color: var(--jfa-ink);
	color: var(--jfa-on-hull);
}
.jfa-chips .jfa-chip:has(input:focus-visible) { outline: 3px solid var(--jfa-signal); outline-offset: 2px; }

.jfa-drop {
	display: grid;
	justify-items: center;
	gap: .35rem;
	padding: 2rem 1.25rem;
	border: 2px dashed var(--jfa-rule);
	border-radius: var(--jfa-r);
	background: var(--jfa-paper);
	color: var(--jfa-slate);
	cursor: pointer;
	text-align: center;
	transition: border-color .15s, background-color .15s, color .15s;
}
.jfa-drop:hover, .jfa-drop.is-over { border-color: var(--jfa-ink); color: var(--jfa-on-paper); background: var(--jfa-paper-raised); }
.jfa-drop__label { font-weight: 700; font-size: 1rem; color: var(--jfa-on-paper); }
.jfa-drop__hint { font-family: var(--jfa-mono); font-size: .72rem; letter-spacing: .06em; }
.jfa-drop__preview { margin-top: 1rem; display: grid; gap: .75rem; justify-items: start; }
.jfa-drop__preview[hidden] { display: none; }
.jfa-drop__preview img {
	max-height: 260px;
	border-radius: var(--jfa-r-sm);
	border: 1px solid var(--jfa-rule);
}

.jfa-form__msg {
	margin-top: 1.25rem;
	padding: .9rem 1.1rem;
	border-radius: var(--jfa-r-sm);
	border-left: 3px solid var(--jfa-slate);
	background: var(--jfa-paper);
	font-size: .94rem;
}
.jfa-form__msg[hidden] { display: none; }
.jfa-form__msg.is-error { border-left-color: var(--jfa-flag); background: #FDF1EF; color: #8E2716; }
.jfa-form__msg.is-ok { border-left-color: var(--jfa-beacon); background: #E7F8F4; color: #0D5A4C; }
.jfa-form__msg.is-warn { border-left-color: var(--jfa-signal); background: #FFF7E6; color: #7A5300; }

.jfa-form__privacy { margin: 1.25rem 0 0; font-size: .82rem; color: var(--jfa-on-paper-dim); }
.jfa-form__privacy a { color: inherit; }

.jfa-done {
	background: var(--jfa-paper-raised);
	border: 1px solid var(--jfa-rule);
	border-top: 4px solid var(--jfa-beacon);
	border-radius: var(--jfa-r-lg);
	box-shadow: var(--jfa-shadow);
	padding: clamp(1.75rem, 4vw, 3rem);
	text-align: center;
	display: grid;
	justify-items: center;
	gap: .75rem;
	animation: jfa-pop .28s var(--jfa-ease);
}
.jfa-done[hidden] { display: none; }
.jfa-done__mark {
	width: 68px; height: 68px;
	display: grid; place-items: center;
	background: #E7F8F4;
	color: #0D5A4C;
	border-radius: 50%;
	margin-bottom: .35rem;
}
.jfa-done__title { margin: 0; font-size: clamp(1.6rem, 4vw, 2.2rem); }
.jfa-done__ref { margin: 0; display: grid; gap: .4rem; justify-items: center; font-family: var(--jfa-mono); font-size: .7rem; letter-spacing: .16em; text-transform: uppercase; color: var(--jfa-slate); }
.jfa-done__ref code {
	font-size: 1.5rem;
	letter-spacing: .06em;
	text-transform: none;
	color: var(--jfa-on-paper);
	background: var(--jfa-paper);
	border: 1px solid var(--jfa-rule);
	border-radius: var(--jfa-r-sm);
	padding: .4rem .9rem;
	user-select: all;
}
.jfa-done__body { margin: 0; max-width: 46ch; color: var(--jfa-on-paper-dim); }
.jfa-done__actions { margin: .75rem 0 0; display: flex; flex-wrap: wrap; gap: .7rem; justify-content: center; }

.jfa-aside {
	margin-top: 2.5rem;
	background: var(--jfa-ink);
	color: var(--jfa-on-hull);
	border-radius: var(--jfa-r-lg);
	padding: clamp(1.5rem, 3.5vw, 2.25rem);
}
.jfa-aside__title { font-size: 1.15rem; margin-bottom: 1.4rem; color: var(--jfa-on-hull); }
.jfa-aside__list { list-style: none; margin: 0; padding: 0; display: grid; gap: 1.1rem; counter-reset: none; }
.jfa-aside__list li { display: grid; grid-template-columns: auto 1fr; gap: 1rem; align-items: start; }
.jfa-aside__list li > div { display: grid; gap: .2rem; }
.jfa-aside__no { font-family: var(--jfa-mono); font-size: .78rem; color: var(--jfa-signal); padding-top: 2px; }
.jfa-aside__list b { font-size: .98rem; }
.jfa-aside__list span { font-size: .89rem; color: var(--jfa-on-hull-dim); }

/* 14. Board, tracking, filters ============================================= */

.jfa-lookup { display: flex; flex-wrap: wrap; gap: .7rem; }
.jfa-lookup .jfa-input { flex: 1 1 240px; }

.jfa-track {
	margin-top: 1.75rem;
	background: var(--jfa-paper-raised);
	border: 1px solid var(--jfa-rule);
	border-radius: var(--jfa-r-lg);
	box-shadow: var(--jfa-shadow);
	padding: clamp(1.4rem, 3.5vw, 2.25rem);
	animation: jfa-pop .22s var(--jfa-ease);
}
.jfa-track[hidden] { display: none; }
.jfa-track__head { display: flex; flex-wrap: wrap; gap: .75rem; align-items: center; justify-content: space-between; margin-bottom: 1rem; }
.jfa-track__ref { font-family: var(--jfa-mono); font-size: 1.1rem; letter-spacing: .06em; }
.jfa-track__subject { font-size: 1.3rem; margin-bottom: .3rem; }
.jfa-track__meta { margin: 0 0 1.5rem; font-family: var(--jfa-mono); font-size: .76rem; color: var(--jfa-slate); display: flex; flex-wrap: wrap; gap: .3rem 1.2rem; }
.jfa-track__blurb {
	margin: 0 0 1.5rem;
	padding: .95rem 1.1rem;
	background: var(--jfa-paper);
	border-left: 3px solid var(--jfa-signal);
	border-radius: 0 var(--jfa-r-sm) var(--jfa-r-sm) 0;
}
.jfa-track__ladder { list-style: none; margin: 0 0 1.5rem; padding: 0; display: grid; gap: 0; }
.jfa-track__ladder li {
	position: relative;
	padding: .55rem 0 .55rem 2rem;
	color: var(--jfa-slate);
	font-size: .93rem;
}
.jfa-track__ladder li::before {
	content: "";
	position: absolute;
	left: 4px; top: .95rem;
	width: 11px; height: 11px;
	border-radius: 50%;
	border: 2px solid var(--jfa-rule);
	background: var(--jfa-paper-raised);
}
.jfa-track__ladder li::after {
	content: "";
	position: absolute;
	left: 9px; top: 1.6rem; bottom: -.35rem;
	width: 2px;
	background: var(--jfa-rule);
}
.jfa-track__ladder li:last-child::after { display: none; }
.jfa-track__ladder li.is-done { color: var(--jfa-on-paper); }
.jfa-track__ladder li.is-done::before { border-color: var(--jfa-beacon); background: var(--jfa-beacon); }
.jfa-track__ladder li.is-current { color: var(--jfa-on-paper); font-weight: 700; }
.jfa-track__ladder li.is-current::before { border-color: var(--jfa-signal); background: var(--jfa-signal); box-shadow: 0 0 0 4px rgba(255, 182, 39, .28); }
.jfa-track__history { list-style: none; margin: 0; padding: 1.25rem 0 0; border-top: 1px solid var(--jfa-rule); display: grid; gap: .9rem; }
.jfa-track__history li { display: grid; gap: .15rem; }
.jfa-track__history time { font-family: var(--jfa-mono); font-size: .72rem; color: var(--jfa-slate); }
.jfa-track__history b { font-size: .95rem; }
.jfa-track__history span { font-size: .9rem; color: var(--jfa-on-paper-dim); }

.jfa-filters { display: flex; flex-wrap: wrap; gap: .5rem; margin-bottom: 2rem; }
.jfa-filter {
	display: inline-flex;
	align-items: center;
	gap: .5rem;
	padding: .5rem .9rem;
	border: 1.5px solid var(--jfa-rule);
	border-radius: 99px;
	background: var(--jfa-paper-raised);
	font-size: .88rem;
	font-weight: 600;
	text-decoration: none;
	color: var(--jfa-on-paper);
	transition: border-color .15s, background-color .15s, color .15s;
}
.jfa-filter b { font-family: var(--jfa-mono); font-size: .74rem; font-weight: 500; color: var(--jfa-slate); }
.jfa-filter:hover { border-color: var(--jfa-slate); }
.jfa-filter.is-on { background: var(--jfa-ink); border-color: var(--jfa-ink); color: var(--jfa-on-hull); }
.jfa-filter.is-on b { color: var(--jfa-signal); }

.jfa-section--paper .jfa-feed__item,
.jfa-section--chart .jfa-feed__item {
	background: var(--jfa-paper-raised);
	border-color: var(--jfa-rule);
}
.jfa-section--paper .jfa-feed__title { color: var(--jfa-on-paper); }
.jfa-section--paper .jfa-feed__summary { color: var(--jfa-on-paper-dim); }
.jfa-section--paper .jfa-feed__cat { color: #0D6A5B; }
.jfa-section--paper .jfa-feed__flag { color: #B0301C; }
.jfa-section--paper .jfa-feed__item.is-hotspot { border-color: rgba(232, 80, 58, .5); }

.jfa-empty {
	background: var(--jfa-paper-raised);
	border: 1px dashed var(--jfa-rule);
	border-radius: var(--jfa-r-lg);
	padding: clamp(2rem, 5vw, 3.5rem);
	text-align: center;
	display: grid;
	justify-items: center;
	gap: .75rem;
}
.jfa-empty h2 { margin: 0; font-size: 1.4rem; }
.jfa-empty p { margin: 0; max-width: 46ch; color: var(--jfa-on-paper-dim); }
.jfa-empty .jfa-btn { margin-top: .75rem; }

.jfa-contact { display: grid; gap: var(--jfa-gap); grid-template-columns: 1fr; margin-bottom: 1rem; }
.jfa-contact__card {
	display: grid;
	gap: .45rem;
	padding: 1.5rem 1.4rem;
	background: var(--jfa-paper-raised);
	border: 1px solid var(--jfa-rule);
	border-radius: var(--jfa-r);
	text-decoration: none;
	color: inherit;
	transition: transform .18s var(--jfa-ease), box-shadow .18s, border-color .18s;
}
.jfa-contact__card:hover { transform: translateY(-3px); box-shadow: var(--jfa-shadow); border-color: var(--jfa-slate); }
.jfa-contact__icon {
	width: 46px; height: 46px;
	display: grid; place-items: center;
	background: var(--jfa-ink);
	color: var(--jfa-signal);
	border-radius: 11px;
	margin-bottom: .4rem;
}
.jfa-contact__card b { font-family: var(--jfa-display); font-size: 1.15rem; letter-spacing: -.015em; }
.jfa-contact__card span:last-child { font-size: .92rem; color: var(--jfa-on-paper-dim); }

.jfa-sticky { position: static; }
.jfa-sticky__figure { margin: 0; }
.jfa-portrait {
	border-radius: var(--jfa-r-lg);
	overflow: hidden;
	border: 1px solid var(--jfa-rule);
	background: var(--jfa-chart);
	aspect-ratio: 4 / 5;
}
.jfa-portrait img { width: 100%; height: 100%; object-fit: cover; }
.jfa-feature {
	background: var(--jfa-paper-raised);
	border: 1px solid var(--jfa-rule);
	border-left: 4px solid var(--jfa-signal);
	border-radius: 0 var(--jfa-r) var(--jfa-r) 0;
	padding: 1.4rem 1.5rem;
	margin: 2rem 0;
}
.jfa-widget { margin-bottom: 1.5rem; }
.jfa-widget__title { font-family: var(--jfa-mono); font-size: .68rem; letter-spacing: .16em; text-transform: uppercase; color: var(--jfa-slate); margin-bottom: 1rem; }
.jfa-widget ul { list-style: none; margin: 0; padding: 0; display: grid; gap: .5rem; }
.jfa-widget a { text-decoration: none; }
.jfa-widget a:hover { color: var(--jfa-signal); }

.jfa-drawer__nav { display: block; }
.jfa-footer__lead { max-width: 42ch; }
.jfa-footer__col { min-width: 0; }
.jfa-story__copy { min-width: 0; }
.jfa-event__body { min-width: 0; }
.jfa-ledger__said, .jfa-ledger__do { min-width: 0; }

/* 15. Blog and archives ==================================================== */

.jfa-postlist { display: grid; gap: var(--jfa-gap); grid-template-columns: 1fr; }
.jfa-postcard {
	background: var(--jfa-paper-raised);
	border: 1px solid var(--jfa-rule);
	border-radius: var(--jfa-r);
	overflow: hidden;
	display: grid;
	align-content: start;
	transition: transform .18s var(--jfa-ease), box-shadow .18s;
}
.jfa-postcard:hover { transform: translateY(-3px); box-shadow: var(--jfa-shadow); }
.jfa-postcard__media { display: block; aspect-ratio: 16 / 10; overflow: hidden; background: var(--jfa-chart); }
.jfa-postcard__media img { width: 100%; height: 100%; object-fit: cover; transition: transform .4s var(--jfa-ease); }
.jfa-postcard:hover .jfa-postcard__media img { transform: scale(1.04); }
.jfa-postcard__body { padding: 1.3rem 1.35rem 1.5rem; display: grid; gap: .5rem; }
.jfa-postcard__meta { margin: 0; font-family: var(--jfa-mono); font-size: .7rem; letter-spacing: .1em; text-transform: uppercase; color: var(--jfa-slate); }
.jfa-postcard__title { margin: 0; font-size: 1.2rem; }
.jfa-postcard__title a { text-decoration: none; }
.jfa-postcard__title a:hover { text-decoration: underline; text-decoration-color: var(--jfa-signal); }
.jfa-postcard__excerpt { margin: 0; font-size: .95rem; color: var(--jfa-on-paper-dim); }

.jfa-pagination { margin-top: clamp(2rem, 4vw, 3rem); display: flex; justify-content: center; }
.jfa-pagination .nav-links { display: flex; flex-wrap: wrap; gap: .4rem; }
.jfa-pagination .page-numbers {
	display: grid;
	place-items: center;
	min-width: 44px;
	height: 44px;
	padding: 0 .75rem;
	border: 1.5px solid var(--jfa-rule);
	border-radius: var(--jfa-r-sm);
	background: var(--jfa-paper-raised);
	font-family: var(--jfa-mono);
	font-size: .88rem;
	text-decoration: none;
	color: var(--jfa-on-paper);
}
.jfa-pagination .page-numbers:hover { border-color: var(--jfa-slate); }
.jfa-pagination .page-numbers.current { background: var(--jfa-ink); border-color: var(--jfa-ink); color: var(--jfa-on-hull); }
.jfa-pagination .page-numbers.dots { border-color: transparent; background: none; }

.jfa-linkpages { margin-top: 2rem; font-family: var(--jfa-mono); font-size: .85rem; }
.jfa-linkpages a { text-decoration: none; border-bottom: 2px solid var(--jfa-signal); }

.jfa-404 { text-align: center; display: grid; justify-items: center; gap: 1rem; }
.jfa-404__search { width: min(100%, 460px); margin-top: .5rem; }
.jfa-404__links { display: flex; flex-wrap: wrap; gap: .7rem; justify-content: center; margin-top: .75rem; }

.jfa-search { display: flex; gap: .6rem; }
.jfa-search .jfa-input { flex: 1; }

.jfa-msg { padding: 1rem 1.2rem; border-radius: var(--jfa-r-sm); background: var(--jfa-chart); }
.jfa-export { margin-top: 1.5rem; }
.jfa-count { font-variant-numeric: tabular-nums; }

/* 16. WordPress core classes =============================================== */

.alignleft { float: left; margin: .4rem 1.6rem 1.2rem 0; }
.alignright { float: right; margin: .4rem 0 1.2rem 1.6rem; }
.aligncenter { display: block; margin-inline: auto; }
.alignwide { width: min(100vw - 3rem, 1100px); margin-inline: auto; }
.alignfull { width: 100vw; max-width: 100vw; margin-left: 50%; transform: translateX(-50%); }
.wp-caption { max-width: 100%; }
.wp-caption-text, .wp-element-caption, figcaption {
	font-family: var(--jfa-mono);
	font-size: .74rem;
	letter-spacing: .04em;
	color: var(--jfa-slate);
	margin-top: .6rem;
}
.sticky { position: relative; }
.bypostauthor { display: block; }
.gallery-caption { display: block; }
.wp-block-image img { border-radius: var(--jfa-r-sm); }
.wp-block-button__link { border-radius: var(--jfa-r-sm); }
.wp-block-quote { border-left: 3px solid var(--jfa-signal); padding-left: 1.2rem; }
.wp-block-table td, .wp-block-table th { border-color: var(--jfa-rule); padding: .6rem .8rem; }
.wp-block-separator { border-color: var(--jfa-rule); }
.jfa-wide { width: min(100%, var(--jfa-max)); margin-inline: auto; }

/* 17. Motion and responsive ================================================ */

.jfa-reveal { opacity: 0; transform: translateY(18px); }
.jfa-reveal.is-in {
	opacity: 1;
	transform: none;
	transition: opacity .6s var(--jfa-ease), transform .6s var(--jfa-ease);
}
.no-js .jfa-reveal { opacity: 1; transform: none; }

@media (prefers-reduced-motion: reduce) {
	html { scroll-behavior: auto; }
	*, *::before, *::after {
		animation-duration: .001ms !important;
		animation-iteration-count: 1 !important;
		transition-duration: .001ms !important;
		scroll-behavior: auto !important;
	}
	.jfa-reveal { opacity: 1 !important; transform: none !important; }
	.jfa-pulse { animation: none; }
}

/* -- Tablet ---------------------------------------------------------------- */
@media (min-width: 640px) {
	.jfa-cards { grid-template-columns: repeat(2, minmax(0, 1fr)); }
	.jfa-voices__grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
	.jfa-postlist { grid-template-columns: repeat(2, minmax(0, 1fr)); }
	.jfa-contact { grid-template-columns: repeat(2, minmax(0, 1fr)); }
	.jfa-feed { grid-template-columns: repeat(2, minmax(0, 1fr)); }
	.jfa-creds { grid-template-columns: repeat(2, minmax(0, 1fr)); }
	.jfa-creds--stack { grid-template-columns: 1fr; }
	.jfa-field--half { max-width: 100%; }
	.jfa-fieldset--two { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 0 1.25rem; }
}

/* -- Small desktop --------------------------------------------------------- */
@media (min-width: 900px) {
	.jfa-nav { display: block; }
	.jfa-cmd-open { display: inline-flex; }
	.jfa-bar__cta { display: inline-flex; }
	.jfa-burger { display: none; }
	.jfa-dock { display: none; }

	.jfa-hero__in { grid-template-columns: minmax(0, 1.15fr) minmax(0, .85fr); align-items: center; }
	.jfa-hero__copy { max-width: none; }

	.jfa-board__head { grid-template-columns: minmax(0, 1fr) auto; align-items: end; }
	.jfa-board__body { grid-template-columns: minmax(0, 1.4fr) minmax(0, 1fr); }

	.jfa-ledger__cols { grid-template-columns: repeat(2, minmax(0, 1fr)); }
	.jfa-story__grid { grid-template-columns: minmax(0, 1.05fr) minmax(0, .95fr); }
	.jfa-story__grid--wide { grid-template-columns: minmax(0, 1.4fr) minmax(0, .6fr); }

	.jfa-footer__grid { grid-template-columns: minmax(0, 1.5fr) repeat(auto-fit, minmax(180px, 1fr)); }

	.jfa-contact { grid-template-columns: repeat(3, minmax(0, 1fr)); }
	.jfa-cards { grid-template-columns: repeat(3, minmax(0, 1fr)); }
	.jfa-voices__grid { grid-template-columns: repeat(3, minmax(0, 1fr)); }
	.jfa-postlist { grid-template-columns: repeat(3, minmax(0, 1fr)); }
	.jfa-feed { grid-template-columns: repeat(3, minmax(0, 1fr)); }
	.jfa-feed--full { grid-template-columns: repeat(2, minmax(0, 1fr)); }

	.jfa-sticky { position: sticky; top: calc(var(--jfa-bar-h) + 2rem); }
}

/* -- Large desktop --------------------------------------------------------- */
@media (min-width: 1200px) {
	.jfa-cards { grid-template-columns: repeat(4, minmax(0, 1fr)); }
	.jfa-feed--full { grid-template-columns: repeat(3, minmax(0, 1fr)); }
}

/* -- Print ----------------------------------------------------------------- */
@media print {
	.jfa-header, .jfa-dock, .jfa-drawer, .jfa-cmd, .jfa-toast, .jfa-cta, .jfa-skip { display: none !important; }
	body { background: #fff; color: #000; font-size: 11pt; }
	.jfa-section { padding-block: 1rem; background: #fff !important; color: #000 !important; }
	.jfa-section--hull, .jfa-hero { background: #fff !important; color: #000 !important; }
	a[href^="http"]::after { content: " (" attr(href) ")"; font-size: .8em; }
}

/* -- Forced colours -------------------------------------------------------- */
@media (forced-colors: active) {
	.jfa-btn, .jfa-card, .jfa-feed__item, .jfa-input, .jfa-check { border: 1px solid ButtonBorder; }
	.jfa-bars__fill { background: Highlight; }
}

/* ------------------------------------------------------------- 29. Icons */
.jfa-icon { flex: none; display: inline-block; vertical-align: middle; }

/* ---------------------------------------------------------- 30. Comments */
.jfa-comments { margin-top: 1rem; }
.jfa-comments__title {
  font-family: var(--jfa-ff-display); font-weight: 800;
  font-size: var(--jfa-fs-h3); letter-spacing: -.02em; margin: 0 0 1.6rem;
}
.jfa-comments__list { list-style: none; margin: 0 0 2.4rem; padding: 0; display: grid; gap: 1rem; }
.jfa-comments__list .children { list-style: none; margin: 1rem 0 0; padding-left: clamp(1rem, 4vw, 2.5rem); display: grid; gap: 1rem; }
.jfa-comments__list .comment-body {
  background: var(--jfa-white); border: 1px solid var(--jfa-rule);
  border-radius: var(--jfa-r); padding: 1.2rem 1.4rem;
}
.jfa-comments__list .comment-author { display: flex; align-items: center; gap: .7rem; font-size: .95rem; }
.jfa-comments__list .comment-author img { border-radius: 50%; }
.jfa-comments__list .comment-author .fn { font-style: normal; font-weight: 700; }
.jfa-comments__list .comment-meta,
.jfa-comments__list .comment-metadata {
  font-family: var(--jfa-ff-mono); font-size: .68rem;
  letter-spacing: .12em; text-transform: uppercase; color: var(--jfa-slate);
  margin: .4rem 0 .8rem;
}
.jfa-comments__list .comment-metadata a { text-decoration: none; }
.jfa-comments__list .reply { margin-top: .6rem; }
.jfa-comments__list .comment-reply-link {
  font-size: .82rem; font-weight: 700; text-decoration: none;
  border-bottom: 2px solid var(--jfa-signal); padding-bottom: 1px;
}
.jfa-comments__closed { font-size: .9rem; color: var(--jfa-slate); }
.jfa-form--comment .comment-form-cookies-consent { display: flex; gap: .6rem; align-items: flex-start; font-size: .88rem; }
.jfa-form--comment .comment-form-author,
.jfa-form--comment .comment-form-email,
.jfa-form--comment .comment-form-url { margin-bottom: 1.2rem; }
.jfa-form--comment input[type="text"],
.jfa-form--comment input[type="email"],
.jfa-form--comment input[type="url"] {
  width: 100%; font: inherit; padding: .82rem 1rem;
  background: var(--jfa-chart-2); border: 1.5px solid var(--jfa-rule);
  border-radius: var(--jfa-r-sm); color: var(--jfa-hull);
}
.jfa-form--comment label { display: block; font-weight: 700; font-size: .93rem; margin-bottom: .45rem; }
.jfa-comments .comment-navigation .nav-links { display: flex; gap: 1rem; margin-bottom: 2rem; font-size: .9rem; }
