/* ══════════════════════════════════════════════════════════════
   JPF Site Builder — frontend
   Palette and fonts arrive as custom properties from Settings.
   ══════════════════════════════════════════════════════════════ */

.jpf-site {
	--jpf-blue:#0E4C92;
	--jpf-blue-dk:#09335F;
	--jpf-blue-dkr:#062644;
	--jpf-red:#C8102E;
	--jpf-gold:#D4A017;
	--jpf-ink:#15202B;
	--jpf-body:#3C4857;
	--jpf-muted:#5A6775;
	--jpf-faint:#8795A4;
	--jpf-tint:#F3F5F8;
	--jpf-tint2:#E8EDF3;
	--jpf-line:#DCE3EB;
	--jpf-green:#1B7A4B;
	--jpf-head-font:'Barlow Condensed','Arial Narrow',Helvetica,sans-serif;
	--jpf-body-font:'Barlow','Helvetica Neue',Helvetica,Arial,sans-serif;
	--jpf-head-case:uppercase;
	--jpf-wrap:1240px;

	font-family:var(--jpf-body-font);
	font-size:16px;
	line-height:1.55;
	color:var(--jpf-body);
	background:#fff;
	-webkit-font-smoothing:antialiased;
}

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

.jpf-site h1, .jpf-site h2, .jpf-site h3, .jpf-site h4 {
	margin:0;
	font-family:var(--jpf-head-font);
	font-weight:700;
	line-height:1.04;
	text-transform:var(--jpf-head-case);
	color:var(--jpf-head-colour, var(--jpf-ink));
}
.jpf-site p { margin:0; }
.jpf-site img { max-width:100%; height:auto; }
.jpf-site a { color:var(--jpf-blue); text-decoration:none; }
.jpf-site a:hover { color:var(--jpf-blue-dk); text-decoration:underline; }
.jpf-site .screen-reader-text {
	position:absolute !important; width:1px; height:1px; overflow:hidden;
	clip:rect(1px,1px,1px,1px); white-space:nowrap;
}

.jpf-wrap { width:100%; max-width:var(--jpf-wrap); margin:0 auto; padding:0 20px; }

/* ── type helpers ── */

.jpf-kicker {
	font-family:var(--jpf-head-font); font-weight:700; text-transform:uppercase;
	letter-spacing:.11em; font-size:14px; color:var(--jpf-blue); margin:0;
}
.jpf-kicker--on { color:var(--jpf-gold); }
.jpf-kicker--red { color:var(--jpf-red); }
.jpf-sechd { font-size:clamp(26px,3.2vw,38px); letter-spacing:.01em; }
.jpf-sechd--sm { font-size:clamp(21px,2.3vw,28px); }
.jpf-intro { margin-top:12px; font-size:17px; line-height:1.6; color:var(--jpf-body); max-width:70ch; }

.jpf-prose > *:first-child { margin-top:0; }
.jpf-prose p, .jpf-prose ul, .jpf-prose ol, .jpf-prose blockquote { margin:0 0 1em; font-size:16.5px; line-height:1.7; }
.jpf-prose h2 { font-size:clamp(22px,2.4vw,30px); margin:1.4em 0 .5em; }
.jpf-prose h3 { font-size:clamp(19px,2vw,24px); margin:1.3em 0 .45em; }
.jpf-prose h4 { font-size:18px; margin:1.2em 0 .4em; }
.jpf-prose ul, .jpf-prose ol { padding-left:1.3em; }
.jpf-prose li { margin-bottom:.35em; }
.jpf-prose blockquote {
	border-left:4px solid var(--jpf-gold); padding-left:18px; margin-left:0;
	font-size:18px; color:var(--jpf-ink);
}
.jpf-prose img { display:block; margin:1.2em 0; }
.jpf-prose--narrow { max-width:70ch; }
.jpf-prose--center { text-align:center; margin-left:auto; margin-right:auto; }
.jpf-rule { border:0; border-top:1px solid var(--jpf-line); }

/* ── buttons ── */

.jpf-btn {
	display:inline-flex; align-items:center; justify-content:center; gap:9px;
	max-width:100%;
	min-height:clamp(42px, 9.5vw, var(--jpf-btn-h, 52px));
	padding:0 clamp(15px, 4.4vw, var(--jpf-btn-pad, 26px));
	border:2px solid transparent; border-radius:0;
	font-family:var(--jpf-head-font); font-weight:700; text-transform:uppercase;
	letter-spacing:.06em;
	font-size:clamp(13px, 3.1vw, var(--jpf-btn-size, 17px));
	cursor:pointer; text-decoration:none;
	transition:background-color .15s ease, border-color .15s ease, color .15s ease;
}
.jpf-btn:hover { text-decoration:none; }
/* A button that is a link is still a link, and ".jpf-site a" outranks a lone
   class — which painted white button text blue. The colour travels as a
   custom property instead, so the variant decides it whatever the element. */
