/*
 * BCFR theme stylesheet - GENERATED. Do not edit.
 * Source: assets/css/{tokens,base}.css + assets/css/components/*.css
 * Rebuild: uv run --no-project python -I theme/bcfr/bin/build-css.py
 */

/* ===== tokens.css ===== */
/*
 * Token aliases.
 *
 * The design tokens (Workshop variant of the Claude Design prototype) live
 * in theme.json as presets, the single source of truth. WordPress emits
 * them as --wp--preset--* / --wp--custom--* custom properties on :root.
 * This file only gives them the short names the component CSS was written
 * against (--bg, --fg, --accent, --space-N ...), so the components did not
 * have to be rewritten for the block-theme migration.
 *
 * Do not put a literal colour, size or spacing value here: change it in
 * theme.json. docs/DESIGN_LOCK.md has the token mapping table.
 */

:root {
    /* Backgrounds */
    --bg:    var(--wp--preset--color--base);
    --bg-2:  var(--wp--preset--color--base-2);
    --bg-3:  var(--wp--preset--color--base-3);

    /* Foregrounds */
    --fg:    var(--wp--preset--color--contrast);
    --fg-2:  var(--wp--preset--color--contrast-2);
    --fg-3:  var(--wp--preset--color--contrast-3);

    /* Lines */
    --line:    var(--wp--preset--color--bcfr-line);
    --line-2:  var(--wp--preset--color--bcfr-line-2);

    /* Accents */
    --accent:    var(--wp--preset--color--primary);
    --accent-fg: var(--wp--preset--color--bcfr-accent-fg);
    --accent-2:  var(--wp--preset--color--secondary);
    --good:      var(--wp--preset--color--success);

    /* Grid + radius */
    --grid-opacity: var(--wp--custom--grid-opacity);
    --radius:       var(--wp--custom--radius);

    /* Spacing scale (4 / 8 / 12 / 16 / 24 / 32 / 48 / 64 px) */
    --space-1: var(--wp--preset--spacing--10);
    --space-2: var(--wp--preset--spacing--20);
    --space-3: var(--wp--preset--spacing--30);
    --space-4: var(--wp--preset--spacing--40);
    --space-5: var(--wp--preset--spacing--50);
    --space-6: var(--wp--preset--spacing--60);
    --space-7: var(--wp--preset--spacing--70);
    --space-8: var(--wp--preset--spacing--80);

    /* Layout */
    --container-max: var(--wp--style--global--wide-size);
    --container-pad: var(--wp--custom--container-pad);
}

@media (max-width: 640px) {
    :root { --wp--custom--container-pad: 24px; }
}

/* ===== base.css ===== */
/*
 * Reset, typography, utilities. Anything not component-specific.
 */

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

html, body {
    margin: 0;
    padding: 0;
    background: var(--bg);
    color: var(--fg);
    font-family: 'Geist', system-ui, sans-serif;
    font-feature-settings: 'ss01', 'cv11';
    -webkit-font-smoothing: antialiased;
}

img, svg, video { max-width: 100%; height: auto; display: block; }
a { color: inherit; }
a:focus-visible, button:focus-visible, input:focus-visible, select:focus-visible, textarea:focus-visible {
    outline: 2px solid var(--accent);
    outline-offset: 2px;
}

/* Typography */
.display {
    font-family: 'Archivo', sans-serif;
    font-weight: 900;
    letter-spacing: -0.025em;
    line-height: 0.92;
    text-wrap: balance;
}

.mono {
    font-family: 'JetBrains Mono', ui-monospace, monospace;
    font-feature-settings: 'ss01', 'ss02';
}

.label {
    font-family: 'JetBrains Mono', ui-monospace, monospace;
    font-size: 11px;
    font-weight: 500;
    letter-spacing: 0.08em;
    text-transform: uppercase;
    color: var(--fg-3);
}

.eyebrow {
    font-family: 'JetBrains Mono', ui-monospace, monospace;
    font-size: 12px;
    color: var(--accent);
    font-weight: 600;
    letter-spacing: 0.08em;
    text-transform: uppercase;
}

h1, h2, h3, h4 {
    font-family: 'Archivo', sans-serif;
    color: var(--fg);
    letter-spacing: -0.02em;
    margin-top: 0;
}

h1 { font-size: clamp(48px, 6vw, 96px); font-weight: 900; line-height: 0.95; }
h2 { font-size: clamp(36px, 4.5vw, 60px); font-weight: 800; }
h3 { font-size: clamp(20px, 2vw, 26px); font-weight: 700; }
h4 { font-size: 16px; font-weight: 700; }

p { line-height: 1.55; color: var(--fg-2); }

/* Container */
.container-x {
    max-width: var(--container-max);
    margin: 0 auto;
    padding-left: var(--container-pad);
    padding-right: var(--container-pad);
}

/* Grid utility background */
.grid-bg {
    background-image:
        linear-gradient(to right, var(--line) 1px, transparent 1px),
        linear-gradient(to bottom, var(--line) 1px, transparent 1px);
    background-size: 32px 32px;
    background-position: -1px -1px;
    opacity: var(--grid-opacity);
}

/* Hatched placeholder utility */
.hatched {
    background:
        repeating-linear-gradient(
            135deg,
            var(--bg-2) 0 8px,
            var(--bg-3) 8px 16px
        );
    border: 1px solid var(--line-2);
}

/* Visibility helpers — !important so they win against component-level
 * rules like `.bcfr-btn { display: inline-flex }` that load after this
 * file in the cascade.  Utility classes carry their intent explicitly. */
.show-mobile { display: none !important; }
@media (max-width: 880px) {
    .hide-mobile { display: none !important; }
    .show-mobile { display: inline-block !important; }
}

.sr-only {
    position: absolute;
    width: 1px;
    height: 1px;
    padding: 0;
    margin: -1px;
    overflow: hidden;
    clip: rect(0,0,0,0);
    border: 0;
}

/* Skip link */
.skip-link {
    position: absolute;
    top: -40px;
    left: 0;
    padding: 8px 16px;
    background: var(--fg);
    color: var(--bg);
    text-decoration: none;
    z-index: 9999;
}
.skip-link:focus { top: 0; }

/* ===== components/nav.css ===== */
/*
 * Site header: status bar + logo + navigation + CTA.
 *
 * The navigation is the core/navigation block with inline navigation-link
 * children (parts/header.html). The desktop layout is a flat mono link row;
 * below 880px the core overlay menu takes over (core switches at 600px, the
 * media query below moves it to the design's 880px breakpoint).
 */

.wp-block-template-part.bcfr-site-header {
    position: sticky;
    top: 0;
    z-index: 50;
    background: color-mix(in oklab, var(--bg) 88%, transparent);
    backdrop-filter: blur(10px);
    border-bottom: 1px solid var(--line);
}
.admin-bar .wp-block-template-part.bcfr-site-header { top: var(--wp-admin--admin-bar--height, 32px); }

.bcfr-status-bar {
    border-bottom: 1px solid var(--line);
    background: var(--bg-2);
}
.bcfr-status-bar .container-x {
    display: flex;
    justify-content: space-between;
    align-items: center;
    height: 28px;
    font-family: 'JetBrains Mono', ui-monospace, monospace;
    font-size: 10px;
    letter-spacing: 0.12em;
    text-transform: uppercase;
    color: var(--fg-3);
}
.bcfr-status-bar p {
    margin: 0;
    font-size: inherit;
    line-height: inherit;
    color: inherit;
}

/* Legacy span dot (plugin / older markup). Blocks use .bcfr-live instead. */
.bcfr-status-dot {
    position: relative;
    display: inline-block;
    width: 8px;
    height: 8px;
    margin-right: 8px;
    vertical-align: middle;
}
.bcfr-status-dot::before {
    content: '';
    position: absolute;
    inset: 0;
    border-radius: 50%;
    background: var(--good);
    opacity: 0.3;
    animation: bcfr-pulse 2s infinite;
}
.bcfr-status-dot::after {
    content: '';
    position: absolute;
    inset: 25%;
    border-radius: 50%;
    background: var(--good);
}
@keyframes bcfr-pulse {
    0%, 100% { transform: scale(1);   opacity: 0.3; }
    50%      { transform: scale(1.6); opacity: 0; }
}

.bcfr-nav-bar {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 24px;
    height: 96px;
}

.bcfr-logo,
.wp-block-image.bcfr-logo {
    margin: 0;
    background: transparent;
    border: none;
    padding: 0;
    flex: 0 0 auto;
}
.bcfr-logo a { display: block; }
.bcfr-logo img {
    height: 70px;
    width: auto;
    max-width: none;
    object-fit: contain;
}

/* ----- navigation (desktop) ----- */
.bcfr-nav { flex: 1 1 auto; }
.bcfr-nav .wp-block-navigation__container {
    gap: 28px;
    flex-wrap: nowrap;
}
.bcfr-nav .wp-block-navigation-item__content {
    padding: 10px 0;
    font-family: 'JetBrains Mono', ui-monospace, monospace;
    font-size: 12px;
    letter-spacing: 0.06em;
    text-transform: uppercase;
    font-weight: 500;
    color: var(--fg-2);
    text-decoration: none;
    transition: color 0.15s;
    position: relative;
    white-space: nowrap;
}
.bcfr-nav .wp-block-navigation-item__content:hover { color: var(--fg); }
.bcfr-nav .current-menu-item > .wp-block-navigation-item__content { color: var(--fg); }
.bcfr-nav .current-menu-item > .wp-block-navigation-item__content::before {
    content: '◆';
    position: absolute;
    left: -10px;
    top: 50%;
    transform: translateY(-50%);
    color: var(--accent);
}

.bcfr-nav-cta { margin: 0; flex: 0 0 auto; }

/* ----- mobile: core overlay menu, styled as the design's drawer ----- */
.bcfr-nav .wp-block-navigation__responsive-container-open {
    border: 1px solid var(--line-2);
    border-radius: var(--radius);
    padding: 8px 12px;
    background: transparent;
    color: var(--fg);
    font-family: 'JetBrains Mono', ui-monospace, monospace;
    font-size: 11px;
    text-transform: uppercase;
}
.bcfr-nav .wp-block-navigation__responsive-container-open svg { display: none; }
.bcfr-nav .wp-block-navigation__responsive-container-open::after { content: 'Menu'; }

