/*
Theme Name: PSLP
Theme URI: https://www.tomatillodesign.com/
Description: Plumbline child theme for the NC Public Service Leadership Program.
Author: Chris Liu-Beers @ Tomatillo Design
Author URI: https://www.tomatillodesign.com/
Template: plumbline
Version: 1.7.2
Requires at least: 6.9
Requires PHP: 8.2
Text Domain: pslp
Domain Path: /languages
Update URI: false

License: GPL-2.0-or-later
License URI: https://www.gnu.org/licenses/gpl-2.0.html
*/

:root {
    /* Primary: Forest Green (from logo wordmark) */
    --pl-color-primary-lightest: #F5F5F4;
    /* Muted bands — warm stone gray (visible vs white, still softer than gold-tint) */
    --pl-color-surface-alt: #F2F1F0;
    --pl-color-primary-lighter: #FBF5EB;
    /* Plumbline uses primary-light as the link color on accent/dark bands (PHP contrast math and CSS
       fallbacks), so it holds the gold-light link shade: 8.97:1 on #1B4332. Mirrored in pslp_filter_tokens. */
    --pl-color-primary-light: #F5E6C4;
    /* Forest light for PSLP's own gradients and hovers */
    --pslp-forest-light: #2D6A4F;
    --pl-color-primary: #1B4332;
    --pl-color-primary-dark: #0B2B1E;
    --pl-color-primary-darker: #071A12;
    --pl-color-primary-near-black: #040D09;

    /* Secondary: Warm Gold (from logo book + gold figure) */
    --pl-color-secondary-lightest: #FBF5EB;
    --pl-color-secondary-lighter: #F5E6C4;
    --pl-color-secondary-light: #E8C97A;
    --pl-color-secondary: #C9922E;
    --pl-color-secondary-dark: #946B1D;
    --pl-color-secondary-darker: #5C4312;
    --pl-color-secondary-near-black: #2E2109;
    /* Gold for normal-size text on white and gold tints: 5.66:1 on #FBF5E7 (secondary-dark is 4.41) */
    --pslp-gold-text: #7F5B17;

    /* Warm band above forest footer — page surface → gold tint */
    --pslp-warm-footer-fade: linear-gradient(
        180deg,
        var(--pl-color-surface-page, #fbf9f6) 0%,
        color-mix(in srgb, var(--pl-color-secondary-lighter, #f5e6c4) 35%, var(--pl-color-surface-page, #fbf9f6)) 100%
    );

    /* Accent: matches color-primary alias in Plumbline token engine */
    --pl-color-accent: #1B4332;
    --pl-color-on-accent: #FFFFFF;

    /* Text colors tuned for forest green brand */
    --pl-color-text-link: #1B4332;
    --pl-color-text-link-hover: #2D6A4F;
    /* Muted meta text — 5.74 on white, 5.09 on #F2F1F0, 5.30 on #FBF5EB (mirrored in pslp_filter_tokens) */
    --pl-color-text-muted: #6B6560;
    /* Body/supporting copy — ≥4.5:1 on surface-page and white */
    --pslp-text-readable: #4a4644;

    /* Typography */
    --pl-font-heading: 'DM Serif Display', Georgia, 'Times New Roman', serif;
    --pl-font-body: 'Source Sans 3', -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen-Sans, Ubuntu, Cantarell, 'Helvetica Neue', sans-serif;
    /* Heading scale — h2 must stay larger than h3 (see content heading rules below) */
    --pl-text-fluid-h2: clamp(
        calc(var(--pl-type-base) * pow(var(--pl-type-ratio), 3)),
        2.5vw + 0.75rem,
        calc(var(--pl-type-base) * pow(var(--pl-type-ratio), 4))
    );
    --pslp-text-h3: clamp(
        calc(var(--pl-type-base) * pow(var(--pl-type-ratio), 2)),
        1.1vw + 0.65rem,
        calc(var(--pl-type-base) * pow(var(--pl-type-ratio), 2.75))
    );

    /* Tertiary: logo wordmark navy */
    --pl-color-tertiary: #3B6E8F;
    --pl-color-tertiary-lightest: #E8EFF3;
    --pl-color-tertiary-lighter: #C5D9E3;
    --pl-color-tertiary-light: #5A8FA8;
    --pl-color-tertiary-dark: #2A5569;
    --pl-color-tertiary-darker: #1A3845;

    /* Logo icon accent colors (editor / blocks) */
    --pslp-logo-purple: #6B4C82;
    --pslp-logo-orange: #D97033;
    --pslp-logo-green: #4A773C;
    --pslp-logo-gold: #E5B342;
    --pslp-logo-blue: #4EA1C1;
    --pslp-logo-navy: #3B6E8F;

    /* Bridge PSLP plugin variables from Yak to Plumbline */
    --pslp-green: #1B4332;
    --pslp-teal: #2D6A4F;
    --yak-color-primary: #1B4332;
    --yak-color-black: #1a1a1a;
    --yak-radius: 0.5rem;
}

/* Header lockup: tall icon-only mark (narrow max-width) + two-line wordmark, in one home link */
.pslp-site-brand {
    display: flex;
    align-items: center;
}

.pslp-site-brand__link {
    display: flex;
    align-items: center;
    gap: 0.5rem;
    text-decoration: none;
}

.pslp-site-brand .custom-logo-link {
    display: inline-flex;
    flex-shrink: 0;
    line-height: 0;
}

.pslp-site-brand .custom-logo {
    max-width: var(--pl-logo-max-width, 60px);
    width: auto;
    height: auto;
    object-fit: contain;
}

.pslp-site-brand__text {
    display: flex;
    flex-direction: column;
    gap: 0.05em;
    text-decoration: none;
    color: var(--pslp-logo-navy, #3B6E8F);
    font-family: var(--pl-font-body);
    /* Fluid base; laptop+ breakpoints scale the lockup up further */
    font-size: clamp(0.75rem, 0.3rem + 1.2vw, 1.0625rem);
    font-weight: 800;
    line-height: 1.05;
    letter-spacing: -0.02em;
    text-transform: none;
}

.pslp-site-brand__link:hover .pslp-site-brand__text,
.pslp-site-brand__link:focus-visible .pslp-site-brand__text {
    color: var(--pl-color-primary, #1B4332);
}

.pslp-site-brand__line {
    display: block;
    white-space: nowrap;
}

/* Laptop: larger lockup — header still has vertical room vs nav */
@media (min-width: 64rem) {
    .pslp-site-brand__link {
        gap: 0.875rem;
    }

    .pslp-site-brand .custom-logo {
        max-width: clamp(64px, 3.75rem + 0.85vw, 88px);
    }

    .pslp-site-brand__text {
        font-size: clamp(1rem, 0.45rem + 0.9vw, 1.3125rem);
    }
}

/* Desktop */
@media (min-width: 80rem) {
    .pslp-site-brand .custom-logo {
        max-width: clamp(72px, 4.25rem + 0.9vw, 100px);
    }

    .pslp-site-brand__text {
        font-size: clamp(1.0625rem, 0.5rem + 0.78vw, 1.4375rem);
    }
}

/* Wide desktop */
@media (min-width: 96rem) {
    .pslp-site-brand .custom-logo {
        max-width: clamp(80px, 4.75rem + 0.75vw, 108px);
    }

    .pslp-site-brand__text {
        font-size: clamp(1.125rem, 0.55rem + 0.62vw, 1.5625rem);
    }
}

/*
 * Main menu grows with the lockup on wide screens. Plumbline sets it to 1rem at every width, which under a
 * 100px mark and beside 18px body text read under-proportioned (Chris, 2026-10-01). 16px below 1280px.
 */
@media (min-width: 80rem) {
    .pl-site-header__nav {
        --pl-text-nav: 1.0625rem;
    }
}

@media (min-width: 96rem) {
    .pl-site-header__nav {
        --pl-text-nav: clamp(1.0625rem, 0.4rem + 0.7vw, 1.1875rem);
    }
}

@media (max-width: 480px) {
    /* 12px floor for the wordmark on phones */
    .pslp-site-brand__text {
        font-size: 0.75rem;
    }

    .pslp-site-brand .custom-logo {
        max-width: var(--pl-logo-max-width, 60px);
    }
}

/* Header + interior heroes: more breathing room below the nav */
.pl-site-header {
    padding-block: var(--pl-space-5);
}

/*
 * PSLP section bands (no mint):
 * default = white | muted = cool neutral gray | accent-light = gold-tint | accent = forest green
 */
.pl-section--style-muted,
.pl-hero--style-muted,
.pl-split--style-muted,
.pl-cta--style-muted,
.pl-card-grid--style-muted,
.pl-faq--style-muted {
    --section-bg: var(--pl-color-surface-alt);
    --hero-bg: var(--pl-color-surface-alt);
    --split-bg: var(--pl-color-surface-alt);
    --cta-bg: var(--pl-color-surface-alt);
    --faq-bg: var(--pl-color-surface-alt);
}

.pl-section--style-accent-light,
.pl-hero--style-accent-light,
.pl-split--style-accent-light,
.pl-cta--style-accent-light,
.pl-card-grid--style-accent-light,
.pl-faq--style-accent-light {
    --section-bg: var(--pl-color-secondary-lightest, #fbf5eb);
    --hero-bg: var(--pl-color-secondary-lightest, #fbf5eb);
    --split-bg: var(--pl-color-secondary-lightest, #fbf5eb);
    --cta-bg: var(--pl-color-secondary-lightest, #fbf5eb);
    --faq-bg: var(--pl-color-secondary-lightest, #fbf5eb);
}

.wp-block-plumbline-faq.pl-faq--style-accent-light,
.pl-faq--style-accent-light {
    --faq-text: var(--pl-style-text-on-accent-light, var(--pl-color-text-primary));
    --faq-link: var(--pl-style-link-on-accent-light, var(--pl-color-text-link));
    color: var(--faq-text);
    background: var(--faq-bg);
}

.wp-block-plumbline-faq.pl-faq--style-secondary-light,
.pl-faq--style-secondary-light {
    --faq-bg: var(--pl-color-secondary-light, #e8c97a);
    --faq-text: var(--pl-style-text-on-secondary-light, var(--pl-color-text-primary));
    --faq-link: var(--pl-style-link-on-secondary-light, var(--pl-color-text-link));
    color: var(--faq-text);
    background: var(--faq-bg);
}

/* Interior page heroes: forest gradient (not mint accent-light) */
body:not(.home) .wp-block-plumbline-hero.pl-hero--height-standard:not(.pl-hero--media-background),
body:not(.home) .wp-block-plumbline-hero.pl-hero--height-compact:not(.pl-hero--media-background) {
    --hero-bg: linear-gradient(
        165deg,
        var(--pl-color-primary-dark, #0b2b1e) 0%,
        var(--pl-color-primary, #1b4332) 52%,
        var(--pslp-forest-light, #2d6a4f) 100%
    );
    --hero-text: #ffffff;
    --hero-link: #F5E6C4;
    background: var(--hero-bg);
    color: var(--hero-text);
}

/*
 * Links on forest-green bands: accent and dark section styles, light-text photo sections, and the interior
 * gradient heroes above (a "default" style to Plumbline, so no section link color reaches them).
 * WordPress global styles color every link with an unlayered var(--pl-color-text-link) rule that beats
 * Plumbline's layered per-section colors, so these links rendered #1B4332 on #1B4332. Re-point the link
 * variables on the band itself: gold-light is 8.97:1 on #1B4332 and 5.17:1 on the gradient's lightest stop;
 * hover goes to white. Body links keep their underline.
 */
.pl-section--style-accent,
.pl-section--style-dark,
.pl-hero--style-accent,
.pl-hero--style-dark,
.pl-split--style-accent,
.pl-split--style-dark,
.pl-cta--style-accent,
.pl-cta--style-dark,
.pl-faq--style-accent,
.pl-faq--style-dark,
.pl-text-contrast--force-light,
.pl-hero--media-background.pl-hero--has-media:not(.pl-hero--overlay-light),
body:not(.home) .wp-block-plumbline-hero.pl-hero--height-standard:not(.pl-hero--media-background),
body:not(.home) .wp-block-plumbline-hero.pl-hero--height-compact:not(.pl-hero--media-background) {
    --pl-color-text-link: var(--pl-color-primary-light, #F5E6C4);
    --pl-color-text-link-hover: var(--pl-color-text-inverse, #FFFFFF);
    --section-link: var(--pl-color-primary-light, #F5E6C4);
    --split-link: var(--pl-color-primary-light, #F5E6C4);
    --cta-link: var(--pl-color-primary-light, #F5E6C4);
    --faq-link: var(--pl-color-primary-light, #F5E6C4);
}

body:not(.home) .wp-block-plumbline-hero.pl-hero--height-standard:not(.pl-hero--media-background) .pl-hero__inner,
body:not(.home) .wp-block-plumbline-hero.pl-hero--height-compact:not(.pl-hero--media-background) .pl-hero__inner {
    justify-content: flex-start;
    align-items: flex-end;
}

body:not(.home) .wp-block-plumbline-hero.pl-hero--height-standard:not(.pl-hero--media-background) .pl-hero__inner {
    min-height: 18rem;
    padding-block: var(--pl-space-9);
}

body:not(.home) .wp-block-plumbline-hero.pl-hero--height-compact:not(.pl-hero--media-background) .pl-hero__inner {
    min-height: 12rem;
    padding-block: var(--pl-space-7);
}

body:not(.home) .wp-block-plumbline-hero .pl-hero__content,
body:not(.home) .wp-block-plumbline-hero .pl-hero__content--center {
    max-width: 46rem;
    margin-inline: 0;
    text-align: left;
}

body:not(.home) .wp-block-plumbline-hero .pl-hero__content > :is(.wp-block-heading, h1, h2, h3, h4, h5, h6) {
    text-align: left;
}

body:not(.home) .wp-block-plumbline-hero .pl-hero__content > :is(h1, h2, h3, h4, h5, h6, p, li) {
    color: var(--hero-text);
}

body:not(.home) .wp-block-plumbline-hero .pl-hero__content > p {
    font-size: 1.125rem;
    line-height: 1.55;
    margin-block: 0;
    max-width: 40rem;
    opacity: 0.95;
}

body:not(.home) .wp-block-plumbline-hero .pl-hero__content > h1 {
    margin-block: 0 var(--pl-space-4);
    line-height: 1.15;
}

/* Home — media-background hero: light scrim so the foreground photo reads through */
body.home .wp-block-plumbline-hero.pl-hero--media-background.pl-hero--has-media {
    /* Behind the photo: keeps the white copy readable while the image loads, or if it never does */
    background-color: var(--pl-color-primary-dark, #0b2b1e);
}

body.home .wp-block-plumbline-hero.pl-hero--media-background.pl-hero--has-media::before {
    content: '';
    position: absolute;
    inset: 0;
    z-index: 1;
    background: rgba(0, 0, 0, 0.12);
    pointer-events: none;
}

body.home .wp-block-plumbline-hero.pl-hero--media-background.pl-hero--overlay-gradient::after {
    background: linear-gradient(
        to right,
        rgba(0, 0, 0, 0.42) 0%,
        rgba(0, 0, 0, 0.22) 38%,
        rgba(0, 0, 0, 0.06) 68%,
        transparent 100%
    );
}

/* Home — frosted glass panel for hero copy (neutral frost, not brand green).
   Smoked rather than white: the white copy has to clear 3:1 (h1) and 4.5:1 (lead) against the brightest
   pixel behind it at every width. A 14% white frost left the h1 at 2.27:1 and the lead at 3.82:1 over the
   window light; this tint measures 4.34 / 7.64 minimum from 320 to 1440px. */
body.home .wp-block-plumbline-hero.pl-hero--media-background.pl-hero--has-media .pl-hero__content {
    max-width: 40rem;
    padding: var(--pl-space-6) var(--pl-space-7);
    border-radius: var(--pl-radius-lg, 0.75rem);
    background: rgba(0, 0, 0, 0.24);
    backdrop-filter: blur(16px) saturate(1.1);
    -webkit-backdrop-filter: blur(16px) saturate(1.1);
    border: 1px solid rgba(255, 255, 255, 0.22);
    box-shadow:
        0 4px 28px rgba(0, 0, 0, 0.15),
        inset 0 1px 0 rgba(255, 255, 255, 0.12);
}

/* A tight shadow instead of Plumbline's wide glow: crisp on glass, and it firms up glyph edges over bright spots */
body.home .wp-block-plumbline-hero.pl-hero--media-background.pl-hero--has-media:not(.pl-hero--overlay-light) .pl-hero__content :where(h1, h2, p) {
    text-shadow: 0 1px 2px rgb(0 0 0 / 0.35);
}

/* Without backdrop blur, sharp photo detail shows through the glass, so the tint does all the work */
@supports not ((backdrop-filter: blur(1px)) or (-webkit-backdrop-filter: blur(1px))) {
    body.home .wp-block-plumbline-hero.pl-hero--media-background.pl-hero--has-media .pl-hero__content {
        background: rgba(0, 0, 0, 0.55);
    }
}

@media (max-width: 40rem) {
    body.home .wp-block-plumbline-hero.pl-hero--media-background.pl-hero--has-media .pl-hero__content {
        max-width: none;
        padding: var(--pl-space-5);
        border-radius: var(--pl-radius-md, 0.5rem);
    }
}

@media (prefers-reduced-transparency: reduce) {
    body.home .wp-block-plumbline-hero.pl-hero--media-background.pl-hero--has-media .pl-hero__content {
        backdrop-filter: none;
        -webkit-backdrop-filter: none;
        background: rgba(30, 30, 30, 0.82);
    }
}

/* Block + entry headings — strict size hierarchy (h1 > h2 > h3 > …) */
:where(
    .pl-hero__content,
    .pl-section__inner,
    .pl-cta__inner,
    .pl-split__content,
    .pl-entry__content
) :is(h1, h1.wp-block-heading) {
    font-size: var(--pl-text-fluid-h1);
    line-height: 1.15;
}

:where(
    .pl-hero__content,
    .pl-section__inner,
    .pl-cta__inner,
    .pl-split__content,
    .pl-entry__content
) :is(h2, h2.wp-block-heading) {
    font-size: var(--pl-text-fluid-h2);
    line-height: 1.22;
    letter-spacing: -0.015em;
    margin-top: var(--pl-space-6);
    margin-bottom: var(--pl-space-3);
}

:where(
    .pl-hero__content,
    .pl-section__inner,
    .pl-cta__inner,
    .pl-split__content,
    .pl-entry__content
) :is(h3, h3.wp-block-heading):not(.pl-staff-card__name) {
    font-size: var(--pslp-text-h3);
    line-height: 1.3;
    margin-top: var(--pl-space-5);
    margin-bottom: var(--pl-space-2);
}

.pl-entry__content .pl-staff-card__name {
    margin-top: 0;
    margin-bottom: var(--pl-space-2);
    font-size: var(--pl-text-lg);
}


:where(
    .pl-hero__content,
    .pl-section__inner,
    .pl-cta__inner,
    .pl-split__content,
    .pl-entry__content
) :is(h4, h4.wp-block-heading) {
    font-size: var(--pl-text-xl);
    line-height: 1.35;
    margin-top: var(--pl-space-4);
    margin-bottom: var(--pl-space-2);
}

:where(
    .pl-hero__content,
    .pl-section__inner,
    .pl-cta__inner,
    .pl-split__content,
    .pl-entry__content
) :is(h5, h5.wp-block-heading) {
    font-family: var(--pl-font-body);
    font-size: var(--pl-text-lg);
    font-weight: 700;
    letter-spacing: 0.01em;
    line-height: 1.4;
    margin-top: var(--pl-space-3);
    margin-bottom: var(--pl-space-2);
}

:where(
    .pl-hero__content,
    .pl-section__inner,
    .pl-cta__inner,
    .pl-split__content,
    .pl-entry__content
) :is(h6, h6.wp-block-heading) {
    font-family: var(--pl-font-body);
    font-size: var(--pl-text-sm);
    font-weight: 700;
    letter-spacing: var(--pl-tracking-wide);
    line-height: 1.4;
    text-transform: uppercase;
    margin-top: var(--pl-space-3);
    margin-bottom: var(--pl-space-2);
}

:where(
    .pl-hero__content,
    .pl-section__inner,
    .pl-cta__inner,
    .pl-split__content,
    .pl-entry__content
) > :is(h1, h2, h3, h4, h5, h6, .wp-block-heading):first-child {
    margin-top: 0;
}

/* Sitewide eyebrows (hero, split, section, cta) — larger than Plumbline xs caps */
.pl-eyebrow,
.editor-styles-wrapper .pl-eyebrow {
    font-size: 0.9375rem;
    font-weight: 700;
    letter-spacing: 0.14em;
    line-height: 1.4;
    margin-bottom: var(--pl-space-3);
}

/* Forest-green bands: match light body text (not gold-on-green) */
.pl-split--style-accent .pl-eyebrow,
.editor-styles-wrapper .pl-split--style-accent .pl-eyebrow {
    color: var(--split-text, var(--pl-color-on-accent, #fff));
    opacity: 0.88;
}

.pl-section--style-accent .pl-eyebrow,
.editor-styles-wrapper .pl-section--style-accent .pl-eyebrow {
    color: var(--section-text, var(--pl-color-on-accent, #fff));
    opacity: 0.88;
}

.pl-cta--style-accent .pl-eyebrow,
.pl-hero--style-accent .pl-eyebrow,
.pl-faq--style-accent .pl-eyebrow,
.editor-styles-wrapper .pl-cta--style-accent .pl-eyebrow {
    color: var(--pl-color-on-accent, #fff);
    opacity: 0.88;
}

/* Page header eyebrow / kicker (gradient heroes — gold rule, no pill fill) */
body:not(.home) .wp-block-plumbline-hero .pl-hero__content .pl-eyebrow,
body:not(.home) .wp-block-plumbline-hero .pl-hero__content > p:has(+ :is(h1, h2, h3, h4, h5, h6)) {
    display: block;
    margin: 0 0 var(--pl-space-4);
    padding: 0 0 0 0.875rem;
    border-left: 3px solid var(--pl-color-secondary-light, #e8c97a);
    border-radius: 0;
    background: none;
    box-shadow: none;
    font-family: var(--pl-font-body);
    font-size: 0.9375rem;
    font-weight: 700;
    letter-spacing: 0.14em;
    line-height: 1.4;
    text-transform: uppercase;
    color: var(--pl-color-secondary-lighter, #f5e6c4);
    opacity: 1;
    max-width: none;
}

/* Program track pages still using pslp/program-hero */
.entry-content .pslp-program-hero__eyebrow {
    display: block;
    margin: 0 0 0.75rem;
    padding: 0 0 0 0.875rem;
    border-left: 3px solid var(--pl-color-secondary, #c9922e);
    border-radius: 0;
    background: none;
    font-family: var(--pl-font-body);
    font-size: 0.9375rem;
    font-weight: 700;
    letter-spacing: 0.14em;
    line-height: 1.4;
    text-transform: uppercase;
    color: var(--pl-color-secondary-dark, #946b1d);
}

body:not(.home) .wp-block-plumbline-hero .pl-hero__content > p:not(:last-child) {
    margin-bottom: var(--pl-space-3);
}

/* First content section: comfortable gap after hero */
.page .wp-block-plumbline-hero + .wp-block-plumbline-section .pl-section__inner {
    padding-top: var(--pl-space-9);
}

@media (max-width: 48rem) {
    body:not(.home) .wp-block-plumbline-hero.pl-hero--height-standard:not(.pl-hero--media-background) .pl-hero__inner,
    body:not(.home) .wp-block-plumbline-hero.pl-hero--height-compact:not(.pl-hero--media-background) .pl-hero__inner {
        min-height: auto;
        padding-block: var(--pl-space-7);
    }
}

/* Program track key facts — icon stat cards (value-first hierarchy) */
.wp-block-plumbline-card-grid.pslp-key-facts.pl-card-grid--media-icon .pl-card__icon {
    padding: var(--pl-space-5) var(--pl-space-5) var(--pl-space-2);
}

.wp-block-plumbline-card-grid.pslp-key-facts.pl-card-grid--media-icon .pl-card__icon-svg {
    padding: 0.65rem;
    border-radius: 50%;
    background: color-mix(in srgb, var(--pl-color-primary) 10%, var(--pl-color-surface));
    box-sizing: content-box;
}

/* Even vertical rhythm; entry-content h3 prose margins fight meta → title gap */
.wp-block-plumbline-card-grid.pslp-key-facts.pl-card-grid--media-icon .pl-card__body {
    padding: var(--pl-space-3) var(--pl-space-5) var(--pl-space-5);
}

.wp-block-plumbline-card-grid.pslp-key-facts.pl-card-grid--media-icon .pl-card__content {
    display: flex;
    flex-direction: column;
    gap: var(--pl-space-3);
}

.wp-block-plumbline-card-grid.pslp-key-facts.pl-card-grid--media-icon .pl-card__meta {
    display: inline-block;
    width: fit-content;
    margin: 0;
    padding: 0.35rem 0.7rem 0.35rem 0.55rem;
    border-left: 2px solid var(--pl-color-secondary, #c9922e);
    border-radius: 0 0.2rem 0.2rem 0;
    background: color-mix(in srgb, var(--pl-color-secondary-lighter) 40%, var(--pl-color-surface));
    font-family: var(--pl-font-body);
    /* 13px floor for small uppercase labels */
    font-size: 0.8125rem;
    font-weight: 700;
    letter-spacing: 0.1em;
    line-height: 1.2;
    text-transform: uppercase;
    color: var(--pslp-gold-text, #7F5B17);
}

.wp-block-plumbline-card-grid.pslp-key-facts.pl-card-grid--media-icon .pl-card__title {
    margin: 0;
    font-family: var(--pl-font-heading);
    font-size: clamp(1.75rem, 2.2vw, 2.125rem);
    font-weight: 700;
    line-height: 1.1;
    letter-spacing: -0.02em;
    color: var(--pl-color-primary-dark, #0b2b1e);
}

.wp-block-plumbline-card-grid.pslp-key-facts.pl-card-grid--media-icon .pl-card__description {
    margin: 0;
    font-size: 1rem;
    line-height: 1.5;
    color: var(--pslp-text-readable, #4a4644);
}

.wp-block-plumbline-card-grid.pslp-key-facts .wp-block-plumbline-card {
    border-color: color-mix(in srgb, var(--pl-color-primary) 12%, var(--pl-color-neutral-200));
}

/* Five critical service domains — icon cards with short taglines */
.wp-block-plumbline-card-grid.pslp-service-domains.pl-card-grid--media-icon .pl-card__icon {
    padding-top: var(--pl-space-5);
}

.wp-block-plumbline-card-grid.pslp-service-domains.pl-card-grid--media-icon .pl-card__icon-svg {
    padding: 0.55rem;
    border-radius: 50%;
    background: color-mix(in srgb, var(--pl-color-primary) 10%, var(--pl-color-surface));
    box-sizing: content-box;
}

.wp-block-plumbline-card-grid.pslp-service-domains.pl-card-grid--media-icon .pl-card__title {
    margin-bottom: var(--pl-space-2);
    font-family: var(--pl-font-heading);
    font-size: 1.125rem;
    font-weight: 700;
    line-height: 1.25;
    letter-spacing: -0.01em;
    color: var(--pl-color-primary-dark, #0b2b1e);
}

.wp-block-plumbline-card-grid.pslp-service-domains.pl-card-grid--media-icon .pl-card__description {
    font-size: 0.9375rem;
    line-height: 1.45;
    color: var(--pslp-text-readable, #4a4644);
}

/* Explore + audience pages — five domains as single-column horizontal rows */
body:not(.home) .wp-block-plumbline-card-grid.pslp-service-domains .pl-card-grid__cards,
body:not(.home) .wp-block-plumbline-card-grid.pslp-service-domains.pl-card-grid--cols-5 .pl-card-grid__cards {
    grid-template-columns: 1fr;
}

body:not(.home) .wp-block-plumbline-card-grid.pslp-service-domains .wp-block-plumbline-card {
    display: flex;
    flex-direction: row;
    align-items: flex-start;
    gap: var(--pl-space-5);
    height: auto;
}

body:not(.home) .wp-block-plumbline-card-grid.pslp-service-domains.pl-card-grid--media-icon .pl-card__icon {
    flex-shrink: 0;
    align-self: flex-start;
    padding: var(--pl-space-5) 0 var(--pl-space-5) var(--pl-space-5);
}

body:not(.home) .wp-block-plumbline-card-grid.pslp-service-domains.pl-card-grid--media-icon .pl-card__body {
    flex: 1;
    min-width: 0;
    max-width: 68ch;
}

@media (max-width: 37.5rem) {
    body:not(.home) .wp-block-plumbline-card-grid.pslp-service-domains .wp-block-plumbline-card {
        flex-direction: column;
    }

    body:not(.home) .wp-block-plumbline-card-grid.pslp-service-domains.pl-card-grid--media-icon .pl-card__icon {
        padding: var(--pl-space-5) var(--pl-space-5) 0;
    }

    body:not(.home) .wp-block-plumbline-card-grid.pslp-service-domains.pl-card-grid--media-icon .pl-card__body {
        max-width: none;
    }
}

/* Tight band: domains intro + icon strip share accent-light */
.wp-block-plumbline-section.pl-section--style-accent-light:has(+ .wp-block-plumbline-card-grid.pslp-service-domains) {
    padding-bottom: var(--pl-space-3);
}

.wp-block-plumbline-section.pl-section--style-accent-light + .wp-block-plumbline-card-grid.pslp-service-domains.pl-card-grid--style-accent-light {
    margin-top: 0;
    padding-top: var(--pl-space-4);
}

/* Who We Are — breathing room before standards paragraph */
.pslp-core-values-break {
    margin-top: var(--pl-space-8);
}

/* Who We Are — big ideas intro + icon strip share accent-light */
.wp-block-plumbline-section.pl-section--style-accent-light:has(+ .wp-block-plumbline-card-grid.pslp-big-ideas--icon-strip) {
    padding-bottom: var(--pl-space-3);
}

.wp-block-plumbline-section.pl-section--style-accent-light + .wp-block-plumbline-card-grid.pslp-big-ideas--icon-strip.pl-card-grid--style-accent-light {
    margin-top: 0;
    padding-top: var(--pl-space-4);
}

/* Who We Are — big ideas icon strip (mirrors home domain strip; homepage rules stay locked) */
@media (min-width: 64rem) {
    .wp-block-plumbline-card-grid.pslp-big-ideas--icon-strip .pl-card-grid__cards {
        grid-template-columns: repeat(5, minmax(0, 1fr));
    }
}

@media (max-width: 63.99rem) {
    .wp-block-plumbline-card-grid.pslp-big-ideas--icon-strip .pl-card-grid__cards {
        grid-template-columns: repeat(2, minmax(0, 1fr));
    }
}

@media (max-width: 37.5rem) {
    .wp-block-plumbline-card-grid.pslp-big-ideas--icon-strip .pl-card-grid__cards {
        grid-template-columns: 1fr;
    }
}

.wp-block-plumbline-card-grid.pslp-big-ideas--icon-strip {
    --pl-card-icon-size: 2.5rem;
    --pslp-home-domain-circle: 5rem;
    --pslp-home-domain-icon-text-gap: 1.25rem;
}

.wp-block-plumbline-card-grid.pslp-big-ideas--icon-strip .pl-card-grid__cards {
    align-items: start;
}

.wp-block-plumbline-card-grid.pslp-big-ideas--icon-strip .wp-block-plumbline-card {
    display: flex;
    flex-direction: column;
    height: auto;
    text-align: center;
    border: none;
    border-radius: var(--pl-radius-md, 0.5rem);
    background: transparent;
    box-shadow: none;
    overflow: visible;
    padding: var(--pl-space-3) var(--pl-space-2);
}

.wp-block-plumbline-card-grid.pslp-big-ideas--icon-strip.pl-card-grid--media-icon .pl-card__icon {
    flex-shrink: 0;
    display: flex;
    justify-content: center;
    align-items: center;
    width: var(--pslp-home-domain-circle);
    height: var(--pslp-home-domain-circle);
    min-height: var(--pslp-home-domain-circle);
    margin: 0 auto;
    padding: 0;
    border-radius: 50%;
    background: #fff;
    box-shadow: 0 1px 4px rgba(11, 43, 30, 0.08);
    transition:
        box-shadow 0.5s cubic-bezier(0.25, 0.46, 0.45, 0.94),
        background-color 0.5s cubic-bezier(0.25, 0.46, 0.45, 0.94);
}

.wp-block-plumbline-card-grid.pslp-big-ideas--icon-strip.pl-card-grid--media-icon .pl-card__icon-svg {
    display: block;
    flex-shrink: 0;
    width: var(--pl-card-icon-size);
    height: var(--pl-card-icon-size);
    max-width: var(--pl-card-icon-size);
    max-height: var(--pl-card-icon-size);
    padding: 0;
    border-radius: 0;
    background: none;
    box-shadow: none;
    box-sizing: border-box;
}

.wp-block-plumbline-card-grid.pslp-big-ideas--icon-strip.pl-card-grid--media-icon .pl-card__body {
    flex: 0 0 auto;
    display: flex;
    flex-direction: column;
    align-items: stretch;
    justify-content: flex-start;
    padding: var(--pslp-home-domain-icon-text-gap) var(--pl-space-2) 0;
}

.wp-block-plumbline-card-grid.pslp-big-ideas--icon-strip.pl-card-grid--media-icon .pl-card__content {
    display: flex;
    align-items: flex-start;
    justify-content: flex-start;
    width: 100%;
}

.wp-block-plumbline-card-grid.pslp-big-ideas--icon-strip .pl-card__title {
    margin: 0;
    padding: 0;
    background: none;
    color: var(--pl-color-primary-dark, #0b2b1e);
    font-family: var(--pl-font-body);
    font-size: 0.875rem;
    font-weight: 600;
    line-height: 1.35;
    letter-spacing: 0;
    text-wrap: balance;
}

.wp-block-plumbline-card-grid.pslp-big-ideas--icon-strip .pl-card__meta,
.wp-block-plumbline-card-grid.pslp-big-ideas--icon-strip .pl-card__cta,
.wp-block-plumbline-card-grid.pslp-big-ideas--icon-strip .pl-card__description {
    display: none;
}

@media (min-width: 48rem) and (max-width: 63.99rem) {
    .wp-block-plumbline-card-grid.pslp-big-ideas--icon-strip .pl-card__title {
        font-size: 0.9375rem;
    }
}

@media (max-width: 37.5rem) {
    .wp-block-plumbline-card-grid.pslp-big-ideas--icon-strip .pl-card__title {
        font-size: 1.0625rem;
    }
}

/* Home — five domains: 5-across icon strip (Option B — locked icon row + label zone) */
@media (min-width: 64rem) {
    body.home .wp-block-plumbline-card-grid.pslp-service-domains--home-linked .pl-card-grid__cards {
        grid-template-columns: repeat(5, minmax(0, 1fr));
    }
}

@media (max-width: 63.99rem) {
    body.home .wp-block-plumbline-card-grid.pslp-service-domains--home-linked .pl-card-grid__cards {
        grid-template-columns: repeat(2, minmax(0, 1fr));
    }
}

@media (max-width: 37.5rem) {
    body.home .wp-block-plumbline-card-grid.pslp-service-domains--home-linked .pl-card-grid__cards {
        grid-template-columns: 1fr;
    }
}

/* Home — service domain icon strip (no card chrome, whole-column links) */
body.home .wp-block-plumbline-card-grid.pslp-service-domains--home-linked {
    --pl-card-icon-size: 2.5rem;
    --pslp-home-domain-circle: 5rem;
    --pslp-home-domain-icon-text-gap: 1.25rem;
}

body.home .wp-block-plumbline-card-grid.pslp-service-domains--home-linked .pl-card-grid__cards {
    align-items: start;
}

body.home .wp-block-plumbline-card-grid.pslp-service-domains--home-linked .wp-block-plumbline-card:has(.pl-card__link) {
    display: flex;
    flex-direction: column;
    height: auto;
    text-align: center;
    cursor: pointer;
    border: none;
    border-radius: var(--pl-radius-md, 0.5rem);
    background: transparent;
    box-shadow: none;
    overflow: visible;
    padding: var(--pl-space-3) var(--pl-space-2);
    transition:
        transform 0.5s cubic-bezier(0.25, 0.46, 0.45, 0.94),
        box-shadow 0.5s cubic-bezier(0.25, 0.46, 0.45, 0.94),
        background-color 0.5s cubic-bezier(0.25, 0.46, 0.45, 0.94);
}

body.home .wp-block-plumbline-card-grid.pslp-service-domains--home-linked .wp-block-plumbline-card:has(.pl-card__link):hover {
    transform: translate3d(0, -4px, 0);
    background: #fff;
    box-shadow:
        0 12px 28px rgba(11, 43, 30, 0.1),
        0 4px 12px rgba(11, 43, 30, 0.06);
}

@media (prefers-reduced-motion: reduce) {
    body.home .wp-block-plumbline-card-grid.pslp-service-domains--home-linked .wp-block-plumbline-card:has(.pl-card__link):hover {
        transform: none;
    }
}

/* Keyboard focus shows the same white tile; the ring itself is in the focus section at the end of this file
   (the soft shadow alone was 1.08:1 against the band). */
body.home .wp-block-plumbline-card-grid.pslp-service-domains--home-linked .wp-block-plumbline-card:has(.pl-card__link:focus-visible) {
    background: #fff;
}

body.home .wp-block-plumbline-card-grid.pslp-service-domains--home-linked.pl-card-grid--media-icon .pl-card__icon {
    flex-shrink: 0;
    display: flex;
    justify-content: center;
    align-items: center;
    width: var(--pslp-home-domain-circle);
    height: var(--pslp-home-domain-circle);
    min-height: var(--pslp-home-domain-circle);
    margin: 0 auto;
    padding: 0;
    border-radius: 50%;
    background: #fff;
    box-shadow: 0 1px 4px rgba(11, 43, 30, 0.08);
    transition:
        box-shadow 0.5s cubic-bezier(0.25, 0.46, 0.45, 0.94),
        background-color 0.5s cubic-bezier(0.25, 0.46, 0.45, 0.94);
}

body.home .wp-block-plumbline-card-grid.pslp-service-domains--home-linked.pl-card-grid--media-icon .pl-card__icon-svg {
    display: block;
    flex-shrink: 0;
    width: var(--pl-card-icon-size);
    height: var(--pl-card-icon-size);
    max-width: var(--pl-card-icon-size);
    max-height: var(--pl-card-icon-size);
    padding: 0;
    border-radius: 0;
    background: none;
    box-shadow: none;
    box-sizing: border-box;
}

body.home .wp-block-plumbline-card-grid.pslp-service-domains--home-linked .wp-block-plumbline-card:has(.pl-card__link):hover .pl-card__icon,
body.home .wp-block-plumbline-card-grid.pslp-service-domains--home-linked .wp-block-plumbline-card:has(.pl-card__link):focus-within .pl-card__icon {
    background: #fff;
    box-shadow: none;
}

body.home .wp-block-plumbline-card-grid.pslp-service-domains--home-linked.pl-card-grid--media-icon .pl-card__body {
    flex: 0 0 auto;
    display: flex;
    flex-direction: column;
    align-items: stretch;
    justify-content: flex-start;
    padding: var(--pslp-home-domain-icon-text-gap) var(--pl-space-2) 0;
}

body.home .wp-block-plumbline-card-grid.pslp-service-domains--home-linked.pl-card-grid--media-icon .pl-card__content {
    display: flex;
    align-items: flex-start;
    justify-content: flex-start;
    width: 100%;
}

body.home .wp-block-plumbline-card-grid.pslp-service-domains--home-linked .pl-card__title {
    margin: 0;
    padding: 0;
    background: none;
    color: var(--pl-color-primary-dark, #0b2b1e);
    font-family: var(--pl-font-body);
    font-size: 0.875rem;
    font-weight: 600;
    line-height: 1.35;
    letter-spacing: 0;
    text-wrap: balance;
    transition: color 0.2s var(--pl-easing-default, ease);
}

body.home .wp-block-plumbline-card-grid.pslp-service-domains--home-linked .wp-block-plumbline-card:has(.pl-card__link):hover .pl-card__title,
body.home .wp-block-plumbline-card-grid.pslp-service-domains--home-linked .wp-block-plumbline-card:has(.pl-card__link):focus-within .pl-card__title {
    color: var(--pl-color-primary);
}

body.home .wp-block-plumbline-card-grid.pslp-service-domains--home-linked .pl-card__cta {
    display: none;
}

body.home .wp-block-plumbline-card-grid.pslp-service-domains--home-linked .pl-card__description {
    display: none;
}

@media (min-width: 48rem) and (max-width: 63.99rem) {
    body.home .wp-block-plumbline-card-grid.pslp-service-domains--home-linked .pl-card__title {
        font-size: 0.9375rem;
    }
}

@media (max-width: 37.5rem) {
    body.home .wp-block-plumbline-card-grid.pslp-service-domains--home-linked .pl-card__title {
        font-size: 1.0625rem;
    }
}

/* Key dates — minimal 2-col placeholder cards */
.wp-block-plumbline-section.pl-section--style-muted:has(+ .pslp-timeline-cards) .pl-section__inner {
    padding-bottom: var(--pl-space-3);
}

.wp-block-plumbline-section.pl-section--style-muted + .wp-block-plumbline-card-grid.pslp-timeline-cards {
    margin-top: calc(-1 * var(--pl-space-4));
}

.wp-block-plumbline-card-grid.pslp-timeline-cards.pl-card-grid--spacing-compact {
    padding-top: 0;
}

.wp-block-plumbline-card-grid.pslp-timeline-cards .pl-card__body {
    padding: var(--pl-space-4);
}

.wp-block-plumbline-card-grid.pslp-timeline-cards .pl-card__title {
    margin-bottom: var(--pl-space-3);
    font-family: var(--pl-font-body);
    font-size: 1.0625rem;
    font-weight: 700;
    line-height: 1.3;
    letter-spacing: 0.02em;
    color: var(--pl-color-primary-dark, #0b2b1e);
}

.wp-block-plumbline-card-grid.pslp-timeline-cards .pl-card__description {
    font-size: 0.9375rem;
    line-height: 1.5;
    color: var(--pl-color-text-secondary);
}

@media (max-width: 40rem) {
    .wp-block-plumbline-card-grid.pslp-timeline-cards.pl-card-grid--columns-2 .pl-card-grid__inner {
        grid-template-columns: 1fr;
    }
}

/* Who We Are — Coalition on photo background (readable, left-aligned) */
.wp-block-plumbline-split.pslp-coalition-band.pl-has-bg-image {
    min-height: 22rem;
}

/* Forest scrim over the photo. With the block's neutral 60% overlay alone, the gold eyebrow sampled 2.83:1 and
   the paragraph 4.11:1 at their weakest pixels. This is the band's own layer, so it holds whatever overlay the
   block is set to (that overlay is folded in here). Measured at five scroll positions per width, because the
   photo is fixed to the viewport and slides behind the copy: eyebrow 5.36:1 and paragraph 7.51:1 minimum. */
.wp-block-plumbline-split.pslp-coalition-band::before {
    content: '';
    position: absolute;
    inset: 0;
    z-index: 0;
    background: rgba(11, 43, 30, 0.82);
    pointer-events: none;
}

.wp-block-plumbline-split.pslp-coalition-band .pl-section__bg::after {
    content: none;
}

/* Wide screens: the copy stays in the left half, so the photo can come through on the right */
@media (min-width: 80rem) {
    .wp-block-plumbline-split.pslp-coalition-band::before {
        background: linear-gradient(
            90deg,
            rgba(11, 43, 30, 0.86) 0%,
            rgba(11, 43, 30, 0.8) 60%,
            rgba(11, 43, 30, 0.45) 100%
        );
    }
}

/* The block sets background-attachment: fixed inline; don't slide the photo under the copy on scroll */
@media (prefers-reduced-motion: reduce) {
    .wp-block-plumbline-split.pslp-coalition-band.pl-has-bg-image {
        background-attachment: scroll !important;
    }
}

.wp-block-plumbline-split.pslp-coalition-band .pl-split__inner {
    max-width: var(--pl-width-wide);
    margin-inline: auto;
    justify-content: flex-start;
    align-items: center;
    padding-block: var(--pl-space-10);
}

.wp-block-plumbline-split.pslp-coalition-band .pl-split__content {
    max-width: 42rem;
    margin-inline: 0;
    text-align: left;
}

.wp-block-plumbline-split.pslp-coalition-band .pl-eyebrow {
    color: var(--pl-color-secondary-light, #e8c97a);
    border-left-color: var(--pl-color-secondary, #c9922e);
}

.wp-block-plumbline-split.pslp-coalition-band .pl-split__content > :is(h2, h2.wp-block-heading) {
    margin: var(--pl-space-3) 0 var(--pl-space-4);
    font-family: var(--pl-font-heading);
    font-size: clamp(1.75rem, 2.8vw + 0.5rem, 2.5rem);
    font-weight: 400;
    line-height: 1.15;
    letter-spacing: -0.02em;
    color: #ffffff;
    text-wrap: balance;
}

.wp-block-plumbline-split.pslp-coalition-band .pl-split__content > p {
    margin: 0;
    font-size: clamp(1.0625rem, 1.1vw + 0.75rem, 1.25rem);
    line-height: 1.55;
    color: color-mix(in srgb, #ffffff 92%, transparent);
    text-wrap: pretty;
}

/* Who We Are — team intro: tight handoff to staff list */
.wp-block-plumbline-section.pslp-team-intro {
    padding-bottom: 0;
}

.wp-block-plumbline-section.pslp-team-intro .pl-section__inner {
    padding-bottom: var(--pl-space-2);
}

.wp-block-plumbline-section.pslp-team-intro .pl-section__inner > :is(h2, h2.wp-block-heading) {
    margin-top: 0;
    margin-bottom: 0;
}

.wp-block-plumbline-section.pslp-team-intro + .wp-block-plumbline-card-grid.pslp-staff-grid {
    margin-top: 0;
    padding-top: var(--pl-space-3);
}

/* Meet Our Team — flat list rows, clean sans type */
.wp-block-plumbline-card-grid.pslp-staff-grid.pl-card-grid--layout-list .pl-card-grid__cards {
    display: flex;
    flex-direction: column;
    gap: 0;
}

.wp-block-plumbline-card-grid.pslp-staff-grid.pl-card-grid--layout-list .wp-block-plumbline-staff-card,
.wp-block-plumbline-card-grid.pslp-staff-grid.pl-card-grid--layout-list .pl-staff-card {
    flex-direction: row;
    align-items: flex-start;
    border: none;
    border-radius: 0;
    background: transparent;
    box-shadow: none;
    /* Square flat rows need no corner clipping (the photo clips itself); visible overflow keeps the
       email link's focus ring whole. */
    overflow: visible;
}

/* Phones: photo above the text. Side by side, the photo left the bio about 90px at 320px and pushed
   it past the card edge. */
@media (max-width: 37.5rem) {
    .wp-block-plumbline-card-grid.pslp-staff-grid.pl-card-grid--layout-list .wp-block-plumbline-staff-card,
    .wp-block-plumbline-card-grid.pslp-staff-grid.pl-card-grid--layout-list .pl-staff-card {
        flex-direction: column;
        gap: 0;
    }
}

.wp-block-plumbline-card-grid.pslp-staff-grid .wp-block-plumbline-staff-card {
    border-bottom: 1px solid color-mix(in srgb, var(--pl-color-primary, #1b4332) 10%, var(--pl-color-neutral-200, #e7e5e4));
}

.wp-block-plumbline-card-grid.pslp-staff-grid .pl-card-grid__cards > :last-child .wp-block-plumbline-staff-card {
    border-bottom: none;
}

.wp-block-plumbline-card-grid.pslp-staff-grid .pl-staff-card:hover,
.wp-block-plumbline-card-grid.pslp-staff-grid .wp-block-plumbline-staff-card:hover {
    transform: none;
    box-shadow: none;
}

.wp-block-plumbline-card-grid.pslp-staff-grid .pl-staff-card__body {
    gap: 0;
    padding: var(--pl-space-5) 0;
}

.wp-block-plumbline-card-grid.pslp-staff-grid .pl-staff-card__name,
.pl-entry__content .wp-block-plumbline-card-grid.pslp-staff-grid .pl-staff-card__name {
    margin: 0 0 0.125rem;
    font-family: var(--pl-font-body);
    font-size: 1.125rem;
    font-weight: 600;
    line-height: 1.3;
    letter-spacing: 0;
    color: var(--pl-color-primary-dark, #0b2b1e);
}

/* pslp-staff-metabox.js adds this wrapper after load. The type and color rules below key off the grid, not the
   wrapper, so server-rendered cards (before the script runs, or with JS off) never fall back to Plumbline's
   small muted meta styles. */
.wp-block-plumbline-card-grid.pslp-staff-grid .pslp-staff-contact-group {
    display: flex;
    flex-direction: column;
    gap: 0.125rem;
    margin: 0 0 var(--pl-space-3);
}

.wp-block-plumbline-card-grid.pslp-staff-grid .pl-staff-card__title,
.wp-block-plumbline-card-grid.pslp-staff-grid .pl-staff-card__pronouns {
    margin: 0;
    font-family: var(--pl-font-body);
    font-size: 0.875rem;
    font-weight: 400;
    line-height: 1.45;
    color: var(--pslp-text-readable, #4a4644);
}

.wp-block-plumbline-card-grid.pslp-staff-grid .pl-staff-card__contact {
    /* Links hug their text instead of stretching across the row (and the focus ring with them) */
    align-items: flex-start;
    margin: 0;
    padding: 0;
    border: none;
    font-size: 0.875rem;
    line-height: 1.4;
}

.wp-block-plumbline-card-grid.pslp-staff-grid .pl-staff-card__email,
.wp-block-plumbline-card-grid.pslp-staff-grid .pl-staff-card__phone,
.wp-block-plumbline-card-grid.pslp-staff-grid .pl-staff-card__profile {
    color: var(--pl-color-primary, #1b4332);
    font-weight: 500;
    text-decoration: none;
}

.wp-block-plumbline-card-grid.pslp-staff-grid .pl-staff-card__email:hover,
.wp-block-plumbline-card-grid.pslp-staff-grid .pl-staff-card__phone:hover,
.wp-block-plumbline-card-grid.pslp-staff-grid .pl-staff-card__profile:hover {
    color: var(--pslp-forest-light, #2d6a4f);
    text-decoration: underline;
    text-underline-offset: 0.12em;
}

.wp-block-plumbline-card-grid.pslp-staff-grid .pl-staff-card__bio {
    margin: 0;
    max-width: 68ch;
    padding-top: var(--pl-space-3);
    border-top: 1px solid color-mix(in srgb, var(--pl-color-primary, #1b4332) 8%, var(--pl-color-neutral-200, #e7e5e4));
    font-family: var(--pl-font-body);
    font-size: 1rem;
    font-weight: 400;
    line-height: 1.6;
    color: var(--pslp-text-readable, #4a4644);
}

/* Who We Are — contact band details */
.wp-block-plumbline-cta.pslp-contact-band .pl-cta__inner > p {
    max-width: 36rem;
    margin-inline: auto;
    font-size: 1.0625rem;
    line-height: 1.55;
    color: var(--pslp-text-readable, #4a4644);
}

.wp-block-plumbline-cta.pslp-contact-band .pl-cta__inner > p:nth-of-type(2) {
    margin-top: var(--pl-space-4);
    font-size: 1.125rem;
    font-weight: 600;
    color: var(--pl-color-primary-dark, #0b2b1e);
}

.wp-block-plumbline-cta.pslp-contact-band .pl-cta__inner > p:nth-of-type(3) {
    margin-top: var(--pl-space-1);
    font-size: 1rem;
}

/* Contact band — same warm fade as site-wide footer transition (not forest green) */
.wp-block-plumbline-cta.pslp-contact-band.pl-cta--style-default {
    --cta-bg: var(--pslp-warm-footer-fade);
    background: var(--cta-bg);
}

.wp-block-plumbline-cta.pslp-contact-band .pl-cta__inner {
    padding-block: var(--pl-space-9);
}

.wp-block-plumbline-cta.pslp-contact-band .pl-cta__inner > :is(h2, h2.wp-block-heading) {
    margin-top: 0;
    color: var(--pl-color-primary-dark, #0b2b1e);
}

/* Grant sponsors — acknowledgment band (serif italic names, no divider lines) */
.wp-block-plumbline-section.pslp-grant-sponsors .pl-section__inner {
    text-align: center;
    max-width: 52rem;
    margin-inline: auto;
    padding-block: var(--pl-space-2);
}

.wp-block-plumbline-section.pslp-grant-sponsors .pl-section__inner > :is(h2, h2.wp-block-heading) {
    margin: 0 0 var(--pl-space-2);
    font-family: var(--pl-font-heading);
    font-size: var(--pl-text-fluid-h2);
    font-weight: var(--pl-weight-bold, 700);
    line-height: var(--pl-leading-tight, 1.25);
    letter-spacing: var(--pl-tracking-tight, -0.02em);
    text-transform: none;
    color: var(--pl-color-primary-dark, #0b2b1e);
}

.wp-block-plumbline-section.pslp-grant-sponsors .pl-section__inner > p {
    margin: 0;
    color: var(--pslp-text-readable, #4a4644);
    font-size: var(--pl-text-base, 1rem);
    line-height: 1.5;
}

.wp-block-plumbline-section.pslp-grant-sponsors ul.wp-block-list {
    list-style: none;
    padding: 0;
    margin: var(--pl-space-5) 0 0;
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: var(--pl-space-3);
}

.wp-block-plumbline-section.pslp-grant-sponsors ul.wp-block-list > li {
    margin: 0;
    text-align: center;
}

.wp-block-plumbline-section.pslp-grant-sponsors ul.wp-block-list a {
    display: inline;
    font-family: var(--pl-font-heading);
    font-style: italic;
    font-size: clamp(1.35rem, 1rem + 1.25vw, 1.85rem);
    line-height: 1.35;
    letter-spacing: -0.01em;
    color: var(--pl-color-primary, #1B4332);
    text-decoration: none;
    transition: color 0.15s ease;
}

.wp-block-plumbline-section.pslp-grant-sponsors ul.wp-block-list a:hover,
.wp-block-plumbline-section.pslp-grant-sponsors ul.wp-block-list a:focus-visible {
    /* The names drop below large-text size under 640px wide, where secondary-dark was 4.42:1 */
    color: var(--pslp-gold-text, #7F5B17);
    text-decoration: underline;
    text-underline-offset: 0.12em;
}

/* ---------------------------------------------------------------------------
   "Find Your Path" intro split — the copy is short, so the default cover-fit
   media (height tied to the text column) collapsed to a thin strip and the
   center-crop cut off the subjects' heads. Give it a comfortable minimum
   height and bias the crop toward the upper third (faces).
--------------------------------------------------------------------------- */
.pslp-intro-split.pl-split--media-fit-cover .pl-split__media {
    height: auto;
    min-height: clamp(15rem, 24vw, 19rem);
}

.pslp-intro-split .pl-split__img {
    object-position: center 22%;
}

/* Content placeholder slots (contact form, explore ethics, etc.) */
.wp-block-plumbline-section.pslp-form-placeholder,
.wp-block-plumbline-section.pslp-placeholder-section {
    border: 2px dashed color-mix(in srgb, var(--pl-color-secondary, #c9922e) 45%, transparent);
    border-radius: var(--pl-radius-md, 0.5rem);
    padding-block: var(--pl-space-2);
}

.wp-block-plumbline-section.pslp-form-placeholder .pslp-placeholder-note,
.wp-block-plumbline-section.pslp-placeholder-section .pslp-placeholder-note {
    margin: 0;
    padding: var(--pl-space-6);
    text-align: center;
    font-size: 1rem;
    color: var(--pslp-text-readable, #4a4644);
    background: color-mix(in srgb, var(--pl-color-surface-alt, #f2f1f0) 60%, transparent);
    border-radius: var(--pl-radius-sm, 0.25rem);
}

/* Explore — school map + explorer spacing (anchor offset comes from Plumbline's html scroll-padding-top) */
.wp-block-plumbline-section.pslp-school-tools .pl-section__inner {
    display: flex;
    flex-direction: column;
    gap: var(--pl-space-6);
}


/* Desktop mega menu — breathing room between column links */
@media (min-width: 48.0625rem) {
    .pl-main-nav .pl-has-mega .pl-mega-column > .sub-menu {
        gap: 4px;
    }
}

/* Kill entrance fade-up if layout option is still enabled in admin */
body.pl-animate-entrance :is(
    .wp-block-plumbline-section,
    .wp-block-plumbline-split,
    .wp-block-plumbline-cta,
    .wp-block-plumbline-card-grid,
    .wp-block-plumbline-faq
) {
    opacity: 1 !important;
    transform: none !important;
    transition: none !important;
}

/* Buttons — subtle hover lift (respects reduced motion) */
.wp-block-button__link,
.pl-button {
    transition:
        transform 0.15s ease,
        box-shadow 0.15s ease,
        background-color 0.15s ease,
        border-color 0.15s ease,
        color 0.15s ease;
}

/* :not(:focus-visible) — a hovered, focused button keeps the focus ring's white box-shadow. */
.wp-block-button__link:hover:not(:focus-visible),
.pl-button:hover:not(:focus-visible) {
    transform: translateY(-1px);
    box-shadow: 0 4px 14px rgba(0, 0, 0, 0.12);
}

.wp-block-button__link:active:not(:focus-visible),
.pl-button:active:not(:focus-visible) {
    transform: translateY(0);
    box-shadow: 0 2px 6px rgba(0, 0, 0, 0.08);
}

@media (prefers-reduced-motion: reduce) {
    .wp-block-button__link,
    .pl-button {
        transition:
            background-color 0.15s ease,
            border-color 0.15s ease,
            color 0.15s ease;
    }

    .wp-block-button__link:hover:not(:focus-visible),
    .wp-block-button__link:active:not(:focus-visible),
    .pl-button:hover:not(:focus-visible),
    .pl-button:active:not(:focus-visible) {
        transform: none;
        box-shadow: none;
    }
}

/*
 * FAQ accordion — WAAPI height unfurl in pslp-faq.js; CSS handles panel chrome only.
 */
body details.pl-faq-item.pslp-faq-item--motion .pl-faq-item__answer {
    display: block !important;
    height: 0;
    opacity: 1 !important;
    overflow: hidden;
    padding-block: 0 !important;
    padding-inline: var(--pl-space-4);
    transition: none !important;
}

body details.pl-faq-item.pslp-faq-item--motion[open]:not([data-pslp-faq-animating]) .pl-faq-item__answer {
    height: auto;
    /* Clip only while the height animates (pslp-faq.js sets overflow inline then); once open, a focus
       ring on a link in the first or last line draws past the panel edge. flow-root keeps the margins
       contained as overflow: hidden did, so the panel doesn't change height when the animation ends. */
    display: flow-root !important;
    overflow: visible;
}

body details.pl-faq-item.pslp-faq-item--motion .pl-faq-item__answer-inner {
    padding-block-end: var(--pl-space-4);
}

body details.pl-faq-item.pslp-faq-item--motion:not([open]):not([data-pslp-faq-animating]) .pl-faq-item__answer-inner {
    padding-block-end: 0;
}

body details.pl-faq-item.pslp-faq-item--motion[open] .pl-faq-item__question {
    border-bottom: 1px solid var(--pl-color-border);
    margin-bottom: var(--pl-space-3);
}

body details.pl-faq-item.pslp-faq-item--motion .pl-faq-item__icon {
    transition: transform 0.38s cubic-bezier(0.22, 1, 0.36, 1), color 0.2s ease;
}

/* Reduced motion: native details, no JS height */
body details.pl-faq-item.pslp-faq-item--native .pl-faq-item__answer {
    display: block !important;
    height: auto !important;
    opacity: 1 !important;
    overflow: visible;
    transition: none !important;
}

body details.pl-faq-item.pslp-faq-item--native:not([open]) .pl-faq-item__answer {
    display: none !important;
}

body details.pl-faq-item.pslp-faq-item--native[open] .pl-faq-item__answer {
    padding-block-end: var(--pl-space-4);
}

body details.pl-faq-item.pslp-faq-item--native[open] .pl-faq-item__question {
    border-bottom: 1px solid var(--pl-color-border);
    margin-bottom: var(--pl-space-3);
}

/* FAQ: title band + accordion — more air above the heading, tighter handoff to items */
.wp-block-plumbline-section.pl-section--style-muted:has(+ .wp-block-plumbline-faq) {
    padding-block: var(--pl-space-8) 0;
}

.wp-block-plumbline-section.pl-section--style-muted:has(+ .wp-block-plumbline-faq) .pl-section__inner {
    padding-bottom: 0;
}

.wp-block-plumbline-section.pl-section--style-muted:has(+ .wp-block-plumbline-faq) :is(h2, h2.wp-block-heading) {
    margin-top: 0;
    margin-bottom: var(--pl-space-2);
}

.wp-block-plumbline-section.pl-section--style-muted + .wp-block-plumbline-faq.pl-faq--style-muted {
    margin-top: calc(-1 * var(--pl-space-2));
}

.wp-block-plumbline-section.pl-section--style-muted + .wp-block-plumbline-faq.pl-faq--spacing-standard {
    padding-top: var(--pl-space-4);
}

/* FAQ: coalition partner schools — multi-column bullet list in answer panel */
.pl-faq-item__answer .pslp-coalition-schools,
.pl-faq-item__answer-inner .pslp-coalition-schools {
    list-style: disc;
    margin: var(--pl-space-3, 0.75rem) 0 0 1.25em;
    padding: 0;
    columns: 2;
    column-gap: var(--pl-space-7, 2rem);
}

.pl-faq-item__answer .pslp-coalition-schools li,
.pl-faq-item__answer-inner .pslp-coalition-schools li {
    break-inside: avoid;
    margin-bottom: var(--pl-space-2, 0.5rem);
    padding-right: var(--pl-space-3, 0.75rem);
}

@media (min-width: 40rem) {
    .pl-faq-item__answer .pslp-coalition-schools,
    .pl-faq-item__answer-inner .pslp-coalition-schools {
        columns: 3;
    }
}

/* Optional icon bullets on core/list — add className in Rivet or the editor */
.wp-block-list.pslp-icon-list {
    list-style: none;
    padding-inline-start: 0;
    margin: var(--pl-space-4) 0 0;
    display: grid;
    gap: var(--pl-space-3);
}

.pslp-icon-list > li {
    margin: 0;
    padding: 0;
}

.pslp-icon-list__item {
    display: flex;
    align-items: flex-start;
    gap: 0.75rem;
}

.pslp-icon-list__mark {
    display: block;
    flex-shrink: 0;
    width: 1.375rem;
    height: 1.375rem;
    /* Optical center on first line (22px icon vs ~1.65 line-height body) */
    margin-top: 0.3em;
    color: var(--pl-color-primary);
}

.pl-split--style-accent .pslp-icon-list__mark,
.pl-section--style-accent .pslp-icon-list__mark {
    color: var(--split-text, var(--pl-color-on-accent, #fff));
}

.pslp-icon-list__text {
    min-width: 0;
}

/* Asterisk footnote under a criteria list — add className in Rivet or the editor */
.wp-block-paragraph.pslp-footnote,
p.pslp-footnote {
    font-size: var(--pl-font-size-sm, 0.875rem);
    line-height: 1.6;
    color: var(--pslp-text-readable, #4a4644);
    margin-top: var(--pl-space-3, 0.75rem);
}

.pl-split--style-accent .pslp-footnote,
.pl-section--style-accent .pslp-footnote {
    color: var(--split-text, var(--pl-color-on-accent, #fff));
}

/* ── Footer: Mission-Forward Signature ─────────────────────────────── */

/* Positioned for the warm fade below, but no z-index here or on .pl-main: either one creates a stacking
   context that traps fixed-position children. The back-to-top button (inside the footer) slid under page
   content, and the school-explorer dialog (inside main) sat under the sticky header. */
.pl-site-footer {
    position: relative;
    margin-top: 6.25rem;
    background: linear-gradient(
        170deg,
        var(--pl-color-primary-dark, #0B2B1E) 0%,
        var(--pl-color-primary, #1B4332) 45%,
        var(--pl-color-primary-dark, #0B2B1E) 100%
    );
    color: var(--pl-color-neutral-100, #f5f5f4);
    border-top: none;
}

/* Sitewide warm fade into forest footer — sits behind page content, not over it. The footer isn't a
   stacking context, so z-index: -1 places the fade under all page content, above the page background. */
.pl-site-footer::before {
    content: '';
    position: absolute;
    right: 0;
    bottom: 100%;
    left: 0;
    display: block;
    height: clamp(3.5rem, 8vw, 7rem);
    background: var(--pslp-warm-footer-fade);
    pointer-events: none;
    z-index: -1;
}

.pl-main:has(.pl-entry__content > .wp-block-plumbline-cta.pslp-contact-band:last-child) + .pl-site-footer::before {
    display: none;
}

/* Contact band already carries the warm fade — no extra gap before the footer */
.pl-main:has(.pl-entry__content > .wp-block-plumbline-cta.pslp-contact-band:last-child) + .pl-site-footer {
    margin-top: 0;
}

.pl-site-footer .pl-footer-areas--cols-3,
.pl-site-footer .pl-footer-areas--cols-4 {
    grid-template-columns: 3fr 2fr;
    gap: var(--pl-space-7);
    padding-block: var(--pl-space-2) var(--pl-space-6);
}

.pl-site-footer .pl-footer-areas--cols-4 {
    row-gap: var(--pl-space-4);
}

.pl-site-footer .pl-footer-area:first-child {
    grid-column: 1 / -1;
    padding-bottom: var(--pl-space-4);
    border-bottom: 1px solid rgba(255, 255, 255, 0.1);
}

.pl-site-footer .pl-footer-areas--cols-4 .pl-footer-area:nth-child(2) {
    grid-column: 1;
    grid-row: 2 / span 2;
    align-self: start;
}

.pl-site-footer .pl-footer-areas--cols-4 .pl-footer-area:nth-child(3) {
    grid-column: 2;
    grid-row: 2;
}

.pl-site-footer .pl-footer-areas--cols-4 .pl-footer-area:nth-child(4) {
    grid-column: 2;
    grid-row: 3;
}

.pl-site-footer .pl-footer-area {
    color: var(--pl-color-neutral-100, #f5f5f4);
}

.pl-site-footer .pl-footer-area :where(h2, h3, h4) {
    color: var(--pl-color-neutral-100, #f5f5f4);
}

.pslp-footer-tagline,
.pl-site-footer .pl-footer-area:first-child > p:first-child {
    font-family: var(--pl-font-heading);
    font-size: clamp(1.625rem, 1rem + 2.75vw, 2.5rem);
    line-height: 1.2;
    letter-spacing: -0.02em;
    color: var(--pl-color-secondary-lighter, #F5E6C4);
    margin: 0 0 var(--pl-space-4);
    max-width: 54rem;
}

.pslp-footer-affiliation,
.pl-site-footer .pl-footer-area:first-child > p:nth-child(2) {
    font-size: var(--pl-text-sm);
    color: rgba(245, 245, 244, 0.7);
    margin: 0;
}

.pslp-footer-affiliation a {
    color: rgba(245, 245, 244, 0.85);
    text-decoration: underline;
    text-underline-offset: 0.15em;
}

.pslp-footer-affiliation a:hover {
    color: var(--pl-color-neutral-100, #f5f5f4);
}

.pl-site-footer .pslp-footer-sponsors {
    margin: 0;
}

.pl-site-footer .pslp-footer-sponsors a {
    font-family: var(--pl-font-heading);
    font-size: 1.0625rem;
    line-height: 1.35;
    letter-spacing: -0.01em;
}

/* Link-group labels ("For Students", "For Practitioners", …): the headings of a column that stacks several
   heading + list groups. Matched by structure, not heading level (footer headings are h2 in content). */
.pl-site-footer .pl-footer-area:has(> :is(h2, h3, h4) ~ :is(h2, h3, h4)) > :is(h2, h3, h4) {
    font-family: var(--pl-font-body);
    /* 12px floor for small uppercase labels */
    font-size: 0.75rem;
    font-weight: 700;
    letter-spacing: 0.14em;
    line-height: 1.4;
    text-transform: uppercase;
    /* secondary #C9922E sampled 3.98:1 on the footer gradient; light gold is 6.81:1 minimum */
    color: var(--pl-color-secondary-light, #E8C97A);
    margin: 0 0 var(--pl-space-2);
}

.pl-site-footer .pl-footer-area:has(> :is(h2, h3, h4) ~ :is(h2, h3, h4)) > :is(h2, h3, h4):not(:first-child) {
    margin-top: var(--pl-space-4);
}

.pl-site-footer .pl-footer-area :where(ul, ol) {
    list-style: none;
    padding: 0;
    margin: 0 0 var(--pl-space-2);
}

.pl-site-footer .pl-footer-area li {
    margin-bottom: var(--pl-space-1, 0.25rem);
}

.pl-site-footer .pl-footer-area a {
    color: rgba(245, 245, 244, 0.85);
    text-decoration: none;
    transition: color 0.15s ease;
}

.pl-site-footer .pl-footer-area a:hover,
.pl-site-footer .pl-footer-area a:focus-visible {
    color: var(--pl-color-neutral-100, #f5f5f4);
    text-decoration: underline;
    text-underline-offset: 0.15em;
}

/* Links inside running text in a footer area (the Coalition affiliation line, the contact email)
   must be identifiable without relying on color (WCAG 1.4.1): underline them. Footer list links
   stay navigation-style. .pslp-footer-affiliation a only matched when the class was present. */
.pl-site-footer .pl-footer-area p a:not(.wp-block-button__link) {
    text-decoration: underline;
    text-underline-offset: 0.15em;
}

/* No visible new-tab glyph in the footer: at footer text sizes it reads as clutter. Screen readers
   still hear "Opens in a new tab" through Plumbline's aria-describedby hint on these links. */
.pl-site-footer a[target="_blank"]::after {
    content: none;
}

.pl-site-footer .pl-footer-area .wp-block-button__link:hover,
.pl-site-footer .pl-footer-area .wp-block-button__link:focus-visible {
    text-decoration: none;
}

.pl-site-footer .pl-footer-area .wp-block-button.is-style-primary .wp-block-button__link,
.pl-site-footer .pl-footer-area .pslp-footer-cta .wp-block-button__link {
    background: var(--pl-color-secondary, #C9922E);
    color: var(--pl-color-primary-dark, #0B2B1E);
    border: none;
    font-weight: 700;
}

.pl-site-footer .pl-footer-area .wp-block-button.is-style-primary .wp-block-button__link:hover,
.pl-site-footer .pl-footer-area .wp-block-button.is-style-primary .wp-block-button__link:focus-visible,
.pl-site-footer .pl-footer-area .pslp-footer-cta .wp-block-button__link:hover,
.pl-site-footer .pl-footer-area .pslp-footer-cta .wp-block-button__link:focus-visible {
    background: var(--pl-color-secondary-light, #E8C97A);
    color: var(--pl-color-primary-dark, #0B2B1E);
    text-decoration: none;
}

.pl-site-footer__inner {
    border-top: none;
}

.pl-site-footer__copyright {
    color: rgba(245, 245, 244, 0.7);
}

/* The links differ from the line's text by color alone (1.59-1.73:1), so the underline is what marks them
   as links (WCAG 1.4.1). Hover and focus thicken it. */
.pl-site-footer__copyright a:is(:link, :visited) {
    color: var(--pl-color-neutral-100, #f5f5f4);
    text-decoration-line: underline;
    text-decoration-color: currentColor;
    text-decoration-thickness: var(--pl-link-underline-thickness, 0.08em);
    text-underline-offset: var(--pl-link-underline-offset, 0.18em);
}

.pl-site-footer__copyright a:is(:hover, :focus-visible) {
    color: var(--pl-color-neutral-100, #f5f5f4);
    text-decoration-line: underline;
    text-decoration-thickness: var(--pl-link-underline-thickness-hover, 0.12em);
}

.pslp-footer-logo {
    display: inline-block;
    vertical-align: middle;
    width: auto;
    height: 36px;
    margin-right: var(--pl-space-3, 0.75rem);
    opacity: 0.7;
}

.pl-site-footer .pl-footer-area:last-child,
.pl-site-footer .pl-footer-areas--cols-4 .pl-footer-area:nth-child(3),
.pl-site-footer .pl-footer-areas--cols-4 .pl-footer-area:nth-child(4) {
    background: rgba(255, 255, 255, 0.05);
    border-radius: var(--pl-radius-sm, 0.5rem);
    padding: var(--pl-space-4) var(--pl-space-5);
    align-self: start;
}

.pl-site-footer .pl-footer-area:last-child :is(h2, h3, h4),
.pl-site-footer .pl-footer-areas--cols-4 .pl-footer-area:nth-child(3) :is(h2, h3, h4),
.pl-site-footer .pl-footer-areas--cols-4 .pl-footer-area:nth-child(4) :is(h2, h3, h4) {
    margin-bottom: var(--pl-space-2);
}

.pl-site-footer .pl-footer-area:last-child p,
.pl-site-footer .pl-footer-areas--cols-4 .pl-footer-area:nth-child(3) p {
    margin-bottom: var(--pl-space-1, 0.25rem);
    font-size: var(--pl-text-sm);
}

.pl-site-footer .pl-footer-area:last-child .wp-block-buttons,
.pl-site-footer .pl-footer-areas--cols-4 .pl-footer-area:nth-child(3) .wp-block-buttons {
    margin-top: var(--pl-space-3);
}

@media (max-width: 48rem) {
    .pl-site-footer .pl-footer-areas--cols-3,
    .pl-site-footer .pl-footer-areas--cols-4 {
        grid-template-columns: 1fr;
        gap: var(--pl-space-5);
        padding-block: var(--pl-space-6);
    }

    .pl-site-footer .pl-footer-areas--cols-4 .pl-footer-area:nth-child(2),
    .pl-site-footer .pl-footer-areas--cols-4 .pl-footer-area:nth-child(3),
    .pl-site-footer .pl-footer-areas--cols-4 .pl-footer-area:nth-child(4) {
        grid-column: 1;
        grid-row: auto;
    }

    .pl-site-footer .pl-footer-area:first-child {
        padding-bottom: var(--pl-space-3);
    }

    .pslp-footer-tagline,
    .pl-site-footer .pl-footer-area:first-child > p:first-child {
        font-size: clamp(1.375rem, 0.75rem + 2.5vw, 1.625rem);
    }
}

/* News blog index (child home.php) */
body.blog .pslp-news-archive-header {
    /* pl-main already provides max-width + gutter; reset PL archive-header centering/padding */
    max-width: none;
    margin-inline: 0;
    margin-bottom: var(--pl-space-8);
    padding-inline: 0;
    padding-top: var(--pl-space-4);
}

body.blog .pslp-news-archive-header .pl-archive-title {
    color: var(--pl-color-primary-dark, #0b2b1e);
}

body.blog .pslp-news-archive-header .pl-archive-description {
    max-width: 42rem;
    color: var(--pslp-text-readable, #4a4644);
}

/* Keep header and the row list at one readable width, inset from viewport edges */
body.blog .pl-main {
    max-width: var(--pl-width-wide, 75rem);
    margin-inline: auto;
    padding-inline: var(--pl-gutter, 1.5rem);
    padding-block-end: var(--pl-space-8);
}

/* Each post is a horizontal row: thumbnail left, title + meta right.
   Grid areas pin placement regardless of the parent template's source
   order (header, meta, content, footer). */
body.blog .pl-main .pl-entry--archive {
    display: grid;
    grid-template-columns: minmax(8rem, 12rem) 1fr;
    grid-template-areas:
        "media title"
        "media meta"
        "media excerpt";
    column-gap: var(--pl-space-5);
    row-gap: var(--pl-space-2);
    align-items: start;
    padding-block: var(--pl-space-5);
    border-bottom: 1px solid var(--pl-color-neutral-200, #e7e5e4);
}

body.blog .pl-main .pl-entry--archive:last-of-type {
    border-bottom: none;
}

/* The parent template wraps both thumbnail and excerpt in .pl-entry__content.
   display:contents promotes those children to grid items so the thumbnail
   can sit in the media column while the excerpt joins the text column. */
body.blog .pl-entry--archive .pl-entry__content {
    display: contents;
}
body.blog .pl-entry--archive .pl-entry__header {
    grid-area: title;
    margin: 0;
}
body.blog .pl-entry--archive .pl-entry__meta {
    grid-area: meta;
}

/* Line under the excerpt. With the parent's current markup the only direct <p> child here is the
   "Read more" wrapper (the excerpt sits in .pl-entry__excerpt), so no line clamp: its overflow: hidden
   cut off the link's focus ring. */
body.blog .pl-entry--archive .pl-entry__content > p {
    grid-area: excerpt;
    margin: 0;
    font-size: var(--pl-text-sm, 0.9rem);
    line-height: 1.5;
    color: var(--pslp-text-readable, #4a4644);
}

/* No featured image: collapse to a single text column */
body.blog .pl-main .pl-entry--archive:not(:has(.pl-entry__thumbnail)) {
    grid-template-columns: 1fr;
    grid-template-areas:
        "title"
        "meta"
        "excerpt";
}

body.blog .pl-entry--archive .pl-entry__thumbnail {
    grid-area: media;
    align-self: stretch;
    display: block;
    width: 100%;
    border-radius: var(--pl-radius-md, 0.5rem);
    overflow: hidden;
}

body.blog .pl-entry--archive .pl-entry__thumbnail img {
    width: 100%;
    height: 100%;
    object-fit: cover;
}

body.blog .pl-entry--archive .pl-entry__title {
    margin: 0;
    font-size: var(--pl-text-fluid-h3, 1.35rem);
    line-height: 1.25;
}

body.blog .pl-entry--archive .pl-entry__title a {
    color: var(--pl-color-primary-dark, #0b2b1e);
    text-decoration: none;
}

body.blog .pl-entry--archive .pl-entry__title a:hover,
body.blog .pl-entry--archive .pl-entry__title a:focus-visible {
    color: var(--pl-color-primary, #1b4332);
    text-decoration: underline;
}

body.blog .pl-entry--archive .pl-entry__meta {
    margin: 0 0 var(--pl-space-2, 0.5rem);
    font-size: var(--pl-text-sm, 0.9rem);
    color: var(--pslp-text-readable, #4a4644);
}

/* This site shows a date-only byline. The parent template still prints an
   author slot and its " · " separator (the author span holds only
   whitespace, so :empty won't catch it). Hide both so no middot dangles.
   Re-enable these if author bylines are ever displayed. */
body.blog .pl-entry--archive .pl-entry__meta-sep,
body.blog .pl-entry--archive .pl-entry__meta-author {
    display: none;
}

/* The entry footer is unused here; drop it so rows stay tight. */
body.blog .pl-entry--archive .pl-entry__footer {
    display: none;
}

/* Mobile: stack thumbnail above the text */
@media (max-width: 40rem) {
    body.blog .pl-main .pl-entry--archive {
        grid-template-columns: 1fr;
        grid-template-areas:
            "media"
            "title"
            "meta"
            "excerpt";
    }

    body.blog .pl-entry--archive .pl-entry__thumbnail {
        max-width: 100%;
        min-height: 0;
        aspect-ratio: 3 / 2;
    }
}

/* Home audience cards — halve meta (eyebrow) → title gap; entry h3 margins add extra air */
body.home .wp-block-plumbline-card-grid.pl-card-grid--cols-3.pl-card-grid--style-muted:not(.pslp-key-facts):not(.pslp-service-domains) .pl-card__title {
    margin-top: 0;
}

body.home .wp-block-plumbline-card-grid.pl-card-grid--cols-3.pl-card-grid--style-muted:not(.pslp-key-facts):not(.pslp-service-domains) .pl-card__meta {
    margin-bottom: var(--pl-space-4);
}

/* Home audience cards — center orphaned last row (5 cards in 3- or 2-column layouts) */
@media (min-width: 56.25rem) {
    /*
     * 6-column subgrid: each card spans 2 cols (= 1/3 width).
     * Last pair lands in cols 2–3 and 4–5 so the row is visually centered.
     */
    body.home .wp-block-plumbline-card-grid.pl-card-grid--cols-3.pl-card-grid--style-muted:not(.pslp-key-facts):not(.pslp-service-domains) .pl-card-grid__cards {
        grid-template-columns: repeat(6, 1fr);
    }

    body.home .wp-block-plumbline-card-grid.pl-card-grid--cols-3.pl-card-grid--style-muted:not(.pslp-key-facts):not(.pslp-service-domains) .pl-card-grid__cards > .pl-card {
        grid-column: span 2;
    }

    body.home .wp-block-plumbline-card-grid.pl-card-grid--cols-3.pl-card-grid--style-muted:not(.pslp-key-facts):not(.pslp-service-domains) .pl-card-grid__cards > .pl-card:nth-child(4):nth-last-child(2) {
        grid-column: 2 / span 2;
    }

    body.home .wp-block-plumbline-card-grid.pl-card-grid--cols-3.pl-card-grid--style-muted:not(.pslp-key-facts):not(.pslp-service-domains) .pl-card-grid__cards > .pl-card:nth-child(5):last-child {
        grid-column: 4 / span 2;
    }
}

@media (min-width: 37.5625rem) and (max-width: 56.1875rem) {
    /* 2-column pass: 2 + 2 + 1 — center the lone fifth card */
    body.home .wp-block-plumbline-card-grid.pl-card-grid--cols-3.pl-card-grid--style-muted:not(.pslp-key-facts):not(.pslp-service-domains) .pl-card-grid__cards > .pl-card:last-child:nth-child(odd) {
        grid-column: 1 / -1;
        width: calc((100% - var(--grid-gap)) / 2);
        justify-self: center;
    }
}

/* ---------------------------------------------------------------------------
   Footer · Grant Sponsors — chip / tag treatment
   Grant Sponsors is the last footer column (menu_order 4). Render the funder
   names as a tidy row of pill "tags" with a small gold marker dot instead of a
   plain bulleted list. Keeps real text links + full-name title tooltips intact.
--------------------------------------------------------------------------- */
.pl-footer-areas .pl-footer-area:last-child ul.wp-block-list {
    list-style: none;
    margin: 0.4rem 0 0;
    padding: 0;
    display: flex;
    flex-wrap: wrap;
    gap: 0.5rem;
}

.pl-footer-areas .pl-footer-area:last-child ul.wp-block-list li {
    margin: 0;
    padding: 0;
}

.pl-footer-areas .pl-footer-area:last-child ul.wp-block-list li::marker {
    content: "";
}

.pl-footer-areas .pl-footer-area:last-child ul.wp-block-list a {
    display: inline-flex;
    align-items: center;
    padding: 0.34em 0.9em;
    background: color-mix(in srgb, currentColor 12%, transparent);
    border-radius: 999px;
    font-size: 0.8125rem;
    line-height: 1.3;
    color: inherit;
    text-decoration: none;
    transition: background-color 0.18s ease, transform 0.18s ease;
}

.pl-footer-areas .pl-footer-area:last-child ul.wp-block-list a:hover,
.pl-footer-areas .pl-footer-area:last-child ul.wp-block-list a:focus-visible {
    background: color-mix(in srgb, currentColor 20%, transparent);
    transform: translateY(-1px);
}

@media (prefers-reduced-motion: reduce) {
    .pl-footer-areas .pl-footer-area:last-child ul.wp-block-list a:hover,
    .pl-footer-areas .pl-footer-area:last-child ul.wp-block-list a:focus-visible {
        transform: none;
    }
}


/* ---------------------------------------------------------------------------
   Only clickable cards get click affordances

   Plumbline lifts and shadows every card on hover, but card/render.php emits
   .pl-card__link (and .pl-card__cta) only when a link is set — so unlinked cards
   invite a click that goes nowhere. Staff cards are bios and never link out at
   all; their email/phone/profile links do their own hovering.

   Parent block CSS lives in @layer blocks and this file is unlayered, so these
   win outright — no specificity contest. Lives here rather than in the parent's
   blocks.css, where an earlier copy of this fix was silently reverted by the
   1.3.0 -> 1.5.0 upgrade. Remove if Plumbline fixes it upstream.
--------------------------------------------------------------------------- */
.wp-block-plumbline-card:has(.pl-card__link) {
    cursor: pointer;
}

.wp-block-plumbline-card:not(:has(.pl-card__link)):hover {
    transform: none;
    box-shadow: none;
}

.pl-card-grid--cards-elevated .pl-staff-card:hover,
.pl-card-grid--cards-bordered .pl-staff-card:hover,
.pl-card-grid--cards-default .pl-staff-card:hover {
    transform: none;
    box-shadow: none;
}


/* Hero body links are invisible as links until hovered (client feedback, July:
   "you cannot see the hyperlink to the 5 critical service domains unless your
   mouse goes over it" — MSW Students hero). Keep them visibly underlined. */
.pl-hero__inner p a:not(.wp-block-button__link) {
    text-decoration: underline;
    text-underline-offset: 0.15em;
}


/* ── Social Work Ethics — core values in two balanced columns ──────────
   The 6 NASW values sit in a check-circle list (pslp-icon-list). On the
   Explore page we lay them out in 2 columns so the section fills its width
   and reads as designed rather than a single narrow stack. */
.pslp-icon-list.pslp-ethics-values {
    grid-template-columns: repeat(2, minmax(0, 1fr));
    column-gap: var(--pl-space-8);
    row-gap: var(--pl-space-4);
    align-items: start;
    margin-top: var(--pl-space-5);
    max-width: 60rem;
}

.pslp-ethics-values .pslp-icon-list__text strong,
.pslp-ethics-values li strong {
    color: var(--pl-color-primary);
    font-weight: 600;
}

@media (max-width: 700px) {
    .pslp-icon-list.pslp-ethics-values {
        grid-template-columns: 1fr;
    }
}


/* ── Testimonials (tomatillo-design-testimonials plugin) ───────────────
   The plugin ships Yak-flavored CSS in @layer yak-blocks; this stylesheet is
   unlayered, so these rules win without a specificity fight. Bind the plugin's
   --yak-* custom properties to Plumbline tokens, then dress the quote as an
   editorial pull-quote in the site's display serif. Used on the Explore page
   "Voices from the Field" section (block class: pslp-voices). */
.yak-testimonials {
    --yak-testimonial-gap: var(--pl-space-6);
    --yak-testimonial-radius: var(--pl-radius-lg);
    --yak-testimonial-padding: var(--pl-space-7);
    --yak-testimonial-border-color: var(--pl-color-border);
    --yak-testimonial-shadow: var(--pl-shadow-md);
}

.pslp-voices .yak-testimonial {
    background: var(--pl-color-surface);
    border-color: color-mix(in srgb, var(--pl-color-primary) 12%, var(--pl-color-border));
    transition: transform 0.2s ease, box-shadow 0.2s ease;
}

.pslp-voices .yak-testimonial:hover {
    transform: translateY(-2px);
    box-shadow: var(--pl-shadow-lg);
}

@media (prefers-reduced-motion: reduce) {
    .pslp-voices .yak-testimonial:hover {
        transform: none;
    }
}

/* Quote — site display serif, generous and calm */
.pslp-voices .yak-testimonial__quote {
    font-family: var(--pl-font-heading);
    font-size: 1.3rem;
    line-height: 1.5;
    font-style: normal;
    padding-inline-start: 1.75rem;
}

.pslp-voices .yak-testimonial__quote::before {
    color: var(--pl-color-secondary);
    opacity: 0.85;
    font-size: 3em;
    left: 0;
    top: 8px;
}

/* Attribution — name in the display serif, domain as a quiet eyebrow */
.pslp-voices .yak-testimonial__meta {
    margin-top: auto;
    padding-top: var(--pl-space-5);
    border-top: 1px solid var(--pl-color-border);
}

.pslp-voices .yak-testimonial__name {
    font-family: var(--pl-font-heading);
    font-weight: 400;
    font-size: 1.2rem;
    color: var(--pl-color-primary);
}

.pslp-voices .yak-testimonial__affiliation {
    color: var(--pl-color-text-secondary);
    font-size: 0.78rem;
    text-transform: uppercase;
    letter-spacing: 0.05em;
    margin-top: 0.2rem;
}


/* ── Focus ring ─────────────────────────────────────────────────────────
   Plumbline's white/dark/white ring, from its shared --pl-focus-ring-* tokens (fallbacks match Plumbline's
   defaults). This stylesheet is unlayered, so any child rule that touches a focus state outranks Plumbline's
   layered ring; each child-styled focus state re-applies the ring here. Last in the file, so hover rules above
   can't take its box-shadow. The dark band is 3:1+ against the white bands on every surface, photos included. */
.pslp-site-brand__link:focus-visible,
body.home .wp-block-plumbline-card-grid.pslp-service-domains--home-linked .wp-block-plumbline-card:has(.pl-card__link:focus-visible),
.wp-block-plumbline-section.pslp-grant-sponsors ul.wp-block-list a:focus-visible,
.pl-site-footer .pl-footer-area a:focus-visible,
.pl-site-footer__copyright a:focus-visible,
body.blog .pl-entry--archive .pl-entry__title a:focus-visible {
    outline: var(--pl-focus-ring-width, 3px) solid var(--pl-focus-ring-dark, #0B2B1E);
    outline-offset: var(--pl-focus-ring-offset, 2px);
    box-shadow: 0 0 0 calc(var(--pl-focus-ring-offset, 2px) + var(--pl-focus-ring-width, 3px) + 2px) var(--pl-focus-ring-light, #FFFFFF);
}

@media (forced-colors: active) {
    .pslp-site-brand__link:focus-visible,
    body.home .wp-block-plumbline-card-grid.pslp-service-domains--home-linked .wp-block-plumbline-card:has(.pl-card__link:focus-visible),
    .wp-block-plumbline-section.pslp-grant-sponsors ul.wp-block-list a:focus-visible,
    .pl-site-footer .pl-footer-area a:focus-visible,
    .pl-site-footer__copyright a:focus-visible,
    body.blog .pl-entry--archive .pl-entry__title a:focus-visible {
        outline: var(--pl-focus-ring-width, 3px) solid CanvasText;
        box-shadow: none;
    }
}
