/* ==========================================================================
   CUDLC Theme — Patch additions (merged)
   Generated: 2026-05-13 | Version token: v1.21.5-merged
   Contains: 17 patch additions files ONLY.
   variables.css and theme.css are loaded separately by the framework
   (ztc_theme_stylesheets steps 1+2) before this file (step 3).
   Cascade order: variables.css → theme.css → this file.
   ========================================================================== */

/* ── v1.13.0-additions.css ────────────────────────────────── */
/* =====================================================================
   Caleb · CUDLC v1.13.0 — Homepage polish additions
   ---------------------------------------------------------------------
   Three new sections: sitewide banner, news band, quick-answers
   accordion. Plus tasteful polish for existing components — softer
   card shadows, larger mobile tap targets, and small kerning fixes.

   This file is appended to theme.css (or @import'd at its end).
   All selectors are scoped to body.theme-caleb-cudlc to match the
   conventions in the existing stylesheet.
   ===================================================================== */


/* =====================================================================
   1. SITEWIDE ANNOUNCEMENT BANNER (new in v1.13.0)
   Sits above the hero. Empty content = not rendered server-side.
   Dismissible per-user via localStorage (24-hour memory).
   ===================================================================== */
body.theme-caleb-cudlc .sitewide-banner {
    position: relative;
    background: linear-gradient(90deg, var(--navy-deep) 0%, var(--navy) 100%);
    color: var(--text-on-dark);
    border-bottom: 2px solid var(--gold);
    transition: opacity 0.3s ease, max-height 0.3s ease;
}
body.theme-caleb-cudlc .sitewide-banner.is-dismissed {
    opacity: 0;
    max-height: 0;
    overflow: hidden;
}

body.theme-caleb-cudlc .sitewide-banner__inner {
    max-width: 1200px;
    margin: 0 auto;
    padding: 0.75rem clamp(1rem, 4vw, 2rem);
    display: flex;
    align-items: center;
    gap: 0.875rem;
    font-family: var(--font-sans);
    font-size: 14px;
    line-height: 1.4;
}

body.theme-caleb-cudlc .sitewide-banner__icon {
    color: var(--gold-light);
    font-size: 16px;
    flex-shrink: 0;
    line-height: 1;
}

body.theme-caleb-cudlc .sitewide-banner__text {
    flex: 1;
    min-width: 0;
}

body.theme-caleb-cudlc .sitewide-banner__cta {
    flex-shrink: 0;
    color: var(--gold-light);
    font-weight: 600;
    text-decoration: none;
    border-bottom: 1px solid rgba(212, 175, 79, 0.4);
    padding-bottom: 1px;
    transition: color 0.2s ease, border-color 0.2s ease;
}
body.theme-caleb-cudlc .sitewide-banner__cta:hover {
    color: var(--gold);
    border-bottom-color: var(--gold);
}

body.theme-caleb-cudlc .sitewide-banner__close {
    flex-shrink: 0;
    background: transparent;
    border: 0;
    color: rgba(245, 239, 224, 0.7);
    font-size: 22px;
    line-height: 1;
    width: 28px;
    height: 28px;
    border-radius: 50%;
    cursor: pointer;
    transition: background 0.2s ease, color 0.2s ease;
    margin-left: 0.5rem;
}
body.theme-caleb-cudlc .sitewide-banner__close:hover {
    background: rgba(245, 239, 224, 0.12);
    color: var(--text-on-dark);
}
body.theme-caleb-cudlc .sitewide-banner__close:focus-visible {
    outline: 2px solid var(--gold);
    outline-offset: 2px;
}

@media (max-width: 720px) {
    body.theme-caleb-cudlc .sitewide-banner__inner {
        font-size: 13px;
        padding: 0.625rem 1rem;
        gap: 0.625rem;
        flex-wrap: wrap;
    }
    body.theme-caleb-cudlc .sitewide-banner__text { flex: 1 0 100%; order: 2; padding-right: 32px; }
    body.theme-caleb-cudlc .sitewide-banner__icon { order: 1; }
    body.theme-caleb-cudlc .sitewide-banner__cta {
        order: 3;
        font-size: 13px;
    }
    body.theme-caleb-cudlc .sitewide-banner__close {
        position: absolute;
        top: 6px;
        right: 8px;
    }
}


/* =====================================================================
   2. NEWS BAND on homepage (new in v1.13.0)
   Three editorial cards. Auto-collapses server-side if no recent post.
   ===================================================================== */
body.theme-caleb-cudlc .news-band {
    background: var(--paper);
    padding: clamp(4.5rem, 8vw, 7rem) 0;
    position: relative;
}
body.theme-caleb-cudlc .news-band::before {
    /* Subtle top edge — separates news from preceding testimonials */
    content: "";
    position: absolute;
    top: 0; left: 50%;
    transform: translateX(-50%);
    width: 80px; height: 1px;
    background: var(--rule);
}

body.theme-caleb-cudlc .news-band__head {
    display: flex;
    align-items: flex-end;
    justify-content: space-between;
    gap: 2rem;
    margin-bottom: 2.5rem;
    flex-wrap: wrap;
}

body.theme-caleb-cudlc .news-band__title {
    font-family: var(--font-serif);
    font-size: clamp(2rem, 3.5vw, 2.75rem);
    font-weight: 500;
    line-height: 1.1;
    letter-spacing: -0.015em;
    color: var(--ink-strong);
    margin: 0;
}
body.theme-caleb-cudlc .news-band__title em {
    font-style: italic;
    color: var(--gold);
    font-weight: 500;
}

body.theme-caleb-cudlc .news-band__all {
    font-family: var(--font-sans);
    font-size: 13px;
    font-weight: 600;
    letter-spacing: 0.04em;
    color: var(--ink-strong);
    text-decoration: none;
    border-bottom: 1px solid var(--rule);
    padding-bottom: 2px;
    transition: color 0.2s ease, border-color 0.2s ease;
    white-space: nowrap;
}
body.theme-caleb-cudlc .news-band__all:hover {
    color: var(--gold);
    border-bottom-color: var(--gold);
}

body.theme-caleb-cudlc .news-band__grid {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(280px, 1fr));
    gap: 1.5rem;
}

body.theme-caleb-cudlc .news-card {
    background: var(--paper-pure);
    border: 1px solid var(--rule-soft);
    border-radius: var(--radius-lg);
    overflow: hidden;
    transition: transform 0.25s cubic-bezier(.2, .8, .2, 1), box-shadow 0.25s ease, border-color 0.25s ease;
}
body.theme-caleb-cudlc .news-card:hover {
    transform: translateY(-3px);
    box-shadow: var(--shadow-md);
    border-color: var(--rule);
}

body.theme-caleb-cudlc .news-card__link {
    display: block;
    padding: 1.5rem 1.5rem 1.75rem;
    text-decoration: none;
    color: inherit;
}

body.theme-caleb-cudlc .news-card__meta {
    display: flex;
    align-items: center;
    gap: 0.75rem;
    margin-bottom: 1rem;
    font-family: var(--font-sans);
    font-size: 11px;
    font-weight: 700;
    letter-spacing: 0.16em;
    text-transform: uppercase;
}
body.theme-caleb-cudlc .news-card__cat {
    color: var(--gold-deep);
    background: var(--gold-soft);
    padding: 0.25rem 0.625rem;
    border-radius: 99px;
}
body.theme-caleb-cudlc .news-card__date {
    color: var(--ink-faint);
    letter-spacing: 0.06em;
}

body.theme-caleb-cudlc .news-card__title {
    font-family: var(--font-serif);
    font-size: 1.375rem;
    font-weight: 500;
    line-height: 1.25;
    color: var(--ink-strong);
    margin: 0 0 0.625rem;
    letter-spacing: -0.005em;
    transition: color 0.2s ease;
}
body.theme-caleb-cudlc .news-card:hover .news-card__title {
    color: var(--navy);
}

body.theme-caleb-cudlc .news-card__excerpt {
    font-family: var(--font-sans);
    font-size: 14px;
    line-height: 1.55;
    color: var(--ink-soft);
    margin: 0 0 1rem;
}

body.theme-caleb-cudlc .news-card__more {
    font-family: var(--font-sans);
    font-size: 13px;
    font-weight: 600;
    color: var(--gold-deep);
    letter-spacing: 0.02em;
    transition: color 0.2s ease, transform 0.2s ease;
    display: inline-block;
}
body.theme-caleb-cudlc .news-card:hover .news-card__more {
    color: var(--gold);
}

@media (max-width: 720px) {
    body.theme-caleb-cudlc .news-band__head { flex-direction: column; align-items: flex-start; gap: 1rem; }
    body.theme-caleb-cudlc .news-band__grid { grid-template-columns: 1fr; }
    body.theme-caleb-cudlc .news-card__title { font-size: 1.25rem; }
}


/* =====================================================================
   3. QUICK ANSWERS accordion (new in v1.13.0)
   ===================================================================== */
body.theme-caleb-cudlc .quick-answers {
    background: linear-gradient(180deg, var(--paper) 0%, var(--paper-pure) 100%);
    padding: clamp(4.5rem, 8vw, 7rem) 0;
}

body.theme-caleb-cudlc .quick-answers__head {
    margin-bottom: 2.5rem;
    max-width: 720px;
}

body.theme-caleb-cudlc .quick-answers__title {
    font-family: var(--font-serif);
    font-size: clamp(2rem, 3.5vw, 2.75rem);
    font-weight: 500;
    line-height: 1.1;
    letter-spacing: -0.015em;
    color: var(--ink-strong);
    margin: 0 0 0.875rem;
}
body.theme-caleb-cudlc .quick-answers__title em {
    font-style: italic;
    color: var(--gold);
    font-weight: 500;
}

body.theme-caleb-cudlc .quick-answers__sub {
    font-family: var(--font-sans);
    font-size: 16px;
    line-height: 1.6;
    color: var(--ink-soft);
    margin: 0;
}
body.theme-caleb-cudlc .quick-answers__sub a {
    color: var(--gold-deep);
    text-decoration: underline;
    text-decoration-color: var(--gold-soft);
    text-underline-offset: 3px;
    transition: text-decoration-color 0.2s ease;
}
body.theme-caleb-cudlc .quick-answers__sub a:hover {
    text-decoration-color: var(--gold);
}

body.theme-caleb-cudlc .quick-answers__list {
    max-width: 880px;
    border-top: 1px solid var(--rule);
}

body.theme-caleb-cudlc .qa-item {
    border-bottom: 1px solid var(--rule);
    transition: background 0.2s ease;
}
body.theme-caleb-cudlc .qa-item[open] {
    background: var(--gold-soft);
}

body.theme-caleb-cudlc .qa-item__q {
    list-style: none;
    cursor: pointer;
    padding: 1.25rem 3rem 1.25rem 1.25rem;
    font-family: var(--font-serif);
    font-size: 1.125rem;
    font-weight: 500;
    color: var(--ink-strong);
    line-height: 1.4;
    position: relative;
    transition: color 0.2s ease;
}
body.theme-caleb-cudlc .qa-item__q::-webkit-details-marker { display: none; }
body.theme-caleb-cudlc .qa-item__q:hover { color: var(--navy); }
body.theme-caleb-cudlc .qa-item[open] .qa-item__q { color: var(--gold-deep); }

body.theme-caleb-cudlc .qa-item__chevron {
    position: absolute;
    right: 1.25rem;
    top: 1.375rem;
    width: 26px;
    height: 26px;
    line-height: 24px;
    text-align: center;
    border: 1px solid var(--rule);
    border-radius: 50%;
    color: var(--ink-soft);
    font-size: 18px;
    font-weight: 300;
    background: var(--paper-pure);
    transition: transform 0.25s ease, background 0.2s ease, border-color 0.2s ease, color 0.2s ease;
}
body.theme-caleb-cudlc .qa-item[open] .qa-item__chevron {
    transform: rotate(45deg);
    background: var(--gold);
    border-color: var(--gold);
    color: var(--paper-pure);
}

body.theme-caleb-cudlc .qa-item__a {
    padding: 0 1.25rem 1.5rem;
    font-family: var(--font-sans);
    font-size: 15px;
    line-height: 1.65;
    color: var(--ink-soft);
    max-width: 720px;
}
body.theme-caleb-cudlc .qa-item__a a {
    color: var(--gold-deep);
    text-decoration: underline;
    text-underline-offset: 3px;
}
body.theme-caleb-cudlc .qa-item__a strong { color: var(--ink-strong); }
body.theme-caleb-cudlc .qa-item__a p { margin: 0 0 0.5rem; }
body.theme-caleb-cudlc .qa-item__a p:last-child { margin-bottom: 0; }

@media (max-width: 720px) {
    body.theme-caleb-cudlc .qa-item__q {
        font-size: 1rem;
        padding: 1rem 2.75rem 1rem 1rem;
    }
    body.theme-caleb-cudlc .qa-item__chevron {
        right: 1rem;
        top: 1.125rem;
        width: 24px;
        height: 24px;
        line-height: 22px;
        font-size: 16px;
    }
    body.theme-caleb-cudlc .qa-item__a {
        padding: 0 1rem 1.25rem;
        font-size: 14px;
    }
}


/* =====================================================================
   4. SUB-PAGE: article-related (sibling navigation on hierarchical pages)
   Used by StaticPageController@dynamic on /about/{slug} etc.
   ===================================================================== */
body.theme-caleb-cudlc .article-related {
    margin-top: 4rem;
    padding-top: 2.5rem;
    border-top: 1px solid var(--rule);
}
body.theme-caleb-cudlc .article-related .section-mark {
    margin-bottom: 1.5rem;
}
body.theme-caleb-cudlc .article-related__list {
    list-style: none;
    padding: 0; margin: 0;
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(260px, 1fr));
    gap: 1rem;
}
body.theme-caleb-cudlc .article-related__list li {
    margin: 0;
}
body.theme-caleb-cudlc .article-related__list a {
    display: block;
    padding: 1.125rem 1.25rem;
    background: var(--paper-pure);
    border: 1px solid var(--rule-soft);
    border-radius: var(--radius);
    text-decoration: none;
    color: inherit;
    transition: transform 0.2s ease, border-color 0.2s ease, box-shadow 0.2s ease;
}
body.theme-caleb-cudlc .article-related__list a:hover {
    transform: translateY(-2px);
    border-color: var(--gold);
    box-shadow: var(--shadow-sm);
}
body.theme-caleb-cudlc .article-related__title {
    display: block;
    font-family: var(--font-serif);
    font-size: 1.0625rem;
    font-weight: 500;
    color: var(--ink-strong);
    line-height: 1.3;
    margin-bottom: 0.25rem;
}
body.theme-caleb-cudlc .article-related__sub {
    display: block;
    font-family: var(--font-sans);
    font-size: 13px;
    line-height: 1.5;
    color: var(--ink-soft);
}


/* =====================================================================
   5. POLISH — refinements to existing components
   These are tasteful improvements that don't change structure.
   ===================================================================== */

/* 5a. Hero arrows — bump tap target from 36 to 44px on mobile */
@media (max-width: 720px) {
    body.theme-caleb-cudlc .hero-arrow {
        width: 44px !important;
        height: 44px !important;
        font-size: 22px !important;
    }
}

/* 5b. Programme card — slightly softer shadow on hover */
body.theme-caleb-cudlc .prog-card:hover {
    box-shadow: 0 12px 28px rgba(0, 30, 84, 0.10);
}

/* 5c. Hero title — better Cormorant kerning at large sizes */
body.theme-caleb-cudlc .hero-title {
    font-feature-settings: "kern" 1, "liga" 1;
    text-rendering: optimizeLegibility;
}

/* 5d. Section-mark — slightly tighter rule on mobile so the layout doesn't crowd */
@media (max-width: 480px) {
    body.theme-caleb-cudlc .section-mark { gap: 0.625rem; margin-bottom: 2rem; }
    body.theme-caleb-cudlc .section-mark__rule { flex: 0 0 24px; }
    body.theme-caleb-cudlc .section-mark__label { font-size: 0.6875rem; letter-spacing: 0.22em; }
}

/* 5e. Reveal animation gentleness — respect reduced-motion users */
@media (prefers-reduced-motion: reduce) {
    body.theme-caleb-cudlc .news-card,
    body.theme-caleb-cudlc .qa-item,
    body.theme-caleb-cudlc .qa-item__chevron,
    body.theme-caleb-cudlc .article-related__list a {
        transition: none !important;
    }
}

/* 5f. Focus visibility — keyboard navigation respects gold accent */
body.theme-caleb-cudlc .qa-item__q:focus-visible,
body.theme-caleb-cudlc .news-card__link:focus-visible,
body.theme-caleb-cudlc .article-related__list a:focus-visible {
    outline: 2px solid var(--gold);
    outline-offset: 3px;
    border-radius: var(--radius);
}


/* =====================================================================
   End of v1.13.0 stylesheet additions.
   ===================================================================== */

/* ── v1.13.1-additions.css ────────────────────────────────── */
/* =====================================================================
   CUDLC v1.13.1 — Deep page layouts for /admissions and /fees
   ---------------------------------------------------------------------
   Sections that appear on both deep pages:
     .deep-wrap           page wrapper with breadcrumb + grid
     .deep-section        section spacing + reveal
     .deep-section__title heading style for in-section H2s
     .apply-steps         numbered cards, /admissions
     .routes-grid         two route cards, /admissions
     .checklist           document checklist with progress bar
     .deep-rail           sticky desktop rail, /admissions
     .fees-pillars        three pillars, /fees
     .fees-table          structured fee schedule
     .fees-pending        gated state for unconfirmed schedules
     .fees-methods        payment methods strip
     .fees-scholarship    scholarship CTA card
     .apply-cta           bottom CTA panel (both pages)
   ===================================================================== */


/* =====================================================================
   1. SHARED — deep page wrapper, sections, headings
   ===================================================================== */
body.theme-caleb-cudlc .deep-wrap {
    max-width: 1200px;
    margin: 0 auto;
    /* v1.13.9 — bottom padding reduced from 4rem to 2.5rem (desktop felt
       too airy with the section margin already providing breathing room) */
    padding: clamp(1.5rem, 4vw, 3rem) clamp(1.25rem, 4vw, 2rem) 2.5rem;
}

body.theme-caleb-cudlc .deep-grid {
    display: grid;
    grid-template-columns: 1fr;
    gap: clamp(2rem, 4vw, 3rem);
}

@media (min-width: 1024px) {
    body.theme-caleb-cudlc .deep-grid.has-rail {
        grid-template-columns: minmax(0, 1fr) 320px;
        align-items: start;
    }
}

body.theme-caleb-cudlc .deep-main { min-width: 0; }

body.theme-caleb-cudlc .deep-section {
    /* v1.13.9 — desktop margin tightened. Previously clamp(3rem, 6vw, 5rem)
       which capped at 80px on desktop (felt too airy). Now caps at 56px.
       Mobile (small viewports) gets clamp's lower bound 2.5rem = 40px,
       still comfortable for narrow screens. */
    margin-bottom: clamp(2.5rem, 4vw, 3.5rem);
}
body.theme-caleb-cudlc .deep-section:last-child { margin-bottom: 0; }

body.theme-caleb-cudlc .deep-section__title {
    font-family: var(--font-serif);
    font-size: clamp(1.75rem, 3.2vw, 2.5rem);
    font-weight: 500;
    line-height: 1.15;
    letter-spacing: -0.015em;
    color: var(--ink-strong);
    margin: 0 0 1rem;
}
body.theme-caleb-cudlc .deep-section__title em {
    font-style: italic;
    color: var(--gold);
}

body.theme-caleb-cudlc .deep-section__sub {
    font-family: var(--font-sans);
    font-size: 16px;
    line-height: 1.6;
    color: var(--ink-soft);
    margin: 0 0 1.75rem;
    max-width: 640px;
}

body.theme-caleb-cudlc .deep-section__more {
    margin-top: 1.5rem;
}

body.theme-caleb-cudlc .deep-prose .article-prose {
    font-family: var(--font-sans);
    font-size: 16px;
    line-height: 1.7;
    color: var(--ink-soft);
    max-width: 720px;
}

/* v1.13.9 — comfortable reading width for body prose on editorial pages
   (admissions, fees, programmes/{slug}, faculty, leadership/{slug},
   calendar/{slug}, policies/{slug}). The .deep-prose-nested rule above
   handled prose inside specifically-built deep-prose containers; this
   rule covers the much more common pattern where a controller renders
   a CMS body directly inside a .deep-section.

   The rule is desktop-only so mobile prose still flows edge-to-edge in
   its container.  Constraint is 760px (slightly wider than the 720px
   .deep-prose rule) — these are body containers, not asides. */
@media (min-width: 720px) {
    body.theme-caleb-cudlc .deep-section .article-prose,
    body.theme-caleb-cudlc .deep-wrap > .article-prose {
        max-width: 760px;
    }
}
body.theme-caleb-cudlc .deep-prose .article-prose h2 {
    font-family: var(--font-serif);
    font-size: 1.625rem;
    font-weight: 500;
    color: var(--ink-strong);
    margin: 2rem 0 0.75rem;
}
body.theme-caleb-cudlc .deep-prose .article-prose h3 {
    font-family: var(--font-serif);
    font-size: 1.25rem;
    font-weight: 500;
    color: var(--gold-deep);
    margin: 1.5rem 0 0.625rem;
}

/* Banner accent for deep pages */
body.theme-caleb-cudlc .page-banner--admissions,
body.theme-caleb-cudlc .page-banner--fees {
    background: linear-gradient(180deg, var(--paper) 0%, var(--cream) 100%);
}


/* =====================================================================
   2. ADMISSIONS — apply steps (3 numbered cards)
   ===================================================================== */
body.theme-caleb-cudlc .apply-steps__list {
    list-style: none;
    padding: 0; margin: 0;
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(240px, 1fr));
    gap: 1.25rem;
    counter-reset: apply-steps;
}

body.theme-caleb-cudlc .apply-step {
    background: var(--paper-pure);
    border: 1px solid var(--rule-soft);
    border-radius: var(--radius-lg);
    padding: 1.75rem 1.5rem;
    position: relative;
    transition: transform 0.25s cubic-bezier(.2,.8,.2,1), box-shadow 0.25s ease, border-color 0.25s ease;
}
body.theme-caleb-cudlc .apply-step:hover {
    transform: translateY(-3px);
    border-color: var(--gold);
    box-shadow: var(--shadow-md);
}

