/**
 * Arts for Everyone — component styles.
 *
 * Tokens (colors, type, spacing) come from theme.json as --wp--preset--* variables.
 * This file only styles components theme.json can't express. Loaded on the front end
 * and in the editor (add_editor_style), so staff see the real design while editing.
 */

/* ---------------------------------------------------------------------------
 * Tokens & accents
 * ------------------------------------------------------------------------ */
:root {
	--afe-ink: var(--wp--preset--color--contrast);
	--afe-paper: var(--wp--preset--color--base);
	--afe-line: var(--wp--preset--color--surface-2);
	--afe-radius: var(--wp--custom--radius--md);
	--afe-ui: var(--wp--preset--font-family--ui);
	--afe-display: var(--wp--preset--font-family--display);
	--afe-subtitle: var(--wp--preset--font-family--subtitle);
	--afe-header-h: var(--wp--custom--header-height);
	/* The site header scrolls with the page (by design), so sticky bars pin to the very top —
	 * just under the WordPress admin toolbar when it's showing. Below 600px the toolbar scrolls away too. */
	--afe-sticky-offset: var(--wp-admin--admin-bar--height, 0px);
	--afe-accent: var(--afe-ink);
	--afe-accent-light: var(--wp--preset--color--surface);
	/* AA-contrast shades of the brand colors: green behind white text (5.0:1), red for text and the hero band (5.1:1). */
	--afe-green-ink: #02804a;
	--afe-red-ink: #d91920;
	--afe-ease: cubic-bezier(.2, .7, .2, 1);
}