.wp-block-navigation__responsive-container.is-menu-open {
    background: var(--bg-2);
    color: var(--fg);
}
.wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation__responsive-container-content .wp-block-navigation__container {
    gap: 4px;
    align-items: flex-start;
}
.wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation-item__content {
    padding: 12px 0;
    font-size: 13px;
    color: var(--fg);
}

/* Core switches to the overlay at 600px; the design switches at 880px. */
@media (min-width: 600px) and (max-width: 880px) {
    .bcfr-nav .wp-block-navigation__responsive-container-open:not(.always-shown) { display: flex; }
    .bcfr-nav .wp-block-navigation__responsive-container:not(.hidden-by-default):not(.is-menu-open) { display: none; }
}

@media (max-width: 880px) {
    .bcfr-nav-bar { height: 80px; }
    .bcfr-logo img { height: 55px; }
    .bcfr-nav { flex: 0 0 auto; }
}

/*
 * backdrop-filter makes the header the containing block of position:fixed
 * descendants, which would trap the core overlay menu inside the header bar.
 * Below the overlay breakpoint (and whenever it is open) use a solid fill.
 */
.wp-block-template-part.bcfr-site-header:has(.is-menu-open) {
    backdrop-filter: none;
    background: var(--bg);
}
@media (max-width: 880px) {
    .wp-block-template-part.bcfr-site-header {
        backdrop-filter: none;
        background: var(--bg);
    }
}
.wp-block-navigation__responsive-container.is-menu-open { padding: 24px var(--container-pad); }
.wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation__container { align-items: flex-start; }

/* ===== components/buttons.css ===== */
/*
 * Buttons.
 *
 * Two markup shapes share one look:
 *   - plugin / template-tag output: <a class="bcfr-btn bcfr-btn--primary btn-arrow">
 *   - core/button blocks (patterns, parts): the className lands on the
 *     .wp-block-button wrapper, the real link is .wp-block-button__link inside.
 * The wrapper is made visually inert so the link carries the box.
 */

.btn,
a.bcfr-btn,
button.bcfr-btn,
.wp-block-button.bcfr-btn > .wp-block-button__link,
.wp-block-button.bcfr-cta-banner__alt > .wp-block-button__link {
    display: inline-flex;
    align-items: center;
    gap: 10px;
    padding: 14px 22px;
    border: 1px solid var(--fg);
    background: var(--fg);
    color: var(--bg);
    font-family: 'JetBrains Mono', ui-monospace, monospace;
    font-size: 13px;
    font-weight: 600;
    letter-spacing: 0.04em;
    line-height: 1.55;
    text-transform: uppercase;
    text-decoration: none;
    border-radius: var(--radius);
    transition: transform 0.15s ease, background 0.15s, box-shadow 0.15s;
    position: relative;
    cursor: pointer;
}
.btn:hover,
a.bcfr-btn:hover,
button.bcfr-btn:hover,
.wp-block-button.bcfr-btn > .wp-block-button__link:hover {
    transform: translate(-2px, -2px);
    box-shadow: 4px 4px 0 var(--accent);
}

/* The core wrapper must not draw a second box. */
.wp-block-button.bcfr-btn,
.wp-block-button.bcfr-cta-banner__alt {
    background: none;
    border: 0;
    padding: 0;
    box-shadow: none;
    transform: none;
}

.btn--primary,
a.bcfr-btn--primary,
button.bcfr-btn--primary,
.wp-block-button.bcfr-btn--primary > .wp-block-button__link {
    background: var(--accent);
    border-color: var(--accent);
    color: var(--accent-fg);
}
.btn--primary:hover,
a.bcfr-btn--primary:hover,
button.bcfr-btn--primary:hover,
.wp-block-button.bcfr-btn--primary > .wp-block-button__link:hover {
    box-shadow: 4px 4px 0 var(--fg);
}

.btn--ghost,
a.bcfr-btn--ghost,
button.bcfr-btn--ghost,
.wp-block-button.bcfr-btn--ghost > .wp-block-button__link {
    background: transparent;
    color: var(--fg);
}
.btn--ghost:hover,
a.bcfr-btn--ghost:hover,
button.bcfr-btn--ghost:hover,
.wp-block-button.bcfr-btn--ghost > .wp-block-button__link:hover {
    box-shadow: 4px 4px 0 var(--fg);
    background: transparent;
}

.btn-arrow::after,
.wp-block-button.btn-arrow > .wp-block-button__link::after {
    content: '→';
    font-family: 'JetBrains Mono', ui-monospace, monospace;
    display: inline-block;
    transition: transform 0.15s;
}
.btn-arrow:hover::after,
.wp-block-button.btn-arrow > .wp-block-button__link:hover::after { transform: translateX(2px); }

/* The wrapper also matches .btn-arrow: do not draw the arrow on it. */
.wp-block-button.btn-arrow::after { content: none; }

/* Block button groups: keep the gap the template CSS set on its own wrappers. */
.wp-block-buttons { gap: 12px; }

/* ===== components/fields.css ===== */
/*
 * Forminator form styling.
 *
 * Forminator emits its own stable class names (.forminator-ui, etc.).
 * We override their defaults to match the engineering-notebook
 * aesthetic. Selector specificity is calibrated so theme overrides
 * win without using !important.
 */

.forminator-ui {
    --forminator-radius: var(--radius);
}

.forminator-ui label,
.bcfr-field-label {
    display: block;
    font-family: 'JetBrains Mono', ui-monospace, monospace;
    font-size: 11px;
    font-weight: 600;
    letter-spacing: 0.08em;
    text-transform: uppercase;
    color: var(--fg-2);
    margin-bottom: 6px;
}

.forminator-ui input[type="text"],
.forminator-ui input[type="email"],
.forminator-ui input[type="tel"],
.forminator-ui input[type="number"],
.forminator-ui input[type="url"],
.forminator-ui select,
.forminator-ui textarea,
.bcfr-field-input {
    width: 100%;
    padding: 12px 14px;
    border: 1px solid var(--line-2);
    background: var(--bg-3);
    color: var(--fg);
    font-family: 'Geist', system-ui, sans-serif;
    font-size: 15px;
    border-radius: var(--radius);
    outline: none;
    transition: border-color 0.15s;
}

.forminator-ui input:focus,
.forminator-ui select:focus,
.forminator-ui textarea:focus,
.bcfr-field-input:focus {
    border-color: var(--accent);
}

.forminator-ui textarea,
.bcfr-field-input--textarea {
    min-height: 110px;
    resize: vertical;
}

.forminator-ui button[type="submit"],
.bcfr-field-submit {
    display: inline-flex;
    align-items: center;
    gap: 10px;
    padding: 14px 22px;
    border: 1px solid var(--accent);
    background: var(--accent);
    color: var(--accent-fg);
    font-family: 'JetBrains Mono', ui-monospace, monospace;
    font-size: 13px;
    font-weight: 600;
    letter-spacing: 0.04em;
    text-transform: uppercase;
    border-radius: var(--radius);
    cursor: pointer;
    transition: transform 0.15s, box-shadow 0.15s;
}
.forminator-ui button[type="submit"]:hover,
.bcfr-field-submit:hover {
    transform: translate(-2px, -2px);
    box-shadow: 4px 4px 0 var(--fg);
}

.forminator-ui .forminator-error-message,
.bcfr-field-error {
    color: var(--accent);
    font-family: 'JetBrains Mono', ui-monospace, monospace;
    font-size: 11px;
    margin-top: 4px;
    letter-spacing: 0.04em;
}

/* ===== components/sections.css ===== */
.bcfr-section {
    padding: var(--space-8) 0;
    border-bottom: 1px solid var(--line);
}

.bcfr-section-head {
    display: flex;
    align-items: flex-end;
    justify-content: space-between;
    gap: var(--space-6);
    margin-bottom: var(--space-7);
    flex-wrap: wrap;
}

.bcfr-section-head__main { flex: 1 1 480px; }

.bcfr-section-head__rule {
    display: flex;
    align-items: center;
    gap: 14px;
    margin-bottom: 18px;
}
.bcfr-section-head__index {
    font-family: 'JetBrains Mono', ui-monospace, monospace;
    font-size: 12px;
    color: var(--accent);
    font-weight: 600;
    letter-spacing: 0.08em;
}
.bcfr-section-head__line {
    flex: 1;
    height: 1px;
    background: var(--line);
}
/* Block markup: the ruled line is a pseudo-element placed after the first
 * child (index/left label) and before the rest (right label). */
.bcfr-section-head__rule::after {
    content: '';
    flex: 1;
    height: 1px;
    background: var(--line);
    order: 1;
}
.bcfr-section-head__rule > :nth-child(n+2) { order: 2; }
.bcfr-section-head__rule > p {
    margin: 0;
    line-height: 1.2;
    color: inherit;
}
.bcfr-section-head__rule > .bcfr-accent { color: var(--accent); }
.bcfr-section-head__rule > .label { color: var(--fg-3); }
.bcfr-section-head__rule > .bcfr-section-head__index { color: var(--accent); }

.bcfr-section-head__title {
    font-size: clamp(36px, 4.5vw, 60px);
    margin: 0;
    color: var(--fg);
}
.bcfr-section-head__main > p.bcfr-section-head__sub { margin: 16px 0 0; }

.bcfr-section-head__sub {
    margin-top: 16px;
    font-size: 17px;
    line-height: 1.5;
    color: var(--fg-2);
    max-width: 620px;
}

.bcfr-hatched-divider {
    height: 16px;
    background:
        repeating-linear-gradient(135deg, var(--bg-2) 0 8px, var(--bg-3) 8px 16px);
    border-top: 1px solid var(--line);
    border-bottom: 1px solid var(--line);
    margin: var(--space-7) 0;
}

/* ===== components/registration.css ===== */
/* Corner registration marks on framed elements (images, cards). */

.reg-frame {
    position: relative;
}
.reg-frame > .reg {
    position: absolute;
    width: 14px;
    height: 14px;
    border-color: var(--fg);
    pointer-events: none;
}
.reg.tl { top: -1px; left:  -1px; border-top: 1.5px solid; border-left:  1.5px solid; }
.reg.tr { top: -1px; right: -1px; border-top: 1.5px solid; border-right: 1.5px solid; }
.reg.bl { bottom: -1px; left:  -1px; border-bottom: 1.5px solid; border-left:  1.5px solid; }
.reg.br { bottom: -1px; right: -1px; border-bottom: 1.5px solid; border-right: 1.5px solid; }