.jpf-btn, .jpf-site a.jpf-btn, .jpf-site a.jpf-btn:hover {
	color:var(--jpf-btn-colour, var(--jpf-blue));
}
.jpf-btn--sm { --jpf-btn-h:44px; --jpf-btn-pad:18px; --jpf-btn-size:15px; }
.jpf-btn--red { background:var(--jpf-red); border-color:var(--jpf-red); --jpf-btn-colour:#fff; }
.jpf-btn--red:hover { background:#9E0C24; border-color:#9E0C24; --jpf-btn-colour:#fff; }
.jpf-btn--blue { background:var(--jpf-blue); border-color:var(--jpf-blue); --jpf-btn-colour:#fff; }
.jpf-btn--blue:hover { background:var(--jpf-blue-dk); border-color:var(--jpf-blue-dk); --jpf-btn-colour:#fff; }
.jpf-btn--white { background:#fff; border-color:#fff; --jpf-btn-colour:var(--jpf-blue); }
.jpf-btn--white:hover { background:var(--jpf-tint2); --jpf-btn-colour:var(--jpf-blue-dk); }
.jpf-btn--outline { background:transparent; border-color:rgba(255,255,255,.6); --jpf-btn-colour:#fff; }
.jpf-btn--outline:hover { background:rgba(255,255,255,.14); --jpf-btn-colour:#fff; }
.jpf-btn--ghost { background:#fff; border-color:var(--jpf-line); --jpf-btn-colour:var(--jpf-blue); }
.jpf-btn--ghost:hover { border-color:var(--jpf-blue); --jpf-btn-colour:var(--jpf-blue-dk); }

.jpf-more {
	display:inline-flex; align-items:center; gap:8px; margin-top:16px;
	font-family:var(--jpf-head-font); font-weight:700; text-transform:uppercase;
	letter-spacing:.06em; font-size:14.5px; color:var(--jpf-blue);
}

.jpf-chip {
	display:inline-flex; align-items:center; gap:7px; padding:5px 10px;
	font-family:var(--jpf-head-font); font-weight:700; text-transform:uppercase;
	letter-spacing:.08em; font-size:12.5px; color:#fff; vertical-align:middle;
}
.jpf-chip--blue { background:var(--jpf-blue); }
.jpf-chip--red { background:var(--jpf-red); }
.jpf-chip--green { background:var(--jpf-green); }
.jpf-dot { width:9px; height:9px; background:#6BE59A; display:inline-block; }
.jpf-dot--white { background:#fff; }

/* ── header ── */

.jpf-topbar { background:var(--jpf-red); color:#fff; }
.jpf-topbar__inner {
	display:flex; align-items:center; justify-content:space-between;
	gap:clamp(8px,2vw,20px); min-height:clamp(38px,8vw,46px); flex-wrap:nowrap;
}
.jpf-topbar__left { display:flex; align-items:center; flex-wrap:nowrap; min-width:0; }
.jpf-topbar__label {
	font-family:var(--jpf-head-font); font-weight:700; text-transform:uppercase;
	letter-spacing:.07em; font-size:14px; color:rgba(255,255,255,.8);
	padding-right:18px;
}
.jpf-topbar__item {
	display:flex; align-items:center; white-space:nowrap;
	gap:clamp(4px,1.1vw,8px); color:#fff !important;
	padding:6px clamp(7px,1.7vw,16px); border-left:1px solid rgba(255,255,255,.35);
	font-family:var(--jpf-head-font); font-weight:700; text-transform:uppercase;
	letter-spacing:.05em; font-size:clamp(9.5px,2.5vw,16px); text-decoration:none !important;
}
.jpf-topbar__item .jpf-icon { flex:0 0 auto; width:clamp(11px,2.3vw,15px); height:auto; }
.jpf-topbar__item:hover { background:rgba(0,0,0,.12); }
.jpf-topbar__status {
	display:flex; align-items:center; gap:9px;
	font-family:var(--jpf-head-font); font-weight:700; text-transform:uppercase;
	letter-spacing:.07em; font-size:13.5px;
}

.jpf-masthead { background:#fff; border-bottom:1px solid var(--jpf-line); }
.jpf-masthead__inner {
	display:flex; align-items:center; justify-content:space-between;
	gap:clamp(12px,2.4vw,24px); min-height:clamp(76px,16vw,104px); flex-wrap:wrap;
}
.jpf-brand { display:flex; align-items:center; gap:16px; text-decoration:none !important; }
.jpf-brand__text { display:block; }
.jpf-brand__name {
	display:block; font-family:var(--jpf-head-font); font-weight:700;
	text-transform:uppercase; letter-spacing:.015em;
	font-size:clamp(20px,2.4vw,31px); line-height:1; color:var(--jpf-ink);
}
.jpf-brand__tagline {
	display:block; margin-top:4px; font-family:var(--jpf-head-font);
	font-weight:700; text-transform:uppercase; letter-spacing:.14em;
	font-size:13px; color:var(--jpf-muted);
}
.jpf-masthead__right { display:flex; align-items:center; gap:clamp(10px,2vw,20px); }
.jpf-strap { text-align:right; display:block; }
.jpf-strap__small {
	display:block; font-family:var(--jpf-head-font); font-weight:700;
	text-transform:uppercase; letter-spacing:.14em; font-size:12.5px; color:var(--jpf-faint);
}
.jpf-strap__big {
	display:block; font-family:var(--jpf-head-font); font-weight:700;
	text-transform:uppercase; font-size:22px; line-height:1.1; color:var(--jpf-blue);
}
.jpf-masthead__right .jpf-btn { --jpf-btn-h:50px; }

.jpf-burger {
	display:none; order:-1; flex:0 0 auto;
	width:clamp(40px,10vw,48px); height:clamp(40px,10vw,48px);
	border:1px solid var(--jpf-line); background:#fff; cursor:pointer;
	padding:clamp(10px,2.4vw,12px) clamp(9px,2.2vw,11px);
}
.jpf-burger span { display:block; height:2px; background:var(--jpf-ink); margin:clamp(3px,.9vw,4px) 0; }

/* ── navigation ── */

.jpf-nav { background:var(--jpf-blue); }
.jpf-nav__inner { display:flex; align-items:center; justify-content:space-between; gap:16px; }
.jpf-nav__list { display:flex; align-items:center; margin:0; padding:0; list-style:none; flex-wrap:wrap; }
.jpf-nav__item { position:relative; }
.jpf-nav__item > a {
	display:flex; align-items:center; gap:6px; min-height:54px; padding:0 18px;
	color:#DCE7F3 !important; text-decoration:none !important;
	font-family:var(--jpf-head-font); font-weight:600; text-transform:uppercase;
	letter-spacing:.05em; font-size:16.5px;
}
.jpf-nav__item > a:hover,
.jpf-nav__item:focus-within > a { background:var(--jpf-blue-dk); color:#fff !important; }
.jpf-nav__item.is-current > a { background:var(--jpf-blue-dk); color:#fff !important; }

.jpf-nav__sub {
	position:absolute; top:100%; left:0; z-index:40; min-width:260px;
	margin:0; padding:6px 0; list-style:none; background:#fff;
	border:1px solid var(--jpf-line); border-top:3px solid var(--jpf-gold);
	box-shadow:0 14px 28px -16px rgba(6,38,68,.45);
	opacity:0; visibility:hidden; transform:translateY(4px);
	transition:opacity .12s ease, transform .12s ease, visibility .12s;
}
.jpf-nav__item:hover > .jpf-nav__sub,
.jpf-nav__item:focus-within > .jpf-nav__sub,
.jpf-nav__item.is-open > .jpf-nav__sub { opacity:1; visibility:visible; transform:none; }
.jpf-nav__sub a {
	display:block; padding:10px 18px; color:var(--jpf-ink) !important;
	font-size:15.5px; text-decoration:none !important;
}
.jpf-nav__sub a:hover { background:var(--jpf-tint); color:var(--jpf-blue) !important; }

.jpf-nav__search { display:flex; align-items:center; gap:8px; color:#DCE7F3; }
.jpf-nav__search input {
	background:rgba(255,255,255,.12); border:1px solid rgba(255,255,255,.28);
	color:#fff; padding:7px 10px; font:inherit; font-size:14.5px; width:150px;
}
.jpf-nav__search input::placeholder { color:rgba(255,255,255,.65); }

/* ── sections and tones ── */

.jpf-sec { padding:56px 0 60px; }
.jpf-sec:first-child { padding-top:0; }

/* Bands that run edge to edge supply their own spacing, so the section
   wrapper must not add any — otherwise a white strip appears above and
   below them. */
.jpf-sec--hero_slider,
.jpf-sec--page_banner,
.jpf-sec--stat_bar { padding:0; }
.jpf-tone--white { background:#fff; }
.jpf-tone--tint { background:var(--jpf-tint); border-top:1px solid var(--jpf-line); border-bottom:1px solid var(--jpf-line); }
.jpf-tone--blue { background:var(--jpf-blue); }
.jpf-tone--dark { background:var(--jpf-blue-dk); }
.jpf-tone--red { background:var(--jpf-red); }
.jpf-tone--gold { background:var(--jpf-gold); }

.jpf-tone--blue, .jpf-tone--dark, .jpf-tone--red {
	color:#CBDAE9;
}
.jpf-tone--blue, .jpf-tone--dark, .jpf-tone--red { --jpf-head-colour:#FFFFFF; }
.jpf-tone--blue .jpf-intro, .jpf-tone--dark .jpf-intro, .jpf-tone--red .jpf-intro { color:#CBDAE9; }
.jpf-tone--red { color:#FFD9DE; }
.jpf-tone--red .jpf-kicker--on { color:#FFD9DE; }
.jpf-tone--gold { color:#2A2000; --jpf-head-colour:#2A2000; }
.jpf-tone--gold .jpf-kicker, .jpf-tone--gold .jpf-kicker--on { color:#6B4F06; }
.jpf-tone--blue .jpf-prose, .jpf-tone--dark .jpf-prose { color:#CBDAE9; }
.jpf-tone--blue .jpf-prose a, .jpf-tone--dark .jpf-prose a { color:#fff; text-decoration:underline; }

/* ── heading block ── */

.jpf-head { margin-bottom:34px; }
.jpf-head--split { display:flex; align-items:flex-end; justify-content:space-between; gap:40px; flex-wrap:wrap; }
.jpf-head--center { text-align:center; }
.jpf-head--center .jpf-intro { margin-left:auto; margin-right:auto; }
.jpf-head__text .jpf-sechd { margin-top:9px; }
.jpf-head__btn { margin-top:22px; }
.jpf-head__aside { flex:none; }

/* ── grids ── */

.jpf-grid { display:grid; gap:18px; }
.jpf-grid--tight { gap:14px; }
.jpf-grid--1 { grid-template-columns:1fr; }
.jpf-grid--2 { grid-template-columns:repeat(2,minmax(0,1fr)); }
.jpf-grid--3 { grid-template-columns:repeat(3,minmax(0,1fr)); }
.jpf-grid--4 { grid-template-columns:repeat(4,minmax(0,1fr)); }
.jpf-grid--6 { grid-template-columns:repeat(6,minmax(0,1fr)); }

/* ── hero ── */

.jpf-hero {
	/* One scale for the whole band. --jpf-u is a unit that measures 1px at the
	   1440px design width and shrinks with the window below it, so every part
	   of the composition — band height, type, spacing, buttons — is written as
	   a multiple of it and the band narrows as one picture rather than as a
	   pile of parts each reflowing on its own. Above 1440 it holds at 1px, so
	   a wide monitor shows the sizes you set. */
	--jpf-u:min(1px, calc(100vw / 1440));
	position:relative; overflow:hidden;
	height:max(320px, calc(var(--jpf-hero-hn,500) * var(--jpf-u)));
	background:var(--jpf-blue-dk);
	--jpf-head-colour:#FFFFFF;
}
.jpf-hero .jpf-wrap { padding:0 calc(20 * var(--jpf-u)); }
.jpf-hero .jpf-btn {
	--jpf-btn-size:max(12px, calc(17 * var(--jpf-u)));
	--jpf-btn-h:max(40px, calc(52 * var(--jpf-u)));
	--jpf-btn-pad:max(14px, calc(26 * var(--jpf-u)));
}
.jpf-hero__slide {
	position:absolute; inset:0;
	background-size:var(--jpf-size, cover);
	background-position:var(--jpf-pos, center center);
	background-repeat:no-repeat;
	opacity:0; visibility:hidden; transition:opacity .5s ease, visibility .5s;
	display:flex; align-items:center;
}
.jpf-hero__slide.is-active { opacity:1; visibility:visible; }
.jpf-hero__veil {
	position:absolute; inset:0;
	background:linear-gradient(90deg,rgba(6,38,68,.96) 0%,rgba(6,38,68,.88) 48%,rgba(6,38,68,.36) 100%);
	opacity:var(--jpf-hero-veil, 1);
}
.jpf-hero__ph {
	position:absolute; inset:0; display:flex; flex-direction:column;
	align-items:center; justify-content:center; gap:12px; color:#5C7E9F;
	font-family:var(--jpf-head-font); text-transform:uppercase; letter-spacing:.1em; font-size:14px;
	opacity:.45;
}
.jpf-hero__inner { position:relative; z-index:2; }
.jpf-hero__eyebrow {
	display:inline-block; background:var(--jpf-red); color:#fff;
	padding:calc(7 * var(--jpf-u)) calc(14 * var(--jpf-u));
	font-family:var(--jpf-head-font); font-weight:700; text-transform:uppercase;
	letter-spacing:.11em;
	font-size:max(10px, calc(13 * var(--jpf-u)));
	margin-bottom:calc(20 * var(--jpf-u));
}
.jpf-hero__title {
	font-size:max(26px, calc(var(--jpf-hero-titlen, 88) * var(--jpf-u)));
	color:var(--jpf-head-colour,#fff); line-height:.95;
	max-width:calc(var(--jpf-hero-measuren, 900) * var(--jpf-u));
}
.jpf-hero__text {
	margin-top:calc(18 * var(--jpf-u));
	font-size:max(13px, calc(var(--jpf-hero-textn, 20) * var(--jpf-u)));
	line-height:1.6; color:var(--jpf-hero-text,#CBDAE9);
	max-width:min(calc(var(--jpf-hero-measuren, 900) * var(--jpf-u)), calc(620 * var(--jpf-u)));
}
.jpf-hero__mshot { display:none; }
.jpf-hero__btns { display:flex; gap:calc(12 * var(--jpf-u)); margin-top:calc(28 * var(--jpf-u)); flex-wrap:wrap; }
.jpf-hero--btn-sm .jpf-hero__btns .jpf-btn { --jpf-btn-h:44px; --jpf-btn-pad:20px; --jpf-btn-size:15px; }
.jpf-hero--btn-lg .jpf-hero__btns .jpf-btn { --jpf-btn-h:62px; --jpf-btn-pad:34px; --jpf-btn-size:20px; }

/* where the words sit */
.jpf-hero__slide.is-text-center .jpf-hero__inner { text-align:center; }
.jpf-hero__slide.is-text-center .jpf-hero__title,
.jpf-hero__slide.is-text-center .jpf-hero__text { margin-left:auto; margin-right:auto; }
.jpf-hero__slide.is-text-center .jpf-hero__btns { justify-content:center; }
.jpf-hero__slide.is-text-right .jpf-hero__inner { text-align:right; }
.jpf-hero__slide.is-text-right .jpf-hero__title,
.jpf-hero__slide.is-text-right .jpf-hero__text { margin-left:auto; }
.jpf-hero__slide.is-text-right .jpf-hero__btns { justify-content:flex-end; }
.jpf-hero__slide.is-text-right .jpf-hero__eyebrow { margin-left:auto; }

/* how the photograph is shaded */
.jpf-hero--veil-right .jpf-hero__veil {
	background:linear-gradient(270deg,rgba(6,38,68,.96) 0%,rgba(6,38,68,.88) 48%,rgba(6,38,68,.36) 100%);
}
.jpf-hero--veil-bottom .jpf-hero__veil {
	background:linear-gradient(180deg,rgba(6,38,68,.22) 0%,rgba(6,38,68,.55) 45%,rgba(6,38,68,.95) 100%);
}
.jpf-hero--veil-even .jpf-hero__veil { background:rgba(6,38,68,.74); }
.jpf-hero--veil-none .jpf-hero__veil { display:none; }
.jpf-hero__dots { position:absolute; left:0; right:0; bottom:calc(26 * var(--jpf-u)); z-index:3; display:flex; gap:calc(9 * var(--jpf-u)); }
.jpf-hero__dot { width:max(22px, calc(34 * var(--jpf-u))); height:max(4px, calc(5 * var(--jpf-u))); border:0; padding:0; background:rgba(255,255,255,.4); cursor:pointer; }
.jpf-hero__dot.is-active { background:var(--jpf-gold); }

/* ── page banner ── */

.jpf-banner {
	position:relative; overflow:hidden; background:var(--jpf-blue-dk);
	border-bottom:4px solid var(--jpf-gold); padding-bottom:46px;
	--jpf-head-colour:#FFFFFF;
}
.jpf-banner__crest { position:absolute; right:60px; top:-30px; opacity:.1; pointer-events:none; }
.jpf-banner__inner { position:relative; }
.jpf-crumbs {
	display:flex; align-items:center; gap:10px; min-height:50px; margin:0;
	font-family:var(--jpf-head-font); font-weight:700; text-transform:uppercase;
	letter-spacing:.09em; font-size:13px; color:#9FBCD8;
}
.jpf-crumbs a { color:#9FBCD8; }
.jpf-crumbs__here { color:var(--jpf-gold); }
.jpf-banner__title {
	margin-top:8px;
	font-size:clamp(26px, 4.6vw, var(--jpf-banner-title, 58px));
	color:var(--jpf-head-colour,#fff); max-width:900px;
}
.jpf-banner__standfirst { margin-top:16px; font-size:clamp(16px,1.5vw,18.5px); line-height:1.6; color:#CBDAE9; max-width:760px; }

/* ── colour banner ── */

.jpf-sec--banner_cta { padding:38px 0 40px; }
.jpf-cta { display:flex; align-items:center; justify-content:space-between; gap:40px; flex-wrap:wrap; }
.jpf-cta__text { flex:1 1 420px; }
.jpf-cta .jpf-sechd { margin-top:10px; }

/* ── cards ── */

.jpf-card {
	background:#fff; border:1px solid var(--jpf-line); border-top:4px solid var(--jpf-blue);
	padding:28px 26px 30px; display:block; color:inherit;
}
.jpf-card--link { text-decoration:none !important; transition:box-shadow .15s ease, transform .15s ease; }
.jpf-card--link:hover { box-shadow:0 12px 26px -18px rgba(6,38,68,.5); transform:translateY(-2px); }
.jpf-card__icon {
	display:flex; align-items:center; justify-content:center;
	width:50px; height:50px; background:var(--jpf-tint); margin-bottom:20px;
}
.jpf-card__title { font-size:24px; }
.jpf-card__text { margin-top:9px; font-size:15.5px; line-height:1.55; color:var(--jpf-muted); }

.jpf-panel { background:#fff; border:1px solid var(--jpf-line); border-top:4px solid var(--jpf-gold); padding:30px 32px 34px; }
.jpf-panel .jpf-sechd { margin-top:9px; }
.jpf-panel .jpf-prose { margin-top:12px; }

/* ── icon row ── */

.jpf-icons { margin-top:40px; }
.jpf-iconitem { display:block; text-align:center; text-decoration:none !important; color:inherit; }
.jpf-iconitem__box {
	display:flex; align-items:center; justify-content:center;
	width:var(--jpf-ibox,84px); height:var(--jpf-ibox,84px); margin:0 auto;
	background:var(--jpf-ibg,var(--jpf-blue));
	transition:background-color .15s ease;
}
.jpf-icons--rounded .jpf-iconitem__box { border-radius:12px; }
.jpf-icons--circle .jpf-iconitem__box { border-radius:50%; }
.jpf-icons--none .jpf-iconitem__box { background:none !important; width:auto; height:var(--jpf-ibox,84px); }
.jpf-iconitem:hover .jpf-iconitem__box { background:var(--jpf-ibg-hover,var(--jpf-blue-dk)); }
.jpf-iconitem__label { margin-top:16px; font-size:var(--jpf-ilabel,21px); color:var(--jpf-ilabel-colour,inherit); }

@media (max-width:860px) {
	.jpf-iconitem__box { width:min(var(--jpf-ibox,84px),22vw); height:min(var(--jpf-ibox,84px),22vw); }
	.jpf-icons--none .jpf-iconitem__box { width:auto; }
	.jpf-iconitem__box .jpf-icon { max-width:60%; max-height:60%; }
}

/* ── stats ── */

.jpf-stats { display:grid; grid-template-columns:repeat(var(--jpf-stat-cols,4),minmax(0,1fr)); }
.jpf-stat { padding:26px 30px 28px; border-right:1px solid rgba(255,255,255,.18); }
.jpf-stat:last-child { border-right:0; }
.jpf-stat__value { font-family:var(--jpf-head-font); font-weight:700; font-size:clamp(30px,3.4vw,44px); line-height:1; color:#fff; }
.jpf-stat__label {
	margin-top:5px; font-family:var(--jpf-head-font); font-weight:700;
	text-transform:uppercase; letter-spacing:.11em; font-size:13.5px; color:#BBD2EA;
}
.jpf-tone--white .jpf-stat, .jpf-tone--tint .jpf-stat { border-right-color:var(--jpf-line); }
.jpf-tone--white .jpf-stat__value, .jpf-tone--tint .jpf-stat__value { color:var(--jpf-blue); }
.jpf-tone--white .jpf-stat__label, .jpf-tone--tint .jpf-stat__label { color:var(--jpf-muted); }
.jpf-tone--gold .jpf-stat__value { color:#2A2000; }
.jpf-tone--gold .jpf-stat__label { color:#6B4F06; }

/* ── people ── */

.jpf-person {
	display:flex; flex-direction:column;
	background:#fff; border:1px solid var(--jpf-line); border-top:4px solid var(--jpf-blue);
}
.jpf-person__body { display:flex; flex-direction:column; flex:1 1 auto; padding:22px 22px 26px; }

/* Line the rows up. A name or a role that runs to two lines pushes
   everything under it down, so across a row the ranks meet but the names and
   roles do not. Reserving the same number of lines in every card puts them
   back on the same line as each other; the reserve is a floor, so a longer
   one still gets the room it needs. */
.jpf-people--align .jpf-person__name { min-height:calc(var(--jpf-name-lines,2) * 1.05em); }
.jpf-people--align .jpf-person__role { min-height:calc(var(--jpf-role-lines,2) * 1.5em); }
.jpf-person__rank {
	font-family:var(--jpf-head-font); font-weight:700; text-transform:uppercase;
	letter-spacing:.11em; font-size:13px; color:var(--jpf-red); margin:0;
}
.jpf-person__name { margin-top:7px; font-size:clamp(17px,4.4vw,25px); line-height:1.05; }
.jpf-person__role { margin-top:9px; font-size:clamp(12.5px,3.2vw,15px); line-height:1.5; color:var(--jpf-muted); }
.jpf-person__bio { margin-top:12px; }
.jpf-person__bio p { font-size:15px; line-height:1.6; }

.jpf-prow {
	display:flex; align-items:center; gap:16px; padding:16px 18px;
	background:#fff; border:1px solid var(--jpf-line);
}
.jpf-prow__avatar {
	flex:none; width:56px; height:56px; background:var(--jpf-tint2);
	display:flex; align-items:center; justify-content:center; color:var(--jpf-faint);
	overflow:hidden;
}
.jpf-prow__avatar img { width:56px; height:56px; object-fit:cover; }
.jpf-prow__name {
	display:block; font-family:var(--jpf-head-font); font-weight:700;
	text-transform:uppercase; font-size:21px; line-height:1.05; color:var(--jpf-ink);
}
.jpf-prow__role {
	display:block; margin-top:3px; font-family:var(--jpf-head-font); font-weight:700;
	text-transform:uppercase; letter-spacing:.1em; font-size:12.5px; color:var(--jpf-blue);
}

/* ── tiles ── */

.jpf-tile {
	display:flex; align-items:center; gap:16px; padding:20px 22px;
	background:#fff; border:1px solid var(--jpf-line);
	text-decoration:none !important; color:inherit;
}
.jpf-tile:hover { border-color:var(--jpf-blue); }
.jpf-tile__icon { flex:none; width:44px; height:44px; background:var(--jpf-tint); display:flex; align-items:center; justify-content:center; }
.jpf-tile__label {
	flex-grow:1; font-family:var(--jpf-head-font); font-weight:700;
	text-transform:uppercase; font-size:19px; line-height:1.1; color:var(--jpf-ink);
}
.jpf-tile__arrow { flex:none; color:var(--jpf-blue); display:flex; }

/* ── files ── */

.jpf-files { display:flex; flex-direction:column; gap:11px; }
.jpf-file {
	display:flex; align-items:center; gap:20px; padding:18px 22px;
	background:#fff; border:1px solid var(--jpf-line);
}
.jpf-file__icon { flex:none; width:48px; height:48px; background:#FBECEA; display:flex; align-items:center; justify-content:center; }
.jpf-file__text { flex-grow:1; min-width:0; }
.jpf-file__title {
	display:block; font-family:var(--jpf-head-font); font-weight:700;
	text-transform:uppercase; font-size:21px; line-height:1.1; color:var(--jpf-ink);
}
.jpf-file__meta { display:block; margin-top:3px; font-size:14px; color:var(--jpf-muted); }
.jpf-file__missing { flex:none; font-size:14px; color:var(--jpf-red); }

/* ── timeline ── */

.jpf-timeline { list-style:none; margin:0; padding:0; }
.jpf-mile { display:grid; grid-template-columns:132px 1fr; gap:30px; padding-bottom:40px; }
.jpf-mile:last-child { padding-bottom:0; }
.jpf-mile__year {
	text-align:right; font-family:var(--jpf-head-font); font-weight:700;
	font-size:clamp(26px,3vw,38px); line-height:.95; color:var(--jpf-blue);
}
.jpf-mile__body { border-left:3px solid var(--jpf-line); padding-left:32px; position:relative; }
.jpf-mile__body::before {
	content:''; position:absolute; left:-9px; top:7px;
	width:15px; height:15px; background:var(--jpf-blue);
}
.jpf-mile__title { font-size:26px; }
.jpf-mile__body .jpf-prose { margin-top:11px; }

/* ── steps ── */

.jpf-steps { padding:34px 36px 38px; }
.jpf-steps .jpf-sechd { margin-top:9px; }
.jpf-steps__list { display:flex; flex-direction:column; gap:20px; margin-top:28px; }
.jpf-steps__list--row { display:grid; grid-template-columns:repeat(auto-fit,minmax(200px,1fr)); gap:18px; }
.jpf-step { display:flex; gap:15px; }
.jpf-step__num {
	flex:none; width:34px; height:34px; background:var(--jpf-gold); color:#2A2000;
	font-family:var(--jpf-head-font); font-weight:700; font-size:19px;
	display:flex; align-items:center; justify-content:center;
}
.jpf-step__title {
	display:block; font-family:var(--jpf-head-font); font-weight:700;
	text-transform:uppercase; font-size:19px; color:#fff;
}
.jpf-step__body { display:block; margin-top:4px; font-size:15px; line-height:1.55; color:#BBD2EA; }
.jpf-tone--white .jpf-step__title, .jpf-tone--tint .jpf-step__title { color:var(--jpf-ink); }
.jpf-tone--white .jpf-step__body, .jpf-tone--tint .jpf-step__body { color:var(--jpf-muted); }
.jpf-steps__btns { display:flex; gap:12px; margin-top:28px; flex-wrap:wrap; }
.jpf-steps__btns:empty { display:none; }

/* ── notice ── */

.jpf-notice { display:flex; gap:14px; padding:16px 20px; border-left:4px solid var(--jpf-blue); background:var(--jpf-tint); }
.jpf-notice__icon { flex:none; margin-top:2px; }
.jpf-notice .jpf-prose p { margin:0; font-size:15.5px; }
.jpf-notice--warning { background:#FFF8E6; border-left-color:var(--jpf-gold); color:#5A4708; }
.jpf-notice--success { background:#E9F5EE; border-left-color:var(--jpf-green); color:#14532d; }

/* ── accordion ── */

.jpf-acc { border:1px solid var(--jpf-line); }
.jpf-acc__item { border-bottom:1px solid var(--jpf-line); background:#fff; }
.jpf-acc__item:last-child { border-bottom:0; }
.jpf-acc__item > summary {
	cursor:pointer; padding:18px 22px; list-style:none;
	font-family:var(--jpf-head-font); font-weight:700; text-transform:uppercase;
	font-size:20px; color:var(--jpf-ink);
}
.jpf-acc__item > summary::-webkit-details-marker { display:none; }
.jpf-acc__item[open] > summary { background:var(--jpf-tint); }
.jpf-acc__item .jpf-prose { padding:4px 22px 20px; }

/* ── video ── */

.jpf-video {
	display:grid; grid-template-columns:minmax(0,1.05fr) minmax(0,1fr);
	border:1px solid var(--jpf-line); border-top:4px solid var(--jpf-red); background:#fff;
}
.jpf-video__cover {
	position:relative; min-height:340px; background:var(--jpf-blue-dk);
	background-size:cover; background-position:center;
	display:flex; align-items:center; justify-content:center;
}
.jpf-video__badge { position:absolute; left:0; top:0; }
.jpf-video__play { width:76px; height:76px; background:rgba(255,255,255,.18); display:flex; align-items:center; justify-content:center; }
.jpf-video__body { padding:40px; }
.jpf-video__body .jpf-sechd { margin-top:10px; }
.jpf-video__body .jpf-prose { margin-top:14px; }
.jpf-video__link { display:flex; align-items:center; gap:11px; margin-top:18px; font-size:16px; }
.jpf-video__btns { display:flex; gap:11px; margin-top:26px; flex-wrap:wrap; }

/* ── contact ── */

.jpf-contact { display:grid; grid-template-columns:minmax(0,1fr) minmax(0,1.1fr); gap:50px; align-items:center; }
.jpf-contact__text .jpf-sechd { margin-top:9px; }
.jpf-contact__text .jpf-btn { margin-top:24px; }
.jpf-contact__cards { display:grid; grid-template-columns:repeat(auto-fit,minmax(180px,1fr)); gap:1px; background:rgba(255,255,255,.22); border:1px solid rgba(255,255,255,.22); }
.jpf-ccard { padding:22px 20px; background:var(--jpf-blue); }
.jpf-tone--dark .jpf-ccard { background:var(--jpf-blue-dk); }
.jpf-tone--white .jpf-contact__cards, .jpf-tone--tint .jpf-contact__cards { background:var(--jpf-line); border-color:var(--jpf-line); }
.jpf-tone--white .jpf-ccard, .jpf-tone--tint .jpf-ccard { background:#fff; }
.jpf-ccard__head {
	display:flex; align-items:center; gap:9px;
	font-family:var(--jpf-head-font); font-weight:700; text-transform:uppercase;
	letter-spacing:.11em; font-size:12.5px; color:#BBD2EA;
}
.jpf-tone--white .jpf-ccard__head, .jpf-tone--tint .jpf-ccard__head { color:var(--jpf-muted); }
.jpf-ccard__body { display:block; margin-top:10px; font-size:16.5px; font-weight:600; color:#fff; line-height:1.5; }
.jpf-ccard__body a { color:#fff; }
.jpf-tone--white .jpf-ccard__body, .jpf-tone--tint .jpf-ccard__body { color:var(--jpf-ink); }
.jpf-tone--white .jpf-ccard__body a, .jpf-tone--tint .jpf-ccard__body a { color:var(--jpf-blue); }

.jpf-mapcard { border:1px solid var(--jpf-line); background:#fff; max-width:520px; }
.jpf-mapcard__embed iframe { display:block; width:100%; height:240px; border:0; }
.jpf-mapcard__body { padding:24px 26px 28px; }
.jpf-mapcard__addr { margin-top:10px; font-size:16px; line-height:1.6; }
.jpf-mapcard .jpf-btn { margin-top:16px; }

/* ── media placeholders ── */

.jpf-media { overflow:hidden; background:var(--jpf-tint2); height:var(--jpf-media-h,300px); }
.jpf-media img {
	width:100%; height:100%; display:block;
	object-fit:var(--jpf-fit, cover);
	object-position:var(--jpf-focus, center center);
}
.jpf-media--empty {
	display:flex; flex-direction:column; align-items:center; justify-content:center;
	gap:9px; color:var(--jpf-faint); border:1px dashed var(--jpf-line);
}
.jpf-media__label { font-family:var(--jpf-head-font); text-transform:uppercase; letter-spacing:.08em; font-size:12.5px; }

/* ── image/text split ── */

.jpf-split { display:grid; grid-template-columns:minmax(0,1fr) minmax(0,1.15fr); gap:44px; align-items:center; }
.jpf-split--flip .jpf-split__media { order:2; }
.jpf-split__text .jpf-sechd { margin-top:9px; }
.jpf-split__text .jpf-prose { margin-top:14px; }
.jpf-split__text .jpf-btn { margin-top:20px; }

/* ── forms ── */

.jpf-formwrap { display:block; }
.jpf-formwrap--aside { display:grid; grid-template-columns:minmax(0,1.35fr) minmax(0,1fr); gap:44px; align-items:start; }
.jpf-formmain .jpf-sechd { margin-top:9px; }
.jpf-formmain .jpf-prose { margin-top:12px; }

.jpf-form {
	margin-top:24px; background:#fff; border:1px solid var(--jpf-line);
	border-top:4px solid var(--jpf-blue); padding:30px 32px 34px;
}
.jpf-frow { display:grid; grid-template-columns:repeat(auto-fit,minmax(220px,1fr)); gap:18px; }
.jpf-f { margin-bottom:18px; }
.jpf-frow .jpf-f { margin-bottom:0; }
.jpf-f__label {
	display:block; margin-bottom:7px;
	font-family:var(--jpf-head-font); font-weight:700; text-transform:uppercase;
	letter-spacing:.06em; font-size:14.5px; color:var(--jpf-ink);
}
.jpf-f__input {
	display:block; width:100%; min-height:52px; padding:0 15px;
	border:1px solid #BFCCDA; border-radius:0; background:#fff;
	font:inherit; font-size:16px; color:var(--jpf-ink);
}
textarea.jpf-f__input { min-height:150px; padding:14px 15px; line-height:1.6; resize:vertical; }
.jpf-f__input:focus { outline:3px solid #9CC2EC; outline-offset:0; border-color:var(--jpf-blue); }
.jpf-f__note { margin-top:7px; font-size:14px; color:var(--jpf-muted); }

.jpf-consent { display:flex; align-items:flex-start; gap:12px; font-size:15px; line-height:1.6; margin:18px 0; }
.jpf-consent input { width:22px; height:22px; margin-top:1px; flex:none; }
.jpf-formrow-split { display:flex; align-items:center; justify-content:space-between; gap:18px; flex-wrap:wrap; }
.jpf-lostpass { font-size:15px; font-weight:600; }
.jpf-formnote { margin:0 0 18px; padding:15px 17px; background:var(--jpf-tint); border-left:4px solid var(--jpf-blue); }
.jpf-formnote p { margin:0; font-size:15px; line-height:1.6; }

.jpf-rules { list-style:none; margin:0 0 18px; padding:0; display:grid; grid-template-columns:repeat(auto-fit,minmax(170px,1fr)); gap:8px; }
.jpf-rules li { display:flex; align-items:center; gap:9px; font-size:15px; color:var(--jpf-body); }

.jpf-formmsg { margin:18px 0; padding:14px 18px; border-left:4px solid; font-size:15.5px; }
.jpf-formmsg--success { background:#E9F5EE; border-color:var(--jpf-green); color:#14532d; }
.jpf-formmsg--error { background:#FBECEA; border-color:var(--jpf-red); color:#8a1c1c; }

.jpf-formaside { display:flex; flex-direction:column; gap:18px; }
.jpf-apanel { padding:26px 24px 28px; border:1px solid var(--jpf-line); }
.jpf-apanel__title { font-size:24px; }
.jpf-apanel .jpf-prose { margin-top:11px; }
.jpf-apanel.jpf-tone--blue, .jpf-apanel.jpf-tone--red { border:0; }
.jpf-apanel.jpf-tone--blue, .jpf-apanel.jpf-tone--red { --jpf-head-colour:#FFFFFF; }

/* ── footer ── */

.jpf-footer__strip { background:var(--jpf-blue); padding:14px 0; }
.jpf-footer__strip-inner {
	display:flex; align-items:center; justify-content:space-between;
	gap:24px; flex-wrap:wrap;
	font-family:var(--jpf-head-font); font-weight:700; text-transform:uppercase;
	letter-spacing:.06em; font-size:15px; color:#fff;
}
.jpf-footer__strip-btns { display:flex; gap:10px; flex-wrap:wrap; }
.jpf-footer__strip-btns .jpf-btn { min-height:44px; font-size:15px; }

.jpf-footer__main {
	background:var(--jpf-blue-dkr); padding:54px 0 0; color:#9FB6CE;
	--jpf-head-colour:var(--jpf-gold);
}
.jpf-footer__cols { display:grid; grid-template-columns:minmax(0,1.5fr) repeat(auto-fit,minmax(150px,1fr)); gap:40px; }
.jpf-footer__brand { display:flex; align-items:center; gap:14px; }
.jpf-footer__brand span {
	font-family:var(--jpf-head-font); font-weight:700; text-transform:uppercase;
	font-size:21px; line-height:1.05; color:#fff;
}
.jpf-footer__blurb { margin-top:18px; font-size:15px; line-height:1.7; max-width:320px; }
.jpf-footer__strong { margin-top:12px; font-size:15px; line-height:1.7; color:#C6D6E8; font-weight:600; }
.jpf-footer__strong a { color:#C6D6E8; }
.jpf-footer__coltitle {
	font-family:var(--jpf-head-font); font-weight:700; text-transform:uppercase;
	letter-spacing:.1em; font-size:15px; color:var(--jpf-gold); margin:0;
}
.jpf-footer__col ul { list-style:none; margin:16px 0 0; padding:0; display:flex; flex-direction:column; gap:10px; }
.jpf-footer__col a { font-size:15px; color:#C6D6E8; }
.jpf-footer__col a:hover { color:#fff; }

.jpf-socials { display:flex; gap:8px; margin-top:20px; }
.jpf-socials a {
	width:40px; height:40px; background:rgba(255,255,255,.1); color:#fff;
	display:flex; align-items:center; justify-content:center;
}
.jpf-socials a:hover { background:rgba(255,255,255,.2); }

.jpf-footer__legal {
	margin-top:44px; padding:22px 0; border-top:1px solid rgba(255,255,255,.12);
	display:flex; align-items:center; justify-content:space-between;
	gap:20px; flex-wrap:wrap; font-size:14px; color:#7F97B1;
}
.jpf-footer__legal-links { display:flex; gap:24px; flex-wrap:wrap; }
.jpf-footer__legal-links a { color:#7F97B1; }
.jpf-footer__credit { color:#6B839C; }

/* ══════════════════════════════════════════════════════════════
   Responsive
   ══════════════════════════════════════════════════════════════ */

@media (max-width:1100px) {
	.jpf-grid--6 { grid-template-columns:repeat(3,minmax(0,1fr)); }
	.jpf-grid--4 { grid-template-columns:repeat(2,minmax(0,1fr)); }
	.jpf-video { grid-template-columns:1fr; }
	.jpf-contact { grid-template-columns:1fr; gap:32px; }
	.jpf-formwrap--aside { grid-template-columns:1fr; gap:28px; }
	.jpf-split { grid-template-columns:1fr; gap:28px; }
	.jpf-split--flip .jpf-split__media { order:0; }
	.jpf-nav__search { display:none; }
}

@media (max-width:860px) {
	.jpf-sec { padding:40px 0 44px; }
	.jpf-grid--3, .jpf-grid--6 { grid-template-columns:repeat(2,minmax(0,1fr)); }
	.jpf-stats { grid-template-columns:repeat(2,minmax(0,1fr)); }
	.jpf-stat { border-bottom:1px solid rgba(255,255,255,.18); }
	.jpf-stat:nth-child(2n) { border-right:0; }
	.jpf-topbar__label { display:none; }
	.jpf-topbar__item:first-child { border-left:0; padding-left:0; }
	.jpf-topbar__status { display:none; }
	.jpf-strap { display:none; }
	.jpf-burger { display:block; }
	.jpf-nav { display:none; }
	.jpf-nav.is-open { display:block; }
	.jpf-nav__inner { flex-direction:column; align-items:stretch; padding-bottom:12px; }
	.jpf-nav__list { flex-direction:column; align-items:stretch; }
	.jpf-nav__item > a { min-height:50px; border-bottom:1px solid rgba(255,255,255,.14); }
	.jpf-nav__sub {
		position:static; opacity:1; visibility:visible; transform:none;
		box-shadow:none; border:0; border-top:0; background:rgba(0,0,0,.14);
		display:none; padding:0;
	}
	.jpf-nav__item.is-open > .jpf-nav__sub { display:block; }
	.jpf-nav__sub a { color:#DCE7F3 !important; padding:11px 30px; }
	.jpf-mile { grid-template-columns:1fr; gap:6px; }
	/* Icon tiles are small and square, so they keep more than one column
	   where a card grid could not. */
	.jpf-icons { grid-template-columns:repeat(3,minmax(0,1fr)); }
	.jpf-people { grid-template-columns:repeat(2,minmax(0,1fr)); }
	.jpf-mile__year { text-align:left; }
	.jpf-mile__body { border-left:0; padding-left:0; }
	.jpf-mile__body::before { display:none; }
	/* As tall as what is in it. A floor only where one is wanted: a
	   photograph needs room, and the editor can set one. */
	.jpf-hero { --jpf-u:1px; height:auto; min-height:0; }
	/* Small-screen image overrides, falling back to the desktop values. */
	.jpf-hero__slide {
		background-size:var(--jpf-m-size, var(--jpf-size, cover));
		background-position:var(--jpf-m-pos, var(--jpf-pos, center center));
		min-height:var(--jpf-m-h, 0px);
	}
	.jpf-hero__slide.is-img-mobile { min-height:var(--jpf-m-h, 360px); }
	.jpf-hero__title { font-size:clamp(28px, 7vw, var(--jpf-hero-title, 88px)); max-width:var(--jpf-hero-measure, 900px); }
	.jpf-hero__text { font-size:clamp(15px, 3.6vw, var(--jpf-hero-text-size, 20px)); max-width:min(var(--jpf-hero-measure, 900px), 620px); }
	/* The photograph is off on a phone unless the slide asks for it. A
	   wide-band composition does not survive a narrow screen, and the words
	   read better on the plain band. */
	.jpf-hero__slide { background-image:none !important; }
	.jpf-hero__slide.is-img-mobile { background-image:var(--jpf-img) !important; }
	.jpf-hero__slide:not(.is-img-mobile):not(.is-m-above):not(.is-m-below) .jpf-hero__veil { background:none; }
	.jpf-hero__slide:not(.is-img-mobile) .jpf-hero__ph { display:none; }

	/* The photograph in a strip of its own, above or below the words. */
	.jpf-hero__slide.is-m-above,
	.jpf-hero__slide.is-m-below {
		flex-direction:column; min-height:0; padding:0;
		background-image:none !important; background-color:var(--jpf-blue-dk);
	}
	.jpf-hero__slide.is-m-below { flex-direction:column-reverse; }
	.jpf-hero__slide.is-m-above .jpf-hero__veil,
	.jpf-hero__slide.is-m-below .jpf-hero__veil { display:none; }
	.jpf-hero__slide.is-m-above .jpf-hero__inner,
	.jpf-hero__slide.is-m-below .jpf-hero__inner { width:100%; padding-top:32px; padding-bottom:40px; }
	.jpf-hero__mshot {
		display:block; flex:0 0 auto; width:100%;
		height:var(--jpf-m-h, 300px);
		background-repeat:no-repeat;
		background-size:var(--jpf-m-size, cover);
		background-position:var(--jpf-m-pos, center top);
		background-color:var(--jpf-blue);
	}
	.jpf-hero__slide { position:relative; display:none; padding:clamp(26px,6vw,46px) 0 clamp(32px,7vw,54px); }
	.jpf-hero__slide.is-active { display:flex; }
	.jpf-hero__dots { position:static; padding-top:0; margin-top:calc(-1 * clamp(20px,4.6vw,34px)); padding-bottom:clamp(14px,3.4vw,22px); }
	.jpf-banner__crest { display:none; }
	.jpf-form, .jpf-steps { padding:24px 22px 28px; }
	.jpf-file { flex-wrap:wrap; }
	.jpf-footer__cols { grid-template-columns:1fr 1fr; }
}

@media (max-width:560px) {
	.jpf-grid--2, .jpf-grid--3, .jpf-grid--4, .jpf-grid--6 { grid-template-columns:1fr; }
	.jpf-icons { grid-template-columns:repeat(var(--jpf-icols,2),minmax(0,1fr)); gap:clamp(12px,4vw,18px); }
	.jpf-people { grid-template-columns:repeat(var(--jpf-pcols,2),minmax(0,1fr)); gap:clamp(10px,3.2vw,18px); }
	/* A fixed pixel height turns into a letterbox once the card is as wide as
	   the screen, and a portrait headshot gets cropped down to a face. Hold the
	   shape instead of the height. */
	.jpf-person__body { padding:clamp(11px,3.2vw,22px) clamp(11px,3.2vw,22px) clamp(14px,3.8vw,26px); }
	.jpf-person__rank { font-size:11px; letter-spacing:.09em; }
	.jpf-iconitem__label { font-size:clamp(13px,3.4vw,var(--jpf-ilabel,21px)); }
	.jpf-stats { grid-template-columns:1fr; }
	.jpf-stat { border-right:0; }
	.jpf-footer__cols { grid-template-columns:1fr; }
	/* Buttons keep to the width of their own text; only a form's own
	   submit spans the column, where a full-width target reads correctly. */
	.jpf-form .jpf-btn, .jpf-btn--block { width:100%; }
	.jpf-hero--btn-fill .jpf-hero__btns { flex-direction:column; align-items:stretch; }
	.jpf-hero--btn-fill .jpf-hero__btns .jpf-btn { width:100%; }
	.jpf-cta { gap:22px; }
}

@media (max-width:430px) {
	/* The numbers matter more than the little glyphs beside them. */
	.jpf-topbar__item .jpf-icon { display:none; }
	.jpf-topbar__item { padding:6px 8px; }
}

@media print {
	.jpf-topbar, .jpf-nav, .jpf-footer__strip, .jpf-burger, .jpf-hero__dots { display:none !important; }
	.jpf-site { color:#000; }
}

/* The page fills the window: no browser margin round the edges (WordPress' theme used to remove it). */
html, body.jpf-site { margin: 0; padding: 0; }
body.jpf-site { overflow-x: clip; }

/* People: the photo keeps one shape at every screen width (set by the section's
   "Photograph height", for a slot about 285px wide), so it is cropped the same
   everywhere instead of a fixed height turning into a letterbox. */
.jpf-media.jpf-person__photo { height:auto; aspect-ratio:var(--jpf-photo-ratio, 285 / 250); }