body.theme-caleb-cudlc .apply-step__num {
    position: absolute;
    top: -16px;
    left: 1.5rem;
    width: 40px;
    height: 40px;
    background: var(--navy);
    color: var(--paper);
    border-radius: 50%;
    display: grid;
    place-items: center;
    font-family: var(--font-serif);
    font-style: italic;
    font-size: 18px;
    font-weight: 600;
    box-shadow: 0 4px 12px rgba(0,48,135,0.20);
    border: 2px solid var(--gold);
}

body.theme-caleb-cudlc .apply-step__title {
    font-family: var(--font-serif);
    font-size: 1.375rem;
    font-weight: 500;
    color: var(--ink-strong);
    margin: 0.625rem 0 0.5rem;
    line-height: 1.25;
}

body.theme-caleb-cudlc .apply-step__body {
    font-family: var(--font-sans);
    font-size: 14px;
    line-height: 1.6;
    color: var(--ink-soft);
    margin: 0;
}


/* =====================================================================
   3. ADMISSIONS — two-route entry-requirements grid
   ===================================================================== */
body.theme-caleb-cudlc .routes-grid {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(300px, 1fr));
    gap: 1.5rem;
    margin-top: 1.5rem;
}

body.theme-caleb-cudlc .route-card {
    background: var(--paper-pure);
    border: 1px solid var(--rule-soft);
    border-radius: var(--radius-lg);
    padding: 2rem 1.75rem;
    position: relative;
    overflow: hidden;
    transition: transform 0.25s, box-shadow 0.25s, border-color 0.25s;
}
body.theme-caleb-cudlc .route-card::before {
    content: "";
    position: absolute;
    top: 0; left: 0; right: 0;
    height: 4px;
    background: var(--navy);
}
body.theme-caleb-cudlc .route-card--alt::before {
    background: var(--gold);
}
body.theme-caleb-cudlc .route-card:hover {
    transform: translateY(-3px);
    border-color: var(--gold);
    box-shadow: var(--shadow-md);
}

body.theme-caleb-cudlc .route-card__eyebrow {
    font-family: var(--font-sans);
    color: var(--gold-deep);
    font-size: 11px;
    font-weight: 700;
    letter-spacing: 0.18em;
    text-transform: uppercase;
    margin-bottom: 0.75rem;
}

body.theme-caleb-cudlc .route-card__title {
    font-family: var(--font-serif);
    font-size: 1.625rem;
    font-weight: 500;
    color: var(--ink-strong);
    margin: 0 0 0.625rem;
    line-height: 1.2;
}

body.theme-caleb-cudlc .route-card__lede {
    font-family: var(--font-sans);
    font-size: 14px;
    line-height: 1.55;
    color: var(--ink-soft);
    margin: 0 0 1.25rem;
}

body.theme-caleb-cudlc .route-card__list {
    list-style: none;
    padding: 0; margin: 0 0 1.5rem;
}
body.theme-caleb-cudlc .route-card__list li {
    font-family: var(--font-sans);
    font-size: 14px;
    line-height: 1.5;
    color: var(--ink-soft);
    padding: 0.5rem 0 0.5rem 1.5rem;
    border-bottom: 1px solid var(--rule-faint);
    position: relative;
}
body.theme-caleb-cudlc .route-card__list li::before {
    content: "✓";
    position: absolute;
    left: 0;
    color: var(--gold);
    font-weight: 700;
}
body.theme-caleb-cudlc .route-card__list li:last-child { border-bottom: 0; }
body.theme-caleb-cudlc .route-card__list strong { color: var(--ink-strong); }

body.theme-caleb-cudlc .route-card__more {
    font-family: var(--font-sans);
    font-size: 13px;
    font-weight: 600;
    color: var(--gold-deep);
    text-decoration: none;
    border-bottom: 1px solid var(--gold-soft);
    padding-bottom: 1px;
    transition: color 0.2s, border-color 0.2s;
}
body.theme-caleb-cudlc .route-card__more:hover {
    color: var(--gold);
    border-bottom-color: var(--gold);
}


/* =====================================================================
   4. ADMISSIONS — document checklist
   ===================================================================== */
body.theme-caleb-cudlc .checklist-progress {
    display: flex;
    align-items: center;
    gap: 1rem;
    margin: 1.5rem 0 2rem;
}
body.theme-caleb-cudlc .checklist-progress__bar {
    flex: 1;
    height: 8px;
    background: var(--rule-soft);
    border-radius: 4px;
    overflow: hidden;
}
body.theme-caleb-cudlc .checklist-progress__fill {
    height: 100%;
    background: linear-gradient(90deg, var(--gold) 0%, var(--gold-light) 100%);
    transition: width 0.4s cubic-bezier(.2,.8,.2,1);
    border-radius: 4px;
}
body.theme-caleb-cudlc .checklist-progress__label {
    font-family: var(--font-sans);
    font-size: 13px;
    font-weight: 600;
    color: var(--ink-strong);
    white-space: nowrap;
}

body.theme-caleb-cudlc .checklist-cols {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(260px, 1fr));
    gap: 2rem;
}

body.theme-caleb-cudlc .checklist-col__title {
    font-family: var(--font-serif);
    font-size: 1.125rem;
    font-weight: 500;
    color: var(--ink-strong);
    margin: 0 0 1rem;
    padding-bottom: 0.625rem;
    border-bottom: 2px solid var(--gold-soft);
}

body.theme-caleb-cudlc .checklist-list {
    list-style: none;
    padding: 0; margin: 0;
}
body.theme-caleb-cudlc .checklist-list li {
    margin: 0; padding: 0;
}
body.theme-caleb-cudlc .checklist-list label {
    display: flex;
    align-items: flex-start;
    gap: 0.75rem;
    padding: 0.625rem 0;
    font-family: var(--font-sans);
    font-size: 14px;
    line-height: 1.5;
    color: var(--ink-soft);
    cursor: pointer;
    border-bottom: 1px solid var(--rule-faint);
    transition: color 0.15s ease;
}
body.theme-caleb-cudlc .checklist-list label:hover {
    color: var(--ink-strong);
}
body.theme-caleb-cudlc .checklist-list input[type="checkbox"] {
    flex-shrink: 0;
    width: 18px;
    height: 18px;
    margin-top: 1px;
    accent-color: var(--gold);
    cursor: pointer;
}
body.theme-caleb-cudlc .checklist-list input[type="checkbox"]:checked + * {
    text-decoration: line-through;
    text-decoration-color: var(--gold-soft);
    color: var(--ink-faint);
}

body.theme-caleb-cudlc .checklist-foot {
    margin-top: 2rem;
    font-family: var(--font-sans);
    font-size: 13px;
    line-height: 1.55;
    color: var(--ink-soft);
}
body.theme-caleb-cudlc .checklist-foot a {
    color: var(--gold-deep);
    text-decoration: underline;
    text-underline-offset: 3px;
}


/* =====================================================================
   5. ADMISSIONS — sticky apply rail (desktop)
   ===================================================================== */
body.theme-caleb-cudlc .deep-rail { display: none; }

@media (min-width: 1024px) {
    body.theme-caleb-cudlc .deep-rail { display: block; }
    body.theme-caleb-cudlc .deep-rail__sticky {
        position: sticky;
        top: 100px;
        background: var(--paper-pure);
        border: 1px solid var(--rule-soft);
        border-top: 4px solid var(--gold);
        border-radius: var(--radius-lg);
        padding: 1.75rem 1.5rem;
        box-shadow: var(--shadow-sm);
    }
    body.theme-caleb-cudlc .deep-rail__eyebrow {
        font-family: var(--font-sans);
        color: var(--gold-deep);
        font-size: 11px;
        font-weight: 700;
        letter-spacing: 0.18em;
        text-transform: uppercase;
        margin-bottom: 0.625rem;
    }
    body.theme-caleb-cudlc .deep-rail__title {
        font-family: var(--font-serif);
        font-size: 1.5rem;
        font-weight: 500;
        color: var(--ink-strong);
        margin: 0 0 0.625rem;
        line-height: 1.2;
    }
    body.theme-caleb-cudlc .deep-rail__sub {
        font-family: var(--font-sans);
        font-size: 13px;
        line-height: 1.5;
        color: var(--ink-soft);
        margin: 0 0 1.25rem;
    }
    body.theme-caleb-cudlc .deep-rail__btn {
        display: block;
        width: 100%;
        text-align: center;
        margin-bottom: 0.75rem;
    }
    body.theme-caleb-cudlc .deep-rail__alt {
        display: block;
        text-align: center;
        font-family: var(--font-sans);
        font-size: 13px;
        color: var(--gold-deep);
        text-decoration: none;
        padding: 0.5rem;
        margin-bottom: 1.25rem;
        transition: color 0.15s ease;
    }
    body.theme-caleb-cudlc .deep-rail__alt:hover { color: var(--gold); }
    body.theme-caleb-cudlc .deep-rail__bullets {
        list-style: none;
        padding: 0;
        margin: 1rem 0 0;
        border-top: 1px solid var(--rule-soft);
        padding-top: 1rem;
    }
    body.theme-caleb-cudlc .deep-rail__bullets li {
        font-family: var(--font-sans);
        font-size: 12px;
        line-height: 1.5;
        color: var(--ink-soft);
        padding: 0.4rem 0 0.4rem 1.25rem;
        position: relative;
    }
    body.theme-caleb-cudlc .deep-rail__bullets li::before {
        content: "✓";
        position: absolute;
        left: 0;
        color: var(--gold);
        font-weight: 700;
        font-size: 11px;
    }
}


/* =====================================================================
   6. FEES — three trust pillars
   ===================================================================== */
body.theme-caleb-cudlc .fees-pillars {
    background: var(--cream);
    margin-left: calc(50% - 50vw);
    margin-right: calc(50% - 50vw);
    padding: clamp(2.5rem, 5vw, 4rem) clamp(1.25rem, 4vw, 2rem);
    border-top: 1px solid var(--rule);
    border-bottom: 1px solid var(--rule);
}
body.theme-caleb-cudlc .fees-pillars__grid {
    max-width: 1100px;
    margin: 0 auto;
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(260px, 1fr));
    gap: 2rem;
}
body.theme-caleb-cudlc .fees-pillar {
    text-align: center;
    padding: 0 1rem;
}
body.theme-caleb-cudlc .fees-pillar__rule {
    width: 40px;
    height: 2px;
    background: var(--gold);
    margin: 0 auto 1.25rem;
}
body.theme-caleb-cudlc .fees-pillar__title {
    font-family: var(--font-serif);
    font-size: 1.375rem;
    font-weight: 500;
    color: var(--ink-strong);
    margin: 0 0 0.625rem;
    line-height: 1.25;
}
body.theme-caleb-cudlc .fees-pillar__body {
    font-family: var(--font-sans);
    font-size: 14px;
    line-height: 1.6;
    color: var(--ink-soft);
    margin: 0;
    max-width: 320px;
    margin-left: auto;
    margin-right: auto;
}


/* =====================================================================
   7. FEES — schedule table
   ===================================================================== */
body.theme-caleb-cudlc .fees-table__wrap {
    margin-top: 1.5rem;
    background: var(--paper-pure);
    border: 1px solid var(--rule-soft);
    border-radius: var(--radius-lg);
    overflow: hidden;
}
body.theme-caleb-cudlc .fees-table__session {
    display: flex;
    align-items: center;
    justify-content: space-between;
    padding: 0.875rem 1.25rem;
    background: var(--navy);
    color: var(--text-on-dark);
}
body.theme-caleb-cudlc .fees-table__session-label {
    font-family: var(--font-serif);
    font-size: 1.125rem;
    font-weight: 500;
    letter-spacing: 0.01em;
}
body.theme-caleb-cudlc .fees-table__session-badge {
    font-family: var(--font-sans);
    font-size: 10px;
    font-weight: 700;
    letter-spacing: 0.18em;
    text-transform: uppercase;
    color: var(--gold-light);
    background: rgba(212,175,79,0.14);
    padding: 0.25rem 0.625rem;
    border-radius: 99px;
}
body.theme-caleb-cudlc .fees-table__grid {
    width: 100%;
    border-collapse: collapse;
    font-family: var(--font-sans);
}
body.theme-caleb-cudlc .fees-table__grid th {
    text-align: left;
    padding: 0.75rem 1.25rem;
    font-size: 12px;
    font-weight: 700;
    letter-spacing: 0.1em;
    text-transform: uppercase;
    color: var(--ink-soft);
    background: var(--paper);
    border-bottom: 1px solid var(--rule);
}
body.theme-caleb-cudlc .fees-table__grid th.num,
body.theme-caleb-cudlc .fees-table__grid td.num {
    text-align: right;
    font-variant-numeric: tabular-nums;
}
body.theme-caleb-cudlc .fees-table__grid td {
    padding: 0.875rem 1.25rem;
    font-size: 14px;
    color: var(--ink-strong);
    border-bottom: 1px solid var(--rule-faint);
    transition: background 0.15s ease;
}
body.theme-caleb-cudlc .fees-table__grid tbody tr:hover td {
    background: var(--gold-soft);
}
body.theme-caleb-cudlc .fees-table__grid tbody tr:last-child td { border-bottom: 0; }
body.theme-caleb-cudlc .fees-table__sub td {
    background: var(--paper);
    color: var(--ink-soft);
    font-size: 13px;
}
body.theme-caleb-cudlc .fees-table__indent {
    color: var(--gold);
    margin-right: 0.5rem;
}
body.theme-caleb-cudlc .fees-table__foot {
    margin-top: 1.5rem;
    font-family: var(--font-sans);
    font-size: 13px;
    line-height: 1.6;
    color: var(--ink-soft);
    max-width: 720px;
}
body.theme-caleb-cudlc .fees-table__foot a {
    color: var(--gold-deep);
    text-decoration: underline;
    text-underline-offset: 3px;
}

/* Pending state — when fees_schedule_published=0 */
body.theme-caleb-cudlc .fees-pending {
    background: var(--paper-pure);
    border: 1px solid var(--rule-soft);
    border-left: 4px solid var(--gold);
    border-radius: var(--radius-lg);
    padding: 2rem 1.75rem;
    margin-top: 1.5rem;
    max-width: 720px;
}
body.theme-caleb-cudlc .fees-pending__eyebrow {
    font-family: var(--font-sans);
    color: var(--gold-deep);
    font-size: 11px;
    font-weight: 700;
    letter-spacing: 0.18em;
    text-transform: uppercase;
    margin-bottom: 0.625rem;
}
body.theme-caleb-cudlc .fees-pending__title {
    font-family: var(--font-serif);
    font-size: 1.375rem;
    font-weight: 500;
    color: var(--ink-strong);
    margin: 0 0 0.75rem;
    line-height: 1.25;
}
body.theme-caleb-cudlc .fees-pending__body {
    font-family: var(--font-sans);
    font-size: 14px;
    line-height: 1.6;
    color: var(--ink-soft);
    margin: 0 0 1.25rem;
}
body.theme-caleb-cudlc .fees-pending__cta {
    display: flex;
    flex-wrap: wrap;
    gap: 0.625rem;
}


/* =====================================================================
   8. FEES — payment methods strip
   ===================================================================== */
body.theme-caleb-cudlc .fees-methods {
    background: var(--paper);
    margin-left: calc(50% - 50vw);
    margin-right: calc(50% - 50vw);
    padding: 1.5rem clamp(1.25rem, 4vw, 2rem);
    border-top: 1px solid var(--rule-faint);
    border-bottom: 1px solid var(--rule-faint);
}
body.theme-caleb-cudlc .fees-methods__inner {
    max-width: 1100px;
    margin: 0 auto;
    display: flex;
    align-items: center;
    justify-content: center;
    gap: clamp(1rem, 3vw, 2.5rem);
    flex-wrap: wrap;
}
body.theme-caleb-cudlc .fees-methods__label {
    font-family: var(--font-sans);
    font-size: 11px;
    font-weight: 700;
    letter-spacing: 0.2em;
    text-transform: uppercase;
    color: var(--ink-faint);
}
body.theme-caleb-cudlc .fees-methods__list {
    display: flex;
    list-style: none;
    padding: 0; margin: 0;
    gap: 1.25rem;
    flex-wrap: wrap;
    align-items: center;
}
body.theme-caleb-cudlc .fees-method__name {
    font-family: var(--font-serif);
    font-style: italic;
    font-size: 1rem;
    font-weight: 600;
    color: var(--navy);
    padding: 0.375rem 0.875rem;
    border: 1px solid var(--rule);
    border-radius: var(--radius);
    background: var(--paper-pure);
}


/* =====================================================================
   9. FEES — scholarship CTA card
   ===================================================================== */
body.theme-caleb-cudlc .fees-scholarship {
    margin-bottom: clamp(3rem, 6vw, 5rem);
}
body.theme-caleb-cudlc .fees-scholarship__card {
    background: linear-gradient(135deg, var(--navy) 0%, var(--navy-deep) 100%);
    color: var(--text-on-dark);
    border-radius: var(--radius-xl);
    padding: clamp(2rem, 4vw, 3rem);
    overflow: hidden;
    position: relative;
}
body.theme-caleb-cudlc .fees-scholarship__card::before {
    content: "";
    position: absolute;
    top: 0; right: 0; bottom: 0;
    width: 6px;
    background: var(--gold);
}
body.theme-caleb-cudlc .fees-scholarship__body {
    max-width: 720px;
    position: relative;
    z-index: 1;
}
body.theme-caleb-cudlc .fees-scholarship__eyebrow {
    font-family: var(--font-sans);
    color: var(--gold-light);
    font-size: 11px;
    font-weight: 700;
    letter-spacing: 0.18em;
    text-transform: uppercase;
    margin-bottom: 0.875rem;
}
body.theme-caleb-cudlc .fees-scholarship__title {
    font-family: var(--font-serif);
    font-size: clamp(1.625rem, 3vw, 2.25rem);
    font-weight: 500;
    line-height: 1.15;
    margin: 0 0 0.875rem;
    color: var(--paper);
    letter-spacing: -0.015em;
}
body.theme-caleb-cudlc .fees-scholarship__sub {
    font-family: var(--font-sans);
    font-size: 15px;
    line-height: 1.6;
    color: rgba(245,239,224,0.88);
    margin: 0 0 1.75rem;
}
body.theme-caleb-cudlc .fees-scholarship__buttons {
    display: flex;
    flex-wrap: wrap;
    gap: 0.75rem;
}
body.theme-caleb-cudlc .fees-scholarship .btn-primary {
    background: var(--gold);
    color: var(--navy-deep);
}
body.theme-caleb-cudlc .fees-scholarship .btn-primary:hover {
    background: var(--gold-light);
}
body.theme-caleb-cudlc .fees-scholarship .btn-outline {
    border: 1px solid rgba(245,239,224,0.4);
    color: var(--paper);
    background: transparent;
}
body.theme-caleb-cudlc .fees-scholarship .btn-outline:hover {
    background: rgba(245,239,224,0.1);
    border-color: var(--gold-light);
    color: var(--gold-light);
}


/* =====================================================================
   10. SHARED — bottom apply CTA panel
   ===================================================================== */
body.theme-caleb-cudlc .apply-cta {
    margin-top: clamp(3rem, 6vw, 5rem);
}
body.theme-caleb-cudlc .apply-cta__inner {
    background: var(--paper-pure);
    border: 1px solid var(--rule-soft);
    border-top: 3px solid var(--gold);
    border-radius: var(--radius-lg);
    padding: clamp(2rem, 4vw, 3rem);
    text-align: center;
}
body.theme-caleb-cudlc .apply-cta__title {
    font-family: var(--font-serif);
    font-size: clamp(1.625rem, 3vw, 2.25rem);
    font-weight: 500;
    color: var(--ink-strong);
    margin: 0 0 0.625rem;
    line-height: 1.15;
}
body.theme-caleb-cudlc .apply-cta__sub {
    font-family: var(--font-sans);
    font-size: 16px;
    line-height: 1.6;
    color: var(--ink-soft);
    margin: 0 0 1.5rem;
}
body.theme-caleb-cudlc .apply-cta__buttons {
    display: flex;
    flex-wrap: wrap;
    gap: 0.75rem;
    justify-content: center;
}

/* btn-outline shared style if not in base theme */
body.theme-caleb-cudlc .btn-outline {
    display: inline-block;
    padding: 0.875rem 1.5rem;
    background: transparent;
    color: var(--navy);
    border: 1px solid var(--navy);
    border-radius: var(--radius);
    font-family: var(--font-sans);
    font-size: 14px;
    font-weight: 600;
    letter-spacing: 0.02em;
    text-decoration: none;
    transition: background 0.2s ease, color 0.2s ease, border-color 0.2s ease;
}
body.theme-caleb-cudlc .btn-outline:hover {
    background: var(--navy);
    color: var(--paper);
}

body.theme-caleb-cudlc .link-gold {
    font-family: var(--font-sans);
    font-size: 14px;
    font-weight: 600;
    color: var(--gold-deep);
    text-decoration: none;
    border-bottom: 1px solid var(--gold-soft);
    padding-bottom: 1px;
    transition: color 0.2s ease, border-color 0.2s ease;
}
body.theme-caleb-cudlc .link-gold:hover {
    color: var(--gold);
    border-bottom-color: var(--gold);
}


/* =====================================================================
   11. RESPONSIVE / MOTION ADJUSTMENTS
   ===================================================================== */
@media (max-width: 720px) {
    body.theme-caleb-cudlc .apply-step__num {
        width: 36px; height: 36px;
        top: -14px;
        font-size: 16px;
    }
    body.theme-caleb-cudlc .apply-step { padding: 1.5rem 1.25rem; }
    body.theme-caleb-cudlc .route-card { padding: 1.625rem 1.25rem; }
    body.theme-caleb-cudlc .checklist-cols { gap: 1.5rem; }
    body.theme-caleb-cudlc .fees-table__grid th,
    body.theme-caleb-cudlc .fees-table__grid td { padding: 0.625rem 0.875rem; font-size: 13px; }
    body.theme-caleb-cudlc .fees-methods__inner { gap: 0.75rem; }
    body.theme-caleb-cudlc .fees-method__name { font-size: 14px; padding: 0.25rem 0.625rem; }
}

