/* ============================================================
   IAFF Local 2956 — Theme Stylesheet
   Custom block theme · Institutional Union aesthetic
   ============================================================ */
@import url('https://fonts.googleapis.com/css2?family=Cormorant+Garamond:ital,wght@0,500;0,600;1,500;1,600&display=swap');

:root {
	--iaff-bg: #0a0a0a;
	--iaff-bg-2: #161616;
	--iaff-bg-3: #1f1f1f;
	--iaff-line: #2a2a2a;
	--iaff-text: #ffffff;
	--iaff-text-soft: #cfcfcf;
	--iaff-text-dim: #8a8a8a;
	--iaff-red: #e11d1d;
	--iaff-red-2: #ff2d2d;
	--iaff-red-deep: #8a0808;
}

/* ===== Film-grain texture overlay (site-wide atmosphere) =====
   SVG turbulence noise applied via fixed overlay. Mix-blend-mode overlay lifts the
   noise slightly on dark fields, breaking up flat blacks without softening contrast. */
body::before {
	content: '';
	position: fixed;
	inset: 0;
	pointer-events: none;
	z-index: 9999;
	opacity: 0.05;
	mix-blend-mode: overlay;
	background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 240 240'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.85' numOctaves='2' stitchTiles='stitch'/%3E%3CfeColorMatrix values='0 0 0 0 0  0 0 0 0 0  0 0 0 0 0  0 0 0 1 0'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E");
	background-size: 240px 240px;
}

/* ===== Reset / base ===== */
body.wp-site-blocks,
body {
	background: var(--iaff-bg);
	color: var(--iaff-text);
	font-family: 'Inter', system-ui, sans-serif;
	line-height: 1.65;
	-webkit-font-smoothing: antialiased;
}

a { color: inherit; }
img { max-width: 100%; height: auto; display: block; }

/* ===== Container helper ===== */
.iaff-container {
	max-width: 1280px;
	margin-left: auto;
	margin-right: auto;
	padding-left: 32px;
	padding-right: 32px;
}

/* ===== Top utility bar ===== */
.iaff-util-bar {
	background: #000;
	padding: 10px 0;
	font-size: 12px;
	color: var(--iaff-text-dim);
	border-bottom: 2px solid var(--iaff-red);
}
.iaff-util-bar .iaff-util-inner {
	display: flex;
	justify-content: space-between;
	align-items: center;
	gap: 16px;
	flex-wrap: wrap;
}
.iaff-util-bar .iaff-iaff-label {
	color: var(--iaff-text);
	font-weight: 600;
	letter-spacing: 0.1em;
}
.iaff-util-bar .iaff-red-dot {
	color: var(--iaff-red);
}

/* ===== Site header (nav) =====
   Padding is intentionally asymmetric (more top than bottom) to offset the
   optical asymmetry from the red accent strip above: the strong cap above
   the header makes the bottom space *appear* larger than the top even when
   they're geometrically equal. Visual centering > geometric centering. */
.iaff-site-header {
	position: sticky;
	top: 0;
	z-index: 100;
	background: var(--iaff-bg);
	padding: 12px 0 8px;
}
.iaff-site-header .iaff-nav-inner {
	display: flex;
	justify-content: space-between;
	align-items: center;
	gap: 16px;
}
.iaff-brand {
	display: flex;
	align-items: center;
	gap: 16px;
	text-decoration: none;
	color: inherit;
}
.iaff-brand-logo {
	display: block;
	height: 56px;
	width: auto;
	max-width: 320px;
	flex-shrink: 0;
}

/* Nav links */
.iaff-nav-links {
	display: flex;
	gap: 32px;
	align-items: center;
	font-size: 14px;
	font-weight: 600;
	list-style: none;
	margin: 0;
	padding: 0;
}
.iaff-nav-links li {
	margin: 0;
}
.iaff-nav-links a {
	color: var(--iaff-text-soft);
	padding: 6px 0;
	border-bottom: 2px solid transparent;
	transition: all 0.15s;
	text-decoration: none;
}
.iaff-nav-links a:hover {
	color: var(--iaff-text);
	border-bottom-color: var(--iaff-red);
}
.iaff-nav-cta {
	background: var(--iaff-red);
	color: #fff !important;
	padding: 11px 22px;
	font-weight: 700;
	font-size: 13px;
	letter-spacing: 0.04em;
	border-bottom: none !important;
	transition: background 0.15s;
	border-radius: 2px;
}
.iaff-nav-cta:hover {
	background: var(--iaff-red-2);
}

/* Mobile menu */
.iaff-menu-toggle {
	display: none;
	cursor: pointer;
	width: 44px;
	height: 44px;
	position: relative;
	z-index: 110;
	align-items: center;
	justify-content: center;
}
.iaff-menu-toggle span,
.iaff-menu-toggle span::before,
.iaff-menu-toggle span::after {
	display: block;
	width: 28px;
	height: 2px;
	background: var(--iaff-text);
	position: relative;
	transition: all 0.3s;
}
.iaff-menu-toggle span::before,
.iaff-menu-toggle span::after {
	content: "";
	position: absolute;
	left: 0;
}
.iaff-menu-toggle span::before { top: -9px; }
.iaff-menu-toggle span::after { top: 9px; }
.iaff-menu-checkbox { display: none; }
.iaff-menu-checkbox:checked ~ .iaff-menu-toggle span { background: transparent; }
.iaff-menu-checkbox:checked ~ .iaff-menu-toggle span::before { top: 0; transform: rotate(45deg); background: var(--iaff-red); }
.iaff-menu-checkbox:checked ~ .iaff-menu-toggle span::after { top: 0; transform: rotate(-45deg); background: var(--iaff-red); }

/* ===== Hero ===== */
/* Homepage hero — full-bleed photo with text overlay.
   Same visual language as the memorial page hero: photo as backdrop, layered
   "burned-through" vignette behind the text for legibility, soft red ember
   glow at the bottom seam. Replaces the previous 2-column grid that had an
   empty visual placeholder on the right.
   The group + Ladder 10 photo establishes "this is who Local 2956 is" the
   moment the page loads. */
.iaff-hero {
	position: relative;
	min-height: 72vh;
	padding: 96px 0 80px;
	background: #000;
	overflow: hidden;
	isolation: isolate;
	display: flex;
	align-items: center;
}
.iaff-hero-bg {
	position: absolute;
	inset: 0;
	z-index: 0;
}
.iaff-hero-bg img {
	width: 100%;
	height: 100%;
	object-fit: cover;
	object-position: center 35%;
	filter: contrast(1.05) brightness(0.82) saturate(1.03);
	opacity: 0.85;
}
.iaff-hero-fade {
	position: absolute;
	inset: 0;
	z-index: 1;
	background:
		/* Left-side band — covers the full vertical span of the text column so
		   the eyebrow at the top and the buttons at the bottom both get dark
		   protection, not just the H1 in the middle. */
		linear-gradient(90deg, rgba(0, 0, 0, 0.78) 0%, rgba(0, 0, 0, 0.5) 35%, rgba(0, 0, 0, 0.18) 60%, transparent 88%),
		/* Centered radial — adds extra depth behind the H1, feathers to edges. */
		radial-gradient(ellipse 65% 70% at 35% 50%, rgba(0, 0, 0, 0.45) 0%, rgba(0, 0, 0, 0.2) 55%, transparent 85%),
		/* Bottom fade into page background. */
		linear-gradient(180deg, transparent 0%, rgba(10, 10, 10, 0.5) 90%, var(--iaff-bg) 100%),
		/* Soft red ember-glow at the seam. */
		radial-gradient(ellipse 90% 30% at 50% 100%, rgba(225, 29, 29, 0.14), transparent 70%);
}
.iaff-hero-inner {
	position: relative;
	z-index: 2;
	width: 100%;
	max-width: 920px;
}
.iaff-hero-eyebrow {
	display: inline-flex;
	align-items: center;
	gap: 12px;
	color: var(--iaff-red);
	font-size: 13px;
	font-weight: 700;
	letter-spacing: 0.2em;
	text-transform: uppercase;
	margin-bottom: 24px;
	text-shadow: 0 1px 8px rgba(0, 0, 0, 0.75), 0 0 2px rgba(0, 0, 0, 0.55);
}
.iaff-hero-eyebrow::before {
	content: "";
	width: 28px;
	height: 2px;
	background: var(--iaff-red);
}
.iaff-hero h1 {
	font-family: 'Bebas Neue', sans-serif;
	font-size: clamp(48px, 7.6vw, 108px);
	line-height: 0.98;
	letter-spacing: 0.015em;
	text-transform: uppercase;
	margin-bottom: 24px;
	text-shadow: 0 2px 16px rgba(0, 0, 0, 0.6);
}
.iaff-hero h1 .iaff-red {
	color: var(--iaff-red);
}
.iaff-hero .iaff-hero-deck {
	font-size: clamp(16px, 1.6vw, 20px);
	color: var(--iaff-text-soft);
	max-width: 560px;
	margin-bottom: 36px;
	line-height: 1.55;
	text-shadow: 0 1px 8px rgba(0, 0, 0, 0.55);
}
.iaff-hero-actions {
	display: flex;
	gap: 12px;
	flex-wrap: wrap;
}

/* ===== Buttons ===== */
.iaff-btn {
	display: inline-block;
	padding: 15px 30px;
	font-weight: 700;
	font-size: 14px;
	letter-spacing: 0.04em;
	border-radius: 2px;
	transition: all 0.15s;
	text-decoration: none;
}
.iaff-btn-primary {
	background: var(--iaff-red);
	color: #fff;
}
.iaff-btn-primary:hover {
	background: var(--iaff-red-2);
	color: #fff;
}
.iaff-btn-ghost {
	background: transparent;
	color: var(--iaff-text);
	border: 1px solid var(--iaff-line);
}
.iaff-btn-ghost:hover {
	border-color: var(--iaff-red);
	color: var(--iaff-red);
}
.iaff-btn-outline-light {
	background: transparent;
	color: var(--iaff-text);
	border: 1px solid var(--iaff-text);
}
.iaff-btn-outline-light:hover {
	background: var(--iaff-text);
	color: var(--iaff-bg);
}

/* (Old .iaff-hero-visual grid-column styles removed — the hero is now a
   full-bleed photo with text overlay; no separate visual column exists.) */

/* ===== Mission statement strip ===== */
.iaff-mission-strip {
	background: var(--iaff-bg-2);
	border-top: 1px solid var(--iaff-line);
	border-bottom: 1px solid var(--iaff-line);
	padding: 56px 0;
}
.iaff-mission-strip .iaff-mission-inner {
	display: grid;
	grid-template-columns: 200px 1fr;
	gap: 56px;
	align-items: center;
}
.iaff-mission-strip .iaff-mission-heading {
	color: var(--iaff-red);
	font-family: 'Bebas Neue', sans-serif;
	font-size: 22px;
	letter-spacing: 0.15em;
	border-left: 3px solid var(--iaff-red);
	padding-left: 20px;
}
.iaff-mission-strip p {
	font-size: 18px;
	color: var(--iaff-text-soft);
	line-height: 1.65;
	max-width: 820px;
	font-weight: 500;
	margin: 0;
}
.iaff-mission-strip p strong {
	color: var(--iaff-text);
	font-weight: 700;
}

/* ===== Section base ===== */
.iaff-section {
	padding: 110px 0;
}
.iaff-section-alt {
	background: var(--iaff-bg-2);
	border-top: 1px solid var(--iaff-line);
	border-bottom: 1px solid var(--iaff-line);
}
.iaff-section-head {
	max-width: 760px;
	margin-bottom: 56px;
}
.iaff-eyebrow {
	color: var(--iaff-red);
	font-size: 13px;
	font-weight: 700;
	letter-spacing: 0.22em;
	text-transform: uppercase;
	margin-bottom: 16px;
	display: inline-block;
}
.iaff-section-head h2 {
	font-size: clamp(36px, 5vw, 64px);
	margin: 0 0 18px;
	line-height: 1.05;
	font-weight: 800;
	letter-spacing: -0.015em;
}
.iaff-section-head .iaff-deck {
	font-size: 17px;
	color: var(--iaff-text-soft);
	line-height: 1.6;
	max-width: 620px;
	margin: 0;
}

/* ===== About + pillars ===== */
.iaff-about-grid {
	display: grid;
	grid-template-columns: 1fr 1.1fr;
	gap: 64px;
	align-items: center;
}
.iaff-about-text p {
	margin-bottom: 18px;
	font-size: 16px;
	color: var(--iaff-text-soft);
	line-height: 1.7;
}
.iaff-about-text p strong {
	color: var(--iaff-text);
	font-weight: 600;
}
.iaff-about-visual {
	aspect-ratio: 3 / 2;
	position: relative;
	overflow: hidden;
	background-color: var(--iaff-bg-2);
	background-image:
		linear-gradient(180deg, rgba(10,10,10,0) 50%, rgba(10,10,10,0.78) 100%),
		url("../img/about-group-2023.webp");
	background-size: cover;
	background-position: center;
	background-repeat: no-repeat;
	border: 1px solid var(--iaff-line);
	border-radius: 2px;
}
.iaff-about-visual .iaff-caption {
	position: absolute;
	bottom: 24px;
	left: 24px;
	right: 24px;
	color: var(--iaff-text-soft);
}
.iaff-about-visual .iaff-caption .iaff-year {
	color: var(--iaff-red);
	font-family: 'Bebas Neue', sans-serif;
	font-size: 14px;
	letter-spacing: 0.2em;
	margin-bottom: 6px;
}
.iaff-about-visual .iaff-caption p {
	font-size: 14px;
	margin: 0;
}

.iaff-pillars {
	display: grid;
	grid-template-columns: repeat(3, 1fr);
	gap: 24px;
	margin-top: 48px;
}
.iaff-pillar {
	background: var(--iaff-bg-2);
	border: 1px solid var(--iaff-line);
	border-top: 3px solid var(--iaff-red);
	padding: 36px 32px;
	border-radius: 2px;
	position: relative;
	overflow: hidden;
	isolation: isolate;
	transition: border-color 0.25s ease, transform 0.25s ease;
}
.iaff-pillar::after {
	content: '';
	position: absolute;
	inset: -20% -10% -20% 30%;
	background-image: url("../img/iaff-cross.png");
	background-repeat: no-repeat;
	background-position: right center;
	background-size: contain;
	opacity: 0;
	mix-blend-mode: screen;
	pointer-events: none;
	transition: opacity 0.35s ease, transform 0.45s ease;
	transform: translateX(8%);
	z-index: -1;
}
.iaff-pillar > * { position: relative; z-index: 1; }
.iaff-pillar:hover {
	border-color: var(--iaff-red);
	transform: translateY(-2px);
}
.iaff-pillar:hover::after {
	opacity: 0.16;
	transform: translateX(0);
}
.iaff-pillar .iaff-pillar-num {
	font-family: 'Bebas Neue', sans-serif;
	color: var(--iaff-red);
	font-size: 18px;
	letter-spacing: 0.15em;
	margin-bottom: 12px;
}
.iaff-pillar h3 {
	font-size: 22px;
	margin: 0 0 12px;
	color: var(--iaff-text);
	font-weight: 700;
}
.iaff-pillar p {
	font-size: 14px;
	color: var(--iaff-text-soft);
	line-height: 1.6;
	margin: 0;
}