[class*="-light-background-color"] { --wp--preset--color--muted: #4d4d4d; }
/* --afe-accent-ink: the accent as large text on its own light tint, ≥ 3:1 (card initials). */
.has-accent-green { --afe-accent: var(--wp--preset--color--green); --afe-accent-light: var(--wp--preset--color--green-light); --afe-accent-ink: var(--afe-green-ink); }
.has-accent-purple { --afe-accent: var(--wp--preset--color--purple); --afe-accent-light: var(--wp--preset--color--purple-light); --afe-accent-ink: var(--wp--preset--color--purple); }
.has-accent-red { --afe-accent: var(--wp--preset--color--red); --afe-accent-light: var(--wp--preset--color--red-light); --afe-accent-ink: #c8101a; }
.has-accent-blue { --afe-accent: var(--wp--preset--color--blue); --afe-accent-light: var(--wp--preset--color--blue-light); --afe-accent-ink: var(--wp--preset--color--blue); }
.has-accent-orange { --afe-accent: var(--wp--preset--color--orange); --afe-accent-light: var(--wp--preset--color--orange-light); --afe-accent-ink: #c93a14; }
.has-accent-yellow { --afe-accent: var(--wp--preset--color--yellow); --afe-accent-light: var(--wp--preset--color--yellow-light); --afe-accent-ink: #8a7300; }

@media (max-width: 600px) { :root { --afe-sticky-offset: 0px; } }
html { scroll-padding-top: calc(var(--afe-sticky-offset) + 1rem); }
body { -webkit-font-smoothing: antialiased; text-rendering: optimizeLegibility; }
:where(img) { max-width: 100%; height: auto; }

.afe-icon { width: 1.25em; height: 1.25em; flex: none; vertical-align: -0.2em; }

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

/* ---------------------------------------------------------------------------
 * Header
 * ------------------------------------------------------------------------ */
.afe-header {
	position: relative; z-index: 50; /* Scrolls with the page; z-index keeps dropdowns above content. */
	background: var(--afe-paper);
	border-bottom: 1px solid var(--afe-line);
}
.afe-header__inner { min-height: var(--afe-header-h); gap: var(--wp--preset--spacing--30); }

.afe-logo { display: flex; align-items: flex-end; gap: .75rem; color: var(--afe-ink); text-decoration: none; flex: none; }
/* Outline building mark (no box). A mask so the mark takes the text color (white in the footer/drawer if needed). */
.afe-logo__mark {
	width: 92px; height: 52px; background: currentColor;
	-webkit-mask: url(../images/raac-mark-outline.svg) center / contain no-repeat; mask: url(../images/raac-mark-outline.svg) center / contain no-repeat;
}
.afe-logo__text { --afe-mark-h: 52px; font-family: var(--afe-display); text-transform: uppercase; font-size: 1.375rem; line-height: 1; white-space: nowrap;
	/* Baseline on the building's ground line: the drawing stops 6.9% above the mark's box, and a line-height-1
	 * Impact line keeps its baseline .1135em above its own bottom. */
	margin-bottom: calc(var(--afe-mark-h) * .069 - .1135em); }
.afe-logo__break { display: none; }
/* Narrow desktops: stack the name on two lines so the menu bar keeps one row. */
@media (min-width: 1080px) and (max-width: 1199px) {
	.afe-logo__text { white-space: normal; }
	.afe-logo__break { display: inline; }
}

/* ---------------------------------------------------------------------------
 * Header menu (blocks/site-nav) — Appearance → Menus → "Header" location:
 *   ≥ 1080px  menu bar; dropdowns open on hover, keyboard focus or the chevron
 *   < 1080px  hamburger → slide-in drawer with accordions and the Donate button
 * ------------------------------------------------------------------------ */
.afe-nav { flex: 1 1 auto; display: flex; justify-content: flex-end; font-family: var(--afe-ui); }
.afe-header__actions { flex: none; }
.afe-nav ul { list-style: none; margin: 0; padding: 0; }
.afe-nav *, .afe-nav *::before, .afe-drawer * { box-sizing: border-box; }
.afe-nav__empty { margin: 0; font: 600 .875rem/1.2 var(--afe-ui); }

/* Bar */
.afe-nav__bar { display: flex; align-items: center; gap: 2px; }
.afe-nav__bar > .afe-nav__item { position: relative; display: flex; align-items: center; }
.afe-nav__bar .afe-nav__link {
	display: inline-flex; align-items: center; min-height: 35px; padding: .55rem .7rem; border-radius: var(--wp--custom--radius--pill);
	font: 600 1rem/1.1 var(--afe-ui); color: var(--afe-ink); text-decoration: none; white-space: nowrap;
}
.afe-nav__bar .has-children > .afe-nav__link { padding-right: 1.6rem; }
.afe-nav__bar .afe-nav__item:hover > .afe-nav__link, .afe-nav__bar .afe-nav__item.is-open > .afe-nav__link { background: var(--wp--preset--color--surface); }
.afe-nav__bar .afe-nav__item.is-current > .afe-nav__link { background: var(--afe-ink); color: var(--afe-paper); }
.afe-nav__bar .afe-nav__toggle {
	position: absolute; right: calc(.35rem - 2px); top: 50%; display: grid; place-items: center; width: 24px; height: 24px; margin-top: -12px; padding: 0; /* 24px target (WCAG 2.5.8), same chevron position */
	border: 0; border-radius: 50%; background: none; color: inherit; cursor: pointer;
}
.afe-nav__bar .is-current > .afe-nav__toggle { color: var(--afe-paper); }
.afe-nav__bar .afe-nav__toggle .afe-icon { width: 12px; height: 12px; stroke-width: 2.6; transform: rotate(90deg); transition: transform .15s var(--afe-ease); }
.afe-nav__bar .afe-nav__toggle[aria-expanded="true"] .afe-icon { transform: rotate(-90deg); }
.afe-nav__toggle:focus-visible, .afe-nav__link:focus-visible, .afe-nav__sub a:focus-visible { outline: 3px solid var(--wp--preset--color--blue); outline-offset: 2px; }

/* Dropdowns. A bridge spans the gap so the pointer never "leaves" on the way down; closing waits a
 * beat, except when the pointer moves to another top-level item (then it closes at once). */
.afe-nav__bar .afe-nav__sub {
	position: absolute; z-index: 60; top: calc(100% + .25rem); left: 0; min-width: 250px; padding: .4rem;
	border: 1px solid var(--afe-line); border-radius: var(--afe-radius); background: var(--afe-paper); box-shadow: var(--wp--preset--shadow--raised);
	visibility: hidden; opacity: 0; transition: opacity .12s ease .25s, visibility 0s linear .37s;
}
.afe-nav__bar .afe-nav__sub::before { content: ""; position: absolute; left: -12px; right: -12px; bottom: 100%; height: calc(.25rem + 12px); }
.afe-nav__bar .afe-nav__item:is(:hover, :focus-within, .is-open) > .afe-nav__sub { visibility: visible; opacity: 1; transition-delay: 0s, 0s; }
.afe-nav__bar:has(> .afe-nav__item:hover) > .afe-nav__item:not(:hover):not(.is-open) > .afe-nav__sub { transition: none; visibility: hidden; opacity: 0; }
.afe-nav__bar .afe-nav__item.is-dismissed:not(.is-open) > .afe-nav__sub { transition: none; visibility: hidden; opacity: 0; } /* Esc closed it (app.js) */
.afe-nav__bar .afe-nav__sub a { display: block; padding: .6rem .75rem; border-radius: var(--wp--custom--radius--sm); font: 500 .9375rem/1.25 var(--afe-ui); color: var(--afe-ink); text-decoration: none; }
.afe-nav__bar .afe-nav__sub a:hover { background: var(--wp--preset--color--surface); }
.afe-nav__bar .afe-nav__sub [aria-current="page"] { font-weight: 700; }

/* Hamburger */
.afe-nav__open {
	display: none; place-items: center; width: 44px; height: 44px; padding: 0; border: 0; border-radius: 50%;
	background: var(--afe-ink); color: var(--afe-paper); cursor: pointer; transition: transform .15s var(--afe-ease);
}
.afe-nav__open:hover { transform: scale(1.06); }
.afe-nav__open .afe-icon { width: 22px; height: 22px; }

/* Drawer */
.afe-drawer { margin: 0 0 0 auto; padding: 0; width: min(420px, 88vw); max-width: none; height: 100dvh; max-height: none; border: 0; background: none; overflow: visible; }
.afe-drawer::backdrop { background: rgb(0 0 0 / 45%); animation: afe-fade .2s ease-out both; }
.afe-drawer[open] { animation: afe-slide-in .32s var(--afe-ease) both; }
.afe-drawer__panel {
	display: flex; flex-direction: column; height: 100%; overflow-y: auto; overscroll-behavior: contain;
	padding: calc(var(--afe-sticky-offset) + 1rem) 1.25rem calc(1.5rem + env(safe-area-inset-bottom));
	background: var(--afe-paper); color: var(--afe-ink); box-shadow: -18px 0 50px rgb(0 0 0 / 22%);
}
.afe-drawer__head { display: flex; align-items: center; justify-content: space-between; margin-bottom: 1rem; }
.afe-drawer__home { color: var(--afe-ink); }
.afe-drawer__home .afe-logo__mark { display: block; width: 75px; height: 42px; }
.afe-drawer__close { display: grid; place-items: center; width: 44px; height: 44px; padding: 0; border: 0; border-radius: 50%; background: var(--wp--preset--color--surface); color: var(--afe-ink); cursor: pointer; }
.afe-drawer__close:hover { background: var(--wp--preset--color--surface-2); }
.afe-drawer__close .afe-icon { width: 22px; height: 22px; }
.afe-drawer__list > .afe-nav__item { position: relative; display: flex; flex-wrap: wrap; align-items: center; border-bottom: 1px solid var(--afe-line); }
.afe-drawer__list .afe-nav__link { flex: 1; padding: 1rem 3.25rem 1rem 0; font: 400 1.6rem/1 var(--afe-display); text-transform: uppercase; color: var(--afe-ink); text-decoration: none; }
.afe-drawer__list .afe-nav__item.is-current > .afe-nav__link { color: var(--afe-red-ink); }
.afe-drawer__list .afe-nav__toggle {
	position: absolute; right: 0; top: .55rem; display: grid; place-items: center; width: 44px; height: 44px; padding: 0; border: 0; border-radius: 50%;
	background: var(--wp--preset--color--surface); color: var(--afe-ink); cursor: pointer;
}
.afe-drawer__list .afe-nav__toggle:hover { background: var(--wp--preset--color--surface-2); }
.afe-drawer__list .afe-nav__toggle .afe-icon { width: 18px; height: 18px; transform: rotate(90deg); transition: transform .2s var(--afe-ease); }
.afe-drawer__list .afe-nav__toggle[aria-expanded="true"] .afe-icon { transform: rotate(-90deg); }
.afe-drawer__list .afe-nav__sub { display: none; flex: 0 0 100%; margin: 0 0 .75rem; padding-left: .9rem; border-left: 3px solid var(--afe-ink); }
.afe-drawer__list .afe-nav__toggle[aria-expanded="true"] + .afe-nav__sub { display: block; animation: afe-fade .2s ease-out; }
.afe-drawer__list .afe-nav__sub a { display: block; padding: .6rem 0; font: 500 1.05rem/1.3 var(--afe-ui); color: var(--afe-ink); text-decoration: none; }
.afe-drawer__list .afe-nav__sub [aria-current="page"] { font-weight: 700; text-decoration: underline; text-decoration-thickness: 2px; text-underline-offset: 4px; }
.afe-drawer__cta { margin-top: 1.5rem; }
.afe-drawer__cta .wp-block-button__link { display: block; width: 100%; padding: 1rem; text-align: center; font-size: 1.25rem; }
html.afe-drawer-open { overflow: hidden; }

@media (max-width: 1079px) {
	.afe-nav__bar { display: none; }
	.afe-nav__open { display: grid; }
	.afe-header .afe-header__inner { gap: .5rem; }
	.afe-header .afe-header__actions { order: 2; margin-left: auto; } /* beats core's "body .is-layout-flex > * { margin: 0 }" */
	.afe-nav { order: 3; flex: none; }
}
@media (min-width: 1080px) { .afe-drawer { display: none; } }

@keyframes afe-slide-in { from { transform: translateX(100%); } to { transform: none; } }
@keyframes afe-fade { from { opacity: 0; } to { opacity: 1; } }

.afe-search-btn {
	display: inline-flex; align-items: center; gap: .5rem; height: 42px; padding: 0 .75rem;
	border: 0; border-radius: var(--wp--custom--radius--pill); background: none;
	font: 500 var(--wp--preset--font-size--sm) / 1 var(--afe-ui); color: var(--afe-ink); cursor: pointer;
	transition: background .15s;
}
.afe-search-btn:hover { background: var(--wp--preset--color--surface); }
.afe-search-btn .afe-kbd { display: none; }

/* Donate: a header button on the desktop bar (not a menu item); in the drawer below 1080px. */
.afe-header__donate { margin: 0; }
.afe-header__donate .wp-block-button__link { padding: .8em 1.5em .7em; }
@media (max-width: 1079px) { .afe-header .afe-header__donate { display: none; } }
.afe-kbd { font: 600 11px/1 var(--afe-ui); border: 1px solid #ccc; border-radius: 4px; padding: 3px 6px; background: #fff; color: #555; }

@media (max-width: 1079px) {
	.afe-search-btn__label { display: none; }
	.afe-search-btn { width: 44px; height: 44px; padding: 0; justify-content: center; border-radius: 50%; background: var(--wp--preset--color--surface); }
	.afe-logo__mark { width: 75px; height: 42px; }
	.afe-logo__text { --afe-mark-h: 42px; font-size: 1rem; white-space: normal; }
	.afe-logo__break { display: inline; }
}
@media (max-width: 359px) { /* 320px / 400% zoom: logo + search + menu must fit */
	.afe-logo { gap: .5rem; }
	.afe-logo__mark { width: 64px; height: 36px; }
	.afe-logo__text { --afe-mark-h: 36px; }
}
@media (max-width: 781px) {
	:root { --afe-header-h: 60px; }
}

/* ---------------------------------------------------------------------------
 * Global search (field + dialog)
 * ------------------------------------------------------------------------ */
.afe-search { display: flex; gap: .5rem; max-width: 760px; }
.afe-search__field {
	flex: 1; display: flex; align-items: center; gap: .6rem; padding: 0 1.1rem; min-height: 60px;
	background: var(--afe-paper); border: 2px solid var(--afe-ink); border-radius: var(--wp--custom--radius--pill);
	box-shadow: var(--wp--preset--shadow--hard);
}
.afe-search__field input {
	flex: 1; min-width: 0; border: 0; outline: 0; background: none; font: 500 1.125rem/1.2 var(--afe-ui); color: var(--afe-ink);
}
.afe-search__field:focus-within { box-shadow: 6px 6px 0 var(--wp--preset--color--red); }
.afe-search__submit { flex: none; }
@media (max-width: 600px) { .afe-search__submit { display: none; } }

.afe-palette {
	width: min(720px, calc(100vw - 1.5rem)); max-height: min(80vh, 760px); margin: 8vh auto auto; padding: 0;
	border: 0; border-radius: var(--wp--custom--radius--lg); background: var(--afe-paper); color: var(--afe-ink);
	box-shadow: 0 30px 80px rgb(0 0 0 / 35%); overflow: hidden; display: flex; flex-direction: column;
}
.afe-palette:not([open]) { display: none; }
.afe-palette::backdrop { background: rgb(0 0 0 / 45%); backdrop-filter: blur(3px); }
.afe-palette[open] { animation: afe-pop .18s var(--afe-ease); }
@keyframes afe-pop { from { opacity: 0; transform: translateY(8px) scale(.98); } }
.afe-palette__bar { display: flex; align-items: center; gap: .6rem; padding: 1rem 1.2rem; border-bottom: 1px solid var(--afe-line); }
.afe-palette__bar input { flex: 1; border: 0; outline: 0; font: 500 1.25rem/1.2 var(--afe-ui); background: none; min-width: 0; }
.afe-palette__close { border: 0; background: var(--wp--preset--color--surface); border-radius: 8px; padding: .4rem; cursor: pointer; display: flex; }
.afe-palette__body { overflow-y: auto; padding: .5rem; overscroll-behavior: contain; }
.afe-palette__group { padding: .5rem 0; }
.afe-palette__group h3 {
	display: flex; align-items: center; gap: .5rem; margin: 0; padding: .4rem .7rem;
	font: 700 12px/1 var(--afe-ui); letter-spacing: .06em; text-transform: uppercase; color: var(--wp--preset--color--muted);
}
.afe-palette__group h3 a { margin-left: auto; color: var(--afe-ink); text-transform: none; letter-spacing: 0; font-size: 13px; }
.afe-palette__item { display: flex; align-items: center; gap: .8rem; padding: .55rem .7rem; border-radius: 10px; color: inherit; text-decoration: none; }
.afe-palette__item:hover, .afe-palette__item.is-active { background: var(--wp--preset--color--surface); }
.afe-palette__thumb { width: 44px; height: 44px; border-radius: 8px; object-fit: cover; background: var(--wp--preset--color--surface-2); flex: none; display: grid; place-items: center; }
.afe-palette__item strong { display: block; font: 600 1rem/1.25 var(--afe-ui); }
.afe-palette__item small { display: block; font: 400 .85rem/1.3 var(--afe-ui); color: var(--wp--preset--color--muted); }
.afe-palette__hint { padding: 1.25rem; font: 400 .95rem/1.4 var(--afe-ui); color: var(--wp--preset--color--muted); }
.afe-palette__suggest { display: flex; flex-wrap: wrap; gap: .5rem; padding: .25rem .7rem 1rem; }
.afe-palette__suggest a { font: 600 .9rem/1 var(--afe-ui); padding: .55rem .8rem; border-radius: 999px; background: var(--wp--preset--color--surface); text-decoration: none; color: inherit; display: inline-flex; gap: .4rem; align-items: center; }
.afe-palette__suggest a:hover, .afe-palette__suggest a.is-active { box-shadow: inset 0 0 0 2px var(--afe-ink); } /* arrow-key highlight */
@media (max-width: 600px) {
	.afe-palette { margin: 0; width: 100vw; max-width: 100vw; height: 100dvh; max-height: 100dvh; border-radius: 0; }
}

/* ---------------------------------------------------------------------------
 * Hero & page heroes
 * ------------------------------------------------------------------------ */
.afe-hero__title { margin-bottom: var(--wp--preset--spacing--30); line-height: .88; }
.afe-hero__title mark { background: none; }
.afe-hero__lede { max-width: 38ch; font-family: var(--afe-subtitle); }
.afe-hero .afe-search { margin-top: var(--wp--preset--spacing--40); }
.afe-quick { margin-top: var(--wp--preset--spacing--30); }
.afe-quick .wp-block-button__link { font-family: var(--afe-ui); text-transform: none; font-weight: 600; letter-spacing: 0; padding: .55em 1em; border-width: 1px !important; }

/*
 * Page title — one treatment for every page, post, archive, search and profile.
 * Sizing lives here (not in block attributes) so it can't drift per template.
 */
.afe-page-hero {
	display: flex; flex-direction: column; align-items: flex-start; gap: var(--wp--preset--spacing--20);
	padding-top: var(--wp--preset--spacing--50); padding-bottom: var(--wp--preset--spacing--50);
	/* Left edge lines up with the header logo at every width. */
	padding-inline: max(var(--wp--style--root--padding-left, 1rem), calc((100% - var(--wp--style--global--wide-size)) / 2)) !important;
	margin-top: 0; margin-bottom: var(--wp--preset--spacing--50); border-bottom: 1px solid var(--afe-line);
}
.afe-page-hero > * { margin-block: 0 !important; max-width: 100%; }
.afe-page-hero > .afe-search { align-self: stretch; max-width: 760px; }
/* Locked with !important: plugin CSS (e.g. MEC's `.mec-wrap h1`) must not restyle page titles. */
.afe-page-title {
	margin: 0 !important; font-family: var(--afe-display) !important; font-weight: 400 !important; text-transform: uppercase !important;
	font-size: var(--wp--preset--font-size--xxl) !important; line-height: .92 !important; letter-spacing: .005em !important; color: var(--afe-ink) !important;
	max-width: min(100%, 25ch); overflow-wrap: anywhere; text-wrap: balance;
}
.afe-page-lede { max-width: 52ch; font-family: var(--afe-subtitle); font-size: var(--wp--preset--font-size--subtitle); line-height: 1.4; color: var(--afe-ink); }
.afe-page-lede p { margin: 0; }
.afe-header-link { display: inline-flex; align-items: center; gap: 6px; margin-top: 4px !important; font: 600 .9375rem/1 var(--afe-ui); color: var(--afe-ink); text-decoration: none; }
.afe-header-link .afe-icon { width: 18px; height: 18px; transition: transform .15s var(--afe-ease); }
.afe-header-link:hover { text-decoration: underline; }
p.afe-header-link a { color: inherit; text-decoration: none; }
p.afe-header-link a:hover { text-decoration: underline; }
.afe-header-link:hover .afe-icon { transform: translateX(3px); }
.afe-page-hero .afe-back { align-self: flex-start; margin-bottom: 0; background: var(--wp--preset--color--surface); }
.afe-page-hero .afe-search { margin-top: var(--wp--preset--spacing--20); }
/* Subtitle directly under a major heading: the only place the serif is used besides quotes. */
.afe-lede, .is-style-subtitle { font-family: var(--afe-subtitle); font-size: var(--wp--preset--font-size--subtitle); line-height: 1.4; max-width: 50ch; }

/* ---------------------------------------------------------------------------
 * Tiles (homepage "Explore"): accent card, big circle peeking in at the
 * bottom-right, count pill. 3 across on desktop, 2 on phones.
 * ------------------------------------------------------------------------ */
.afe-tiles { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 24px; }
.afe-tile {
	position: relative; display: flex; flex-direction: column; gap: 20px; min-height: 300px; padding: 20px;
	background: var(--afe-accent-light); color: var(--afe-ink); text-decoration: none; border-radius: var(--afe-radius);
	border: 2px solid var(--afe-ink); overflow: hidden; isolation: isolate;
	transition: transform .18s var(--afe-ease), box-shadow .18s var(--afe-ease);
}
.afe-tile::after {
	content: ""; position: absolute; z-index: -1; right: -60px; bottom: -110px; width: 240px; height: 240px; border-radius: 50%;
	background: var(--afe-accent); transition: transform .3s var(--afe-ease);
}
.afe-tile:hover, .afe-tile:focus-visible { transform: translate(-3px, -3px); box-shadow: 6px 6px 0 var(--afe-ink); }
.afe-tile:hover::after { transform: scale(1.12); }
.afe-tile__icon { width: 32px; height: 32px; }
.afe-tile__text { display: flex; flex-direction: column; gap: 10px; padding-right: 8px; }
.afe-tile__label { font: 400 var(--wp--preset--font-size--lg)/1 var(--afe-display); text-transform: uppercase; }
.afe-tile__desc { font: 400 1.1875rem/1.5 var(--afe-subtitle); max-width: 30ch; }
.afe-tile__count {
	position: absolute; right: 16px; bottom: 16px; padding: 5px 12px; border-radius: var(--wp--custom--radius--pill);
	background: var(--afe-paper); font: 400 .875rem/1.35 var(--afe-ui); white-space: nowrap;
}
.afe-tile__count strong { font: 600 1rem/1.3 var(--afe-ui); }
.afe-tile__go { position: absolute; top: 20px; right: 20px; opacity: 0; transform: translateX(-4px); transition: .18s var(--afe-ease); }
.afe-tile:hover .afe-tile__go, .afe-tile:focus-visible .afe-tile__go { opacity: 1; transform: none; }
@media (max-width: 781px) {
	.afe-tiles { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 16px; }
	.afe-tile { min-height: 232px; padding: 16px; gap: 14px; }
	.afe-tile::after { width: 140px; height: 140px; right: -40px; bottom: -60px; }
	.afe-tile__label { font-size: 1.25rem; }
	.afe-tile__desc { font-size: .9375rem; line-height: 1.4; }
	.afe-tile__count { right: 10px; bottom: 10px; }
	.afe-tile__go { display: none; }
}

/* ---------------------------------------------------------------------------
 * Cards
 * ------------------------------------------------------------------------ */
.afe-grid { display: grid; gap: var(--wp--preset--spacing--30); }
.afe-grid--grid { grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 24px; }
@media (max-width: 1100px) { .afe-grid--grid { grid-template-columns: repeat(3, minmax(0, 1fr)); } }
.afe-grid--list { grid-template-columns: repeat(auto-fill, minmax(340px, 1fr)); gap: .75rem; }
@media (max-width: 600px) { .afe-grid--grid { grid-template-columns: repeat(2, 1fr); gap: .75rem; } .afe-grid--list { grid-template-columns: 1fr; } }

.afe-card { position: relative; min-width: 0; }
.afe-card__link {
	display: flex; flex-direction: column; height: 100%; color: inherit; text-decoration: none;
	background: var(--afe-paper); border-radius: var(--afe-radius); overflow: hidden;
	box-shadow: var(--wp--preset--shadow--card); transition: transform .18s var(--afe-ease), box-shadow .18s var(--afe-ease);
}
.afe-card__link:hover { transform: translateY(-3px); box-shadow: var(--wp--preset--shadow--raised); }
.afe-card__link:focus-visible { outline: 3px solid var(--wp--preset--color--blue); outline-offset: 2px; }
.afe-card__media { position: relative; aspect-ratio: 349 / 286; background: var(--afe-accent-light); overflow: hidden; }
.afe-card__img { width: 100%; height: 100%; object-fit: cover; display: block; transition: transform .4s var(--afe-ease); }
.afe-card__link:hover .afe-card__img { transform: scale(1.04); }
.afe-card.is-placeholder .afe-card__media { display: grid; place-items: center; }
.afe-card__initials { font: 400 clamp(2.5rem, 6vw, 4rem)/1 var(--afe-display); color: var(--afe-accent-ink, var(--afe-accent)); letter-spacing: .02em; }
.afe-card__type-icon { position: absolute; left: .75rem; bottom: .75rem; width: 22px; height: 22px; color: var(--afe-ink); opacity: .55; }
.afe-card__body { display: flex; flex-direction: column; align-items: flex-start; gap: .75rem; padding: 1.5rem 1rem; flex: 1; }
.afe-card__title { margin: 0; font: 800 1.125rem/1.1 var(--afe-ui); text-transform: none; letter-spacing: 0; overflow-wrap: anywhere; }
.afe-card__meta { margin: 0; font: 400 .875rem/1.35 var(--afe-ui); color: var(--wp--preset--color--muted); display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; }
.afe-card__desc { margin: 0; font: 400 .875rem/1.35 var(--afe-ui); color: var(--wp--preset--color--muted); display: -webkit-box; -webkit-line-clamp: 3; -webkit-box-orient: vertical; overflow: hidden; }
.afe-card__date {
	position: absolute; top: .6rem; left: .6rem; display: flex; flex-direction: column; align-items: center; min-width: 52px; padding: .35rem .5rem .4rem;
	background: var(--afe-paper); border-radius: 10px; box-shadow: var(--wp--preset--shadow--card); line-height: 1;
}
.afe-card__date span { font: 700 11px/1 var(--afe-ui); text-transform: uppercase; letter-spacing: .06em; color: var(--afe-red-ink); }
.afe-card__date strong { font: 400 1.75rem/1 var(--afe-display); }
.afe-flag { position: absolute; top: .6rem; right: .6rem; display: grid; place-items: center; width: 34px; height: 34px; border-radius: 50%; background: var(--afe-paper); box-shadow: var(--wp--preset--shadow--card); }
.afe-flag .afe-icon { width: 18px; height: 18px; }

/* List / compact cards: image left */
.afe-card--list .afe-card__link, .afe-card--compact .afe-card__link { flex-direction: row; align-items: stretch; }
.afe-card--list .afe-card__media { width: 96px; aspect-ratio: auto; flex: none; }
.afe-card--list .afe-card__initials { font-size: 2rem; }
.afe-card--list .afe-card__type-icon, .afe-card--list .afe-flag { display: none; }
.afe-card--list .afe-card__title { font-size: 1.0625rem; }

/* Directory grids (Figma): photos 312 × 284; places and instructors without a photo get a short 2:1 initials
 * tile; events and ArtScene venues without a photo are a plain tint (no initials). */
.afe-dir__results.afe-grid--grid .afe-card__media { aspect-ratio: 312 / 284; }
.afe-grid--grid .afe-card--asset.is-placeholder .afe-card__media, .afe-grid--grid .afe-card--instructor.is-placeholder .afe-card__media { aspect-ratio: 2 / 1; }
:is(.afe-card--mec-events, .afe-card--location).is-placeholder :is(.afe-card__initials, .afe-card__type-icon) { display: none; }

/* ---------------------------------------------------------------------------
 * Badges & chips
 * ------------------------------------------------------------------------ */
.afe-badges { display: flex; flex-wrap: wrap; gap: .4rem; }
.afe-badge {
	display: inline-flex; align-items: center; gap: .35rem; padding: .3rem .6rem .28rem; border-radius: var(--wp--custom--radius--pill);
	background: var(--afe-accent-light); color: var(--afe-ink); font: 700 11px/1.1 var(--afe-ui); letter-spacing: .05em; text-transform: uppercase; text-decoration: none;
}
.afe-badge::before { content: ""; width: 7px; height: 7px; border-radius: 50%; background: var(--afe-accent); }
.afe-badge.is-flag { background: var(--afe-paper); border: 1px solid var(--afe-ink); }
.afe-badge.is-flag::before { display: none; }
.afe-badge .afe-icon { width: 14px; height: 14px; }
a.afe-badge:hover { background: var(--afe-accent); color: var(--afe-paper); }
a.afe-badge:hover::before { background: var(--afe-paper); }
.has-accent-yellow a.afe-badge:hover, a.afe-badge.has-accent-yellow:hover, a.afe-badge.has-accent-green:hover, a.afe-badge.has-accent-orange:hover { color: var(--afe-ink); }

.afe-chips {
	display: flex; gap: .5rem; overflow-x: auto; scroll-snap-type: x proximity; padding: .25rem 0 .6rem;
	margin-inline: calc(var(--wp--style--root--padding-left, 1rem) * -1); padding-inline: var(--wp--style--root--padding-left, 1rem);
	scrollbar-width: none; -webkit-mask-image: linear-gradient(90deg, transparent 0, #000 1rem, #000 calc(100% - 2rem), transparent);
	mask-image: linear-gradient(90deg, transparent 0, #000 1rem, #000 calc(100% - 2rem), transparent);
}
.afe-chips::-webkit-scrollbar { display: none; }
.afe-chip { position: relative; flex: none; scroll-snap-align: start; cursor: pointer; }
.afe-chip input, .afe-segmented input { position: absolute; inset: 0; opacity: 0; pointer-events: none; margin: 0; }
.afe-chip span {
	display: inline-flex; align-items: center; gap: .45rem; padding: .55rem .9rem; border-radius: var(--wp--custom--radius--pill);
	border: 1px solid var(--afe-line); background: var(--afe-paper); font: 600 .9rem/1 var(--afe-ui); white-space: nowrap;
	transition: background .15s, border-color .15s, color .15s;
}
.afe-chip small { font-weight: 500; color: var(--wp--preset--color--muted); }
.afe-chip:hover span { border-color: var(--afe-ink); }
.afe-chip input:checked + span { background: var(--afe-ink); border-color: var(--afe-ink); color: var(--afe-paper); }
.afe-chip input:checked + span small { color: #bbb; }
.afe-chip input:focus-visible + span { outline: 3px solid var(--wp--preset--color--blue); outline-offset: 2px; }
.afe-dot { width: 9px; height: 9px; border-radius: 50%; background: var(--afe-accent); }

/* ---------------------------------------------------------------------------
 * Form controls (directory)
 * ------------------------------------------------------------------------ */
.afe-field { display: flex; align-items: center; gap: .5rem; }
.afe-field--search {
	flex: 1 1 280px; min-height: 48px; padding: 0 1rem; background: var(--wp--preset--color--surface);
	border: 1px solid transparent; border-radius: var(--wp--custom--radius--pill); transition: border-color .15s, background .15s;
}
.afe-field--search:focus-within { background: var(--afe-paper); border-color: var(--afe-ink); }
.afe-field--search input { flex: 1; min-width: 0; border: 0; outline: 0; background: none; font: 500 1rem/1.2 var(--afe-ui); }
.afe-field--select { flex-direction: column; align-items: stretch; gap: .3rem; min-width: 220px; }
.afe-field__label { font: 700 12px/1 var(--afe-ui); text-transform: uppercase; letter-spacing: .06em; color: var(--wp--preset--color--muted); }
.afe-field select {
	appearance: none; min-height: 44px; padding: 0 2.25rem 0 .9rem; border: 1px solid var(--afe-line); border-radius: 10px; background: var(--afe-paper) 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='%23000' stroke-width='2'/%3E%3C/svg%3E") right .9rem center no-repeat;
	font: 500 .95rem/1.2 var(--afe-ui); color: var(--afe-ink);
}
.afe-segmented { display: inline-flex; padding: 4px; gap: 2px; border-radius: var(--wp--custom--radius--pill); background: var(--wp--preset--color--surface); flex: none; }
.afe-segmented label { position: relative; cursor: pointer; }

.afe-segmented span { display: inline-flex; align-items: center; gap: .4rem; min-height: 40px; padding: 0 1rem; border-radius: var(--wp--custom--radius--pill); font: 600 .9rem/1 var(--afe-ui); transition: background .15s, box-shadow .15s; }
.afe-segmented input:checked + span { background: var(--afe-paper); box-shadow: 0 1px 3px rgb(0 0 0 / 15%); }
.afe-segmented input:focus-visible + span { outline: 3px solid var(--wp--preset--color--blue); }
.afe-segmented .afe-icon { width: 18px; height: 18px; }
.afe-btn-ghost {
	display: inline-flex; align-items: center; gap: .45rem; min-height: 48px; padding: 0 1.1rem; border-radius: var(--wp--custom--radius--pill);
	border: 1px solid var(--afe-line); background: var(--afe-paper); font: 600 .95rem/1 var(--afe-ui); cursor: pointer; color: var(--afe-ink);
}
.afe-btn-ghost[aria-expanded="true"] { background: var(--afe-ink); color: var(--afe-paper); border-color: var(--afe-ink); }
.afe-switch { display: inline-flex; align-items: center; gap: .6rem; font: 600 .95rem/1.2 var(--afe-ui); cursor: pointer; align-self: end; min-height: 44px; }
.afe-switch input { appearance: none; width: 44px; height: 26px; border-radius: 99px; background: var(--wp--preset--color--surface-2); position: relative; cursor: pointer; transition: background .2s; flex: none; margin: 0; }
.afe-switch input::after { content: ""; position: absolute; top: 3px; left: 3px; width: 20px; height: 20px; border-radius: 50%; background: #fff; box-shadow: 0 1px 3px rgb(0 0 0 / 25%); transition: transform .2s var(--afe-ease); }
.afe-switch input:checked { background: var(--wp--preset--color--green); }
.afe-switch input:checked::after { transform: translateX(18px); }
.afe-switch input:focus-visible { outline: 3px solid var(--wp--preset--color--blue); outline-offset: 2px; }

/* ---------------------------------------------------------------------------
 * Directory
 * ------------------------------------------------------------------------ */
.afe-directory { --afe-sticky-top: var(--afe-sticky-offset); }
.afe-dir__tabs {
	display: flex; gap: .4rem; overflow-x: auto; scrollbar-width: none; padding-bottom: .75rem; margin-bottom: .5rem; border-bottom: 1px solid var(--afe-line);
}
.afe-dir__tabs::-webkit-scrollbar { display: none; }
.afe-tab {
	flex: none; display: inline-flex; align-items: center; gap: .5rem; padding: .7rem 1.05rem; border-radius: 12px;
	font: 700 .95rem/1 var(--afe-ui); color: var(--afe-ink); text-decoration: none; transition: background .15s;
}
.afe-tab .afe-icon { color: var(--afe-accent); }
.afe-tab:hover { background: var(--wp--preset--color--surface); }
.afe-tab.is-active { background: var(--afe-accent-light); box-shadow: inset 0 0 0 2px var(--afe-ink); }

.afe-dir__controls { position: sticky; top: var(--afe-sticky-top); z-index: 20; background: var(--afe-paper); padding: .75rem 0 .25rem; }
.afe-dir__bar { display: flex; flex-wrap: wrap; gap: .6rem; align-items: center; }
.afe-dir__controls .afe-chips { margin-top: .6rem; }
.afe-dir__panel { display: flex; flex-wrap: wrap; align-items: flex-end; gap: 1rem 1.25rem; padding: 1rem; margin: .75rem 0 .6rem; border-radius: var(--afe-radius); background: var(--wp--preset--color--surface); }
/* Category chips wrap inside the tray (no sideways scroll there). */
.afe-dir__panel .afe-chips { flex: 0 0 100%; flex-wrap: wrap; overflow: visible; margin: 0; padding: 0; -webkit-mask-image: none; mask-image: none; }
.afe-dir__panel .afe-chips[hidden] { display: none; }
.afe-dir__cats-toggle {
	display: inline-flex; align-items: center; gap: .5rem; min-height: 44px; padding: 0 .9rem; border: 1px solid var(--afe-line); border-radius: 10px;
	background: var(--afe-paper); font: 500 .95rem/1.2 var(--afe-ui); color: var(--afe-ink); cursor: pointer;
}
.afe-dir__cats-toggle .afe-icon { width: 16px; height: 16px; transform: rotate(-90deg); transition: transform .2s var(--afe-ease); }
.afe-dir__cats-toggle[aria-expanded="false"] .afe-icon { transform: rotate(90deg); }
.afe-dir__panel[hidden] { display: none; }
.afe-dir__submit { display: none; }
.no-js .afe-dir__submit { display: inline-flex; }
.afe-dir__status { display: flex; align-items: center; gap: 1rem; margin: .5rem 0 1rem; font: 600 .9rem/1 var(--afe-ui); color: var(--wp--preset--color--muted); }
.afe-dir__clear { color: var(--afe-ink); }
.afe-dir__results { transition: opacity .2s; }
.afe-directory.is-loading .afe-dir__results { opacity: .45; }
.afe-dir__empty { text-align: center; padding: var(--wp--preset--spacing--60) 1rem; font-family: var(--afe-ui); color: var(--wp--preset--color--muted); }
.afe-dir__empty .afe-icon { width: 40px; height: 40px; }
.afe-dir__empty[hidden] { display: none; }
.afe-dir__more { display: flex; justify-content: center; margin-top: var(--wp--preset--spacing--40); }
.afe-dir__more[hidden] { display: none; }

/* Copy that used to sit above a directory grid now follows it (pending a copy pass). */
/* Info band below a directory grid (Figma "Moved content"): full-width gray, H2 + H3 sections. */
.afe-dir-more { margin-top: var(--wp--preset--spacing--60) !important; padding-block: var(--wp--preset--spacing--60); }
.afe-dir-more > :first-child { margin-top: 0; }
.afe-dir-more > .wp-block-heading { margin-bottom: var(--wp--preset--spacing--20); }
.afe-dir-more > h3.wp-block-heading { margin-top: var(--wp--preset--spacing--40); }
.afe-dir-more p, .afe-dir-more li { font-size: 1rem; }
.afe-dir-more .afe-route { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: var(--wp--preset--spacing--40) var(--wp--preset--spacing--50); margin-top: var(--wp--preset--spacing--30); }
.afe-dir-more .afe-route > * { margin: 0; }
.afe-dir-more .afe-route h3 { font: 700 .75rem/1 var(--afe-ui); letter-spacing: .06em; text-transform: uppercase; margin-bottom: .6rem; }
.afe-prose .afe-dir-more .afe-route ul { list-style: none; padding: 0; margin: 0; }
.afe-dir-more .afe-route li { font-size: .9375rem; line-height: 1.6; }
@media (max-width: 781px) { .afe-dir-more .afe-route { grid-template-columns: repeat(2, minmax(0, 1fr)); } }

/* Map view: split list + map on desktop, full map on phones */
.afe-dir__body[data-view="map"] { display: grid; grid-template-columns: minmax(320px, 420px) 1fr; gap: var(--wp--preset--spacing--30); align-items: start; }
.afe-dir__body[data-view="map"] .afe-dir__results { grid-template-columns: 1fr; max-height: calc(100vh - var(--afe-sticky-top) - 180px); overflow-y: auto; padding: 4px; }
.afe-dir__body[data-view="map"] .afe-card__link { flex-direction: row; }
.afe-dir__body[data-view="map"] .afe-card__media { width: 88px; aspect-ratio: auto !important; flex: none; }
.afe-dir__body[data-view="map"] .afe-card__initials { font-size: 1.75rem; }
.afe-dir__body[data-view="map"] .afe-card__type-icon, .afe-dir__body[data-view="map"] .afe-flag { display: none; }
.afe-dir__body[data-view="map"] .afe-card.is-highlighted .afe-card__link { box-shadow: 0 0 0 3px var(--afe-ink); }
.afe-dir__map { position: sticky; top: calc(var(--afe-sticky-top) + 150px); }
.afe-dir__map[hidden] { display: none; }
.afe-dir__map .afe-map-canvas { height: calc(100vh - var(--afe-sticky-top) - 180px); min-height: 420px; }
@media (max-width: 900px) {
	.afe-dir__body[data-view="map"] { display: block; }
	.afe-dir__body[data-view="map"] .afe-dir__results { display: none; }
	.afe-dir__body[data-view="map"] + .afe-dir__more { display: none; }
	.afe-dir__map { position: relative; top: 0; }
	.afe-dir__map .afe-map-canvas { height: calc(100dvh - var(--afe-sticky-top) - 190px); min-height: 360px; }
}
@media (max-width: 781px) {
	/* Phones: one compact row — search, Filters (icon), then the view / when toggles — so the
	 * sticky bar stays short and the grid gets the screen. It only wraps below ~320px. */
	.afe-dir__controls { padding: .5rem 0 .25rem; }
	.afe-dir__bar { gap: .5rem; }
	.afe-dir__bar .afe-field--search { box-sizing: border-box; flex: 1 1 120px; min-width: 0; min-height: 44px; padding: 0 .85rem; }
	.afe-dir__filter-toggle { order: 1; flex: none; width: 44px; min-height: 44px; padding: 0; justify-content: center; }
	.afe-dir__filter-toggle span { position: absolute; width: 1px; height: 1px; overflow: hidden; clip-path: inset(50%); white-space: nowrap; }
	.afe-dir__bar .afe-segmented { order: 2; flex: none; padding: 3px; }
	.afe-dir__bar .afe-segmented span { min-height: 38px; padding: 0 .7rem; font-size: .85rem; }
	/* List / Map: icons only (the radio labels keep their text for screen readers). */
	.afe-dir__bar .afe-dir__view span { gap: 0; font-size: 0; padding: 0 .6rem; }
	.afe-dir__bar .afe-dir__view .afe-icon { width: 20px; height: 20px; }
}

/* Rails: homepage strips. Carousel on phones; railLayout decides larger screens. */
.afe-rail__head { display: flex; align-items: flex-end; justify-content: space-between; gap: 1rem; margin-bottom: var(--wp--preset--spacing--30); }
.afe-rail__titles { display: flex; flex-direction: column; gap: 8px; min-width: 0; }
.afe-rail__title { margin: 0; font-size: var(--wp--preset--font-size--xl); }
.afe-rail__subtitle { margin: 0; font: 400 1.1875rem/1.5 var(--afe-subtitle); }
.afe-rail__all { display: inline-flex; align-items: center; gap: .35rem; padding-bottom: .4rem; font: 600 .9375rem/1 var(--afe-ui); color: var(--afe-ink); text-decoration: none; white-space: nowrap; }
.afe-rail__all .afe-icon { width: 18px; height: 18px; }
.afe-rail__all:hover { text-decoration: underline; }
.afe-rail__track {
	display: grid; grid-auto-flow: column; grid-auto-columns: clamp(220px, 24vw, 300px); gap: 24px; align-items: stretch;
	overflow-x: auto; scroll-snap-type: x mandatory; scroll-padding-inline: var(--wp--style--root--padding-left, 1rem);
	padding: 6px var(--wp--style--root--padding-left, 1rem) 1.25rem; margin-inline: calc(var(--wp--style--root--padding-left, 1rem) * -1);
	scrollbar-width: thin;
}
.afe-rail__track > * { scroll-snap-align: start; }
.afe-rail__item { display: grid; min-width: 0; } /* role="listitem" wrapper; grid keeps the card full height */
@media (max-width: 781px) {
	.afe-rail__track { grid-auto-columns: 72vw; gap: 16px; }
	.afe-rail--featured .afe-rail__head { flex-wrap: wrap; }
}
@media (min-width: 782px) {
	/* Grid: 3 across, no scrolling (6 cards = two rows). */
	.afe-rail--grid .afe-rail__track { grid-auto-flow: row; grid-template-columns: repeat(3, minmax(0, 1fr)); grid-auto-columns: auto; overflow: visible; margin: 0; padding: 6px 0 0; row-gap: 32px; }
	/* Featured: a stacked list of wide cards (image left). */
	.afe-rail--featured .afe-rail__track { grid-auto-flow: row; grid-template-columns: 1fr; grid-auto-columns: auto; overflow: visible; margin: 0; padding: 0; }
	.afe-rail--featured .afe-card__link { flex-direction: row; align-items: center; min-height: 267px; padding-right: 40px; gap: 20px; }
	.afe-rail--featured .afe-card__media { flex: 0 0 39%; align-self: stretch; aspect-ratio: auto; }
	.afe-rail--featured .afe-card__body { padding: 1.5rem 0; justify-content: center; gap: 1rem; }
	.afe-rail--featured .afe-card__title { font-size: 1.25rem; }
	.afe-rail--featured .afe-card__meta { font-size: 1.125rem; }
	.afe-rail--featured .afe-card__desc { font: 500 1rem/1.4 var(--afe-ui); color: var(--afe-ink); -webkit-line-clamp: 2; }
}

/* ---------------------------------------------------------------------------
 * Maps
 * ------------------------------------------------------------------------ */
.afe-map-canvas { position: relative; width: 100%; min-height: 240px; border-radius: var(--afe-radius); overflow: hidden; background: var(--wp--preset--color--surface) url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='40' height='40'%3E%3Cpath d='M0 20h40M20 0v40' stroke='%23e2e2e2'/%3E%3C/svg%3E"); }
.afe-map__fallback { position: absolute; inset: 0; display: flex; align-items: center; justify-content: center; gap: .5rem; padding: 1rem; font: 600 .95rem/1.3 var(--afe-ui); color: var(--afe-ink); text-align: center; }
.afe-map-canvas.is-ready .afe-map__fallback { display: none; }
.afe-map-info { font-family: var(--afe-ui); max-width: 240px; }
.afe-map-info strong { display: block; font: 400 1.1rem/1 var(--afe-display); text-transform: uppercase; margin-bottom: .3rem; }
.afe-map-info small { display: block; color: #555; margin-bottom: .5rem; }
.afe-map-info a { font-weight: 700; color: #000; }

/* ---------------------------------------------------------------------------
 * Profile (single directory records)
 * ------------------------------------------------------------------------ */
.afe-profile__hero {
	position: relative; padding-top: var(--wp--preset--spacing--40); padding-bottom: var(--wp--preset--spacing--50);
	background: var(--afe-accent-light);
}
.afe-back { display: inline-flex; align-items: center; gap: .4rem; font: 700 .9rem/1 var(--afe-ui); color: var(--afe-ink); text-decoration: none; margin-bottom: var(--wp--preset--spacing--40); padding: .5rem .8rem .5rem .6rem; border-radius: 999px; background: rgb(255 255 255 / 70%); }
.afe-back .afe-icon { transform: rotate(180deg); width: 18px; height: 18px; }
.afe-back:hover { background: var(--afe-paper); }
.afe-profile__head { gap: var(--wp--preset--spacing--40) !important; align-items: flex-end !important; }
.afe-profile__avatar { flex: none; width: clamp(140px, 22vw, 280px); margin: 0; }
.afe-profile__avatar img { border-radius: var(--afe-radius); border: 4px solid var(--afe-ink); box-shadow: var(--wp--preset--shadow--hard); background: #fff; }
.afe-profile__titles { min-width: 0; }
.afe-profile__title { max-width: none; }
/* Body: main column (800 at 1440) + sidebar (468), 52px apart — columns 1–7 and 8–12 of the grid. */
.afe-profile__body { align-items: flex-start; gap: 52px !important; margin-block: 52px 120px !important; }
.afe-profile__side { position: sticky; top: calc(var(--afe-sticky-offset) + 1rem); display: flex; flex-direction: column; gap: 24px; }
.afe-profile__side > * { margin: 0 !important; }
.afe-profile__main > * + * { margin-top: 40px; }
.afe-profile__main .afe-prose > :where(p, ul, ol) { max-width: 720px; }
.afe-event__image { margin: 0; }
.afe-event__image img { width: 100%; height: auto; aspect-ratio: 800 / 505; object-fit: cover; border-radius: 16px; }
.afe-event__image + .afe-event__content { margin-top: 32px; }
.afe-event .afe-page-hero { margin-bottom: 0; }
.afe-details > .afe-details__rows:first-child > .afe-details__row:first-child { border-top: 0; padding-top: 0; }
/* Constrained layout can't center the inline back link; put it on the grid's left edge like the avatar. */
.afe-profile__hero > .afe-back { margin-left: max(0px, calc((100% - var(--wp--style--global--content-size)) / 2)) !important; }
.afe-details__buttons { display: flex; flex-direction: column; gap: 10px; }
.afe-details__buttons .wp-block-button__link { display: block; width: 100%; text-align: center; }
.afe-map { margin: 0; }
.afe-map .afe-map-canvas { border-radius: 16px; }
.afe-map-canvas.is-static { min-height: 0; background: var(--wp--preset--color--surface); }
.afe-map-canvas.is-static .afe-map__fallback { position: static; justify-content: flex-start; padding: 1rem 1.25rem; }
@media (max-width: 781px) { .afe-map .afe-map-canvas:not(.is-static) { height: 240px !important; } }
.afe-map__caption { margin-top: 10px; font: 400 .8125rem/1.4 var(--afe-ui); color: var(--wp--preset--color--muted); }
@media (max-width: 781px) {
	.afe-profile__head { flex-direction: column; align-items: flex-start !important; }
	.afe-profile__avatar { width: 45vw; }
	.afe-profile__side { position: static; order: -1; }
	.afe-profile__body { flex-direction: column; margin-top: 24px !important; gap: 32px !important; } /* side (details) first, then the story */
}

.afe-prose { font-size: var(--wp--preset--font-size--base); }
.afe-profile .afe-prose > :where(p, ul, ol) { max-width: 68ch; }
.afe-prose:empty { display: none; }

.afe-details { display: flex; flex-direction: column; gap: 1rem; padding: 1.25rem; border-radius: var(--wp--custom--radius--lg); background: var(--afe-paper); box-shadow: var(--wp--preset--shadow--raised); font-family: var(--afe-ui); }
.afe-details__actions { display: grid; grid-template-columns: repeat(auto-fit, minmax(100px, 1fr)); gap: .5rem; }
.afe-action {
	display: flex; flex-direction: column; align-items: center; justify-content: center; gap: .35rem; min-height: 72px; padding: .6rem;
	border-radius: 14px; background: var(--wp--preset--color--surface); color: var(--afe-ink); text-decoration: none; font: 700 .85rem/1.1 var(--afe-ui);
	transition: transform .15s var(--afe-ease), background .15s;
}
.afe-action:hover { transform: translateY(-2px); background: var(--afe-accent-light); }
.afe-action.is-primary { background: var(--afe-ink); color: var(--afe-paper); }
.afe-action .afe-icon { width: 22px; height: 22px; }
.afe-details__rows { margin: 0; display: flex; flex-direction: column; }
.afe-details__row { display: grid; grid-template-columns: 1fr; gap: .2rem; padding: .7rem 0; border-top: 1px solid var(--afe-line); }
.afe-details__row dt { display: flex; align-items: center; gap: .4rem; font: 700 11px/1 var(--afe-ui); text-transform: uppercase; letter-spacing: .06em; color: var(--wp--preset--color--muted); }
.afe-details__row dt .afe-icon { width: 14px; height: 14px; }
.afe-details__row dd { margin: 0; font: 500 1rem/1.4 var(--afe-ui); }
.afe-details__social { display: flex; gap: .5rem; list-style: none; margin: 0; padding: 0; }
.afe-details__social a { display: grid; place-items: center; width: 44px; height: 44px; border-radius: 50%; border: 1px solid var(--afe-line); color: var(--afe-ink); }
.afe-details__social a:hover { background: var(--afe-ink); color: var(--afe-paper); border-color: var(--afe-ink); }
.afe-details__map { height: 200px; min-height: 200px; border-radius: 14px; }

.afe-media__video iframe { width: 100%; height: auto; aspect-ratio: 16 / 9; border-radius: var(--afe-radius); }
/* Uniform square grid (Figma): 2 across for 2 or 4 photos, otherwise 3 across. */
.afe-gallery { display: grid; gap: 16px; grid-template-columns: repeat(3, 1fr); }
.afe-gallery--1 { grid-template-columns: 1fr; }
.afe-gallery--2, .afe-gallery--4 { grid-template-columns: repeat(2, 1fr); }
@media (max-width: 600px) { .afe-gallery { grid-template-columns: repeat(2, 1fr); gap: 8px; } .afe-gallery--1 { grid-template-columns: 1fr; } }
.afe-gallery__item { display: block; border-radius: var(--afe-radius); overflow: hidden; background: var(--wp--preset--color--surface); cursor: zoom-in; }
.afe-gallery__item img { width: 100%; height: 100%; object-fit: cover; aspect-ratio: 1; display: block; transition: transform .4s var(--afe-ease); }
/* Profile galleries (artists, locations, projects): always three columns of equal squares, so 3–6 photos never change tile size or leave a gap on phones. */
.afe-gallery.afe-gallery--grid { grid-template-columns: repeat(3, minmax(0, 1fr)); }
.afe-gallery--grid .afe-gallery__item { aspect-ratio: 1; }
.afe-gallery--grid .afe-gallery__item img { aspect-ratio: 1; } /* a single photo is one square tile too */
.afe-gallery--1 .afe-gallery__item img { aspect-ratio: auto; }
.afe-gallery__item:hover img { transform: scale(1.03); }

.afe-lightbox { border: 0; padding: 0; background: transparent; max-width: 100vw; max-height: 100vh; width: 100vw; height: 100dvh; }
.afe-lightbox::backdrop { background: rgb(0 0 0 / 92%); }
.afe-lightbox[open] { display: grid; place-items: center; }
.afe-lightbox img { max-width: 94vw; max-height: 88vh; object-fit: contain; border-radius: 6px; }
.afe-lightbox button { position: fixed; background: rgb(255 255 255 / 12%); color: #fff; border: 0; width: 48px; height: 48px; border-radius: 50%; display: grid; place-items: center; cursor: pointer; }
.afe-lightbox button:hover { background: rgb(255 255 255 / 25%); }
.afe-lightbox .is-close { top: 1rem; right: 1rem; }
.afe-lightbox .is-prev { left: 1rem; top: 50%; transform: translateY(-50%) rotate(180deg); }
.afe-lightbox .is-next { right: 1rem; top: 50%; transform: translateY(-50%); }

/* Events rendered by Modern Events Calendar */
.afe-event__content .mec-wrap { font-family: var(--afe-ui); }
.afe-event__content .mec-events-event-image img { border-radius: var(--afe-radius); }
.afe-event__content .mec-single-event .mec-event-meta, .afe-event__content .mec-single-event .mec-events-meta-group-booking { border-radius: var(--afe-radius); box-shadow: var(--wp--preset--shadow--raised); border: 0; }

/* ---------------------------------------------------------------------------
 * Block style variations
 * ------------------------------------------------------------------------ */
/* Formerly the angled band. Straight edges only (design decision, Oct 2026); the class stays so existing content keeps its gray band. */
.is-style-angled { clip-path: none; }
.is-style-card { padding: var(--wp--preset--spacing--40); border-radius: var(--wp--custom--radius--lg); background: var(--afe-paper); box-shadow: var(--wp--preset--shadow--raised); }
.is-style-brand-shadow { box-shadow: var(--wp--preset--shadow--hard); }
.wp-block-heading.is-style-eyebrow { font: 700 .8rem/1 var(--afe-ui) !important; letter-spacing: .1em; text-transform: uppercase; margin-bottom: 1rem; }
.wp-block-button.is-style-outline > .wp-block-button__link { background: transparent; color: currentColor; border: 2px solid currentColor; }
.wp-block-button.is-style-outline > .wp-block-button__link:hover { background: var(--afe-ink); color: var(--afe-paper); border-color: var(--afe-ink); }
.wp-block-button.is-style-arrow > .wp-block-button__link { background: none; color: var(--afe-ink); border: 0; padding-inline: 0; border-bottom: 3px solid var(--afe-ink); border-radius: 0; }
.wp-block-button.is-style-arrow > .wp-block-button__link::after { content: " →"; }
.wp-block-button.is-style-cta > .wp-block-button__link { background: var(--afe-green-ink); border-color: var(--afe-green-ink); color: var(--afe-paper); }
.wp-block-button.is-style-cta > .wp-block-button__link:hover { background: var(--afe-ink); border-color: var(--afe-ink); color: var(--afe-paper); }
.is-style-checks { list-style: none; padding-left: 0; }
.is-style-checks li { position: relative; padding-left: 2rem; margin-bottom: .5rem; }
.is-style-checks li::before { content: ""; position: absolute; left: 0; top: .2em; width: 1.25rem; height: 1.25rem; border-radius: 50%; background: var(--wp--preset--color--green) url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='m6 12.5 4 4 8-9' fill='none' stroke='%23000' stroke-width='3' stroke-linecap='round'/%3E%3C/svg%3E") center / 70% no-repeat; }
.wp-block-columns.is-style-tiles > .wp-block-column { position: relative; padding: var(--wp--preset--spacing--40); border-radius: var(--afe-radius); border: 2px solid var(--afe-ink); transition: transform .18s var(--afe-ease), box-shadow .18s var(--afe-ease); }
.wp-block-columns.is-style-tiles > .wp-block-column:hover { transform: translate(-3px, -3px); box-shadow: 6px 6px 0 var(--afe-ink); }
.wp-block-columns.is-style-tiles > .wp-block-column h3 a { text-decoration: none; }
.wp-block-columns.is-style-tiles > .wp-block-column h3 a::after { content: ""; position: absolute; inset: 0; } /* whole tile clickable */

/* ---------------------------------------------------------------------------
 * Homepage (patterns/home.php). Sections sit on the 12-column grid: most span
 * columns 2–11 (1097px at 1440); hero, testimonial and CTA use all 12.
 * ------------------------------------------------------------------------ */
:root { --afe-gutter: max(var(--wp--style--root--padding-left, 1rem), calc((100% - var(--wp--style--global--content-size)) / 2)); }

/* Hero: "You belong" on white, "Here" + lede on a full-width red band. */
.afe-home-hero { padding-top: clamp(1.5rem, 4vw, 3.5rem); }
.afe-home-hero > * { margin-block: 0; }
.afe-home-hero__title { padding-inline: var(--afe-gutter); margin-bottom: 22px !important; font-size: min(var(--wp--preset--font-size--hero), calc((100vw - 2 * var(--afe-gutter)) / 3.1)); line-height: .91; } /* the cap only bites below ~380px, so "BELONG" never overflows (WCAG 1.4.10) */
.afe-home-hero__band { display: grid; grid-template-columns: repeat(12, minmax(0, 1fr)); column-gap: 20px; align-items: center; padding: 36px var(--afe-gutter) 30px; background: var(--afe-red-ink); color: var(--afe-paper); }
.afe-home-hero__band > * { margin: 0 !important; }
.afe-home-hero__here { grid-column: 1 / 6; font: 400 var(--wp--preset--font-size--hero)/.91 var(--afe-display); text-transform: uppercase; letter-spacing: .005em; }
.afe-home-hero__lede { grid-column: 6 / 11; font: 400 var(--wp--preset--font-size--subtitle)/1.4 var(--afe-subtitle); }
@media (max-width: 781px) {
	.afe-home-hero__band { display: flex; flex-direction: column; align-items: flex-start; gap: 16px; padding-block: 24px 28px; }
}

/* Sections */
.afe-home-section { padding-block: clamp(3.5rem, 7vw, 6.5rem) clamp(3.5rem, 8vw, 7.5rem); }
.afe-home-section > .wp-block-heading { margin-bottom: 24px; }
.afe-home-section > .afe-directory { margin-top: 0; }
.afe-home-section--tight { padding-bottom: clamp(2.5rem, 4vw, 3.5rem); }

/* Programs & grants tiles: whole tile is the link. */
.afe-program-tiles { gap: 20px !important; }
.afe-program-tile { position: relative; display: flex; flex-direction: column; justify-content: center; gap: 12px; min-height: 217px; padding: 32px 40px !important; border: 2px solid var(--afe-ink); border-radius: var(--afe-radius); background: var(--afe-accent-light); transition: transform .18s var(--afe-ease), box-shadow .18s var(--afe-ease); }
.afe-program-tile > * { margin: 0 !important; }
.afe-program-tile h3 { font-size: var(--wp--preset--font-size--lg); }
.afe-program-tile h3 a { text-decoration: none; }
.afe-program-tile h3 a::after { content: ""; position: absolute; inset: 0; }
.afe-program-tile p { font: 500 1rem/1.4 var(--afe-ui); max-width: 46ch; }
.afe-program-tile:hover, .afe-program-tile:focus-within { transform: translate(-3px, -3px); box-shadow: 6px 6px 0 var(--afe-ink); }
@media (max-width: 781px) { .afe-program-tile { min-height: 0; padding: 24px !important; } }

/* Mission band: centered intro + four numbered pillars. */
/* Beats the page-grid rule that left-aligns running text (see "Page grid" below). */
.wp-block-group.afe-mission.is-layout-constrained.has-background.has-text-color > :is(p, ul, .afe-pillars) { margin-left: auto !important; margin-right: auto !important; }
.wp-block-group.afe-mission.is-layout-constrained.has-background.has-text-color > .afe-pillars.afe-pillars { max-width: 874px; }
.afe-mission { padding-block: clamp(5rem, 10vw, 9.375rem) !important; text-align: center; }
.afe-mission > h2 { font-size: var(--wp--preset--font-size--xxl); margin-bottom: 20px; }
.afe-mission > p { max-width: 26rem; margin-inline: auto !important; font: 400 1.1875rem/1.5 var(--afe-subtitle); }
.afe-mission > .wp-block-buttons { justify-content: center; margin-top: 20px; }
.afe-pillars { list-style: none; padding: 0; margin: 60px auto 0 !important; max-width: 874px; display: grid; grid-template-columns: repeat(2, minmax(0, 315px)); justify-content: space-between; row-gap: 80px; counter-reset: pillar; text-align: left; }
.afe-pillars li { counter-increment: pillar; display: flex; flex-direction: column; gap: 10px; padding-top: 16px; border-top: 4px solid currentColor; font: 400 1.25rem/1.5 var(--afe-ui); }
.afe-pillars li::before { content: "0" counter(pillar); display: block; font: 400 2.5rem/1 var(--afe-display); }
.afe-pillars li:nth-child(1)::before { color: var(--wp--preset--color--green); }
.afe-pillars li:nth-child(2)::before { color: var(--wp--preset--color--purple-light); }
.afe-pillars li:nth-child(3)::before { color: var(--wp--preset--color--red); }
.afe-pillars li:nth-child(4)::before { color: var(--wp--preset--color--yellow); }
.afe-pillars strong { display: block; font: 400 1.875rem/1.05 var(--afe-display); text-transform: uppercase; }
@media (max-width: 781px) {
	.afe-pillars { grid-template-columns: 1fr; row-gap: 48px; }
	.afe-pillars strong { font-size: 1.5rem; }
	.afe-pillars li { font-size: 1.0625rem; }
}

/* Testimonial */
.afe-testimonial { display: flex; flex-direction: column; gap: 16px; padding: clamp(1.75rem, 4vw, 3.25rem) !important; border: 4px solid var(--afe-ink); border-radius: var(--wp--custom--radius--lg); background: var(--afe-accent-light); box-shadow: var(--wp--preset--shadow--hard); }
.afe-testimonial > * { margin: 0 !important; }
.afe-testimonial__quote { max-width: 28em; font: 400 var(--wp--preset--font-size--quote)/1.25 var(--afe-subtitle); }
.afe-testimonial__cite { font: 600 1rem/1.3 var(--afe-ui); }

/* CTA band */
.afe-cta { padding-block: clamp(4rem, 8vw, 7.5rem) !important; }
.afe-cta .wp-block-columns { align-items: center !important; gap: 20px; margin: 0; }
.afe-cta h2 { font-size: var(--wp--preset--font-size--xxl); }
.afe-cta p { margin: 0; font: 400 var(--wp--preset--font-size--subtitle)/1.4 var(--afe-subtitle); max-width: 560px; }
.afe-cta .wp-block-buttons { margin-top: 24px; gap: 12px; }

/* Buttons on dark bands */
.wp-block-button:is(.is-style-on-dark-green, .is-style-on-dark-blue) > .wp-block-button__link { color: var(--afe-paper); border-color: var(--afe-paper); }
.wp-block-button.is-style-on-dark-green > .wp-block-button__link { background: var(--afe-green-ink); }
.wp-block-button.is-style-on-dark-blue > .wp-block-button__link { background: var(--wp--preset--color--blue); }
.wp-block-button:is(.is-style-on-dark-green, .is-style-on-dark-blue) > .wp-block-button__link:hover { background: var(--afe-paper); color: var(--afe-ink); }

/* ---------------------------------------------------------------------------
 * Footer
 * ------------------------------------------------------------------------ */
.afe-footer { margin-top: 0; }
.wp-site-blocks > .wp-block-template-part:has(> .afe-footer) { margin-block-start: 0; } /* no root block gap, so a colored band above meets the footer */
.afe-footer__logo { display: inline-block; margin-bottom: var(--wp--preset--spacing--40); }
.afe-footer__logo img { display: block; width: 228px; height: auto; }
.afe-footer__about { max-width: 30ch; font: 500 1rem/1.4 var(--afe-ui); }
.afe-footer__title { margin-bottom: var(--wp--preset--spacing--30); font-size: 1.375rem; line-height: 1; }
.afe-footer__links { list-style: none; padding: 0; font: 500 1rem/1.5 var(--afe-ui); }
.afe-footer__links li { margin-bottom: .45rem; }
.afe-footer p:not(.afe-footer__about):not(.has-xs-font-size) { font: 400 1.0625rem/1.6 var(--afe-ui); }
.afe-footer .wp-block-button.is-style-outline > .wp-block-button__link { color: var(--afe-paper); border-color: var(--afe-paper); }
.afe-footer .wp-block-button.is-style-outline > .wp-block-button__link:hover { background: var(--afe-paper); color: var(--afe-ink); }
.afe-footer__links a { text-decoration: none; }
.afe-footer__links a:hover { text-decoration: underline; }

/* ---------------------------------------------------------------------------
 * Search results page
 * ------------------------------------------------------------------------ */
.afe-search-results { list-style: none; padding: 0; }
.afe-search-result { padding: 1rem 0; border-bottom: 1px solid var(--afe-line); }
.afe-search-result .wp-block-post-title a { text-decoration: none; }

/* Gravity Forms (Orbital) tuning */
.gform-theme--framework { --gf-ctrl-font-family: var(--afe-ui); --gf-ctrl-label-font-family-primary: var(--afe-ui); }
.gform-theme--framework .gform_button, .gform-theme--framework .gform-button { font-family: var(--afe-display) !important; text-transform: uppercase; letter-spacing: .04em; border-radius: 999px !important; }

/* ---------------------------------------------------------------------------
 * Motion preferences
 * ------------------------------------------------------------------------ */
@media (prefers-reduced-motion: reduce) {
	*, *::before, *::after { animation-duration: .01ms !important; transition-duration: .01ms !important; scroll-behavior: auto !important; }
}

/* ---------------------------------------------------------------------------
 * Third-party floating widgets: keep them out of the header, bottom-left
 * ------------------------------------------------------------------------ */
#gt_float_wrapper { top: auto !important; bottom: calc(1rem + env(safe-area-inset-bottom)) !important; left: 1rem !important; right: auto !important; z-index: 40 !important; }

/* ---------------------------------------------------------------------------
 * Page grid: every page shares the homepage's 1320px grid (theme.json
 * contentSize = wideSize). Running text keeps a readable measure but sits on
 * the grid's left edge instead of floating in a centered column.
 * ------------------------------------------------------------------------ */
:root { --afe-measure: 72ch; }
.is-layout-constrained > :is(p, ul, ol, .wp-block-quote, .wp-block-details, .wp-block-pullquote):not(.has-text-align-center):not(.alignwide):not(.alignfull) {
	max-width: var(--afe-measure);
	margin-left: max(0px, calc((100% - var(--wp--style--global--content-size)) / 2)) !important;
	margin-right: auto !important;
}
.is-layout-constrained > :is(p, ul, ol).has-text-align-center { max-width: var(--afe-measure); }
/* Forms read best at a moderate width, left-aligned on the grid. */
.afe-form-page .is-style-card { max-width: 880px; margin-left: max(0px, calc((100% - var(--wp--style--global--content-size)) / 2)) !important; margin-right: auto !important; }

/* ---------------------------------------------------------------------------
 * Page content rhythm (default page template, `.afe-prose`)
 *
 * One spacing scale for every static page:
 *   paragraphs & blocks  → S   (theme blockGap)
 *   h3 sections          → L   above, XS below
 *   h2 sections          → XL  above, S below
 *   columns / media rows → L
 *   full-width bands     → XL (touching bands butt together)
 * ------------------------------------------------------------------------ */
.afe-prose > :first-child { margin-top: 0 !important; }
.afe-prose :where(h2.wp-block-heading) { margin-top: var(--wp--preset--spacing--60); }
.afe-prose :where(h3.wp-block-heading) { margin-top: var(--wp--preset--spacing--50); }
.afe-prose :where(h4.wp-block-heading, h5.wp-block-heading) { margin-top: var(--wp--preset--spacing--40); }
.afe-prose :where(h2, h3, h4, h5).wp-block-heading + * { margin-top: var(--wp--preset--spacing--20); }
.afe-prose :where(.wp-block-column, .wp-block-group, .wp-block-cover__inner-container) > .wp-block-heading:first-child { margin-top: 0; }

.afe-prose :where(.wp-block-columns, .wp-block-gallery, .wp-block-embed, figure.wp-block-image, .wp-block-table) { margin-block: var(--wp--preset--spacing--50); }
.afe-prose > :where(.alignfull.has-background, .wp-block-cover.alignfull) { margin-block: var(--wp--preset--spacing--60); }
.afe-prose > :where(.alignfull.has-background, .wp-block-cover.alignfull) + :where(.alignfull.has-background, .wp-block-cover.alignfull) { margin-top: 0; }
.afe-prose > :where(.alignfull.has-background, .wp-block-cover.alignfull):last-child { margin-bottom: calc(var(--wp--preset--spacing--60) * -1); }
.afe-prose .wp-block-cover.alignfull { min-height: 360px; padding-block: var(--wp--preset--spacing--60); }
.afe-prose .wp-block-cover__inner-container { color: #fff; }

/* Columns: generous gutters, and text columns never get too narrow to read. */
.afe-prose .wp-block-columns { gap: var(--wp--preset--spacing--40) var(--wp--preset--spacing--50); }
.afe-prose .wp-block-column > * + * { margin-top: var(--wp--preset--spacing--20); }
.afe-prose .wp-block-column :where(figure.wp-block-image) { margin-block: 0; }
.afe-prose .wp-block-column img { width: 100%; height: auto; }
@media (min-width: 782px) {
	/* 3+ columns (cards, program tiles) wrap instead of shrinking below ~260px. */
	.afe-prose .wp-block-columns:has(> .wp-block-column:nth-child(3)) { flex-wrap: wrap !important; }
	.afe-prose .wp-block-columns:has(> .wp-block-column:nth-child(3)) > .wp-block-column { flex: 1 1 260px !important; }
}
@media (min-width: 782px) and (max-width: 1100px) {
	/* Two-column copy stacks on tablets, where each half would be ~45 characters wide. */
	.afe-prose .wp-block-columns:not(:has(> .wp-block-column:nth-child(3))):not(.is-not-stacked-on-mobile) { flex-wrap: wrap !important; }
	.afe-prose .wp-block-columns:not(:has(> .wp-block-column:nth-child(3))):not(.is-not-stacked-on-mobile) > .wp-block-column { flex-basis: 100% !important; }
}

/* Buttons wrap neatly when many sit in a row. */
.afe-prose .wp-block-buttons { gap: var(--wp--preset--spacing--10); }
.afe-prose .wp-block-buttons + .wp-block-buttons { margin-top: var(--wp--preset--spacing--10); }

/* Lists: consistent indentation and item spacing. */
.afe-prose :where(ul, ol):not(.is-style-checks):not(.afe-pillars) { padding-left: 1.25em; }
.afe-prose li + li { margin-top: .35em; }

/* Cards converted from Elementor icon/image boxes sit in columns — keep them full height. */
.afe-prose .wp-block-column > .is-style-card:only-child { height: 100%; }
/* Inside colored bands the band's padding is the spacing — no stacked child margins. */
.afe-prose :where(.alignfull.has-background, .wp-block-cover__inner-container) > :first-child { margin-top: 0 !important; }
.afe-prose :where(.alignfull.has-background, .wp-block-cover__inner-container) > :last-child { margin-bottom: 0 !important; }
/* Tinted panels inside the page (not full-width bands) get their own padding. */
.afe-prose .wp-block-group.has-background:not(.alignfull) { padding: var(--wp--preset--spacing--40); border-radius: var(--wp--custom--radius--lg); }
/* 5+ card rows fit on one line on desktop instead of wrapping 4 + 1. */
@media (min-width: 782px) {
	.afe-prose .wp-block-columns:has(> .wp-block-column:nth-child(5)) > .wp-block-column { flex-basis: 180px !important; }
}
/* Card rows (4+ across): smaller headings so long words never break mid-word. */
.afe-prose .wp-block-columns:has(> .wp-block-column:nth-child(4)) .wp-block-heading { font-size: var(--wp--preset--font-size--md) !important; overflow-wrap: normal; hyphens: auto; }
/* Long lists of short items (names, partners) flow into columns. */
.afe-list-columns { columns: 3 220px; column-gap: var(--wp--preset--spacing--50); }
.afe-list-columns > li { break-inside: avoid; }
.afe-prose .afe-list-columns li + li { margin-top: 0; }
.afe-list-columns > li { margin-bottom: .35em; }
/* Hierarchy: headings inside columns sit one step below section headings. */
.afe-prose .wp-block-column h2.wp-block-heading { font-size: var(--wp--preset--font-size--lg); }
.afe-prose .wp-block-column h3.wp-block-heading { font-size: var(--wp--preset--font-size--md); }
/* Card grids & tinted panels used on hub pages (Programs, Grants…). */
.afe-program-card { height: 100%; padding: 0 0 var(--wp--preset--spacing--30) !important; overflow: hidden; gap: var(--wp--preset--spacing--20) !important; }
.afe-program-card > :not(figure) { padding-inline: var(--wp--preset--spacing--30); }
.afe-program-card > figure { margin: 0 !important; }
.afe-program-card > figure img { border-radius: 0 !important; }
.afe-program-card h3 a { text-decoration: none; }
.afe-program-card .wp-block-buttons { margin-top: auto !important; }
.afe-prose .wp-block-column.afe-panel { padding: var(--wp--preset--spacing--40); border-radius: var(--wp--custom--radius--lg); }
.afe-prose .afe-card-grid { gap: var(--wp--preset--spacing--30); margin-block: var(--wp--preset--spacing--40); }
.afe-prose .afe-card-grid > .is-style-card { margin: 0 !important; }
.afe-prose .is-style-card > :first-child { margin-top: 0; }
/* Phones: images in stacked columns never fill the whole screen before the text. */
@media (max-width: 781px) {
	.afe-prose .wp-block-column figure.wp-block-image img { max-height: 60vh; object-fit: cover; }
}

/* Footer link columns from the "Footer columns" menu (afe/footer-menu). */
.afe-footer-menu { display: grid; grid-template-columns: repeat(auto-fit, minmax(150px, 1fr)); gap: var(--wp--preset--spacing--40) var(--wp--preset--spacing--40); }
.afe-footer-menu__col > .afe-footer__title { margin-top: 0; }
.afe-footer-menu .afe-footer__links { margin: 0; }
.afe-footer__links a[aria-current="page"] { text-decoration: underline; text-underline-offset: .2em; }
@media (max-width: 781px) { .afe-footer-menu { grid-template-columns: repeat(2, minmax(0, 1fr)); margin-top: var(--wp--preset--spacing--30); } }