@media (prefers-reduced-motion: reduce) {
    body.theme-caleb-cudlc .apply-step,
    body.theme-caleb-cudlc .route-card,
    body.theme-caleb-cudlc .checklist-progress__fill,
    body.theme-caleb-cudlc .fees-table__grid tbody tr {
        transition: none !important;
    }
}


/* =====================================================================
   End of v1.13.1 stylesheet additions.
   ===================================================================== */

/* ── v1.13.1.1-additions.css ──────────────────────────────── */
/* =====================================================================
   CUDLC v1.13.1.1 — Fees programme picker
   ---------------------------------------------------------------------
   Pill-row picker above the schedule. Active pill gets a gold underline,
   inactive pills are muted. On narrow screens the row scrolls horizontally
   with momentum. Schedule fades smoothly on switch.

   This file is appended to the deep-page CSS via the v1131_assets.php
   loader (which handles caleb-cudlc theme detection). All selectors are
   scoped to body.theme-caleb-cudlc to match conventions.
   ===================================================================== */


/* =====================================================================
   1. PROGRAMME PICKER — pill row
   ===================================================================== */
body.theme-caleb-cudlc .fees-picker {
    margin: 1.5rem 0 2rem;
    border-bottom: 1px solid var(--rule);
    /* Scroll affordance on the right edge — fades the last pill out
       as a hint that more programmes exist beyond the viewport */
    position: relative;
}

body.theme-caleb-cudlc .fees-picker__track {
    display: flex;
    gap: 0;
    overflow-x: auto;
    overflow-y: hidden;
    -webkit-overflow-scrolling: touch;
    scrollbar-width: none; /* Firefox */
    margin: 0 -0.5rem; /* extends past container so first pill aligns to edge */
    padding: 0 0.5rem;
}
body.theme-caleb-cudlc .fees-picker__track::-webkit-scrollbar { display: none; } /* WebKit */

body.theme-caleb-cudlc .fees-picker__pill {
    flex-shrink: 0;
    background: transparent;
    border: 0;
    padding: 0.875rem 1.25rem 1rem;
    cursor: pointer;
    font-family: var(--font-sans);
    font-size: 14px;
    font-weight: 600;
    letter-spacing: 0.02em;
    color: var(--ink-soft);
    line-height: 1.3;
    position: relative;
    white-space: nowrap;
    display: inline-flex;
    align-items: center;
    gap: 0.5rem;
    transition: color 0.2s ease;
    margin-bottom: -1px; /* underline overlaps the section's bottom border */
}
body.theme-caleb-cudlc .fees-picker__pill:hover {
    color: var(--ink-strong);
}
body.theme-caleb-cudlc .fees-picker__pill:focus-visible {
    outline: 2px solid var(--gold);
    outline-offset: 2px;
    border-radius: var(--radius-sm);
}

/* Underline for active pill — animated in via JS but we also have CSS-only fallback */
body.theme-caleb-cudlc .fees-picker__pill::after {
    content: "";
    position: absolute;
    left: 1.25rem;
    right: 1.25rem;
    bottom: 0;
    height: 2px;
    background: var(--gold);
    transform: scaleX(0);
    transform-origin: center;
    transition: transform 0.25s cubic-bezier(.2, .8, .2, 1);
}
body.theme-caleb-cudlc .fees-picker__pill.is-active {
    color: var(--ink-strong);
}
body.theme-caleb-cudlc .fees-picker__pill.is-active::after {
    transform: scaleX(1);
}

/* "Coming" tag for non-live programmes */
body.theme-caleb-cudlc .fees-picker__pill-tag {
    display: inline-block;
    font-size: 10px;
    font-weight: 700;
    letter-spacing: 0.12em;
    text-transform: uppercase;
    color: var(--gold-deep);
    background: var(--gold-soft);
    padding: 2px 7px;
    border-radius: 99px;
    margin-left: 0.25rem;
    vertical-align: middle;
}
body.theme-caleb-cudlc .fees-picker__pill.is-coming {
    color: var(--ink-faint);
}
body.theme-caleb-cudlc .fees-picker__pill.is-coming.is-active {
    color: var(--ink-soft);
}
body.theme-caleb-cudlc .fees-picker__pill.is-coming.is-active .fees-picker__pill-tag {
    background: var(--gold);
    color: var(--paper-pure);
}


/* =====================================================================
   2. SCHEDULE PANEL — smooth fade between programmes
   ===================================================================== */
body.theme-caleb-cudlc .fees-schedule-panel {
    transition: opacity 0.2s ease;
    min-height: 200px; /* prevents layout shift mid-fade */
}
body.theme-caleb-cudlc .fees-schedule-panel.is-loading {
    opacity: 0.4;
}


/* =====================================================================
   3. SCHEDULE TABLE — adds the programme name to the session header
   ===================================================================== */
body.theme-caleb-cudlc .fees-table__session {
    /* Existing v1.13.1 styles handle the row; we add programme-name treatment */
}
body.theme-caleb-cudlc .fees-table__session-prog {
    margin-left: auto;
    font-family: var(--font-serif);
    font-style: italic;
    font-size: 0.9375rem;
    color: var(--ink-soft);
    font-weight: 500;
}


/* =====================================================================
   4. NOSCRIPT FALLBACK NOTICE
   ===================================================================== */
body.theme-caleb-cudlc .fees-noscript {
    background: var(--gold-soft);
    border-left: 3px solid var(--gold);
    padding: 0.75rem 1rem;
    font-size: 14px;
    color: var(--ink-soft);
    margin: 1rem 0;
    border-radius: var(--radius);
}
body.theme-caleb-cudlc .fees-noscript code {
    background: var(--paper-pure);
    padding: 1px 5px;
    border-radius: 3px;
    font-family: var(--font-mono);
    font-size: 12px;
}


/* =====================================================================
   5. FEES SCHOLARSHIP LEDE — quiet line above the card
   ===================================================================== */
body.theme-caleb-cudlc .fees-scholarship__lede {
    font-family: var(--font-serif);
    font-style: italic;
    font-size: 1.0625rem;
    color: var(--ink-soft);
    text-align: center;
    margin: 0 0 1.5rem;
    max-width: 720px;
    margin-left: auto;
    margin-right: auto;
}


/* =====================================================================
   6. RESPONSIVE — picker on phones
   ===================================================================== */
@media (max-width: 720px) {
    body.theme-caleb-cudlc .fees-picker__pill {
        font-size: 13px;
        padding: 0.75rem 0.875rem 0.875rem;
    }
    body.theme-caleb-cudlc .fees-picker__pill::after {
        left: 0.875rem;
        right: 0.875rem;
    }
    body.theme-caleb-cudlc .fees-picker__pill-tag {
        font-size: 9px;
        padding: 1px 5px;
    }
    body.theme-caleb-cudlc .fees-table__session-prog {
        margin-left: 0;
        margin-top: 0.25rem;
        flex-basis: 100%;
        font-size: 0.8125rem;
    }
}


/* =====================================================================
   7. REDUCED MOTION
   ===================================================================== */
@media (prefers-reduced-motion: reduce) {
    body.theme-caleb-cudlc .fees-picker__pill::after,
    body.theme-caleb-cudlc .fees-schedule-panel,
    body.theme-caleb-cudlc .fees-picker__pill {
        transition: none !important;
    }
}


/* =====================================================================
   End of v1.13.1.1 stylesheet additions.
   ===================================================================== */

/* ── v1.13.2-additions.css ────────────────────────────────── */
/* =====================================================================
   CUDLC v1.13.2 — Fees programme picker
   ---------------------------------------------------------------------
   Pill-row picker above the schedule. Active pill gets a gold underline,
   inactive pills are muted. On narrow screens the row scrolls horizontally
   with momentum. Schedule fades smoothly on switch.

   This file is appended to the deep-page CSS via the v1131_assets.php
   loader (which handles caleb-cudlc theme detection). All selectors are
   scoped to body.theme-caleb-cudlc to match conventions.
   ===================================================================== */


/* =====================================================================
   1. PROGRAMME PICKER — pill row
   ===================================================================== */
body.theme-caleb-cudlc .fees-picker {
    margin: 1.5rem 0 2rem;
    border-bottom: 1px solid var(--rule);
    /* Scroll affordance on the right edge — fades the last pill out
       as a hint that more programmes exist beyond the viewport */
    position: relative;
}

body.theme-caleb-cudlc .fees-picker__track {
    display: flex;
    gap: 0;
    overflow-x: auto;
    overflow-y: hidden;
    -webkit-overflow-scrolling: touch;
    scrollbar-width: none; /* Firefox */
    margin: 0 -0.5rem; /* extends past container so first pill aligns to edge */
    padding: 0 0.5rem;
}
body.theme-caleb-cudlc .fees-picker__track::-webkit-scrollbar { display: none; } /* WebKit */

body.theme-caleb-cudlc .fees-picker__pill {
    flex-shrink: 0;
    background: transparent;
    border: 0;
    padding: 0.875rem 1.25rem 1rem;
    cursor: pointer;
    font-family: var(--font-sans);
    font-size: 14px;
    font-weight: 600;
    letter-spacing: 0.02em;
    color: var(--ink-soft);
    line-height: 1.3;
    position: relative;
    white-space: nowrap;
    display: inline-flex;
    align-items: center;
    gap: 0.5rem;
    transition: color 0.2s ease;
    margin-bottom: -1px; /* underline overlaps the section's bottom border */
}
body.theme-caleb-cudlc .fees-picker__pill:hover {
    color: var(--ink-strong);
}
body.theme-caleb-cudlc .fees-picker__pill:focus-visible {
    outline: 2px solid var(--gold);
    outline-offset: 2px;
    border-radius: var(--radius-sm);
}

/* Underline for active pill — animated in via JS but we also have CSS-only fallback */
body.theme-caleb-cudlc .fees-picker__pill::after {
    content: "";
    position: absolute;
    left: 1.25rem;
    right: 1.25rem;
    bottom: 0;
    height: 2px;
    background: var(--gold);
    transform: scaleX(0);
    transform-origin: center;
    transition: transform 0.25s cubic-bezier(.2, .8, .2, 1);
}
body.theme-caleb-cudlc .fees-picker__pill.is-active {
    color: var(--ink-strong);
}
body.theme-caleb-cudlc .fees-picker__pill.is-active::after {
    transform: scaleX(1);
}

/* "Coming" tag for non-live programmes */
body.theme-caleb-cudlc .fees-picker__pill-tag {
    display: inline-block;
    font-size: 10px;
    font-weight: 700;
    letter-spacing: 0.12em;
    text-transform: uppercase;
    color: var(--gold-deep);
    background: var(--gold-soft);
    padding: 2px 7px;
    border-radius: 99px;
    margin-left: 0.25rem;
    vertical-align: middle;
}
body.theme-caleb-cudlc .fees-picker__pill.is-coming {
    color: var(--ink-faint);
}
body.theme-caleb-cudlc .fees-picker__pill.is-coming.is-active {
    color: var(--ink-soft);
}
body.theme-caleb-cudlc .fees-picker__pill.is-coming.is-active .fees-picker__pill-tag {
    background: var(--gold);
    color: var(--paper-pure);
}


/* =====================================================================
   2. SCHEDULE PANEL — smooth fade between programmes
   ===================================================================== */
body.theme-caleb-cudlc .fees-schedule-panel {
    transition: opacity 0.2s ease;
    min-height: 200px; /* prevents layout shift mid-fade */
}
body.theme-caleb-cudlc .fees-schedule-panel.is-loading {
    opacity: 0.4;
}


/* =====================================================================
   3. SCHEDULE TABLE — adds the programme name to the session header
   ===================================================================== */
body.theme-caleb-cudlc .fees-table__session {
    /* Existing v1.13.1 styles handle the row; we add programme-name treatment */
}
body.theme-caleb-cudlc .fees-table__session-prog {
    margin-left: auto;
    font-family: var(--font-serif);
    font-style: italic;
    font-size: 0.9375rem;
    color: var(--ink-soft);
    font-weight: 500;
}


/* =====================================================================
   4. NOSCRIPT FALLBACK NOTICE
   ===================================================================== */
body.theme-caleb-cudlc .fees-noscript {
    background: var(--gold-soft);
    border-left: 3px solid var(--gold);
    padding: 0.75rem 1rem;
    font-size: 14px;
    color: var(--ink-soft);
    margin: 1rem 0;
    border-radius: var(--radius);
}
body.theme-caleb-cudlc .fees-noscript code {
    background: var(--paper-pure);
    padding: 1px 5px;
    border-radius: 3px;
    font-family: var(--font-mono);
    font-size: 12px;
}


/* =====================================================================
   5. FEES SCHOLARSHIP LEDE — quiet line above the card
   ===================================================================== */
body.theme-caleb-cudlc .fees-scholarship__lede {
    font-family: var(--font-serif);
    font-style: italic;
    font-size: 1.0625rem;
    color: var(--ink-soft);
    text-align: center;
    margin: 0 0 1.5rem;
    max-width: 720px;
    margin-left: auto;
    margin-right: auto;
}


/* =====================================================================
   6. RESPONSIVE — picker on phones
   ===================================================================== */
@media (max-width: 720px) {
    body.theme-caleb-cudlc .fees-picker__pill {
        font-size: 13px;
        padding: 0.75rem 0.875rem 0.875rem;
    }
    body.theme-caleb-cudlc .fees-picker__pill::after {
        left: 0.875rem;
        right: 0.875rem;
    }
    body.theme-caleb-cudlc .fees-picker__pill-tag {
        font-size: 9px;
        padding: 1px 5px;
    }
    body.theme-caleb-cudlc .fees-table__session-prog {
        margin-left: 0;
        margin-top: 0.25rem;
        flex-basis: 100%;
        font-size: 0.8125rem;
    }
}


/* =====================================================================
   7. REDUCED MOTION
   ===================================================================== */
@media (prefers-reduced-motion: reduce) {
    body.theme-caleb-cudlc .fees-picker__pill::after,
    body.theme-caleb-cudlc .fees-schedule-panel,
    body.theme-caleb-cudlc .fees-picker__pill {
        transition: none !important;
    }
}


/* =====================================================================
   End of v1.13.2 stylesheet additions.
   ===================================================================== */

/* ── v1.13.3-additions.css ────────────────────────────────── */
/* =====================================================================
   CUDLC v1.13.3 — Programmes deep + Faculty page
   ---------------------------------------------------------------------
   Editorial restyle of /programmes/{slug} and the new /faculty page.
   Builds on the deep-wrap pattern established in v1.13.1.

   Sections:
     1. Programme list (/programmes)
     2. Programme detail header + key facts
     3. Programme curriculum (level accordion + course tables)
     4. Learning outcomes list
     5. Assessment cards
     6. Faculty preview cards
     7. Faculty page — 3-group grid layout
     8. Responsive + reduced motion
   ===================================================================== */


/* =====================================================================
   1. PROGRAMMES LIST PAGE
   ===================================================================== */
body.theme-caleb-cudlc .deep-wrap--programmes-list {
    /* inherits from .deep-wrap */
}

body.theme-caleb-cudlc .programmes-grid {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(300px, 1fr));
    gap: 1.5rem;
    margin-top: 2rem;
}

body.theme-caleb-cudlc .programme-card {
    display: flex;
    flex-direction: column;
    text-decoration: none;
    color: inherit;
    background: var(--paper-pure);
    border: 1px solid var(--rule-soft);
    border-radius: var(--radius-lg);
    padding: 1.5rem 1.5rem 1.75rem;
    transition: transform 0.25s cubic-bezier(.2, .8, .2, 1), box-shadow 0.25s ease, border-color 0.25s ease;
}
body.theme-caleb-cudlc .programme-card:hover {
    transform: translateY(-3px);
    box-shadow: var(--shadow-md);
    border-color: var(--rule);
}

body.theme-caleb-cudlc .programme-card__head {
    display: flex;
    justify-content: space-between;
    align-items: center;
    margin-bottom: 1rem;
    gap: 0.5rem;
}

body.theme-caleb-cudlc .programme-card__code {
    font-family: var(--font-mono);
    font-size: 12px;
    font-weight: 700;
    letter-spacing: 0.04em;
    color: var(--gold-deep);
    background: var(--gold-soft);
    padding: 0.2rem 0.625rem;
    border-radius: 99px;
}

body.theme-caleb-cudlc .programme-card__type {
    font-family: var(--font-sans);
    font-size: 11px;
    font-weight: 700;
    letter-spacing: 0.16em;
    text-transform: uppercase;
    color: var(--ink-faint);
}

body.theme-caleb-cudlc .programme-card__title {
    font-family: var(--font-serif);
    font-size: 1.375rem;
    font-weight: 500;
    line-height: 1.25;
    color: var(--ink-strong);
    margin: 0 0 0.375rem;
    letter-spacing: -0.005em;
}

body.theme-caleb-cudlc .programme-card__dept {
    font-family: var(--font-sans);
    font-size: 13px;
    color: var(--ink-faint);
    margin-bottom: 0.875rem;
}

body.theme-caleb-cudlc .programme-card__desc {
    font-family: var(--font-sans);
    font-size: 14px;
    line-height: 1.55;
    color: var(--ink-soft);
    margin: 0 0 1.25rem;
    flex: 1;
}

body.theme-caleb-cudlc .programme-card__foot {
    display: flex;
    align-items: center;
    gap: 1.25rem;
    padding-top: 0.875rem;
    border-top: 1px solid var(--rule-soft);
    font-family: var(--font-sans);
    font-size: 12px;
    color: var(--ink-faint);
}
body.theme-caleb-cudlc .programme-card__foot strong {
    color: var(--ink);
    font-weight: 700;
    margin-right: 2px;
}

body.theme-caleb-cudlc .programme-card__delivery {
    margin-left: auto;
    font-size: 11px;
    font-weight: 700;
    letter-spacing: 0.08em;
    text-transform: uppercase;
    color: var(--gold-deep);
}

body.theme-caleb-cudlc .programmes-empty {
    text-align: center;
    padding: 4rem 1rem;
    color: var(--ink-soft);
}
body.theme-caleb-cudlc .programmes-empty h2 {
    font-family: var(--font-serif);
    font-size: 1.5rem;
    color: var(--ink-strong);
    margin: 0 0 0.5rem;
}


/* =====================================================================
   2. PROGRAMME DETAIL — KEY FACTS STRIP
   ===================================================================== */
body.theme-caleb-cudlc .deep-wrap--programme {
    /* inherits */
}

body.theme-caleb-cudlc .page-banner--programme {
    background: var(--cream);
}

body.theme-caleb-cudlc .programme-facts {
    margin-top: -2rem; /* pull up to overlap banner */
    margin-bottom: 3rem;
    position: relative;
    z-index: 1;
}

body.theme-caleb-cudlc .programme-facts__grid {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(180px, 1fr));
    gap: 0;
    background: var(--paper-pure);
    border: 1px solid var(--rule);
    border-radius: var(--radius-lg);
    overflow: hidden;
    box-shadow: var(--shadow-sm);
    list-style: none;
    margin: 0;
    padding: 0;
}

body.theme-caleb-cudlc .programme-fact {
    padding: 1.5rem 1.625rem;
    border-right: 1px solid var(--rule-soft);
    display: flex;
    flex-direction: column;
    gap: 0.375rem;
}
body.theme-caleb-cudlc .programme-fact:last-child { border-right: 0; }

body.theme-caleb-cudlc .programme-fact__label {
    font-family: var(--font-sans);
    font-size: 11px;
    font-weight: 700;
    letter-spacing: 0.16em;
    text-transform: uppercase;
    color: var(--ink-faint);
}

body.theme-caleb-cudlc .programme-fact__value {
    font-family: var(--font-serif);
    font-size: 1.25rem;
    font-weight: 500;
    color: var(--ink-strong);
    line-height: 1.2;
}
body.theme-caleb-cudlc .programme-fact__value--accent {
    color: var(--gold-deep);
    font-style: italic;
}


/* =====================================================================
   3. ABOUT SECTION
   ===================================================================== */
body.theme-caleb-cudlc .programme-about__prose {
    margin-bottom: 1.5rem;
    max-width: 760px;
}

body.theme-caleb-cudlc .programme-about__meta {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(180px, 1fr));
    gap: 1rem;
    padding: 1.25rem 1.5rem;
    background: var(--paper-pure);
    border: 1px solid var(--rule-soft);
    border-radius: var(--radius);
    border-left: 3px solid var(--gold);
    margin-top: 1.5rem;
}

body.theme-caleb-cudlc .programme-about__meta-item {
    display: flex;
    flex-direction: column;
    gap: 0.25rem;
}

body.theme-caleb-cudlc .programme-about__meta-label {
    font-family: var(--font-sans);
    font-size: 11px;
    font-weight: 700;
    letter-spacing: 0.16em;
    text-transform: uppercase;
    color: var(--ink-faint);
}

body.theme-caleb-cudlc .programme-about__meta-value {
    font-family: var(--font-serif);
    font-size: 1rem;
    font-weight: 500;
    color: var(--ink-strong);
}
body.theme-caleb-cudlc .programme-about__meta-value code {
    font-family: var(--font-mono);
    font-size: 0.875rem;
    background: var(--gold-soft);
    color: var(--gold-deep);
    padding: 1px 6px;
    border-radius: 3px;
}


/* =====================================================================
   4. CURRICULUM — level accordion
   ===================================================================== */
body.theme-caleb-cudlc .curriculum-levels {
    display: flex;
    flex-direction: column;
    gap: 0.875rem;
    margin-top: 2rem;
}

body.theme-caleb-cudlc .curriculum-level {
    background: var(--paper-pure);
    border: 1px solid var(--rule-soft);
    border-radius: var(--radius-lg);
    overflow: hidden;
    transition: border-color 0.2s ease, box-shadow 0.2s ease;
}
body.theme-caleb-cudlc .curriculum-level[open] {
    border-color: var(--gold);
    box-shadow: var(--shadow-sm);
}

body.theme-caleb-cudlc .curriculum-level__head {
    list-style: none;
    cursor: pointer;
    padding: 1.25rem 1.5rem;
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 1rem;
    transition: background 0.2s ease;
}
body.theme-caleb-cudlc .curriculum-level__head::-webkit-details-marker { display: none; }
body.theme-caleb-cudlc .curriculum-level__head:hover { background: var(--paper); }
body.theme-caleb-cudlc .curriculum-level[open] .curriculum-level__head { background: var(--gold-soft); }