/* Crosshair utility */
.crosshair {
    position: absolute;
    width: 12px;
    height: 12px;
    pointer-events: none;
}
.crosshair::before,
.crosshair::after {
    content: '';
    position: absolute;
    background: var(--fg);
}
.crosshair::before { left: 0; right: 0; top: 50%; height: 1px; transform: translateY(-0.5px); }
.crosshair::after  { top: 0; bottom: 0; left: 50%; width: 1px; transform: translateX(-0.5px); }

/* Tech badge */
.bcfr-tech-badge {
    display: inline-flex;
    align-items: center;
    gap: 6px;
    padding: 4px 10px;
    font-family: 'JetBrains Mono', ui-monospace, monospace;
    font-size: 11px;
    font-weight: 600;
    letter-spacing: 0.06em;
    text-transform: uppercase;
    border: 1px solid var(--line-2);
    background: transparent;
    color: var(--fg-2);
    border-radius: var(--radius);
}
.bcfr-tech-badge--accent {
    background: var(--accent);
    border-color: var(--accent);
    color: var(--accent-fg);
}
.bcfr-tech-badge--outline {
    border-color: var(--fg);
    color: var(--fg);
}

/*
 * Registration marks without child elements.
 * .reg-frame + .bcfr-marks draws the four corner marks with one pseudo-element
 * (patterns cannot carry the four empty <span class="reg"> children the plugin
 * markup uses, and the marks must survive kses). The .reg spans above still
 * work for plugin output.
 */
.bcfr-marks::before {
    content: '';
    position: absolute;
    inset: -1px;
    z-index: 2;
    pointer-events: none;
    background:
        linear-gradient(var(--fg), var(--fg)) top left / 14px 1.5px no-repeat,
        linear-gradient(var(--fg), var(--fg)) top left / 1.5px 14px no-repeat,
        linear-gradient(var(--fg), var(--fg)) top right / 14px 1.5px no-repeat,
        linear-gradient(var(--fg), var(--fg)) top right / 1.5px 14px no-repeat,
        linear-gradient(var(--fg), var(--fg)) bottom left / 14px 1.5px no-repeat,
        linear-gradient(var(--fg), var(--fg)) bottom left / 1.5px 14px no-repeat,
        linear-gradient(var(--fg), var(--fg)) bottom right / 14px 1.5px no-repeat,
        linear-gradient(var(--fg), var(--fg)) bottom right / 1.5px 14px no-repeat;
}

/* Pulsing "live" status dot as a pseudo-element (no child span needed). */
.bcfr-live::before,
.bcfr-tech-badge--live::before {
    content: '';
    display: inline-block;
    width: 8px;
    height: 8px;
    margin-right: 8px;
    border-radius: 50%;
    background: var(--good);
    vertical-align: middle;
    animation: bcfr-pulse-ring 2s infinite;
}
.bcfr-tech-badge--live::before { margin-right: 0; }
@keyframes bcfr-pulse-ring {
    0%   { box-shadow: 0 0 0 0 color-mix(in oklab, var(--good) 45%, transparent); }
    70%  { box-shadow: 0 0 0 7px transparent; }
    100% { box-shadow: 0 0 0 0 transparent; }
}
@media (prefers-reduced-motion: reduce) {
    .bcfr-live::before,
    .bcfr-tech-badge--live::before { animation: none; }
}

/* ===== components/hero.css ===== */
/*
 * Home hero, programs hero, fees hero, about hero — anything with the
 * grid-bg overlay + large display headline.
 */

.bcfr-hero {
    position: relative;
    overflow: hidden;
    border-bottom: 1px solid var(--line);
}

/* Grid-paper background as a pseudo-element (the .grid-bg child div cannot
 * be a block). --grid-mult scales the base opacity per hero. */
.bcfr-gridded { position: relative; overflow: hidden; --grid-mult: 1; }
.bcfr-gridded::before {
    content: '';
    position: absolute;
    inset: 0;
    pointer-events: none;
    background-image:
        linear-gradient(to right, var(--line) 1px, transparent 1px),
        linear-gradient(to bottom, var(--line) 1px, transparent 1px);
    background-size: 32px 32px;
    background-position: -1px -1px;
    opacity: calc(var(--grid-opacity) * var(--grid-mult));
}
.bcfr-gridded > * { position: relative; }
.bcfr-about-hero.bcfr-gridded { --grid-mult: 0.4; }
.bcfr-programs-hero.bcfr-gridded { --grid-mult: 0.5; }

.bcfr-hero__inner {
    position: relative;
    padding: 60px var(--container-pad) 80px;
}

.bcfr-hero__meta {
    display: flex;
    justify-content: space-between;
    flex-wrap: wrap;
    gap: 16px;
    margin-bottom: 60px;
    font-family: 'JetBrains Mono', ui-monospace, monospace;
    font-size: 11px;
    letter-spacing: 0.1em;
    color: var(--fg-3);
}

.bcfr-hero__grid-2col {
    display: grid;
    grid-template-columns: minmax(0, 1.4fr) minmax(0, 1fr);
    gap: 48px;
    align-items: flex-end;
}
@media (max-width: 900px) {
    .bcfr-hero__grid-2col { grid-template-columns: 1fr; }
}

.bcfr-hero__title {
    font-size: clamp(56px, 8vw, 128px);
    margin: 24px 0 0;
    color: var(--fg);
}

.bcfr-accent { color: var(--accent); }

.bcfr-hero__lede {
    margin-top: 32px;
    font-size: 19px;
    line-height: 1.5;
    color: var(--fg-2);
    max-width: 580px;
}

.bcfr-hero__ctas {
    display: flex;
    gap: 12px;
    margin-top: 36px;
    flex-wrap: wrap;
}

.bcfr-hero__spec {
    border: 1px solid var(--line-2);
    background: var(--bg-3);
    padding: 0;
    position: relative;
}

.bcfr-hero__spec-head {
    padding: 14px 18px;
    border-bottom: 1px solid var(--line-2);
    display: flex;
    justify-content: space-between;
    align-items: center;
    font-family: 'JetBrains Mono', ui-monospace, monospace;
    font-size: 11px;
    font-weight: 600;
    letter-spacing: 0.1em;
}

.bcfr-hero__spec-photo {
    margin: 0;
    border-bottom: 1px solid var(--line-2);
    aspect-ratio: 5 / 4;
    overflow: hidden;
}

.bcfr-hero__spec-photo img {
    width: 100%;
    height: 100%;
    object-fit: cover;
}

.bcfr-hero__spec-facts {
    padding: 18px;
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 16px;
}

.bcfr-hero__spec-fact .label {
    margin-bottom: 4px;
}

.bcfr-hero__spec-fact .display {
    font-size: 22px;
    color: var(--fg);
}

/* About hero */
.bcfr-about-hero {
    border-bottom: 1px solid var(--line);
    position: relative;
    overflow: hidden;
}
.bcfr-about-hero__inner {
    position: relative;
    padding: 80px var(--container-pad) 60px;
}
.bcfr-about-hero__title {
    font-size: clamp(56px, 8vw, 120px);
    margin: 24px 0 0;
    max-width: 1100px;
}

/* Programs hero */
.bcfr-programs-hero {
    position: relative;
    overflow: hidden;
}
.bcfr-programs-hero__title {
    font-size: clamp(56px, 8vw, 112px);
    margin: 24px 0 0;
}
.bcfr-programs-hero__lede {
    margin-top: 28px;
    font-size: 18px;
    line-height: 1.55;
    color: var(--fg-2);
    max-width: 700px;
}

/* Fees hero */
.bcfr-fees-hero__title {
    font-size: clamp(48px, 7vw, 96px);
    margin: 24px 0 0;
    max-width: 1100px;
}
.bcfr-fees-hero__lede {
    margin-top: 24px;
    font-size: 18px;
    color: var(--fg-2);
    line-height: 1.55;
    max-width: 700px;
}

/* Signup/donate/contact hero */
.bcfr-signup-hero__title {
    font-size: clamp(40px, 6vw, 72px);
    margin: 24px 0 0;
}
.bcfr-signup-hero__lede {
    margin-top: 16px;
    font-size: 18px;
    color: var(--fg-2);
    line-height: 1.55;
    max-width: 680px;
}

/* Hero text is now core paragraphs/headings: neutralise the generic p rules. */
.bcfr-hero__meta p,
.bcfr-hero__spec-head p { margin: 0; color: inherit; line-height: 1.55; }
.bcfr-hero__meta p.mono { font-size: inherit; }
.bcfr-hero__spec-head p.bcfr-accent { color: var(--accent); }
.bcfr-hero__copy .bcfr-tech-badge { margin: 0; }
.bcfr-hero__copy .bcfr-hero__title { margin-top: 24px; }
.bcfr-hero__spec-facts p { margin: 0; }
.bcfr-hero__spec-fact p.display { font-size: 22px; line-height: 0.92; color: var(--fg); }
.bcfr-hero__spec-photo.wp-block-image { margin: 0; }
.bcfr-hero__spec-photo.wp-block-image img { height: 100%; }
.bcfr-hero__ctas { margin-top: 36px; }
.bcfr-hero__spec { align-self: end; }
/* Narrow screens: the 56px floor of the design clamp overflows 390px with long words. */
.bcfr-programs-hero__title { font-size: clamp(40px, 8vw, 112px); }
.bcfr-about-hero__title { font-size: clamp(44px, 8vw, 120px); }
.bcfr-hero__title { font-size: clamp(48px, 8vw, 128px); }

/* ===== components/ticker.css ===== */
.bcfr-ticker {
    border-top: 1px solid var(--line);
    background: var(--bg-2);
    overflow: hidden;
    position: relative;
}

/*
 * Single-pass marquee: the track starts one container-width to the right
 * (padding-left: 100%) and scrolls left by its own width, then loops. No
 * duplicated items (they would be read twice by assistive tech).
 */