/* ===== Leadership directory ===== */
.iaff-leadership-grid {
	display: grid;
	grid-template-columns: repeat(4, 1fr);
	gap: 20px;
}
.iaff-leader-card {
	background: var(--iaff-bg);
	border: 1px solid var(--iaff-line);
	border-radius: 2px;
	overflow: hidden;
	transition: all 0.15s;
}
.iaff-leader-card:hover {
	border-color: var(--iaff-red);
}
.iaff-leader-photo {
	aspect-ratio: 1 / 1;
	background:
		linear-gradient(180deg, transparent 60%, rgba(10,10,10,0.95)),
		linear-gradient(135deg, #2a1814 0%, #181210 70%);
	position: relative;
}
.iaff-leader-photo::after {
	content: "[PORTRAIT — TBD]";
	position: absolute;
	top: 14px;
	left: 14px;
	font-size: 10px;
	color: var(--iaff-text-dim);
	letter-spacing: 0.18em;
	text-transform: uppercase;
	font-weight: 600;
}
.iaff-leader-info {
	padding: 20px 22px;
}
.iaff-leader-info .iaff-rank {
	font-family: 'Bebas Neue', sans-serif;
	font-size: 12px;
	color: var(--iaff-red);
	letter-spacing: 0.18em;
	margin-bottom: 6px;
}
.iaff-leader-info .iaff-leader-name {
	font-size: 18px;
	font-weight: 700;
	color: var(--iaff-text);
	letter-spacing: -0.01em;
	margin-bottom: 4px;
}
.iaff-leader-info .iaff-since {
	font-size: 12px;
	color: var(--iaff-text-dim);
	font-weight: 500;
}

/* ===== President statement ===== */
.iaff-statement-block {
	background: var(--iaff-bg);
	padding: 100px 0;
	border-top: 1px solid var(--iaff-line);
	border-bottom: 1px solid var(--iaff-line);
}
.iaff-statement-inner {
	max-width: 1080px;
	margin: 0 auto;
	display: grid;
	grid-template-columns: auto 1fr;
	gap: 56px;
	align-items: center;
}
.iaff-statement-attribution {
	text-align: center;
	flex-shrink: 0;
}
.iaff-attribution-photo {
	width: 120px;
	height: 120px;
	background: linear-gradient(135deg, #2a1814, #0a0a0a);
	border: 3px solid var(--iaff-red);
	margin: 0 auto 16px;
	border-radius: 2px;
}
.iaff-statement-attribution .iaff-attr-name {
	font-size: 16px;
	font-weight: 700;
	letter-spacing: -0.01em;
}
.iaff-statement-attribution .iaff-attr-role {
	font-family: 'Bebas Neue', sans-serif;
	font-size: 11px;
	color: var(--iaff-red);
	letter-spacing: 0.18em;
	text-transform: uppercase;
	margin-top: 4px;
}
.iaff-statement-text {
	border-left: 3px solid var(--iaff-red);
	padding-left: 36px;
}
.iaff-statement-text blockquote {
	margin: 0;
	font-size: clamp(20px, 2.4vw, 28px);
	line-height: 1.45;
	color: var(--iaff-text);
	font-weight: 600;
	letter-spacing: -0.01em;
}
.iaff-statement-text blockquote .iaff-red {
	color: var(--iaff-red);
}

/* ===== News grid ===== */
.iaff-news-grid {
	display: grid;
	grid-template-columns: repeat(3, 1fr);
	gap: 24px;
	max-width: 1280px;
	margin: 0 auto;
	padding: 0 32px;
}
/* WordPress Query Loop adds margin-top to sibling posts via --wp--style--block-gap.
   In a CSS Grid with its own gap, that creates a doubled offset and pushes the first
   card up relative to siblings 2+. Zero margins so all cards align to the row top. */
.iaff-news-loop-wrapper .wp-block-post,
.iaff-news-grid > .wp-block-post {
	margin-top: 0 !important;
	margin-bottom: 0 !important;
}

/* Featured image inside dynamic Query Loop news cards */
.iaff-news-card .wp-block-post-featured-image {
	aspect-ratio: 16 / 10;
	overflow: hidden;
	background: var(--iaff-bg-2);
	margin: 0;
	display: block;
	border-bottom: 1px solid var(--iaff-line);
}
.iaff-news-card .wp-block-post-featured-image a {
	display: block;
	width: 100%;
	height: 100%;
}
.iaff-news-card .wp-block-post-featured-image img {
	width: 100% !important;
	height: 100% !important;
	object-fit: cover !important;
	object-position: center;
	display: block;
}

/* Post title inside news cards — overrides global h3 styles */
.iaff-news-card .wp-block-post-title {
	font-family: 'Inter', sans-serif;
	font-size: 1.125rem;
	font-weight: 700;
	line-height: 1.3;
	letter-spacing: -0.01em;
	color: var(--iaff-text);
	margin: 0.5em 0;
	padding: 0 24px;
}
.iaff-news-card .wp-block-post-title a {
	color: var(--iaff-text);
	text-decoration: none;
	transition: color 0.15s;
}
.iaff-news-card:hover .wp-block-post-title a { color: var(--iaff-red); }

/* Post date */
.iaff-news-card .wp-block-post-date,
.iaff-news-card .iaff-date {
	font-size: 11px;
	color: var(--iaff-text-dim);
	letter-spacing: 0.15em;
	text-transform: uppercase;
	font-weight: 600;
	padding: 24px 24px 0;
	margin: 0;
}

/* Post excerpt */
.iaff-news-card .wp-block-post-excerpt,
.iaff-news-card .wp-block-post-excerpt__excerpt {
	font-size: 0.875rem;
	color: var(--iaff-text-soft);
	line-height: 1.55;
	margin: 0;
	padding: 0 24px 24px;
}
.iaff-news-card .wp-block-post-excerpt p { margin: 0; padding: 0; }
.iaff-news-card .wp-block-post-excerpt__more-link {
	display: none;
}

/* News card group block resets — WP adds is-layout-flow which adds gap */
.iaff-news-card.wp-block-group {
	background: var(--iaff-bg-2);
	border: 1px solid var(--iaff-line);
	border-radius: 2px;
	overflow: hidden;
	transition: all 0.2s;
	display: flex;
	flex-direction: column;
	gap: 0;
}
.iaff-news-card.wp-block-group:hover {
	border-color: var(--iaff-red);
	transform: translateY(-4px);
}
.iaff-news-card .iaff-news-body.wp-block-group {
	background: transparent;
	border: none;
	padding: 0;
	gap: 0;
	transform: none;
}
.iaff-news-card {
	background: var(--iaff-bg-2);
	border: 1px solid var(--iaff-line);
	border-radius: 2px;
	overflow: hidden;
	transition: all 0.15s;
}
.iaff-news-card a {
	color: inherit;
	text-decoration: none;
	display: block;
}
.iaff-news-card:hover {
	border-color: var(--iaff-red);
	transform: translateY(-4px);
}
.iaff-news-thumb {
	aspect-ratio: 16 / 10;
	background: linear-gradient(135deg, #2a1410, #0a0a0a 70%);
	position: relative;
	border-bottom: 1px solid var(--iaff-line);
}
.iaff-news-thumb img {
	width: 100%;
	height: 100%;
	object-fit: cover;
}
.iaff-news-thumb:not(:has(img))::after {
	content: "[ARTICLE PHOTO — TBD]";
	position: absolute;
	top: 14px;
	left: 14px;
	font-size: 11px;
	color: var(--iaff-text-dim);
	letter-spacing: 0.15em;
	text-transform: uppercase;
	font-weight: 600;
}
.iaff-news-thumb .iaff-cat {
	position: absolute;
	top: 14px;
	right: 14px;
	background: var(--iaff-red);
	color: #fff;
	padding: 5px 11px;
	font-size: 11px;
	font-weight: 700;
	letter-spacing: 0.15em;
	text-transform: uppercase;
	z-index: 2;
}
.iaff-news-body {
	padding: 26px;
}
.iaff-news-body .iaff-date {
	font-size: 12px;
	color: var(--iaff-text-dim);
	letter-spacing: 0.1em;
	text-transform: uppercase;
	margin-bottom: 10px;
	font-weight: 600;
}
.iaff-news-body h3 {
	font-size: 20px;
	margin: 0 0 10px;
	color: var(--iaff-text);
	line-height: 1.3;
	font-weight: 700;
}
.iaff-news-body p {
	font-size: 14px;
	color: var(--iaff-text-soft);
	line-height: 1.6;
	margin: 0;
}

/* ===== Events list ===== */
.iaff-events-list {
	display: grid;
	gap: 1px;
	background: var(--iaff-line);
	border: 1px solid var(--iaff-line);
	border-radius: 2px;
	overflow: hidden;
}
.iaff-event-row {
	display: grid;
	grid-template-columns: 130px 1fr auto;
	gap: 32px;
	align-items: center;
	padding: 28px 32px;
	background: var(--iaff-bg-2);
	transition: background 0.15s;
}
.iaff-event-row:hover {
	background: var(--iaff-bg-3);
}
.iaff-event-date {
	border-right: 1px solid var(--iaff-line);
	padding-right: 28px;
	text-align: center;
}
.iaff-event-date .iaff-day {
	font-family: 'Bebas Neue', sans-serif;
	font-size: 48px;
	line-height: 1;
	color: var(--iaff-red);
}
.iaff-event-date .iaff-month-year {
	font-size: 12px;
	color: var(--iaff-text-dim);
	letter-spacing: 0.18em;
	text-transform: uppercase;
	font-weight: 600;
	margin-top: 4px;
}
.iaff-event-info h4 {
	font-size: 17px;
	margin: 0 0 6px;
	font-weight: 700;
	color: var(--iaff-text);
}
.iaff-event-info .iaff-where {
	font-size: 13px;
	color: var(--iaff-text-soft);
}
.iaff-event-info .iaff-where .iaff-red {
	color: var(--iaff-red);
}
.iaff-event-info .iaff-open-public {
	display: inline-block;
	margin-top: 8px;
	font-size: 11px;
	color: var(--iaff-text-dim);
	letter-spacing: 0.15em;
	text-transform: uppercase;
	padding: 3px 8px;
	border: 1px solid var(--iaff-line);
	border-radius: 2px;
	font-weight: 600;
}
.iaff-event-cta {
	font-size: 13px;
	color: var(--iaff-red);
	font-weight: 700;
	letter-spacing: 0.05em;
}

/* ===== Memorial block ===== */
.iaff-memorial-block {
	background: var(--iaff-bg);
	padding: 100px 0;
	text-align: center;
	position: relative;
	overflow: hidden;
}

/* Ambient red wash behind the section — soft bloom on either side of the
   central composition to fill the negative space on desktop. */
.iaff-memorial-block > .iaff-container {
	position: relative;
	z-index: 2;
}
.iaff-memorial-ambient {
	position: absolute;
	inset: 0;
	pointer-events: none;
	z-index: 0;
	background:
		radial-gradient(ellipse 60% 70% at 18% 50%, rgba(225, 29, 29, 0.10), transparent 70%),
		radial-gradient(ellipse 50% 60% at 82% 55%, rgba(225, 29, 29, 0.08), transparent 70%);
}

/* Drifting embers — small warm dots that rise slowly from below and fade
   out above, like sparks from a fire. Each ember has its own horizontal
   position, animation delay, and duration via inline CSS custom properties
   so the cloud reads as organic, not synchronized. Desktop only — on
   mobile the layout is already filled, no negative space to atmospherize. */
.iaff-memorial-embers {
	position: absolute;
	inset: 0;
	pointer-events: none;
	z-index: 1;
	overflow: hidden;
}
.iaff-memorial-ember {
	position: absolute;
	left: var(--x, 50%);
	bottom: -12px;
	width: var(--s, 3px);
	height: var(--s, 3px);
	border-radius: 50%;
	background: radial-gradient(circle, var(--c1, #ffb238) 0%, var(--c2, #ff6a00) 45%, transparent 80%);
	filter: blur(0.4px);
	opacity: 0;
	animation: iaff-ember-rise var(--t, 16s) linear infinite;
	animation-delay: var(--d, 0s);
	will-change: transform, opacity;
}
@keyframes iaff-ember-rise {
	0%   { transform: translate3d(0, 0, 0)              scale(1);   opacity: 0; }
	10%  {                                                          opacity: 1; }
	50%  { transform: translate3d(8px, -50vh, 0)        scale(0.9); opacity: 0.85; }
	90%  {                                                          opacity: 0.4; }
	100% { transform: translate3d(-6px, -100vh, 0)      scale(0.55); opacity: 0; }
}
@media (max-width: 900px) {
	.iaff-memorial-embers,
	.iaff-memorial-ambient { display: none; }
}
@media (prefers-reduced-motion: reduce) {
	.iaff-memorial-ember { animation: none; opacity: 0; }
}
/* Memorial seal — Local number stamped inside the Maltese.
   Wrapper is a transparent positioning container; the masked red cross sits
   inside it. A ::before pseudo on the wrapper renders "2956" centered over
   the cross (the pseudo is NOT inside the masked element, so the mask
   doesn't clip its content). Mirrors the station-card treatment so the
   memorial cross belongs to the same visual family. */
.iaff-memorial-seal-frame {
	width: 96px;
	height: 96px;
	margin: 0 auto 24px;
	position: relative;
}
.iaff-memorial-seal-frame::before {
	content: '61';
	position: absolute;
	inset: 0;
	display: flex;
	align-items: center;
	justify-content: center;
	font-family: 'Bebas Neue', system-ui, sans-serif;
	font-size: 32px;
	letter-spacing: 0.02em;
	color: #fff;
	line-height: 1;
	pointer-events: none;
	z-index: 2;
	text-shadow: 0 1px 0 rgba(0, 0, 0, 0.3);
}
.iaff-memorial-seal {
	position: absolute;
	inset: 0;
	width: 100%;
	height: 100%;
	margin: 0;
	background: var(--iaff-red);
	-webkit-mask: url("../img/iaff-cross.png") no-repeat center / contain;
	mask: url("../img/iaff-cross.png") no-repeat center / contain;
	font-size: 0;
	color: transparent;
	border-radius: 0;
	border: 0;
	/* Ember-glow pulse — like a memorial flame. drop-shadow follows the
	   shape of the masked Maltese cross (not a square halo). 5s cycle so
	   it reads as ceremonial breathing rather than UI feedback. */
	animation: iaff-memorial-ember 5s ease-in-out infinite;
}
@keyframes iaff-memorial-ember {
	0%, 100% { filter: drop-shadow(0 0 10px rgba(225, 29, 29, 0.35)); }
	50%      { filter: drop-shadow(0 0 22px rgba(225, 29, 29, 0.60)); }
}
@media (prefers-reduced-motion: reduce) {
	.iaff-memorial-seal {
		animation: none;
		filter: drop-shadow(0 0 12px rgba(225, 29, 29, 0.30));
	}
}
.iaff-memorial-block h2 {
	font-size: clamp(32px, 4vw, 48px);
	margin: 0 0 18px;
	font-weight: 800;
	letter-spacing: -0.015em;
}
.iaff-memorial-block p {
	color: var(--iaff-text-soft);
	font-size: 17px;
	max-width: 660px;
	margin: 0 auto 32px;
	line-height: 1.65;
}

/* ===== CTA Strip ===== */
.iaff-cta-strip {
	background: linear-gradient(135deg, var(--iaff-red) 0%, var(--iaff-red-deep) 100%);
	color: #fff;
	padding: 88px 0;
	position: relative;
	overflow: hidden;
}
.iaff-cta-strip .iaff-cta-inner {
	display: grid;
	grid-template-columns: 1.5fr auto;
	gap: 56px;
	align-items: center;
}
.iaff-cta-strip .iaff-eyebrow {
	color: rgba(255, 255, 255, 0.92);
}
.iaff-cta-strip h2 {
	color: #fff;
	font-size: clamp(36px, 5vw, 56px);
	margin: 0 0 14px;
	font-weight: 800;
	letter-spacing: -0.015em;
}
.iaff-cta-strip p {
	color: rgba(255, 255, 255, 0.94);
	font-size: 16px;
	line-height: 1.6;
	max-width: 540px;
	margin: 0;
}
.iaff-cta-strip .iaff-btn {
	background: #fff;
	color: var(--iaff-red);
}
.iaff-cta-strip .iaff-btn:hover {
	background: var(--iaff-bg);
	color: #fff;
}

/* ===== Instagram Feed ===== */
.iaff-ig-feed {
	display: grid;
	grid-template-columns: repeat(3, 1fr);
	gap: 12px;
	max-width: 1100px;
	margin: 0 auto;
}
.iaff-ig-feed--empty {
	background: var(--iaff-bg-2);
	border: 1px dashed var(--iaff-line);
	padding: 24px 28px;
	color: var(--iaff-text-soft);
	border-radius: 2px;
	text-align: center;
}
.iaff-ig-feed--empty a { color: var(--iaff-red); }
.iaff-ig-item {
	position: relative;
	aspect-ratio: 1 / 1;
	overflow: hidden;
	background: var(--iaff-bg-2);
	border: 1px solid var(--iaff-line);
	border-radius: 2px;
	display: block;
	text-decoration: none;
	transition: transform 0.2s;
}
.iaff-ig-item:hover { transform: translateY(-3px); border-color: var(--iaff-red); }
.iaff-ig-item img {
	width: 100%;
	height: 100%;
	object-fit: cover;
	display: block;
	transition: transform 0.4s ease, filter 0.2s;
}
.iaff-ig-item:hover img { transform: scale(1.05); filter: brightness(0.6); }
.iaff-ig-badge {
	position: absolute;
	top: 10px;
	right: 10px;
	background: rgba(0, 0, 0, 0.7);
	color: #fff;
	font-size: 11px;
	padding: 4px 7px;
	border-radius: 2px;
	pointer-events: none;
	line-height: 1;
}
.iaff-ig-overlay {
	position: absolute;
	left: 0;
	right: 0;
	bottom: 0;
	padding: 16px;
	font-size: 12px;
	color: #fff;
	background: linear-gradient(0deg, rgba(0,0,0,0.85), transparent);
	opacity: 0;
	transform: translateY(8px);
	transition: opacity 0.2s, transform 0.2s;
	line-height: 1.45;
	font-weight: 500;
	pointer-events: none;
}
.iaff-ig-item:hover .iaff-ig-overlay { opacity: 1; transform: translateY(0); }

/* Instagram CTA — gradient-bordered pill.
   The button uses a 1.5px IG-brand gradient border via a double-background
   technique (border-box + padding-box) so the interior stays in the dark
   Firehouse Ledger palette. Without this the IG gradient as a fill would
   read as a marketing button — too loud for this site. */
.iaff-ig-cta {
	display: block;
	width: fit-content;
	margin: 40px auto 0;
	padding: 1.5px; /* gradient border thickness */
	border-radius: 999px;
	text-decoration: none;
	background:
		linear-gradient(var(--iaff-bg-2, #161616), var(--iaff-bg-2, #161616)) padding-box,
		linear-gradient(95deg, #f09433 0%, #e6683c 25%, #dc2743 50%, #cc2366 75%, #bc1888 100%) border-box;
	transition: transform 0.18s ease, box-shadow 0.18s ease;
	box-shadow: 0 1px 0 rgba(0,0,0,0.4);
}
.iaff-ig-cta-inner {
	display: inline-flex;
	align-items: center;
	gap: 12px;
	padding: 14px 24px;
	border-radius: inherit;
	color: var(--iaff-text, #fff);
	font-family: Inter, system-ui, sans-serif;
	font-weight: 700;
	font-size: 13px;
	letter-spacing: 0.18em;
	text-transform: uppercase;
	line-height: 1;
	white-space: nowrap;
}
.iaff-ig-cta-glyph {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	width: 28px;
	height: 28px;
	border-radius: 8px;
	background: linear-gradient(135deg, #f09433 0%, #dc2743 50%, #bc1888 100%);
	color: #fff;
	flex: 0 0 auto;
}
.iaff-ig-cta-glyph svg { display: block; }
.iaff-ig-cta-handle {
	color: var(--iaff-text-dim, #8a8a8a);
	font-weight: 600;
	letter-spacing: 0.08em;
	text-transform: none;
}
.iaff-ig-cta-arrow {
	display: inline-block;
	color: var(--iaff-text-dim, #8a8a8a);
	transition: transform 0.2s ease, color 0.2s ease;
	font-size: 14px;
}
.iaff-ig-cta:hover,
.iaff-ig-cta:focus-visible {
	transform: translateY(-2px);
	box-shadow: 0 10px 24px -10px rgba(220, 39, 67, 0.55), 0 0 0 1px rgba(220, 39, 67, 0.12);
}
.iaff-ig-cta:hover .iaff-ig-cta-arrow,
.iaff-ig-cta:focus-visible .iaff-ig-cta-arrow {
	transform: translateX(4px);
	color: var(--iaff-text, #fff);
}
.iaff-ig-cta:focus-visible {
	outline: 2px solid var(--iaff-red, #e11d1d);
	outline-offset: 3px;
}
@media (max-width: 480px) {
	.iaff-ig-cta-inner { padding: 12px 18px; gap: 10px; font-size: 12px; letter-spacing: 0.14em; }
	.iaff-ig-cta-handle { display: none; }
	.iaff-ig-cta-glyph { width: 24px; height: 24px; }
	.iaff-ig-cta-glyph svg { width: 16px; height: 16px; }
}

@media (max-width: 768px) {
	.iaff-ig-feed { grid-template-columns: repeat(2, 1fr); gap: 8px; }
}
@media (max-width: 480px) {
	.iaff-ig-feed { grid-template-columns: repeat(3, 1fr); gap: 4px; }
}

/* ===== Section transitions — reflective-tape accent =====
   Thin red bar piercing the seam between consecutive sections. Reads as a deliberate
   punctuation mark, not a decorative flourish. */
.iaff-section + .iaff-section,
.iaff-section + .iaff-memorial-block,
.iaff-section + .iaff-cta-strip,
.iaff-memorial-block + .iaff-cta-strip,
.iaff-mission-strip + .iaff-section {
	position: relative;
}
.iaff-section + .iaff-section::before,
.iaff-section + .iaff-memorial-block::before,
.iaff-section + .iaff-cta-strip::before,
.iaff-memorial-block + .iaff-cta-strip::before,
.iaff-mission-strip + .iaff-section::before {
	content: '';
	position: absolute;
	top: 0;
	left: 50%;
	transform: translate(-50%, -50%);
	width: 96px;
	height: 2px;
	background: var(--iaff-red);
	z-index: 3;
}

/* ===== Memorial — "Official Notice" plaque layout =====
   Two-column on desktop: NFFF national tribute left, Local 2956 plaque right.
   Heavy red rules top and bottom frame the section as a formal notice. */
.iaff-memorial-block .iaff-container {
	display: grid;
	grid-template-columns: 1fr 1fr;
	gap: 64px;
	align-items: center;
	text-align: left;
	max-width: 1100px;
}
.iaff-memorial-side {
	display: flex;
	flex-direction: column;
	align-items: center;
	text-align: center;
}
.iaff-memorial-main {
	display: flex;
	flex-direction: column;
	align-items: flex-start;
	gap: 18px;
	border-left: 1px solid var(--iaff-line);
	padding-left: 56px;
}
.iaff-memorial-block .iaff-memorial-seal-frame {
	margin: 0 0 6px;
}
.iaff-memorial-block .iaff-memorial-main h2 {
	text-align: left;
	max-width: 560px;
	margin: 0;
}
.iaff-memorial-block .iaff-memorial-main .iaff-eyebrow {
	margin: 0;
}

/* ===== Partners in Emergency Response =====
   Two sub-groups (EMS, Law Enforcement) with their own label rule above
   each grid. Cards are compact, dignified — no flashy hovers, since this is
   a recognition section, not a marketing one. Each card has a small type
   pill (BLS/ALS/Police), agency name as h3, brief description. */
.iaff-partners-section .iaff-section-head {
	margin-bottom: 48px;
}
.iaff-partners-section .iaff-section-head .iaff-deck strong {
	color: var(--iaff-text);
	font-weight: 700;
}
.iaff-partners-group {
	margin: 0 auto 56px;
	max-width: 1180px;
}
.iaff-partners-group:last-of-type {
	margin-bottom: 24px;
}
.iaff-partners-group-label {
	font-family: 'Bebas Neue', system-ui, sans-serif;
	font-size: 16px;
	letter-spacing: 0.28em;
	color: var(--iaff-text);
	text-align: center;
	padding-bottom: 14px;
	margin-bottom: 24px;
	border-bottom: 1px solid var(--iaff-line);
	position: relative;
}
.iaff-partners-group-label::after {
	content: '';
	position: absolute;
	bottom: -1px;
	left: 50%;
	transform: translateX(-50%);
	width: 56px;
	height: 1px;
	background: var(--iaff-red);
}
.iaff-partners-grid {
	display: grid;
	grid-template-columns: repeat(3, 1fr);
	gap: 16px;
}
.iaff-partner-card {
	background: var(--iaff-bg-2);
	border: 1px solid var(--iaff-line);
	padding: 26px 24px;
	display: flex;
	flex-direction: column;
	gap: 10px;
	position: relative;
	transition: border-color 0.2s ease;
}
.iaff-partner-card:hover {
	border-color: rgba(225, 29, 29, 0.5);
}
.iaff-partner-card::before {
	content: '';
	position: absolute;
	top: 0;
	left: 0;
	width: 32px;
	height: 2px;
	background: var(--iaff-red);
}
.iaff-partner-type {
	display: inline-block;
	font-family: Inter, sans-serif;
	font-size: 10.5px;
	font-weight: 700;
	letter-spacing: 0.22em;
	text-transform: uppercase;
	color: var(--iaff-red);
	margin-top: 4px;
}
.iaff-partner-card h3 {
	font-family: 'Bebas Neue', system-ui, sans-serif;
	font-size: 22px;
	letter-spacing: 0.02em;
	color: var(--iaff-text);
	margin: 4px 0 6px;
	line-height: 1.1;
	font-weight: 400;
}
.iaff-partner-card p {
	font-family: Inter, sans-serif;
	font-size: 13.5px;
	line-height: 1.55;
	color: var(--iaff-text-soft);
	margin: 0;
}
/* Single-card variant for the Dispatch group (60 Control alone in its row).
   Centered, wider than the standard 3-up cards to fill the row meaningfully. */
.iaff-partners-grid--single {
	grid-template-columns: minmax(0, 720px);
	justify-content: center;
}
.iaff-partner-card--featured {
	background: var(--iaff-bg-3);
}
.iaff-partner-card--featured::before {
	width: 56px;
	height: 3px;
}
.iaff-partner-card--featured h3 {
	font-size: 24px;
}
/* Specialized partners footnote block — situational responders that aren't
   on every call (DPW, utilities). Lower visual weight than card sections. */
.iaff-partners-footnote-block {
	margin-top: 8px;
	padding-top: 32px;
	border-top: 1px solid var(--iaff-line);
	text-align: center;
	max-width: 880px;
	margin-left: auto;
	margin-right: auto;
}
.iaff-partners-footnote-label {
	font-family: 'Bebas Neue', system-ui, sans-serif;
	font-size: 14px;
	letter-spacing: 0.26em;
	color: var(--iaff-text-dim);
	margin-bottom: 12px;
}
.iaff-partners-footnote-list {
	font-family: Inter, sans-serif;
	font-size: 14px;
	color: var(--iaff-text-soft);
	line-height: 1.7;
	margin: 0;
}
@media (max-width: 1024px) {
	.iaff-partners-grid { grid-template-columns: repeat(2, 1fr); }
}
@media (max-width: 600px) {
	.iaff-partners-grid { grid-template-columns: 1fr; }
	.iaff-partners-grid--single { grid-template-columns: 1fr; }
}

/* ===== Homepage NFFF "Across the Country" section =====
   Horizontal layout: widget on the left, text content (eyebrow + h2 + body +
   attribution + button) stacked on the right. Vertical-stack was eating a lot
   of homepage real estate; side-by-side reads tighter and matches the section
   weight better. Stacks vertically on smaller screens. */
.iaff-nfff-section .iaff-container {
	max-width: 1100px;
}
.iaff-nfff-layout {
	display: grid;
	grid-template-columns: auto 1fr;
	gap: 64px;
	align-items: center;
}
.iaff-nfff-frame-inner {
	background: #000;
	padding: 14px;
	border: 1px solid var(--iaff-line);
	box-shadow:
		inset 0 0 0 1px rgba(225, 29, 29, 0.18),
		0 0 0 6px var(--iaff-bg-2),
		0 0 0 7px rgba(225, 29, 29, 0.28),
		0 24px 56px -18px rgba(0, 0, 0, 0.7);
	line-height: 0;
	width: 328px;        /* 300px iframe + 14px*2 padding */
	height: 328px;
	flex: 0 0 auto;
}
.iaff-nfff-frame-inner iframe {
	display: block;
	max-width: 100%;
	background: #000;
}
.iaff-nfff-content {
	display: flex;
	flex-direction: column;
	align-items: flex-start;
	gap: 14px;
}
.iaff-nfff-content .iaff-eyebrow {
	margin-bottom: 4px;
}
.iaff-nfff-content h2 {
	margin: 0;
	font-size: clamp(28px, 3.4vw, 40px);
	line-height: 1.12;
	font-weight: 800;
	letter-spacing: -0.01em;
	color: var(--iaff-text);
}
.iaff-nfff-content p {
	margin: 0;
	color: var(--iaff-text-soft);
	font-size: 16px;
	line-height: 1.65;
	max-width: 540px;
}
.iaff-nfff-attribution {
	font-family: Inter, system-ui, sans-serif;
	font-size: 11px !important;
	color: var(--iaff-text-dim) !important;
	letter-spacing: 0.18em;
	text-transform: uppercase;
	line-height: 1.55;
	margin-top: 4px !important;
}
.iaff-nfff-content .iaff-btn {
	margin-top: 12px;
}
@media (max-width: 900px) {
	.iaff-nfff-layout {
		grid-template-columns: 1fr;
		gap: 36px;
		justify-items: center;
	}
	.iaff-nfff-content {
		align-items: center;
		text-align: center;
	}
	.iaff-nfff-content p { text-align: center; }
}
@media (max-width: 480px) {
	.iaff-nfff-frame-inner {
		padding: 10px;
		width: auto;
		max-width: 300px;
		height: auto;
		aspect-ratio: 1 / 1;
		box-shadow:
			inset 0 0 0 1px rgba(225, 29, 29, 0.18),
			0 0 0 4px var(--iaff-bg-2),
			0 0 0 5px rgba(225, 29, 29, 0.28);
	}
}

/* ===== Homepage memorial portrait — Gold-Trimmed Honor banner =====
   FF Johanson tribute on the homepage. A single vertical banner with a
   pointed tail: brass Maltese cross at the crest (with badge number
   "61" engraved into the metal), photo with brass corner brackets in
   the middle, italic engraved nameplate at the foot. Reads as one
   ceremonial honor banner — like the kind hung at a formal investiture.
   Local brass variables scoped to this composition. */
.iaff-johanson-portrait {
	--brass:       #c9a368;
	--brass-light: #e7c590;
	--brass-deep:  #7a5a2a;
	--crimson:     #6e0d0d;
	--blood:       #5a0404;

	position: relative;
	margin: 0 auto;
	max-width: 320px;
	width: 100%;
}

/* Outer banner shape: brass-edged crimson body with pointed tail. */
.iaff-johanson-banner {
	position: relative;
	background:
		radial-gradient(ellipse at 50% 100%, rgba(231, 197, 144, 0.12), transparent 60%),
		radial-gradient(ellipse at 50% 0%, rgba(255, 90, 90, 0.18), transparent 50%),
		linear-gradient(180deg, var(--crimson) 0%, var(--blood) 60%, #1a0303 100%);
	padding: 6px;
	clip-path: polygon(
		0 0, 100% 0,
		100% calc(100% - 26px),
		50% 100%,
		0 calc(100% - 26px)
	);
	box-shadow: 0 28px 48px -12px rgba(0, 0, 0, 0.75);
}
.iaff-johanson-banner::before {
	/* outer thin brass line tracking the banner edge */
	content: '';
	position: absolute;
	inset: 0;
	border: 1px solid var(--brass);
	clip-path: polygon(
		0 0, 100% 0,
		100% calc(100% - 26px),
		50% 100%,
		0 calc(100% - 26px)
	);
	pointer-events: none;
}
.iaff-johanson-banner-inner {
	position: relative;
	background:
		radial-gradient(ellipse at 50% 0%, rgba(255, 90, 90, 0.12), transparent 55%),
		linear-gradient(180deg, rgba(0, 0, 0, 0.18), rgba(0, 0, 0, 0.35));
	border: 1px solid rgba(231, 197, 144, 0.55);
	padding-bottom: 32px;
	clip-path: polygon(
		0 0, 100% 0,
		100% calc(100% - 22px),
		50% 100%,
		0 calc(100% - 22px)
	);
}

/* CREST — brass Maltese with "61" engraved into the metal. */
.iaff-johanson-banner-crest {
	padding: 30px 20px 20px;
	text-align: center;
	position: relative;
}
.iaff-johanson-banner-crest::after {
	content: '';
	display: block;
	width: 60px;
	height: 1px;
	background: var(--brass);
	margin: 16px auto 0;
	opacity: 0.55;
}
.iaff-johanson-banner-cross-mark {
	position: relative;
	width: 64px;
	height: 64px;
	margin: 0 auto;
}
.iaff-johanson-banner-cross {
	width: 100%;
	height: 100%;
	background: linear-gradient(135deg, var(--brass-light) 0%, var(--brass) 40%, var(--brass-deep) 95%);
	-webkit-mask: url("../img/iaff-cross.png") no-repeat center / contain;
	mask: url("../img/iaff-cross.png") no-repeat center / contain;
	filter:
		drop-shadow(0 1px 0 rgba(0, 0, 0, 0.5))
		drop-shadow(0 0 12px rgba(231, 197, 144, 0.4));
}
.iaff-johanson-banner-num {
	position: absolute;
	top: 50%;
	left: 50%;
	transform: translate(-50%, -52%);
	font-family: 'Bebas Neue', system-ui, sans-serif;
	font-size: 22px;
	letter-spacing: 0.04em;
	line-height: 1;
	color: #2a1a08;
	text-shadow:
		0 1px 0 rgba(255, 230, 180, 0.30),
		0 -1px 0 rgba(0, 0, 0, 0.45);
	z-index: 2;
	pointer-events: none;
}
.iaff-johanson-banner-label {
	font-family: 'Cormorant Garamond', Georgia, serif;
	font-style: italic;
	font-weight: 500;
	font-size: 14px;
	letter-spacing: 0.32em;
	color: var(--brass);
	margin-top: 14px;
	line-height: 1;
	text-transform: uppercase;
	text-shadow: 0 1px 0 rgba(0, 0, 0, 0.6);
}

/* PHOTO — four brass corner brackets framing the portrait. */
.iaff-johanson-banner-photo {
	padding: 6px 22px 0;
	position: relative;
}
.iaff-johanson-banner-photo-frame {
	position: relative;
	padding: 4px;
	border: 1px solid var(--brass);
}
.iaff-johanson-banner-photo-frame::before,
.iaff-johanson-banner-photo-frame::after,
.iaff-johanson-banner-photo::before,
.iaff-johanson-banner-photo::after {
	content: '';
	position: absolute;
	width: 10px;
	height: 10px;
	border: 1px solid var(--brass-light);
}
.iaff-johanson-banner-photo-frame::before { top: -2px; left: -2px;   border-right: 0; border-bottom: 0; }
.iaff-johanson-banner-photo-frame::after  { top: -2px; right: -2px;  border-left: 0;  border-bottom: 0; }
.iaff-johanson-banner-photo::before       { bottom: 2px; left: 24px; border-right: 0; border-top: 0; }
.iaff-johanson-banner-photo::after        { bottom: 2px; right: 24px;border-left: 0;  border-top: 0; }
.iaff-johanson-banner-photo img {
	display: block;
	width: 100%;
	aspect-ratio: 4 / 5;
	object-fit: cover;
	filter: sepia(0.18) saturate(0.9) contrast(1.05);
}

/* FOOT — italic engraved nameplate. */
.iaff-johanson-banner-foot {
	padding: 18px 24px 0;
	text-align: center;
}
.iaff-johanson-banner-foot::before {
	content: '';
	display: block;
	width: 36px;
	height: 1px;
	background: var(--brass);
	margin: 0 auto 14px;
	opacity: 0.6;
}
.iaff-johanson-banner-name {
	font-family: 'Cormorant Garamond', Georgia, serif;
	font-style: italic;
	font-weight: 600;
	font-size: 19px;
	color: var(--brass-light);
	line-height: 1.2;
	margin: 0 0 6px;
	text-shadow: 0 1px 0 rgba(0, 0, 0, 0.6);
}
.iaff-johanson-banner-dates {
	font-family: 'Inter', system-ui, sans-serif;
	font-size: 9.5px;
	color: var(--brass);
	letter-spacing: 0.42em;
	text-transform: uppercase;
	font-weight: 700;
}

@media (max-width: 900px) {
	/* Earlier the halo-seal sat at the top center and competed with the
	   reflective-tape transition bar — we hid the bar then. The current
	   banner is offset within memorial-side and doesn't collide, so the
	   bar is restored to mark the section seam consistently with the
	   rest of the page. (Rule kept here so the intent is documented.) */

	/* Mobile memorial layout: switch from grid to flex-column. The portrait
	   composition (with halo + "61" badge) is the visual anchor at top;
	   eyebrow / h2 / button stack below as the tribute. memorial-main uses
	   display: contents so its children become direct flex items, freely
	   ordered alongside memorial-side. */
	.iaff-memorial-block .iaff-container {
		display: flex;
		flex-direction: column;
		gap: 16px;
		text-align: center;
	}
	.iaff-memorial-main {
		display: contents;
	}
	.iaff-memorial-side {
		order: 1;
		margin-bottom: 16px;
	}
	.iaff-memorial-block .iaff-memorial-main .iaff-eyebrow {
		order: 2;
		align-self: center;
		margin: 24px 0 0;
	}
	.iaff-memorial-block .iaff-memorial-main h2 {
		order: 3;
		text-align: center;
		max-width: 100%;
		margin: 0;
	}
	.iaff-memorial-block .iaff-memorial-main .iaff-btn {
		order: 4;
		align-self: center;
		margin: 8px 0 0;
	}
}

/* ===== News section spacing fix =====
   The news section is split across three sibling blocks (heading section,
   wp:group with query loop, CTA section) because wp:query can't sit cleanly
   inside a wp:html block. Default section padding (110px top + 110px bottom)
   on each piece creates a 220px+ gap between heading and cards. Tighten the
   paddings so the three pieces read as one continuous section.

   Specificity note: chained `.iaff-section.iaff-section--news-head` (0,2,0)
   beats the responsive `.iaff-section { padding: ... }` resets in later
   media-query blocks. Without this, the bottom-padding override loses the
   cascade at <=1024px and <=480px viewports, ballooning the gap below the
   deck text on mobile. */
.iaff-section.iaff-section--news-head { padding-bottom: 24px; }
.iaff-section--news-head .iaff-section-head { margin-bottom: 32px; }
.iaff-news-loop-wrapper { margin-top: 0; margin-bottom: 0; }
.iaff-news-loop-wrapper + .iaff-section.iaff-section--news-cta,
.iaff-section.iaff-section--news-cta { padding-top: 40px; padding-bottom: 110px; }

/* Reset to suppress between-section transition red dot (the news pieces are
   structurally three sections but visually one — the transition dots between
   them would clutter). */
.iaff-section--news-head + * + .iaff-section--news-cta::before,
.iaff-section--news-head + .iaff-section--news-cta::before { display: none; }

/* ===== Subtle top-glow lift on card-grid sections =====
   Faint red radial glow at top-center of the section. Adds depth to the area
   between cards without competing with the cards themselves. */
.iaff-section--lift {
	background-image: radial-gradient(ellipse 60% 50% at 50% 0%, rgba(225, 29, 29, 0.06), transparent 70%);
}

/* ===== Centered section variant (used by partnership / dignified blocks) ===== */
.iaff-section--center { position: relative; }
.iaff-section--center .iaff-section-head { text-align: center; margin-left: auto; margin-right: auto; position: relative; z-index: 1; }
.iaff-section--center .iaff-section-head .iaff-deck { margin-left: auto; margin-right: auto; }
.iaff-section--center > .iaff-container { position: relative; z-index: 1; }

/* ===== Section watermarks =====
   Note: use ::after, not ::before. The ::before pseudo is owned by the
   section-transition rule (the red accent dot between sections).
   mix-blend-mode: screen lifts the watermark colors through the dark bg —
   without it, a dark/saturated watermark at low opacity is essentially
   invisible on near-black. */
.iaff-bg-iaff::after {
	content: '';
	position: absolute;
	inset: 0;
	background-image: url("../img/iaff-cross.png");
	background-repeat: no-repeat;
	background-position: center;
	background-size: 540px auto;
	opacity: 0.18;
	mix-blend-mode: screen;
	pointer-events: none;
	z-index: 0;
}

.iaff-bg-support::after {
	content: '';
	position: absolute;
	inset: 0;
	background-image: url("../img/ribbon-support.svg");
	background-repeat: no-repeat;
	background-position: center;
	background-size: auto 480px;
	opacity: 0.55;
	mix-blend-mode: screen;
	pointer-events: none;
	z-index: 0;
}

/* ===== Our Stations cards ===== */
.iaff-stations-grid {
	display: grid;
	grid-template-columns: repeat(4, 1fr);
	gap: 20px;
	margin-top: 16px;
	counter-reset: iaff-station;
}
.iaff-station-card {
	background: var(--iaff-bg-2);
	border: 1px solid var(--iaff-line);
	text-align: left;
	display: flex;
	flex-direction: column;
	overflow: hidden;
	position: relative;
	isolation: isolate;
	transition: border-color 0.25s ease, transform 0.25s ease;
	counter-increment: iaff-station;
}
.iaff-station-card::after {
	content: '';
	position: absolute;
	inset: -20% -10% -20% 30%;
	background-image: url("../img/iaff-cross.png");
	background-repeat: no-repeat;
	background-position: right center;
	background-size: contain;
	opacity: 0;
	mix-blend-mode: screen;
	pointer-events: none;
	transition: opacity 0.35s ease, transform 0.45s ease;
	transform: translateX(8%);
	z-index: -1;
}
.iaff-station-card > * { position: relative; z-index: 1; }
.iaff-station-card:hover {
	border-color: var(--iaff-red);
	transform: translateY(-2px);
}
.iaff-station-card:hover::after {
	opacity: 0.14;
	transform: translateX(0);
}
.iaff-station-photo {
	aspect-ratio: 16 / 9;
	background: var(--iaff-bg-3);
	border-bottom: 1px solid var(--iaff-line);
	display: flex;
	align-items: center;
	justify-content: center;
	position: relative;
}
.iaff-station-photo img {
	width: 100%;
	height: 100%;
	object-fit: cover;
	display: block;
}
.iaff-station-mark {
	display: flex;
	flex-direction: column;
	align-items: center;
	gap: 12px;
	position: relative;
}
/* Stamp the station number into the center of the Maltese seal.
   The .iaff-station-seal is the first child (always 64×64), so positioning
   the pseudo at top:0 with the same dimensions overlays it precisely. The
   dark fill rides on the silver center plate of the Maltese; against the
   open bg-3 around the cross arms it would disappear, but the digit is
   sized to stay inside the silver area. */
.iaff-station-mark::before {
	content: counter(iaff-station);
	position: absolute;
	top: 0;
	left: 50%;
	transform: translateX(-50%);
	width: 64px;
	height: 64px;
	display: flex;
	align-items: center;
	justify-content: center;
	font-family: 'Bebas Neue', system-ui, sans-serif;
	font-size: 30px;
	letter-spacing: 0;
	color: var(--iaff-bg, #0a0a0a);
	line-height: 1;
	pointer-events: none;
	z-index: 2;
}
.iaff-station-num {
	font-family: 'Bebas Neue', system-ui, sans-serif;
	font-size: 13px;
	letter-spacing: 0.28em;
	color: var(--iaff-text-soft);
	text-transform: uppercase;
	line-height: 1;
}
.iaff-station-seal {
	width: 64px;
	height: 64px;
	background: rgba(255, 255, 255, 0.88);
	-webkit-mask: url("../img/iaff-cross.png") no-repeat center / contain;
	mask: url("../img/iaff-cross.png") no-repeat center / contain;
	color: transparent;
	font-size: 0;
	border-radius: 0;
	border: 0;
}
.iaff-station-body {
	padding: 22px 22px 26px;
}
.iaff-station-name {
	font-family: 'Bebas Neue', system-ui, sans-serif;
	font-size: 24px;
	margin: 0 0 12px;
	color: var(--iaff-text);
	letter-spacing: 0.02em;
	font-weight: 700;
}
.iaff-station-address {
	display: inline-block;
	color: var(--iaff-text-soft);
	font-family: Inter, system-ui, sans-serif;
	font-size: 14.5px;
	line-height: 1.55;
	text-decoration: none;
	border-bottom: 1px solid transparent;
	transition: color 0.2s ease, border-color 0.2s ease;
}
.iaff-station-address:hover,
.iaff-station-address:focus-visible {
	color: var(--iaff-red);
}
@media (max-width: 1099px) {
	.iaff-stations-grid { grid-template-columns: repeat(2, 1fr); }
}
@media (max-width: 600px) {
	.iaff-stations-grid { grid-template-columns: 1fr; }
}

/* ===== IAFF National News feed cards ===== */
.iaff-iaff-brand-mark {
	display: block;
	width: 96px;
	height: 96px;
	margin: 0 auto 22px;
}

.iaff-iaff-news-grid {
	display: grid;
	grid-template-columns: repeat(4, 1fr);
	gap: 20px;
	margin-top: 16px;
}
.iaff-iaff-news-card {
	background: var(--iaff-bg-2);
	border: 1px solid var(--iaff-line);
	padding: 24px 22px;
	display: flex;
	flex-direction: column;
	gap: 12px;
	text-decoration: none;
	color: inherit;
	transition: border-color 0.25s ease, transform 0.25s ease;
}
.iaff-iaff-news-card:hover {
	border-color: var(--iaff-red);
	transform: translateY(-2px);
}
.iaff-iaff-news-date {
	display: block;
	font-family: 'Inter', system-ui, sans-serif;
	font-size: 11px;
	font-weight: 700;
	color: var(--iaff-red);
	letter-spacing: 0.18em;
	text-transform: uppercase;
}
.iaff-iaff-news-title {
	display: block;
	font-size: 18px;
	line-height: 1.3;
	margin: 0;
	color: var(--iaff-text);
	font-weight: 700;
	letter-spacing: -0.005em;
	font-family: 'Inter', system-ui, sans-serif;
}
.iaff-iaff-news-excerpt {
	display: block;
	color: var(--iaff-text-soft);
	font-size: 14px;
	line-height: 1.6;
	margin: 0;
	flex: 1;
}
.iaff-iaff-news-link {
	display: block;
	color: var(--iaff-red);
	font-family: 'Inter', system-ui, sans-serif;
	font-weight: 600;
	font-size: 12px;
	letter-spacing: 0.08em;
	text-transform: uppercase;
	margin-top: 8px;
}
.iaff-iaff-news-attribution {
	text-align: center;
	font-size: 12px;
	color: var(--iaff-text-dim);
	margin-top: 32px;
	letter-spacing: 0.02em;
}
.iaff-iaff-news-attribution a {
	color: var(--iaff-text-soft);
	text-decoration: none;
	border-bottom: 1px solid var(--iaff-line);
	padding-bottom: 1px;
	transition: color 0.2s ease, border-color 0.2s ease;
}
.iaff-iaff-news-attribution a:hover {
	color: var(--iaff-red);
	border-bottom-color: var(--iaff-red);
}
@media (max-width: 1099px) {
	.iaff-iaff-news-grid { grid-template-columns: repeat(2, 1fr); }
}
@media (max-width: 600px) {
	.iaff-iaff-news-grid { grid-template-columns: 1fr; }
}

/* ===== Public Safety Resources cards ===== */
.iaff-safety-grid {
	display: grid;
	grid-template-columns: repeat(4, 1fr);
	gap: 20px;
	margin-top: 16px;
}
.iaff-safety-card {
	background: var(--iaff-bg-2);
	border: 1px solid var(--iaff-line);
	padding: 28px 24px;
	display: flex;
	flex-direction: column;
	text-align: left;
	position: relative;
	overflow: hidden;
	isolation: isolate;
	transition: border-color 0.25s ease, transform 0.25s ease;
}
/* Per-card icon now appears in the SECTION's background, not the card itself —
   see the .iaff-section:has(.iaff-safety-card--*:hover)::after rules below. */
.iaff-safety-card > * { position: relative; z-index: 1; }
.iaff-safety-card:hover {
	border-color: var(--iaff-red);
	transform: translateY(-2px);
}

/* ===== Per-card topic icon — small static element in the card top-right =====
   Each safety card shows its topic icon as a small fixed badge in the upper-right
   corner. Always visible (works on mobile, no hover dependency). Identifies the
   card's subject at a glance. */
.iaff-safety-card::before {
	content: '';
	position: absolute;
	top: 22px;
	right: 22px;
	width: 36px;
	height: 36px;
	background-repeat: no-repeat;
	background-position: center;
	background-size: contain;
	opacity: 0.85;
	transition: opacity 0.25s ease, transform 0.25s ease;
	z-index: 1;
}
.iaff-safety-card--alarm::before   { background-image: url("../img/icon-smoke-alarm.svg"); }
.iaff-safety-card--escape::before  { background-image: url("../img/icon-escape-plan.svg"); }
.iaff-safety-card--cooking::before { background-image: url("../img/icon-cooking.svg"); }
.iaff-safety-card--co::before      { background-image: url("../img/icon-co.svg"); }
.iaff-safety-card:hover::before {
	opacity: 1;
	transform: scale(1.08);
}
.iaff-safety-source {
	color: var(--iaff-red);
	font-family: Inter, system-ui, sans-serif;
	font-size: 11px;
	font-weight: 800;
	letter-spacing: 0.22em;
	text-transform: uppercase;
	margin-bottom: 18px;
}
.iaff-safety-card h3 {
	font-size: 20px;
	line-height: 1.25;
	margin: 0 0 14px;
	padding-right: 48px; /* clear the static topic icon in the top-right */
	font-weight: 700;
	color: var(--iaff-text);
	letter-spacing: -0.005em;
}
.iaff-safety-card p {
	color: var(--iaff-text-soft);
	font-size: 14.5px;
	line-height: 1.65;
	margin: 0 0 24px;
	flex: 1;
}
.iaff-safety-link {
	color: var(--iaff-red);
	text-decoration: none;
	font-family: Inter, system-ui, sans-serif;
	font-weight: 600;
	font-size: 13px;
	letter-spacing: 0.06em;
	text-transform: uppercase;
	align-self: flex-start;
	border-bottom: 1px solid transparent;
	padding-bottom: 2px;
	transition: border-color 0.2s ease;
}
.iaff-safety-link:hover,
.iaff-safety-link:focus-visible { border-color: var(--iaff-red); }
@media (max-width: 1199px) {
	.iaff-safety-grid { grid-template-columns: repeat(2, 1fr); }
}
@media (max-width: 600px) {
	.iaff-safety-grid { grid-template-columns: 1fr; }
}

/* ===== Support Connection partnership block ===== */
.iaff-partnership-body {
	max-width: 720px;
	margin: 32px auto 0;
	text-align: center;
}
.iaff-partnership-body p {
	color: #cfcfcf;
	font-size: 16px;
	line-height: 1.7;
	margin: 0 0 32px;
}

/* ===== Footer ===== */
.iaff-site-footer {
	background: #000;
	padding: 96px 0 32px;
}
.iaff-footer-grid {
	display: grid;
	grid-template-columns: 2.2fr 1fr 1fr;
	gap: 56px;
	margin-bottom: 64px;
}
.iaff-footer-brand { display: flex; flex-direction: column; gap: 24px; }
.iaff-footer-brand p { margin: 0; }
.iaff-brand--footer { display: inline-block; }
.iaff-brand--footer .iaff-brand-logo {
	height: 72px;
	width: auto;
	max-width: 320px;
	display: block;
}
.iaff-site-footer h4 {
	font-family: 'Bebas Neue', sans-serif;
	font-size: 14px;
	letter-spacing: 0.18em;
	margin: 0 0 18px;
	color: var(--iaff-text);
}
.iaff-site-footer a {
	color: var(--iaff-text-dim);
	font-size: 14px;
	display: block;
	padding: 5px 0;
	transition: color 0.15s;
	text-decoration: none;
}
.iaff-site-footer a:hover {
	color: var(--iaff-red);
}
.iaff-site-footer p {
	color: var(--iaff-text-dim);
	font-size: 14px;
	line-height: 1.7;
	max-width: 360px;
}
.iaff-footer-affiliations {
	display: flex;
	gap: 16px;
	margin-top: 24px;
	flex-wrap: wrap;
}
.iaff-footer-affiliations span {
	font-size: 11px;
	color: var(--iaff-text-dim);
	letter-spacing: 0.15em;
	padding: 4px 10px;
	border: 1px solid var(--iaff-line);
	border-radius: 2px;
	font-weight: 600;
}
.iaff-footer-bottom {
	border-top: 1px solid var(--iaff-line);
	padding-top: 28px;
	display: flex;
	justify-content: space-between;
	align-items: center;
	flex-wrap: wrap;
	gap: 12px 24px;
	color: var(--iaff-text-dim);
	font-size: 12px;
}
.iaff-credit {
	letter-spacing: 0.04em;
}
.iaff-credit a {
	display: inline;
	padding: 0;
	color: var(--iaff-text-soft);
	text-decoration: none;
	border-bottom: 1px solid var(--iaff-line);
	padding-bottom: 1px;
	transition: color 0.2s ease, border-color 0.2s ease;
}
.iaff-credit a:hover,
.iaff-credit a:focus-visible {
	color: var(--iaff-red);
	border-bottom-color: var(--iaff-red);
}

/* ===== Lead paragraph (intro text on inner pages) ===== */
.iaff-single-content .iaff-lead {
	font-size: 1.25rem;
	line-height: 1.55;
	color: var(--iaff-text);
	font-weight: 500;
	max-width: 720px;
	margin: 0 auto 2em !important;
	padding-bottom: 1.5em;
	border-bottom: 1px solid var(--iaff-line);
}

/* ===== Emergency banner (contact page) ===== */
.iaff-single-content .iaff-emergency-banner {
	background: var(--iaff-red);
	color: #fff;
	padding: 24px 28px;
	font-size: 1.125rem;
	letter-spacing: 0.02em;
	max-width: 720px;
	margin: 2em auto;
	border-radius: 2px;
	text-align: center;
}

/* ===== Contact info grid ===== */
.iaff-single-content .iaff-contact-grid {
	display: grid;
	grid-template-columns: 1fr 1fr;
	gap: 16px;
	max-width: 720px;
	margin: 1em auto 2em;
}
.iaff-contact-card {
	background: var(--iaff-bg-2);
	border: 1px solid var(--iaff-line);
	border-left: 3px solid var(--iaff-red);
	padding: 24px 26px;
	border-radius: 2px;
}
.iaff-contact-card .iaff-contact-label {
	font-family: 'Bebas Neue', sans-serif;
	font-size: 12px;
	letter-spacing: 0.2em;
	color: var(--iaff-red);
	margin-bottom: 8px;
}
.iaff-contact-card .iaff-contact-value {
	font-size: 1rem;
	font-weight: 600;
	color: var(--iaff-text);
	line-height: 1.5;
}
.iaff-contact-card .iaff-contact-value a {
	color: var(--iaff-text);
	text-decoration: none;
}
.iaff-contact-card .iaff-contact-value a:hover {
	color: var(--iaff-red);
}

/* ===== Leadership grid inside pages (Leadership page uses same .iaff-leadership-grid class) ===== */
.iaff-single-content .iaff-leadership-grid {
	max-width: 1100px;
	margin: 2em auto !important;
	display: grid;
	grid-template-columns: repeat(4, 1fr);
	gap: 20px;
}

/* ===== Events list inside pages (Events page uses same .iaff-events-list class) ===== */
.iaff-single-content .iaff-events-list {
	max-width: 1100px;
	margin: 2em auto !important;
}

@media (max-width: 768px) {
	.iaff-single-content .iaff-contact-grid { grid-template-columns: 1fr; }
	.iaff-single-content .iaff-leadership-grid { grid-template-columns: 1fr 1fr; }
}
@media (max-width: 480px) {
	.iaff-single-content .iaff-leadership-grid { grid-template-columns: 1fr; }
}

/* ===== Single post — header (title block) ===== */
.iaff-single-header {
	padding: 72px 0 48px;
	background: var(--iaff-bg-2);
	border-bottom: 1px solid var(--iaff-line);
}
.iaff-single-header .iaff-post-meta {
	font-size: 12px;
	color: var(--iaff-text-dim);
	letter-spacing: 0.18em;
	text-transform: uppercase;
	font-weight: 700;
	margin-bottom: 16px;
}
.iaff-single-header .iaff-post-meta a {
	color: var(--iaff-red);
	text-decoration: none;
}
.iaff-single-header h1 {
	font-family: 'Inter', sans-serif;
	font-size: clamp(1.75rem, 3.2vw, 2.5rem);
	line-height: 1.15;
	letter-spacing: -0.02em;
	font-weight: 800;
	text-transform: none;
	margin: 0 0 16px;
	max-width: 720px;
}
.iaff-single-header .iaff-date {
	font-size: 13px;
	color: var(--iaff-text-dim);
	letter-spacing: 0.15em;
	text-transform: uppercase;
	font-weight: 600;
}

/* ===== Single post — featured image (constrained, consistent aspect ratio) ===== */
.iaff-featured-wrap {
	padding: 40px 32px 0;
}
.iaff-featured-wrap .wp-block-post-featured-image {
	max-width: 720px;
	margin: 0 auto;
	aspect-ratio: 16 / 9;
	overflow: hidden;
	border-radius: 2px;
	background: var(--iaff-bg-2);
	border: 1px solid var(--iaff-line);
	display: block;
}
.iaff-featured-wrap .wp-block-post-featured-image img,
.iaff-featured-wrap .wp-block-post-featured-image a {
	width: 100% !important;
	height: 100% !important;
	object-fit: cover !important;
	object-position: center;
	display: block;
}

/* ===== Single post — body content (proper reading width + typography) ===== */
.iaff-single-content {
	padding: 48px 32px 96px;
	font-size: 1rem;
	line-height: 1.75;
	color: var(--iaff-text-soft);
}
.iaff-single-content > *:not(.wp-block-post-content) {
	max-width: 720px;
	margin-left: auto;
	margin-right: auto;
}
.iaff-single-content p {
	margin: 0 auto 1.25em;
	font-size: 1rem;
}
.iaff-single-content p strong { color: var(--iaff-text); font-weight: 700; }
.iaff-single-content p a,
.iaff-single-content li a {
	color: var(--iaff-red);
	text-decoration: underline;
	text-decoration-color: rgba(225, 29, 29, 0.4);
	text-underline-offset: 3px;
	transition: text-decoration-color 0.15s;
}
.iaff-single-content p a:hover,
.iaff-single-content li a:hover {
	text-decoration-color: var(--iaff-red);
}
.iaff-single-content h2 {
	font-family: 'Inter', sans-serif;
	font-size: 1.5rem;
	font-weight: 800;
	letter-spacing: -0.015em;
	line-height: 1.2;
	color: var(--iaff-text);
	margin: 2em auto 0.5em;
	max-width: 720px;
}
.iaff-single-content h2:first-child { margin-top: 0; }
.iaff-single-content h3 {
	font-family: 'Inter', sans-serif;
	font-size: 1.15rem;
	font-weight: 700;
	letter-spacing: -0.01em;
	line-height: 1.25;
	color: var(--iaff-text);
	margin: 1.75em auto 0.4em;
	max-width: 720px;
}
.iaff-single-content ul,
.iaff-single-content ol {
	margin: 0 auto 1.5em;
	padding-left: 1.5em;
}
.iaff-single-content ul li,
.iaff-single-content ol li {
	margin-bottom: 0.5em;
	line-height: 1.7;
}
.iaff-single-content ul li strong,
.iaff-single-content ol li strong { color: var(--iaff-text); }
.iaff-single-content ul li::marker {
	color: var(--iaff-red);
}
.iaff-single-content blockquote {
	border-left: 3px solid var(--iaff-red);
	padding: 0.25em 0 0.25em 1.5em;
	color: var(--iaff-text);
	font-weight: 600;
	font-size: 1.25rem;
	line-height: 1.5;
	margin: 2em auto;
	font-style: normal;
}

/* Centered paragraphs from old content — keep them readable, not full-width */
.iaff-single-content .has-text-align-center {
	text-align: center;
}
.iaff-single-content h2.has-text-align-center {
	text-align: center;
}

/* Embedded iframes (Google Maps, YouTube, etc.) — responsive */
.iaff-single-content iframe {
	display: block;
	max-width: 100%;
	width: 100%;
	height: auto;
	aspect-ratio: 4 / 3;
	border: 1px solid var(--iaff-line);
	border-radius: 2px;
	margin: 1em auto;
}
.iaff-single-content > .wp-block-html {
	display: flex;
	justify-content: center;
}
.iaff-single-content > .wp-block-html > div {
	max-width: 640px;
	width: 100%;
}

/* Inline images in body content (if any) — also constrained */
.iaff-single-content .wp-block-image {
	margin: 2em auto;
}
.iaff-single-content .wp-block-image img {
	max-width: 100%;
	height: auto;
	border-radius: 2px;
}
.iaff-single-content .wp-block-image figcaption {
	font-size: 0.85rem;
	color: var(--iaff-text-dim);
	text-align: center;
	margin-top: 0.5em;
	font-style: italic;
}

@media (max-width: 768px) {
	.iaff-featured-wrap { padding: 28px 20px 0; }
	.iaff-single-content { padding: 32px 20px 56px; }
	.iaff-single-header { padding: 48px 0 28px; }
	.iaff-single-header h1 { font-size: clamp(1.5rem, 6vw, 2rem); }
}

/* ===== Responsive ===== */
@media (max-width: 1024px) {
	.iaff-container { padding-left: 24px; padding-right: 24px; }
	.iaff-leadership-grid { grid-template-columns: repeat(3, 1fr); }
	.iaff-news-grid { grid-template-columns: repeat(2, 1fr); }
	.iaff-pillars { grid-template-columns: 1fr; }
	.iaff-footer-grid { grid-template-columns: 1fr 1fr; gap: 40px; }
	.iaff-footer-brand { grid-column: 1 / -1; }
	.iaff-section { padding: 96px 0; }
}

@media (max-width: 768px) {
	.iaff-container { padding-left: 20px; padding-right: 20px; }

	/* Mobile menu */
	.iaff-menu-toggle { display: flex; }
	.iaff-nav-links {
		position: fixed;
		top: 0;
		right: 0;
		bottom: 0;
		width: min(320px, 80vw);
		flex-direction: column;
		background: var(--iaff-bg);
		padding: 100px 32px;
		align-items: stretch;
		transform: translateX(100%);
		transition: transform 0.3s;
		gap: 0;
		box-shadow: -8px 0 32px rgba(0, 0, 0, 0.5);
		border-left: 1px solid var(--iaff-line);
		z-index: 105;
	}
	.iaff-nav-links li {
		padding: 0;
		border-bottom: 1px solid var(--iaff-line);
	}
	.iaff-nav-links a {
		padding: 18px 0;
		font-size: 16px;
		display: block;
		border-radius: 0;
		border-bottom: none;
	}
	.iaff-nav-links .iaff-nav-cta {
		text-align: center;
		margin-top: 20px;
		padding: 14px;
	}
	.iaff-menu-checkbox:checked ~ .iaff-nav-links {
		transform: translateX(0);
	}

	.iaff-util-bar .iaff-util-inner { gap: 8px; justify-content: center; }
	.iaff-util-bar .iaff-iaff-label { display: none; } /* hide long affiliation text on mobile to avoid wrap */

	/* MOBILE HERO — full-bleed photo with text overlay.
	   Block flow (not flex-end bottom-anchored) so content starts after a
	   deliberate top padding instead of being pushed to the bottom of a
	   tall flex container. The top padding (130px) leaves room for the
	   helmets in the photo to be visible above the text without creating
	   the giant void the bottom-anchored layout produced. Gradient stops
	   are tuned to the new vertical proportions. */
	.iaff-hero {
		display: block;
		min-height: 0;
		padding: 130px 0 56px;
	}
	.iaff-hero-bg img {
		object-position: center 25%;
		filter: contrast(1.05) brightness(0.85) saturate(1.05);
		opacity: 1;
	}
	.iaff-hero-fade {
		background:
			/* Header transition shadow at the very top. */
			linear-gradient(180deg, rgba(10, 10, 10, 0.45) 0%, transparent 12%),
			/* Steep dark ramp: clean photo to ~14%, hard dark zone by 24%
			   (right before the eyebrow at ~25%), full dark by 60%.
			   This makes the text-band region a confident dark backdrop
			   regardless of what photo pixels sit behind it. */
			linear-gradient(180deg, transparent 8%, rgba(10, 10, 10, 0.15) 14%, rgba(10, 10, 10, 0.72) 24%, rgba(10, 10, 10, 0.92) 60%, rgba(10, 10, 10, 0.96) 90%, var(--iaff-bg) 100%),
			/* Soft red ember-glow at the bottom seam. */
			radial-gradient(ellipse 95% 22% at 50% 100%, rgba(225, 29, 29, 0.16), transparent 75%);
	}
	.iaff-hero-inner {
		max-width: 100%;
		padding: 0 20px;
		width: 100%;
		box-sizing: border-box;
	}
	.iaff-hero-eyebrow {
		margin-bottom: 16px;
		text-shadow: 0 1px 8px rgba(0, 0, 0, 0.85), 0 0 3px rgba(0, 0, 0, 0.65);
	}
	.iaff-hero h1 {
		font-size: clamp(40px, 11vw, 64px);
		line-height: 0.96;
		margin-bottom: 20px;
		letter-spacing: 0.005em;
		text-shadow: 0 2px 14px rgba(0, 0, 0, 0.75);
	}
	.iaff-hero .iaff-hero-deck {
		font-size: 15.5px;
		margin-bottom: 26px;
		text-shadow: 0 1px 6px rgba(0, 0, 0, 0.7);
	}
	/* Buttons side-by-side, centered as a group, auto-width — gives breathing
	   room on both sides instead of stretching edge-to-edge. Specificity
	   bumped (.iaff-hero .iaff-hero-actions) so the 480px column override
	   below doesn't win the cascade. */
	.iaff-hero .iaff-hero-actions {
		flex-direction: row;
		justify-content: center;
		align-items: center;
		gap: 12px;
	}
	.iaff-hero .iaff-hero-actions .iaff-btn {
		flex: 0 0 auto;
		padding: 13px 22px;
		font-size: 13px;
		text-align: center;
		letter-spacing: 0.02em;
	}

	.iaff-mission-strip { padding: 40px 0; }
	.iaff-mission-strip .iaff-mission-inner {
		grid-template-columns: 1fr;
		gap: 24px;
	}
	.iaff-mission-strip .iaff-mission-heading {
		border-left: none;
		border-top: 3px solid var(--iaff-red);
		padding-left: 0;
		padding-top: 12px;
	}

	.iaff-about-grid { grid-template-columns: 1fr; gap: 48px; }
	.iaff-leadership-grid { grid-template-columns: 1fr 1fr; gap: 16px; }

	.iaff-statement-inner {
		grid-template-columns: 1fr;
		gap: 32px;
	}
	.iaff-statement-text {
		border-left: none;
		border-top: 3px solid var(--iaff-red);
		padding-left: 0;
		padding-top: 24px;
	}

	.iaff-news-grid { grid-template-columns: 1fr; gap: 40px; }
	.iaff-event-row {
		grid-template-columns: 90px 1fr;
		gap: 20px;
		padding: 22px 20px;
	}
	.iaff-event-date { padding-right: 16px; }
	.iaff-event-date .iaff-day { font-size: 36px; }
	.iaff-event-info h4 { font-size: 16px; }
	.iaff-event-cta { display: none; }

	.iaff-section { padding: 72px 0; }
	.iaff-cta-strip .iaff-cta-inner {
		grid-template-columns: 1fr;
		gap: 32px;
	}
	.iaff-cta-strip { padding: 64px 0; }

	.iaff-footer-grid {
		grid-template-columns: 1fr;
		gap: 40px;
		margin-bottom: 56px;
	}
	.iaff-footer-bottom {
		flex-direction: column;
		gap: 14px;
		text-align: center;
		padding-top: 24px;
	}
	.iaff-site-footer { padding: 64px 0 28px; }

	/* News section mobile spacing — keep all three news sub-sections tight together.
	   Chained .iaff-section.iaff-section--news-* (0,2,0) so these survive the
	   .iaff-section { padding: 56px 0; } reset in the (max-width: 480px) block
	   that lives below this one. */
	.iaff-section.iaff-section--news-head { padding: 48px 0 24px; }
	.iaff-section--news-head .iaff-section-head { margin-bottom: 32px; }
	.iaff-news-loop-wrapper { margin: 0; }
	.iaff-section.iaff-section--news-cta { padding: 24px 0 48px; }
}

@media (max-width: 480px) {
	.iaff-container { padding-left: 16px; padding-right: 16px; }
	.iaff-leadership-grid { grid-template-columns: 1fr; }
	.iaff-hero-actions { flex-direction: column; align-items: stretch; }
	.iaff-btn { text-align: center; }
	.iaff-section { padding: 56px 0; }
	.iaff-memorial-block { padding: 64px 0; }
	.iaff-statement-block { padding: 64px 0; }
}

/* ==================================================================
   IN MEMORIAM PAGE — Firefighter Christopher Johanson dedication.
   Scoped under .iaff-memorial-page so styles don't leak to other pages.
   ================================================================== */

/* ----- HERO ----- */
.iaff-memorial-page .iaff-mem-hero {
	position: relative;
	min-height: 68vh;
	padding: 120px 0 56px;
	overflow: hidden;
	background: #000;
	isolation: isolate;
}
.iaff-mem-hero-bg {
	position: absolute;
	inset: 0;
	z-index: 0;
}
.iaff-mem-hero-bg img {
	width: 100%;
	height: 100%;
	object-fit: cover;
	object-position: center 40%;
	filter: contrast(1.08) brightness(0.78) saturate(1.05);
	opacity: 0.92;
}
/* "Burned-through" vignette: a soft elliptical pocket of darkness centered on the
   text band, feathering out so the image's flame/flag/silhouette stays visible at
   the edges. Bottom seam carries a faint red ember-glow before fading to page bg.
   Reads as a deliberate cinematic frame rather than a flat gray wash. */
.iaff-mem-hero-fade {
	position: absolute;
	inset: 0;
	z-index: 1;
	background:
		radial-gradient(ellipse 62% 48% at 50% 52%, rgba(0, 0, 0, 0.82) 0%, rgba(0, 0, 0, 0.55) 45%, rgba(0, 0, 0, 0.18) 78%, transparent 100%),
		linear-gradient(180deg, rgba(10, 10, 10, 0.08) 0%, rgba(10, 10, 10, 0.0) 35%, rgba(10, 10, 10, 0.45) 88%, var(--iaff-bg) 100%),
		radial-gradient(ellipse 90% 30% at 50% 100%, rgba(225, 29, 29, 0.16), transparent 70%);
}
.iaff-mem-hero-inner {
	position: relative;
	z-index: 2;
	text-align: center;
	max-width: 920px;
}
.iaff-mem-hero-inner .iaff-eyebrow {
	color: var(--iaff-red);
	margin-bottom: 28px;
	font-size: 14px;
	letter-spacing: 0.36em;
}
.iaff-mem-name {
	font-family: 'Bebas Neue', system-ui, sans-serif;
	font-size: clamp(40px, 6.2vw, 84px);
	line-height: 1.0;
	letter-spacing: 0.005em;
	color: var(--iaff-text);
	margin: 0 0 24px;
	font-weight: 400;
	text-shadow: 0 2px 16px rgba(0, 0, 0, 0.6);
}
.iaff-mem-name-nick {
	color: var(--iaff-red);
}
.iaff-mem-years {
	font-family: 'Bebas Neue', system-ui, sans-serif;
	font-size: clamp(18px, 2.2vw, 26px);
	letter-spacing: 0.28em;
	color: var(--iaff-text-soft);
	margin: 0 0 36px;
}
.iaff-mem-meta {
	display: inline-flex;
	flex-wrap: wrap;
	justify-content: center;
	align-items: center;
	gap: 12px 16px;
	font-family: Inter, sans-serif;
	font-size: 14px;
	font-weight: 600;
	letter-spacing: 0.12em;
	text-transform: uppercase;
	color: var(--iaff-text-soft);
	padding-top: 24px;
	border-top: 1px solid rgba(225, 29, 29, 0.4);
}
.iaff-mem-meta-item strong {
	color: var(--iaff-red);
	font-weight: 700;
}
.iaff-mem-meta-sep {
	color: var(--iaff-text-dim);
	font-size: 11px;
}

/* ----- BIO ----- */
/* Tighter top — the hero ends with a meta line, so bio doesn't need a full 110px
   stacked on top of the hero's bottom padding. Override .iaff-section here. */
.iaff-memorial-page .iaff-mem-bio {
	background: var(--iaff-bg);
	padding-top: 64px;
}
.iaff-mem-bio-grid {
	display: grid;
	grid-template-columns: 380px 1fr;
	gap: 64px;
	align-items: center;
}
.iaff-mem-portrait {
	margin: 0;
	position: relative;
	background: var(--iaff-bg-2);
	border: 1px solid var(--iaff-line);
	padding: 14px;
	aspect-ratio: 1 / 1;
	box-shadow:
		0 0 0 1px rgba(225, 29, 29, 0.18),
		0 24px 60px -20px rgba(0, 0, 0, 0.8);
}
.iaff-mem-portrait::before {
	content: '';
	position: absolute;
	inset: -6px;
	border: 1px solid rgba(225, 29, 29, 0.25);
	pointer-events: none;
}
.iaff-mem-portrait img {
	width: 100%;
	height: 100%;
	object-fit: cover;
	display: block;
}
.iaff-mem-bio-text h2 {
	font-size: clamp(28px, 3.6vw, 44px);
	margin: 14px 0 22px;
	color: var(--iaff-text);
	font-weight: 800;
	letter-spacing: -0.01em;
	line-height: 1.12;
}
.iaff-mem-bio-text p {
	font-size: 16.5px;
	line-height: 1.75;
	color: var(--iaff-text-soft);
	margin: 0 0 16px;
}
.iaff-mem-bio-text p em {
	color: var(--iaff-text);
	font-style: italic;
}
.iaff-mem-family {
	margin-top: 22px !important;
	padding-top: 22px;
	border-top: 1px solid var(--iaff-line);
	font-size: 17px !important;
	color: var(--iaff-text) !important;
}

/* ----- FULL-BLEED TRIBUTE ----- */
.iaff-mem-tribute {
	background: var(--iaff-bg);
	padding: 0;
	margin: 0;
}
.iaff-mem-tribute-figure {
	margin: 0;
	position: relative;
	aspect-ratio: 16 / 9;
	overflow: hidden;
}
.iaff-mem-tribute-figure img {
	width: 100%;
	height: 100%;
	object-fit: cover;
	object-position: center;
	display: block;
}
.iaff-mem-tribute-figure::after {
	content: '';
	position: absolute;
	inset: 0;
	background: linear-gradient(180deg, rgba(10, 10, 10, 0.35) 0%, transparent 30%, transparent 70%, rgba(10, 10, 10, 0.85) 100%);
	pointer-events: none;
}
.iaff-mem-tribute-caption {
	position: absolute;
	left: 0;
	right: 0;
	bottom: 32px;
	text-align: center;
	font-family: 'Bebas Neue', system-ui, sans-serif;
	font-size: clamp(20px, 2.4vw, 30px);
	letter-spacing: 0.22em;
	color: var(--iaff-text);
	text-transform: uppercase;
	text-shadow: 0 2px 16px rgba(0, 0, 0, 0.8);
	z-index: 2;
}

/* ----- LAYING TO REST ----- */
.iaff-memorial-page .iaff-mem-rest {
	background: var(--iaff-bg-2);
}
.iaff-mem-rest-honors {
	display: grid;
	grid-template-columns: repeat(3, 1fr);
	gap: 24px;
	margin: 0 auto 56px;
	max-width: 1100px;
	text-align: left;
}
.iaff-mem-honor {
	background: var(--iaff-bg);
	border: 1px solid var(--iaff-line);
	padding: 26px 24px;
	position: relative;
}
.iaff-mem-honor::before {
	content: '';
	position: absolute;
	top: 0;
	left: 0;
	width: 36px;
	height: 2px;
	background: var(--iaff-red);
}
.iaff-mem-honor-label {
	font-family: Inter, sans-serif;
	font-size: 11px;
	font-weight: 700;
	letter-spacing: 0.22em;
	text-transform: uppercase;
	color: var(--iaff-red);
	margin-bottom: 14px;
}
.iaff-mem-honor-body {
	font-family: Inter, sans-serif;
	font-size: 14px;
	line-height: 1.7;
	color: var(--iaff-text-soft);
}
.iaff-mem-procession-grid {
	display: grid;
	grid-template-columns: repeat(4, 1fr);
	gap: 16px;
	margin-top: 8px;
}
.iaff-mem-procession-grid figure {
	margin: 0;
	aspect-ratio: 4 / 5;
	overflow: hidden;
	background: var(--iaff-bg-3);
	border: 1px solid var(--iaff-line);
}
.iaff-mem-procession-grid img {
	width: 100%;
	height: 100%;
	object-fit: cover;
	display: block;
	transition: transform 0.5s ease;
}
.iaff-mem-procession-grid figure:hover img {
	transform: scale(1.03);
}

/* ----- MUTUAL AID ----- */
.iaff-memorial-page .iaff-mem-mutual {
	background: var(--iaff-bg);
}
.iaff-mem-mutual .iaff-section-head {
	text-align: center;
	margin-left: auto;
	margin-right: auto;
}
.iaff-mem-mutual .iaff-section-head .iaff-deck {
	margin-left: auto;
	margin-right: auto;
}
.iaff-mem-mutual-grid {
	display: grid;
	grid-template-columns: 1fr 1fr;
	gap: 48px;
	max-width: 980px;
	margin: 0 auto;
}
.iaff-mem-mutual-day {
	background: var(--iaff-bg-2);
	border: 1px solid var(--iaff-line);
	padding: 32px 28px;
	border-top: 2px solid var(--iaff-red);
}
.iaff-mem-mutual-date {
	font-family: 'Bebas Neue', system-ui, sans-serif;
	font-size: 18px;
	letter-spacing: 0.22em;
	color: var(--iaff-text);
	margin-bottom: 22px;
	padding-bottom: 14px;
	border-bottom: 1px solid var(--iaff-line);
}
.iaff-mem-mutual-list {
	list-style: none;
	padding: 0;
	margin: 0;
	display: flex;
	flex-direction: column;
	gap: 14px;
}
.iaff-mem-mutual-list li {
	font-family: Inter, sans-serif;
	font-size: 14.5px;
	line-height: 1.55;
	color: var(--iaff-text-soft);
	padding-left: 0;
}
.iaff-mem-mutual-station {
	display: inline-block;
	font-family: 'Bebas Neue', system-ui, sans-serif;
	font-size: 12px;
	letter-spacing: 0.18em;
	color: var(--iaff-red);
	background: rgba(225, 29, 29, 0.08);
	padding: 4px 10px;
	margin-right: 12px;
	border: 1px solid rgba(225, 29, 29, 0.35);
	border-radius: 2px;
	text-transform: uppercase;
	vertical-align: middle;
}
.iaff-mem-photo-credit {
	text-align: center;
	font-family: Inter, sans-serif;
	font-size: 12px;
	color: var(--iaff-text-dim);
	letter-spacing: 0.1em;
	text-transform: uppercase;
	margin-top: 40px;
}

/* ----- GOFUNDME ----- */
.iaff-memorial-page .iaff-mem-gofundme {
	background: var(--iaff-bg-2);
	text-align: center;
}
.iaff-mem-fund-stats {
	display: flex;
	justify-content: center;
	gap: 80px;
	margin: 0 auto 40px;
	padding: 32px 0;
}
.iaff-mem-fund-stat {
	text-align: center;
}
.iaff-mem-fund-num {
	font-family: 'Bebas Neue', system-ui, sans-serif;
	font-size: clamp(48px, 6vw, 80px);
	color: var(--iaff-red);
	line-height: 1;
	letter-spacing: 0.01em;
}
.iaff-mem-fund-label {
	font-family: Inter, sans-serif;
	font-size: 12px;
	font-weight: 700;
	letter-spacing: 0.24em;
	text-transform: uppercase;
	color: var(--iaff-text-soft);
	margin-top: 12px;
}

/* ----- CLOSING QUOTE ----- */
.iaff-mem-quote {
	background: var(--iaff-bg);
	padding: 120px 0;
	text-align: center;
	position: relative;
}
.iaff-mem-quote .iaff-container {
	max-width: 760px;
	position: relative;
}
.iaff-mem-quote-mark {
	font-family: 'Bebas Neue', serif;
	font-size: 160px;
	color: rgba(225, 29, 29, 0.22);
	line-height: 1;
	margin-bottom: -30px;
	height: 80px;
}
.iaff-mem-quote-text {
	font-family: 'Bebas Neue', system-ui, sans-serif;
	font-size: clamp(36px, 5vw, 64px);
	color: var(--iaff-text);
	line-height: 1.15;
	letter-spacing: 0.015em;
	margin: 0 0 32px;
	font-weight: 400;
	border: 0;
	padding: 0;
}
.iaff-mem-quote-attr {
	font-family: Inter, sans-serif;
	font-size: 13px;
	letter-spacing: 0.24em;
	text-transform: uppercase;
	color: var(--iaff-red);
	font-weight: 700;
}

/* ----- FIRE SERVICE FAMILY (closing) ----- */
.iaff-memorial-page .iaff-mem-family-fs {
	background: var(--iaff-bg-2);
}
.iaff-mem-family-fs .iaff-section-head {
	text-align: center;
	margin-left: auto;
	margin-right: auto;
}
.iaff-mem-family-fs-body {
	max-width: 720px;
	margin: 0 auto;
	text-align: center;
}
.iaff-mem-family-fs-body p {
	font-size: 17px;
	line-height: 1.75;
	color: var(--iaff-text-soft);
	margin: 0 0 32px;
}
.iaff-mem-family-fs-links {
	display: flex;
	flex-wrap: wrap;
	justify-content: center;
	gap: 14px;
}

/* ----- RESPONSIVE ----- */
@media (max-width: 1024px) {
	.iaff-mem-bio-grid { grid-template-columns: 1fr; gap: 40px; }
	.iaff-mem-portrait { max-width: 380px; margin: 0 auto; }
	.iaff-mem-procession-grid { grid-template-columns: repeat(2, 1fr); }
}

@media (max-width: 768px) {
	.iaff-memorial-page .iaff-mem-hero { min-height: 60vh; padding: 100px 0 72px; }
	.iaff-mem-meta { flex-direction: column; gap: 8px; }
	.iaff-mem-meta-sep { display: none; }
	.iaff-mem-rest-honors { grid-template-columns: 1fr; }
	.iaff-mem-mutual-grid { grid-template-columns: 1fr; gap: 24px; }
	.iaff-mem-fund-stats { gap: 40px; padding: 16px 0; }
	.iaff-mem-quote { padding: 80px 0; }
	.iaff-mem-quote-mark { font-size: 110px; height: 56px; margin-bottom: -22px; }
	.iaff-mem-tribute-figure { aspect-ratio: 4 / 3; }
	.iaff-mem-tribute-caption { bottom: 18px; font-size: 16px; letter-spacing: 0.18em; }
}

@media (max-width: 480px) {
	.iaff-memorial-page .iaff-mem-hero { padding: 80px 0 60px; min-height: 56vh; }
	.iaff-mem-procession-grid { grid-template-columns: 1fr; gap: 12px; }
	.iaff-mem-procession-grid figure { aspect-ratio: 4 / 3; }
	.iaff-mem-fund-stats { flex-direction: column; gap: 28px; }
	.iaff-mem-family-fs-links .iaff-btn { width: 100%; text-align: center; }
}
/* ==================================================================
   IAFF Local 2956 — v1.0 redesign layer
   Loads after theme.css. Same brand (black · fire red · white,
   Bebas Neue display), elevated: cinematic heroes, glass header,
   scroll reveals, spotlight cards, refined type and spacing.
   Motion is disabled under prefers-reduced-motion.
   ================================================================== */

:root {
	--iaff-ease: cubic-bezier(0.16, 1, 0.3, 1);
	--iaff-ease-io: cubic-bezier(0.65, 0, 0.35, 1);
	--iaff-gutter: clamp(20px, 4vw, 48px);
	--iaff-max: 1320px;
	--iaff-card: linear-gradient(180deg, rgba(255,255,255,0.035), rgba(255,255,255,0.01));
	--iaff-border: rgba(255, 255, 255, 0.08);
	--iaff-border-strong: rgba(255, 255, 255, 0.16);
	--iaff-head: 'Inter Tight', 'Inter', system-ui, sans-serif;
}

html { scroll-behavior: smooth; scroll-padding-top: 110px; }
body { overflow-x: clip; background: var(--iaff-bg); }
::selection { background: var(--iaff-red); color: #fff; }
:focus-visible { outline: 2px solid var(--iaff-red-2); outline-offset: 3px; }
body::before { opacity: 0.035; }

h1, h2, h3, h4,
.iaff-section-head h2,
.iaff-single-content h2 { font-family: var(--iaff-head); }

.iaff-container {
	max-width: var(--iaff-max);
	padding-left: var(--iaff-gutter);
	padding-right: var(--iaff-gutter);
	box-sizing: border-box;
}

.iaff-skip {
	position: fixed; left: 16px; top: -60px; z-index: 10001;
	background: var(--iaff-red); color: #fff; padding: 12px 18px; font-weight: 700;
	text-decoration: none; transition: top 0.2s;
}
.iaff-skip:focus { top: 16px; }

/* ---------- Scroll progress ---------- */
.iaff-progress {
	position: fixed; inset: 0 0 auto 0; height: 2px; z-index: 1002; pointer-events: none;
}
.iaff-progress span {
	display: block; height: 100%; transform-origin: 0 50%; transform: scaleX(0);
	background: linear-gradient(90deg, var(--iaff-red-deep), var(--iaff-red-2));
	box-shadow: 0 0 12px rgba(255, 45, 45, 0.6);
}
body.admin-bar .iaff-progress { top: 32px; }

/* ==================================================================
   MASTHEAD — fixed, transparent over the hero, glass once scrolled
   ================================================================== */
.wp-site-blocks > header.wp-block-template-part { position: static; margin: 0; }
.iaff-masthead {
	position: fixed; top: 0; left: 0; right: 0; z-index: 1000;
	transition: transform 0.5s var(--iaff-ease), background 0.4s ease, box-shadow 0.4s ease;
}
body.admin-bar .iaff-masthead { top: 32px; }
.iaff-masthead.is-hidden { transform: translateY(-100%); }

.iaff-util-bar {
	background: transparent;
	border-bottom: 1px solid rgba(255,255,255,0.08);
	padding: 0;
	font-size: 11.5px;
	letter-spacing: 0.04em;
	max-height: 40px;
	overflow: hidden;
	transition: max-height 0.45s var(--iaff-ease), opacity 0.3s ease, border-color 0.3s;
}
.iaff-util-bar .iaff-util-inner { min-height: 38px; }
.iaff-util-bar .iaff-iaff-label {
	display: inline-flex; align-items: center; gap: 10px;
	font-weight: 600; letter-spacing: 0.14em; text-transform: uppercase; font-size: 10.5px;
	color: rgba(255,255,255,0.86);
}
.iaff-pulse {
	width: 7px; height: 7px; border-radius: 50%; background: var(--iaff-red-2); position: relative; flex: none;
}
.iaff-pulse::after {
	content: ''; position: absolute; inset: 0; border-radius: 50%; background: var(--iaff-red-2);
	animation: iaff-pulse 2.2s var(--iaff-ease) infinite;
}
@keyframes iaff-pulse { 0% { transform: scale(1); opacity: 0.7; } 100% { transform: scale(3.2); opacity: 0; } }
.iaff-util-right { display: inline-flex; align-items: center; gap: 14px; color: rgba(255,255,255,0.6); }
.iaff-util-right a { color: #fff; text-decoration: none; font-weight: 600; }
.iaff-util-right a:hover { color: var(--iaff-red-2); }
.iaff-util-em a { color: var(--iaff-red-2); }
.iaff-util-sep { width: 1px; height: 12px; background: rgba(255,255,255,0.2); }

.iaff-site-header {
	position: relative; top: auto; background: transparent; padding: 0;
	transition: background 0.4s ease;
}
.iaff-site-header .iaff-nav-inner { min-height: 84px; transition: min-height 0.45s var(--iaff-ease); }
.iaff-brand-logo { height: 54px; transition: height 0.45s var(--iaff-ease); filter: drop-shadow(0 2px 10px rgba(0,0,0,0.4)); }

.iaff-masthead.is-scrolled { background: rgba(10, 10, 10, 0.72); box-shadow: 0 10px 40px rgba(0,0,0,0.35); }
@supports (backdrop-filter: blur(1px)) {
	.iaff-masthead.is-scrolled { background: rgba(10, 10, 10, 0.6); backdrop-filter: saturate(160%) blur(18px); -webkit-backdrop-filter: saturate(160%) blur(18px); }
}
.iaff-masthead.is-scrolled .iaff-util-bar { max-height: 0; opacity: 0; border-color: transparent; }
.iaff-masthead.is-scrolled .iaff-nav-inner { min-height: 68px; }
.iaff-masthead.is-scrolled .iaff-brand-logo { height: 44px; }
.iaff-masthead.is-scrolled::after {
	content: ''; position: absolute; left: 0; right: 0; bottom: 0; height: 1px;
	background: linear-gradient(90deg, transparent, rgba(225,29,29,0.5), transparent);
}

.iaff-nav { display: flex; align-items: center; gap: 36px; }
.iaff-nav-links { gap: 30px; font-size: 13px; letter-spacing: 0.08em; text-transform: uppercase; font-weight: 600; }
.iaff-nav-links a {
	position: relative; color: rgba(255,255,255,0.78); padding: 8px 0; border: 0 !important;
	transition: color 0.25s ease;
}
.iaff-nav-links a::after {
	content: ''; position: absolute; left: 0; right: 0; bottom: 0; height: 2px; background: var(--iaff-red);
	transform: scaleX(0); transform-origin: right; transition: transform 0.45s var(--iaff-ease);
}
.iaff-nav-links a:hover, .iaff-nav-links a[aria-current] { color: #fff; }
.iaff-nav-links a:hover::after, .iaff-nav-links a[aria-current]::after { transform: scaleX(1); transform-origin: left; }
.iaff-nav-contact { padding: 13px 24px !important; font-size: 12px !important; }

/* Menu toggle */
.iaff-menu-toggle {
	display: none; width: 48px; height: 48px; border: 1px solid var(--iaff-border-strong); border-radius: 50%;
	background: rgba(10,10,10,0.35); cursor: pointer; padding: 0; position: relative; z-index: 1100;
	align-items: center; justify-content: center; transition: border-color 0.3s, background 0.3s;
}
.iaff-menu-toggle:hover { border-color: var(--iaff-red); }
.iaff-menu-lines { position: relative; width: 20px; height: 10px; display: block; }
.iaff-menu-lines i {
	position: absolute; left: 0; width: 100%; height: 2px; background: #fff; border-radius: 2px;
	transition: transform 0.5s var(--iaff-ease), top 0.5s var(--iaff-ease), width 0.4s var(--iaff-ease);
}
.iaff-menu-lines i:first-child { top: 0; }
.iaff-menu-lines i:last-child { top: 8px; width: 65%; }
.iaff-menu-open .iaff-menu-toggle { background: var(--iaff-red); border-color: var(--iaff-red); }
.iaff-menu-open .iaff-menu-lines i:first-child { top: 4px; transform: rotate(45deg); }
.iaff-menu-open .iaff-menu-lines i:last-child { top: 4px; width: 100%; transform: rotate(-45deg); }

/* Full-screen overlay menu */
.iaff-overlay {
	position: fixed; inset: 0; z-index: 990; background: #070707;
	clip-path: circle(0% at calc(100% - 44px) 60px);
	transition: clip-path 0.8s var(--iaff-ease-io), visibility 0s linear 0.8s;
	visibility: hidden; overflow-y: auto;
	display: flex; flex-direction: column; justify-content: center;
}
.iaff-overlay::before {
	content: ''; position: absolute; inset: 0; pointer-events: none;
	background:
		radial-gradient(ellipse 70% 50% at 100% 0%, rgba(225,29,29,0.22), transparent 60%),
		radial-gradient(ellipse 60% 40% at 0% 100%, rgba(138,8,8,0.25), transparent 60%);
}
.iaff-menu-open .iaff-overlay { clip-path: circle(150% at calc(100% - 44px) 60px); visibility: visible; transition: clip-path 0.8s var(--iaff-ease-io), visibility 0s; }
.iaff-menu-open { overflow: hidden; }
.iaff-menu-open .iaff-masthead { background: transparent !important; box-shadow: none !important; backdrop-filter: none !important; transform: none !important; }
.iaff-menu-open .iaff-masthead::after { display: none; }
.iaff-overlay-inner { position: relative; width: 100%; padding-top: 120px; padding-bottom: 48px; }
.iaff-overlay-links { list-style: none; margin: 0 0 48px; padding: 0; counter-reset: none; }
.iaff-overlay-links li { overflow: hidden; border-bottom: 1px solid rgba(255,255,255,0.07); }
.iaff-overlay-links a {
	display: flex; align-items: baseline; gap: 18px; padding: 12px 0;
	font-family: 'Bebas Neue', sans-serif; font-size: clamp(40px, 11vw, 72px); line-height: 1; letter-spacing: 0.01em;
	color: #fff; text-decoration: none;
	transform: translateY(105%); transition: transform 0.7s var(--iaff-ease), color 0.25s;
}
.iaff-overlay-links small { font-family: 'Inter', sans-serif; font-size: 11px; letter-spacing: 0.2em; color: var(--iaff-red-2); font-weight: 700; }
.iaff-overlay-links a:hover, .iaff-overlay-links a[aria-current] { color: var(--iaff-red-2); }
.iaff-menu-open .iaff-overlay-links a { transform: none; }
.iaff-overlay-links li:nth-child(1) a { transition-delay: 0.18s; }
.iaff-overlay-links li:nth-child(2) a { transition-delay: 0.23s; }
.iaff-overlay-links li:nth-child(3) a { transition-delay: 0.28s; }
.iaff-overlay-links li:nth-child(4) a { transition-delay: 0.33s; }
.iaff-overlay-links li:nth-child(5) a { transition-delay: 0.38s; }
.iaff-overlay-links li:nth-child(6) a { transition-delay: 0.43s; }
.iaff-overlay-links li:nth-child(7) a { transition-delay: 0.48s; }
.iaff-overlay-foot {
	display: grid; grid-template-columns: repeat(3, 1fr); gap: 24px; font-size: 14px; color: var(--iaff-text-soft);
	opacity: 0; transform: translateY(16px); transition: opacity 0.6s ease 0.5s, transform 0.6s var(--iaff-ease) 0.5s;
}
.iaff-menu-open .iaff-overlay-foot { opacity: 1; transform: none; }
.iaff-overlay-foot .iaff-eyebrow { display: block; font-size: 10.5px; margin-bottom: 6px; }
.iaff-overlay-foot a { color: #fff; text-decoration: none; font-weight: 600; }

/* ==================================================================
   BUTTONS — sharp, tracked, with a fill-sweep on hover
   ================================================================== */
.iaff-btn {
	position: relative; display: inline-flex; align-items: center; justify-content: center; gap: 10px;
	padding: 17px 32px; font-size: 12.5px; font-weight: 700; letter-spacing: 0.14em; text-transform: uppercase;
	border-radius: 0; overflow: hidden; isolation: isolate; text-decoration: none; line-height: 1.2;
	transition: color 0.45s var(--iaff-ease), border-color 0.45s var(--iaff-ease), transform 0.35s var(--iaff-ease), box-shadow 0.45s ease;
	will-change: transform;
}
.iaff-btn > span { position: relative; z-index: 1; }
.iaff-btn::before {
	content: ''; position: absolute; inset: 0; z-index: 0;
	transform: scaleY(0); transform-origin: bottom; transition: transform 0.5s var(--iaff-ease);
}
.iaff-btn:hover::before { transform: scaleY(1); }
.iaff-btn-primary { background: var(--iaff-red); color: #fff; box-shadow: 0 10px 30px -10px rgba(225,29,29,0.7); }
.iaff-btn-primary::before { background: #fff; }
.iaff-btn-primary:hover { background: var(--iaff-red); color: var(--iaff-red); box-shadow: 0 16px 40px -12px rgba(225,29,29,0.8); }
.iaff-btn-ghost, .iaff-btn-outline-light {
	background: rgba(255,255,255,0.02); color: #fff; border: 1px solid rgba(255,255,255,0.28);
}
@supports (backdrop-filter: blur(1px)) { .iaff-btn-ghost { backdrop-filter: blur(6px); } }
.iaff-btn-ghost::before, .iaff-btn-outline-light::before { background: #fff; }
.iaff-btn-ghost:hover, .iaff-btn-outline-light:hover { background: transparent; color: var(--iaff-bg); border-color: #fff; }
.iaff-btn-light { background: #fff; color: var(--iaff-red-deep); }
.iaff-btn-light::before { background: #0a0a0a; }
.iaff-btn-light:hover { color: #fff; }

/* ==================================================================
   REVEAL SYSTEM
   ================================================================== */
.iaff-js [data-reveal] {
	opacity: 0; transform: translate3d(0, 34px, 0);
	transition: opacity 1s var(--iaff-ease), transform 1.1s var(--iaff-ease);
	transition-delay: var(--d, 0ms);
}
.iaff-js [data-reveal].is-in { opacity: 1; transform: none; }
.iaff-js [data-reveal="clip"] { opacity: 1; transform: none; clip-path: inset(100% 0 0 0); transition: clip-path 1.4s var(--iaff-ease-io); }
.iaff-js [data-reveal="clip"].is-in { clip-path: inset(0 0 0 0); }
.iaff-js [data-reveal="clip"] img { transform: scale(1.18); transition: transform 1.8s var(--iaff-ease); }
.iaff-js [data-reveal="clip"].is-in img { transform: scale(1); }

/* ==================================================================
   HOME HERO
   ================================================================== */
.iaff-hero.iaff-hero--v2 {
	min-height: 100vh; min-height: 100svh; padding: 180px 0 150px; display: flex; align-items: center;
}
.iaff-hero--v2 .iaff-hero-media { position: absolute; inset: -6% 0; will-change: transform; }
.iaff-hero--v2 .iaff-hero-bg picture, .iaff-hero--v2 .iaff-hero-bg img { width: 100%; height: 100%; display: block; }
.iaff-hero--v2 .iaff-hero-bg img {
	object-fit: cover; object-position: center 40%; opacity: 1;
	filter: contrast(1.08) brightness(0.62) saturate(0.95);
	transform: scale(1.14); transition: transform 3.2s var(--iaff-ease);
}
.iaff-ready .iaff-hero--v2 .iaff-hero-bg img { transform: scale(1.02); }
.iaff-hero--v2 .iaff-hero-fade {
	background:
		linear-gradient(90deg, rgba(5,5,5,0.92) 0%, rgba(5,5,5,0.62) 38%, rgba(5,5,5,0.2) 70%, rgba(5,5,5,0.35) 100%),
		linear-gradient(180deg, rgba(5,5,5,0.7) 0%, transparent 22%, transparent 62%, var(--iaff-bg) 100%),
		radial-gradient(ellipse 80% 40% at 15% 100%, rgba(225,29,29,0.28), transparent 70%);
}
.iaff-hero-grid, .iaff-phero-grid {
	position: absolute; inset: 0; z-index: 1; pointer-events: none; opacity: 0.5;
	background-image: linear-gradient(90deg, rgba(255,255,255,0.045) 1px, transparent 1px);
	background-size: calc((min(100vw, var(--iaff-max)) - 2 * var(--iaff-gutter)) / 4) 100%;
	background-position: center;
	-webkit-mask-image: linear-gradient(180deg, transparent, #000 25%, #000 70%, transparent);
	mask-image: linear-gradient(180deg, transparent, #000 25%, #000 70%, transparent);
}
.iaff-hero--v2 .iaff-hero-inner { max-width: var(--iaff-max); }
.iaff-hero--v2 .iaff-hero-eyebrow { font-size: 12px; letter-spacing: 0.3em; margin-bottom: 30px; color: #fff; }
.iaff-hero--v2 .iaff-hero-eyebrow::before { width: 44px; background: var(--iaff-red-2); }
.iaff-hero--v2 h1 {
	font-size: clamp(56px, 10.4vw, 168px); line-height: 0.88; letter-spacing: 0.005em; margin: 0 0 34px;
	text-shadow: none;
}
.iaff-line { display: block; overflow: hidden; padding-bottom: 0.04em; }
.iaff-line > span { display: inline-block; }
.iaff-hero--v2 .iaff-red {
	color: transparent;
	background: linear-gradient(100deg, #ff3b3b 0%, #e11d1d 45%, #ff6a3d 100%);
	-webkit-background-clip: text; background-clip: text;
}
.iaff-hero--v2 .iaff-hero-deck { font-size: clamp(17px, 1.5vw, 21px); max-width: 560px; color: rgba(255,255,255,0.82); margin-bottom: 42px; }
.iaff-hero--v2 .iaff-hero-actions { gap: 14px; }

/* intro choreography (only when JS is running) */
.iaff-js .iaff-hero--v2 .iaff-hero-eyebrow,
.iaff-js .iaff-hero--v2 .iaff-hero-deck,
.iaff-js .iaff-hero--v2 .iaff-hero-actions,
.iaff-js .iaff-hero--v2 .iaff-hero-bottom { opacity: 0; transform: translateY(20px); transition: opacity 1s var(--iaff-ease), transform 1.1s var(--iaff-ease); }
.iaff-js .iaff-line > span { transform: translateY(105%); transition: transform 1.2s var(--iaff-ease); }
.iaff-ready .iaff-hero--v2 .iaff-hero-eyebrow { opacity: 1; transform: none; transition-delay: 0.15s; }
.iaff-ready .iaff-line > span { transform: none; }
.iaff-ready .iaff-line:nth-child(1) > span { transition-delay: 0.25s; }
.iaff-ready .iaff-line:nth-child(2) > span { transition-delay: 0.37s; }
.iaff-ready .iaff-line:nth-child(3) > span { transition-delay: 0.49s; }
.iaff-ready .iaff-hero--v2 .iaff-hero-deck { opacity: 1; transform: none; transition-delay: 0.75s; }
.iaff-ready .iaff-hero--v2 .iaff-hero-actions { opacity: 1; transform: none; transition-delay: 0.9s; }
.iaff-ready .iaff-hero--v2 .iaff-hero-bottom { opacity: 1; transform: none; transition-delay: 1.1s; }

.iaff-hero-bottom {
	position: absolute; left: 0; right: 0; bottom: 36px; z-index: 2;
	display: flex; justify-content: space-between; align-items: center; gap: 20px;
	font-size: 11px; letter-spacing: 0.24em; text-transform: uppercase; color: rgba(255,255,255,0.6);
}
.iaff-hero-scroll { display: inline-flex; align-items: center; gap: 14px; color: #fff; text-decoration: none; font-weight: 600; }
.iaff-hero-scroll-line { width: 1px; height: 46px; background: rgba(255,255,255,0.18); position: relative; overflow: hidden; }
.iaff-hero-scroll-line::after {
	content: ''; position: absolute; left: 0; top: -50%; width: 100%; height: 50%; background: var(--iaff-red-2);
	animation: iaff-drip 2s var(--iaff-ease-io) infinite;
}
@keyframes iaff-drip { 0% { top: -50%; } 100% { top: 100%; } }

/* ==================================================================
   STATS BAND
   ================================================================== */
.iaff-stats { position: relative; background: var(--iaff-bg); padding: 0 0 clamp(44px, 6vw, 82px); }
.iaff-stats-grid { display: grid; grid-template-columns: repeat(4, 1fr); border-top: 1px solid var(--iaff-border); }
.iaff-stat {
	position: relative; padding: 40px 28px 8px 0; isolation: isolate;
	border-right: 1px solid var(--iaff-border); padding-left: 28px;
}
.iaff-stat:first-child { padding-left: 0; }
.iaff-stat:last-child { border-right: 0; }
.iaff-stat::before {
	content: ''; position: absolute; top: -1px; left: 0; width: 100%; height: 2px; background: var(--iaff-red);
	transform: scaleX(0); transform-origin: left; transition: transform 1.2s var(--iaff-ease) calc(var(--d, 0ms) + 200ms);
}
.iaff-stat.is-in::before, html:not(.iaff-js) .iaff-stat::before { transform: scaleX(1); }
.iaff-stat-num {
	font-family: 'Bebas Neue', sans-serif; font-size: clamp(52px, 6.4vw, 96px); line-height: 0.95; color: #fff;
	font-variant-numeric: tabular-nums; letter-spacing: 0.01em;
}
.iaff-stat-label { margin-top: 10px; font-size: 13px; color: var(--iaff-text-dim); letter-spacing: 0.04em; max-width: 220px; line-height: 1.5; }

/* ==================================================================
   MISSION — oversized statement, words light up on scroll
   ================================================================== */
.iaff-mission-v2 { padding: clamp(52px, 7.5vw, 112px) 0; background: radial-gradient(ellipse 60% 70% at 85% 50%, rgba(225,29,29,0.08), transparent 70%), var(--iaff-bg); border-top: 1px solid var(--iaff-border); }
.iaff-mission-v2 .iaff-container { display: grid; grid-template-columns: 220px 1fr; gap: 48px; align-items: start; }
.iaff-mission-v2 .iaff-mission-heading {
	font-family: 'Inter', sans-serif; font-size: 12px; font-weight: 700; letter-spacing: 0.26em; text-transform: uppercase;
	color: var(--iaff-red-2); padding-top: 16px; display: flex; align-items: center; gap: 14px;
}
.iaff-mission-v2 .iaff-mission-heading::before { content: ''; width: 32px; height: 2px; background: var(--iaff-red); }
.iaff-mission-text {
	font-family: var(--iaff-head); font-size: clamp(28px, 4vw, 60px); line-height: 1.12; font-weight: 600;
	letter-spacing: -0.025em; color: #fff; margin: 0; max-width: 1000px;
}
.iaff-mission-text.is-split .iaff-w { color: rgba(255,255,255,0.14); transition: color 0.5s ease; }
.iaff-mission-text.is-split .iaff-w.is-lit { color: #fff; }

/* ==================================================================
   SECTIONS — shared head styling
   ================================================================== */
.iaff-section { padding: clamp(52px, 7vw, 108px) 0; position: relative; }
.iaff-section-alt { background: linear-gradient(180deg, #121212, #0d0d0d); border-color: var(--iaff-border); }
.iaff-section-head { margin-bottom: clamp(40px, 5vw, 72px); }
.iaff-eyebrow {
	display: inline-flex; align-items: center; gap: 12px; font-size: 11.5px; letter-spacing: 0.26em; color: var(--iaff-red-2); margin-bottom: 20px;
}
.iaff-eyebrow::before { content: ''; width: 26px; height: 2px; background: currentColor; flex: none; }
.iaff-section--center .iaff-eyebrow::after { content: ''; width: 26px; height: 2px; background: currentColor; flex: none; }
.iaff-section-head h2, .iaff-split-copy h2 {
	font-size: clamp(36px, 5.2vw, 76px); line-height: 1; font-weight: 700; letter-spacing: -0.035em; margin-bottom: 22px;
}
.iaff-section-head .iaff-deck, .iaff-deck { font-size: clamp(16px, 1.3vw, 18px); line-height: 1.7; color: rgba(255,255,255,0.68); }
.iaff-section-head--row { display: grid; grid-template-columns: 1.3fr 1fr; gap: 48px; align-items: end; max-width: none; }
.iaff-section-head--row h2 { margin-bottom: 0; }
.iaff-section-head--row .iaff-deck { margin: 0 0 6px; }
/* The old red "seam" dots between sections compete with the new layout. */
.iaff-section + .iaff-section::before, .iaff-section::before { display: none !important; }

/* ==================================================================
   SPLIT (home about teaser)
   ================================================================== */
.iaff-split { border-top: 1px solid var(--iaff-border); }
.iaff-split-grid { display: grid; grid-template-columns: 1.15fr 1fr; gap: clamp(40px, 6vw, 100px); align-items: center; }
.iaff-split-media { margin: 0; position: relative; }
.iaff-split-img { overflow: hidden; aspect-ratio: 4 / 3.2; position: relative; }
.iaff-split-img img { width: 100%; height: 115%; object-fit: cover; margin-top: -7%; filter: saturate(0.92) contrast(1.05); }
.iaff-split-media::after {
	content: ''; position: absolute; left: -18px; bottom: -18px; width: 42%; height: 42%; z-index: -1;
	border-left: 2px solid var(--iaff-red); border-bottom: 2px solid var(--iaff-red);
}
.iaff-split-media figcaption {
	margin-top: 18px; font-size: 11px; letter-spacing: 0.22em; text-transform: uppercase; color: var(--iaff-text-dim);
}
.iaff-split-copy .iaff-deck { margin-bottom: 36px; }
.iaff-split-copy strong { color: #fff; }

/* ==================================================================
   EXPLORE CARDS (home)
   ================================================================== */
.iaff-explore { padding-top: 0; }
.iaff-explore-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 20px; }
.iaff-explore-card {
	position: relative; display: flex; flex-direction: column; justify-content: flex-end; min-height: 520px;
	padding: 32px; overflow: hidden; isolation: isolate; text-decoration: none; color: #fff;
	border: 1px solid var(--iaff-border);
}
.iaff-explore-bg {
	position: absolute; inset: 0; z-index: -2; background: var(--img) center / cover no-repeat;
	filter: grayscale(0.55) brightness(0.55) contrast(1.1); transform: scale(1.04);
	transition: transform 1.4s var(--iaff-ease), filter 0.9s ease;
}
.iaff-explore-card::before {
	content: ''; position: absolute; inset: 0; z-index: -1;
	background: linear-gradient(180deg, rgba(5,5,5,0.2) 0%, rgba(5,5,5,0.55) 45%, rgba(5,5,5,0.96) 100%);
}
.iaff-explore-card::after {
	content: ''; position: absolute; left: 0; bottom: 0; height: 3px; width: 100%; background: var(--iaff-red);
	transform: scaleX(0); transform-origin: left; transition: transform 0.7s var(--iaff-ease);
}
.iaff-explore-num { position: absolute; top: 28px; left: 32px; font-size: 12px; font-weight: 700; letter-spacing: 0.24em; color: rgba(255,255,255,0.7); }
.iaff-explore-body { display: flex; flex-direction: column; gap: 14px; }
.iaff-explore-title { font-family: 'Bebas Neue', sans-serif; font-size: clamp(34px, 3vw, 46px); line-height: 0.95; letter-spacing: 0.01em; }
.iaff-explore-text {
	font-size: 15px; line-height: 1.6; color: #fff; opacity: 0.72; max-width: 36ch; transition: opacity 0.6s ease;
}
.iaff-explore-link {
	display: inline-flex; align-items: center; gap: 10px; font-size: 11.5px; font-weight: 700; letter-spacing: 0.2em; text-transform: uppercase; color: #fff;
}
.iaff-explore-link::after { content: '\2192'; color: var(--iaff-red-2); font-size: 15px; transition: transform 0.5s var(--iaff-ease); }
.iaff-explore-card:hover .iaff-explore-bg, .iaff-explore-card:focus-visible .iaff-explore-bg { transform: scale(1.12); filter: grayscale(0) brightness(0.6) contrast(1.1); }
.iaff-explore-card:hover::after, .iaff-explore-card:focus-visible::after { transform: scaleX(1); }
.iaff-explore-card:hover .iaff-explore-text, .iaff-explore-card:focus-visible .iaff-explore-text { opacity: 1; }
.iaff-explore-card:hover .iaff-explore-link::after { transform: translateX(6px); }

/* ==================================================================
   MARQUEE
   ================================================================== */
.iaff-marquee { overflow: hidden; border-top: 1px solid var(--iaff-border); border-bottom: 1px solid var(--iaff-border); padding: 26px 0; background: #070707; }
.iaff-marquee-track { display: flex; align-items: center; gap: 40px; width: max-content; animation: iaff-marquee 48s linear infinite; }
.iaff-marquee span {
	font-family: 'Bebas Neue', sans-serif; font-size: clamp(36px, 5vw, 72px); line-height: 1; white-space: nowrap; letter-spacing: 0.02em;
	color: transparent; -webkit-text-stroke: 1px rgba(255,255,255,0.32);
}
.iaff-marquee span:nth-of-type(3n+1) { color: #fff; -webkit-text-stroke: 0; }
.iaff-marquee i { width: 14px; height: 14px; flex: none; background: var(--iaff-red); transform: rotate(45deg); }
@keyframes iaff-marquee { to { transform: translateX(-50%); } }

/* ==================================================================
   CARDS — one shared language: glass surface, cursor spotlight,
   red rule that draws in on hover, gentle lift
   ================================================================== */
.iaff-pillar, .iaff-partner-card, .iaff-safety-card, .iaff-station-card, .iaff-contact-card,
.iaff-news-card, .iaff-iaff-news-card, .iaff-leader-card, .iaff-event-row {
	position: relative; isolation: isolate; background: var(--iaff-card), #111 !important;
	border: 1px solid var(--iaff-border) !important; border-radius: 0 !important;
	transition: transform 0.6s var(--iaff-ease), border-color 0.4s ease, box-shadow 0.6s var(--iaff-ease) !important;
}
.iaff-pillar::before, .iaff-partner-card::before, .iaff-station-card::before,
.iaff-contact-card::before, .iaff-news-card::before, .iaff-iaff-news-card::before, .iaff-leader-card::before {
	content: ''; position: absolute; inset: 0; z-index: 0; pointer-events: none; opacity: 0; transition: opacity 0.4s ease;
	background: radial-gradient(420px circle at var(--mx, 50%) var(--my, 0%), rgba(225,29,29,0.14), transparent 60%);
}
.iaff-pillar > *, .iaff-partner-card > *, .iaff-safety-card > *, .iaff-contact-card > *, .iaff-iaff-news-card > *, .iaff-leader-card > * { position: relative; z-index: 1; }
.iaff-pillar:hover, .iaff-partner-card:hover, .iaff-safety-card:hover, .iaff-station-card:hover, .iaff-contact-card:hover,
.iaff-news-card:hover, .iaff-iaff-news-card:hover, .iaff-leader-card:hover, .iaff-event-row:hover {
	transform: translateY(-6px); border-color: rgba(225,29,29,0.45) !important;
	box-shadow: 0 30px 60px -30px rgba(0,0,0,0.9), 0 0 0 1px rgba(225,29,29,0.12);
}
.iaff-pillar:hover::before, .iaff-partner-card:hover::before, .iaff-station-card:hover::before,
.iaff-contact-card:hover::before, .iaff-news-card:hover::before, .iaff-iaff-news-card:hover::before, .iaff-leader-card:hover::before { opacity: 1; }
/* card reveal keeps hover lift working once revealed */
.iaff-js .iaff-pillar[data-reveal].is-in:hover, .iaff-js .iaff-partner-card[data-reveal].is-in:hover,
.iaff-js .iaff-safety-card[data-reveal].is-in:hover, .iaff-js .iaff-station-card[data-reveal].is-in:hover,
.iaff-js .iaff-contact-card[data-reveal].is-in:hover, .iaff-js .iaff-news-card[data-reveal].is-in:hover,
.iaff-js .iaff-iaff-news-card[data-reveal].is-in:hover, .iaff-js .iaff-leader-card[data-reveal].is-in:hover { transform: translateY(-6px); }
.iaff-js [data-reveal].is-in.iaff-pillar, .iaff-js [data-reveal].is-in.iaff-partner-card, .iaff-js [data-reveal].is-in.iaff-safety-card,
.iaff-js [data-reveal].is-in.iaff-station-card, .iaff-js [data-reveal].is-in.iaff-contact-card, .iaff-js [data-reveal].is-in.iaff-news-card,
.iaff-js [data-reveal].is-in.iaff-iaff-news-card, .iaff-js [data-reveal].is-in.iaff-leader-card {
	transition: opacity 1s var(--iaff-ease) var(--d, 0ms), transform 0.6s var(--iaff-ease), border-color 0.4s ease, box-shadow 0.6s var(--iaff-ease) !important;
}

/* Pillars */
.iaff-pillars { gap: 20px; }
.iaff-pillar { padding: clamp(32px, 3vw, 44px) !important; border-top: 1px solid var(--iaff-border) !important; text-align: left; }
.iaff-pillar::after {
	content: ''; position: absolute; top: -1px; left: -1px; right: -1px; height: 2px; background: var(--iaff-red); z-index: 2;
	transform: scaleX(0.18); transform-origin: left; transition: transform 0.8s var(--iaff-ease);
}
.iaff-pillar:hover::after { transform: scaleX(1); }
.iaff-pillar-num { font-family: 'Bebas Neue', sans-serif !important; font-size: 64px !important; line-height: 1 !important; color: transparent !important; -webkit-text-stroke: 1px rgba(225,29,29,0.8); margin-bottom: 28px !important; letter-spacing: 0.02em !important; }
.iaff-pillar h3 { font-size: 22px; letter-spacing: -0.02em; margin-bottom: 14px; }
.iaff-pillar p { color: rgba(255,255,255,0.66); font-size: 15px; line-height: 1.7; }
.iaff-pillar a { color: var(--iaff-red-2); }

/* News cards */
.iaff-news-grid { gap: 24px !important; }
.iaff-news-card { overflow: hidden; display: flex !important; flex-direction: column; }
.iaff-news-card .wp-block-post-featured-image { overflow: hidden; aspect-ratio: 16 / 10; margin: 0 !important; position: relative; }
.iaff-news-card .wp-block-post-featured-image::after { content: ''; position: absolute; inset: 0; background: linear-gradient(180deg, transparent 55%, rgba(10,10,10,0.6)); pointer-events: none; }
.iaff-news-card .wp-block-post-featured-image img { width: 100%; height: 100% !important; object-fit: cover; transition: transform 1.2s var(--iaff-ease), filter 0.6s ease; filter: saturate(0.9); }
.iaff-news-card:hover .wp-block-post-featured-image img { transform: scale(1.07); filter: saturate(1.05); }
.iaff-news-card .iaff-news-body { padding: 26px 28px 30px !important; position: relative; z-index: 1; }
.iaff-news-card .iaff-date, .iaff-news-card .wp-block-post-date { font-size: 11px !important; letter-spacing: 0.22em !important; color: var(--iaff-red-2) !important; font-weight: 700; text-transform: uppercase; }
.iaff-news-card .wp-block-post-title { font-family: var(--iaff-head) !important; font-size: 21px !important; line-height: 1.25 !important; letter-spacing: -0.02em !important; margin: 12px 0 12px !important; }
.iaff-news-card .wp-block-post-title a { text-decoration: none; background: linear-gradient(currentColor, currentColor) 0 100% / 0 1px no-repeat; transition: background-size 0.6s var(--iaff-ease); }
.iaff-news-card:hover .wp-block-post-title a { background-size: 100% 1px; }
.iaff-news-card .wp-block-post-excerpt { color: rgba(255,255,255,0.6); font-size: 14.5px; line-height: 1.65; }
.iaff-section--news-head { padding-bottom: 0 !important; }
.iaff-news-loop-wrapper { padding-left: var(--iaff-gutter); padding-right: var(--iaff-gutter); }
.iaff-news-loop-wrapper > .wp-block-query { max-width: calc(var(--iaff-max) - 2 * var(--iaff-gutter)) !important; }

/* IAFF national feed */
.iaff-iaff-news-grid { gap: 20px !important; }
.iaff-iaff-news-card { padding: 30px 28px !important; }
.iaff-iaff-news-date { letter-spacing: 0.22em !important; color: var(--iaff-red-2) !important; }
.iaff-iaff-news-title { font-family: var(--iaff-head); letter-spacing: -0.015em; }
.iaff-iaff-brand-mark { margin: 0 auto 26px !important; filter: drop-shadow(0 10px 30px rgba(225,29,29,0.35)); }

/* Instagram */
.iaff-ig-feed { gap: 10px !important; }
.iaff-ig-item { overflow: hidden; position: relative; }
.iaff-ig-item img { transition: transform 1.2s var(--iaff-ease), filter 0.6s ease !important; }
.iaff-ig-item:hover img { transform: scale(1.08); filter: brightness(0.75); }

/* ==================================================================
   INNER PAGE HERO
   ================================================================== */
.iaff-phero {
	position: relative; min-height: 68vh; min-height: 68svh; display: flex; align-items: flex-end;
	padding: 200px 0 clamp(64px, 8vw, 110px); overflow: hidden; isolation: isolate; background: #050505;
}
.iaff-phero-bg {
	position: absolute; inset: -8% 0; z-index: -2;
	background: url("../img/about-group-2023.webp") center 40% / cover no-repeat;
	filter: grayscale(0.35) contrast(1.1) brightness(0.55);
	transform: scale(1.12); transition: transform 2.8s var(--iaff-ease); will-change: transform;
}
.iaff-ready .iaff-phero-bg { transform: none; }
.iaff-phero-fade {
	position: absolute; inset: 0; z-index: -1;
	background:
		linear-gradient(180deg, rgba(5,5,5,0.85) 0%, rgba(5,5,5,0.25) 35%, rgba(5,5,5,0.55) 70%, var(--iaff-bg) 100%),
		linear-gradient(90deg, rgba(5,5,5,0.75) 0%, transparent 70%),
		radial-gradient(ellipse 70% 45% at 10% 100%, rgba(225,29,29,0.3), transparent 70%);
}
.iaff-phero-inner { position: relative; width: 100%; }
.iaff-crumbs { display: flex; align-items: center; gap: 12px; font-size: 11px; letter-spacing: 0.22em; text-transform: uppercase; color: rgba(255,255,255,0.6); margin-bottom: 34px; font-weight: 600; }
.iaff-crumbs a { color: rgba(255,255,255,0.6); text-decoration: none; transition: color 0.25s; }
.iaff-crumbs a:hover { color: #fff; }
.iaff-crumbs-sep { width: 18px; height: 1px; background: var(--iaff-red-2); }
.iaff-crumbs .iaff-crumbs-current, .iaff-crumbs > span:last-child { margin: 0; color: #fff; font-size: inherit; letter-spacing: inherit; font-weight: 600; }
.iaff-phero-eyebrow { display: inline-flex; align-items: center; gap: 12px; font-size: 11.5px; letter-spacing: 0.26em; text-transform: uppercase; color: var(--iaff-red-2); font-weight: 700; margin-bottom: 18px; }
.iaff-phero-eyebrow::before { content: ''; width: 26px; height: 2px; background: currentColor; }
.iaff-phero-title, .iaff-phero .wp-block-post-title.iaff-phero-title {
	font-family: 'Bebas Neue', sans-serif !important; font-weight: 400 !important; text-transform: uppercase;
	font-size: clamp(56px, 10vw, 150px) !important; line-height: 0.9 !important; letter-spacing: 0.005em !important;
	margin: 0 !important; color: #fff; max-width: 14ch;
}
.iaff-phero-title--post, .iaff-phero--post .wp-block-post-title { font-size: clamp(40px, 6vw, 88px) !important; max-width: 20ch; }
.iaff-phero--post .iaff-post-meta, .iaff-phero--post .wp-block-post-terms { font-size: 11.5px; letter-spacing: 0.26em; text-transform: uppercase; color: var(--iaff-red-2); font-weight: 700; margin-bottom: 18px; }
.iaff-phero--post .wp-block-post-terms a { color: inherit; text-decoration: none; }
.iaff-phero--post .iaff-date { margin-top: 26px; font-size: 13px; letter-spacing: 0.14em; text-transform: uppercase; color: rgba(255,255,255,0.65); }
.iaff-phero-cue { position: absolute; right: var(--iaff-gutter); bottom: clamp(64px, 8vw, 110px); width: 1px; height: 80px; background: rgba(255,255,255,0.16); overflow: hidden; }
.iaff-phero-cue span { position: absolute; left: 0; top: -50%; width: 100%; height: 50%; background: var(--iaff-red-2); animation: iaff-drip 2s var(--iaff-ease-io) infinite; }
@media (min-width: 1500px) { .iaff-phero-cue { right: calc((100vw - var(--iaff-max)) / 2 + var(--iaff-gutter)); } }

/* intro */
.iaff-js .iaff-phero-inner > * { opacity: 0; transform: translateY(30px); transition: opacity 1s var(--iaff-ease), transform 1.2s var(--iaff-ease); }
.iaff-ready .iaff-phero-inner > * { opacity: 1; transform: none; }
.iaff-ready .iaff-phero-inner > *:nth-child(2) { transition-delay: 0.12s; }
.iaff-ready .iaff-phero-inner > *:nth-child(3) { transition-delay: 0.24s; }
.iaff-ready .iaff-phero-inner > *:nth-child(4) { transition-delay: 0.36s; }

/* per-page banner photos */
.iaff-page-stations .iaff-phero-bg, .iaff-page-safety .iaff-phero-bg, .iaff-page-contact .iaff-phero-bg,
.iaff-phero--news .iaff-phero-bg { background-image: url("../img/hero-helmets.webp"); background-position: center 30%; }
.iaff-page-safety .iaff-phero-bg { background-position: center 70%; }
.iaff-page-contact .iaff-phero-bg { background-position: center 15%; }
.iaff-page-support .iaff-phero-bg { background-image: url("../img/support-walk.webp"); background-position: center 35%; filter: grayscale(0.85) contrast(1.1) brightness(0.5); }
.iaff-page-events .iaff-phero-bg { background-image: url("../img/support-walk-2.webp"); background-position: center 35%; filter: grayscale(0.85) contrast(1.1) brightness(0.5); }
.iaff-page-partners .iaff-phero-bg { background-position: center 65%; }

/* ==================================================================
   INNER PAGE BODY
   ================================================================== */
.iaff-single-content.iaff-page-body, .iaff-single-content {
	padding: clamp(64px, 8vw, 120px) 0 clamp(80px, 10vw, 150px);
	font-size: 17px; line-height: 1.8; color: rgba(255,255,255,0.72);
}
.iaff-single-content .wp-block-post-content { padding-left: var(--iaff-gutter); padding-right: var(--iaff-gutter); box-sizing: border-box; }
.iaff-single-content .wp-block-post-content > .alignwide { max-width: calc(var(--iaff-max) - 2 * var(--iaff-gutter)) !important; }
.iaff-single-content .alignwide .iaff-container { padding-left: 0; padding-right: 0; }
.iaff-single-content p { font-size: 17px; }

/* Intro statement */
.iaff-single-content .iaff-lead, .iaff-single-content p.iaff-lead {
	font-family: var(--iaff-head); font-size: clamp(22px, 2.4vw, 34px) !important; line-height: 1.35; font-weight: 500;
	letter-spacing: -0.02em; color: #fff; max-width: 980px !important; margin: 0 auto clamp(56px, 6vw, 96px) !important;
	padding: 0 0 clamp(40px, 4vw, 64px) 0 !important; border-bottom: 1px solid var(--iaff-border);
	position: relative;
}
.iaff-single-content .iaff-lead::after { content: ''; position: absolute; left: 0; bottom: -1px; width: 80px; height: 2px; background: var(--iaff-red); }
.iaff-single-content .iaff-lead strong { color: var(--iaff-red-2); font-weight: 600; }

/* In-content headings */
.iaff-single-content .wp-block-post-content > h2.wp-block-heading {
	font-size: clamp(28px, 3vw, 42px) !important; line-height: 1.1; letter-spacing: -0.03em; font-weight: 700;
	color: #fff; margin: clamp(64px, 7vw, 100px) auto 22px !important; padding-top: 28px; position: relative;
	border-top: 1px solid var(--iaff-border);
}
.iaff-single-content .wp-block-post-content > h2.wp-block-heading::before {
	content: ''; position: absolute; top: -1px; left: 0; width: 48px; height: 2px; background: var(--iaff-red);
}
.iaff-single-content .wp-block-post-content > .iaff-lead + h2.wp-block-heading,
.iaff-single-content .wp-block-post-content > .alignwide + h2.wp-block-heading { margin-top: clamp(40px, 5vw, 72px) !important; }
.iaff-single-content .wp-block-post-content > h1 { font-family: 'Bebas Neue', sans-serif; font-weight: 400; font-size: clamp(40px, 5vw, 72px); letter-spacing: 0.01em; color: #fff; margin-top: 0; }

/* Lists */
.iaff-single-content ul.wp-block-list { list-style: none; padding-left: 0 !important; }
.iaff-single-content ul.wp-block-list li { position: relative; padding: 14px 0 14px 34px; border-bottom: 1px solid var(--iaff-border); margin: 0 !important; }
.iaff-single-content ul.wp-block-list li::before { content: ''; position: absolute; left: 0; top: 26px; width: 16px; height: 2px; background: var(--iaff-red); }
.iaff-single-content ul.wp-block-list li::marker { content: none; }
.iaff-single-content ul.wp-block-list li strong { color: #fff; }

/* Links in body */
.iaff-single-content p a:not(.iaff-btn), .iaff-single-content li a {
	color: #fff; text-decoration: none; background: linear-gradient(var(--iaff-red), var(--iaff-red)) 0 100% / 100% 1px no-repeat;
	transition: background-size 0.5s var(--iaff-ease), color 0.3s;
	padding-bottom: 1px;
}
.iaff-single-content p a:not(.iaff-btn):hover, .iaff-single-content li a:hover { color: var(--iaff-red-2); }

/* Alignwide "section" blocks inside pages */
.iaff-single-content .alignwide > .iaff-section {
	padding: clamp(48px, 6vw, 88px) clamp(24px, 5vw, 72px) !important; margin: clamp(48px, 6vw, 96px) 0;
	background: radial-gradient(ellipse 60% 60% at 100% 0%, rgba(225,29,29,0.08), transparent 60%), linear-gradient(180deg, #121212, #0c0c0c);
	border: 1px solid var(--iaff-border);
}

/* About page: photo + text grid */
.iaff-about-grid { grid-template-columns: 1.1fr 1fr !important; gap: clamp(32px, 5vw, 72px) !important; align-items: center; }
.iaff-about-visual { border: 0 !important; border-radius: 0 !important; aspect-ratio: 4 / 3 !important; box-shadow: 0 40px 80px -40px rgba(0,0,0,0.9); transition: background-size 1.4s var(--iaff-ease); background-size: 105% !important; }
.iaff-about-visual:hover { background-size: 112% !important; }
.iaff-about-text p { font-size: 17px; line-height: 1.8; color: rgba(255,255,255,0.74); }

/* Partners */
.iaff-partners-group { margin-bottom: clamp(48px, 5vw, 72px); }
.iaff-partners-group-label {
	font-size: 11.5px !important; letter-spacing: 0.26em !important; color: var(--iaff-red-2) !important; font-weight: 700;
	display: flex; align-items: center; gap: 16px; margin-bottom: 22px !important; border: 0 !important; padding: 0 !important;
}
.iaff-partners-group-label::after { content: ''; flex: 1; height: 1px; background: var(--iaff-border); }
.iaff-partners-grid { gap: 20px !important; }
.iaff-partner-card { padding: 34px 30px !important; }
.iaff-partner-card h3 { font-size: 21px; letter-spacing: -0.02em; line-height: 1.25; }
.iaff-partner-card p { color: rgba(255,255,255,0.64); font-size: 15px; }
.iaff-partner-type { letter-spacing: 0.2em !important; color: var(--iaff-red-2) !important; }
.iaff-partner-card--featured { background: radial-gradient(ellipse 80% 120% at 100% 0%, rgba(225,29,29,0.18), transparent 60%), #121212 !important; }
.iaff-partner-card--featured h3 { font-size: clamp(24px, 2.4vw, 32px); }
.iaff-partners-footnote-block { border: 1px solid var(--iaff-border) !important; background: transparent !important; padding: 28px 30px !important; }

/* Safety */
.iaff-safety-grid { gap: 20px !important; }
.iaff-safety-card { padding: 38px 34px !important; }
.iaff-safety-card h3 { font-size: 24px; letter-spacing: -0.025em; }
.iaff-safety-card p { color: rgba(255,255,255,0.66); font-size: 15.5px; }
.iaff-safety-source { letter-spacing: 0.22em !important; }
.iaff-safety-link { display: inline-flex; gap: 8px; font-size: 12px !important; letter-spacing: 0.18em; text-transform: uppercase; font-weight: 700; color: #fff !important; text-decoration: none !important; background: none !important; }
.iaff-safety-link:hover { color: var(--iaff-red-2) !important; }

/* Stations */
.iaff-stations-grid { gap: 20px !important; }
.iaff-station-card { overflow: hidden; }
.iaff-station-photo { background: radial-gradient(ellipse at 50% 120%, rgba(225,29,29,0.28), transparent 60%), #0d0d0d !important; border-color: var(--iaff-border) !important; aspect-ratio: 4 / 3 !important; }
.iaff-station-seal { transition: transform 1s var(--iaff-ease); }
.iaff-station-card:hover .iaff-station-seal { transform: rotate(-8deg) scale(1.08); }
.iaff-station-body { padding: 26px 26px 30px !important; position: relative; z-index: 1; }
.iaff-station-name { font-family: 'Bebas Neue', sans-serif !important; font-size: 34px !important; font-weight: 400 !important; letter-spacing: 0.01em !important; line-height: 1 !important; }
.iaff-station-address { color: rgba(255,255,255,0.66) !important; text-decoration: none !important; background: none !important; font-size: 14.5px; line-height: 1.6; display: inline-block; transition: color 0.3s; }
.iaff-station-address::after { content: ' \2197'; color: var(--iaff-red-2); }
.iaff-station-address:hover { color: #fff !important; }

/* Contact */
.iaff-single-content .iaff-contact-grid { max-width: 980px !important; gap: 16px; }
.iaff-contact-card { padding: 30px 28px !important; }
.iaff-contact-label { font-size: 11px !important; letter-spacing: 0.24em !important; color: var(--iaff-red-2) !important; text-transform: uppercase; font-weight: 700; margin-bottom: 10px; }
.iaff-contact-value { font-family: var(--iaff-head); font-size: 20px !important; color: #fff; line-height: 1.4; letter-spacing: -0.01em; }
.iaff-contact-value a { color: #fff !important; background: none !important; }
.iaff-contact-value a:hover { color: var(--iaff-red-2) !important; }
.iaff-single-content .iaff-emergency-banner {
	max-width: 980px !important; padding: 26px 32px !important; border-radius: 0 !important; text-align: left !important;
	display: flex; align-items: center; gap: 18px; font-size: 18px !important;
	background: linear-gradient(110deg, var(--iaff-red) 0%, var(--iaff-red-deep) 100%) !important;
	box-shadow: 0 30px 60px -30px rgba(225,29,29,0.7);
}
.iaff-single-content .iaff-emergency-banner::before { content: ''; width: 12px; height: 12px; border-radius: 50%; background: #fff; flex: none; box-shadow: 0 0 0 0 rgba(255,255,255,0.7); animation: iaff-ring 1.8s infinite; }
@keyframes iaff-ring { 0% { box-shadow: 0 0 0 0 rgba(255,255,255,0.6); } 100% { box-shadow: 0 0 0 14px rgba(255,255,255,0); } }

/* ==================================================================
   HOME MEMORIAL BLOCK + CTA STRIP
   ================================================================== */
.iaff-memorial-main h2 { font-size: clamp(36px, 4.6vw, 64px); letter-spacing: -0.035em; line-height: 1.02; }

.iaff-cta-strip {
	padding: clamp(80px, 10vw, 140px) 0; isolation: isolate;
	background: linear-gradient(120deg, #b31212 0%, var(--iaff-red) 40%, #7a0606 100%);
	background-size: 200% 200%; animation: iaff-sheen 14s ease-in-out infinite alternate;
}
@keyframes iaff-sheen { from { background-position: 0% 50%; } to { background-position: 100% 50%; } }
.iaff-cta-strip::before {
	content: ''; position: absolute; inset: 0; z-index: -1; opacity: 0.18;
	background: repeating-linear-gradient(-45deg, rgba(0,0,0,0.5) 0 2px, transparent 2px 18px);
	-webkit-mask-image: linear-gradient(90deg, transparent 30%, #000); mask-image: linear-gradient(90deg, transparent 30%, #000);
}
.iaff-cta-strip::after {
	content: ''; position: absolute; right: -10%; top: -60%; width: 60%; aspect-ratio: 1; z-index: -1; border-radius: 50%;
	background: radial-gradient(circle, rgba(255,180,120,0.35), transparent 60%); filter: blur(10px);
}
.iaff-cta-strip h2 { font-size: clamp(40px, 6vw, 92px) !important; line-height: 0.95; letter-spacing: -0.04em; font-weight: 800; }
.iaff-cta-strip .iaff-eyebrow { color: #fff; }
.iaff-cta-strip .iaff-btn { background: #fff; color: var(--iaff-red-deep); }
.iaff-cta-strip .iaff-btn::before { background: #0a0a0a; }
.iaff-cta-strip .iaff-btn:hover { color: #fff; background: #fff; }

/* ==================================================================
   FOOTER
   ================================================================== */
.iaff-site-footer { position: relative; overflow: hidden; isolation: isolate; padding: clamp(80px, 10vw, 140px) 0 36px; background: #050505; border-top: 1px solid var(--iaff-border); }
.iaff-footer-glow { position: absolute; left: 50%; bottom: -40%; width: 120%; height: 80%; transform: translateX(-50%); z-index: -1; background: radial-gradient(ellipse at center, rgba(225,29,29,0.16), transparent 60%); pointer-events: none; }
.iaff-footer-statement { display: grid; grid-template-columns: 1fr auto; align-items: end; gap: 40px; padding-bottom: clamp(56px, 7vw, 96px); margin-bottom: clamp(56px, 7vw, 96px); border-bottom: 1px solid var(--iaff-border); }
.iaff-footer-statement .iaff-eyebrow { grid-column: 1 / -1; margin-bottom: 0; }
.iaff-footer-big { font-family: 'Bebas Neue', sans-serif; font-size: clamp(48px, 7.6vw, 128px); line-height: 0.9; margin: 0; color: #fff !important; max-width: 13ch; letter-spacing: 0.005em; }
.iaff-footer-big .iaff-red { color: var(--iaff-red); }
.iaff-footer-grid { grid-template-columns: 1.6fr 1fr 1fr 1.2fr !important; gap: 48px !important; }
.iaff-site-footer h4 { font-family: 'Inter', sans-serif !important; font-size: 11px !important; letter-spacing: 0.26em !important; text-transform: uppercase; color: var(--iaff-red-2) !important; font-weight: 700; margin-bottom: 20px !important; }
.iaff-site-footer .iaff-footer-grid a { font-size: 15px !important; color: rgba(255,255,255,0.66) !important; width: fit-content; position: relative; }
.iaff-site-footer .iaff-footer-grid a:hover { color: #fff !important; }
.iaff-site-footer .iaff-footer-grid > div:not(.iaff-footer-brand) a::after { content: ''; position: absolute; left: 0; right: 0; bottom: 3px; height: 1px; background: var(--iaff-red); transform: scaleX(0); transform-origin: right; transition: transform 0.5s var(--iaff-ease); }
.iaff-site-footer .iaff-footer-grid > div:not(.iaff-footer-brand) a:hover::after { transform: scaleX(1); transform-origin: left; }
.iaff-footer-contact span { display: block; font-size: 15px; color: rgba(255,255,255,0.66); padding: 5px 0; line-height: 1.6; }
.iaff-footer-contact .iaff-footer-em a { display: inline !important; color: var(--iaff-red-2) !important; padding: 0 !important; font-weight: 700; }
.iaff-footer-affiliations span { border-color: var(--iaff-border-strong) !important; border-radius: 0 !important; letter-spacing: 0.18em; }
.iaff-footer-bottom { border-color: var(--iaff-border) !important; font-size: 12px; color: rgba(255,255,255,0.45); }
.iaff-footer-bottom a { display: inline !important; }

.iaff-to-top {
	position: fixed; right: 22px; bottom: 22px; z-index: 900; width: 48px; height: 48px; border-radius: 50%;
	border: 1px solid var(--iaff-border-strong); background: rgba(10,10,10,0.7); color: #fff; cursor: pointer;
	display: grid; place-items: center; opacity: 0; transform: translateY(16px); pointer-events: none;
	transition: opacity 0.4s ease, transform 0.5s var(--iaff-ease), background 0.3s, border-color 0.3s;
}
@supports (backdrop-filter: blur(1px)) { .iaff-to-top { backdrop-filter: blur(10px); } }
.iaff-to-top.is-visible { opacity: 1; transform: none; pointer-events: auto; }
.iaff-to-top:hover { background: var(--iaff-red); border-color: var(--iaff-red); }

/* News archive + pagination */
.iaff-news-archive { padding: clamp(40px, 5vw, 72px) var(--iaff-gutter) clamp(52px, 7vw, 104px); }
.wp-block-query-pagination { margin-top: 56px !important; gap: 8px; font-size: 13px; letter-spacing: 0.14em; text-transform: uppercase; font-weight: 700; }
.wp-block-query-pagination a, .wp-block-query-pagination .page-numbers { padding: 12px 16px; border: 1px solid var(--iaff-border); text-decoration: none; transition: border-color 0.3s, background 0.3s; }
.wp-block-query-pagination a:hover { border-color: var(--iaff-red); background: rgba(225,29,29,0.08); }
.wp-block-query-pagination .current { background: var(--iaff-red); border-color: var(--iaff-red); color: #fff; }

/* Single post */
.iaff-featured-wrap { margin-top: clamp(-80px, -6vw, -40px) !important; position: relative; z-index: 2; padding: 0 var(--iaff-gutter); }
.iaff-featured-wrap img { box-shadow: 0 40px 80px -30px rgba(0,0,0,0.9); }

/* Memorial page: clear the fixed header */
.iaff-memorial-page .iaff-mem-hero { padding-top: 190px; min-height: 82vh; min-height: 82svh; display: flex; align-items: center; }
.iaff-memorial-page .iaff-mem-hero-bg img { transform: scale(1.1); transition: transform 3.2s var(--iaff-ease); }
.iaff-ready .iaff-memorial-page .iaff-mem-hero-bg img { transform: scale(1); }
.iaff-js .iaff-mem-hero-inner > * { opacity: 0; transform: translateY(26px); transition: opacity 1.2s var(--iaff-ease), transform 1.3s var(--iaff-ease); }
.iaff-ready .iaff-mem-hero-inner > * { opacity: 1; transform: none; }
.iaff-ready .iaff-mem-hero-inner > *:nth-child(2) { transition-delay: 0.15s; }
.iaff-ready .iaff-mem-hero-inner > *:nth-child(3) { transition-delay: 0.35s; }
.iaff-ready .iaff-mem-hero-inner > *:nth-child(4) { transition-delay: 0.5s; }
.iaff-mem-fund-num { font-variant-numeric: tabular-nums; }
.iaff-mem-procession-grid img, .iaff-mem-tribute-figure img { transition: transform 1.4s var(--iaff-ease); }
.iaff-mem-procession-grid > *:hover img { transform: scale(1.05); }

/* ==================================================================
   RESPONSIVE
   ================================================================== */
@media (max-width: 1200px) {
	.iaff-nav-links { gap: 22px; }
	.iaff-nav { gap: 26px; }
	.iaff-footer-grid { grid-template-columns: 1fr 1fr !important; }
	.iaff-footer-brand { grid-column: 1 / -1; }
}

@media (max-width: 960px) {
	html { scroll-padding-top: 80px; }
	.iaff-nav { display: none !important; }
	.iaff-menu-toggle { display: inline-flex !important; }
	.iaff-util-bar .iaff-iaff-label { display: none; }
	.iaff-util-bar .iaff-util-inner { justify-content: center; }
	.iaff-site-header .iaff-nav-inner { min-height: 72px; }
	.iaff-brand-logo { height: 46px; }
	.iaff-masthead.is-scrolled .iaff-brand-logo { height: 40px; }
	.iaff-masthead.is-scrolled .iaff-nav-inner { min-height: 62px; }

	.iaff-stats-grid { grid-template-columns: 1fr 1fr; }
	.iaff-stat { padding: 32px 20px 24px !important; border-bottom: 1px solid var(--iaff-border); }
	.iaff-stat:nth-child(2n) { border-right: 0; }
	.iaff-stat:nth-child(2n+1) { padding-left: 0 !important; }

	.iaff-mission-v2 .iaff-container { grid-template-columns: 1fr; gap: 24px; }
	.iaff-split-grid { grid-template-columns: 1fr; }
	.iaff-split-media::after { left: -10px; bottom: -10px; }
	.iaff-section-head--row { grid-template-columns: 1fr; gap: 20px; }
	.iaff-explore-grid { grid-template-columns: 1fr; }
	.iaff-explore-card { min-height: 380px; }
	.iaff-about-grid { grid-template-columns: 1fr !important; }
	.iaff-footer-statement { grid-template-columns: 1fr; }
	.iaff-cta-strip .iaff-cta-inner { grid-template-columns: 1fr; gap: 32px; }
}

@media (max-width: 768px) {
	/* Undo the old theme's slide-in mobile menu — the overlay replaces it. */
	.iaff-nav-links { position: static; transform: none; width: auto; box-shadow: none; border: 0; background: none; padding: 0; }

	.iaff-hero.iaff-hero--v2 { padding: 150px 0 130px; display: flex; min-height: 100svh; align-items: flex-end; }
	.iaff-hero--v2 .iaff-hero-inner { padding: 0 var(--iaff-gutter) !important; }
	.iaff-hero--v2 .iaff-hero-bg img { object-position: center 30%; filter: contrast(1.08) brightness(0.7); }
	.iaff-hero--v2 .iaff-hero-fade {
		background:
			linear-gradient(180deg, rgba(5,5,5,0.75) 0%, rgba(5,5,5,0.1) 22%, rgba(5,5,5,0.55) 48%, rgba(5,5,5,0.94) 72%, var(--iaff-bg) 100%),
			radial-gradient(ellipse 100% 30% at 50% 100%, rgba(225,29,29,0.25), transparent 70%);
	}
	.iaff-hero--v2 h1 { font-size: clamp(52px, 15vw, 84px); }
	.iaff-hero-actions .iaff-btn { flex: 1 1 auto; }
	.iaff-hero-bottom { bottom: 28px; }
	.iaff-hero-meta { display: none; }
	.iaff-hero-grid, .iaff-phero-grid { display: none; }

	.iaff-phero { min-height: 56vh; min-height: 56svh; padding-top: 150px; }
	.iaff-phero-cue { display: none; }
	.iaff-phero-eyebrow { font-size: 10px; letter-spacing: 0.2em; }
	.iaff-crumbs { margin-bottom: 22px; }

	.iaff-single-content .alignwide > .iaff-section { padding: 40px 22px !important; }
	.iaff-overlay-foot { grid-template-columns: 1fr; gap: 18px; }
	.iaff-footer-grid { grid-template-columns: 1fr 1fr !important; gap: 36px 24px !important; }
	.iaff-footer-contact { grid-column: 1 / -1; }
	.iaff-footer-bottom { flex-direction: column; align-items: flex-start !important; gap: 8px; text-align: left !important; }
	.iaff-marquee { padding: 18px 0; }
	.iaff-to-top { right: 16px; bottom: 16px; width: 44px; height: 44px; }
	.iaff-pillar:hover, .iaff-partner-card:hover, .iaff-safety-card:hover, .iaff-station-card:hover, .iaff-contact-card:hover,
	.iaff-news-card:hover, .iaff-iaff-news-card:hover { transform: none !important; }
}

@media (max-width: 480px) {
	.iaff-util-right { gap: 10px; font-size: 10.5px; }
	.iaff-stat-num { font-size: 48px; }
	.iaff-stat-label { font-size: 12px; }
	.iaff-hero-actions { flex-direction: column; align-items: stretch; }
	.iaff-btn { padding: 16px 24px; }
	.iaff-explore-card { padding: 26px; min-height: 340px; }
	.iaff-explore-num { left: 26px; top: 22px; }
	.iaff-footer-grid { grid-template-columns: 1fr !important; }
}

@media (max-width: 782px) { body.admin-bar .iaff-masthead, body.admin-bar .iaff-progress { top: 46px; } }

/* ==================================================================
   REDUCED MOTION — show everything, still
   ================================================================== */
@media (prefers-reduced-motion: reduce) {
	html { scroll-behavior: auto; }
	*, *::before, *::after { animation-duration: 0.001ms !important; animation-iteration-count: 1 !important; transition-duration: 0.001ms !important; transition-delay: 0ms !important; }
	.iaff-js [data-reveal], .iaff-js .iaff-line > span, .iaff-js .iaff-hero--v2 .iaff-hero-eyebrow, .iaff-js .iaff-hero--v2 .iaff-hero-deck,
	.iaff-js .iaff-hero--v2 .iaff-hero-actions, .iaff-js .iaff-hero--v2 .iaff-hero-bottom, .iaff-js .iaff-phero-inner > *,
	.iaff-js .iaff-mem-hero-inner > * { opacity: 1 !important; transform: none !important; clip-path: none !important; }
	.iaff-marquee-track { animation: none; }
}

/* ==================================================================
   v1.0 review fixes
   ================================================================== */
.iaff-news-grid { padding-left: 0 !important; padding-right: 0 !important; align-items: stretch; }
.iaff-news-grid > li { display: flex; margin: 0 !important; }
.iaff-news-grid > li > .iaff-news-card { flex: 1; }
.iaff-split-copy h2 { font-size: clamp(34px, 3.8vw, 60px); }
.iaff-site-footer p.iaff-footer-big { font-size: clamp(48px, 7.6vw, 128px); line-height: 0.9; color: #fff; }
.iaff-site-footer a.iaff-btn { display: inline-flex; color: #fff; font-size: 12.5px; padding: 17px 32px; width: auto; }
.iaff-site-footer a.iaff-btn:hover { color: var(--iaff-red); }
/* Headings inside page content: align with the paragraph column, and
   undo the old centered/max-width rules inside section blocks and cards. */
.iaff-single-content .wp-block-post-content > h2.wp-block-heading,
.iaff-single-content .wp-block-post-content > h3 { max-width: var(--wp--style--global--content-size, 780px) !important; }
.iaff-single-content .iaff-section-head h2 { margin: 0 0 22px !important; max-width: none; font-size: clamp(36px, 5vw, 72px); line-height: 1; letter-spacing: -0.035em; font-weight: 700; }
.iaff-single-content .iaff-section-head .iaff-deck { margin: 0; max-width: 680px; }
.iaff-single-content .iaff-section--center .iaff-section-head { margin-left: auto; margin-right: auto; text-align: center; }
.iaff-single-content .iaff-section--center .iaff-section-head .iaff-deck { margin: 0 auto; }
.iaff-single-content .iaff-section-head .iaff-eyebrow { margin-bottom: 20px; }
.iaff-single-content article h3, .iaff-single-content .iaff-pillar h3, .iaff-single-content .iaff-station-card h3 { margin: 0 0 12px; max-width: none; }
.iaff-single-content article p, .iaff-single-content .iaff-pillar p { margin: 0 0 1em; max-width: none; }
.iaff-single-content .iaff-emergency-banner, .iaff-single-content .iaff-contact-grid { max-width: var(--wp--style--global--content-size, 780px) !important; }
.iaff-contact-label { font-family: 'Inter', sans-serif !important; }
/* Vary the banner photos so neighbouring pages don't repeat */
.iaff-page-contact .iaff-phero-bg { background-image: url("../img/about-group-2023.webp"); background-position: 80% 45%; }
.iaff-page-safety .iaff-phero-bg { background-image: url("../img/support-walk-2.webp"); background-position: center 40%; filter: grayscale(0.85) contrast(1.1) brightness(0.5); }
/* News card children carried their own side padding from the old theme — the body owns it now */
.iaff-news-card .iaff-news-body > * { padding-left: 0 !important; padding-right: 0 !important; }
.iaff-news-card .iaff-news-body > .wp-block-post-date { padding-top: 0 !important; }
@media (max-width: 768px) {
	.iaff-hero.iaff-hero--v2 { padding-bottom: 110px; }
	.iaff-mission-v2 { padding: 52px 0; }
	.iaff-news-card .iaff-news-body { padding: 22px 22px 26px !important; }
}
/* Old theme drew hamburger lines with span::before/::after — remove them from the new toggle */
.iaff-menu-toggle .iaff-menu-lines { background: none !important; width: 20px; height: 10px; }
.iaff-menu-toggle .iaff-menu-lines::before, .iaff-menu-toggle .iaff-menu-lines::after { display: none !important; content: none !important; }
.iaff-site-footer p.iaff-footer-big { font-size: clamp(48px, 6.6vw, 112px); max-width: 17ch; }
.iaff-partners-group-label, .iaff-partners-footnote-label { font-family: 'Inter', sans-serif !important; }

/* Safety cards keep their topic icon on ::before (old theme) — spotlight goes on ::after */
.iaff-safety-card::after {
	content: ''; position: absolute; inset: 0; z-index: 0; pointer-events: none; opacity: 0; transition: opacity 0.4s ease;
	background: radial-gradient(420px circle at var(--mx, 50%) var(--my, 0%), rgba(225,29,29,0.14), transparent 60%);
}
.iaff-safety-card:hover::after { opacity: 1; }
.iaff-news-archive > .wp-block-query { max-width: calc(var(--iaff-max) - 2 * var(--iaff-gutter)) !important; }
/* Tighter inner-page banners: no forced height; text sits a set distance below the header */
.iaff-phero { min-height: 0 !important; align-items: flex-start; padding: 185px 0 clamp(44px, 5vw, 76px); }
.iaff-phero-cue { display: none; }
@media (max-width: 768px) { .iaff-phero { padding: 128px 0 40px; } }
/* Tighter home hero: no forced full-screen height; text sits a set distance below the header */
.iaff-hero.iaff-hero--v2 { min-height: 0 !important; align-items: flex-start; padding: 190px 0 100px; }
@media (max-width: 768px) {
	.iaff-hero.iaff-hero--v2 { align-items: flex-start; padding: 140px 0 64px; }
	.iaff-hero--v2 .iaff-hero-fade {
		background:
			linear-gradient(180deg, rgba(5,5,5,0.8) 0%, rgba(5,5,5,0.55) 30%, rgba(5,5,5,0.85) 70%, var(--iaff-bg) 100%),
			radial-gradient(ellipse 100% 30% at 50% 100%, rgba(225,29,29,0.25), transparent 70%);
	}
}
/* No more "[PORTRAIT — TBD]" / "[ARTICLE PHOTO — TBD]" labels on cards without photos */
.iaff-leader-photo::after, .iaff-news-thumb::after { content: none !important; }
/* Contact: three cards — organisation spans the full row */
.iaff-contact-grid > .iaff-contact-card:first-child:nth-last-child(3) { grid-column: 1 / -1; }
/* Clip reveal fix: a fully clipped element never registers as on screen, so the
   wipe never started. Keep the frame unclipped (it is what gets watched) and
   wipe its first child instead. */
.iaff-js [data-reveal="clip"] { clip-path: none !important; }
.iaff-js [data-reveal="clip"] > :first-child { clip-path: inset(100% 0 0 0); transition: clip-path 1.4s var(--iaff-ease-io); }
.iaff-js [data-reveal="clip"].is-in > :first-child { clip-path: inset(0 0 0 0); }
@media (prefers-reduced-motion: reduce) { .iaff-js [data-reveal="clip"] > :first-child { clip-path: none !important; } }
/* Tighter memorial hero — same treatment as the other banners */
.iaff-memorial-page .iaff-mem-hero { min-height: 0 !important; align-items: flex-start; padding: 190px 0 80px; }
@media (max-width: 768px) { .iaff-memorial-page .iaff-mem-hero { padding: 140px 0 48px; } }

/* ==================================================================
   IN MEMORIAM — honor roll (/memorial/)
   ================================================================== */
.iaff-phero--roll { background: #050505; }
.iaff-roll-glow {
	position: absolute; inset: 0; z-index: -1; pointer-events: none;
	background:
		radial-gradient(ellipse 55% 70% at 85% 30%, rgba(225,29,29,0.22), transparent 65%),
		radial-gradient(ellipse 60% 50% at 10% 100%, rgba(255,106,0,0.12), transparent 70%),
		linear-gradient(180deg, #0b0b0b 0%, var(--iaff-bg) 100%);
}
.iaff-roll-cross {
	position: absolute; right: -4%; top: 50%; width: min(620px, 60vw); aspect-ratio: 1; margin-top: calc(min(620px, 60vw) / -2);
	z-index: -1; pointer-events: none; opacity: 0.07;
	background: url("../img/iaff-cross.png") center / contain no-repeat;
	filter: grayscale(1) brightness(2);
}
.iaff-roll-deck { font-family: var(--iaff-head); font-size: clamp(20px, 2vw, 28px); color: rgba(255,255,255,0.78); margin: 26px 0 0; font-weight: 500; letter-spacing: -0.015em; max-width: 30ch; }
.iaff-roll-section { padding-top: clamp(40px, 4.5vw, 68px); }

.iaff-roll { display: grid; grid-template-columns: repeat(auto-fill, minmax(280px, 1fr)); gap: 24px; }
.iaff-roll--single { grid-template-columns: minmax(0, 440px); justify-content: start; }
.iaff-roll-card {
	position: relative; display: flex; flex-direction: column; text-decoration: none; color: #fff; isolation: isolate;
	background: linear-gradient(180deg, #151010, #0d0d0d); border: 1px solid rgba(201,162,92,0.28);
	transition: transform 0.7s var(--iaff-ease), border-color 0.5s ease, box-shadow 0.7s var(--iaff-ease);
}
.iaff-roll-card::before {
	content: ''; position: absolute; inset: 8px; border: 1px solid rgba(201,162,92,0.16); pointer-events: none; z-index: 2;
}
.iaff-roll-card:hover { transform: translateY(-6px); border-color: rgba(201,162,92,0.6); box-shadow: 0 40px 70px -35px rgba(0,0,0,0.95), 0 0 60px -20px rgba(225,29,29,0.35); }
.iaff-roll-photo { position: relative; display: block; aspect-ratio: 4 / 4.4; overflow: hidden; background: #0a0a0a; }
.iaff-roll-photo img { width: 100%; height: 100%; object-fit: cover; object-position: center 25%; filter: grayscale(0.9) contrast(1.05) brightness(0.9); transition: filter 1s ease, transform 1.4s var(--iaff-ease); }
.iaff-roll-card:hover .iaff-roll-photo img { filter: grayscale(0) contrast(1.05) brightness(1); transform: scale(1.04); }
.iaff-roll-photo::after { content: ''; position: absolute; inset: 0; background: linear-gradient(180deg, transparent 55%, rgba(13,13,13,0.95)); }
.iaff-roll-badge {
	position: absolute; right: 22px; bottom: -1px; z-index: 3; width: 64px; height: 64px; display: grid; place-items: center;
	background: linear-gradient(145deg, #e9cf8f, #b8914a 55%, #8a6a2c);
	-webkit-mask: url("../img/iaff-cross.png") center / contain no-repeat; mask: url("../img/iaff-cross.png") center / contain no-repeat;
}
.iaff-roll-badge span { font-family: 'Bebas Neue', sans-serif; font-size: 22px; color: #2a1c06; line-height: 1; margin-top: 2px; }
.iaff-roll-body { display: flex; flex-direction: column; gap: 8px; padding: 26px 30px 32px; position: relative; z-index: 1; }
.iaff-roll-eyebrow { font-size: 11px; letter-spacing: 0.26em; text-transform: uppercase; color: #d9b56a; font-weight: 700; }
.iaff-roll-name { font-family: 'Bebas Neue', sans-serif; font-size: clamp(32px, 3vw, 42px); line-height: 0.98; letter-spacing: 0.01em; }
.iaff-roll-dates { font-size: 13px; letter-spacing: 0.24em; color: rgba(255,255,255,0.75); font-weight: 600; }
.iaff-roll-detail { font-size: 14.5px; color: rgba(255,255,255,0.6); line-height: 1.6; }
.iaff-roll-link { margin-top: 12px; display: inline-flex; align-items: center; gap: 10px; font-size: 11.5px; letter-spacing: 0.2em; text-transform: uppercase; font-weight: 700; color: #fff; }
.iaff-roll-link::after { content: '\2192'; color: var(--iaff-red-2); transition: transform 0.5s var(--iaff-ease); }
.iaff-roll-card:hover .iaff-roll-link::after { transform: translateX(6px); }

/* Tribute page breadcrumb (centered hero) */
.iaff-crumbs--center { justify-content: center; margin-bottom: 26px; }
@media (max-width: 768px) {
	.iaff-roll--single { grid-template-columns: 1fr; }
	.iaff-roll-cross { opacity: 0.05; right: -30%; }
}
.iaff-roll--single { justify-content: center; }
.iaff-roll-card br, .iaff-roll br { display: none; }

/* ==================================================================
   NEWS ARTICLE (single post) — one centred column: header, image, text
   ================================================================== */
.iaff-article-page { --iaff-col: 760px; }
.iaff-article-head { position: relative; isolation: isolate; padding: 180px var(--iaff-gutter) clamp(32px, 4vw, 52px); }
.iaff-article-glow { position: absolute; inset: 0; z-index: -1; pointer-events: none;
	background: radial-gradient(ellipse 60% 80% at 80% 0%, rgba(225,29,29,0.16), transparent 65%), linear-gradient(180deg, #0e0e0e, var(--iaff-bg)); }
.iaff-article-wrap { max-width: var(--iaff-col); margin: 0 auto; }
.iaff-article-wrap .iaff-crumbs { margin-bottom: 30px; }
.iaff-article-meta { display: flex; flex-wrap: wrap; align-items: center; gap: 10px 18px; margin-bottom: 22px; font-size: 11.5px; letter-spacing: 0.22em; text-transform: uppercase; font-weight: 700; }
.iaff-article-meta > * { margin: 0 !important; }
.iaff-article-cats, .iaff-article-cats a { color: var(--iaff-red-2) !important; text-decoration: none; }
.iaff-article-cats .wp-block-post-terms__separator { color: rgba(255,255,255,0.3); }
.iaff-article-date { color: rgba(255,255,255,0.6); display: inline-flex; align-items: center; gap: 18px; }
.iaff-article-cats + .iaff-article-date::before { content: ''; width: 1px; height: 12px; background: rgba(255,255,255,0.25); }
.iaff-article-title, h1.wp-block-post-title.iaff-article-title {
	font-family: var(--iaff-head) !important; font-weight: 700 !important; text-transform: none !important;
	font-size: clamp(32px, 4.4vw, 58px) !important; line-height: 1.06 !important; letter-spacing: -0.03em !important;
	margin: 0 !important; color: #fff; text-wrap: balance; overflow-wrap: normal; hyphens: none;
}
.iaff-js .iaff-article-wrap > * { opacity: 0; transform: translateY(24px); transition: opacity 1s var(--iaff-ease), transform 1.1s var(--iaff-ease); }
.iaff-ready .iaff-article-wrap > * { opacity: 1; transform: none; }
.iaff-ready .iaff-article-wrap > *:nth-child(2) { transition-delay: 0.1s; }
.iaff-ready .iaff-article-wrap > *:nth-child(3) { transition-delay: 0.2s; }

/* Featured image: shown once, whole (flyers carry text — never crop) */
.iaff-article-media { max-width: calc(1000px + 2 * var(--iaff-gutter)); margin: 0 auto !important; padding: 0 var(--iaff-gutter); box-sizing: border-box; }
.iaff-article-media .wp-block-post-featured-image {
	margin: 0 !important; background: radial-gradient(ellipse at center, #1a1a1a, #0d0d0d); border: 1px solid var(--iaff-border);
	display: flex; justify-content: center; padding: clamp(12px, 2vw, 24px); box-shadow: 0 40px 80px -40px rgba(0,0,0,0.9);
}
.iaff-article-media .wp-block-post-featured-image img {
	width: auto !important; max-width: 100%; height: auto !important; max-height: 78vh; object-fit: contain; display: block;
}
.iaff-js .iaff-article-media { opacity: 0; transform: translateY(30px); transition: opacity 1.1s var(--iaff-ease) 0.3s, transform 1.2s var(--iaff-ease) 0.3s; }
.iaff-ready .iaff-article-media { opacity: 1; transform: none; }

/* Body */
.iaff-single-content.iaff-article-body { padding: clamp(36px, 4.5vw, 60px) var(--iaff-gutter) clamp(44px, 6vw, 82px); }
.iaff-article-body > .wp-block-post-content, .iaff-article-body > .iaff-article-foot { max-width: var(--iaff-col); margin-left: auto !important; margin-right: auto !important; padding: 0 !important; }
.iaff-article-body .wp-block-post-content > * { max-width: none !important; margin-left: 0 !important; margin-right: 0 !important; }
.iaff-article-body .wp-block-post-content > :first-child { margin-top: 0 !important; }
.iaff-article-body p { font-size: 18px; line-height: 1.8; color: rgba(255,255,255,0.78); margin-bottom: 1.3em; }
.iaff-article-body p.has-text-align-center { text-align: left !important; }
.iaff-article-body .wp-block-post-content > h2.wp-block-heading, .iaff-article-body .wp-block-post-content > h2 {
	font-size: clamp(24px, 2.4vw, 32px) !important; margin: 2.2em 0 0.6em !important; padding-top: 0 !important; border-top: 0 !important; letter-spacing: -0.025em;
}
.iaff-article-body .wp-block-post-content > h2::before { display: none; }
.iaff-article-body .wp-block-post-content > h3, .iaff-article-body .wp-block-post-content > h4 { font-size: 19px; margin: 1.8em 0 0.4em !important; color: #fff; }
.iaff-article-body img { max-width: 100%; height: auto; }
.iaff-article-body .wp-block-image { margin: 2em 0 !important; }
.iaff-article-foot { margin-top: clamp(40px, 5vw, 64px) !important; padding-top: 28px !important; border-top: 1px solid var(--iaff-border); }
.iaff-article-back { display: inline-flex; align-items: center; gap: 12px; font-size: 12px; letter-spacing: 0.2em; text-transform: uppercase; font-weight: 700; color: #fff !important; text-decoration: none !important; background: none !important; }
.iaff-article-back::before { content: '\2190'; color: var(--iaff-red-2); font-size: 16px; transition: transform 0.5s var(--iaff-ease); }
.iaff-article-back:hover::before { transform: translateX(-6px); }

/* More news */
.iaff-more-news { border-top: 1px solid var(--iaff-border); }
.iaff-more-news .iaff-deck { text-align: right; }
.iaff-more-news-grid { list-style: none; display: grid; grid-template-columns: repeat(3, 1fr); margin: 0; }
@media (max-width: 1024px) { .iaff-more-news-grid { grid-template-columns: repeat(2, 1fr); } }
@media (max-width: 768px) {
	.iaff-article-head { padding-top: 128px; }
	.iaff-article-body p { font-size: 17px; }
	.iaff-more-news-grid { grid-template-columns: 1fr; }
	.iaff-more-news .iaff-deck { text-align: left; }
}

/* ==================================================================
   CONTACT FORM (Gravity Forms, form 1) — dark, site-matched
   ================================================================== */
.iaff-form-card {
	max-width: var(--wp--style--global--content-size, 780px); margin: 0 auto 1em; padding: clamp(24px, 4vw, 44px);
	background: linear-gradient(180deg, #151515, #0f0f0f); border: 1px solid var(--iaff-border); position: relative;
}
.iaff-form-card::before { content: ''; position: absolute; left: 0; top: 0; width: 64px; height: 2px; background: var(--iaff-red-2); }
.iaff-form-card .gform_wrapper.gravity-theme { margin: 0; }
.iaff-form-card .gform_wrapper.gravity-theme .gform_fields { grid-column-gap: 20px; grid-row-gap: 22px; }
.iaff-form-card .gform_wrapper.gravity-theme .gfield.iaff-f-half { grid-column: span 6; }
.iaff-form-card .gform_wrapper.gravity-theme #field_1_1 { grid-column: 1 / -1; }
.iaff-form-card .gform_wrapper.gravity-theme .gfield_label,
.iaff-form-card .gform_wrapper.gravity-theme legend.gfield_label {
	font-family: var(--iaff-body, Inter, sans-serif); font-size: 11.5px !important; letter-spacing: 0.2em; text-transform: uppercase; font-weight: 700 !important;
	color: rgba(255,255,255,0.82); margin-bottom: 10px; padding: 0;
}
.iaff-form-card .gform_wrapper.gravity-theme .gfield_required_text { font-size: 0; }
.iaff-form-card .gform_wrapper.gravity-theme .gfield_required_text::after { content: '*'; font-size: 13px; color: var(--iaff-red-2); margin-left: 4px; }
.iaff-form-card .gform_wrapper.gravity-theme .ginput_complex label {
	font-size: 11px !important; letter-spacing: 0.08em; color: rgba(255,255,255,0.45); padding-top: 6px;
}
.iaff-form-card .gform_wrapper.gravity-theme input[type=text],
.iaff-form-card .gform_wrapper.gravity-theme input[type=email],
.iaff-form-card .gform_wrapper.gravity-theme input[type=tel],
.iaff-form-card .gform_wrapper.gravity-theme select,
.iaff-form-card .gform_wrapper.gravity-theme textarea {
	width: 100%; background: #0a0a0a; color: #fff; border: 1px solid rgba(255,255,255,0.14); border-radius: 0;
	padding: 14px 16px !important; font-size: 16px !important; font-family: inherit; line-height: 1.4;
	transition: border-color 0.3s ease, box-shadow 0.3s ease, background 0.3s ease;
}
.iaff-form-card .gform_wrapper.gravity-theme textarea { min-height: 170px; resize: vertical; }
.iaff-form-card .gform_wrapper.gravity-theme select {
	appearance: none; -webkit-appearance: none; cursor: pointer;
	background: #0a0a0a url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='8'%3E%3Cpath d='M1 1l5 5 5-5' fill='none' stroke='%23e11d1d' stroke-width='2'/%3E%3C/svg%3E") right 16px center no-repeat;
	padding-right: 44px !important;
}
.iaff-form-card .gform_wrapper.gravity-theme select option { background: #111; color: #fff; }
.iaff-form-card .gform_wrapper.gravity-theme input:focus,
.iaff-form-card .gform_wrapper.gravity-theme select:focus,
.iaff-form-card .gform_wrapper.gravity-theme textarea:focus {
	outline: none; border-color: var(--iaff-red-2); background-color: #0d0d0d; box-shadow: 0 0 0 3px rgba(225,29,29,0.18);
}
.iaff-form-card .gform_wrapper.gravity-theme .gform_footer { margin: 28px 0 0; padding: 0; }
.iaff-form-card .gform_wrapper.gravity-theme .gform_footer input[type=submit],
.iaff-form-card .gform_wrapper.gravity-theme .gform_button {
	background: var(--iaff-red, #e11d1d); color: #fff; border: 0; border-radius: 0; cursor: pointer;
	padding: 18px 34px; font-size: 12.5px; letter-spacing: 0.2em; text-transform: uppercase; font-weight: 700; font-family: inherit;
	transition: background 0.3s ease, transform 0.4s var(--iaff-ease), box-shadow 0.4s ease;
}
.iaff-form-card .gform_wrapper.gravity-theme .gform_button:hover { background: var(--iaff-red-2, #ff2a2a); transform: translateY(-2px); box-shadow: 0 18px 30px -16px rgba(225,29,29,0.7); }
.iaff-form-card .gform_wrapper.gravity-theme .gform_ajax_spinner { margin-left: 14px; vertical-align: middle; }
/* Errors */
.iaff-form-card .gform_wrapper.gravity-theme .gform_validation_errors {
	background: rgba(225,29,29,0.08); border: 1px solid rgba(225,29,29,0.5); border-radius: 0; box-shadow: none; margin-bottom: 26px; padding: 16px 20px;
}
.iaff-form-card .gform_wrapper.gravity-theme .gform_validation_errors > h2 { color: #ff8a8a; font-size: 14px !important; font-family: inherit; letter-spacing: 0; margin: 0 !important; padding: 0 !important; border: 0 !important; }
.iaff-form-card .gform_wrapper.gravity-theme .gform_validation_errors > h2::before { display: none; }
.iaff-form-card .gform_wrapper.gravity-theme .gfield_error input,
.iaff-form-card .gform_wrapper.gravity-theme .gfield_error select,
.iaff-form-card .gform_wrapper.gravity-theme .gfield_error textarea { border-color: rgba(225,29,29,0.8); }
.iaff-form-card .gform_wrapper.gravity-theme .gfield_error .gfield_label { color: rgba(255,255,255,0.82); }
.iaff-form-card .gform_wrapper.gravity-theme .gfield_validation_message,
.iaff-form-card .gform_wrapper.gravity-theme .validation_message {
	background: none; border: 0; padding: 8px 0 0; margin: 0; color: #ff8a8a; font-size: 13px;
}
/* Thank-you message */
.iaff-form-card .gform_confirmation_message {
	font-size: 18px; line-height: 1.7; color: #fff; padding-left: 22px; border-left: 2px solid var(--iaff-red-2);
}
@media (max-width: 640px) {
	.iaff-form-card .gform_wrapper.gravity-theme .gfield.iaff-f-half { grid-column: 1 / -1; }
	.iaff-form-card .gform_wrapper.gravity-theme .gform_button { width: 100%; }
}
.iaff-form-card .gform_wrapper.gravity-theme .gfield_label .gfield_required { margin-left: 0 !important; padding: 0 !important; display: inline; }
.iaff-form-card .gform_wrapper.gravity-theme .gfield_required_text::after { margin-left: 3px; }
.iaff-form-card .gform_wrapper.gravity-theme .gform_validation_errors > h2 { padding-left: 28px !important; position: relative; }
.iaff-form-card .gform_wrapper.gravity-theme .gform_validation_errors > h2 .gform-icon { left: 0; top: 50%; transform: translateY(-50%); position: absolute; }
.iaff-form-card .gform_wrapper.gravity-theme #field_1_4 { grid-column: 1 / -1; }
.iaff-form-card .gform_wrapper.gravity-theme .gfield_required, .iaff-form-card .gform_wrapper.gravity-theme .gfield_required_text { letter-spacing: 0 !important; }

/* ==================================================================
   CONTACT PAGE (page-contact.html) — two columns: details | form
   ================================================================== */
.iaff-ct { position: relative; isolation: isolate; overflow: hidden; padding: clamp(48px, 6vw, 96px) 0 clamp(52px, 6.5vw, 104px);
	background: linear-gradient(180deg, var(--iaff-bg) 0%, #0f0d0d 55%, var(--iaff-bg) 100%); }
.iaff-ct-glow { position: absolute; inset: 0; z-index: -1; pointer-events: none;
	background: radial-gradient(ellipse 45% 55% at 85% 20%, rgba(225,29,29,0.16), transparent 70%),
	            radial-gradient(ellipse 40% 50% at 0% 90%, rgba(255,106,0,0.08), transparent 70%); }
.iaff-ct-lines { position: absolute; inset: 0; z-index: -1; pointer-events: none; opacity: 0.5;
	background-image: linear-gradient(rgba(255,255,255,0.035) 1px, transparent 1px), linear-gradient(90deg, rgba(255,255,255,0.035) 1px, transparent 1px);
	background-size: 88px 88px; -webkit-mask-image: radial-gradient(ellipse 70% 70% at 60% 40%, #000, transparent 75%); mask-image: radial-gradient(ellipse 70% 70% at 60% 40%, #000, transparent 75%); }
.iaff-ct-grid { display: grid; grid-template-columns: minmax(0, 5fr) minmax(0, 7fr); gap: clamp(40px, 6vw, 96px); align-items: start; }

.iaff-ct-title { font-size: clamp(38px, 4.4vw, 64px) !important; line-height: 1.02 !important; letter-spacing: -0.035em; margin: 14px 0 22px !important; padding: 0 !important; border: 0 !important; text-align: left !important; }
.iaff-ct-title::before { display: none !important; }
.iaff-ct-lead { font-size: 18px; line-height: 1.7; color: rgba(255,255,255,0.72); margin: 0 0 34px; max-width: 46ch; }

.iaff-ct-911 { display: flex; align-items: center; gap: 18px; padding: 22px 26px; margin-bottom: 34px; text-decoration: none !important; color: #fff !important;
	background: linear-gradient(120deg, #b31212, #e11d1d 60%, #ff3b2f); box-shadow: 0 30px 60px -30px rgba(225,29,29,0.75), inset 0 1px 0 rgba(255,255,255,0.18);
	transition: transform 0.5s var(--iaff-ease), box-shadow 0.5s ease; }
.iaff-ct-911:hover { transform: translateY(-3px); box-shadow: 0 36px 70px -30px rgba(225,29,29,0.9), inset 0 1px 0 rgba(255,255,255,0.18); }
.iaff-ct-911-dot { width: 12px; height: 12px; border-radius: 50%; background: #fff; flex: none; animation: iaff-ct-pulse 2s infinite; }
@keyframes iaff-ct-pulse { 0% { box-shadow: 0 0 0 0 rgba(255,255,255,0.6); } 70% { box-shadow: 0 0 0 14px rgba(255,255,255,0); } 100% { box-shadow: 0 0 0 0 rgba(255,255,255,0); } }
.iaff-ct-911-text { display: flex; flex-direction: column; gap: 2px; flex: 1; }
.iaff-ct-911-text small { font-size: 11px; letter-spacing: 0.22em; text-transform: uppercase; font-weight: 700; opacity: 0.85; }
.iaff-ct-911-text strong { font-family: 'Bebas Neue', sans-serif; font-size: 40px; line-height: 0.95; letter-spacing: 0.02em; font-weight: 400; }
.iaff-ct-911-arrow { font-size: 22px; transition: transform 0.5s var(--iaff-ease); }
.iaff-ct-911:hover .iaff-ct-911-arrow { transform: translateX(6px); }

.iaff-ct-list { list-style: none; margin: 0 0 40px; padding: 0; border-top: 1px solid var(--iaff-border); }
.iaff-ct-list li { display: flex; gap: 18px; align-items: flex-start; padding: 22px 0; border-bottom: 1px solid var(--iaff-border); margin: 0; }
.iaff-ct-icon { width: 46px; height: 46px; flex: none; display: grid; place-items: center; color: var(--iaff-red-2);
	background: linear-gradient(145deg, #1b1b1b, #101010); border: 1px solid rgba(255,255,255,0.08); box-shadow: inset 0 1px 0 rgba(255,255,255,0.05); }
.iaff-ct-item { display: flex; flex-direction: column; gap: 6px; font-size: 17px; line-height: 1.5; color: #fff; font-weight: 600; }
.iaff-ct-item small { font-size: 11px; letter-spacing: 0.22em; text-transform: uppercase; color: rgba(255,255,255,0.5); font-weight: 700; }
.iaff-ct-item a { color: #fff !important; text-decoration: none !important; font-size: 22px; letter-spacing: -0.01em; background: none !important; transition: color 0.3s ease; }
.iaff-ct-item a:hover { color: var(--iaff-red-2) !important; }

.iaff-ct-notes { display: grid; gap: 22px; }
.iaff-ct-notes > div { padding-left: 18px; border-left: 2px solid rgba(225,29,29,0.55); }
.iaff-ct-notes h3 { font-size: 15px !important; margin: 0 0 6px !important; color: #fff; letter-spacing: 0; }
.iaff-ct-notes p { font-size: 15px; line-height: 1.65; color: rgba(255,255,255,0.6); margin: 0; }

/* Form column */
.iaff-ct-formcol { position: sticky; top: 120px; }
.iaff-ct .iaff-form-card.iaff-ct-card { max-width: none; margin: 0; padding: clamp(28px, 4vw, 52px);
	background: linear-gradient(160deg, rgba(30,30,30,0.92), rgba(14,14,14,0.96));
	border: 1px solid rgba(255,255,255,0.09);
	box-shadow: 0 60px 120px -50px rgba(0,0,0,0.95), 0 0 0 1px rgba(0,0,0,0.5), inset 0 1px 0 rgba(255,255,255,0.06); }
.iaff-ct .iaff-form-card.iaff-ct-card::before { width: 96px; height: 3px; }
.iaff-ct-card::after { content: ''; position: absolute; inset: -1px; pointer-events: none; z-index: -1;
	background: radial-gradient(ellipse 60% 40% at 100% 0%, rgba(225,29,29,0.25), transparent 70%); filter: blur(30px); }
.iaff-ct-card-head { margin-bottom: 30px; }
.iaff-ct-card-head h2 { font-size: clamp(28px, 2.6vw, 38px) !important; margin: 12px 0 0 !important; padding: 0 !important; border: 0 !important; letter-spacing: -0.03em; text-align: left !important; }
.iaff-ct-card-head h2::before { display: none !important; }

/* Stations band */
.iaff-ct-stations { position: relative; isolation: isolate; overflow: hidden; padding: clamp(52px, 6.5vw, 104px) 0; border-top: 1px solid var(--iaff-border); }
.iaff-ct-stations-bg { position: absolute; inset: 0; z-index: -1;
	background: linear-gradient(180deg, rgba(10,10,10,0.94), rgba(10,10,10,0.84) 50%, rgba(10,10,10,0.97)), url("../img/hero-helmets.webp") center 40% / cover no-repeat;
	filter: grayscale(0.6); }
.iaff-ct-stations .iaff-deck { max-width: 38ch; }
.iaff-ct-station-grid { display: grid; grid-template-columns: repeat(4, 1fr); gap: 18px; }
.iaff-ct-station { position: relative; display: flex; flex-direction: column; gap: 10px; padding: 32px 28px 30px; min-height: 250px; text-decoration: none !important; color: #fff !important;
	background: linear-gradient(170deg, rgba(28,28,28,0.9), rgba(12,12,12,0.92)); border: 1px solid rgba(255,255,255,0.08);
	transition: transform 0.6s var(--iaff-ease), border-color 0.4s ease, box-shadow 0.6s ease; overflow: hidden; }
.iaff-ct-station::before { content: ''; position: absolute; left: 0; top: 0; height: 3px; width: 0; background: var(--iaff-red-2); transition: width 0.7s var(--iaff-ease); }
.iaff-ct-station::after { content: ''; position: absolute; inset: 0; pointer-events: none; opacity: 0; transition: opacity 0.4s ease;
	background: radial-gradient(300px circle at var(--mx, 50%) var(--my, 0%), rgba(225,29,29,0.14), transparent 60%); }
.iaff-ct-station:hover { transform: translateY(-6px); border-color: rgba(225,29,29,0.4); box-shadow: 0 40px 70px -35px rgba(0,0,0,0.95); }
.iaff-ct-station:hover::before { width: 100%; }
.iaff-ct-station:hover::after { opacity: 1; }
.iaff-ct-station-num { font-family: 'Bebas Neue', sans-serif; font-size: 64px; line-height: 0.9; color: transparent; -webkit-text-stroke: 1px rgba(255,255,255,0.35); transition: color 0.5s ease, -webkit-text-stroke-color 0.5s ease; }
.iaff-ct-station:hover .iaff-ct-station-num { color: var(--iaff-red-2); -webkit-text-stroke-color: var(--iaff-red-2); }
.iaff-ct-station-name { font-family: var(--iaff-head); font-size: 22px; font-weight: 700; letter-spacing: -0.02em; margin-top: 6px; }
.iaff-ct-station-addr { font-size: 14.5px; line-height: 1.6; color: rgba(255,255,255,0.62); flex: 1; }
.iaff-ct-station-link { font-size: 11.5px; letter-spacing: 0.2em; text-transform: uppercase; font-weight: 700; display: inline-flex; gap: 10px; align-items: center; }
.iaff-ct-station-link::after { content: '\2192'; color: var(--iaff-red-2); transition: transform 0.5s var(--iaff-ease); }
.iaff-ct-station:hover .iaff-ct-station-link::after { transform: translateX(6px); }

@media (max-width: 1100px) {
	.iaff-ct-grid { grid-template-columns: 1fr; }
	.iaff-ct-formcol { position: static; }
	.iaff-ct-station-grid { grid-template-columns: repeat(2, 1fr); }
}
@media (max-width: 640px) {
	.iaff-ct-station-grid { grid-template-columns: 1fr; }
	.iaff-ct-station { min-height: 0; }
	.iaff-ct-911-text strong { font-size: 34px; }
	.iaff-ct-item a { font-size: 20px; }
}
@media (prefers-reduced-motion: reduce) { .iaff-ct-911-dot { animation: none; } }

/* ==================================================================
   WIDE PAGE LAYOUTS (about / stations / partners / safety / support)
   ================================================================== */
.iaff-hero-part { display: contents; }
.iaff-deep { position: relative; isolation: isolate; overflow: hidden; }

/* Intro: big statement left, supporting panel right */
.iaff-intro { padding: clamp(48px, 6vw, 96px) 0; background: linear-gradient(180deg, var(--iaff-bg), #0f0d0d 60%, var(--iaff-bg)); }
.iaff-intro-grid { display: grid; grid-template-columns: minmax(0, 1.5fr) minmax(0, 1fr); gap: clamp(40px, 6vw, 110px); align-items: center; }
.iaff-intro-lead { font-family: var(--iaff-head); font-size: clamp(24px, 2.5vw, 36px); line-height: 1.32; letter-spacing: -0.025em; font-weight: 500; color: #fff; margin: 18px 0 0; max-width: 32ch; }
.iaff-intro-lead strong { color: var(--iaff-red-2); font-weight: 600; }
.iaff-intro-lead--sm { font-size: clamp(20px, 1.8vw, 26px); max-width: 38ch; margin-top: 0; }
.iaff-intro-stats { display: grid; grid-template-columns: 1fr 1fr; gap: 16px; }
.iaff-intro-stat { display: flex; flex-direction: column; gap: 12px; padding: 30px 28px; position: relative;
	background: linear-gradient(160deg, rgba(30,30,30,0.9), rgba(13,13,13,0.95)); border: 1px solid rgba(255,255,255,0.08);
	box-shadow: 0 40px 80px -45px rgba(0,0,0,0.95), inset 0 1px 0 rgba(255,255,255,0.05); }
.iaff-intro-stat::before { content: ''; position: absolute; left: 0; top: 0; width: 44px; height: 2px; background: var(--iaff-red-2); }
.iaff-intro-stat-num { font-family: 'Bebas Neue', sans-serif; font-size: clamp(56px, 5vw, 84px); line-height: 0.9; color: #fff; }
.iaff-intro-stat-label { font-size: 12px; letter-spacing: 0.18em; text-transform: uppercase; font-weight: 700; color: rgba(255,255,255,0.6); line-height: 1.5; }
.iaff-intro-feature { padding: clamp(28px, 3vw, 40px); position: relative;
	background: linear-gradient(160deg, rgba(60,14,14,0.55), rgba(14,14,14,0.95) 60%); border: 1px solid rgba(225,29,29,0.35);
	box-shadow: 0 50px 90px -50px rgba(225,29,29,0.45), inset 0 1px 0 rgba(255,255,255,0.06); }
.iaff-intro-feature h3 { font-size: clamp(22px, 2vw, 28px) !important; line-height: 1.2; margin: 14px 0 12px !important; color: #fff; letter-spacing: -0.02em; }
.iaff-intro-feature p { font-size: 15.5px; line-height: 1.7; color: rgba(255,255,255,0.7); margin: 0; }
.iaff-intro-aside .iaff-ct-911 { margin: 0; }

/* About: split, pillars, IAFF block, photo band */
.iaff-about-split .iaff-split-copy p:not(.iaff-deck) { font-size: 16.5px; line-height: 1.75; color: rgba(255,255,255,0.68); }
.iaff-about-pillars .iaff-pillars { grid-template-columns: repeat(3, 1fr); }
.iaff-iaff-block { padding: clamp(56px, 7vw, 112px) 0; background: radial-gradient(ellipse 60% 70% at 15% 50%, rgba(225,29,29,0.14), transparent 70%), var(--iaff-bg); border-top: 1px solid var(--iaff-border); }
.iaff-iaff-cross { left: -8%; right: auto; opacity: 0.05; }
.iaff-iaff-grid { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1.4fr); gap: clamp(40px, 7vw, 120px); align-items: center; }
.iaff-iaff-numbers { display: grid; gap: 40px; }
.iaff-iaff-num span { display: block; font-family: 'Bebas Neue', sans-serif; font-size: clamp(76px, 8vw, 132px); line-height: 0.85; color: #fff;
	background: linear-gradient(180deg, #fff 30%, rgba(255,255,255,0.45)); -webkit-background-clip: text; background-clip: text; -webkit-text-fill-color: transparent; }
.iaff-iaff-num small { display: block; margin-top: 12px; font-size: 12px; letter-spacing: 0.2em; text-transform: uppercase; font-weight: 700; color: var(--iaff-red-2); }
.iaff-iaff-copy h2 { margin: 14px 0 22px !important; }
.iaff-iaff-copy p { font-size: 16.5px; line-height: 1.75; color: rgba(255,255,255,0.7); }
.iaff-iaff-copy .iaff-iaff-sub { margin: 28px 0 14px; font-size: 12px; letter-spacing: 0.2em; text-transform: uppercase; font-weight: 700; color: rgba(255,255,255,0.55); }
.iaff-aff-cards { list-style: none; padding: 0; margin: 0 0 34px; display: grid; grid-template-columns: repeat(3, 1fr); gap: 14px; }
.iaff-aff-cards li { margin: 0; padding: 22px 20px; display: flex; flex-direction: column; gap: 10px; background: linear-gradient(160deg, #181818, #0e0e0e); border: 1px solid rgba(255,255,255,0.08); }
.iaff-aff-cards strong { font-family: 'Bebas Neue', sans-serif; font-size: 30px; font-weight: 400; letter-spacing: 0.02em; line-height: 1; color: #fff; }
.iaff-aff-cards span { font-size: 13.5px; line-height: 1.6; color: rgba(255,255,255,0.6); }

.iaff-photo-band { position: relative; isolation: isolate; overflow: hidden; padding: clamp(76px, 9vw, 140px) 0; }
.iaff-photo-band-bg { position: absolute; inset: -10% 0; z-index: -1;
	background: linear-gradient(90deg, rgba(8,8,8,0.96) 0%, rgba(8,8,8,0.82) 45%, rgba(8,8,8,0.35) 100%), url("../img/hero-helmets.webp") center / cover no-repeat; }
.iaff-photo-band-inner { max-width: 1280px; }
.iaff-photo-band-inner > * { max-width: 620px; }
.iaff-photo-band h2 { font-size: clamp(36px, 4vw, 58px) !important; line-height: 1.04 !important; margin: 14px 0 20px !important; letter-spacing: -0.035em; }
.iaff-photo-band p { font-size: 17.5px; line-height: 1.75; color: rgba(255,255,255,0.78); margin: 0 0 32px; }
.iaff-photo-band p a { color: #fff; text-decoration: underline; text-decoration-color: var(--iaff-red-2); text-underline-offset: 4px; }

/* Stations */
.iaff-stations-band { border-top: 0; }
.iaff-ct-station-grid--lg .iaff-ct-station { min-height: 320px; padding: 38px 32px 34px; }
.iaff-ct-station-grid--lg .iaff-ct-station-num { font-size: 96px; }
.iaff-ct-station-tag { font-size: 11px; letter-spacing: 0.24em; text-transform: uppercase; font-weight: 700; color: var(--iaff-red-2); margin-top: 8px; }
.iaff-ct-station-tag + .iaff-ct-station-name { margin-top: 0; }
.iaff-callbar { padding: clamp(36px, 4vw, 56px) 0; border-top: 1px solid var(--iaff-border); background: linear-gradient(180deg, #0f0f0f, var(--iaff-bg)); }
.iaff-callbar-inner { display: grid; grid-template-columns: minmax(0, 1.2fr) minmax(0, 1fr) auto; gap: 32px; align-items: center; }
.iaff-callbar .iaff-ct-911 { margin: 0; }
.iaff-callbar-alt { display: flex; flex-direction: column; gap: 6px; }
.iaff-callbar-alt small { font-size: 11px; letter-spacing: 0.22em; text-transform: uppercase; font-weight: 700; color: rgba(255,255,255,0.5); }
.iaff-callbar-alt a { font-size: 26px; font-weight: 700; color: #fff !important; text-decoration: none !important; letter-spacing: -0.01em; }
.iaff-callbar-alt a:hover { color: var(--iaff-red-2) !important; }

/* Partners: labelled rows */
.iaff-pgroups { padding-top: clamp(64px, 7vw, 110px); }
.iaff-pgroup { display: grid; grid-template-columns: minmax(0, 300px) minmax(0, 1fr); gap: clamp(28px, 4vw, 64px); padding: clamp(40px, 4vw, 56px) 0; border-top: 1px solid var(--iaff-border); align-items: start; }
.iaff-pgroup:first-child { border-top: 0; padding-top: 0; }
.iaff-pgroup-label { position: sticky; top: 120px; display: flex; flex-direction: column; gap: 10px; }
.iaff-pgroup-label span { font-family: 'Bebas Neue', sans-serif; font-size: 64px; line-height: 0.9; color: transparent; -webkit-text-stroke: 1px rgba(255,255,255,0.35); }
.iaff-pgroup-label h2 { font-size: clamp(22px, 2vw, 28px) !important; line-height: 1.15 !important; margin: 0 !important; padding: 0 !important; border: 0 !important; letter-spacing: -0.02em; text-align: left !important; }
.iaff-pgroup-label h2::before { display: none !important; }
.iaff-pgroups .iaff-partners-grid { grid-template-columns: repeat(3, 1fr) !important; margin: 0; }
.iaff-pgroup-note { margin: 0; padding: 28px 30px; font-size: 18px; line-height: 1.7; color: rgba(255,255,255,0.8); background: linear-gradient(160deg, #171717, #0e0e0e); border: 1px solid rgba(255,255,255,0.08); border-left: 3px solid var(--iaff-red-2); }

/* Safety */
.iaff-safety-band .iaff-safety-grid { grid-template-columns: repeat(4, 1fr); max-width: none; margin: 0; }

/* Support */
.iaff-support { padding: clamp(48px, 6vw, 96px) 0 clamp(56px, 7vw, 112px); background: linear-gradient(180deg, var(--iaff-bg), #0f0d0d 60%, var(--iaff-bg)); }
.iaff-support-grid { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); gap: clamp(40px, 6vw, 100px); align-items: center; }
.iaff-support-card { margin: 36px 0 22px; padding: 30px 32px; position: relative; background: linear-gradient(160deg, rgba(30,30,30,0.92), rgba(13,13,13,0.96)); border: 1px solid rgba(255,255,255,0.09); box-shadow: 0 50px 90px -50px rgba(0,0,0,0.95); }
.iaff-support-card::before { content: ''; position: absolute; left: 0; top: 0; width: 64px; height: 2px; background: var(--iaff-red-2); }
.iaff-support-card p { font-size: 16px; line-height: 1.7; color: rgba(255,255,255,0.72); margin: 14px 0 24px; }
.iaff-support-note { font-size: 13.5px; color: rgba(255,255,255,0.5); margin: 0; padding-left: 14px; border-left: 2px solid rgba(255,255,255,0.15); }
.iaff-support-media .iaff-split-img { aspect-ratio: 4 / 5; }
.iaff-support-media img { width: 100%; height: 100%; object-fit: cover; }

@media (max-width: 1100px) {
	.iaff-intro-grid, .iaff-iaff-grid, .iaff-support-grid { grid-template-columns: 1fr; }
	.iaff-about-pillars .iaff-pillars { grid-template-columns: 1fr; }
	.iaff-safety-band .iaff-safety-grid { grid-template-columns: repeat(2, 1fr); }
	.iaff-pgroup { grid-template-columns: 1fr; }
	.iaff-pgroup-label { position: static; flex-direction: row; align-items: baseline; gap: 16px; }
	.iaff-pgroups .iaff-partners-grid { grid-template-columns: repeat(2, 1fr) !important; }
	.iaff-callbar-inner { grid-template-columns: 1fr 1fr; }
	.iaff-callbar-inner > .iaff-btn { grid-column: 1 / -1; justify-self: start; }
	.iaff-iaff-numbers { grid-template-columns: 1fr 1fr; }
	.iaff-support-media .iaff-split-img { aspect-ratio: 4 / 3; }
}
@media (max-width: 640px) {
	.iaff-intro-stats { grid-template-columns: 1fr 1fr; gap: 10px; }
	.iaff-intro-stat { padding: 22px 18px; }
	.iaff-aff-cards, .iaff-safety-band .iaff-safety-grid, .iaff-pgroups .iaff-partners-grid { grid-template-columns: 1fr !important; }
	.iaff-callbar-inner { grid-template-columns: 1fr; }
	.iaff-iaff-numbers { grid-template-columns: 1fr; gap: 28px; }
	.iaff-pgroup-label span { font-size: 48px; }
	.iaff-photo-band-bg { background: linear-gradient(180deg, rgba(8,8,8,0.9), rgba(8,8,8,0.8)), url("../img/hero-helmets.webp") center / cover no-repeat; }
}
.iaff-pgroups .iaff-partner-card h3 { font-family: var(--iaff-head) !important; text-transform: none !important; font-size: 20px !important; line-height: 1.25 !important; letter-spacing: -0.015em !important; font-weight: 700 !important; margin: 12px 0 10px !important; }
/* Banner photo framing: keep faces in view */
.iaff-page-safety .iaff-phero-bg { background-position: center 8%; }
.iaff-page-support .iaff-phero-bg { background-position: center 58%; }

/* TIGHTER SPACING (2026-11-07): CTA strip */
.iaff-cta-strip { padding: clamp(52px, 7vw, 104px) 0; }
.iaff-section.iaff-section--news-cta { padding-top: 32px; padding-bottom: clamp(52px, 7vw, 100px); }

/* ===================== NEWS POST LAYOUT v2 (split hero + content with sidebar) ===================== */
.iaff-post-hero { position: relative; isolation: isolate; overflow: hidden; padding: 185px 0 clamp(48px, 6vw, 88px); border-bottom: 1px solid var(--iaff-border); }
.iaff-post-hero-grid { position: relative; display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); gap: clamp(32px, 5vw, 80px); align-items: center; }
.iaff-post-hero-grid:not(:has(img)) { grid-template-columns: minmax(0, 1fr); }
.iaff-post-hero-grid:not(:has(img)) .iaff-post-hero-media { display: none; }
.iaff-post-hero-copy .iaff-crumbs { margin-bottom: 30px; }
.iaff-post-hero .iaff-article-title, .iaff-post-hero h1.wp-block-post-title.iaff-article-title { max-width: 16ch; margin: 0 !important; }
.iaff-post-hero-media { position: relative; }
.iaff-post-hero-media::before { content: ""; position: absolute; left: -14px; top: -14px; width: 38%; height: 38%; border-left: 3px solid var(--iaff-red); border-top: 3px solid var(--iaff-red); pointer-events: none; }
.iaff-post-hero-media .wp-block-post-featured-image { margin: 0 !important; box-shadow: 0 40px 80px -30px rgba(0,0,0,0.8), 0 0 0 1px rgba(255,255,255,0.1); }
.iaff-post-hero-media .wp-block-post-featured-image img { display: block; width: 100%; height: auto !important; max-height: 560px; object-fit: contain; background: #0f0f0f; }
.iaff-js .iaff-post-hero-copy > *, .iaff-js .iaff-post-hero-media { opacity: 0; transform: translateY(24px); transition: opacity 1s var(--iaff-ease), transform 1.1s var(--iaff-ease); }
.iaff-ready .iaff-post-hero-copy > *, .iaff-ready .iaff-post-hero-media { opacity: 1; transform: none; }
.iaff-ready .iaff-post-hero-copy > *:nth-child(2) { transition-delay: 0.1s; }
.iaff-ready .iaff-post-hero-copy > *:nth-child(3) { transition-delay: 0.2s; }
.iaff-ready .iaff-post-hero-media { transition-delay: 0.3s; }

.iaff-post-body { padding: clamp(48px, 6vw, 96px) 0 clamp(52px, 7vw, 104px); background: linear-gradient(180deg, var(--iaff-bg), #0f0d0d 60%, var(--iaff-bg)); }
.iaff-post-grid { display: grid; grid-template-columns: minmax(0, 1fr) 340px; gap: clamp(40px, 6vw, 96px); align-items: start; }
.iaff-post-grid .iaff-single-content.iaff-article-body { padding: 0 !important; }
.iaff-post-grid .iaff-article-body > .wp-block-post-content, .iaff-post-grid .iaff-article-body > .iaff-article-foot { max-width: 780px; margin-left: 0 !important; margin-right: 0 !important; padding-left: 0 !important; padding-right: 0 !important; }
.iaff-post-grid .iaff-article-body .wp-block-post-content > *:first-child { margin-top: 0 !important; }
.iaff-post-grid .iaff-single-content p { font-size: 18px; line-height: 1.7; }

.iaff-post-aside { position: sticky; top: 120px; display: grid; gap: 18px; }
.iaff-aside-card { position: relative; padding: 28px 28px 30px; background: linear-gradient(160deg, rgba(30,30,30,0.92), rgba(13,13,13,0.96)); border: 1px solid rgba(255,255,255,0.08); border-top: 2px solid var(--iaff-red); }
.iaff-aside-card .iaff-eyebrow { display: inline-flex; margin-bottom: 16px; }
.iaff-aside-card h3 { font-size: 26px; line-height: 1.1; letter-spacing: -0.02em; margin: 0 0 14px; }
.iaff-aside-card p { font-size: 14px; color: rgba(255,255,255,0.6); margin: 8px 0 20px; }
.iaff-aside-phone { display: block; font-family: 'Bebas Neue', sans-serif; font-size: 40px; line-height: 1; color: #fff !important; text-decoration: none !important; letter-spacing: 0.02em; }
.iaff-aside-phone:hover { color: var(--iaff-red-2) !important; }
.iaff-share { display: grid; grid-template-columns: 1fr 1fr; gap: 8px; }
.iaff-share a, .iaff-share button { display: flex; align-items: center; justify-content: center; min-height: 46px; padding: 0 12px; font: 700 12px/1 Inter, sans-serif; letter-spacing: 0.16em; text-transform: uppercase; color: #fff !important; text-decoration: none !important; background: rgba(255,255,255,0.04); border: 1px solid rgba(255,255,255,0.12); cursor: pointer; transition: background .25s, border-color .25s; }
.iaff-share a:hover, .iaff-share button:hover { background: var(--iaff-red); border-color: var(--iaff-red); }

@media (max-width: 1024px) {
	.iaff-post-grid { grid-template-columns: minmax(0, 1fr); }
	.iaff-post-aside { position: static; grid-template-columns: 1fr 1fr; }
}
@media (max-width: 860px) {
	.iaff-post-hero-grid { grid-template-columns: minmax(0, 1fr); }
	.iaff-post-hero-media { margin: 8px 14px 0; }
}
@media (max-width: 768px) {
	.iaff-post-hero { padding-top: 128px; }
	.iaff-post-aside { grid-template-columns: minmax(0, 1fr); }
	.iaff-post-grid .iaff-single-content p { font-size: 17px; }
}
.iaff-post-hero .iaff-article-meta { flex-direction: column; align-items: flex-start; gap: 10px; }
.iaff-post-hero .iaff-article-cats + .iaff-article-date::before { display: none; }