body.theme-caleb-cudlc .curriculum-level__head-l {
    display: flex;
    align-items: baseline;
    gap: 0.625rem;
}

body.theme-caleb-cudlc .curriculum-level__num {
    font-family: var(--font-serif);
    font-style: italic;
    font-size: 2rem;
    font-weight: 500;
    color: var(--gold);
    line-height: 1;
}

body.theme-caleb-cudlc .curriculum-level__label {
    font-family: var(--font-sans);
    font-size: 12px;
    font-weight: 700;
    letter-spacing: 0.18em;
    text-transform: uppercase;
    color: var(--ink-soft);
}

body.theme-caleb-cudlc .curriculum-level__head-r {
    display: flex;
    align-items: center;
    gap: 1.25rem;
    font-family: var(--font-sans);
    font-size: 13px;
    color: var(--ink-soft);
}

body.theme-caleb-cudlc .curriculum-level__count,
body.theme-caleb-cudlc .curriculum-level__credits {
    font-weight: 600;
}

body.theme-caleb-cudlc .curriculum-level__chev {
    width: 28px;
    height: 28px;
    line-height: 26px;
    text-align: center;
    border: 1px solid var(--rule);
    border-radius: 50%;
    color: var(--ink-soft);
    font-size: 18px;
    font-weight: 300;
    background: var(--paper-pure);
    transition: transform 0.25s ease, background 0.2s ease, border-color 0.2s ease, color 0.2s ease;
    flex-shrink: 0;
}
body.theme-caleb-cudlc .curriculum-level[open] .curriculum-level__chev {
    transform: rotate(45deg);
    background: var(--gold);
    border-color: var(--gold);
    color: var(--paper-pure);
}

body.theme-caleb-cudlc .curriculum-level__body {
    padding: 0 1.5rem 1.5rem;
    border-top: 1px solid var(--rule-soft);
    background: var(--paper);
}

body.theme-caleb-cudlc .curriculum-table {
    width: 100%;
    border-collapse: collapse;
    margin-top: 0.5rem;
    font-family: var(--font-sans);
    font-size: 14px;
}

body.theme-caleb-cudlc .curriculum-table thead th {
    text-align: left;
    padding: 0.875rem 0.75rem 0.625rem;
    font-size: 11px;
    font-weight: 700;
    letter-spacing: 0.16em;
    text-transform: uppercase;
    color: var(--ink-faint);
    border-bottom: 1px solid var(--rule);
    background: transparent;
}
body.theme-caleb-cudlc .curriculum-table thead th.num { text-align: right; }

body.theme-caleb-cudlc .curriculum-table tbody td {
    padding: 0.875rem 0.75rem;
    border-bottom: 1px solid var(--rule-soft);
    vertical-align: top;
}
body.theme-caleb-cudlc .curriculum-table tbody td.num {
    text-align: right;
    font-family: var(--font-mono);
    font-weight: 600;
    color: var(--ink-strong);
}
body.theme-caleb-cudlc .curriculum-table tbody tr:last-child td { border-bottom: 0; }
body.theme-caleb-cudlc .curriculum-table tbody tr:hover { background: var(--paper-pure); }

body.theme-caleb-cudlc .curriculum-table code {
    font-family: var(--font-mono);
    font-size: 12px;
    font-weight: 700;
    color: var(--gold-deep);
    background: var(--gold-soft);
    padding: 1px 6px;
    border-radius: 3px;
}

body.theme-caleb-cudlc .curriculum-table__title {
    display: block;
    font-family: var(--font-serif);
    font-size: 0.9375rem;
    font-weight: 500;
    color: var(--ink-strong);
    line-height: 1.35;
}

body.theme-caleb-cudlc .curriculum-table__desc {
    display: block;
    font-size: 12px;
    color: var(--ink-faint);
    line-height: 1.5;
    margin-top: 0.25rem;
}

body.theme-caleb-cudlc .curriculum-tag {
    display: inline-block;
    font-size: 10px;
    font-weight: 700;
    letter-spacing: 0.1em;
    text-transform: uppercase;
    padding: 2px 7px;
    border-radius: 99px;
    margin-right: 0.25rem;
}
body.theme-caleb-cudlc .curriculum-tag--core {
    background: var(--navy-tint);
    color: var(--navy);
}
body.theme-caleb-cudlc .curriculum-tag--elective {
    background: var(--gold-soft);
    color: var(--gold-deep);
}
body.theme-caleb-cudlc .curriculum-tag--gst {
    background: var(--rule-faint);
    color: var(--ink-soft);
}

body.theme-caleb-cudlc .curriculum-foot {
    margin-top: 1.5rem;
    font-family: var(--font-serif);
    font-style: italic;
    font-size: 14px;
    color: var(--ink-faint);
    text-align: center;
}


/* =====================================================================
   5. LEARNING OUTCOMES
   ===================================================================== */
body.theme-caleb-cudlc .outcomes-list {
    list-style: none;
    padding: 0;
    margin: 1.5rem 0 0;
    display: grid;
    gap: 1rem;
    max-width: 880px;
}

body.theme-caleb-cudlc .outcomes-list li {
    background: var(--paper-pure);
    border: 1px solid var(--rule-soft);
    border-left: 3px solid var(--gold);
    border-radius: var(--radius);
    padding: 1.125rem 1.375rem;
    font-family: var(--font-sans);
    font-size: 15px;
    line-height: 1.55;
    color: var(--ink-soft);
}
body.theme-caleb-cudlc .outcomes-list li strong {
    color: var(--ink-strong);
    font-weight: 700;
    display: block;
    margin-bottom: 0.25rem;
}


/* =====================================================================
   6. ASSESSMENT CARDS
   ===================================================================== */
body.theme-caleb-cudlc .assessment-grid {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(280px, 1fr));
    gap: 1.25rem;
    margin-top: 2rem;
}

body.theme-caleb-cudlc .assessment-card {
    background: var(--cream);
    border: 1px solid var(--rule-soft);
    border-radius: var(--radius-lg);
    padding: 1.5rem 1.625rem;
}

body.theme-caleb-cudlc .assessment-card__title {
    font-family: var(--font-serif);
    font-size: 1.25rem;
    font-weight: 500;
    color: var(--ink-strong);
    margin: 0 0 0.625rem;
    line-height: 1.25;
}

body.theme-caleb-cudlc .assessment-card__body {
    font-family: var(--font-sans);
    font-size: 14px;
    line-height: 1.6;
    color: var(--ink-soft);
    margin: 0;
}


/* =====================================================================
   7. FACULTY PREVIEW (on programme page)
   ===================================================================== */
body.theme-caleb-cudlc .faculty-preview-grid {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(260px, 1fr));
    gap: 1.25rem;
    margin-top: 2rem;
}


/* =====================================================================
   8. FACULTY PAGE
   ===================================================================== */
body.theme-caleb-cudlc .deep-wrap--faculty {
    /* inherits */
}

body.theme-caleb-cudlc .page-banner--faculty {
    background: linear-gradient(180deg, var(--cream) 0%, var(--paper) 100%);
}

body.theme-caleb-cudlc .faculty-empty {
    text-align: center;
    padding: 4rem 1rem;
}
body.theme-caleb-cudlc .faculty-empty .apply-cta__buttons {
    margin-top: 1.5rem;
    justify-content: center;
}

body.theme-caleb-cudlc .faculty-intro {
    margin-bottom: 2rem;
}

body.theme-caleb-cudlc .faculty-grid {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(260px, 1fr));
    gap: 1.25rem;
    margin-top: 1.5rem;
}

body.theme-caleb-cudlc .faculty-grid--leadership {
    grid-template-columns: repeat(auto-fit, minmax(320px, max-content));
    justify-content: center;
}


/* Faculty card */
body.theme-caleb-cudlc .faculty-card {
    background: var(--paper-pure);
    border: 1px solid var(--rule-soft);
    border-radius: var(--radius-lg);
    padding: 1.75rem 1.5rem 1.5rem;
    text-align: center;
    transition: transform 0.25s cubic-bezier(.2, .8, .2, 1), box-shadow 0.25s ease, border-color 0.25s ease;
}
body.theme-caleb-cudlc .faculty-card:hover {
    transform: translateY(-2px);
    box-shadow: var(--shadow-sm);
    border-color: var(--rule);
}

body.theme-caleb-cudlc .faculty-card--featured {
    background: var(--cream);
    border-color: var(--gold);
    border-width: 1px;
    box-shadow: var(--shadow);
}

body.theme-caleb-cudlc .faculty-card__photo {
    width: 96px;
    height: 96px;
    border-radius: 50%;
    overflow: hidden;
    background: var(--cream-warm);
    border: 2px solid var(--gold);
    margin: 0 auto 1.125rem;
    display: flex;
    align-items: center;
    justify-content: center;
    flex-shrink: 0;
}
body.theme-caleb-cudlc .faculty-card--featured .faculty-card__photo {
    width: 120px;
    height: 120px;
    border-width: 3px;
}
body.theme-caleb-cudlc .faculty-card__photo img {
    width: 100%;
    height: 100%;
    object-fit: cover;
}

body.theme-caleb-cudlc .faculty-card__initials {
    font-family: var(--font-serif);
    font-style: italic;
    font-size: 1.75rem;
    font-weight: 500;
    color: var(--gold-deep);
}

body.theme-caleb-cudlc .faculty-card__name {
    font-family: var(--font-serif);
    font-size: 1.25rem;
    font-weight: 500;
    color: var(--ink-strong);
    margin: 0 0 0.25rem;
    line-height: 1.25;
    letter-spacing: -0.005em;
}
body.theme-caleb-cudlc .faculty-card--featured .faculty-card__name {
    font-size: 1.4375rem;
}

body.theme-caleb-cudlc .faculty-card__title {
    font-family: var(--font-sans);
    font-size: 13px;
    font-weight: 600;
    color: var(--gold-deep);
    margin: 0 0 0.5rem;
    line-height: 1.35;
}

body.theme-caleb-cudlc .faculty-card__specialism {
    font-family: var(--font-serif);
    font-style: italic;
    font-size: 14px;
    color: var(--ink-soft);
    margin: 0 0 0.75rem;
    line-height: 1.45;
}

body.theme-caleb-cudlc .faculty-card__quals {
    font-family: var(--font-mono);
    font-size: 11px;
    color: var(--ink-faint);
    margin: 0 0 0.75rem;
    line-height: 1.5;
}

body.theme-caleb-cudlc .faculty-card__bio-toggle {
    margin-top: 0.625rem;
    text-align: left;
}
body.theme-caleb-cudlc .faculty-card__bio-toggle summary {
    list-style: none;
    cursor: pointer;
    font-family: var(--font-sans);
    font-size: 12px;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: 0.12em;
    color: var(--gold-deep);
    text-align: center;
    padding-top: 0.625rem;
    border-top: 1px solid var(--rule-soft);
    transition: color 0.2s ease;
}
body.theme-caleb-cudlc .faculty-card__bio-toggle summary::-webkit-details-marker { display: none; }
body.theme-caleb-cudlc .faculty-card__bio-toggle summary:hover { color: var(--gold); }
body.theme-caleb-cudlc .faculty-card__bio-toggle[open] summary { color: var(--ink-strong); }

body.theme-caleb-cudlc .faculty-card__bio {
    font-family: var(--font-sans);
    font-size: 13px;
    line-height: 1.55;
    color: var(--ink-soft);
    margin: 0.875rem 0 0;
    text-align: left;
}

body.theme-caleb-cudlc .faculty-card__bio-placeholder,
body.theme-caleb-cudlc .faculty-card__verify {
    font-family: var(--font-serif);
    font-style: italic;
    font-size: 12px;
    color: var(--ink-faint);
    margin: 0.625rem 0 0;
    line-height: 1.5;
}


/* =====================================================================
   9. RESPONSIVE
   ===================================================================== */
@media (max-width: 720px) {
    body.theme-caleb-cudlc .programme-facts {
        margin-top: -1rem;
    }
    body.theme-caleb-cudlc .programme-facts__grid {
        grid-template-columns: 1fr 1fr;
    }
    body.theme-caleb-cudlc .programme-fact {
        padding: 1rem 1.125rem;
    }
    body.theme-caleb-cudlc .programme-fact:nth-child(odd) { border-right: 1px solid var(--rule-soft); }
    body.theme-caleb-cudlc .programme-fact:nth-child(2n) { border-right: 0; }
    body.theme-caleb-cudlc .programme-fact:nth-child(-n+2) { border-bottom: 1px solid var(--rule-soft); }
    body.theme-caleb-cudlc .programme-fact__value {
        font-size: 1.0625rem;
    }

    body.theme-caleb-cudlc .curriculum-level__head {
        flex-direction: column;
        align-items: flex-start;
        gap: 0.625rem;
        position: relative;
    }
    body.theme-caleb-cudlc .curriculum-level__chev {
        position: absolute;
        right: 1rem;
        top: 1rem;
    }
    body.theme-caleb-cudlc .curriculum-level__head-r {
        font-size: 12px;
        gap: 0.875rem;
        flex-wrap: wrap;
    }
    body.theme-caleb-cudlc .curriculum-table thead { display: none; }
    body.theme-caleb-cudlc .curriculum-table,
    body.theme-caleb-cudlc .curriculum-table tbody,
    body.theme-caleb-cudlc .curriculum-table tr,
    body.theme-caleb-cudlc .curriculum-table td {
        display: block;
        width: 100%;
    }
    body.theme-caleb-cudlc .curriculum-table tbody tr {
        padding: 0.875rem 0;
        border-bottom: 1px solid var(--rule-soft);
    }
    body.theme-caleb-cudlc .curriculum-table tbody td {
        padding: 0.125rem 0;
        border-bottom: 0;
    }
    body.theme-caleb-cudlc .curriculum-table tbody td.num {
        text-align: left;
        font-size: 12px;
        color: var(--ink-faint);
    }
    body.theme-caleb-cudlc .curriculum-table tbody td.num::before {
        content: 'Credits: ';
        font-family: var(--font-sans);
        text-transform: uppercase;
        letter-spacing: 0.08em;
        font-size: 10px;
        margin-right: 4px;
    }

    body.theme-caleb-cudlc .faculty-card {
        padding: 1.5rem 1.25rem 1.25rem;
    }
}


/* =====================================================================
   10. REDUCED MOTION
   ===================================================================== */
@media (prefers-reduced-motion: reduce) {
    body.theme-caleb-cudlc .programme-card,
    body.theme-caleb-cudlc .faculty-card,
    body.theme-caleb-cudlc .curriculum-level,
    body.theme-caleb-cudlc .curriculum-level__chev {
        transition: none !important;
    }
}


/* =====================================================================
   End of v1.13.3 stylesheet additions.
   ===================================================================== */

/* ── v1.13.6-additions.css ────────────────────────────────── */
/* =====================================================================
   CUDLC v1.13.6 — Leadership editorial restyle
   ---------------------------------------------------------------------
   Restyle of /leadership (directory) and /leadership/{slug} (detail)
   matching the editorial design language established in v1.13.1 / v1.13.3.

   Sections:
     1. Leadership directory page banner
     2. Leadership intro quote (optional pull-quote)
     3. Category groups + leader cards
     4. Featured leader card variant
     5. Leader detail page header (photo + meta panel)
     6. Leader contact list
     7. Leader bio prose
     8. Leader detail page quote
     9. Responsive + reduced motion
   ===================================================================== */


/* =====================================================================
   1. LEADERSHIP DIRECTORY BANNER
   ===================================================================== */
body.theme-caleb-cudlc .page-banner--leadership {
    background: linear-gradient(180deg, var(--cream) 0%, var(--paper) 100%);
}

body.theme-caleb-cudlc .deep-wrap--leadership {
    /* inherits from .deep-wrap */
}


/* =====================================================================
   2. INTRO QUOTE
   ===================================================================== */
body.theme-caleb-cudlc .leadership-quote {
    margin: 1rem 0 3rem;
}

body.theme-caleb-cudlc .leadership-quote__body {
    background: var(--cream);
    border: 1px solid var(--rule-soft);
    border-left: 4px solid var(--gold);
    border-radius: var(--radius-lg);
    padding: 2rem 2.5rem;
    margin: 0;
    position: relative;
    max-width: 880px;
}

body.theme-caleb-cudlc .leadership-quote__mark {
    position: absolute;
    top: 0.5rem;
    left: 1.25rem;
    font-family: var(--font-serif);
    font-style: italic;
    font-size: 4rem;
    color: var(--gold);
    line-height: 1;
    opacity: 0.5;
}

body.theme-caleb-cudlc .leadership-quote__text {
    font-family: var(--font-serif);
    font-style: italic;
    font-size: 1.4rem;
    font-weight: 400;
    color: var(--ink-strong);
    line-height: 1.45;
    letter-spacing: -0.005em;
    margin: 0 0 0.5rem;
    padding-left: 1.5rem;
}

body.theme-caleb-cudlc .leadership-quote__cite {
    font-family: var(--font-sans);
    font-size: 13px;
    color: var(--ink-soft);
    text-align: right;
    padding-top: 0.5rem;
}
body.theme-caleb-cudlc .leadership-quote__cite cite {
    font-style: normal;
    font-weight: 600;
}


/* =====================================================================
   3. CATEGORY GROUPS + LEADER CARDS
   ===================================================================== */
body.theme-caleb-cudlc .leadership-group {
    margin-bottom: 3rem;
}

body.theme-caleb-cudlc .leader-grid {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(260px, 1fr));
    gap: 1.5rem;
    margin-top: 1.75rem;
}

/* When a category has a single leader (e.g. Director), centre and feature it */
body.theme-caleb-cudlc .leader-grid--single {
    grid-template-columns: minmax(280px, 380px);
    justify-content: center;
}

body.theme-caleb-cudlc .leader-card {
    display: flex;
    flex-direction: column;
    align-items: center;
    text-align: center;
    text-decoration: none;
    color: inherit;
    background: var(--paper-pure);
    border: 1px solid var(--rule-soft);
    border-radius: var(--radius-lg);
    padding: 2rem 1.5rem 1.75rem;
    transition: transform 0.25s cubic-bezier(.2, .8, .2, 1),
                box-shadow 0.25s ease,
                border-color 0.25s ease;
    position: relative;
}
body.theme-caleb-cudlc .leader-card:hover {
    transform: translateY(-3px);
    box-shadow: var(--shadow-md);
    border-color: var(--gold);
}

body.theme-caleb-cudlc .leader-card__photo {
    width: 130px;
    height: 130px;
    border-radius: 50%;
    overflow: hidden;
    background: var(--cream-warm);
    border: 3px solid var(--gold);
    margin-bottom: 1.25rem;
    display: flex;
    align-items: center;
    justify-content: center;
    flex-shrink: 0;
}
body.theme-caleb-cudlc .leader-card__photo img {
    width: 100%;
    height: 100%;
    object-fit: cover;
}

body.theme-caleb-cudlc .leader-card__initials {
    font-family: var(--font-serif);
    font-style: italic;
    font-size: 2.25rem;
    font-weight: 500;
    color: var(--gold-deep);
}

body.theme-caleb-cudlc .leader-card__name {
    font-family: var(--font-serif);
    font-size: 1.375rem;
    font-weight: 500;
    color: var(--ink-strong);
    line-height: 1.25;
    margin: 0 0 0.375rem;
    letter-spacing: -0.005em;
}

body.theme-caleb-cudlc .leader-card__role {
    font-family: var(--font-sans);
    font-size: 13px;
    font-weight: 600;
    color: var(--gold-deep);
    letter-spacing: 0.02em;
    margin: 0 0 1rem;
    line-height: 1.35;
}

body.theme-caleb-cudlc .leader-card__bio {
    font-family: var(--font-sans);
    font-size: 14px;
    line-height: 1.55;
    color: var(--ink-soft);
    margin: 0 0 1.25rem;
    flex: 1;
}

body.theme-caleb-cudlc .leader-card__bio--placeholder {
    color: var(--ink-faint);
    font-family: var(--font-serif);
    font-style: italic;
    font-size: 13px;
}

body.theme-caleb-cudlc .leader-card__more {
    font-family: var(--font-sans);
    font-size: 12px;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: 0.12em;
    color: var(--gold-deep);
    padding-top: 0.875rem;
    margin-top: auto;
    border-top: 1px solid var(--rule-soft);
    width: 100%;
    transition: color 0.2s ease;
}
body.theme-caleb-cudlc .leader-card:hover .leader-card__more {
    color: var(--gold);
}


/* =====================================================================
   4. FEATURED LEADER CARD VARIANT
   ===================================================================== */
body.theme-caleb-cudlc .leader-card--featured {
    background: var(--cream);
    border-color: var(--gold);
    box-shadow: var(--shadow);
}
body.theme-caleb-cudlc .leader-card--featured .leader-card__photo {
    width: 150px;
    height: 150px;
}


/* =====================================================================
   5. LEADER DETAIL PAGE HEADER
   ===================================================================== */
body.theme-caleb-cudlc .page-banner--leader {
    background: var(--cream);
}

body.theme-caleb-cudlc .deep-wrap--leader {
    /* inherits */
}

body.theme-caleb-cudlc .leader-header {
    display: grid;
    grid-template-columns: 280px 1fr;
    gap: 3rem;
    align-items: start;
    margin-top: -2rem; /* overlap banner */
    margin-bottom: 3rem;
    padding: 2rem;
    background: var(--paper-pure);
    border: 1px solid var(--rule);
    border-radius: var(--radius-lg);
    box-shadow: var(--shadow-sm);
    position: relative;
    z-index: 1;
}

body.theme-caleb-cudlc .leader-header__photo {
    width: 240px;
    height: 240px;
    border-radius: 50%;
    overflow: hidden;
    background: var(--cream-warm);
    border: 4px solid var(--gold);
    display: flex;
    align-items: center;
    justify-content: center;
    flex-shrink: 0;
}
body.theme-caleb-cudlc .leader-header__photo img {
    width: 100%;
    height: 100%;
    object-fit: cover;
}

body.theme-caleb-cudlc .leader-header__initials {
    font-family: var(--font-serif);
    font-style: italic;
    font-size: 4.5rem;
    font-weight: 500;
    color: var(--gold-deep);
}

body.theme-caleb-cudlc .leader-header__meta {
    display: flex;
    flex-direction: column;
    gap: 1.25rem;
    padding-top: 0.5rem;
}