.bcfr-ticker__track {
    display: inline-flex;
    gap: 48px;
    padding: 14px 0 14px 100%;
    white-space: nowrap;
    animation: bcfr-ticker-scroll 70s linear infinite;
    font-family: 'JetBrains Mono', ui-monospace, monospace;
    font-size: 12px;
    letter-spacing: 0.06em;
    color: var(--fg-2);
    text-transform: uppercase;
}
.bcfr-ticker__track p {
    margin: 0;
    font-size: inherit;
    color: inherit;
    line-height: 1.55;
}

.bcfr-ticker__item::before {
    content: "◆";
    color: var(--accent);
    margin-right: 14px;
}

@keyframes bcfr-ticker-scroll {
    0%   { transform: translateX(0); }
    100% { transform: translateX(-100%); }
}

@media (prefers-reduced-motion: reduce) {
    .bcfr-ticker__track { animation: none; padding-left: 0; flex-wrap: wrap; white-space: normal; }
}

/* ===== components/home-extras.css ===== */
/*
 * Home-page specific bits beyond the Hero: ProgramFinder grid, Stats
 * strip, UpcomingEvents rows, Mission grid, Sponsor strip, CTA banner.
 */

.bcfr-section {
    padding: 100px 0;
}

.bcfr-section--bordered {
    border-bottom: 1px solid var(--line);
}

.bcfr-section--soft {
    background: var(--bg-2);
}

/* ProgramFinder cards on home */
.bcfr-program-grid {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(280px, 1fr));
    gap: 1px;
    background: var(--line);
    border: 1px solid var(--line);
}

.bcfr-program-card {
    background: var(--bg-3);
    border: none;
    padding: 28px;
    display: flex;
    flex-direction: column;
    gap: 16px;
    text-decoration: none;
    color: inherit;
    transition: background 0.15s, transform 0.2s;
    position: relative;
}
.bcfr-program-card:hover { background: var(--bg-2); }

.bcfr-program-card__top {
    display: flex;
    justify-content: space-between;
    align-items: flex-start;
}

.bcfr-program-card__photo {
    aspect-ratio: 4 / 3;
    overflow: hidden;
    border: 1px solid var(--line-2);
    position: relative;
}
.bcfr-program-card__photo img {
    width: 100%;
    height: 100%;
    object-fit: cover;
}

.bcfr-program-card__title {
    font-size: 24px;
    margin: 0;
    color: var(--fg);
}

.bcfr-program-card__summary {
    font-size: 14px;
    color: var(--fg-2);
    line-height: 1.5;
    margin: 0;
    flex: 1;
}

.bcfr-program-card__foot {
    display: flex;
    justify-content: space-between;
    align-items: center;
    border-top: 1px solid var(--line);
    padding-top: 14px;
    margin-top: auto;
    font-family: 'JetBrains Mono', ui-monospace, monospace;
    font-size: 12px;
    color: var(--fg-2);
}

/* Stats strip */
.bcfr-stats {
    padding: 60px 0;
    border-bottom: 1px solid var(--line);
}

.bcfr-stats__grid {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(180px, 1fr));
    gap: 32px;
}

.bcfr-stat {
    border-left: 1px solid var(--line-2);
    padding-left: 20px;
}

.bcfr-stat__meta {
    font-size: 10px;
    color: var(--accent);
    letter-spacing: 0.12em;
    margin-bottom: 10px;
}

.bcfr-stat__n {
    font-size: clamp(48px, 5vw, 72px);
    color: var(--fg);
    margin-bottom: 6px;
}

.bcfr-stat__label {
    font-size: 14px;
    color: var(--fg-2);
}

/* Upcoming events as horizontal rows */
.bcfr-events--rows {
    list-style: none;
    padding: 0;
    margin: 0;
    border: 1px solid var(--line);
    border-bottom: none;
}

.bcfr-event-row {
    list-style: none;
    border-bottom: 1px solid var(--line);
    background: var(--bg-3);
    transition: background 0.15s;
}
.bcfr-event-row:hover { background: var(--bg-2); }

.bcfr-event-row__link {
    display: grid;
    grid-template-columns: 140px 1fr auto auto;
    gap: 24px;
    align-items: center;
    padding: 22px 24px;
    text-decoration: none;
    color: inherit;
}

.bcfr-event-row__date {
    border-right: 1px solid var(--line-2);
    padding-right: 14px;
}
.bcfr-event-row__date .display {
    font-size: 22px;
    color: var(--fg);
    line-height: 1.1;
}
.bcfr-event-row__date .mono {
    font-size: 11px;
    color: var(--fg-3);
    letter-spacing: 0.06em;
    margin-top: 4px;
}

.bcfr-event-row__title {
    font-size: 17px;
    font-weight: 600;
    color: var(--fg);
    margin-bottom: 4px;
}
.bcfr-event-row__loc {
    font-size: 13px;
    color: var(--fg-2);
}
.bcfr-event-row__arrow {
    color: var(--fg-3);
    font-family: 'JetBrains Mono', ui-monospace, monospace;
}

@media (max-width: 720px) {
    .bcfr-event-row__link { grid-template-columns: 1fr; gap: 12px; }
    .bcfr-event-row__date { border-right: none; padding-right: 0; }
}

/* Mission */
.bcfr-mission { padding: 120px 0; }

.bcfr-mission__grid {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 80px;
    align-items: flex-start;
}
@media (max-width: 880px) {
    .bcfr-mission__grid { grid-template-columns: 1fr; gap: 32px; }
}

.bcfr-mission__title {
    font-size: clamp(42px, 5vw, 72px);
    margin: 20px 0 0;
    color: var(--fg);
}

.bcfr-mission__body p {
    font-size: 18px;
    line-height: 1.6;
    color: var(--fg-2);
    margin: 0 0 20px;
}

.bcfr-mission__principles {
    display: grid;
    gap: 16px;
    margin-top: 8px;
}

.bcfr-mission__principle {
    display: flex;
    gap: 14px;
    padding-top: 14px;
    border-top: 1px solid var(--line);
}

.bcfr-mission__principle .mono {
    font-size: 14px;
    min-width: 28px;
    padding-top: 2px;
}

.bcfr-mission__principle-t {
    font-size: 15px;
    font-weight: 600;
    color: var(--fg);
    margin-bottom: 4px;
}

.bcfr-mission__principle-d {
    font-size: 14px;
    color: var(--fg-2);
}

/* Sponsor strip */
.bcfr-sponsorstrip {
    padding: 60px 0;
}

.bcfr-sponsorstrip__head {
    display: flex;
    align-items: center;
    gap: 24px;
    margin-bottom: 28px;
}

.bcfr-sponsorstrip__grid {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(160px, 1fr));
    gap: 1px;
    background: var(--line);
    border: 1px solid var(--line);
}

.bcfr-sponsorstrip__cell {
    padding: 24px 16px;
    background: var(--bg-3);
    font-family: 'JetBrains Mono', ui-monospace, monospace;
    font-size: 11px;
    letter-spacing: 0.06em;
    color: var(--fg-2);
    text-transform: uppercase;
    font-weight: 500;
    text-align: center;
    min-height: 72px;
    display: flex;
    align-items: center;
    justify-content: center;
}

.bcfr-sponsorstrip__cell img {
    max-width: 100%;
    max-height: 60px;
    object-fit: contain;
}

/* CTA banner */
.bcfr-cta-banner {
    padding: 100px 0;
    background: var(--fg);
    color: var(--bg);
    border-bottom: 1px solid var(--line);
    position: relative;
    overflow: hidden;
}

.bcfr-cta-banner::before,
.bcfr-cta-banner::after {
    content: '';
    position: absolute;
    left: 0;
    right: 0;
    height: 12px;
    background: repeating-linear-gradient(45deg, var(--accent) 0 8px, transparent 8px 16px);
}
.bcfr-cta-banner::before { top: 0; }
.bcfr-cta-banner::after  { bottom: 0; }

.bcfr-cta-banner__inner { position: relative; max-width: 760px; }

.bcfr-cta-banner__title {
    font-size: clamp(48px, 6vw, 88px);
    margin: 20px 0;
    color: var(--bg);
}

.bcfr-cta-banner__lede {
    font-size: 18px;
    color: color-mix(in oklab, var(--bg) 75%, transparent);
    max-width: 560px;
    line-height: 1.55;
    margin-bottom: 32px;
}

.bcfr-cta-banner__ctas {
    display: flex;
    gap: 12px;
    flex-wrap: wrap;
}

a.bcfr-cta-banner__alt,
.wp-block-button.bcfr-cta-banner__alt > .wp-block-button__link {
    padding: 14px 22px;
    background: transparent;
    color: var(--bg);
    border: 1px solid var(--bg);
    font-family: 'JetBrains Mono', ui-monospace, monospace;
    font-size: 13px;
    font-weight: 600;
    letter-spacing: 0.04em;
    text-transform: uppercase;
    border-radius: var(--radius);
    text-decoration: none;
}
a.bcfr-cta-banner__alt:hover,
.wp-block-button.bcfr-cta-banner__alt > .wp-block-button__link:hover {
    background: var(--bg);
    color: var(--fg);
}

/* ----- block-markup adjustments (paragraphs/headings instead of spans/divs) ----- */
.bcfr-stat p { margin: 0; }
.bcfr-stat p.bcfr-stat__meta { font-size: 10px; margin-bottom: 10px; color: var(--accent); }
.bcfr-stat p.bcfr-stat__n { color: var(--fg); margin-bottom: 6px; }

.bcfr-mission__principles p { margin: 0; font-size: 14px; line-height: 1.5; }
.bcfr-mission__principles p.mono { color: var(--accent); min-width: 28px; padding-top: 2px; }
.bcfr-mission__principles p.bcfr-mission__principle-t { font-size: 15px; font-weight: 600; color: var(--fg); margin-bottom: 4px; }
.bcfr-mission__principles p.bcfr-mission__principle-d { color: var(--fg-2); }
.bcfr-mission__grid > .wp-block-group:first-child > p.label { margin: 0; }

.bcfr-sponsorstrip__head > p { margin: 0; }
.bcfr-sponsorstrip__head::after {
    content: '';
    flex: 1;
    height: 1px;
    background: var(--line);
}
.bcfr-sponsorstrip .bcfr-sponsors { margin: 0; }

.bcfr-cta-banner__inner > p.mono { margin: 0; color: var(--accent); }
.bcfr-cta-banner__inner > p.bcfr-cta-banner__lede { margin: 0 0 32px; }
.bcfr-cta-banner__inner > h2 { margin: 20px 0; }
.bcfr-section__more { margin-top: var(--space-6); }

/* ===== components/about-extras.css ===== */
/*
 * About page extras: story two-column, values cards, board grid,
 * testimonials, FAQ accordion.
 */

.bcfr-about-story {
    display: grid;
    grid-template-columns: 1fr 1.2fr;
    gap: 56px;
}
@media (max-width: 880px) {
    .bcfr-about-story { grid-template-columns: 1fr; gap: 24px; }
}

.bcfr-about-story__index { padding-top: 8px; }

.bcfr-about-story__lede {
    font-size: 22px;
    line-height: 1.5;
    color: var(--fg);
    margin: 0;
    font-weight: 500;
}

.bcfr-about-story__body p:not(:first-child) {
    font-size: 16px;
    line-height: 1.65;
    color: var(--fg-2);
    margin-top: 22px;
}

/* Values cards */
.bcfr-values {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 32px;
}
@media (max-width: 720px) { .bcfr-values { grid-template-columns: 1fr; } }

.bcfr-values__card {
    border: 1px solid var(--line-2);
    background: var(--bg-3);
    padding: 32px;
    position: relative;
}

.bcfr-values__title {
    font-size: 28px;
    margin: 0 0 14px;
    color: var(--fg);
}

.bcfr-values__card p {
    font-size: 15px;
    color: var(--fg-2);
    line-height: 1.6;
    margin: 0;
}

/* Board.
 *
 * Single-column stack — each row is a director, with photo+meta on the
 * left and bio on the right. The plugin's baseline stylesheet sets
 * grid-template-columns: repeat(auto-fit, minmax(16rem, 1fr)) on
 * .bcfr-board for its standalone shortcode output, which would lay the
 * directors out side-by-side. The theme explicitly overrides that here
 * to match the prototype's vertical stack.
 */
.bcfr-board {
    display: grid;
    grid-template-columns: 1fr;
    gap: 1px;
    background: var(--line);
    border: 1px solid var(--line);
    list-style: none;
    padding: 0;
    margin: 1.5rem 0;
}

.bcfr-board__row {
    background: var(--bg-3);
    padding: 28px;
    display: grid;
    grid-template-columns: 220px 1fr;
    gap: 32px;
    align-items: flex-start;
}
@media (max-width: 720px) {
    .bcfr-board__row { grid-template-columns: 1fr; gap: 16px; }
}

.bcfr-board__photo {
    aspect-ratio: 1 / 1;
    overflow: hidden;
    border: 1px solid var(--line-2);
    position: relative;
}
.bcfr-board__photo img {
    width: 100%;
    height: 100%;
    object-fit: cover;
}

.bcfr-board__role {
    font-size: 11px;
    color: var(--accent);
    letter-spacing: 0.08em;
    font-weight: 600;
    margin-top: 14px;
}

.bcfr-board__name {
    font-size: 24px;
    margin-top: 4px;
}

.bcfr-board__joined {
    font-size: 11px;
    color: var(--fg-3);
    letter-spacing: 0.06em;
    margin-top: 4px;
}

.bcfr-board__bio {
    font-size: 15px;
    color: var(--fg-2);
    line-height: 1.65;
    padding-top: 4px;
}
.bcfr-board__bio p { margin: 0 0 12px; }
.bcfr-board__bio p:last-child { margin-bottom: 0; }

/* Testimonials */
.bcfr-testimonials {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(280px, 1fr));
    gap: 24px;
}

.bcfr-testimonial {
    padding: 28px;
    border: 1px solid var(--line-2);
    background: var(--bg-3);
    margin: 0;
    position: relative;
}

.bcfr-testimonial__mark {
    font-size: 56px;
    color: var(--accent);
    display: block;
    line-height: 0.5;
    margin-bottom: 22px;
}

.bcfr-testimonial p {
    font-size: 16px;
    color: var(--fg);
    line-height: 1.55;
    margin: 0 0 20px;
}

.bcfr-testimonial cite {
    font-size: 11px;
    color: var(--fg-3);
    letter-spacing: 0.08em;
    text-transform: uppercase;
    font-style: normal;
}

/* FAQ (core/details: the <summary> is the question row) */
.bcfr-faq {
    border-top: 1px solid var(--line);
}

.bcfr-faq__item {
    border-bottom: 1px solid var(--line);
}
.bcfr-faq__item > summary {
    display: flex;
    justify-content: space-between;
    align-items: center;
    padding: 24px 0;
    cursor: pointer;
    list-style: none;
    font-size: 18px;
    font-weight: 500;
    color: var(--fg);
}
.bcfr-faq__item > summary::-webkit-details-marker { display: none; }
.bcfr-faq__item > summary::after {
    content: '+';
    font-family: 'JetBrains Mono', ui-monospace, monospace;
    font-size: 14px;
    color: var(--accent);
    transition: transform 0.2s;
    min-width: 16px;
    text-align: right;
}
.bcfr-faq__item[open] > summary::after { transform: rotate(45deg); }
.bcfr-faq__item > p {
    margin: 0;
    padding-bottom: 24px;
    font-size: 15px;
    color: var(--fg-2);
    line-height: 1.6;
    max-width: 760px;
}

.bcfr-faq__q {
    display: flex;
    justify-content: space-between;
    align-items: center;
    padding: 24px 0;
    cursor: pointer;
    list-style: none;
    font-size: 18px;
    font-weight: 500;
    color: var(--fg);
}

.bcfr-faq__q::-webkit-details-marker { display: none; }

.bcfr-faq__chevron {
    font-family: 'JetBrains Mono', ui-monospace, monospace;
    font-size: 14px;
    color: var(--accent);
    transition: transform 0.2s;
    min-width: 16px;
}

.bcfr-faq__item[open] .bcfr-faq__chevron {
    transform: rotate(45deg);
}

.bcfr-faq__a {
    padding-bottom: 24px;
}

.bcfr-faq__a p {
    font-size: 15px;
    color: var(--fg-2);
    line-height: 1.6;
    margin: 0;
    max-width: 760px;
}

/* ----- block-markup adjustments ----- */
.bcfr-about-story__body p { margin: 0; }
.bcfr-about-story p.label { margin: 0; }
.bcfr-values__card p { margin: 0; }
.bcfr-values__card h3 { margin: 0 0 14px; }
.bcfr-about-hero__inner > h1 { margin-top: 24px; }

/* ===== components/programs-extras.css ===== */
/*
 * Programs page: one anchored section per program, sign-up slot, pathway ladder.
 * (The sticky tab strip and its script were dropped in the block-theme
 * migration: every program is a real section with an id, so /programs/#frc
 * works without JavaScript.)
 */

.bcfr-program-detail__grid {
    display: grid;
    grid-template-columns: 1.05fr 1fr;
    gap: 56px;
    align-items: flex-start;
}
@media (max-width: 980px) {
    .bcfr-program-detail__grid { grid-template-columns: minmax(0, 1fr); }
}

.bcfr-program-detail__badges {
    display: flex;
    gap: 8px;
    flex-wrap: wrap;
    margin-bottom: 20px;
}

.bcfr-program-detail__title {
    font-size: clamp(40px, 5vw, 64px);
    margin: 0 0 20px;
    word-break: break-word;
}

.bcfr-program-detail__summary {
    font-size: 18px;
    color: var(--fg-2);
    line-height: 1.55;
    margin-bottom: 36px;
}

.bcfr-program-detail__spec {
    border: 1px solid var(--line);
}

.bcfr-program-detail__spec-row {
    display: grid;
    grid-template-columns: 180px 1fr;
    padding: 14px 18px;
    background: var(--bg-3);
    border-top: 1px solid var(--line);
}

.bcfr-program-detail__spec-row.is-alt {
    background: var(--bg-2);
}

.bcfr-program-detail__spec-row:first-child {
    border-top: none;
}

.bcfr-program-detail__learns {
    margin-top: 32px;
}

.bcfr-program-detail__learns-grid {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(220px, 1fr));
    gap: 12px;
    margin-top: 14px;
}

.bcfr-program-detail__learn {
    padding: 14px;
    border: 1px solid var(--line-2);
    background: var(--bg-3);
    font-size: 14px;
    color: var(--fg);
    display: flex;
    gap: 10px;
    align-items: flex-start;
}

.bcfr-program-detail__learn .mono {
    color: var(--accent);
    font-size: 11px;
    margin-top: 2px;
}

.bcfr-program-detail__ctas {
    display: flex;
    gap: 12px;
    margin-top: 36px;
    flex-wrap: wrap;
}

.bcfr-program-detail__photos {
    display: flex;
    flex-direction: column;
    gap: 16px;
}

.bcfr-program-detail__photo-main {
    aspect-ratio: 4 / 5;
    overflow: hidden;
    border: 1px solid var(--line-2);
}
.bcfr-program-detail__photo-main img {
    width: 100%;
    height: 100%;
    object-fit: cover;
}

/* Pathway ladder */
.bcfr-pathway__row {
    display: flex;
    justify-content: space-between;
    gap: 12px;
    position: relative;
}

.bcfr-pathway__row::before {
    content: '';
    position: absolute;
    top: 36px;
    left: 5%;
    right: 5%;
    height: 2px;
    background: var(--line-2);
}

.bcfr-pathway__step {
    background: transparent;
    border: none;
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 14px;
    padding: 0;
    flex: 1;
    position: relative;
}

.bcfr-pathway__pill {
    width: 72px;
    height: 72px;
    border-radius: 50%;
    background: var(--bg-3);
    color: var(--fg);
    border: 1.5px solid var(--line-2);
    display: grid;
    place-items: center;
    font-family: 'Archivo', sans-serif;
    font-weight: 900;
    font-size: 22px;
    transition: all 0.2s;
}

.bcfr-pathway__step.is-active .bcfr-pathway__pill {
    background: var(--accent);
    color: var(--accent-fg);
    border-color: var(--accent);
}

.bcfr-pathway__meta { text-align: center; }
.bcfr-pathway__meta .mono { font-size: 11px; color: var(--fg-3); letter-spacing: 0.06em; }
.bcfr-pathway__name { font-size: 14px; font-weight: 600; margin-top: 4px; color: var(--fg-2); }
.bcfr-pathway__step.is-active .bcfr-pathway__name { color: var(--fg); }