body.theme-caleb-cudlc .leader-header__role-block {
    display: flex;
    flex-direction: column;
    gap: 0.5rem;
}

body.theme-caleb-cudlc .leader-header__category {
    font-family: var(--font-sans);
    font-size: 11px;
    font-weight: 700;
    letter-spacing: 0.18em;
    text-transform: uppercase;
    color: var(--ink-faint);
}

body.theme-caleb-cudlc .leader-header__role {
    font-family: var(--font-serif);
    font-size: 1.625rem;
    font-weight: 500;
    color: var(--gold-deep);
    margin: 0;
    line-height: 1.2;
    letter-spacing: -0.005em;
}

body.theme-caleb-cudlc .leader-header__lede {
    font-family: var(--font-serif);
    font-style: italic;
    font-size: 1.0625rem;
    line-height: 1.55;
    color: var(--ink-strong);
    margin: 0;
    max-width: 56ch;
}


/* =====================================================================
   6. LEADER CONTACT LIST
   ===================================================================== */
body.theme-caleb-cudlc .leader-contacts {
    list-style: none;
    padding: 1rem 0 0;
    margin: 0.5rem 0 0;
    border-top: 1px solid var(--rule-soft);
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(180px, 1fr));
    gap: 0.875rem 1.5rem;
}

body.theme-caleb-cudlc .leader-contacts__item {
    display: flex;
    flex-direction: column;
    gap: 0.125rem;
    font-family: var(--font-sans);
    font-size: 14px;
}

body.theme-caleb-cudlc .leader-contacts__label {
    font-size: 11px;
    font-weight: 700;
    letter-spacing: 0.16em;
    text-transform: uppercase;
    color: var(--ink-faint);
}

body.theme-caleb-cudlc .leader-contacts__item a {
    color: var(--gold-deep);
    text-decoration: none;
    font-weight: 600;
    transition: color 0.2s ease;
}
body.theme-caleb-cudlc .leader-contacts__item a:hover {
    color: var(--gold);
    text-decoration: underline;
}


/* =====================================================================
   7. LEADER BIO PROSE
   ===================================================================== */
body.theme-caleb-cudlc .leader-bio {
    margin-top: 1rem;
}

body.theme-caleb-cudlc .leader-bio__prose {
    max-width: 760px;
}

body.theme-caleb-cudlc .leader-bio--empty {
    text-align: center;
    color: var(--ink-faint);
    padding: 2rem 1rem;
}


/* =====================================================================
   8. LEADER DETAIL PAGE QUOTE
   ===================================================================== */
body.theme-caleb-cudlc .leader-quote {
    margin-bottom: 2rem;
}

body.theme-caleb-cudlc .leader-quote__body {
    background: var(--cream);
    border: 1px solid var(--rule-soft);
    border-left: 4px solid var(--gold);
    border-radius: var(--radius-lg);
    padding: 1.75rem 2rem 1.75rem 2.75rem;
    margin: 0;
    position: relative;
    max-width: 720px;
}

body.theme-caleb-cudlc .leader-quote__mark {
    position: absolute;
    top: 0.25rem;
    left: 1rem;
    font-family: var(--font-serif);
    font-style: italic;
    font-size: 3.5rem;
    color: var(--gold);
    line-height: 1;
    opacity: 0.45;
}

body.theme-caleb-cudlc .leader-quote__text {
    font-family: var(--font-serif);
    font-style: italic;
    font-size: 1.1875rem;
    font-weight: 400;
    color: var(--ink-strong);
    line-height: 1.5;
    margin: 0;
}


/* Back link at bottom of detail page */
body.theme-caleb-cudlc .leader-back {
    text-align: center;
    margin: 3rem 0 1rem;
}


/* =====================================================================
   9. RESPONSIVE
   ===================================================================== */
@media (max-width: 720px) {
    body.theme-caleb-cudlc .leader-header {
        grid-template-columns: 1fr;
        gap: 1.5rem;
        margin-top: -1rem;
        padding: 1.5rem;
        text-align: center;
    }
    body.theme-caleb-cudlc .leader-header__photo {
        margin: 0 auto;
        width: 180px;
        height: 180px;
    }
    body.theme-caleb-cudlc .leader-header__initials {
        font-size: 3.5rem;
    }
    body.theme-caleb-cudlc .leader-header__role {
        font-size: 1.375rem;
    }
    body.theme-caleb-cudlc .leader-header__lede {
        font-size: 1rem;
        text-align: left;
    }
    body.theme-caleb-cudlc .leader-contacts {
        text-align: left;
    }
    body.theme-caleb-cudlc .leadership-quote__body {
        padding: 1.5rem 1.75rem;
    }
    body.theme-caleb-cudlc .leadership-quote__text {
        font-size: 1.15rem;
        padding-left: 1rem;
    }
    body.theme-caleb-cudlc .leader-card {
        padding: 1.5rem 1.25rem 1.25rem;
    }
    body.theme-caleb-cudlc .leader-card__photo {
        width: 110px;
        height: 110px;
    }
    body.theme-caleb-cudlc .leader-card--featured .leader-card__photo {
        width: 130px;
        height: 130px;
    }
}


/* =====================================================================
   10. REDUCED MOTION
   ===================================================================== */
@media (prefers-reduced-motion: reduce) {
    body.theme-caleb-cudlc .leader-card,
    body.theme-caleb-cudlc .leader-card__more,
    body.theme-caleb-cudlc .leader-contacts__item a {
        transition: none !important;
    }
}


/* =====================================================================
   End of v1.13.6 stylesheet additions.
   ===================================================================== */

/* ── v1.13.7-additions.css ────────────────────────────────── */
/* =====================================================================
   CUDLC v1.13.7 — Calendar editorial styles
   ---------------------------------------------------------------------
   Styles for /calendar (academic), /calendar/events, /calendar/{slug}.
   Builds on the design language from v1.13.1 / v1.13.3 / v1.13.6.

   Sections:
     1. Calendar page banner
     2. Calendar tabs (academic / events switcher)
     3. Term group sections
     4. Event card (date badge + body)
     5. Featured event variant
     6. Past events styling
     7. Event detail page (facts strip + description)
     8. Empty states + 404
     9. Responsive + reduced motion
   ===================================================================== */


/* =====================================================================
   1. PAGE BANNER + WRAP
   ===================================================================== */
body.theme-caleb-cudlc .page-banner--calendar {
    background: linear-gradient(180deg, var(--cream) 0%, var(--paper) 100%);
}
body.theme-caleb-cudlc .page-banner--event {
    background: var(--cream);
}

body.theme-caleb-cudlc .deep-wrap--calendar,
body.theme-caleb-cudlc .deep-wrap--event {
    /* inherits from .deep-wrap */
}


/* =====================================================================
   2. CALENDAR TABS
   ===================================================================== */
body.theme-caleb-cudlc .calendar-tabs {
    display: flex;
    flex-wrap: wrap;
    gap: 0.5rem;
    margin: 0 0 2.5rem;
    padding: 0;
    border-bottom: 1px solid var(--rule-soft);
}

body.theme-caleb-cudlc .calendar-tab {
    display: inline-block;
    padding: 0.875rem 1.375rem;
    font-family: var(--font-sans);
    font-size: 14px;
    font-weight: 600;
    color: var(--ink-soft);
    text-decoration: none;
    border-bottom: 3px solid transparent;
    margin-bottom: -1px;
    transition: color 0.2s ease, border-color 0.2s ease;
    letter-spacing: 0.01em;
}
body.theme-caleb-cudlc .calendar-tab:hover {
    color: var(--ink-strong);
    border-bottom-color: var(--rule);
}

body.theme-caleb-cudlc .calendar-tab--active {
    color: var(--gold-deep);
    border-bottom-color: var(--gold);
    font-weight: 700;
}


/* =====================================================================
   3. TERM GROUP SECTIONS
   ===================================================================== */
body.theme-caleb-cudlc .calendar-group {
    margin-bottom: 3rem;
}


/* =====================================================================
   4. EVENT LIST + CARD
   ===================================================================== */
body.theme-caleb-cudlc .event-list {
    list-style: none;
    margin: 1.5rem 0 0;
    padding: 0;
    display: flex;
    flex-direction: column;
    gap: 0.875rem;
}

body.theme-caleb-cudlc .event-card {
    background: var(--paper-pure);
    border: 1px solid var(--rule-soft);
    border-radius: var(--radius-lg);
    overflow: hidden;
    transition: transform 0.2s cubic-bezier(.2, .8, .2, 1),
                box-shadow 0.2s ease,
                border-color 0.2s ease;
}
body.theme-caleb-cudlc .event-card:hover {
    transform: translateY(-2px);
    box-shadow: var(--shadow-sm);
    border-color: var(--gold);
}

body.theme-caleb-cudlc .event-card__link {
    display: grid;
    grid-template-columns: 96px 1fr;
    gap: 1.25rem;
    text-decoration: none;
    color: inherit;
    padding: 1.125rem 1.5rem 1.125rem 0;
    align-items: center;
}

body.theme-caleb-cudlc .event-card__date {
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    background: var(--cream);
    border-right: 1px solid var(--rule-soft);
    padding: 1.125rem 0.75rem;
    margin: 0;
    text-align: center;
    min-height: 80px;
    align-self: stretch;
}

body.theme-caleb-cudlc .event-card__day {
    display: block;
    font-family: var(--font-serif);
    font-size: 2rem;
    font-weight: 500;
    color: var(--ink-strong);
    line-height: 1;
    letter-spacing: -0.02em;
}

body.theme-caleb-cudlc .event-card__mon {
    display: block;
    font-family: var(--font-sans);
    font-size: 11px;
    font-weight: 700;
    letter-spacing: 0.18em;
    color: var(--gold-deep);
    margin-top: 4px;
}

body.theme-caleb-cudlc .event-card__body {
    display: flex;
    flex-direction: column;
    gap: 0.375rem;
    min-width: 0;
}

body.theme-caleb-cudlc .event-card__title {
    font-family: var(--font-serif);
    font-size: 1.1875rem;
    font-weight: 500;
    line-height: 1.3;
    color: var(--ink-strong);
    margin: 0;
    letter-spacing: -0.005em;
}

body.theme-caleb-cudlc .event-card__meta {
    font-family: var(--font-sans);
    font-size: 13px;
    line-height: 1.5;
    color: var(--ink-faint);
    margin: 0;
    display: flex;
    flex-wrap: wrap;
    gap: 0.25rem 1rem;
}

body.theme-caleb-cudlc .event-card__when {
    color: var(--ink-soft);
    font-weight: 600;
}

body.theme-caleb-cudlc .event-card__where::before {
    content: '·';
    margin-right: 0.5rem;
    opacity: 0.5;
}
body.theme-caleb-cudlc .event-card__meta > .event-card__where:first-child::before {
    content: '';
    margin-right: 0;
}

body.theme-caleb-cudlc .event-card__cat {
    display: inline-block;
    font-family: var(--font-sans);
    font-size: 10px;
    font-weight: 700;
    letter-spacing: 0.12em;
    text-transform: uppercase;
    padding: 2px 8px;
    border-radius: 99px;
    background: var(--rule-faint);
    color: var(--ink-soft);
    margin-top: 0.25rem;
    align-self: flex-start;
}

/* Category-specific colours */
body.theme-caleb-cudlc .event-card__cat--registration {
    background: var(--navy-tint);
    color: var(--navy);
}
body.theme-caleb-cudlc .event-card__cat--exam {
    background: rgba(200, 55, 55, 0.10);
    color: #9b2929;
}
body.theme-caleb-cudlc .event-card__cat--holiday {
    background: rgba(45, 122, 62, 0.12);
    color: #1B5E20;
}
body.theme-caleb-cudlc .event-card__cat--convocation,
body.theme-caleb-cudlc .event-card__cat--webinar,
body.theme-caleb-cudlc .event-card__cat--community {
    background: var(--gold-soft);
    color: var(--gold-deep);
}
body.theme-caleb-cudlc .event-card__cat--deadline {
    background: rgba(200, 150, 12, 0.18);
    color: #6b5510;
}


/* =====================================================================
   5. FEATURED EVENT VARIANT
   ===================================================================== */
body.theme-caleb-cudlc .event-card--featured {
    background: var(--cream);
    border-color: var(--gold);
    box-shadow: var(--shadow-sm);
}
body.theme-caleb-cudlc .event-card--featured .event-card__date {
    background: var(--gold);
    border-right: 0;
}
body.theme-caleb-cudlc .event-card--featured .event-card__day {
    color: var(--paper-pure);
}
body.theme-caleb-cudlc .event-card--featured .event-card__mon {
    color: var(--cream-warm);
}


/* =====================================================================
   6. PAST EVENTS STYLING
   ===================================================================== */
body.theme-caleb-cudlc .event-list--past .event-card {
    opacity: 0.7;
}
body.theme-caleb-cudlc .event-list--past .event-card:hover {
    opacity: 1;
}
body.theme-caleb-cudlc .event-list--past .event-card__date {
    background: var(--paper);
}
body.theme-caleb-cudlc .event-list--past .event-card__day {
    color: var(--ink-faint);
}


/* =====================================================================
   7. EVENT DETAIL PAGE
   ===================================================================== */
body.theme-caleb-cudlc .event-facts {
    margin-top: -2rem;
    margin-bottom: 3rem;
    position: relative;
    z-index: 1;
}

body.theme-caleb-cudlc .event-facts__grid {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(170px, 1fr));
    gap: 0;
    background: var(--paper-pure);
    border: 1px solid var(--rule);
    border-radius: var(--radius-lg);
    overflow: hidden;
    box-shadow: var(--shadow-sm);
    list-style: none;
    margin: 0;
    padding: 0;
}

body.theme-caleb-cudlc .event-fact {
    padding: 1.25rem 1.5rem;
    border-right: 1px solid var(--rule-soft);
    display: flex;
    flex-direction: column;
    gap: 0.375rem;
}
body.theme-caleb-cudlc .event-fact:last-child { border-right: 0; }

body.theme-caleb-cudlc .event-fact__label {
    font-family: var(--font-sans);
    font-size: 11px;
    font-weight: 700;
    letter-spacing: 0.16em;
    text-transform: uppercase;
    color: var(--ink-faint);
}

body.theme-caleb-cudlc .event-fact__value {
    font-family: var(--font-serif);
    font-size: 1rem;
    font-weight: 500;
    color: var(--ink-strong);
    line-height: 1.35;
}

body.theme-caleb-cudlc .event-fact__value--accent {
    color: var(--gold-deep);
    font-style: italic;
}

body.theme-caleb-cudlc .event-description__prose {
    margin-bottom: 1.5rem;
    max-width: 760px;
}

body.theme-caleb-cudlc .event-description__cta {
    margin-top: 1.5rem;
}

body.theme-caleb-cudlc .event-back {
    text-align: center;
    margin: 2rem 0 1rem;
}


/* =====================================================================
   8. EMPTY STATES
   ===================================================================== */
body.theme-caleb-cudlc .calendar-empty {
    text-align: center;
    padding: 3rem 1rem;
}


/* =====================================================================
   9. RESPONSIVE
   ===================================================================== */
@media (max-width: 720px) {
    body.theme-caleb-cudlc .calendar-tabs {
        margin-bottom: 1.5rem;
    }
    body.theme-caleb-cudlc .calendar-tab {
        padding: 0.75rem 1rem;
        font-size: 13px;
    }

    body.theme-caleb-cudlc .event-card__link {
        grid-template-columns: 72px 1fr;
        gap: 1rem;
        padding: 0.875rem 1.125rem 0.875rem 0;
    }
    body.theme-caleb-cudlc .event-card__date {
        padding: 0.75rem 0.5rem;
        min-height: 64px;
    }
    body.theme-caleb-cudlc .event-card__day {
        font-size: 1.5rem;
    }
    body.theme-caleb-cudlc .event-card__mon {
        font-size: 10px;
    }
    body.theme-caleb-cudlc .event-card__title {
        font-size: 1.0625rem;
    }
    body.theme-caleb-cudlc .event-card__meta {
        font-size: 12px;
    }

    body.theme-caleb-cudlc .event-facts {
        margin-top: -1rem;
    }
    body.theme-caleb-cudlc .event-facts__grid {
        grid-template-columns: 1fr 1fr;
    }
    body.theme-caleb-cudlc .event-fact {
        padding: 1rem 1.125rem;
    }
    body.theme-caleb-cudlc .event-fact:nth-child(odd)  { border-right: 1px solid var(--rule-soft); }
    body.theme-caleb-cudlc .event-fact:nth-child(2n)   { border-right: 0; }
    body.theme-caleb-cudlc .event-fact:nth-child(-n+2) { border-bottom: 1px solid var(--rule-soft); }
    body.theme-caleb-cudlc .event-fact__value {
        font-size: 0.9375rem;
    }
}


/* =====================================================================
   10. REDUCED MOTION
   ===================================================================== */
@media (prefers-reduced-motion: reduce) {
    body.theme-caleb-cudlc .event-card,
    body.theme-caleb-cudlc .calendar-tab {
        transition: none !important;
    }
}


/* =====================================================================
   End of v1.13.7 stylesheet additions.
   ===================================================================== */

/* ── v1.13.8-additions.css ────────────────────────────────── */
/* =====================================================================
   CUDLC v1.13.8 — Policies editorial styles
   ---------------------------------------------------------------------
   Styles for /policies (directory) and /policies/{slug} (detail).
   Builds on the editorial design language established in v1.13.1 /
   v1.13.3 / v1.13.6 / v1.13.7.

   Sections:
     1. Page banner + wrap
     2. Intro pull-quote (optional)
     3. Category sections + policy cards (grid)
     4. Policy detail page meta strip
     5. Policy body prose
     6. Empty states
     7. Responsive + reduced motion
   ===================================================================== */


/* =====================================================================
   1. PAGE BANNER + WRAP
   ===================================================================== */
body.theme-caleb-cudlc .page-banner--policies {
    background: linear-gradient(180deg, var(--cream) 0%, var(--paper) 100%);
}
body.theme-caleb-cudlc .page-banner--policy {
    background: var(--cream);
}

body.theme-caleb-cudlc .deep-wrap--policies,
body.theme-caleb-cudlc .deep-wrap--policy {
    /* inherits from .deep-wrap */
}


/* =====================================================================
   2. INTRO PULL-QUOTE
   ===================================================================== */
body.theme-caleb-cudlc .policies-intro {
    margin: 1rem 0 3rem;
}

body.theme-caleb-cudlc .policies-intro__body {
    background: var(--cream);
    border: 1px solid var(--rule-soft);
    border-left: 4px solid var(--gold);
    border-radius: var(--radius-lg);
    padding: 2rem 2.5rem;
    margin: 0;
    position: relative;
    max-width: 880px;
}

body.theme-caleb-cudlc .policies-intro__mark {
    position: absolute;
    top: 0.5rem;
    left: 1.25rem;
    font-family: var(--font-serif);
    font-style: italic;
    font-size: 4rem;
    color: var(--gold);
    line-height: 1;
    opacity: 0.5;
}

body.theme-caleb-cudlc .policies-intro__text {
    font-family: var(--font-serif);
    font-style: italic;
    font-size: 1.25rem;
    font-weight: 400;
    color: var(--ink-strong);
    line-height: 1.5;
    margin: 0;
    padding-left: 1.5rem;
}


/* =====================================================================
   3. CATEGORY SECTIONS + POLICY CARDS
   ===================================================================== */
body.theme-caleb-cudlc .policies-group {
    margin-bottom: 3rem;
}

body.theme-caleb-cudlc .policy-grid {
    list-style: none;
    margin: 1.75rem 0 0;
    padding: 0;
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(300px, 1fr));
    gap: 1.25rem;
}

body.theme-caleb-cudlc .policy-card {
    background: var(--paper-pure);
    border: 1px solid var(--rule-soft);
    border-radius: var(--radius-lg);
    overflow: hidden;
    transition: transform 0.2s cubic-bezier(.2, .8, .2, 1),
                box-shadow 0.2s ease,
                border-color 0.2s ease;
}
body.theme-caleb-cudlc .policy-card:hover {
    transform: translateY(-2px);
    box-shadow: var(--shadow-sm);
    border-color: var(--gold);
}

body.theme-caleb-cudlc .policy-card__link {
    display: flex;
    flex-direction: column;
    gap: 0.625rem;
    text-decoration: none;
    color: inherit;
    padding: 1.5rem 1.625rem 1.375rem;
    height: 100%;
    box-sizing: border-box;
}

body.theme-caleb-cudlc .policy-card__title {
    font-family: var(--font-serif);
    font-size: 1.25rem;
    font-weight: 500;
    line-height: 1.3;
    color: var(--ink-strong);
    margin: 0;
    letter-spacing: -0.005em;
}

body.theme-caleb-cudlc .policy-card__summary {
    font-family: var(--font-sans);
    font-size: 14px;
    line-height: 1.55;
    color: var(--ink-soft);
    margin: 0;
    flex: 1;
}

body.theme-caleb-cudlc .policy-card__more {
    font-family: var(--font-sans);
    font-size: 11px;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: 0.14em;
    color: var(--gold-deep);
    padding-top: 0.875rem;
    margin-top: auto;
    border-top: 1px solid var(--rule-soft);
    transition: color 0.2s ease;
}
body.theme-caleb-cudlc .policy-card:hover .policy-card__more {
    color: var(--gold);
}


/* =====================================================================
   4. POLICY DETAIL PAGE — META STRIP
   ===================================================================== */
body.theme-caleb-cudlc .policy-meta {
    margin-top: -2rem;
    margin-bottom: 3rem;
    position: relative;
    z-index: 1;
}

body.theme-caleb-cudlc .policy-meta__grid {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(170px, 1fr));
    gap: 0;
    background: var(--paper-pure);
    border: 1px solid var(--rule);
    border-radius: var(--radius-lg);
    overflow: hidden;
    box-shadow: var(--shadow-sm);
    list-style: none;
    margin: 0;
    padding: 0;
}

body.theme-caleb-cudlc .policy-meta__item {
    padding: 1.25rem 1.5rem;
    border-right: 1px solid var(--rule-soft);
    display: flex;
    flex-direction: column;
    gap: 0.375rem;
}
body.theme-caleb-cudlc .policy-meta__item:last-child { border-right: 0; }

body.theme-caleb-cudlc .policy-meta__label {
    font-family: var(--font-sans);
    font-size: 11px;
    font-weight: 700;
    letter-spacing: 0.16em;
    text-transform: uppercase;
    color: var(--ink-faint);
}

body.theme-caleb-cudlc .policy-meta__value {
    font-family: var(--font-serif);
    font-size: 1rem;
    font-weight: 500;
    color: var(--ink-strong);
    line-height: 1.35;
}

body.theme-caleb-cudlc .policy-meta__value--accent {
    color: var(--gold-deep);
    font-style: italic;
}


/* =====================================================================
   5. POLICY BODY PROSE
   ===================================================================== */
body.theme-caleb-cudlc .policy-body {
    margin-top: 1rem;
}

body.theme-caleb-cudlc .policy-body__prose {
    max-width: 760px;
}

body.theme-caleb-cudlc .policy-body__prose h2 {
    font-family: var(--font-serif);
    font-size: 1.5rem;
    font-weight: 500;
    color: var(--ink-strong);
    margin: 2rem 0 0.75rem;
    line-height: 1.25;
    letter-spacing: -0.005em;
}
body.theme-caleb-cudlc .policy-body__prose h2:first-child {
    margin-top: 0;
}

body.theme-caleb-cudlc .policy-body__prose h3 {
    font-family: var(--font-serif);
    font-size: 1.1875rem;
    font-weight: 500;
    color: var(--gold-deep);
    margin: 1.5rem 0 0.5rem;
    line-height: 1.3;
}

body.theme-caleb-cudlc .policy-body__prose p {
    margin: 0 0 1rem;
    line-height: 1.7;
}

body.theme-caleb-cudlc .policy-body__prose ul,
body.theme-caleb-cudlc .policy-body__prose ol {
    margin: 0 0 1rem 1.25rem;
    padding-left: 0.5rem;
}

body.theme-caleb-cudlc .policy-body__prose li {
    margin-bottom: 0.5rem;
    line-height: 1.6;
}

body.theme-caleb-cudlc .policy-body__prose strong {
    color: var(--ink-strong);
    font-weight: 600;
}

body.theme-caleb-cudlc .policy-body__prose a {
    color: var(--gold-deep);
    text-decoration: underline;
    text-decoration-thickness: 1px;
    text-underline-offset: 2px;
}
body.theme-caleb-cudlc .policy-body__prose a:hover {
    color: var(--gold);
}

body.theme-caleb-cudlc .policy-body--empty {
    text-align: center;
    color: var(--ink-faint);
    padding: 2rem 1rem;
}

body.theme-caleb-cudlc .policy-back {
    text-align: center;
    margin: 2rem 0 1rem;
}


/* =====================================================================
   6. EMPTY STATES
   ===================================================================== */
body.theme-caleb-cudlc .policies-empty {
    text-align: center;
    padding: 3rem 1rem;
    color: var(--ink-soft);
}


/* =====================================================================
   7. RESPONSIVE
   ===================================================================== */
@media (max-width: 720px) {
    body.theme-caleb-cudlc .policies-intro__body {
        padding: 1.5rem 1.75rem;
    }
    body.theme-caleb-cudlc .policies-intro__text {
        font-size: 1.0625rem;
        padding-left: 1rem;
    }

    body.theme-caleb-cudlc .policy-card__link {
        padding: 1.25rem 1.375rem 1.125rem;
    }

    body.theme-caleb-cudlc .policy-meta {
        margin-top: -1rem;
    }
    body.theme-caleb-cudlc .policy-meta__grid {
        grid-template-columns: 1fr 1fr;
    }
    body.theme-caleb-cudlc .policy-meta__item {
        padding: 1rem 1.125rem;
    }
    body.theme-caleb-cudlc .policy-meta__item:nth-child(odd)  { border-right: 1px solid var(--rule-soft); }
    body.theme-caleb-cudlc .policy-meta__item:nth-child(2n)   { border-right: 0; }
    body.theme-caleb-cudlc .policy-meta__item:nth-child(-n+2) { border-bottom: 1px solid var(--rule-soft); }

    body.theme-caleb-cudlc .policy-body__prose h2 {
        font-size: 1.3125rem;
    }
    body.theme-caleb-cudlc .policy-body__prose h3 {
        font-size: 1.0625rem;
    }
}


/* =====================================================================
   8. REDUCED MOTION
   ===================================================================== */
@media (prefers-reduced-motion: reduce) {
    body.theme-caleb-cudlc .policy-card,
    body.theme-caleb-cudlc .policy-card__more {
        transition: none !important;
    }
}


/* =====================================================================
   End of v1.13.8 stylesheet additions.
   ===================================================================== */

/* ── v1.13.11-additions.css ───────────────────────────────── */
/* =====================================================================
 * CUDLC v1.13.11 — Contact page editorial CSS
 *
 * Adds:
 *   - .page-banner--contact (banner accent, matches admissions/fees pattern)
 *   - .contact-grid (responsive two-column layout: details + form)
 *   - .contact-detail-card (icon+label+value cards for address/phone/email/wa)
 *   - .contact-form (editorial-styled form fields and submit)
 *   - .apply-cta--quiet (subdued bottom CTA strip variant)
 *
 * All scoped to body.theme-caleb-cudlc to avoid affecting other themes.
 * Inherits .deep-wrap / .deep-section / .deep-section__title / .deep-section__mark
 * from v1.13.1-additions.css (which v1.13.9 already tightened on desktop).
 * ===================================================================== */

/* -----------------------------------------------------------------
   1. BANNER ACCENT
   ----------------------------------------------------------------- */