/* ----- block-markup adjustments ----- */
.bcfr-program-detail { scroll-margin-top: 140px; }
.bcfr-program-detail__badges p { margin: 0; line-height: 1.55; }
.bcfr-program-detail__main .bcfr-programs { margin: 0 0 var(--space-5); grid-template-columns: 1fr; }
.bcfr-program-detail__signup > p.label { margin: 0 0 var(--space-4); }
.bcfr-program-detail__ctas { margin-top: 0; }

.bcfr-pathway__pill { margin: 0; line-height: 1; }
.bcfr-pathway__meta p { margin: 0; }
.bcfr-pathway__meta p.mono { font-size: 11px; color: var(--fg-3); letter-spacing: 0.06em; }
.bcfr-pathway__meta p.bcfr-pathway__name { font-size: 14px; font-weight: 600; margin-top: 4px; color: var(--fg-2); }
.bcfr-pathway__meta a { color: inherit; }
.bcfr-pathway__meta a:hover { color: var(--accent); }
@media (max-width: 720px) {
    .bcfr-pathway__row { flex-wrap: wrap; row-gap: 24px; }
    .bcfr-pathway__row::before { display: none; }
    .bcfr-pathway__step { flex: 1 1 40%; }
}

/* Long unbreakable strings (file names in the mentor-guide list) must wrap
   instead of widening the grid track past the viewport on phones. */
.bcfr-program-detail__main,
.bcfr-program-detail__signup { min-width: 0; overflow-wrap: anywhere; }

/* ===== components/fees-extras.css ===== */
.bcfr-fee-cards {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(260px, 1fr));
    gap: 1px;
    background: var(--line);
    border: 1px solid var(--line);
}

.bcfr-fee-card {
    background: var(--bg-3);
    padding: 28px;
    display: flex;
    flex-direction: column;
    gap: 14px;
}

.bcfr-fee-card__head {
    display: flex;
    justify-content: space-between;
    align-items: flex-start;
}

.bcfr-fee-card__title {
    font-size: 22px;
    margin: 0;
}

.bcfr-fee-card__price { margin-top: auto; }

.bcfr-fee-card__amount {
    font-size: 56px;
    color: var(--fg);
    line-height: 1;
}

.bcfr-fee-card__currency {
    font-size: 22px;
    color: var(--fg-3);
    margin-right: 4px;
}

.bcfr-fee-card__per {
    font-size: 11px;
    color: var(--fg-3);
    letter-spacing: 0.06em;
    margin-top: 2px;
}

.bcfr-fee-card__cta {
    width: 100%;
    justify-content: center;
}

.bcfr-fees-included {
    margin-top: 60px;
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(320px, 1fr));
    gap: 56px;
}
@media (max-width: 880px) {
    .bcfr-fees-included { grid-template-columns: 1fr; gap: 32px; }
}

.bcfr-fees-included h2 {
    font-size: 36px;
    margin: 14px 0 24px;
}

.bcfr-fees-included__list {
    list-style: none;
    padding: 0;
    margin: 0;
    border: 1px solid var(--line);
}

.bcfr-fees-included__list { counter-reset: fee-item; }

.bcfr-fees-included__list li {
    padding: 18px 18px 18px 62px;
    border-bottom: 1px solid var(--line);
    position: relative;
    font-size: 14px;
    color: var(--fg-2);
    counter-increment: fee-item;
}
.bcfr-fees-included__list li:last-child { border-bottom: none; }

/* 01..05 index from a CSS counter (the list is a plain ordered core/list). */
.bcfr-fees-included__list li::before {
    content: '0' counter(fee-item);
    position: absolute;
    left: 18px;
    top: 20px;
    color: var(--accent);
    font-family: 'JetBrains Mono', ui-monospace, monospace;
    font-size: 11px;
    font-weight: 600;
}
.bcfr-fees-included__list li strong {
    font-size: 15px;
    font-weight: 600;
    color: var(--fg);
}

.bcfr-fees-included__t {
    font-size: 15px;
    font-weight: 600;
    color: var(--fg);
}

.bcfr-fees-included__d {
    font-size: 14px;
    color: var(--fg-2);
    margin-top: 2px;
}

.bcfr-fees-callout {
    margin-top: 28px;
    padding: 24px;
    border: 1.5px solid var(--accent);
    background: var(--bg-3);
}

.bcfr-fees-callout__head {
    font-size: 11px;
    font-weight: 600;
    letter-spacing: 0.08em;
    margin-bottom: 10px;
}

.bcfr-fees-cta { margin-top: 24px; }

/* ----- block-markup adjustments ----- */
.bcfr-fees-included__col > p.label { margin: 0; }
.bcfr-fees-included__col > p { margin: 0 0 var(--space-4); }
.bcfr-fees-callout p { margin: 0; }
.bcfr-fees-callout p.bcfr-fees-callout__head { margin-bottom: 10px; }
.bcfr-fees-cta.wp-block-buttons { margin-top: 24px; }
.bcfr-section > .container-x > .bcfr-fee-cards { margin-bottom: 0; }

/* ===== components/buildlog.css ===== */
/*
 * Build Log — engineering-notebook entries.
 *
 * Targets shortcode output from the bcfr-core plugin
 * (.bcfr-buildlog / .bcfr-buildlog-card) and the theme's own
 * single + archive templates.
 */

.bcfr-buildlog {
    list-style: none;
    padding: 0;
    margin: var(--space-7) 0;
    display: grid;
    gap: var(--space-6);
    grid-template-columns: 1fr;
}

.bcfr-buildlog-item { list-style: none; }

.bcfr-buildlog-card {
    border-top: 1px solid var(--line);
    padding: var(--space-5) 0;
    position: relative;
}
.bcfr-buildlog-card:first-child { border-top: none; padding-top: 0; }

.bcfr-buildlog-meta {
    display: flex;
    gap: var(--space-4);
    align-items: center;
    font-family: 'JetBrains Mono', ui-monospace, monospace;
    font-size: 11px;
    letter-spacing: 0.08em;
    text-transform: uppercase;
    color: var(--fg-3);
    margin-bottom: var(--space-3);
}

.bcfr-buildlog-date {
    color: var(--accent);
    font-weight: 600;
    font-variant-numeric: tabular-nums;
}

.bcfr-buildlog-cat {
    padding: 2px 8px;
    border: 1px solid var(--line-2);
    border-radius: var(--radius);
    color: var(--fg-2);
}

.bcfr-buildlog-card[data-category="match"]    .bcfr-buildlog-cat { border-color: var(--accent); color: var(--accent); }
.bcfr-buildlog-card[data-category="industry"] .bcfr-buildlog-cat { border-color: var(--accent-2); color: var(--accent-2); }
.bcfr-buildlog-card[data-category="spotlight"] .bcfr-buildlog-cat { border-color: var(--good); color: var(--good); }

.bcfr-buildlog-byline {
    margin-left: auto;
    font-size: 14px;
    color: var(--fg-2);
}

.bcfr-buildlog-title {
    margin: 0 0 var(--space-3) 0;
    font-family: 'Archivo', sans-serif;
    font-size: clamp(22px, 2.5vw, 32px);
    font-weight: 800;
    letter-spacing: -0.02em;
    line-height: 1.1;
}
.bcfr-buildlog-title a { text-decoration: none; color: var(--fg); }
.bcfr-buildlog-title a:hover { color: var(--accent); }

.bcfr-buildlog-body {
    color: var(--fg-2);
    font-size: 16px;
    line-height: 1.55;
    max-width: 70ch;
}

.bcfr-buildlog-body p { margin: 0 0 var(--space-3) 0; }

/* Weekly group divider (used on archive page) */
.bcfr-buildlog-week-divider {
    margin: var(--space-7) 0 var(--space-5) 0;
    display: flex;
    align-items: center;
    gap: var(--space-3);
}
.bcfr-buildlog-week-divider::before,
.bcfr-buildlog-week-divider::after {
    content: '';
    flex: 1;
    height: 16px;
    background:
        repeating-linear-gradient(135deg, var(--bg-2) 0 8px, var(--bg-3) 8px 16px);
    border-top: 1px solid var(--line);
    border-bottom: 1px solid var(--line);
}
.bcfr-buildlog-week-divider__label {
    font-family: 'JetBrains Mono', ui-monospace, monospace;
    font-size: 12px;
    letter-spacing: 0.08em;
    text-transform: uppercase;
    color: var(--fg-2);
}

/* ----- core Query Loop / Post blocks as Build Log cards ----- */
ul.wp-block-post-template.bcfr-buildlog { margin: var(--space-7) 0; padding: 0; }
.bcfr-buildlog > li.wp-block-post { margin: 0; list-style: none; }
.bcfr-buildlog-meta > * { margin: 0; }
.bcfr-buildlog-meta .wp-block-post-date { font-size: inherit; }
.bcfr-buildlog-meta .bcfr-buildlog-cat a { color: inherit; text-decoration: none; }
.bcfr-buildlog-meta .bcfr-buildlog-cat { font-size: inherit; line-height: 1.4; }
.bcfr-buildlog-byline { margin-left: auto; font-size: 14px; color: var(--fg-2); }
.bcfr-buildlog-card .wp-block-post-title { margin: 0 0 var(--space-3); }
.bcfr-buildlog-card .wp-block-post-title a { text-decoration: none; color: var(--fg); }
.bcfr-buildlog-card .wp-block-post-title a:hover { color: var(--accent); }
.bcfr-buildlog-card .wp-block-post-excerpt,
.bcfr-buildlog-card .wp-block-post-excerpt p { margin: 0; }
.bcfr-buildlog > li:first-child > .bcfr-buildlog-card { border-top: none; padding-top: 0; }
.bcfr-entry-title {
    font-size: clamp(36px, 4.5vw, 60px);
    margin: var(--space-3) 0 var(--space-5);
}
/* Links inside the meta row must not pick up plugin/global link typography. */
.bcfr-buildlog-meta a { font: inherit; letter-spacing: inherit; }

/* ===== components/sponsor.css ===== */
.bcfr-sponsors {
    list-style: none;
    padding: 0;
    margin: var(--space-5) 0;
    display: grid;
    gap: var(--space-4);
    grid-template-columns: repeat(auto-fit, minmax(180px, 1fr));
}

.bcfr-sponsor-tile {
    display: flex;
    flex-direction: column;
    align-items: center;
    text-align: center;
    gap: var(--space-2);
    padding: var(--space-5);
    border: 1px solid var(--line-2);
    background: var(--bg-3);
    border-radius: var(--radius);
}

.bcfr-sponsor-tile[data-tier="platinum"] { border-color: var(--accent); }
.bcfr-sponsor-tile[data-tier="gold"]     { border-color: var(--accent-2); }

.bcfr-sponsor-logo {
    max-width: 120px;
    max-height: 80px;
    object-fit: contain;
}

.bcfr-sponsor-name {
    font-family: 'Archivo', sans-serif;
    font-weight: 700;
    font-size: 14px;
    color: var(--fg);
}

.bcfr-sponsor-tier {
    font-family: 'JetBrains Mono', ui-monospace, monospace;
    font-size: 10px;
    letter-spacing: 0.08em;
    text-transform: uppercase;
    color: var(--fg-3);
}

/* ===== components/board.css ===== */
.bcfr-board {
    list-style: none;
    padding: 0;
    margin: var(--space-7) 0;
    display: grid;
    gap: var(--space-5);
}

.bcfr-board-member {
    display: grid;
    grid-template-columns: 160px 1fr;
    gap: var(--space-5);
    padding: var(--space-5) 0;
    border-top: 1px solid var(--line);
}
.bcfr-board-member:first-child { border-top: none; padding-top: 0; }

.bcfr-board-photo {
    width: 160px;
    height: 160px;
    object-fit: cover;
    border-radius: var(--radius);
    border: 1px solid var(--line-2);
}

.bcfr-board-body {
    display: flex;
    flex-direction: column;
    gap: var(--space-2);
}

.bcfr-board-name {
    font-family: 'Archivo', sans-serif;
    font-size: 22px;
    font-weight: 800;
    letter-spacing: -0.02em;
    color: var(--fg);
}

.bcfr-board-role {
    font-family: 'JetBrains Mono', ui-monospace, monospace;
    font-size: 11px;
    letter-spacing: 0.08em;
    text-transform: uppercase;
    color: var(--accent);
}

.bcfr-board-bio {
    color: var(--fg-2);
    font-size: 15px;
    line-height: 1.55;
    max-width: 70ch;
}
.bcfr-board-bio p { margin: 0 0 var(--space-3) 0; }

.bcfr-board-email {
    font-family: 'JetBrains Mono', ui-monospace, monospace;
    font-size: 12px;
    color: var(--fg-2);
    text-decoration: none;
}
.bcfr-board-email:hover { color: var(--accent); }

@media (max-width: 640px) {
    .bcfr-board-member { grid-template-columns: 1fr; }
    .bcfr-board-photo { width: 120px; height: 120px; }
}

/* Directors listed by the bcfr/board block inside the page: one framed row per director. */
.bcfr-board > .bcfr-board-member {
    background: var(--bg-3);
    padding: 28px;
    border-top: none;
}
.bcfr-board > .bcfr-board-member:not(:has(img)) { grid-template-columns: 1fr; }
.bcfr-board-name { display: block; }
ul.bcfr-board { gap: 1px; margin: var(--space-5) 0; }

/* ===== components/program.css ===== */
.bcfr-programs {
    list-style: none;
    padding: 0;
    margin: var(--space-7) 0;
    display: grid;
    gap: var(--space-5);
    grid-template-columns: repeat(auto-fit, minmax(280px, 1fr));
}

.bcfr-program-card {
    display: flex;
    flex-direction: column;
    gap: var(--space-3);
    padding: var(--space-5);
    border: 1px solid var(--line-2);
    background: var(--bg-3);
    border-radius: var(--radius);
    position: relative;
}

.bcfr-program-photo {
    width: 100%;
    aspect-ratio: 4 / 3;
    object-fit: cover;
    border-radius: var(--radius);
}

.bcfr-program-title {
    margin: 0;
    font-family: 'Archivo', sans-serif;
    font-size: 22px;
    font-weight: 800;
    letter-spacing: -0.02em;
}
.bcfr-program-title a { text-decoration: none; color: var(--fg); }
.bcfr-program-title a:hover { color: var(--accent); }

.bcfr-program-facts {
    list-style: none;
    padding: 0;
    margin: 0;
    display: grid;
    gap: 4px;
}
.bcfr-program-facts li {
    display: flex;
    justify-content: space-between;
    padding: 6px 0;
    border-bottom: 1px solid var(--line);
    font-family: 'JetBrains Mono', ui-monospace, monospace;
    font-size: 12px;
    letter-spacing: 0.04em;
}
.bcfr-program-facts li span:first-child {
    color: var(--fg-3);
    text-transform: uppercase;
    letter-spacing: 0.08em;
    font-size: 10px;
    display: inline-flex;
    align-items: center;
}
.bcfr-program-facts li span:last-child {
    color: var(--fg);
    font-weight: 600;
}

.bcfr-program-body {
    color: var(--fg-2);
    font-size: 14px;
    line-height: 1.55;
}

.bcfr-program-signup {
    margin-top: auto;
    display: inline-flex;
    align-items: center;
    gap: 8px;
    padding: 10px 16px;
    border: 1px solid var(--accent);
    background: var(--accent);
    color: var(--accent-fg);
    text-decoration: none;
    font-family: 'JetBrains Mono', ui-monospace, monospace;
    font-size: 12px;
    font-weight: 600;
    letter-spacing: 0.06em;
    text-transform: uppercase;
    border-radius: var(--radius);
    align-self: flex-start;
    transition: transform 0.15s, box-shadow 0.15s;
}
.bcfr-program-signup:hover {
    transform: translate(-2px, -2px);
    box-shadow: 4px 4px 0 var(--fg);
}

/* ===== components/event.css ===== */
.bcfr-events {
    list-style: none;
    padding: 0;
    margin: var(--space-7) 0;
    display: grid;
    gap: var(--space-4);
}

.bcfr-event-card {
    display: grid;
    grid-template-columns: 120px 1fr auto;
    gap: var(--space-5);
    padding: var(--space-5);
    border: 1px solid var(--line-2);
    background: var(--bg-3);
    border-radius: var(--radius);
    align-items: center;
}

.bcfr-event-when {
    font-family: 'JetBrains Mono', ui-monospace, monospace;
    font-size: 13px;
    letter-spacing: 0.04em;
    color: var(--fg-2);
}

.bcfr-event-title {
    margin: 0;
    font-family: 'Archivo', sans-serif;
    font-size: 18px;
    font-weight: 700;
    letter-spacing: -0.01em;
}
.bcfr-event-title a { color: var(--fg); text-decoration: none; }
.bcfr-event-title a:hover { color: var(--accent); }

.bcfr-event-where {
    font-size: 13px;
    color: var(--fg-3);
    display: block;
    margin-top: 4px;
}

.bcfr-event-type {
    padding: 4px 10px;
    border: 1px solid var(--line-2);
    border-radius: var(--radius);
    font-family: 'JetBrains Mono', ui-monospace, monospace;
    font-size: 10px;
    letter-spacing: 0.08em;
    text-transform: uppercase;
    color: var(--fg-2);
    align-self: start;
}

.bcfr-event-card[data-event-type="competition"] .bcfr-event-type { border-color: var(--accent); color: var(--accent); }

@media (max-width: 640px) {
    .bcfr-event-card { grid-template-columns: 1fr; }
}

/* ===== components/newsletters.css ===== */
/*
 * Newsletters archive — surface for the /newsletters/ page template.
 *
 * Layout: cards in a 2-column responsive grid, each with cover thumbnail
 * (optional featured image), date, title, excerpt, and CTAs (read +
 * download PDF).  Matches the engineering-notebook aesthetic — reg-frame
 * corners on each card, mono date labels, refined-red accent on titles
 * via hover.
 */

.bcfr-newsletters {
    list-style: none;
    padding: 0;
    margin: var(--space-7) 0 0;
    display: grid;
    gap: var(--space-6);
    grid-template-columns: 1fr;
}

@media (min-width: 900px) {
    .bcfr-newsletters {
        grid-template-columns: 1fr 1fr;
    }
}

.bcfr-newsletters__item {
    list-style: none;
    position: relative;
    padding: var(--space-5);
    background: var(--bg);
}

.bcfr-newsletters__card {
    display: grid;
    gap: var(--space-4);
    grid-template-columns: 1fr;
}

@media (min-width: 600px) {
    /* Side-by-side cover + body on slightly wider viewports.  The
       newsletter cards' featured-image dimensions are unconstrained
       upstream so we use object-fit:cover with a fixed aspect to keep
       the grid tidy. */
    .bcfr-newsletters__card {
        grid-template-columns: minmax(180px, 220px) 1fr;
        align-items: start;
    }
}

.bcfr-newsletters__cover {
    display: block;
    overflow: hidden;
    background: var(--bg-2);
    aspect-ratio: 4 / 5;
    border: 1px solid var(--line);
}

.bcfr-newsletters__cover img {
    width: 100%;
    height: 100%;
    object-fit: cover;
    display: block;
}

.bcfr-newsletters__body {
    display: flex;
    flex-direction: column;
    gap: var(--space-3);
}

.bcfr-newsletters__date {
    font-family: 'JetBrains Mono', ui-monospace, monospace;
    font-size: 11px;
    letter-spacing: 0.08em;
    text-transform: uppercase;
    color: var(--accent);
    font-weight: 600;
}

.bcfr-newsletters__title {
    margin: 0;
    font-family: 'Archivo', sans-serif;
    font-size: clamp(20px, 2.2vw, 28px);
    font-weight: 800;
    letter-spacing: -0.02em;
    line-height: 1.15;
}

.bcfr-newsletters__title a {
    text-decoration: none;
    color: var(--fg);
}

.bcfr-newsletters__title a:hover,
.bcfr-newsletters__title a:focus-visible {
    color: var(--accent);
}

.bcfr-newsletters__excerpt {
    color: var(--fg-2);
    font-size: 15px;
    line-height: 1.55;
}

.bcfr-newsletters__excerpt p {
    margin: 0;
}

.bcfr-newsletters__ctas {
    display: flex;
    flex-wrap: wrap;
    gap: var(--space-3);
    margin-top: auto;
    padding-top: var(--space-2);
}