body.theme-caleb-cudlc .page-banner--contact {
    background:
        linear-gradient(135deg, rgba(200, 150, 12, 0.04) 0%, transparent 60%),
        var(--cream, #FAF6EB);
    border-bottom: 1px solid var(--rule-soft, #E8DFC9);
}
body.theme-caleb-cudlc .page-banner--contact::before {
    content: "";
    position: absolute;
    top: 0; left: 0; right: 0;
    height: 3px;
    background: linear-gradient(90deg, var(--gold, #C8960C) 0%, transparent 70%);
    opacity: 0.7;
}

/* -----------------------------------------------------------------
   2. TWO-COLUMN GRID (mobile: stacked; desktop: details left, form right)
   ----------------------------------------------------------------- */
body.theme-caleb-cudlc .contact-grid {
    display: grid;
    grid-template-columns: 1fr;
    gap: 2.5rem;
    align-items: start;
}
@media (min-width: 880px) {
    body.theme-caleb-cudlc .contact-grid {
        grid-template-columns: minmax(0, 360px) minmax(0, 1fr);
        gap: 3rem;
    }
}

/* -----------------------------------------------------------------
   3. CONTACT-DETAIL CARDS (left column)
   ----------------------------------------------------------------- */
body.theme-caleb-cudlc .contact-detail-cards {
    display: flex;
    flex-direction: column;
    gap: 1rem;
    margin-top: 1.5rem;
}

body.theme-caleb-cudlc .contact-detail-card {
    display: flex;
    align-items: flex-start;
    gap: 1rem;
    padding: 1rem 1.125rem;
    background: var(--paper, #FFFFFF);
    border: 1px solid var(--rule-soft, #E8DFC9);
    border-radius: 10px;
    transition: border-color 0.2s ease, box-shadow 0.2s ease;
}
body.theme-caleb-cudlc .contact-detail-card:hover {
    border-color: var(--gold, #C8960C);
    box-shadow: 0 2px 8px rgba(0, 48, 135, 0.04);
}

body.theme-caleb-cudlc .contact-detail-card__icon {
    width: 42px;
    height: 42px;
    border-radius: 8px;
    background: rgba(200, 150, 12, 0.10);
    color: var(--gold-deep, #876A11);
    display: grid;
    place-items: center;
    flex-shrink: 0;
}
body.theme-caleb-cudlc .contact-detail-card__icon i,
body.theme-caleb-cudlc .contact-detail-card__icon svg {
    width: 20px;
    height: 20px;
    stroke-width: 1.75;
}

body.theme-caleb-cudlc .contact-detail-card__body {
    min-width: 0;  /* allow truncation on long emails */
    flex: 1;
}
body.theme-caleb-cudlc .contact-detail-card__label {
    font-family: var(--font-sans);
    font-size: 11px;
    font-weight: 700;
    letter-spacing: 0.08em;
    text-transform: uppercase;
    color: var(--gold-deep, #876A11);
    margin-bottom: 4px;
}
body.theme-caleb-cudlc .contact-detail-card__value {
    font-family: var(--font-sans);
    font-size: 15px;
    line-height: 1.5;
    color: var(--ink-strong, #1a1a1a);
    word-break: break-word;
}
body.theme-caleb-cudlc .contact-detail-card__value a {
    color: var(--ink-strong, #1a1a1a);
    text-decoration: none;
    border-bottom: 1px solid transparent;
    transition: border-color 0.2s ease;
}
body.theme-caleb-cudlc .contact-detail-card__value a:hover {
    border-bottom-color: var(--gold, #C8960C);
}

/* -----------------------------------------------------------------
   4. CONTACT FORM (right column)
   ----------------------------------------------------------------- */
body.theme-caleb-cudlc .contact-form-wrap {
    /* Visual separation from the details column on wide screens.
       On mobile the gap from .contact-grid handles it. */
}

body.theme-caleb-cudlc .contact-form {
    margin-top: 1.5rem;
    padding: 1.75rem;
    background: var(--paper, #FFFFFF);
    border: 1px solid var(--rule-soft, #E8DFC9);
    border-radius: 12px;
}
@media (min-width: 720px) {
    body.theme-caleb-cudlc .contact-form {
        padding: 2.25rem;
    }
}

/* Honey-pot — visually hide but keep accessible to screen readers
   not really, since aria-hidden is on, but the position offscreen
   prevents any visual or focus-trap issue. */
body.theme-caleb-cudlc .contact-form__honeypot {
    position: absolute !important;
    left: -9999px !important;
    width: 1px !important;
    height: 1px !important;
    overflow: hidden !important;
    opacity: 0 !important;
}

body.theme-caleb-cudlc .contact-form .form-row {
    display: grid;
    grid-template-columns: 1fr;
    gap: 1.125rem;
    margin-bottom: 1.125rem;
}
@media (min-width: 600px) {
    body.theme-caleb-cudlc .contact-form .form-row {
        grid-template-columns: 1fr 1fr;
        gap: 1rem;
    }
}

body.theme-caleb-cudlc .contact-form .form-group {
    display: flex;
    flex-direction: column;
}

body.theme-caleb-cudlc .contact-form .form-label {
    font-family: var(--font-sans);
    font-size: 13px;
    font-weight: 600;
    color: var(--ink-strong, #1a1a1a);
    margin-bottom: 6px;
}
body.theme-caleb-cudlc .contact-form .form-label__hint {
    font-weight: 400;
    color: var(--ink-soft, #555);
    font-size: 12px;
}

body.theme-caleb-cudlc .contact-form .form-input,
body.theme-caleb-cudlc .contact-form .form-select,
body.theme-caleb-cudlc .contact-form .form-textarea {
    width: 100%;
    padding: 0.625rem 0.75rem;
    font-family: var(--font-sans);
    font-size: 15px;
    line-height: 1.5;
    color: var(--ink-strong, #1a1a1a);
    background: var(--cream, #FAF6EB);
    border: 1px solid var(--rule-soft, #E8DFC9);
    border-radius: 6px;
    transition: border-color 0.2s ease, background 0.2s ease;
    box-sizing: border-box;
}

body.theme-caleb-cudlc .contact-form .form-input:focus,
body.theme-caleb-cudlc .contact-form .form-select:focus,
body.theme-caleb-cudlc .contact-form .form-textarea:focus {
    outline: none;
    border-color: var(--gold, #C8960C);
    background: var(--paper, #FFFFFF);
    box-shadow: 0 0 0 3px rgba(200, 150, 12, 0.10);
}

body.theme-caleb-cudlc .contact-form .form-textarea {
    resize: vertical;
    min-height: 140px;
    font-family: var(--font-sans);
}

body.theme-caleb-cudlc .contact-form__actions {
    display: flex;
    flex-direction: column;
    align-items: flex-start;
    gap: 0.75rem;
    margin-top: 0.5rem;
}
@media (min-width: 600px) {
    body.theme-caleb-cudlc .contact-form__actions {
        flex-direction: row;
        align-items: center;
        gap: 1.25rem;
    }
}

body.theme-caleb-cudlc .contact-form__submit {
    display: inline-flex;
    align-items: center;
    gap: 0.5rem;
    padding: 0.75rem 1.5rem;
    font-family: var(--font-sans);
    font-weight: 600;
    font-size: 14px;
    letter-spacing: 0.01em;
    cursor: pointer;
    border: none;
    /* inherits .btn-primary base styling — colors, radius, transitions */
}
body.theme-caleb-cudlc .contact-form__submit i,
body.theme-caleb-cudlc .contact-form__submit svg {
    width: 16px;
    height: 16px;
    stroke-width: 2;
}

body.theme-caleb-cudlc .contact-form__note {
    margin: 0;
    font-family: var(--font-sans);
    font-size: 13px;
    color: var(--ink-soft, #666);
    line-height: 1.5;
}

/* -----------------------------------------------------------------
   5. QUIETER APPLY-CTA VARIANT
   The bottom CTA strip on /contact pivots the user to WhatsApp for
   urgent items, but the form is the primary action. So the strip
   is more subdued than on other editorial pages: cream background
   instead of navy, secondary button instead of primary.
   ----------------------------------------------------------------- */
body.theme-caleb-cudlc .apply-cta--quiet {
    background: var(--cream, #FAF6EB);
    border: 1px solid var(--rule-soft, #E8DFC9);
    border-radius: 12px;
    padding: 1.75rem 2rem;
    margin-top: 0.5rem;  /* sit a bit closer to the form section */
}

body.theme-caleb-cudlc .apply-cta--quiet .apply-cta__inner {
    display: flex;
    flex-direction: column;
    gap: 1rem;
    align-items: flex-start;
}
@media (min-width: 720px) {
    body.theme-caleb-cudlc .apply-cta--quiet .apply-cta__inner {
        flex-direction: row;
        align-items: center;
        justify-content: space-between;
        gap: 2rem;
    }
}

body.theme-caleb-cudlc .apply-cta--quiet .apply-cta__copy {
    flex: 1;
    min-width: 0;
}
body.theme-caleb-cudlc .apply-cta--quiet .apply-cta__eyebrow {
    font-family: var(--font-sans);
    font-size: 11px;
    font-weight: 700;
    letter-spacing: 0.10em;
    text-transform: uppercase;
    color: var(--gold-deep, #876A11);
    margin-bottom: 6px;
}
body.theme-caleb-cudlc .apply-cta--quiet .apply-cta__title {
    font-family: var(--font-serif);
    font-weight: 500;
    font-size: clamp(1.25rem, 2vw, 1.5rem);
    line-height: 1.2;
    color: var(--navy, #003087);
    margin: 0 0 6px;
}
body.theme-caleb-cudlc .apply-cta--quiet .apply-cta__subhead {
    font-family: var(--font-sans);
    font-size: 14px;
    color: var(--ink-soft, #555);
    margin: 0;
    line-height: 1.5;
}

body.theme-caleb-cudlc .apply-cta--quiet .apply-cta__btn {
    flex-shrink: 0;
    display: inline-flex;
    align-items: center;
    gap: 0.5rem;
    padding: 0.625rem 1.25rem;
    font-family: var(--font-sans);
    font-weight: 600;
    font-size: 14px;
    text-decoration: none;
    /* inherits .btn-secondary base styling */
}
body.theme-caleb-cudlc .apply-cta--quiet .apply-cta__btn i,
body.theme-caleb-cudlc .apply-cta--quiet .apply-cta__btn svg {
    width: 16px;
    height: 16px;
    stroke-width: 2;
}

/* ── v1.13.12-additions.css ───────────────────────────────── */
/* =====================================================================
 * CUDLC v1.13.12 — Leadership page desktop spacing tightening
 *
 * Loaded AFTER v1.13.6-additions.css so these rules override those.
 *
 * Problem (per Adesola-Zion's feedback): on desktop /leadership had loose
 * spaces — between sections (leadership-group adds 3rem on top of the
 * shared deep-section margin), inside leader cards (2rem padding around
 * tiny placeholder bios), and between leader cards (1.5rem grid gap).
 *
 * Fix: tighten each of these on desktop only. Mobile preserved.
 * ===================================================================== */

/* -----------------------------------------------------------------
   1. SECTION-TO-SECTION SPACING
   v1.13.6 had .leadership-group { margin-bottom: 3rem }, on top of the
   shared .deep-section margin (now 56px desktop from v1.13.9). Total
   gap between sections was ~104px on desktop. Far too much.

   This zeros .leadership-group's margin and lets .deep-section's margin
   alone govern section separation.
   ----------------------------------------------------------------- */
body.theme-caleb-cudlc .leadership-group {
    margin-bottom: 0;
}

/* -----------------------------------------------------------------
   2. SECTION HEADING TO GRID GAP
   v1.13.6 had .leader-grid { margin-top: 1.75rem } — 28px between the
   section heading and the cards. Tighten on desktop to 20px (1.25rem).
   Mobile keeps a comfortable 1.5rem.
   ----------------------------------------------------------------- */
body.theme-caleb-cudlc .leader-grid {
    margin-top: 1.5rem;
}
@media (min-width: 720px) {
    body.theme-caleb-cudlc .leader-grid {
        margin-top: 1.25rem;
    }
}

/* -----------------------------------------------------------------
   3. CARD-TO-CARD GAP IN GRID
   v1.13.6 had gap: 1.5rem (24px). Reduce to 1.125rem (18px) on
   desktop for a denser, more deliberate grid. Mobile unchanged.
   ----------------------------------------------------------------- */
@media (min-width: 720px) {
    body.theme-caleb-cudlc .leader-grid {
        gap: 1.125rem;
    }
}

/* -----------------------------------------------------------------
   4. CARD INTERNAL PADDING
   v1.13.6 had padding: 2rem 1.5rem 1.75rem (32px top, 24px sides,
   28px bottom). With the typical card content (round photo, name,
   role, optional short bio, "Read profile →"), the cards have far
   too much vertical air, especially when bio is missing.

   Tighten to 1.5rem 1.25rem 1.25rem (24/20/20) on desktop. Mobile
   keeps slightly more breathing room.
   ----------------------------------------------------------------- */
body.theme-caleb-cudlc .leader-card {
    padding: 1.5rem 1.25rem 1.25rem;
}

/* -----------------------------------------------------------------
   5. LEADER CARD PHOTO SIZE
   v1.13.6 had 130x130px circles. With more cards now on the page
   (going from 5 leaders to 11 with v1.13.12 data adds), tighter
   photos let more cards fit per row without sprawling. Reduce
   default to 110px; preserve 130px for featured cards.
   ----------------------------------------------------------------- */
body.theme-caleb-cudlc .leader-card__photo {
    width: 110px;
    height: 110px;
    margin-bottom: 1rem;
}
body.theme-caleb-cudlc .leader-card--featured .leader-card__photo {
    width: 130px;
    height: 130px;
}

/* -----------------------------------------------------------------
   6. PLACEHOLDER BIO LINE-HEIGHT
   "Profile being prepared." renders in italic. v1.13.6 inherited
   the standard bio's .leader-card__bio line-height. Tighten to
   1.4 (instead of 1.55) since these are just one short italic line.
   ----------------------------------------------------------------- */
body.theme-caleb-cudlc .leader-card__bio--placeholder {
    line-height: 1.4;
    margin-top: 0.5rem;
    margin-bottom: 0.625rem;
}

/* -----------------------------------------------------------------
   7. INTRO QUOTE SECTION
   v1.13.6's .leadership-quote was a tall feature block with generous
   padding. On desktop, when the quote is short or absent, the section
   feels like wasted vertical real estate. Tighten its bottom margin so
   the first leadership-group sits closer to it.
   ----------------------------------------------------------------- */
@media (min-width: 720px) {
    body.theme-caleb-cudlc .leadership-quote {
        margin-bottom: 2rem;  /* was inheriting .deep-section's 3.5rem */
    }
}

/* -----------------------------------------------------------------
   8. LEADER-GRID--SINGLE (Director's section)
   Director category renders a single centered card. v1.13.6 wrapped
   it in a 280-380px column. Tighten the card's photo to feel less
   isolated when no bio data is present.
   ----------------------------------------------------------------- */
body.theme-caleb-cudlc .leader-grid--single {
    grid-template-columns: minmax(280px, 420px);  /* slightly wider for featured */
}

/* -----------------------------------------------------------------
   9. CARD NAME + ROLE TIGHTER STACK
   v1.13.6 had .leader-card__name with margin-bottom: 0.5rem and
   .leader-card__role with margin-bottom: 1rem. With placeholder
   bios this stack feels stretched. Tighten role bottom margin.
   ----------------------------------------------------------------- */
body.theme-caleb-cudlc .leader-card__role {
    margin-bottom: 0.625rem;
}

/* -----------------------------------------------------------------
   10. EMAIL ROW ON CARDS (v1.13.12 — new, since data now has emails)
   The cards don't currently render email addresses. We're not adding
   that to the controller in this slice (we'd have to touch the markup)
   — v1.13.6's card markup is preserved. Email is already collected,
   just shown only on the detail page (/leadership/{slug}).

   If you want emails ON the cards, that's a future v1.13.13 slice
   that touches the controller markup.
   ----------------------------------------------------------------- */

/* ── v1.13.13-additions.css ───────────────────────────────── */
/* =====================================================================
 * CUDLC v1.13.13 — Background watermark + further spacing tightening
 *
 * Two parts:
 *   A. Subtle background watermark + slow gradient drift on editorial pages
 *      (admissions, fees, programmes/{slug}, faculty, leadership, policies)
 *   B. Further leadership spacing tightening on top of v1.13.12
 *
 * All animations honor prefers-reduced-motion.
 * Anchored to existing .deep-wrap--{slug} modifier classes — no layout
 * file changes needed.
 * ===================================================================== */


/* ---------------------------------------------------------------------
 * PART A — BACKGROUND WATERMARK + SLOW GRADIENT DRIFT
 * ---------------------------------------------------------------------
 * The visual goal: a faint "Caleb University" wordmark in serif sits behind
 * the content on key editorial pages. The cream background underneath
 * shifts very slowly through warm tones (90s cycle, imperceptible
 * unless watching for it).
 *
 * Implementation: each .deep-wrap--{slug} gets two pseudo-elements:
 *   - ::before — the watermark text (stationary)
 *   - ::after  — the gradient overlay (animated)
 * Both are positioned absolutely, behind page content (z-index: -1 on
 * pseudo, with .deep-wrap getting position: relative).
 *
 * Why pseudo-elements instead of a real DOM element: keeps the markup
 * unchanged. No controller edits needed.
 * --------------------------------------------------------------------- */

/* Anchor: every editorial wrap gets relative positioning so pseudos can
   sit behind. Be specific so we don't accidentally trigger on other
   .deep-wrap variants we don't want this on (e.g. /contact). */
body.theme-caleb-cudlc .deep-wrap--leadership,
body.theme-caleb-cudlc .deep-wrap--admissions,
body.theme-caleb-cudlc .deep-wrap--fees,
body.theme-caleb-cudlc .deep-wrap--policies,
body.theme-caleb-cudlc .deep-wrap--faculty,
body.theme-caleb-cudlc .deep-wrap--programme,
body.theme-caleb-cudlc .deep-wrap--programmes-list {
    position: relative;
    /* Ensure content sits above the pseudo-elements */
    isolation: isolate;
}

/* The watermark — large serif text, very faint, stationary.
   Single anchor word "Caleb" + smaller "University" stacked. */
body.theme-caleb-cudlc .deep-wrap--leadership::before,
body.theme-caleb-cudlc .deep-wrap--admissions::before,
body.theme-caleb-cudlc .deep-wrap--fees::before,
body.theme-caleb-cudlc .deep-wrap--policies::before,
body.theme-caleb-cudlc .deep-wrap--faculty::before,
body.theme-caleb-cudlc .deep-wrap--programme::before,
body.theme-caleb-cudlc .deep-wrap--programmes-list::before {
    content: "Caleb";
    position: absolute;
    top: 8%;
    right: -2%;
    font-family: var(--font-serif, 'Cormorant Garamond', Georgia, serif);
    font-size: clamp(120px, 18vw, 280px);
    font-weight: 500;
    line-height: 0.9;
    color: var(--gold-deep, #876A11);
    opacity: 0.045;
    pointer-events: none;
    z-index: -1;
    user-select: none;
    letter-spacing: -0.02em;
    /* Fade in only after the user has scrolled past the banner —
       prevents the watermark from competing with the page-banner */
    animation: cudlc-watermark-fade 0.8s ease 0.4s both;
}

@keyframes cudlc-watermark-fade {
    from { opacity: 0; }
    to   { opacity: 0.045; }
}

/* The gradient overlay — covers the wrap, very subtle warm tone shift.
   Animated via background-position which is GPU-cheap when the gradient
   is already painted. 90-second loop, alternating direction. */
body.theme-caleb-cudlc .deep-wrap--leadership::after,
body.theme-caleb-cudlc .deep-wrap--admissions::after,
body.theme-caleb-cudlc .deep-wrap--fees::after,
body.theme-caleb-cudlc .deep-wrap--policies::after,
body.theme-caleb-cudlc .deep-wrap--faculty::after,
body.theme-caleb-cudlc .deep-wrap--programme::after,
body.theme-caleb-cudlc .deep-wrap--programmes-list::after {
    content: "";
    position: absolute;
    top: 0;
    left: 0;
    right: 0;
    bottom: 0;
    background:
        radial-gradient(ellipse at 20% 15%, rgba(200, 150, 12, 0.025) 0%, transparent 45%),
        radial-gradient(ellipse at 80% 80%, rgba(0, 48, 135, 0.020) 0%, transparent 50%),
        radial-gradient(ellipse at 50% 50%, rgba(250, 246, 235, 0.0) 0%, transparent 100%);
    background-size: 200% 200%;
    pointer-events: none;
    z-index: -2;
    animation: cudlc-gradient-drift 90s ease-in-out infinite alternate;
}

@keyframes cudlc-gradient-drift {
    0%   { background-position: 0% 0%, 100% 100%, 50% 50%; }
    50%  { background-position: 30% 20%, 70% 80%, 60% 40%; }
    100% { background-position: 60% 40%, 40% 60%, 50% 50%; }
}

/* Mobile: the watermark sits awkwardly on narrow viewports because it
   was sized at 18vw which is too small. Reposition + slightly larger
   relative size on mobile to look intentional, not accidental. */
@media (max-width: 600px) {
    body.theme-caleb-cudlc .deep-wrap--leadership::before,
    body.theme-caleb-cudlc .deep-wrap--admissions::before,
    body.theme-caleb-cudlc .deep-wrap--fees::before,
    body.theme-caleb-cudlc .deep-wrap--policies::before,
    body.theme-caleb-cudlc .deep-wrap--faculty::before,
    body.theme-caleb-cudlc .deep-wrap--programme::before,
    body.theme-caleb-cudlc .deep-wrap--programmes-list::before {
        top: 4%;
        right: -8%;
        font-size: clamp(140px, 38vw, 200px);
        opacity: 0.035;  /* slightly lower since closer to content */
    }
}

/* Reduced motion: stop the animation. Keep the watermark visible (it's
   stationary anyway and adds no motion). */
@media (prefers-reduced-motion: reduce) {
    body.theme-caleb-cudlc .deep-wrap--leadership::after,
    body.theme-caleb-cudlc .deep-wrap--admissions::after,
    body.theme-caleb-cudlc .deep-wrap--fees::after,
    body.theme-caleb-cudlc .deep-wrap--policies::after,
    body.theme-caleb-cudlc .deep-wrap--faculty::after,
    body.theme-caleb-cudlc .deep-wrap--programme::after,
    body.theme-caleb-cudlc .deep-wrap--programmes-list::after {
        animation: none;
    }
    body.theme-caleb-cudlc .deep-wrap--leadership::before,
    body.theme-caleb-cudlc .deep-wrap--admissions::before,
    body.theme-caleb-cudlc .deep-wrap--fees::before,
    body.theme-caleb-cudlc .deep-wrap--policies::before,
    body.theme-caleb-cudlc .deep-wrap--faculty::before,
    body.theme-caleb-cudlc .deep-wrap--programme::before,
    body.theme-caleb-cudlc .deep-wrap--programmes-list::before {
        animation: none;
        opacity: 0.045;
    }
}


/* ---------------------------------------------------------------------
 * PART B — FURTHER /leadership SPACING TIGHTENING (on top of v1.13.12)
 * --------------------------------------------------------------------- */

/* Section-mark to H2: v1.13.6 had .section-mark { margin-bottom: 1rem }
   plus .deep-section__title margin-top: defaults. Compress. */
body.theme-caleb-cudlc .deep-wrap--leadership .section-mark {
    margin-bottom: 0.5rem;
}
body.theme-caleb-cudlc .deep-wrap--leadership .deep-section__title {
    margin-top: 0;
    margin-bottom: 0.25rem;
}

/* Leader card name/role/bio stack tightening */
body.theme-caleb-cudlc .leader-card__name {
    margin-bottom: 0.25rem;  /* was 0.5rem */
}
body.theme-caleb-cudlc .leader-card__role {
    margin-bottom: 0.5rem;  /* further from v1.13.12's 0.625rem */
}
body.theme-caleb-cudlc .leader-card__bio {
    margin-top: 0.25rem;
    margin-bottom: 0.75rem;
}

/* Card "Read profile →" — move closer to bio */
body.theme-caleb-cudlc .leader-card__more {
    margin-top: 0.25rem;
}

/* Photo-to-name: tighten on desktop (v1.13.12 set photo margin-bottom to
   1rem; reduce further to 0.75rem for denser composition) */
@media (min-width: 720px) {
    body.theme-caleb-cudlc .leader-card__photo {
        margin-bottom: 0.75rem;
    }
}

/* Apply-CTA at bottom: v1.13.6 likely had its own padding. Tighten it
   so the page doesn't end on huge dead space. */
body.theme-caleb-cudlc .deep-wrap--leadership .apply-cta {
    padding: 1.5rem 1.75rem;
    margin-top: 1.5rem;
}
@media (min-width: 720px) {
    body.theme-caleb-cudlc .deep-wrap--leadership .apply-cta {
        padding: 2rem 2.25rem;
    }
}

/* Leadership-quote (intro pull-quote) tighter on desktop, since the new
   data-rich page has plenty of content and doesn't need the quote
   to hold attention as long. */
@media (min-width: 720px) {
    body.theme-caleb-cudlc .deep-wrap--leadership .leadership-quote {
        margin-bottom: 1.5rem;
        padding: 1.5rem 2rem;
    }
    body.theme-caleb-cudlc .deep-wrap--leadership .leadership-quote__text {
        font-size: 1.5rem;  /* down from larger if it was bigger */
    }
}

/* First leadership-group sits closer to the quote / breadcrumb */
body.theme-caleb-cudlc .deep-wrap--leadership .leadership-group:first-of-type {
    margin-top: 0;
}

/* Breadcrumb to first content section: tighten */
body.theme-caleb-cudlc .deep-wrap--leadership .breadcrumb {
    margin-bottom: 1rem;
}

/* ── v1.13.14-additions.css ───────────────────────────────── */
/* =====================================================================
 * CUDLC v1.13.13 — Background watermark + further spacing tightening
 *
 * Two parts:
 *   A. Subtle background watermark + slow gradient drift on editorial pages
 *      (admissions, fees, programmes/{slug}, faculty, leadership, policies)
 *   B. Further leadership spacing tightening on top of v1.13.12
 *
 * All animations honor prefers-reduced-motion.
 * Anchored to existing .deep-wrap--{slug} modifier classes — no layout
 * file changes needed.
 * ===================================================================== */


/* ---------------------------------------------------------------------
 * PART A — BACKGROUND WATERMARK + SLOW GRADIENT DRIFT
 * ---------------------------------------------------------------------
 * The visual goal: a faint "Caleb University" wordmark in serif sits behind
 * the content on key editorial pages. The cream background underneath
 * shifts very slowly through warm tones (90s cycle, imperceptible
 * unless watching for it).
 *
 * Implementation: each .deep-wrap--{slug} gets two pseudo-elements:
 *   - ::before — the watermark text (stationary)
 *   - ::after  — the gradient overlay (animated)
 * Both are positioned absolutely, behind page content (z-index: -1 on
 * pseudo, with .deep-wrap getting position: relative).
 *
 * Why pseudo-elements instead of a real DOM element: keeps the markup
 * unchanged. No controller edits needed.
 * --------------------------------------------------------------------- */

/* Anchor: every editorial wrap gets relative positioning so pseudos can
   sit behind. Be specific so we don't accidentally trigger on other
   .deep-wrap variants we don't want this on (e.g. /contact). */
body.theme-caleb-cudlc .deep-wrap--leadership,
body.theme-caleb-cudlc .deep-wrap--admissions,
body.theme-caleb-cudlc .deep-wrap--fees,
body.theme-caleb-cudlc .deep-wrap--policies,
body.theme-caleb-cudlc .deep-wrap--faculty,
body.theme-caleb-cudlc .deep-wrap--programme,
body.theme-caleb-cudlc .deep-wrap--programmes-list {
    position: relative;
    /* Ensure content sits above the pseudo-elements */
    isolation: isolate;
}

/* The watermark — large serif text, very faint.
   v1.13.14: now drifts horizontally over 120 seconds (alternating direction),
   travelling ~15% of viewport width. Slow enough to be ambient, not
   distracting. Honors prefers-reduced-motion (drift stops). */
body.theme-caleb-cudlc .deep-wrap--leadership::before,
body.theme-caleb-cudlc .deep-wrap--admissions::before,
body.theme-caleb-cudlc .deep-wrap--fees::before,
body.theme-caleb-cudlc .deep-wrap--policies::before,
body.theme-caleb-cudlc .deep-wrap--faculty::before,
body.theme-caleb-cudlc .deep-wrap--programme::before,
body.theme-caleb-cudlc .deep-wrap--programmes-list::before {
    content: "Caleb";
    position: absolute;
    top: 8%;
    right: -2%;
    font-family: var(--font-serif, 'Cormorant Garamond', Georgia, serif);
    font-size: clamp(120px, 18vw, 280px);
    font-weight: 500;
    line-height: 0.9;
    color: var(--gold-deep, #876A11);
    opacity: 0;  /* fade-in handled by animation below */
    pointer-events: none;
    z-index: -1;
    user-select: none;
    letter-spacing: -0.02em;
    will-change: transform, opacity;
    /* Two animations:
       1. cudlc-watermark-fade — opacity 0 -> 0.045 over 0.8s on load (delayed 0.4s)
       2. cudlc-watermark-drift — horizontal -7.5% to +7.5% (~15% total range)
          over 120 seconds, alternating direction, infinite. */
    animation:
        cudlc-watermark-fade 0.8s ease 0.4s forwards,
        cudlc-watermark-drift 120s ease-in-out 1.2s infinite alternate;
}

@keyframes cudlc-watermark-fade {
    from { opacity: 0; }
    to   { opacity: 0.045; }
}

@keyframes cudlc-watermark-drift {
    from { transform: translateX(-7.5vw); }
    to   { transform: translateX( 7.5vw); }
}

/* The gradient overlay — covers the wrap, very subtle warm tone shift.
   Animated via background-position which is GPU-cheap when the gradient
   is already painted. 90-second loop, alternating direction. */
body.theme-caleb-cudlc .deep-wrap--leadership::after,
body.theme-caleb-cudlc .deep-wrap--admissions::after,
body.theme-caleb-cudlc .deep-wrap--fees::after,
body.theme-caleb-cudlc .deep-wrap--policies::after,
body.theme-caleb-cudlc .deep-wrap--faculty::after,
body.theme-caleb-cudlc .deep-wrap--programme::after,
body.theme-caleb-cudlc .deep-wrap--programmes-list::after {
    content: "";
    position: absolute;
    top: 0;
    left: 0;
    right: 0;
    bottom: 0;
    background:
        radial-gradient(ellipse at 20% 15%, rgba(200, 150, 12, 0.025) 0%, transparent 45%),
        radial-gradient(ellipse at 80% 80%, rgba(0, 48, 135, 0.020) 0%, transparent 50%),
        radial-gradient(ellipse at 50% 50%, rgba(250, 246, 235, 0.0) 0%, transparent 100%);
    background-size: 200% 200%;
    pointer-events: none;
    z-index: -2;
    animation: cudlc-gradient-drift 90s ease-in-out infinite alternate;
}

@keyframes cudlc-gradient-drift {
    0%   { background-position: 0% 0%, 100% 100%, 50% 50%; }
    50%  { background-position: 30% 20%, 70% 80%, 60% 40%; }
    100% { background-position: 60% 40%, 40% 60%, 50% 50%; }
}

/* Mobile: the watermark sits awkwardly on narrow viewports because it
   was sized at 18vw which is too small. Reposition + slightly larger
   relative size on mobile to look intentional, not accidental. */
@media (max-width: 600px) {
    body.theme-caleb-cudlc .deep-wrap--leadership::before,
    body.theme-caleb-cudlc .deep-wrap--admissions::before,
    body.theme-caleb-cudlc .deep-wrap--fees::before,
    body.theme-caleb-cudlc .deep-wrap--policies::before,
    body.theme-caleb-cudlc .deep-wrap--faculty::before,
    body.theme-caleb-cudlc .deep-wrap--programme::before,
    body.theme-caleb-cudlc .deep-wrap--programmes-list::before {
        top: 4%;
        right: -8%;
        font-size: clamp(140px, 38vw, 200px);
        opacity: 0.035;  /* slightly lower since closer to content */
    }
}

/* Reduced motion: stop ALL watermark animations (fade-in + drift) and
   the gradient. The watermark stays visible at final opacity. */
@media (prefers-reduced-motion: reduce) {
    body.theme-caleb-cudlc .deep-wrap--leadership::after,
    body.theme-caleb-cudlc .deep-wrap--admissions::after,
    body.theme-caleb-cudlc .deep-wrap--fees::after,
    body.theme-caleb-cudlc .deep-wrap--policies::after,
    body.theme-caleb-cudlc .deep-wrap--faculty::after,
    body.theme-caleb-cudlc .deep-wrap--programme::after,
    body.theme-caleb-cudlc .deep-wrap--programmes-list::after {
        animation: none;
    }
    body.theme-caleb-cudlc .deep-wrap--leadership::before,
    body.theme-caleb-cudlc .deep-wrap--admissions::before,
    body.theme-caleb-cudlc .deep-wrap--fees::before,
    body.theme-caleb-cudlc .deep-wrap--policies::before,
    body.theme-caleb-cudlc .deep-wrap--faculty::before,
    body.theme-caleb-cudlc .deep-wrap--programme::before,
    body.theme-caleb-cudlc .deep-wrap--programmes-list::before {
        animation: none;
        opacity: 0.045;
        transform: none;
    }
}


/* ---------------------------------------------------------------------
 * PART B — FURTHER /leadership SPACING TIGHTENING (on top of v1.13.12)
 * --------------------------------------------------------------------- */

/* Section-mark to H2: v1.13.6 had .section-mark { margin-bottom: 1rem }
   plus .deep-section__title margin-top: defaults. Compress. */
body.theme-caleb-cudlc .deep-wrap--leadership .section-mark {
    margin-bottom: 0.5rem;
}
body.theme-caleb-cudlc .deep-wrap--leadership .deep-section__title {
    margin-top: 0;
    margin-bottom: 0.25rem;
}

/* Leader card name/role/bio stack tightening */
body.theme-caleb-cudlc .leader-card__name {
    margin-bottom: 0.25rem;  /* was 0.5rem */
}
body.theme-caleb-cudlc .leader-card__role {
    margin-bottom: 0.5rem;  /* further from v1.13.12's 0.625rem */
}
body.theme-caleb-cudlc .leader-card__bio {
    margin-top: 0.25rem;
    margin-bottom: 0.75rem;
}

/* Card "Read profile →" — move closer to bio */
body.theme-caleb-cudlc .leader-card__more {
    margin-top: 0.25rem;
}

/* Photo-to-name: tighten on desktop (v1.13.12 set photo margin-bottom to
   1rem; reduce further to 0.75rem for denser composition) */
@media (min-width: 720px) {
    body.theme-caleb-cudlc .leader-card__photo {
        margin-bottom: 0.75rem;
    }
}

/* Apply-CTA at bottom: v1.13.6 likely had its own padding. Tighten it
   so the page doesn't end on huge dead space. */
body.theme-caleb-cudlc .deep-wrap--leadership .apply-cta {
    padding: 1.5rem 1.75rem;
    margin-top: 1.5rem;
}
@media (min-width: 720px) {
    body.theme-caleb-cudlc .deep-wrap--leadership .apply-cta {
        padding: 2rem 2.25rem;
    }
}

/* Leadership-quote (intro pull-quote) tighter on desktop, since the new
   data-rich page has plenty of content and doesn't need the quote
   to hold attention as long. */
@media (min-width: 720px) {
    body.theme-caleb-cudlc .deep-wrap--leadership .leadership-quote {
        margin-bottom: 1.5rem;
        padding: 1.5rem 2rem;
    }
    body.theme-caleb-cudlc .deep-wrap--leadership .leadership-quote__text {
        font-size: 1.5rem;  /* down from larger if it was bigger */
    }
}

/* First leadership-group sits closer to the quote / breadcrumb */
body.theme-caleb-cudlc .deep-wrap--leadership .leadership-group:first-of-type {
    margin-top: 0;
}

/* Breadcrumb to first content section: tighten */
body.theme-caleb-cudlc .deep-wrap--leadership .breadcrumb {
    margin-bottom: 1rem;
}


/* =====================================================================
 * v1.13.14 — TEXT VISIBILITY BRIGHTENING (PUBLIC SITE)
 *
 * Audit of base theme.css revealed 24 uses of var(--ink-soft) (#4A463F).
 * Of those, 9 are content text where readability matters more than the
 * deliberate hierarchy quietness those uses serve. Brighten those 9.
 * The other 15 (eyebrows, breadcrumbs, captions, metadata, small print)
 * are intentionally quiet and should stay that way.
 *
 * Strategy: override color from --ink-soft to --ink (#1F1B16) on the
 * 9 content selectors. Specificity: matches base theme rule's specificity
 * since both are "body.theme-caleb-cudlc .selector". CSS file load order
 * (v1.13.14 loads after theme.css) makes our override win.
 * ===================================================================== */

/* 1. PAGE BANNER SUBHEADS — the explicit ask
   Affects every page-banner subhead site-wide:
   /admissions, /fees, /leadership, /faculty, /programmes/{slug},
   /policies, /contact, /calendar, /about/vice-chancellor, etc.
   Specifically: "Vice-Chancellor, Caleb University, Lagos" and similar. */
body.theme-caleb-cudlc .page-banner p {
    color: var(--ink);
}

/* 2. FAQ ANSWERS — readability is essential for FAQ */
body.theme-caleb-cudlc .faq-item .faq-a {
    color: var(--ink);
}

/* 3. NEWS EXCERPTS — preview text on news cards */
body.theme-caleb-cudlc .news-excerpt {
    color: var(--ink);
}

/* 4. EDITORIAL COLUMN BODY — main body text in editorial columns
   on the homepage. The column header is the primary attention pull;
   the body is what users actually read. */
body.theme-caleb-cudlc .editorial-column__body {
    color: var(--ink);
}

/* 5. DIRECTOR BODY — Director's bio body in homepage Voices section */
body.theme-caleb-cudlc .director-body {
    color: var(--ink);
}

/* 6. PERSON BIO — bio text on leadership detail pages */
body.theme-caleb-cudlc .person-bio {
    color: var(--ink);
}

/* 7. STAFF QUALS — qualifications listing on staff cards */
body.theme-caleb-cudlc .staff-card__quals {
    color: var(--ink);
}

/* 8. CTA BANNER SUBTEXT — the descriptive line under a CTA heading */
body.theme-caleb-cudlc .cta-banner .cta-sub {
    color: var(--ink);
}

/* 9. ARTICLE PROSE BLOCKQUOTES — pull-quotes inside article bodies */
body.theme-caleb-cudlc .article-prose blockquote {
    color: var(--ink);
}

/* DELIBERATELY NOT BRIGHTENED (kept as --ink-soft):
   - .eyebrow (small uppercase tracking-out labels — design accents)
   - .section-mark__label (section accents)
   - .breadcrumb / .breadcrumb a (intentionally quiet navigation)
   - .article-meta (article date/byline, metadata)
   - .voices-attrib-title / .voices-caption (small attribution)
   - .testimonial__attrib (testimonial attribution)
   - .vc-profile__facts dt (definition list label)
   - .programmes-meta / .prog-card__deck / .prog-card__meta (metadata)
   - .staff-tag (small tags)
   - .staff-form__field small (form field hints)
   - .mob-group-body a (mobile nav inner links)
   These uses are deliberate hierarchy choices and should stay quiet. */


/* =====================================================================
 * v1.13.14 — ADMIN DASHBOARD "OPEN ADMISSIONS" BUTTON FIX
 *
 * Bug: in dark mode, .quick-btn--primary uses color: var(--paper) but
 * --paper has been redefined to #0B1A38 (dark navy) in dark mode, almost
 * identical to the button's background color (--navy-deep #001E54).
 * Result: invisible label until hover state changes the background.
 *
 * Fix: hardcode the cream color on .quick-btn--primary so it survives
 * dark mode's token-flip. Same approach for hover state.
 *
 * Note: this CSS loads on every page (admin and public). The selector
 * is admin-specific (.quick-btn) so no public-side impact. The base
 * styling for .quick-btn--primary lives in DashboardController.php's
 * inline <style>; this rule overrides the color property only.
 * ===================================================================== */
.quick-btn--primary {
    color: #FAF6EB !important;
}
.quick-btn--primary:hover {
    color: #FAF6EB !important;
}

/* Defensive: ensure the navy-on-cream contrast is preserved in any
   theme. If a future admin theme overrides --paper to a dark value,
   this hardcoded value still keeps the label visible. The !important
   is intentional — it locks the button label visibility regardless of
   theme variable redefinition. */

/* ── v1.13.15-additions.css ───────────────────────────────── */
/* =====================================================================
 * CUDLC v1.13.15 — VC banner subhead fix + Footer collapsibles
 *
 * Two parts:
 *   A. Fix /about/vice-chancellor banner subhead text color
 *      (v1.13.14 made it WORSE on this dark banner — making it correct
 *       on every other LIGHT banner. This adds a more-specific override.)
 *   B. Footer link columns collapsible on mobile (max-width: 720px)
 *      with first column open by default.
 * ===================================================================== */


/* ---------------------------------------------------------------------
 * PART A — VC BANNER TEXT FIX
 *
 * Bug: v1.13.14's rule "body.theme-caleb-cudlc .page-banner p { color: var(--ink); }"
 * applied near-black text to /about/vice-chancellor's <p>, but that page's
 * banner has a NAVY GRADIENT background (.page-banner--vc), making the
 * subhead "Vice-Chancellor, Caleb University, Lagos" invisible.
 *
 * Fix: more-specific override using #FFF (white) for the VC banner
 * subhead. Higher specificity (--vc modifier class) means this wins
 * over the general .page-banner p rule.
 *
 * The H1 in this banner already uses #FFF (set in base theme.css at the
 * .page-banner--vc h1 rule), so this completes the white-on-navy treatment
 * across the whole VC banner.
 * --------------------------------------------------------------------- */
body.theme-caleb-cudlc .page-banner--vc p {
    color: #FFF;
}

/* Defensive: also brighten the eyebrow on the VC banner if one is shown.
   v1.13.14 didn't touch eyebrows (deliberately quiet on light banners),
   but on the dark VC banner the eyebrow needs to be light too. */
body.theme-caleb-cudlc .page-banner--vc .page-banner__eyebrow {
    color: var(--gold-light, #E6B23C);
}


/* ---------------------------------------------------------------------
 * PART B — FOOTER COLLAPSIBLES (MOBILE ACCORDION)
 *
 * Markup contract (set by admin/layouts/public.php):
 *   <div class="footer-col footer-col--collapsible" data-default-open="1?">
 *       <button class="footer-col__title footer-col__toggle" aria-expanded="..." aria-controls="...">
 *           [title text]
 *           <svg class="footer-col__chevron">...</svg>
 *       </button>
 *       <ul id="..." class="footer-col__list">
 *           <li>...</li>
 *       </ul>
 *   </div>
 *
 * Desktop (>720px): everything always visible, toggle button renders as
 * static heading (cursor: default, no chevron).
 * Mobile (<=720px): list collapses, chevron rotates on open, click toggles.
 *
 * The .is-open class is added/removed by footer-collapsible.js based on
 * the data-default-open attribute and user clicks.
 * --------------------------------------------------------------------- */

/* Reset the button's default browser styling so it looks like a heading.
   Specificity matches existing .footer-col__title rule from theme.css line 1468. */
body.theme-caleb-cudlc .footer-col__toggle {
    background: transparent;
    border: 0;
    padding: 0;
    margin: 0;
    width: 100%;
    text-align: left;
    cursor: default;
    font: inherit;
    /* Inherit font from existing .footer-col__title rule */
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 0.75rem;
    /* Critical: keep the existing footer-col__title look on desktop */
    font-family: var(--font-sans);
    font-size: 12px;
    font-weight: 700;
    letter-spacing: 0.22em;
    text-transform: uppercase;
    color: var(--gold-light);
    margin: 0 0 1.25rem;  /* matches base .footer-col__title */
}

/* Desktop: chevron hidden, toggle behaves as static heading */
body.theme-caleb-cudlc .footer-col__chevron {
    display: none;
    flex-shrink: 0;
    transition: transform 0.2s ease;
    color: var(--gold-light);
    opacity: 0.7;
}

/* Desktop: list always visible */
body.theme-caleb-cudlc .footer-col__list {
    list-style: none;
    margin: 0;
    padding: 0;
}
body.theme-caleb-cudlc .footer-col__list li {
    margin-bottom: 0.75rem;
}
body.theme-caleb-cudlc .footer-col__list a {
    color: var(--cream-warm);
    font-size: 15px;
    font-family: var(--font-sans);
    text-decoration: none;
}
body.theme-caleb-cudlc .footer-col__list a:hover {
    color: var(--gold-light);
}

/* Mobile breakpoint: collapsibles activate */
@media (max-width: 720px) {
    /* The button becomes interactive */
    body.theme-caleb-cudlc .footer-col__toggle {
        cursor: pointer;
        margin: 0;
        padding: 1rem 0;
        border-bottom: 1px solid rgba(212, 175, 79, 0.2);
        /* Slightly larger tap target */
        min-height: 48px;
    }

    /* Show the chevron */
    body.theme-caleb-cudlc .footer-col__chevron {
        display: inline-block;
    }

    /* Rotate chevron 180° when section is open */
    body.theme-caleb-cudlc .footer-col--collapsible.is-open .footer-col__chevron {
        transform: rotate(180deg);
    }

    /* List is hidden by default on mobile, shown when .is-open */
    body.theme-caleb-cudlc .footer-col--collapsible .footer-col__list {
        max-height: 0;
        overflow: hidden;
        opacity: 0;
        transition: max-height 0.25s ease, opacity 0.25s ease, padding 0.25s ease;
        padding: 0;
        margin: 0;
    }
    body.theme-caleb-cudlc .footer-col--collapsible.is-open .footer-col__list {
        /* max-height generous enough for any reasonable nav list */
        max-height: 500px;
        opacity: 1;
        padding: 0.75rem 0 1rem;
    }

    /* Stack the columns tighter on mobile (the existing 2rem gap is too much
       for accordion headers that are right next to each other) */
    body.theme-caleb-cudlc .footer-grid {
        gap: 0;  /* override base mobile rule's 2rem */
    }
    body.theme-caleb-cudlc .footer-col--collapsible {
        margin: 0;
    }

    /* Brand block keeps its own margin */
    body.theme-caleb-cudlc .footer-brand {
        margin-bottom: 1.5rem;
    }
}

/* prefers-reduced-motion: disable the open/close animation */
@media (prefers-reduced-motion: reduce) {
    body.theme-caleb-cudlc .footer-col--collapsible .footer-col__list {
        transition: none;
    }
    body.theme-caleb-cudlc .footer-col__chevron {
        transition: none;
    }
}

/* Focus outline for keyboard accessibility */
body.theme-caleb-cudlc .footer-col__toggle:focus-visible {
    outline: 2px solid var(--gold-light);
    outline-offset: 4px;
}
body.theme-caleb-cudlc .footer-col__toggle:focus:not(:focus-visible) {
    outline: none;
}

/* ── v1.13.16-additions.css ───────────────────────────────── */
/* =====================================================================
 * CUDLC v1.13.16 — Open Admissions button gold override
 *
 * Replaces v1.13.14's cream override with gold per editorial preference.
 * Loaded site-wide via public_head action (only when active theme is
 * caleb-cudlc). The selector targets admin elements only (.quick-btn),
 * so this has zero effect on public pages.
 *
 * Why gold (#E6B23C):
 *   - Matches the brand accent treatment used on sidebar group titles
 *     (--nav-group__title color: #E6B23C), footer column titles, eyebrow
 *     labels, and section-mark accents elsewhere
 *   - On navy-deep background gives ~7:1 contrast (WCAG AA exceeded)
 *   - User editorial preference per v1.13.16 conversation
 *
 * The DashboardController.php inline-style block has the same hardcoded
 * gold color at source. This rule provides defensive override in case
 * the inline style fails to load or another rule overrides it.
 * ===================================================================== */

.quick-btn--primary {
    color: #E6B23C !important;
}
.quick-btn--primary:hover {
    color: #E6B23C !important;
}

/* ── v1.13.17-additions.css ───────────────────────────────── */
/* =====================================================================
 * CUDLC v1.13.17 — Hero mobile bg_position + button :active fix
 *
 * Two parts:
 *   A. Hero mobile background-position smart default
 *   B. Defensive override on .quick-btn--primary for :active state
 *      (belt-and-braces; the inline-style fix in DashboardController.php
 *       is the primary repair, this just provides a public-CSS layer too)
 * ===================================================================== */


/* ---------------------------------------------------------------------
 * PART A — HERO MOBILE BACKGROUND POSITION
 *
 * The HomeController now writes background-position per slide based on
 * each slide's bg_position field. That works on desktop. On mobile, tall
 * narrow viewports crop landscape photos severely, so we shift the
 * default focal point lower to give human subjects more vertical space.
 *
 * For slides where admin has explicitly set 'top', 'bottom', 'left',
 * 'right' — we respect that on mobile too via the inline CSS variable
 * --hero-bg-pos. The mobile override below ONLY applies when the slide's
 * data-bg-position attribute is "center" (the default), since that's
 * the case where admin hasn't expressed a preference.
 * --------------------------------------------------------------------- */

@media (max-width: 760px) {
    /* Smart default: if admin chose "center" (or didn't set it), shift
       the focus point lower on mobile (40% vs 30% desktop). This pulls
       the subject into the upper-middle of the cropped frame, reserving
       the bottom 60% for the dark overlay + text content area. */
    body.theme-caleb-cudlc .hero-bg[data-bg-position="center"] .hero-bg__layer {
        background-position: center 40% !important;
    }

    /* For slides where admin has chosen a non-default focus point,
       we keep their inline style as authoritative. The !important on the
       center override above won't fight non-center positions because the
       attribute selector won't match. */
}


/* ---------------------------------------------------------------------
 * PART B — BUTTON :ACTIVE STATE DEFENSIVE OVERRIDE
 *
 * Bug: the global "a { color: var(--navy) }" rule in admin/layouts/admin.php
 * (line 99) was winning during :active and :focus states because the
 * .quick-btn--primary rule had no explicit handler for those states.
 *
 * Primary fix is in DashboardController.php (inline <style> block now has
 * explicit :active, :focus, :visited rules locking gold). This public CSS
 * file provides a defensive belt-and-braces override in case the inline
 * <style> ever fails to load (e.g., browser caching of stripped HTML).
 *
 * Selectors target admin-specific .quick-btn classes so this has zero
 * effect on public pages.
 * --------------------------------------------------------------------- */
.quick-btn--primary:active,
.quick-btn--primary:focus,
.quick-btn--primary:visited {
    color: #E6B23C !important;
}

/* Focus outline for keyboard users — gold, contrast-friendly */
.quick-btn--primary:focus-visible {
    outline: 2px solid #E6B23C !important;
    outline-offset: 2px !important;
}

/* ── v1.13.18-additions.css ───────────────────────────────── */
/* =====================================================================
 * CUDLC v1.13.18 — Mobile-specific hero background image
 *
 * Markup contract (v1.13.18 HomeController):
 *   <div class="hero-bg" data-has-mobile="0|1">
 *       <div class="hero-bg__layer hero-bg__layer--desktop is-active" style="..."></div>
 *       <div class="hero-bg__layer hero-bg__layer--desktop" style="..."></div>
 *       ... (more desktop layers from gallery)
 *       <div class="hero-bg__layer hero-bg__layer--mobile is-active" style="..."></div>  [if bg_image_mobile set]
 *   </div>
 *
 * Behaviour:
 *   - Desktop (>760px): only --desktop layers visible, crossfade as usual
 *   - Mobile (≤760px): if --mobile layer exists, only it is visible
 *     (single image, no crossfade); --desktop layers hidden
 *   - Mobile without bg_image_mobile (data-has-mobile="0"): mobile uses
 *     the existing --desktop layers, retaining v1.13.17 behaviour
 *     (smart 'center 40%' default position via v1.13.17-additions.css)
 * ===================================================================== */


/* Default state: mobile layer is hidden (we're on desktop until media query
   says otherwise). */
body.theme-caleb-cudlc .hero-bg__layer--mobile {
    display: none;
}


/* Mobile breakpoint */
@media (max-width: 760px) {
    /* When admin has uploaded a mobile-specific image (data-has-mobile="1"),
       hide the desktop layers and show the mobile layer. */
    body.theme-caleb-cudlc .hero-bg[data-has-mobile="1"] .hero-bg__layer--desktop {
        display: none;
    }
    body.theme-caleb-cudlc .hero-bg[data-has-mobile="1"] .hero-bg__layer--mobile {
        display: block;
        /* The mobile layer always uses center positioning since it's already
           cropped to the right aspect ratio by the admin. No need for the
           bg_position machinery. */
        background-position: center center !important;
        /* Keep crossfade transition for visual consistency, even though
           there's only one mobile layer (no crossfade target). The opacity
           starts at 1 because we set is-active in markup. */
    }

    /* When NO mobile image was uploaded (data-has-mobile="0"), do nothing.
       v1.13.17's "center 40%" smart default still applies via the
       existing data-bg-position="center" selector in v1.13.17-additions.css. */
}

/* ── v1.21.4-additions.css ────────────────────────────────── */
/* =====================================================================
   CUDLC v1.21.4 — Programme Builder additions
   ---------------------------------------------------------------------
   Public-side polish for /programmes/{slug}:
     1. Tighten vertical spacing between programme sections (user
        feedback: "entirely-blank cream-coloured screens between
        sections"). Scoped via .deep-wrap--programme so other deep
        pages — leadership, calendar, fees etc. — keep their existing
        spacing.
     2. Style the two new sections introduced by the Programme Builder:
        .programme-admission and .programme-graduation
     3. Polish refinements to the faculty preview cards (subtle lift,
        qualifications line, specialism rendered when present)

   Builds on v1.13.3-additions.css; never overrides theme tokens
   (variables.css). All selectors live under
   `body.theme-caleb-cudlc .deep-wrap--programme` so the file is
   automatically inert on other pages and other themes.
   ===================================================================== */


/* =====================================================================
   1. SPACING TIGHTENING — programme detail only
   ===================================================================== */
body.theme-caleb-cudlc .deep-wrap--programme .deep-section {
    /* Was clamp(2.5rem, 4vw, 3.5rem) ≈ 40-56px desktop.
       Now clamp(1.75rem, 3vw, 2.5rem) ≈ 28-40px desktop —
       still comfortable on mobile (lower bound), tighter on desktop
       where the issue was reported. */
    margin-bottom: clamp(1.75rem, 3vw, 2.5rem);
}

/* Tighten the curriculum accordion, which contributed the most empty
   vertical air because the section header + sub-line + 4 collapsed
   level-cards all had generous internal margins. */
body.theme-caleb-cudlc .deep-wrap--programme .programme-curriculum .deep-section__sub {
    margin-bottom: 1.25rem;     /* was ~2rem */
}
body.theme-caleb-cudlc .deep-wrap--programme .curriculum-levels {
    /* Reduce space between collapsed accordion rows */
    display: flex;
    flex-direction: column;
    gap: 0.5rem;                /* was ~0.875rem default */
}
body.theme-caleb-cudlc .deep-wrap--programme .curriculum-foot {
    margin-top: 1rem;           /* was ~1.5rem */
}

/* Tighten the section title's margin so titles sit closer to their
   sub-line + content. */
body.theme-caleb-cudlc .deep-wrap--programme .deep-section__title {
    margin-bottom: 0.625rem;    /* was 1rem */
}
body.theme-caleb-cudlc .deep-wrap--programme .deep-section__sub {
    margin-bottom: 1.5rem;      /* was ~2rem */
}

/* Section-mark (Roman numeral + rule + label) — slightly reduce the
   space it pushes below itself before the section title. */
body.theme-caleb-cudlc .deep-wrap--programme .section-mark {
    margin-bottom: 0.5rem;
}

/* Programme facts grid — reduce padding (was a contributor of vertical
   air on its own). */
body.theme-caleb-cudlc .deep-wrap--programme .programme-facts {
    padding: 1.25rem 1.5rem;
}

/* About section — reduce the gap between the prose and the metadata
   strip below it. */
body.theme-caleb-cudlc .deep-wrap--programme .programme-about__prose {
    margin-bottom: 1.25rem;
}
body.theme-caleb-cudlc .deep-wrap--programme .programme-about__meta {
    padding-top: 1rem;
}


/* =====================================================================
   2. NEW SECTION — IV. ADMISSION ROUTES
   ===================================================================== */
body.theme-caleb-cudlc .deep-wrap--programme .admission-routes {
    display: grid;
    grid-template-columns: 1fr;
    gap: 1rem;
    margin-top: 1rem;
}
@media (min-width: 720px) {
    body.theme-caleb-cudlc .deep-wrap--programme .admission-routes {
        grid-template-columns: 1fr 1fr;
        gap: 1.25rem;
    }
}

body.theme-caleb-cudlc .deep-wrap--programme .admission-route {
    background: var(--paper-pure);
    border: 1px solid var(--rule-soft);
    border-left: 3px solid var(--gold);
    border-radius: var(--radius-lg);
    padding: 1.25rem 1.5rem;
}

body.theme-caleb-cudlc .deep-wrap--programme .admission-route__label {
    font-family: var(--font-serif);
    font-size: 1.1875rem;
    font-weight: 500;
    line-height: 1.25;
    letter-spacing: -0.005em;
    color: var(--ink-strong);
    margin: 0 0 0.5rem;
}

body.theme-caleb-cudlc .deep-wrap--programme .admission-route__body {
    font-family: var(--font-sans);
    font-size: 0.9375rem;
    line-height: 1.6;
    color: var(--ink-soft);
    margin: 0;
}


/* =====================================================================
   3. NEW SECTION — V. GRADUATION REQUIREMENTS
   ===================================================================== */
body.theme-caleb-cudlc .deep-wrap--programme .graduation-grid {
    display: grid;
    grid-template-columns: 1fr;
    gap: 0.875rem;
    margin-top: 1rem;
}
@media (min-width: 720px) {
    body.theme-caleb-cudlc .deep-wrap--programme .graduation-grid {
        grid-template-columns: repeat(auto-fit, minmax(240px, 1fr));
        gap: 1rem;
    }
}

body.theme-caleb-cudlc .deep-wrap--programme .graduation-card {
    position: relative;
    background: var(--cream);
    border: 1px solid var(--rule-soft);
    border-radius: var(--radius-lg);
    padding: 1.25rem 1.25rem 1rem;
    overflow: hidden;
}

/* The big units headline (e.g. "136 units minimum") */
body.theme-caleb-cudlc .deep-wrap--programme .graduation-card__units {
    display: block;
    font-family: var(--font-serif);
    font-size: 1.375rem;
    font-weight: 500;
    line-height: 1.1;
    letter-spacing: -0.015em;
    color: var(--gold-deep);
    margin-bottom: 0.25rem;
}

body.theme-caleb-cudlc .deep-wrap--programme .graduation-card__label {
    font-family: var(--font-sans);
    font-size: 0.8125rem;
    font-weight: 700;
    letter-spacing: 0.04em;
    text-transform: uppercase;
    color: var(--ink-strong);
    margin: 0 0 0.625rem;
}

body.theme-caleb-cudlc .deep-wrap--programme .graduation-card__body {
    font-family: var(--font-sans);
    font-size: 0.875rem;
    line-height: 1.55;
    color: var(--ink-soft);
    margin: 0;
}


/* =====================================================================
   4. POLISH — FACULTY PREVIEW CARDS
   ===================================================================== */
/* Subtle lift on hover; tightened internal padding; specialism gets
   a quieter type treatment so the card hierarchy reads cleanly. */
body.theme-caleb-cudlc .deep-wrap--programme .faculty-card--preview {
    transition: transform 0.25s cubic-bezier(.2, .8, .2, 1),
                box-shadow 0.25s ease,
                border-color 0.25s ease;
}
body.theme-caleb-cudlc .deep-wrap--programme .faculty-card--preview:hover {
    transform: translateY(-2px);
    box-shadow: 0 6px 18px -8px rgba(0, 30, 84, 0.18);
    border-color: var(--rule);
}
body.theme-caleb-cudlc .deep-wrap--programme .faculty-card--preview .faculty-card__specialism {
    font-size: 12px;
    color: var(--ink-faint);
    margin-top: 0.25rem;
}


/* =====================================================================
   5. APPLY-CTA — extra top breathing room
   ===================================================================== */
/* The apply CTA sits at the very bottom and benefits from a touch
   more separation from the faculty section above it — a deliberate
   stop, not part of the tightening. */
body.theme-caleb-cudlc .deep-wrap--programme .apply-cta {
    margin-top: clamp(1.5rem, 3vw, 2.5rem) !important;
}