.bcfr-newsletters__pdf {
    /* "Download PDF" — secondary CTA next to the primary "Read online"
       button.  Plain outline, no fill, so it reads as a utility action. */
    background: transparent;
    border: 1px solid var(--line-2);
    color: var(--fg);
}

.bcfr-newsletters__pdf:hover {
    border-color: var(--accent);
    color: var(--accent);
}

/* ===== components/footer.css ===== */
.wp-block-template-part.bcfr-site-footer {
    background: var(--bg-2);
    border-top: 1px solid var(--line);
    margin-top: 0;
}

.bcfr-site-footer__grid {
    padding-top: 60px;
    padding-bottom: 24px;
    display: grid;
    gap: 48px;
    grid-template-columns: 1.6fr 1fr 1fr 1fr;
}

@media (max-width: 880px) {
    .bcfr-site-footer__grid {
        grid-template-columns: 1fr 1fr;
        gap: 32px;
    }
    .bcfr-footer-brand { grid-column: 1 / -1; }
}
@media (max-width: 520px) {
    .bcfr-site-footer__grid { grid-template-columns: 1fr; }
}

.bcfr-footer-brand img {
    height: 64px;
    width: auto;
    max-width: none;
}
.bcfr-footer-brand .wp-block-image { margin: 0 0 var(--space-3); }

.bcfr-footer-brand p {
    font-size: 14px;
    color: var(--fg-2);
    max-width: 40ch;
    line-height: 1.55;
    margin: 0 0 var(--space-4);
}

.bcfr-footer-col h4 {
    font-family: 'JetBrains Mono', ui-monospace, monospace;
    font-size: 11px;
    font-weight: 600;
    letter-spacing: 0.08em;
    text-transform: uppercase;
    color: var(--fg-3);
    margin: 0 0 var(--space-4);
}

.bcfr-footer-col ul,
ul.bcfr-footer-links {
    list-style: none;
    padding: 0;
    margin: 0;
    display: grid;
    gap: 10px;
}
.bcfr-footer-col a {
    color: var(--fg-2);
    text-decoration: none;
    font-size: 14px;
}
.bcfr-footer-col a:hover { color: var(--accent); }

.bcfr-footer-bottom {
    border-top: 1px solid var(--line);
    padding-top: var(--space-5);
    padding-bottom: var(--space-5);
    font-family: 'JetBrains Mono', ui-monospace, monospace;
    font-size: 11px;
    letter-spacing: 0.08em;
    text-transform: uppercase;
    color: var(--fg-3);
    display: flex;
    justify-content: space-between;
    flex-wrap: wrap;
    gap: var(--space-4);
}
.bcfr-footer-bottom p {
    margin: 0;
    font-size: inherit;
    color: inherit;
}

/* ===== components/blocks.css ===== */
/*
 * Block-theme plumbing: layout resets for the wrappers WordPress adds,
 * the free-flow prose area, query loop and pagination, and small pieces
 * of page chrome that only exist as block markup.
 */

/* ----- document skeleton ----- */
/* Sections own their spacing; WordPress' block gap must not open seams. */
.wp-site-blocks > * { margin-block-start: 0; margin-block-end: 0; }
.wp-block-post-content > .alignfull,
.wp-block-post-content > .wp-block-group.alignfull { margin-block-start: 0; margin-block-end: 0; }
.bcfr-site-main { display: block; }
.wp-block-group.container-x { max-width: var(--container-max); margin-left: auto; margin-right: auto; }
.wp-block-image { margin: 0; }
.wp-block-image img { max-width: 100%; height: auto; }
.wp-block-image.bcfr-logo img { max-width: none; }
.wp-block-buttons { margin: 0; }

/* ----- free-flow prose (standard page body, news posts, Build Log bodies) ----- */
.bcfr-prose,
.bcfr-page-body { font-size: 17px; color: var(--fg-2); }
.bcfr-prose > * + *,
.bcfr-page-body > * + * { margin-top: 1.25em; margin-bottom: 0; }
.bcfr-prose p,
.bcfr-page-body p { font-size: 17px; line-height: 1.65; margin: 0; }
.bcfr-prose > * + p,
.bcfr-page-body > * + p { margin-top: 1.25em; }
.bcfr-prose h2,
.bcfr-page-body h2 { font-size: clamp(28px, 3vw, 40px); margin-top: 1.75em; margin-bottom: 0; }
.bcfr-prose h3,
.bcfr-page-body h3 { margin-top: 1.5em; margin-bottom: 0; }
.bcfr-prose ul, .bcfr-prose ol,
.bcfr-page-body ul, .bcfr-page-body ol { padding-left: 1.4em; line-height: 1.65; }
.bcfr-prose a:not(.wp-element-button),
.bcfr-page-body a:not(.wp-element-button) {
    color: var(--accent);
    text-decoration: underline;
    text-underline-offset: 3px;
}
.bcfr-prose a:not(.wp-element-button):hover,
.bcfr-page-body a:not(.wp-element-button):hover { color: var(--fg); }
.bcfr-prose .wp-block-image,
.bcfr-page-body .wp-block-image { margin: 1.75em 0; }
.bcfr-prose .wp-block-image figcaption,
.bcfr-page-body .wp-block-image figcaption {
    margin-top: 8px;
    font-family: 'JetBrains Mono', ui-monospace, monospace;
    font-size: 11px;
    letter-spacing: 0.04em;
    color: var(--fg-3);
}
.bcfr-prose > .wp-block-group.container-x { margin-top: 0; }

/* ----- page chrome ----- */
.bcfr-form-wrap { max-width: 860px; margin-left: 0; margin-right: auto; }
.bcfr-form-wrap.container-x { max-width: var(--container-max); }
.bcfr-form-wrap.container-x > * { max-width: 860px; }
.bcfr-team-form { margin-top: var(--space-7); }
.bcfr-team-form:first-of-type { margin-top: 0; }
.bcfr-team-form__title { font-size: 26px; margin: 0 0 var(--space-4); }
.bcfr-calendar { min-height: 200px; }
.bcfr-404 { text-align: center; }
.bcfr-404 .bcfr-section-head__rule { max-width: 360px; margin-left: auto; margin-right: auto; }
.bcfr-404 .wp-block-buttons { justify-content: center; margin-top: var(--space-4); }
.bcfr-404 p { margin-top: var(--space-3); }
.bcfr-empty {
    padding: var(--space-5);
    border: 1px dashed var(--line-2);
    color: var(--fg-3);
    font-family: 'JetBrains Mono', ui-monospace, monospace;
    font-size: 12px;
    letter-spacing: 0.04em;
}

/* ----- single post / entry ----- */
.bcfr-post-image { margin: var(--space-5) 0; }
.bcfr-post-image img { width: 100%; height: auto; }
.bcfr-section-head__main > h1.wp-block-post-title { margin: 0; }
.bcfr-section-head__rule > .wp-block-post-date { margin: 0; }

/* ----- query loop pagination ----- */
.bcfr-pagination {
    margin-top: var(--space-6);
    padding-top: var(--space-4);
    border-top: 1px solid var(--line);
    font-family: 'JetBrains Mono', ui-monospace, monospace;
    font-size: 12px;
    letter-spacing: 0.06em;
    text-transform: uppercase;
}
.bcfr-pagination a { color: var(--fg-2); }
.bcfr-pagination a:hover { color: var(--accent); }
.bcfr-pagination .page-numbers.current { color: var(--accent); }

/* ----- search block ----- */
.bcfr-search { margin: 0 0 var(--space-6); max-width: 560px; }
.bcfr-search .wp-block-search__input {
    padding: 12px 14px;
    border: 1px solid var(--line-2);
    background: var(--bg-3);
    color: var(--fg);
    font-family: 'Geist', system-ui, sans-serif;
    font-size: 15px;
    border-radius: var(--radius);
}
.bcfr-search .wp-block-search__button {
    margin-left: 8px;
    border: 1px solid var(--accent);
    border-radius: var(--radius);
}

/* Logo sizing needs more specificity than the generic .wp-block-image img rule. */
.wp-block-image.bcfr-logo img { height: 70px; width: auto; max-width: none; }
.bcfr-footer-brand .wp-block-image.bcfr-logo img { height: 64px; }
@media (max-width: 880px) { .wp-block-image.bcfr-logo img { height: 55px; } }

/* Page bodies without a pattern (e.g. a form-only page): keep text off the screen edge and links visible. */
.wp-block-post-content.is-layout-constrained > :not(.alignfull):not(.alignwide) {
    padding-left: var(--container-pad);
    padding-right: var(--container-pad);
    box-sizing: border-box;
}
.wp-block-post-content.is-layout-constrained > :not(.alignfull) a:not(.wp-element-button) {
    color: var(--accent);
    text-decoration: underline;
    text-underline-offset: 3px;
}
.wp-block-post-content.is-layout-constrained > p:first-child,
.wp-block-post-content.is-layout-constrained > h1:first-child,
.wp-block-post-content.is-layout-constrained > h2:first-child { margin-top: var(--space-7); }
.wp-block-post-content.is-layout-constrained > :last-child:not(.alignfull) { margin-bottom: var(--space-7); }

/* ===== components/plugins.css ===== */
/*
 * Third-party plugin surfaces, styled with CSS only (no PHP templates):
 * Forminator (base look is in fields.css) and the Pretty Google Calendar
 * widget on /events/. WooCommerce is retired and has no styling here.
 */

/* ----- Pretty Google Calendar ----- */
.pgc-calendar-wrapper,
.bcfr-calendar .fc {
    font-family: 'Geist', system-ui, sans-serif;
    color: var(--fg);
}
.bcfr-calendar .fc .fc-button {
    background: var(--fg);
    border-color: var(--fg);
    color: var(--bg);
    font-family: 'JetBrains Mono', ui-monospace, monospace;
    font-size: 12px;
    letter-spacing: 0.04em;
    text-transform: uppercase;
    border-radius: var(--radius);
}
.bcfr-calendar .fc .fc-button:hover,
.bcfr-calendar .fc .fc-button-primary:not(:disabled).fc-button-active { background: var(--accent); border-color: var(--accent); color: var(--accent-fg); }
.bcfr-calendar .fc .fc-toolbar-title { font-family: 'Archivo', sans-serif; font-weight: 800; letter-spacing: -0.02em; }
.bcfr-calendar .fc a { color: inherit; }
