/* =========================================================================
   trishrooney.ie — site styles
   Direction C v2 (warmed split editorial), Inter-tracked label variant.
   Tokens mirror _initial_files/Trish Website - Frontend Design/direction-c-v2.css
   ========================================================================= */

/* -------------------------------------------------------------------------
   @font-face — self-hosted Lora + Inter (woff2 only).
   Preloads for the two critical weights live in base.html.
   ------------------------------------------------------------------------- */

@font-face {
    font-family: 'Lora';
    font-style: normal;
    font-weight: 400;
    font-display: swap;
    src: url('../fonts/lora-latin-400-normal.woff2') format('woff2');
    unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
@font-face {
    font-family: 'Lora';
    font-style: italic;
    font-weight: 400;
    font-display: swap;
    src: url('../fonts/lora-latin-400-italic.woff2') format('woff2');
    unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
@font-face {
    font-family: 'Lora';
    font-style: normal;
    font-weight: 500;
    font-display: swap;
    src: url('../fonts/lora-latin-500-normal.woff2') format('woff2');
    unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
@font-face {
    font-family: 'Lora';
    font-style: italic;
    font-weight: 500;
    font-display: swap;
    src: url('../fonts/lora-latin-500-italic.woff2') format('woff2');
    unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
@font-face {
    font-family: 'Lora';
    font-style: normal;
    font-weight: 600;
    font-display: swap;
    src: url('../fonts/lora-latin-600-normal.woff2') format('woff2');
    unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
@font-face {
    font-family: 'Lora';
    font-style: italic;
    font-weight: 600;
    font-display: swap;
    src: url('../fonts/lora-latin-600-italic.woff2') format('woff2');
    unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}

/* latin-ext covers Irish, Polish, Czech, diacritics not in basic Latin-1 */
@font-face {
    font-family: 'Lora';
    font-style: normal;
    font-weight: 400;
    font-display: swap;
    src: url('../fonts/lora-latin-ext-400-normal.woff2') format('woff2');
    unicode-range: U+0100-02AF, U+0304, U+0308, U+0329, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
@font-face {
    font-family: 'Lora';
    font-style: italic;
    font-weight: 400;
    font-display: swap;
    src: url('../fonts/lora-latin-ext-400-italic.woff2') format('woff2');
    unicode-range: U+0100-02AF, U+0304, U+0308, U+0329, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
@font-face {
    font-family: 'Lora';
    font-style: normal;
    font-weight: 500;
    font-display: swap;
    src: url('../fonts/lora-latin-ext-500-normal.woff2') format('woff2');
    unicode-range: U+0100-02AF, U+0304, U+0308, U+0329, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
@font-face {
    font-family: 'Lora';
    font-style: italic;
    font-weight: 500;
    font-display: swap;
    src: url('../fonts/lora-latin-ext-500-italic.woff2') format('woff2');
    unicode-range: U+0100-02AF, U+0304, U+0308, U+0329, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
@font-face {
    font-family: 'Lora';
    font-style: normal;
    font-weight: 600;
    font-display: swap;
    src: url('../fonts/lora-latin-ext-600-normal.woff2') format('woff2');
    unicode-range: U+0100-02AF, U+0304, U+0308, U+0329, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
@font-face {
    font-family: 'Lora';
    font-style: italic;
    font-weight: 600;
    font-display: swap;
    src: url('../fonts/lora-latin-ext-600-italic.woff2') format('woff2');
    unicode-range: U+0100-02AF, U+0304, U+0308, U+0329, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
}

@font-face {
    font-family: 'Inter';
    font-style: normal;
    font-weight: 400;
    font-display: swap;
    src: url('../fonts/inter-latin-400-normal.woff2') format('woff2');
    unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
@font-face {
    font-family: 'Inter';
    font-style: normal;
    font-weight: 500;
    font-display: swap;
    src: url('../fonts/inter-latin-500-normal.woff2') format('woff2');
    unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
@font-face {
    font-family: 'Inter';
    font-style: normal;
    font-weight: 600;
    font-display: swap;
    src: url('../fonts/inter-latin-600-normal.woff2') format('woff2');
    unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
@font-face {
    font-family: 'Inter';
    font-style: normal;
    font-weight: 700;
    font-display: swap;
    src: url('../fonts/inter-latin-700-normal.woff2') format('woff2');
    unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
@font-face {
    font-family: 'Inter';
    font-style: normal;
    font-weight: 400;
    font-display: swap;
    src: url('../fonts/inter-latin-ext-400-normal.woff2') format('woff2');
    unicode-range: U+0100-02AF, U+0304, U+0308, U+0329, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
@font-face {
    font-family: 'Inter';
    font-style: normal;
    font-weight: 500;
    font-display: swap;
    src: url('../fonts/inter-latin-ext-500-normal.woff2') format('woff2');
    unicode-range: U+0100-02AF, U+0304, U+0308, U+0329, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
@font-face {
    font-family: 'Inter';
    font-style: normal;
    font-weight: 600;
    font-display: swap;
    src: url('../fonts/inter-latin-ext-600-normal.woff2') format('woff2');
    unicode-range: U+0100-02AF, U+0304, U+0308, U+0329, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
@font-face {
    font-family: 'Inter';
    font-style: normal;
    font-weight: 700;
    font-display: swap;
    src: url('../fonts/inter-latin-ext-700-normal.woff2') format('woff2');
    unicode-range: U+0100-02AF, U+0304, U+0308, U+0329, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
}

/* -------------------------------------------------------------------------
   Tokens
   ------------------------------------------------------------------------- */

:root {
    /* Palette */
    --cream: #f4efe2;
    --cream-2: #fbf7ea;
    --ink: #26201b;
    --plum: #3b1f28;
    --plum-2: #6b3a48;
    --rose: #a8365a;
    --yellow: #f4c430;
    --yellow-bright: #ffd33d;
    --rule: #c8bfa8;
    --on-plum: #f1ead8;
    --on-plum-muted: #d6ccb6;

    /* Fonts */
    --font-serif: 'Lora', 'Source Serif Pro', Georgia, serif;
    --font-sans: 'Inter', system-ui, -apple-system, Segoe UI, Roboto, sans-serif;

    /* Label voice (Inter-tracked small caps look) */
    --label-weight: 600;
    --label-tracking: 0.16em;
    --label-size: 11px;
    --label-size-sm: 10px;

    /* Spacing / layout */
    --gutter: 56px;
    --gutter-sm: 24px;
    --rhythm-section: 96px;
    --rhythm-section-sm: 56px;

    /* Set via JS when mobile menu open, locks scroll */
    --scrollbar-lock: 0px;
}

/* -------------------------------------------------------------------------
   Reset & base
   ------------------------------------------------------------------------- */

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

html { -webkit-text-size-adjust: 100%; scroll-behavior: smooth; }

body {
    margin: 0;
    background: var(--cream);
    color: var(--ink);
    font-family: var(--font-serif);
    font-size: 17px;
    line-height: 1.65;
    -webkit-font-smoothing: antialiased;
    text-rendering: optimizeLegibility;
}

body.nav-open { overflow: hidden; }

img, svg, video { max-width: 100%; height: auto; display: block; }

a { color: inherit; }

button { font: inherit; cursor: pointer; }

/* Headings use Lora by default; italic em uses rose accent */
h1, h2, h3, h4, h5, h6 {
    font-family: var(--font-serif);
    font-weight: 400;
    color: var(--plum);
    letter-spacing: -0.01em;
    margin: 0 0 0.5em;
    line-height: 1.1;
}
h1 em, h2 em, h3 em, h4 em {
    font-style: italic;
    color: var(--rose);
    font-weight: 400;
}

p { margin: 0 0 1em; }

/* Rich text anchor default */
a:not([class]) {
    color: var(--plum);
    text-decoration: underline;
    text-decoration-thickness: 1px;
    text-underline-offset: 3px;
}
a:not([class]):hover { color: var(--rose); }

/* Inline highlight used in body prose for emphasised phrases */
.prose-highlight,
.rich-text mark,
.rich-text strong {
    font-weight: 600;
    color: var(--plum);
    background: linear-gradient(transparent 72%, var(--yellow) 72%, var(--yellow) 92%, transparent 92%);
    padding: 0 2px;
}

/* "Mark" word used inside a hero H1 — rotated yellow highlight pill */
.mark {
    background: var(--yellow);
    padding: 0 6px;
    display: inline-block;
    transform: rotate(-1deg);
}

/* Section numbering / small caps label voice */
.label,
.section-num {
    font-family: var(--font-sans);
    font-weight: var(--label-weight);
    letter-spacing: var(--label-tracking);
    text-transform: uppercase;
    font-size: var(--label-size);
    color: var(--plum-2);
}
.section-num { display: flex; align-items: center; gap: 16px; }
.section-num::after {
    content: '';
    flex: 1;
    height: 1px;
    background: var(--rule);
}
/* --plain variant: no trailing hairline */
.section-num--plain::after { content: none; }

/* -------------------------------------------------------------------------
   Layout helpers
   ------------------------------------------------------------------------- */

.container {
    width: 100%;
    max-width: 1320px;
    margin: 0 auto;
    padding-inline: var(--gutter);
}

.section {
    padding-block: var(--rhythm-section);
}

.section + .section { border-top: 1px solid var(--rule); }

/* Background colour utility classes used by StreamField blocks.
   Keep these names in sync with BACKGROUND_COLOR_CHOICES in blocks/blocks.py. */
.bg-cream { background: var(--cream); color: var(--ink); }
.bg-cream-2 { background: var(--cream-2); color: var(--ink); }
.bg-white { background: #ffffff; color: var(--ink); }
.bg-yellow { background: var(--yellow); color: var(--plum); }
.bg-yellow-bright { background: var(--yellow-bright); color: var(--plum); }
.bg-plum { background: var(--plum); color: var(--on-plum); }
.bg-plum-2 { background: var(--plum-2); color: var(--on-plum); }
.bg-rose { background: var(--rose); color: var(--cream); }

/* On yellow backgrounds, hairlines are plum (not the cream-toned --rule) */
.bg-yellow, .bg-yellow-bright { --rule: var(--plum); }

.bg-plum h1, .bg-plum h2, .bg-plum h3, .bg-plum h4,
.bg-plum-2 h1, .bg-plum-2 h2, .bg-plum-2 h3, .bg-plum-2 h4,
.bg-rose h1, .bg-rose h2, .bg-rose h3, .bg-rose h4 {
    color: inherit;
}
.bg-plum em, .bg-plum-2 em { color: var(--yellow); }

/* -------------------------------------------------------------------------
   Site header / main nav — 3-col grid (Cv2)
   Mobile: brand + hamburger; overlay panel replaces centre links.
   ------------------------------------------------------------------------- */

.site-header {
    position: sticky;
    top: 0;
    z-index: 40;
    background: var(--cream);
    border-bottom: 1px solid var(--rule);
}

/* Thin editorial strip above the main nav — two plain-text slots (L/R).
   Hidden entirely if both slots are empty (template omits the wrapper). */
.site-header__topbar {
    background: var(--cream-2);
    border-bottom: 1px solid var(--rule);
}
.site-header__topbar-inner {
    max-width: 1320px;
    margin: 0 auto;
    padding: 8px var(--gutter-sm);
    display: flex;
    justify-content: space-between;
    align-items: center;
    gap: 12px;
    font-family: var(--font-sans);
    font-weight: var(--label-weight);
    letter-spacing: var(--label-tracking);
    text-transform: uppercase;
    font-size: var(--label-size-sm);
    color: var(--plum-2);
}
@media (min-width: 720px) {
    .site-header__topbar-inner { padding: 10px var(--gutter); }
}
.site-header__topbar-slot { min-width: 0; }
.site-header__topbar-slot--right { text-align: right; }
/* On narrow mobile, stack left over right-center to avoid squish */
@media (max-width: 479px) {
    .site-header__topbar-inner {
        justify-content: center;
        font-size: 10px;
    }
    .site-header__topbar-slot--right { display: none; }
}

.site-header__inner {
    display: grid;
    grid-template-columns: 1fr auto;
    align-items: center;
    gap: 24px;
    padding: 20px var(--gutter);
}

@media (min-width: 960px) {
    .site-header__inner {
        grid-template-columns: 1fr 2fr 1fr;
        gap: 32px;
        padding: 24px var(--gutter);
    }
    /* Let the two nav lists become direct grid children so primary sits
       in column 2 and secondary in column 3 — side by side with the brand. */
    .site-nav { display: contents; }
}

.site-header__brand {
    font-family: var(--font-serif);
    font-size: 18px;
    color: var(--plum);
    text-decoration: none;
    letter-spacing: 0.02em;
}
.site-header__brand strong { font-weight: 600; display: block; }
.site-header__brand span {
    display: block;
    margin-top: 2px;
    color: var(--plum-2);
    font-family: var(--font-sans);
    font-weight: var(--label-weight);
    letter-spacing: var(--label-tracking);
    text-transform: uppercase;
    font-size: var(--label-size-sm);
}

.site-nav__list {
    list-style: none;
    padding: 0;
    margin: 0;
}

/* Primary centre links */
.site-nav__list--primary {
    display: flex;
    justify-content: center;
    gap: 26px;
    font-family: var(--font-sans);
    font-weight: var(--label-weight);
    letter-spacing: var(--label-tracking);
    text-transform: uppercase;
    font-size: var(--label-size);
    color: var(--plum);
}

.site-nav__link {
    color: inherit;
    text-decoration: none;
    padding: 4px 0;
    position: relative;
    display: inline-block;
    white-space: nowrap;
}
.site-nav__link:hover,
.site-nav__link.active {
    color: var(--rose);
}
.site-nav__link.active::after {
    content: '';
    position: absolute;
    left: 0; right: 0;
    bottom: -2px;
    height: 1px;
    background: currentColor;
}

/* Secondary / right-aligned items */
.site-nav__list--secondary {
    display: none;
    justify-content: flex-end;
    align-items: center;
    gap: 14px;
    font-family: var(--font-sans);
    font-weight: var(--label-weight);
    letter-spacing: var(--label-tracking);
    text-transform: uppercase;
    font-size: var(--label-size);
    color: var(--plum);
}

@media (min-width: 960px) {
    .site-nav__list--secondary { display: flex; }
}

.site-nav__cta {
    padding: 8px 14px;
    border: 1px solid var(--plum);
    border-radius: 2px;
    text-decoration: none;
    color: var(--plum);
    transition: background .15s, color .15s;
}
.site-nav__cta:hover {
    background: var(--plum);
    color: var(--cream);
}

/* (Tagline now lives in .site-header__topbar above the main nav — see above.) */

/* Nav dropdowns — hover on desktop, click-to-open via aria-expanded on mobile */
.site-nav__item--has-dropdown { position: relative; }
.site-nav__dropdown {
    display: none;
    position: absolute;
    top: calc(100% + 8px);
    left: 0;
    min-width: 220px;
    padding: 12px 0;
    margin: 0;
    list-style: none;
    background: var(--cream);
    border: 1px solid var(--rule);
    box-shadow: 0 8px 24px rgba(38, 32, 27, 0.08);
    z-index: 10;
}
@media (min-width: 960px) {
    .site-nav__item--has-dropdown:hover > .site-nav__dropdown,
    .site-nav__item--has-dropdown:focus-within > .site-nav__dropdown { display: block; }
}
.site-nav__dropdown-link {
    display: block;
    padding: 8px 18px;
    text-decoration: none;
    color: var(--plum);
    font-weight: var(--label-weight);
}
.site-nav__dropdown-link:hover { color: var(--rose); background: var(--cream-2); }

/* Hamburger toggle */
.site-header__toggle {
    display: inline-flex;
    flex-direction: column;
    justify-content: center;
    gap: 5px;
    width: 40px;
    height: 40px;
    padding: 8px;
    background: transparent;
    border: 1px solid var(--rule);
    border-radius: 2px;
    justify-self: end;
}
.site-header__toggle span {
    display: block;
    width: 100%;
    height: 1.5px;
    background: var(--plum);
    transition: transform .2s, opacity .2s;
}
.site-header__toggle[aria-expanded="true"] span:nth-child(1) { transform: translateY(6.5px) rotate(45deg); }
.site-header__toggle[aria-expanded="true"] span:nth-child(2) { opacity: 0; }
.site-header__toggle[aria-expanded="true"] span:nth-child(3) { transform: translateY(-6.5px) rotate(-45deg); }

@media (min-width: 960px) {
    .site-header__toggle { display: none; }
}

/* Mobile nav overlay */
@media (max-width: 959.98px) {
    .site-nav {
        position: fixed;
        inset: 0;
        top: var(--header-height, 81px);  /* measured dynamically by utils.js */
        background: var(--cream);
        padding: 48px var(--gutter-sm) 32px;
        display: none;
        flex-direction: column;
        gap: 32px;
        overflow-y: auto;
        z-index: 30;
    }
    .site-nav.is-open { display: flex; }
    /* Active-link underline (::after) spans full width on mobile due to
       block-level items, stacking against row borders. Use color only. */
    .site-nav__link.active::after { display: none; }
    .site-nav__list--primary {
        flex-direction: column;
        align-items: stretch;
        gap: 0;
        font-size: 14px;
    }
    .site-nav__list--primary .site-nav__item {
        width: 100%;
        border-bottom: 1px solid var(--rule);
        text-align: center;
    }
    /* Drop the trailing border so the secondary list sits flush — avoids
       the double-hairline stacking the primary's border-bottom was making
       against the old secondary border-top. */
    .site-nav__list--primary .site-nav__item:last-child {
        border-bottom: 0;
    }
    .site-nav__list--primary .site-nav__link {
        display: block;
        padding: 18px 0;
        width: 100%;
    }
    /* Secondary list — centred items, single hairline above */
    .site-nav__list--secondary {
        display: flex;
        flex-direction: column;
        align-items: center;
        gap: 16px;
        padding-top: 24px;
        border-top: 1px solid var(--rule);
        text-align: center;
    }
    .site-nav__list--secondary .site-nav__item {
        width: auto;
    }
    .site-nav__cta {
        display: inline-block;
        padding: 14px 24px;
    }
    .site-nav__dropdown {
        display: block;
        position: static;
        border: 0;
        box-shadow: none;
        padding: 0 0 8px 16px;
        background: transparent;
    }
    .site-nav__dropdown-link { padding: 8px 0; }
}

/* -------------------------------------------------------------------------
   Site footer — brand column + flexible link columns
   ------------------------------------------------------------------------- */

.site-footer {
    border-top: 1px solid var(--rule);
    background: var(--cream);
    color: var(--plum-2);
    padding: 48px var(--gutter) 32px;
    font-family: var(--font-sans);
    font-weight: var(--label-weight);
    letter-spacing: var(--label-tracking);
    text-transform: uppercase;
    font-size: var(--label-size);
}

.site-footer__top {
    display: grid;
    grid-template-columns: 1fr;
    gap: 40px;
}
@media (min-width: 720px) {
    .site-footer__top { grid-template-columns: 2fr 3fr; gap: 48px; }
}

.site-footer__columns {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(140px, 1fr));
    gap: 32px;
}

.site-footer__column h2,
.site-footer__column h4 {
    font-family: var(--font-sans);
    font-weight: var(--label-weight);
    letter-spacing: var(--label-tracking);
    text-transform: uppercase;
    font-size: var(--label-size-sm);
    color: var(--plum);
    margin: 0 0 12px;
}
.site-footer__column p { margin: 0 0 8px; line-height: 1.9; }
.site-footer__column a,
.site-footer__column span {
    color: inherit;
    text-decoration: none;
    display: block;
    line-height: 2;
}
.site-footer__column a:hover { color: var(--rose); }

/* Brand column */
.site-footer__brand {
    font-family: var(--font-serif);
    font-size: 22px;
    color: var(--plum);
    margin-bottom: 10px;
    letter-spacing: 0;
    font-weight: 500;
    text-transform: none;
    font-style: normal;
    display: block;
    line-height: 1.2;
}
.site-footer__brand-sub,
.site-footer__brand-sub p {
    font-family: var(--font-sans);
    font-weight: var(--label-weight);
    letter-spacing: var(--label-tracking);
    text-transform: uppercase;
    font-size: var(--label-size);
    color: var(--plum-2);
    line-height: 1.7;
    margin: 0;
    display: block;
}

.site-footer__bottom {
    margin-top: 48px;
    padding-top: 20px;
    border-top: 1px solid var(--rule);
    display: flex;
    flex-wrap: wrap;
    gap: 20px;
    justify-content: space-between;
    align-items: center;
    font-size: 10px;
    color: var(--plum-2);
}
.site-footer__bottom a { color: inherit; text-decoration: none; }
.site-footer__bottom a:hover { color: var(--rose); }

/* -------------------------------------------------------------------------
   Block shell — common wrapper class for StreamField blocks.
   Blocks set a .bg-* class + optional .section--no-top / --no-bottom.
   ------------------------------------------------------------------------- */

.block {
    padding-block: var(--rhythm-section-sm);
}
@media (min-width: 720px) {
    .block { padding-block: var(--rhythm-section); }
}
.block--no-top { padding-top: 0; }
.block--no-bottom { padding-bottom: 0; }
.block--none { padding-block: 0; }

.block__inner {
    max-width: 1320px;
    margin: 0 auto;
    padding-inline: var(--gutter-sm);
}
@media (min-width: 720px) {
    .block__inner { padding-inline: var(--gutter); }
}

.block-heading {
    font-family: var(--font-serif);
    font-weight: 400;
    font-size: clamp(32px, 4vw, 56px);
    line-height: 1.05;
    letter-spacing: -0.01em;
    margin: 0 0 24px;
    color: var(--plum);
}

/* Prose wrapper used by content blocks & rich text */
.prose {
    font-family: var(--font-serif);
    font-size: 18px;
    line-height: 1.65;
    color: var(--ink);
}
.prose p { margin: 0 0 1.1em; }
.prose b, .prose strong {
    font-weight: 600;
    color: var(--plum);
    background: linear-gradient(transparent 72%, var(--yellow) 72%, var(--yellow) 92%, transparent 92%);
    padding: 0 2px;
}
.prose a {
    color: var(--plum);
    text-decoration: underline;
    text-decoration-thickness: 1px;
    text-underline-offset: 3px;
}
.prose a:hover { color: var(--rose); }
.prose ul, .prose ol { padding-left: 1.4em; margin: 0 0 1.1em; }
.prose blockquote {
    border-left: 2px solid var(--rose);
    padding: 4px 0 4px 20px;
    margin: 1em 0;
    font-style: italic;
    color: var(--plum);
}

/* Drop-cap — targets the first letter of the first paragraph inside .prose-dropcap.
   Scoped to <p> explicitly so ::first-letter has a reliable block to attach to. */
.prose-dropcap > p:first-child::first-letter,
.prose-dropcap > p:first-of-type::first-letter {
    font-family: var(--font-serif);
    font-size: 76px;
    font-weight: 400;
    line-height: 0.85;
    float: left;
    margin: 8px 14px -4px 0;
    color: var(--plum);
}

/* -------------------------------------------------------------------------
   Buttons
   ------------------------------------------------------------------------- */

.btn {
    display: inline-flex;
    align-items: center;
    gap: 10px;
    padding: 12px 18px;
    border: 1px solid var(--plum);
    border-radius: 2px;
    font-family: var(--font-sans);
    font-weight: var(--label-weight);
    letter-spacing: var(--label-tracking);
    text-transform: uppercase;
    font-size: var(--label-size);
    text-decoration: none;
    transition: background .15s, color .15s;
    cursor: pointer;
}
.btn--primary { background: var(--plum); color: var(--cream); }
.btn--primary:hover { background: var(--plum-2); border-color: var(--plum-2); }
.btn--secondary {
    background: transparent;
    color: var(--plum);
    border: 0;
    border-bottom: 1px solid var(--plum);
    border-radius: 0;
    padding: 2px 0 4px;
}
.btn--secondary:hover { color: var(--rose); border-color: var(--rose); }
.btn--yellow { background: var(--yellow); color: var(--plum); border-color: var(--plum); }
.btn--yellow:hover { background: var(--yellow-bright); }

/* -------------------------------------------------------------------------
   Forms (shared field styling)
   ------------------------------------------------------------------------- */

.form label {
    display: block;
    font-family: var(--font-sans);
    font-weight: var(--label-weight);
    letter-spacing: var(--label-tracking);
    text-transform: uppercase;
    font-size: var(--label-size-sm);
    color: var(--plum-2);
    margin-bottom: 6px;
}
.form input[type="text"],
.form input[type="email"],
.form input[type="url"],
.form input[type="tel"],
.form input[type="number"],
.form input[type="date"],
.form input[type="datetime-local"],
.form select,
.form textarea {
    width: 100%;
    padding: 10px 0;
    border: 0;
    border-bottom: 1px solid var(--plum);
    background: transparent;
    font-family: var(--font-serif);
    font-size: 16px;
    color: var(--ink);
    margin-bottom: 22px;
    outline: none;
}
.form textarea { min-height: 120px; resize: vertical; }
.form input:focus,
.form select:focus,
.form textarea:focus { border-bottom-color: var(--rose); }
.form button[type="submit"] {
    margin-top: 8px;
}

/* Generic accordion used by accordion block + mobile prose collapse */
.accordion details {
    border-bottom: 1px solid var(--rule);
}
.accordion summary {
    list-style: none;
    padding: 18px 0;
    cursor: pointer;
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 16px;
    font-family: var(--font-serif);
    font-size: 18px;
    color: var(--plum);
}
.accordion summary::-webkit-details-marker { display: none; }
.accordion summary::after {
    content: '+';
    font-family: var(--font-sans);
    font-weight: 500;
    font-size: 20px;
    color: var(--plum);
    transition: transform .2s;
}
.accordion details[open] summary::after { content: '−'; }
.accordion__content {
    padding: 0 0 20px;
    font-family: var(--font-serif);
    font-size: 17px;
    line-height: 1.65;
    color: var(--ink);
}

/* -------------------------------------------------------------------------
   Utilities
   ------------------------------------------------------------------------- */

.visually-hidden {
    position: absolute;
    width: 1px; height: 1px;
    padding: 0; margin: -1px;
    overflow: hidden; clip: rect(0, 0, 0, 0);
    white-space: nowrap; border: 0;
}

/* =========================================================================
   BLOCK STYLES
   One big section that styles every StreamField block (new + existing).
   ========================================================================= */

/* Aliases for legacy spacing_class values emitted by older block templates */
.section-spacing { /* no-op, default padding lives on .block */ }
.section-spacing--no-top { padding-top: 0; }
.section-spacing--no-bottom { padding-bottom: 0; }
.section-spacing--none { padding-block: 0; }

/* Narrow inner wrapper for prose-heavy blocks */
.block__inner--narrow {
    max-width: 880px;
}

/* Rich-text wrapper (template emits class on rendered RichTextBlock body) */
.block-rich-text {
    font-family: var(--font-serif);
    font-size: 18px;
    line-height: 1.65;
    color: var(--ink);
}
.block-rich-text p { margin: 0 0 1.1em; }
.block-rich-text p:last-child { margin-bottom: 0; }
.block-rich-text b, .block-rich-text strong {
    font-weight: 600;
    color: var(--plum);
    background: linear-gradient(transparent 72%, var(--yellow) 72%, var(--yellow) 92%, transparent 92%);
    padding: 0 2px;
}
.block-rich-text a {
    color: var(--plum);
    text-decoration: underline;
    text-decoration-thickness: 1px;
    text-underline-offset: 3px;
}
.block-rich-text a:hover { color: var(--rose); }
.block-rich-text ul, .block-rich-text ol { padding-left: 1.4em; margin: 0 0 1.1em; }
.block-rich-text blockquote {
    border-left: 2px solid var(--rose);
    padding: 4px 0 4px 20px;
    margin: 1.2em 0;
    font-style: italic;
    color: var(--plum);
}

/* Headings inside blocks */
.block-heading {
    font-family: var(--font-serif);
    font-weight: 400;
    font-size: clamp(32px, 4vw, 56px);
    line-height: 1.05;
    letter-spacing: -0.01em;
    margin: 0 0 24px;
    color: var(--plum);
}
.block-heading--reduced {
    font-size: clamp(24px, 2.6vw, 36px);
}
.block-subtitle {
    font-family: var(--font-serif);
    font-style: italic;
    font-size: 19px;
    line-height: 1.5;
    color: var(--plum-2);
    max-width: 46ch;
    margin: 0 0 32px;
}

/* On dark block backgrounds, rich-text needs a lighter default colour and
   the bold highlight inverts from yellow-underline-plum to plain yellow. */
.bg-plum .block-rich-text,
.bg-plum-2 .block-rich-text { color: var(--on-plum-muted); }
.bg-rose .block-rich-text { color: var(--cream); }

.bg-plum .block-rich-text b,
.bg-plum .block-rich-text strong,
.bg-plum-2 .block-rich-text b,
.bg-plum-2 .block-rich-text strong {
    color: var(--yellow);
    background: transparent;
}
.bg-plum .block-rich-text a,
.bg-plum-2 .block-rich-text a { color: var(--yellow); }
.bg-plum .block-rich-text a:hover,
.bg-plum-2 .block-rich-text a:hover { color: var(--yellow-bright); }

/* -------------------------------------------------------------------------
   HERO — split (new)
   ------------------------------------------------------------------------- */
.block--hero-split { padding-block: 0; }
.block-hero-split {
    display: grid;
    grid-template-columns: 1fr;
    border-bottom: 1px solid var(--rule);
}
@media (min-width: 960px) {
    .block-hero-split { grid-template-columns: 1fr 1fr; }
}
.block-hero-split__text {
    padding: 56px var(--gutter-sm);
    display: flex;
    flex-direction: column;
    gap: 40px;
}
@media (min-width: 960px) {
    .block-hero-split__text {
        padding: 72px var(--gutter) 56px;
        gap: 48px;
        border-right: 1px solid var(--rule);
    }
}
.block-hero-split__heading {
    font-family: var(--font-serif);
    font-weight: 400;
    font-size: clamp(40px, 5.2vw, 84px);
    line-height: 1.05;
    letter-spacing: -0.01em;
    margin: 0;
    color: var(--plum);
}
.block-hero-split__sub {
    font-family: var(--font-serif);
    font-style: italic;
    font-size: 19px;
    line-height: 1.5;
    color: var(--plum-2);
    max-width: 46ch;
}
.block-hero-split__sub p:last-child { margin-bottom: 0; }
.block-hero-split__ctas {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 20px;
}
.block-hero-split__media {
    position: relative;
    min-height: 420px;
    overflow: hidden;
    background: var(--cream-2);
}
@media (min-width: 960px) {
    .block-hero-split__media { min-height: 620px; }
}
.block-hero-split__image {
    width: 100%;
    height: 100%;
    object-fit: cover;
    object-position: center 15%;
    position: absolute;
    inset: 0;
}
.block-hero-split__media::after {
    content: '';
    position: absolute;
    inset: 0;
    background: linear-gradient(180deg, transparent 60%, rgba(38, 32, 27, 0.15));
    pointer-events: none;
}
.block-hero-split__placeholder {
    position: absolute;
    inset: 0;
    background:
        repeating-linear-gradient(45deg,
            transparent 0, transparent 10px,
            rgba(91, 26, 49, 0.08) 10px, rgba(91, 26, 49, 0.08) 11px);
    display: flex;
    align-items: center;
    justify-content: center;
    color: var(--plum-2);
    font-family: var(--font-sans);
    font-weight: var(--label-weight);
    letter-spacing: var(--label-tracking);
    text-transform: uppercase;
    font-size: var(--label-size);
}
.block-hero-split__caption {
    position: absolute;
    bottom: 24px;
    left: 24px;
    right: 24px;
    background: var(--cream-2);
    border: 1px solid var(--rule);
    padding: 14px 18px;
    font-family: var(--font-sans);
    font-weight: var(--label-weight);
    letter-spacing: var(--label-tracking);
    text-transform: uppercase;
    font-size: var(--label-size);
    color: var(--plum);
    display: flex;
    justify-content: space-between;
    gap: 16px;
}

/* -------------------------------------------------------------------------
   DATA STRIP
   ------------------------------------------------------------------------- */
.block--data-strip { padding-block: 0; }
.block-data-strip {
    display: grid;
    grid-template-columns: 1fr;
    border-top: 1px solid var(--rule);
    border-bottom: 1px solid var(--rule);
}
@media (min-width: 720px) {
    .block-data-strip[data-cells="2"] { grid-template-columns: repeat(2, 1fr); }
    .block-data-strip[data-cells="3"] { grid-template-columns: repeat(3, 1fr); }
    .block-data-strip[data-cells="4"] { grid-template-columns: repeat(4, 1fr); }
}
.block-data-strip__cell {
    padding: 24px var(--gutter-sm);
    border-bottom: 1px solid var(--rule);
}
.block-data-strip__cell:last-child { border-bottom: 0; }
@media (min-width: 720px) {
    .block-data-strip__cell {
        padding: 28px var(--gutter);
        border-right: 1px solid var(--rule);
        border-bottom: 0;
    }
    .block-data-strip__cell:last-child { border-right: 0; }
}
.block-data-strip__key {
    font-family: var(--font-sans);
    font-weight: var(--label-weight);
    letter-spacing: var(--label-tracking);
    text-transform: uppercase;
    font-size: var(--label-size-sm);
    color: var(--plum-2);
    margin-bottom: 8px;
}
.block-data-strip__value {
    font-family: var(--font-serif);
    font-weight: 400;
    font-size: 20px;
    color: var(--plum);
    line-height: 1.3;
}
.block-data-strip__value b { font-weight: 600; }

/* -------------------------------------------------------------------------
   NUMBERED LIST
   ------------------------------------------------------------------------- */

/* Reset default .block padding; admin opts in via .block--spacing-* */
.block--numbered-list { padding-block: 0; position: relative; }

.block--numbered-list.block--spacing-top    { padding-top: var(--rhythm-section-sm); }
.block--numbered-list.block--spacing-bottom { padding-bottom: var(--rhythm-section-sm); }
.block--numbered-list.block--spacing-both   { padding-block: var(--rhythm-section-sm); }
@media (min-width: 720px) {
    .block--numbered-list.block--spacing-top    { padding-top: var(--rhythm-section); }
    .block--numbered-list.block--spacing-bottom { padding-bottom: var(--rhythm-section); }
    .block--numbered-list.block--spacing-both   { padding-block: var(--rhythm-section); }
}

/* Optional plum hairlines above / below the whole section */
.block--numbered-list.block--border-top    { border-top: 1px solid var(--plum); }
.block--numbered-list.block--border-bottom { border-bottom: 1px solid var(--plum); }

/* Decoration: bright yellow disc peeking in from the top-right corner
   (used on yellow feature blocks per Cv2). */
.block--decoration-circle-top-right { overflow: hidden; }
.block--decoration-circle-top-right::before {
    content: '';
    position: absolute;
    width: 520px;
    height: 520px;
    border-radius: 50%;
    background: var(--yellow-bright);
    top: -200px;
    right: -150px;
    opacity: 0.7;
    pointer-events: none;
    z-index: 0;
}
.block--decoration-circle-top-right > .block-numbered-list {
    position: relative;
    z-index: 1;
}

.block-numbered-list {
    max-width: 1320px;
    margin: 0 auto;
    padding-inline: var(--gutter-sm);
}
@media (min-width: 720px) {
    .block-numbered-list { padding-inline: var(--gutter); }
}
.block-numbered-list__head { margin-bottom: 32px; }

/* In the split layout, the section label sits on paper bg — rose reads best
   there (matches Cv2 .cv2-spec-head .k). Grid layouts keep the default. */
.block--numbered-list--split .block-numbered-list__head .section-num,
.block--numbered-list--split .block-numbered-list__head .section-num--plain { color: var(--rose); }
.block-numbered-list__heading {
    font-family: var(--font-serif);
    font-weight: 400;
    font-size: clamp(32px, 3.8vw, 56px);
    line-height: 1.05;
    letter-spacing: -0.01em;
    color: var(--plum);
    margin: 16px 0 16px;
    max-width: 20ch;
}
.block-numbered-list__intro {
    font-family: var(--font-serif);
    font-size: 17px;
    line-height: 1.6;
    max-width: 42ch;
    color: var(--ink);
}
.block-numbered-list__intro p:last-child { margin-bottom: 0; }

/* Rows layout — full-width numbered rows with optional arrow link */
.block--numbered-list--rows .block-numbered-list__items {
    border-top: 1px solid var(--rule);
}
.block--numbered-list--rows .block-numbered-list__row {
    display: grid;
    grid-template-columns: 48px 1fr auto;
    align-items: center;
    gap: 16px;
    padding: 22px 8px;
    border-bottom: 1px solid var(--rule);
    color: inherit;
    text-decoration: none;
    transition: background .15s;
}
.block--numbered-list--rows a.block-numbered-list__row:hover {
    background: var(--cream-2);
}
.block--numbered-list--rows .block-numbered-list__num {
    font-family: var(--font-sans);
    font-weight: var(--label-weight);
    letter-spacing: var(--label-tracking);
    text-transform: uppercase;
    font-size: var(--label-size);
    color: var(--plum-2);
}
.block--numbered-list--rows .block-numbered-list__title {
    font-family: var(--font-serif);
    font-size: 20px;
    color: var(--plum);
    letter-spacing: -0.01em;
    display: block;
}
.block--numbered-list--rows .block-numbered-list__sub {
    display: block;
    font-family: var(--font-sans);
    font-size: 13px;
    color: var(--plum-2);
    letter-spacing: 0.02em;
    margin-top: 4px;
}
.block--numbered-list--rows .block-numbered-list__arr {
    width: 32px;
    height: 32px;
    border: 1px solid var(--plum);
    border-radius: 50%;
    display: grid;
    place-items: center;
    font-size: 14px;
    color: var(--plum);
    flex: 0 0 auto;
}
.block--numbered-list--rows a.block-numbered-list__row:hover .block-numbered-list__arr {
    background: var(--plum);
    color: var(--cream);
}

/* Grid layouts (3 / 4 cells) */
.block--numbered-list--grid-3 .block-numbered-list__items,
.block--numbered-list--grid-4 .block-numbered-list__items {
    display: grid;
    grid-template-columns: 1fr;
    gap: 0;
    border-top: 1px solid currentColor;
}
@media (min-width: 720px) {
    .block--numbered-list--grid-3 .block-numbered-list__items { grid-template-columns: repeat(3, 1fr); }
    .block--numbered-list--grid-4 .block-numbered-list__items { grid-template-columns: repeat(4, 1fr); }
}
.block--numbered-list--grid-3 .block-numbered-list__row,
.block--numbered-list--grid-4 .block-numbered-list__row {
    padding: 24px;
    border-bottom: 1px solid var(--rule);
    display: block;
    color: inherit;
    text-decoration: none;
}
.block--numbered-list--grid-3 .block-numbered-list__row:not(:last-child),
.block--numbered-list--grid-4 .block-numbered-list__row:not(:last-child) {
    border-right: 1px solid var(--rule);
}
@media (min-width: 720px) {
    .block--numbered-list--grid-3 .block-numbered-list__row,
    .block--numbered-list--grid-4 .block-numbered-list__row {
        border-bottom: 0;
    }
}
.block--numbered-list--grid-3 .block-numbered-list__num,
.block--numbered-list--grid-4 .block-numbered-list__num {
    font-family: var(--font-sans);
    font-weight: var(--label-weight);
    letter-spacing: var(--label-tracking);
    text-transform: uppercase;
    font-size: var(--label-size);
    opacity: 0.8;
    display: block;
    margin-bottom: 10px;
}
.block--numbered-list--grid-3 .block-numbered-list__title,
.block--numbered-list--grid-4 .block-numbered-list__title {
    font-family: var(--font-serif);
    font-size: 22px;
    font-weight: 500;
    letter-spacing: -0.01em;
    display: block;
    margin-bottom: 6px;
}
.block--numbered-list--grid-3 .block-numbered-list__sub,
.block--numbered-list--grid-4 .block-numbered-list__sub {
    display: block;
    font-family: var(--font-serif);
    font-size: 15px;
    line-height: 1.5;
    color: inherit;
    opacity: 0.85;
}
.block--numbered-list--grid-3 .block-numbered-list__arr,
.block--numbered-list--grid-4 .block-numbered-list__arr {
    display: none;
}

/* Optional item image — sits between title and subtitle on grid layouts */
.block--numbered-list--grid-3 .block-numbered-list__media,
.block--numbered-list--grid-4 .block-numbered-list__media {
    display: block;
    margin: 14px 0 14px;
    overflow: hidden;
    border: 1px solid var(--rule);
    background: var(--cream-2);
    aspect-ratio: 3 / 2;
    transition: transform .3s ease;
}
.block--numbered-list--grid-3 .block-numbered-list__media img,
.block--numbered-list--grid-4 .block-numbered-list__media img {
    width: 100%;
    height: 100%;
    object-fit: cover;
    display: block;
    transition: transform .4s ease;
}

/* Hover — only when the item is a real link (<a>) */
.block--numbered-list--grid-3 .block-numbered-list__row--link,
.block--numbered-list--grid-4 .block-numbered-list__row--link {
    position: relative;
    transition: background-color .2s ease, color .2s ease;
}
.block--numbered-list--grid-3 .block-numbered-list__row--link::after,
.block--numbered-list--grid-4 .block-numbered-list__row--link::after {
    content: '→';
    position: absolute;
    top: 20px;
    right: 20px;
    font-family: var(--font-sans);
    font-weight: 500;
    color: var(--plum);
    opacity: 0;
    transform: translateX(-6px);
    transition: opacity .2s ease, transform .2s ease;
}
.block--numbered-list--grid-3 .block-numbered-list__row--link:hover,
.block--numbered-list--grid-4 .block-numbered-list__row--link:hover {
    background: rgba(91, 26, 49, 0.04);
}
.bg-yellow .block-numbered-list__row--link:hover,
.bg-yellow-bright .block-numbered-list__row--link:hover {
    background: rgba(91, 26, 49, 0.08);
}
.bg-plum .block-numbered-list__row--link:hover,
.bg-plum-2 .block-numbered-list__row--link:hover {
    background: rgba(241, 234, 216, 0.06);
}
.block--numbered-list--grid-3 .block-numbered-list__row--link:hover::after,
.block--numbered-list--grid-4 .block-numbered-list__row--link:hover::after {
    opacity: 1;
    transform: translateX(0);
}
.block--numbered-list--grid-3 .block-numbered-list__row--link:hover .block-numbered-list__media img,
.block--numbered-list--grid-4 .block-numbered-list__row--link:hover .block-numbered-list__media img {
    transform: scale(1.04);
}

/* Split layout — intro block as its own card on the left */
.block--numbered-list--split .block-numbered-list {
    max-width: none;
    padding-inline: 0;
    display: grid;
    grid-template-columns: 1fr;
}
@media (min-width: 900px) {
    .block--numbered-list--split .block-numbered-list {
        grid-template-columns: 1fr 1fr;
    }
}
.block--numbered-list--split .block-numbered-list__head {
    padding: 48px var(--gutter-sm);
    background: var(--cream-2);
    margin-bottom: 0;
}
@media (min-width: 720px) {
    .block--numbered-list--split .block-numbered-list__head {
        padding: 64px var(--gutter);
    }
}
@media (min-width: 900px) {
    .block--numbered-list--split .block-numbered-list__head {
        border-right: 1px solid var(--rule);
    }
}
.block--numbered-list--split .block-numbered-list__items {
    /* Rows variant is the common split partner — remove the outer border, rows bring their own */
    border-top: 0;
}
.block--numbered-list--split.block--numbered-list--rows .block-numbered-list__row {
    padding: 22px var(--gutter-sm);
}
@media (min-width: 720px) {
    .block--numbered-list--split.block--numbered-list--rows .block-numbered-list__row {
        padding: 22px var(--gutter);
    }
}

/* -------------------------------------------------------------------------
   CONTENT SECTION
   ------------------------------------------------------------------------- */
.block--content .block-heading { margin-bottom: 16px; }

/* Section label above heading (inner pages) */
.block-content__label {
    margin-bottom: 12px;
    color: var(--rose);
}

/* Left-aligned variant — label + heading stay at a comfortable reading cap,
   prose fills the full shell width on large screens (matches numbered-list
   and other full-width blocks). On smaller screens, cap at 880px for
   readability. Only applied when there is no side ToC. */
.block--content--align-left .block-content__label,
.block--content--align-left .block-heading {
    max-width: 880px;
    margin-left: 0;
    margin-right: 0;
}
.block--content--align-left .block-rich-text {
    max-width: 880px;
    margin-left: 0;
    margin-right: 0;
}
@media (min-width: 1100px) {
    .block--content--align-left .block-rich-text { max-width: none; }
}

/* Default single-column body (no ToC) */
.block-content__body { display: block; }

/* Split layout — side ToC + prose. Desktop only. */
.block-content__body--split {
    display: grid;
    grid-template-columns: 1fr;
    gap: 32px;
}
@media (min-width: 900px) {
    .block-content__body--split {
        grid-template-columns: 260px 1fr;
        gap: 64px;
        align-items: start;
    }
}

.block-content__toc {
    display: flex;
    flex-direction: column;
}
@media (min-width: 900px) {
    .block-content__toc {
        position: sticky;
        top: 100px;  /* clears the sticky header (~80px) with breathing room */
    }
}
/* Per spec: hide the side ToC entirely on mobile */
@media (max-width: 899.98px) {
    .block-content__toc { display: none; }
}

.block-content__toc-entry {
    display: block;
    padding: 12px 0;
    border-top: 1px solid var(--rule);
    text-decoration: none;
    color: inherit;
    transition: background .15s, padding .15s;
}
.block-content__toc-entry:last-child {
    border-bottom: 1px solid var(--rule);
}
a.block-content__toc-entry:hover {
    background: var(--cream-2);
    padding-inline: 10px;
}
.block-content__toc-num {
    display: block;
    font-family: var(--font-serif);
    font-weight: 400;
    font-size: 15px;
    color: var(--plum);
    letter-spacing: 0.02em;
    margin-bottom: 4px;
}
.block-content__toc-label {
    display: block;
    font-family: var(--font-sans);
    font-weight: var(--label-weight);
    letter-spacing: var(--label-tracking);
    text-transform: uppercase;
    font-size: var(--label-size);
    color: var(--plum-2);
}
a.block-content__toc-entry:hover .block-content__toc-label {
    color: var(--rose);
}

/* -------------------------------------------------------------------------
   QUOTE — pull quote (Cv2 3-col: L att · quote · R att, optional below)
   ------------------------------------------------------------------------- */
.block--quote { padding-block: 0; }
.block--quote.block--spacing-top    { padding-top: var(--rhythm-section-sm); }
.block--quote.block--spacing-bottom { padding-bottom: var(--rhythm-section-sm); }
.block--quote.block--spacing-both   { padding-block: var(--rhythm-section-sm); }
@media (min-width: 720px) {
    .block--quote.block--spacing-top    { padding-top: var(--rhythm-section); }
    .block--quote.block--spacing-bottom { padding-bottom: var(--rhythm-section); }
    .block--quote.block--spacing-both   { padding-block: var(--rhythm-section); }
}
.block--quote.block--border-top    { border-top: 1px solid var(--plum); }
.block--quote.block--border-bottom { border-bottom: 1px solid var(--plum); }

.block-quote {
    max-width: 1320px;
    margin: 0 auto;
    padding-inline: var(--gutter-sm);
    display: grid;
    grid-template-columns: 1fr;
    gap: 20px;
    align-items: start;
}
@media (min-width: 720px) {
    .block-quote { padding-inline: var(--gutter); }
}
@media (min-width: 900px) {
    .block-quote {
        grid-template-columns: 1fr 3fr 1fr;
        gap: 40px;
    }
}

.block-quote__att {
    font-family: var(--font-sans);
    font-weight: var(--label-weight);
    letter-spacing: var(--label-tracking);
    text-transform: uppercase;
    font-size: var(--label-size);
    color: var(--plum-2);
}
@media (min-width: 900px) {
    .block-quote__att--left  { grid-column: 1; text-align: left; align-self: start; }
    .block-quote__att--right { grid-column: 3; text-align: right; align-self: end; }
}

.block-quote__text {
    font-family: var(--font-serif);
    font-style: italic;
    font-weight: 400;
    font-size: clamp(24px, 3.2vw, 44px);
    line-height: 1.2;
    letter-spacing: -0.01em;
    color: var(--plum);
    margin: 0;
    position: relative;
    padding-left: 0.6em;
}
@media (min-width: 900px) {
    .block-quote__text { grid-column: 2; }
}
.block-quote__text::before {
    content: '"';
    font-style: normal;
    color: var(--rose);
    position: absolute;
    left: 0;
    top: -0.1em;
}
.block-quote__text--reduced {
    font-size: clamp(20px, 2.2vw, 28px);
}

.block-quote__below {
    font-size: 15px;
    font-family: var(--font-sans);
    font-weight: var(--label-weight);
    letter-spacing: var(--label-tracking);
    text-transform: uppercase;
    color: var(--plum-2);
    text-align: right;
    margin-top: 8px;
}
@media (min-width: 900px) {
    .block-quote__below { grid-column: 1 / -1; }
}
.block-quote__below p { margin: 0; }

/* -------------------------------------------------------------------------
   TEXT + IMAGE
   ------------------------------------------------------------------------- */
.block-text-image {
    display: grid;
    grid-template-columns: 1fr;
    gap: 32px;
    align-items: center;
}
@media (min-width: 900px) {
    .block-text-image--width-50 { grid-template-columns: 1fr 1fr; gap: 48px; }
    .block-text-image--width-40 { grid-template-columns: 40fr 60fr; gap: 48px; }
    .block-text-image--width-60 { grid-template-columns: 60fr 40fr; gap: 48px; }
    .block-text-image--image-right { direction: rtl; }
    .block-text-image--image-right > * { direction: ltr; }
}
.block-text-image__figure { margin: 0; }
.block-text-image__image { width: 100%; height: auto; display: block; }
.block-text-image__caption {
    font-family: var(--font-sans);
    font-weight: var(--label-weight);
    letter-spacing: var(--label-tracking);
    text-transform: uppercase;
    font-size: var(--label-size-sm);
    color: var(--plum-2);
    margin-top: 10px;
}
.block-text-image__text { font-size: 18px; line-height: 1.65; }

/* -------------------------------------------------------------------------
   GALLERY
   ------------------------------------------------------------------------- */
.block-gallery__intro {
    max-width: 780px;
    margin-bottom: 32px;
}
.block-gallery__grid {
    display: grid;
    grid-template-columns: 1fr;
    gap: 12px;
}
@media (min-width: 640px) {
    .block-gallery__grid--cols-2 { grid-template-columns: repeat(2, 1fr); }
    .block-gallery__grid--cols-3 { grid-template-columns: repeat(2, 1fr); }
    .block-gallery__grid--cols-4 { grid-template-columns: repeat(2, 1fr); }
}
@media (min-width: 900px) {
    .block-gallery__grid--cols-3 { grid-template-columns: repeat(3, 1fr); }
    .block-gallery__grid--cols-4 { grid-template-columns: repeat(4, 1fr); }
}
.block-gallery__item { margin: 0; position: relative; }
.block-gallery__item a { display: block; }
.block-gallery__image {
    width: 100%;
    height: auto;
    display: block;
    transition: transform .3s;
}
.block-gallery__item a:hover .block-gallery__image { transform: scale(1.02); }
.block-gallery__caption {
    margin-top: 8px;
    font-family: var(--font-sans);
    font-weight: var(--label-weight);
    letter-spacing: var(--label-tracking);
    text-transform: uppercase;
    font-size: var(--label-size-sm);
    color: var(--plum-2);
}

/* Lightbox */
.lightbox-overlay {
    position: fixed;
    inset: 0;
    background: rgba(38, 32, 27, 0.92);
    z-index: 1000;
    display: grid;
    place-items: center;
    padding: 32px;
    cursor: zoom-out;
}
.lightbox-container {
    max-width: 92vw;
    max-height: 92vh;
    display: flex;
    flex-direction: column;
    gap: 12px;
    align-items: center;
}
.lightbox-image {
    max-width: 100%;
    max-height: 88vh;
    object-fit: contain;
}
.lightbox-caption {
    color: var(--cream);
    font-family: var(--font-sans);
    font-weight: var(--label-weight);
    letter-spacing: var(--label-tracking);
    text-transform: uppercase;
    font-size: var(--label-size);
    margin: 0;
}

/* -------------------------------------------------------------------------
   TIMELINE
   ------------------------------------------------------------------------- */
.block-timeline {
    list-style: none;
    margin: 0;
    padding: 0;
    border-top: 1px solid var(--rule);
}
.block-timeline__item {
    position: relative;
    padding: 28px 0 28px 32px;
    border-bottom: 1px solid var(--rule);
}
.block-timeline__marker {
    position: absolute;
    left: 8px;
    top: 38px;
    width: 10px;
    height: 10px;
    border-radius: 50%;
    background: var(--rose);
    box-shadow: 0 0 0 4px var(--cream);
}
.block-timeline__date {
    font-family: var(--font-sans);
    font-weight: var(--label-weight);
    letter-spacing: var(--label-tracking);
    text-transform: uppercase;
    font-size: var(--label-size);
    color: var(--plum-2);
    margin: 0 0 6px;
}
.block-timeline__title {
    font-family: var(--font-serif);
    font-size: 22px;
    font-weight: 500;
    color: var(--plum);
    margin: 0 0 10px;
    letter-spacing: -0.01em;
}
.block-timeline__body {
    font-size: 17px;
    line-height: 1.6;
}
.block-timeline__body--with-image {
    display: grid;
    grid-template-columns: 1fr;
    gap: 20px;
    align-items: start;
}
@media (min-width: 720px) {
    .block-timeline__body--with-image { grid-template-columns: 1fr 1fr; }
    .block-timeline__body--image-left { direction: rtl; }
    .block-timeline__body--image-left > * { direction: ltr; }
}
.block-timeline__figure { margin: 0; }
.block-timeline__image { width: 100%; height: auto; display: block; }

/* -------------------------------------------------------------------------
   ACCORDION
   ------------------------------------------------------------------------- */
.block-accordion__intro {
    max-width: 780px;
    margin-bottom: 28px;
}
.block-accordion__list { margin-top: 8px; }
.block-accordion__item {
    border-bottom: 1px solid var(--rule);
    padding: 0;
    transition: box-shadow .2s ease;
}
/* Subtle open-state cue — an inset plum bar on the left rather than a
   background override. This way, the editor-chosen accordion_color
   (applied via .bg-* class on each <details>) is preserved when open. */
.block-accordion__item[open] {
    box-shadow: inset 3px 0 0 var(--plum);
}
.bg-plum.block-accordion__item[open],
.bg-plum-2.block-accordion__item[open] {
    box-shadow: inset 3px 0 0 var(--yellow);
}
.bg-yellow.block-accordion__item[open],
.bg-yellow-bright.block-accordion__item[open] {
    box-shadow: inset 3px 0 0 var(--plum);
}
.block-accordion__summary {
    list-style: none;
    padding: 20px var(--gutter-sm);
    cursor: pointer;
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 16px;
    position: relative;
}
.block-accordion__summary::-webkit-details-marker { display: none; }
.block-accordion__summary h2,
.block-accordion__summary h3 {
    font-family: var(--font-serif);
    font-weight: 500;
    font-size: clamp(18px, 2vw, 22px);
    margin: 0;
    color: var(--plum);
    letter-spacing: -0.01em;
    line-height: 1.3;
}
.bg-plum .block-accordion__summary h2,
.bg-plum .block-accordion__summary h3,
.bg-plum-2 .block-accordion__summary h2,
.bg-plum-2 .block-accordion__summary h3,
.bg-rose .block-accordion__summary h2,
.bg-rose .block-accordion__summary h3 {
    color: var(--on-plum);
}
.block-accordion__summary::after {
    content: '+';
    font-family: var(--font-sans);
    font-weight: 500;
    font-size: 22px;
    color: var(--plum);
    transition: transform .2s;
    line-height: 1;
    flex: 0 0 auto;
}
.bg-plum .block-accordion__summary::after,
.bg-plum-2 .block-accordion__summary::after,
.bg-rose .block-accordion__summary::after { color: var(--on-plum); }
.block-accordion__item[open] .block-accordion__summary::after { content: '−'; }
.block-accordion__body {
    padding: 0 var(--gutter-sm) 24px;
    font-family: var(--font-serif);
    font-size: 17px;
    line-height: 1.65;
    color: var(--ink);
}
.bg-plum .block-accordion__body,
.bg-plum-2 .block-accordion__body,
.bg-rose .block-accordion__body { color: var(--on-plum-muted); }

/* -------------------------------------------------------------------------
   CONTACT FORM — Cv2 split: intro + direct details on left, form on right
   ------------------------------------------------------------------------- */
.block--contact-form { padding-block: 0; }
.block--contact-form.block--spacing-top    { padding-top: var(--rhythm-section-sm); }
.block--contact-form.block--spacing-bottom { padding-bottom: var(--rhythm-section-sm); }
.block--contact-form.block--spacing-both   { padding-block: var(--rhythm-section-sm); }
@media (min-width: 720px) {
    .block--contact-form.block--spacing-top    { padding-top: var(--rhythm-section); }
    .block--contact-form.block--spacing-bottom { padding-bottom: var(--rhythm-section); }
    .block--contact-form.block--spacing-both   { padding-block: var(--rhythm-section); }
}
.block--contact-form.block--border-top    { border-top: 1px solid var(--plum); }
.block--contact-form.block--border-bottom { border-bottom: 1px solid var(--plum); }

.block-contact-form {
    display: grid;
    grid-template-columns: 1fr;
}
@media (min-width: 900px) {
    .block-contact-form { grid-template-columns: 1fr 1fr; }
}

/* LEFT — intro + direct details */
.block-contact-form__intro {
    padding: 48px var(--gutter-sm);
    display: flex;
    flex-direction: column;
    gap: 18px;
}
@media (min-width: 720px) {
    .block-contact-form__intro { padding: 64px var(--gutter); }
}
.block-contact-form__intro .section-num,
.block-contact-form__intro .section-num--plain { color: var(--rose); }

.block-contact-form__heading {
    font-family: var(--font-serif);
    font-weight: 400;
    font-size: clamp(36px, 4.4vw, 64px);
    line-height: 1;
    letter-spacing: -0.02em;
    color: var(--plum);
    margin: 0;
}
.block-contact-form__heading em { font-style: italic; color: var(--rose); }

.block-contact-form__body {
    font-size: 17px;
    line-height: 1.6;
    max-width: 42ch;
    color: var(--plum-2);
}
.block-contact-form__body p:last-child { margin-bottom: 0; }

.block-contact-form__details {
    display: flex;
    flex-direction: column;
    gap: 2px;
    margin-top: 8px;
    font-family: var(--font-serif);
    font-size: 16px;
    line-height: 1.9;
    color: var(--plum-2);
}
.block-contact-form__detail { display: block; }
.block-contact-form__detail--link {
    color: var(--plum);
    text-decoration: underline;
    text-decoration-thickness: 1px;
    text-underline-offset: 3px;
    transition: color .15s;
}
.block-contact-form__detail--link:hover { color: var(--rose); }

/* RIGHT — form. Own bg + plum hairline divider between the two columns.
   Desktop: vertical divider; mobile: horizontal (the bg change already marks
   the boundary, but the line keeps the pattern consistent). */
.block-contact-form__form-col {
    padding: 48px var(--gutter-sm);
    border-top: 1px solid var(--plum);
}
@media (min-width: 720px) {
    .block-contact-form__form-col { padding: 64px var(--gutter); }
}
@media (min-width: 900px) {
    .block-contact-form__form-col {
        border-top: 0;
        border-left: 1px solid var(--plum);
    }
}

.block-contact-form__message {
    padding: 14px 18px;
    border: 1px solid;
    margin-bottom: 20px;
    font-family: var(--font-sans);
    font-size: 14px;
}
.block-contact-form__message--success {
    background: var(--cream-2);
    border-color: var(--plum);
    color: var(--plum);
}
.block-contact-form__message--error {
    background: #fce8eb;
    border-color: var(--rose);
    color: var(--rose);
}

/* Form fields — shared with the generic .form class */
.form-field { margin-bottom: 26px; }
.form-field__label,
.form-field__group legend {
    display: block;
    font-family: var(--font-sans);
    font-weight: var(--label-weight);
    letter-spacing: var(--label-tracking);
    text-transform: uppercase;
    font-size: var(--label-size-sm);
    color: var(--plum-2);
    margin-bottom: 8px;
}
.form-field__required { color: var(--rose); }
.form-field input[type="text"],
.form-field input[type="email"],
.form-field input[type="url"],
.form-field input[type="tel"],
.form-field input[type="number"],
.form-field input[type="date"],
.form-field input[type="datetime-local"],
.form-field select,
.form-field textarea {
    width: 100%;
    padding: 10px 0;
    border: 0;
    border-bottom: 1px solid var(--plum);
    background: transparent;
    font-family: var(--font-serif);
    font-size: 16px;
    color: var(--ink);
    outline: none;
}
.form-field input:focus,
.form-field select:focus,
.form-field textarea:focus { border-bottom-color: var(--rose); }
.form-field textarea { min-height: 180px; resize: vertical; }
.form-field__check {
    display: flex;
    gap: 10px;
    align-items: center;
    font-family: var(--font-serif);
    font-size: 16px;
    color: var(--ink);
    cursor: pointer;
}
.form-field__group {
    border: 0;
    padding: 0;
    margin: 0;
}
.form-field__help {
    display: block;
    margin-top: 6px;
    font-size: 12px;
    color: var(--plum-2);
}
.contact-form__honeypot {
    position: absolute;
    left: -9999px;
    width: 1px;
    height: 1px;
    overflow: hidden;
}

/* The submit button uses .btn.btn--primary now — keep a small margin-top */
.block--contact-form button[type="submit"].btn { margin-top: 16px; }
.block--contact-form button[type="submit"]:disabled {
    opacity: 0.6;
    cursor: not-allowed;
}

/* -------------------------------------------------------------------------
   SPLIT FEATURE — image + structured teaser (Cv2 choir teaser pattern)
   ------------------------------------------------------------------------- */
.block--split-feature { padding-block: 0; }

.block--split-feature.block--spacing-top    { padding-top: var(--rhythm-section-sm); }
.block--split-feature.block--spacing-bottom { padding-bottom: var(--rhythm-section-sm); }
.block--split-feature.block--spacing-both   { padding-block: var(--rhythm-section-sm); }
@media (min-width: 720px) {
    .block--split-feature.block--spacing-top    { padding-top: var(--rhythm-section); }
    .block--split-feature.block--spacing-bottom { padding-bottom: var(--rhythm-section); }
    .block--split-feature.block--spacing-both   { padding-block: var(--rhythm-section); }
}
.block--split-feature.block--border-top    { border-top: 1px solid var(--plum); }
.block--split-feature.block--border-bottom { border-bottom: 1px solid var(--plum); }

.block-split-feature {
    display: grid;
    grid-template-columns: 1fr;
}
@media (min-width: 900px) {
    .block-split-feature { grid-template-columns: 1.1fr 1fr; }
}

.block-split-feature__media {
    min-height: 360px;
    position: relative;
    overflow: hidden;
}
@media (min-width: 900px) {
    .block-split-feature__media { min-height: 480px; }
    .block--split-feature--image-right .block-split-feature__media {
        order: 2;
        border-left: 1px solid var(--rule);
    }
    .block--split-feature--image-left .block-split-feature__media {
        border-right: 1px solid var(--rule);
    }
}
.block-split-feature__image {
    width: 100%;
    height: 100%;
    object-fit: cover;
    object-position: center;
    display: block;
    position: absolute;
    inset: 0;
}
.block-split-feature__placeholder {
    width: 100%;
    height: 100%;
    min-height: 360px;
    background:
        repeating-linear-gradient(135deg, transparent 0 10px, rgba(59, 31, 40, 0.06) 10px 11px),
        var(--cream-2);
    display: grid;
    place-items: center;
    padding: 32px;
    text-align: center;
}
.block-split-feature__placeholder-label {
    font-family: var(--font-sans);
    font-weight: var(--label-weight);
    letter-spacing: var(--label-tracking);
    text-transform: uppercase;
    font-size: var(--label-size-sm);
    color: var(--plum-2);
    max-width: 28ch;
    line-height: 1.6;
}

.block-split-feature__text {
    padding: 48px var(--gutter-sm);
    display: flex;
    flex-direction: column;
    gap: 18px;
    justify-content: center;
}
@media (min-width: 720px) {
    .block-split-feature__text { padding: 64px var(--gutter); }
}
@media (min-width: 900px) {
    .block--split-feature--image-right .block-split-feature__text { order: 1; }
}

/* Section label reads rose inside the split feature (matches Cv2) */
.block-split-feature__text .section-num,
.block-split-feature__text .section-num--plain { color: var(--rose); }

.block-split-feature__heading {
    font-family: var(--font-serif);
    font-weight: 400;
    font-size: clamp(32px, 3.6vw, 52px);
    line-height: 1.05;
    letter-spacing: -0.01em;
    color: var(--plum);
    margin: 0;
}
.block-split-feature__heading em { font-style: italic; color: var(--rose); }
.block-split-feature__heading .mark { background: var(--yellow); padding: 0 6px; display: inline-block; transform: rotate(-1deg); }

.block-split-feature__body {
    font-size: 17px;
    line-height: 1.65;
    max-width: 50ch;
}
.block-split-feature__body p:last-child { margin-bottom: 0; }

.block-split-feature__stats {
    display: flex;
    flex-wrap: wrap;
    gap: 32px;
    padding: 20px 0;
    border-top: 1px solid var(--rule);
    border-bottom: 1px solid var(--rule);
    margin-top: 4px;
}
.block-split-feature__stat-value {
    font-family: var(--font-serif);
    font-size: 28px;
    color: var(--plum);
    line-height: 1;
    font-weight: 500;
    letter-spacing: -0.01em;
}
.block-split-feature__stat-label {
    font-family: var(--font-sans);
    font-weight: var(--label-weight);
    letter-spacing: var(--label-tracking);
    text-transform: uppercase;
    font-size: var(--label-size-sm);
    color: var(--plum-2);
    margin-top: 6px;
}

.block-split-feature__cta {
    font-family: var(--font-sans);
    font-weight: var(--label-weight);
    letter-spacing: var(--label-tracking);
    text-transform: uppercase;
    font-size: var(--label-size);
    color: var(--plum);
    text-decoration: none;
    border-bottom: 1px solid var(--plum);
    padding-bottom: 2px;
    width: fit-content;
    transition: color .15s, border-color .15s;
}
.block-split-feature__cta:hover {
    color: var(--rose);
    border-color: var(--rose);
}

/* -------------------------------------------------------------------------
   SPLIT BIO — two-toned intro + credentials grid (Cv2 bio pattern)
   ------------------------------------------------------------------------- */
.block--split-bio { padding-block: 0; }

.block--split-bio.block--spacing-top    { padding-top: var(--rhythm-section-sm); }
.block--split-bio.block--spacing-bottom { padding-bottom: var(--rhythm-section-sm); }
.block--split-bio.block--spacing-both   { padding-block: var(--rhythm-section-sm); }
@media (min-width: 720px) {
    .block--split-bio.block--spacing-top    { padding-top: var(--rhythm-section); }
    .block--split-bio.block--spacing-bottom { padding-bottom: var(--rhythm-section); }
    .block--split-bio.block--spacing-both   { padding-block: var(--rhythm-section); }
}
.block--split-bio.block--border-top    { border-top: 1px solid var(--plum); }
.block--split-bio.block--border-bottom { border-bottom: 1px solid var(--plum); }

.block-split-bio {
    display: grid;
    grid-template-columns: 1fr;
}
@media (min-width: 900px) {
    .block-split-bio { grid-template-columns: 1fr 1.4fr; }
}

/* LEFT — text column */
.block-split-bio__text {
    padding: 48px var(--gutter-sm);
    display: flex;
    flex-direction: column;
    gap: 16px;
    justify-content: center;
}
@media (min-width: 720px) {
    .block-split-bio__text { padding: 64px var(--gutter); }
}

.block-split-bio__heading {
    font-family: var(--font-serif);
    font-weight: 400;
    font-size: clamp(32px, 3.6vw, 52px);
    line-height: 1.05;
    letter-spacing: -0.01em;
    color: inherit;
    margin: 0;
}
.block-split-bio__heading em { font-style: italic; }

/* Accent colours depend on the text column's background */
.block-split-bio__text.bg-plum .section-num,
.block-split-bio__text.bg-plum .section-num--plain,
.block-split-bio__text.bg-plum-2 .section-num,
.block-split-bio__text.bg-plum-2 .section-num--plain { color: var(--yellow); }
.block-split-bio__text.bg-plum .block-split-bio__heading em,
.block-split-bio__text.bg-plum-2 .block-split-bio__heading em { color: var(--yellow); }

.block-split-bio__text.bg-cream .section-num,
.block-split-bio__text.bg-cream .section-num--plain,
.block-split-bio__text.bg-cream-2 .section-num,
.block-split-bio__text.bg-cream-2 .section-num--plain { color: var(--rose); }
.block-split-bio__text.bg-cream .block-split-bio__heading em,
.block-split-bio__text.bg-cream-2 .block-split-bio__heading em { color: var(--rose); }

.block-split-bio__text.bg-yellow .section-num,
.block-split-bio__text.bg-yellow .section-num--plain { color: var(--plum); }
.block-split-bio__text.bg-yellow .block-split-bio__heading em { color: var(--rose); }

.block-split-bio__body {
    font-family: var(--font-serif);
    font-size: 16px;
    line-height: 1.65;
}
.block-split-bio__body p:last-child { margin-bottom: 0; }

/* Badge / certification seal — floats right at bottom of the text column */
.block-split-bio__badge-wrap {
    margin-top: 24px;
    display: flex;
    justify-content: flex-end;
}
.block-split-bio__badge {
    width: 90px;
    height: 90px;
    display: block;
}
@media (min-width: 720px) {
    .block-split-bio__badge { width: 120px; height: 120px; }
}
.block-split-bio__badge-link {
    display: inline-block;
    line-height: 0;
    border-radius: 50%;
    transition: transform .2s, opacity .2s;
    outline-offset: 4px;
}
.block-split-bio__badge-link:hover {
    transform: scale(1.04);
    opacity: 0.92;
}
.block-split-bio__badge-link:focus-visible {
    outline: 2px solid var(--yellow);
}

/* RIGHT — credentials grid */
.block-split-bio__creds {
    padding: 32px var(--gutter-sm);
    display: grid;
    grid-template-columns: 1fr;
    gap: 4px 32px;
}
@media (min-width: 720px) {
    .block-split-bio__creds {
        padding: 48px var(--gutter);
        grid-template-columns: 1fr 1fr;
    }
}

.block-split-bio__cred {
    display: grid;
    grid-template-columns: 60px 1fr;
    gap: 12px;
    padding: 14px 0;
    border-bottom: 1px solid var(--rule);
    align-items: start;
}
.block-split-bio__cred-code {
    font-family: var(--font-sans);
    font-weight: var(--label-weight);
    letter-spacing: var(--label-tracking);
    text-transform: uppercase;
    font-size: var(--label-size);
    color: var(--plum-2);
    padding-top: 2px;
}
.block-split-bio__cred-title {
    font-family: var(--font-serif);
    font-size: 15px;
    line-height: 1.4;
    color: var(--plum);
}
/* On dark credentials bg, readjust colours */
.block-split-bio__creds.bg-plum .block-split-bio__cred-code,
.block-split-bio__creds.bg-plum-2 .block-split-bio__cred-code { color: var(--yellow); }
.block-split-bio__creds.bg-plum .block-split-bio__cred-title,
.block-split-bio__creds.bg-plum-2 .block-split-bio__cred-title { color: var(--on-plum); }

/* -------------------------------------------------------------------------
   Cookie consent banner — fixed at the bottom, hovers above content.
   Modal (preferences) sits above the banner.
   ------------------------------------------------------------------------- */
.cookie-consent-banner {
    position: fixed;
    left: 0;
    right: 0;
    bottom: 0;
    z-index: 100;
    background: var(--cream);
    border-top: 1px solid var(--plum);
    box-shadow: 0 -4px 20px rgba(38, 32, 27, 0.08);
    font-family: var(--font-sans);
    color: var(--plum);
}
.cookie-consent-banner__inner {
    max-width: 1320px;
    margin: 0 auto;
    padding: 20px var(--gutter-sm);
    display: grid;
    grid-template-columns: 1fr;
    gap: 16px;
    align-items: center;
}
@media (min-width: 900px) {
    .cookie-consent-banner__inner {
        grid-template-columns: 1fr auto;
        padding: 20px var(--gutter);
        gap: 32px;
    }
}
.cookie-consent-banner__title {
    font-family: var(--font-serif);
    font-weight: 500;
    font-size: 18px;
    color: var(--plum);
    margin: 0 0 6px;
    letter-spacing: -0.01em;
}
.cookie-consent-banner__body {
    font-family: var(--font-serif);
    font-size: 14px;
    line-height: 1.55;
    color: var(--plum-2);
}
.cookie-consent-banner__body p { margin: 0; }
.cookie-consent-banner__link {
    font-family: var(--font-sans);
    font-weight: var(--label-weight);
    letter-spacing: var(--label-tracking);
    text-transform: uppercase;
    font-size: var(--label-size-sm);
    color: var(--plum);
    text-decoration: underline;
    text-underline-offset: 3px;
    margin-top: 8px;
    display: inline-block;
}
.cookie-consent-banner__link:hover { color: var(--rose); }

.cookie-consent-banner__actions {
    display: flex;
    flex-wrap: wrap;
    gap: 10px;
    justify-content: flex-start;
}
@media (min-width: 900px) {
    .cookie-consent-banner__actions { flex-wrap: nowrap; justify-content: flex-end; }
}
.cookie-btn {
    font-family: var(--font-sans);
    font-weight: var(--label-weight);
    letter-spacing: var(--label-tracking);
    text-transform: uppercase;
    font-size: var(--label-size-sm);
    padding: 10px 16px;
    border-radius: 2px;
    cursor: pointer;
    transition: background .15s, color .15s, border-color .15s;
    white-space: nowrap;
}
.cookie-btn--outline {
    background: transparent;
    color: var(--plum);
    border: 1px solid var(--plum);
}
.cookie-btn--outline:hover {
    background: var(--plum);
    color: var(--cream);
}
.cookie-btn--solid {
    background: var(--plum);
    color: var(--cream);
    border: 1px solid var(--plum);
}
.cookie-btn--solid:hover {
    background: var(--plum-2);
    border-color: var(--plum-2);
}

/* Preferences modal — overlaps the banner */
.cookie-preferences-modal {
    position: fixed;
    inset: 0;
    z-index: 110;
    background: rgba(38, 32, 27, 0.55);
    align-items: center;
    justify-content: center;
    padding: 24px;
}
.cookie-preferences-content {
    background: var(--cream);
    border: 1px solid var(--plum);
    max-width: 640px;
    width: 100%;
    max-height: 90vh;
    overflow-y: auto;
    box-shadow: 0 20px 60px rgba(38, 32, 27, 0.25);
}
.cookie-preferences-header {
    display: flex;
    justify-content: space-between;
    align-items: center;
    padding: 20px 24px;
    border-bottom: 1px solid var(--rule);
}
.cookie-preferences-header h2 {
    font-family: var(--font-serif);
    font-weight: 500;
    font-size: 22px;
    color: var(--plum);
    margin: 0;
    letter-spacing: -0.01em;
}
.cookie-preferences-close {
    background: transparent;
    border: 0;
    font-size: 28px;
    line-height: 1;
    color: var(--plum-2);
    cursor: pointer;
    padding: 0 8px;
}
.cookie-preferences-close:hover { color: var(--rose); }

.cookie-preferences-body { padding: 20px 24px; }
.cookie-preferences-info {
    font-family: var(--font-serif);
    font-size: 15px;
    line-height: 1.6;
    color: var(--plum-2);
    margin-bottom: 20px;
}
.cookie-preferences-info p { margin: 0 0 10px; }

.cookie-categories {
    display: flex;
    flex-direction: column;
    gap: 16px;
}
.cookie-category {
    padding: 16px;
    border: 1px solid var(--rule);
    background: var(--cream-2);
}
.cookie-category__header {
    display: flex;
    justify-content: space-between;
    align-items: center;
    gap: 12px;
    margin-bottom: 8px;
}
.cookie-category__header h4 {
    font-family: var(--font-sans);
    font-weight: var(--label-weight);
    letter-spacing: var(--label-tracking);
    text-transform: uppercase;
    font-size: var(--label-size);
    color: var(--plum);
    margin: 0;
}
.cookie-category p {
    font-family: var(--font-serif);
    font-size: 14px;
    line-height: 1.55;
    color: var(--plum-2);
    margin: 0;
}
.cookie-toggle {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    font-family: var(--font-sans);
    font-weight: var(--label-weight);
    letter-spacing: var(--label-tracking);
    text-transform: uppercase;
    font-size: var(--label-size-sm);
    color: var(--plum-2);
    cursor: pointer;
}
.cookie-toggle input[type="checkbox"] { accent-color: var(--plum); }

/* Modal footer — 3 action buttons, centred with breathing room */
.cookie-preferences-footer {
    padding: 20px 24px 24px;
    border-top: 1px solid var(--rule);
    display: flex;
    flex-wrap: wrap;
    justify-content: center;
    gap: 12px;
}
@media (min-width: 560px) {
    .cookie-preferences-footer { gap: 16px; padding: 24px 28px 28px; }
}

/* -------------------------------------------------------------------------
   Block — Hero (Text only)
   No image — label + heading (left, constrained) + full-width subtitle + CTAs.
   ------------------------------------------------------------------------- */

.block--hero-text { padding-block: 0; }
.block--hero-text.block--spacing-top    { padding-top: var(--rhythm-section-sm); }
.block--hero-text.block--spacing-bottom { padding-bottom: var(--rhythm-section-sm); }
.block--hero-text.block--spacing-both   { padding-block: var(--rhythm-section-sm); }
@media (min-width: 720px) {
    .block--hero-text.block--spacing-top    { padding-top: var(--rhythm-section); }
    .block--hero-text.block--spacing-bottom { padding-bottom: var(--rhythm-section); }
    .block--hero-text.block--spacing-both   { padding-block: var(--rhythm-section); }
}
.block--hero-text.block--border-top    { border-top: 1px solid var(--plum); }
.block--hero-text.block--border-bottom { border-bottom: 1px solid var(--plum); }

.block-hero-text {
    padding-block: 48px;
    display: flex;
    flex-direction: column;
    gap: 24px;
}
@media (min-width: 720px) {
    .block-hero-text { padding-block: 72px; }
}

/* Full-bleed variant — drops the 1320px centred cap so the hero content
   aligns flush with the page gutter on very wide viewports. Use when the
   block below is also full-bleed (split, numbered-list, etc.) and you want
   left edges to line up. */
.block--hero-text--full-bleed .block-hero-text {
    max-width: none;
}
.block--hero-text--full-bleed > .block__inner {
    max-width: none;
}

.block-hero-text__label { color: var(--rose); }

.block-hero-text__heading {
    font-family: var(--font-serif);
    font-weight: 400;
    font-size: clamp(36px, 5.2vw, 72px);
    line-height: 1.02;
    letter-spacing: -0.015em;
    margin: 0;
    color: var(--plum);
    max-width: 18ch;
}
.block-hero-text__heading em { font-style: italic; color: var(--rose); }
.block-hero-text__heading .mark {
    background: var(--yellow);
    padding: 2px 8px;
    display: inline-block;
    transform: rotate(-1deg);
}
.bg-plum .block-hero-text__heading,
.bg-plum-2 .block-hero-text__heading { color: var(--on-plum); }
.bg-plum .block-hero-text__heading em,
.bg-plum-2 .block-hero-text__heading em { color: var(--yellow); }

.block-hero-text__sub {
    font-family: var(--font-serif);
    font-size: clamp(16px, 1.2vw, 19px);
    line-height: 1.55;
    color: var(--plum-2);
    max-width: 100%;
}
.block-hero-text__sub p { margin: 0 0 0.8em; }
.block-hero-text__sub p:last-child { margin-bottom: 0; }
.bg-plum .block-hero-text__sub,
.bg-plum-2 .block-hero-text__sub { color: var(--on-plum-muted); }

.block-hero-text__ctas {
    display: flex;
    flex-wrap: wrap;
    gap: 14px;
    margin-top: 4px;
}

/* -------------------------------------------------------------------------
   Block — CTA
   Full-width call-to-action strip. Defaults to bg-yellow.
   ------------------------------------------------------------------------- */

.block--cta { padding-block: 0; }
.block--cta.block--spacing-top    { padding-top: var(--rhythm-section-sm); }
.block--cta.block--spacing-bottom { padding-bottom: var(--rhythm-section-sm); }
.block--cta.block--spacing-both   { padding-block: var(--rhythm-section-sm); }
@media (min-width: 720px) {
    .block--cta.block--spacing-top    { padding-top: var(--rhythm-section); }
    .block--cta.block--spacing-bottom { padding-bottom: var(--rhythm-section); }
    .block--cta.block--spacing-both   { padding-block: var(--rhythm-section); }
}
.block--cta.block--border-top    { border-top: 1px solid var(--plum); }
.block--cta.block--border-bottom { border-bottom: 1px solid var(--plum); }

.block-cta {
    display: flex;
    flex-direction: column;
    gap: 20px;
    text-align: center;
    align-items: center;
}
@media (min-width: 720px) {
    .block-cta { padding-block: 16px; }
}

.block-cta .section-num {
    justify-content: center;
    width: auto;
    max-width: 100%;
}
.block-cta .section-num::after { display: none; }

.block-cta__heading {
    font-family: var(--font-serif);
    font-weight: 400;
    font-size: clamp(26px, 3vw, 40px);
    line-height: 1.15;
    letter-spacing: -0.01em;
    margin: 0;
    color: var(--plum);
    max-width: 28ch;
}
.block-cta__heading em {
    font-style: italic;
    color: var(--rose);
}
.bg-yellow .block-cta__heading em,
.bg-yellow-bright .block-cta__heading em { color: var(--plum); font-style: italic; }

.block-cta__heading .mark {
    background: var(--yellow);
    padding: 2px 6px;
    display: inline-block;
    transform: rotate(-1deg);
}
.bg-yellow .block-cta__heading .mark,
.bg-yellow-bright .block-cta__heading .mark {
    background: var(--plum);
    color: var(--on-plum);
}

.block-cta__sub {
    font-family: var(--font-serif);
    font-size: 16px;
    line-height: 1.6;
    color: var(--plum-2);
    max-width: 52ch;
}
.bg-plum .block-cta__sub,
.bg-plum-2 .block-cta__sub { color: var(--on-plum-muted); }

.block-cta__actions { margin-top: 8px; }

.bg-yellow .block-cta__actions .btn--primary,
.bg-yellow-bright .block-cta__actions .btn--primary {
    background: var(--plum);
    color: var(--cream);
    border-color: var(--plum);
}

/* -------------------------------------------------------------------------
   Block — Image Header
   Full-width image with optional caption plate.
   ------------------------------------------------------------------------- */

.block--image-header { padding-block: 0; }
.block--image-header.block--spacing-top    { padding-top: var(--rhythm-section-sm); }
.block--image-header.block--spacing-bottom { padding-bottom: var(--rhythm-section-sm); }
.block--image-header.block--spacing-both   { padding-block: var(--rhythm-section-sm); }
@media (min-width: 720px) {
    .block--image-header.block--spacing-top    { padding-top: var(--rhythm-section); }
    .block--image-header.block--spacing-bottom { padding-bottom: var(--rhythm-section); }
    .block--image-header.block--spacing-both   { padding-block: var(--rhythm-section); }
}
.block--image-header.block--border-top    { border-top: 1px solid var(--plum); }
.block--image-header.block--border-bottom { border-bottom: 1px solid var(--plum); }

.block-image-header {
    padding-block: 24px;
}
@media (min-width: 720px) {
    .block-image-header { padding-block: 40px; }
}

.block-image-header__figure {
    margin: 0;
    position: relative;
    border: 1px solid var(--rule);
    overflow: hidden;
    background: var(--cream-2);
}

.block-image-header__image {
    display: block;
    width: 100%;
    height: auto;
    aspect-ratio: 16 / 9;
    object-fit: cover;
}

.block--image-header--tall .block-image-header__image { aspect-ratio: 4 / 3; }
.block--image-header--short .block-image-header__image { aspect-ratio: 21 / 9; }

.block-image-header__placeholder {
    aspect-ratio: 16 / 9;
    background:
        repeating-linear-gradient(45deg,
            transparent 0, transparent 10px,
            rgba(91, 26, 49, 0.08) 10px, rgba(91, 26, 49, 0.08) 11px);
    display: flex;
    align-items: center;
    justify-content: center;
    color: var(--plum-2);
    font-family: var(--font-sans);
    font-weight: var(--label-weight);
    letter-spacing: var(--label-tracking);
    text-transform: uppercase;
    font-size: var(--label-size);
}
.block--image-header--tall .block-image-header__placeholder { aspect-ratio: 4 / 3; }
.block--image-header--short .block-image-header__placeholder { aspect-ratio: 21 / 9; }

.block-image-header__caption {
    display: flex;
    justify-content: space-between;
    padding: 10px 14px;
    font-family: var(--font-sans);
    font-weight: var(--label-weight);
    letter-spacing: var(--label-tracking);
    text-transform: uppercase;
    font-size: var(--label-size-sm);
    color: var(--plum-2);
    background: rgba(241, 234, 216, 0.85);
    border-top: 1px solid var(--rule);
}

/* -------------------------------------------------------------------------
   Block — Embed (responsive video/iframe)
   ------------------------------------------------------------------------- */

.block--embed { padding-block: 0; }
.block--embed.block--spacing-top    { padding-top: var(--rhythm-section-sm); }
.block--embed.block--spacing-bottom { padding-bottom: var(--rhythm-section-sm); }
.block--embed.block--spacing-both   { padding-block: var(--rhythm-section-sm); }
@media (min-width: 720px) {
    .block--embed.block--spacing-top    { padding-top: var(--rhythm-section); }
    .block--embed.block--spacing-bottom { padding-bottom: var(--rhythm-section); }
    .block--embed.block--spacing-both   { padding-block: var(--rhythm-section); }
}
.block--embed.block--border-top    { border-top: 1px solid var(--plum); }
.block--embed.block--border-bottom { border-bottom: 1px solid var(--plum); }

.block-embed {
    padding-block: 32px;
}
.block-embed__head { margin-bottom: 20px; }
.block-embed__heading {
    font-family: var(--font-serif);
    font-weight: 400;
    font-size: clamp(24px, 2.4vw, 34px);
    line-height: 1.15;
    letter-spacing: -0.01em;
    margin: 12px 0 12px;
    color: var(--plum);
}
.block-embed__heading em { font-style: italic; color: var(--rose); }
.block-embed__body {
    font-family: var(--font-serif);
    font-size: 17px;
    line-height: 1.6;
    color: var(--ink);
    max-width: 68ch;
}
.bg-plum .block-embed__body,
.bg-plum-2 .block-embed__body { color: var(--on-plum-muted); }

.block-embed__frame {
    position: relative;
    width: 100%;
    aspect-ratio: 16 / 9;
    background: var(--cream-2);
    border: 1px solid var(--rule);
    overflow: hidden;
}
.block-embed__frame iframe,
.block-embed__frame video,
.block-embed__frame embed,
.block-embed__frame object {
    position: absolute;
    inset: 0;
    width: 100%;
    height: 100%;
    border: 0;
}

.block-embed__caption {
    margin-top: 12px;
    font-family: var(--font-sans);
    font-weight: var(--label-weight);
    letter-spacing: var(--label-tracking);
    text-transform: uppercase;
    font-size: var(--label-size-sm);
    color: var(--plum-2);
}

/* Split layouts — embed on one side, text on the other. Mirrors split-feature. */
.block-embed--split {
    display: grid;
    grid-template-columns: 1fr;
}
@media (min-width: 900px) {
    .block-embed--split { grid-template-columns: 1.1fr 1fr; }
}
.block-embed--split .block-embed__media { padding: 48px var(--gutter-sm); }
.block-embed--split .block-embed__text {
    padding: 48px var(--gutter-sm);
    display: flex;
    flex-direction: column;
    gap: 14px;
    justify-content: center;
}
@media (min-width: 720px) {
    .block-embed--split .block-embed__media { padding: 64px var(--gutter); }
    .block-embed--split .block-embed__text  { padding: 64px var(--gutter); }
}
@media (min-width: 900px) {
    .block--embed--split-right .block-embed__media {
        order: 2;
        border-left: 1px solid var(--rule);
    }
    .block--embed--split-left .block-embed__media {
        border-right: 1px solid var(--rule);
    }
    .block--embed--split-right .block-embed__text { order: 1; }
}
.block-embed--split .block-embed__text .section-num,
.block-embed--split .block-embed__text .section-num--plain { color: var(--rose); }
.block-embed--split .block-embed__heading { margin-top: 0; }

/* -------------------------------------------------------------------------
   Block — Testimonials
   Grid of testimonials with attribution. Featured items full-width.
   ------------------------------------------------------------------------- */

.block--testimonials { padding-block: 0; }
.block--testimonials.block--spacing-top    { padding-top: var(--rhythm-section-sm); }
.block--testimonials.block--spacing-bottom { padding-bottom: var(--rhythm-section-sm); }
.block--testimonials.block--spacing-both   { padding-block: var(--rhythm-section-sm); }
@media (min-width: 720px) {
    .block--testimonials.block--spacing-top    { padding-top: var(--rhythm-section); }
    .block--testimonials.block--spacing-bottom { padding-bottom: var(--rhythm-section); }
    .block--testimonials.block--spacing-both   { padding-block: var(--rhythm-section); }
}
.block--testimonials.block--border-top    { border-top: 1px solid var(--plum); }
.block--testimonials.block--border-bottom { border-bottom: 1px solid var(--plum); }

.block-testimonials { padding-block: 48px; }
@media (min-width: 720px) {
    .block-testimonials { padding-block: 72px; }
}

.block-testimonials__head { margin-bottom: 40px; max-width: 64ch; }
.block-testimonials__head .section-num,
.block-testimonials__head .section-num--plain { color: var(--rose); margin-bottom: 16px; }
.block-testimonials__heading {
    font-family: var(--font-serif);
    font-weight: 400;
    font-size: clamp(28px, 3.4vw, 48px);
    line-height: 1.1;
    letter-spacing: -0.01em;
    margin: 0 0 16px;
    color: var(--plum);
}
.block-testimonials__heading em { font-style: italic; color: var(--rose); }
.block-testimonials__intro {
    font-family: var(--font-serif);
    font-size: 17px;
    line-height: 1.6;
    color: var(--plum-2);
}

.block-testimonials__items {
    display: grid;
    grid-template-columns: 1fr;
    gap: 24px;
}
@media (min-width: 760px) {
    .block-testimonials__items {
        grid-template-columns: repeat(2, 1fr);
        gap: 32px;
    }
}

.block-testimonials__item {
    margin: 0;
    padding: 28px;
    border: 1px solid var(--rule);
    background: var(--cream-2);
    display: flex;
    flex-direction: column;
    gap: 20px;
    position: relative;
}
.bg-plum .block-testimonials__item,
.bg-plum-2 .block-testimonials__item {
    background: rgba(241, 234, 216, 0.04);
    border-color: rgba(241, 234, 216, 0.2);
}

.block-testimonials__item--featured {
    grid-column: 1 / -1;
    padding: 36px 32px;
    background: transparent;
    border: 0;
    border-top: 1px solid var(--plum);
    border-bottom: 1px solid var(--plum);
}
@media (min-width: 720px) {
    .block-testimonials__item--featured { padding: 52px 8px; }
}

.block-testimonials__quote {
    margin: 0;
    font-family: var(--font-serif);
    font-size: 17px;
    line-height: 1.65;
    color: var(--ink);
    quotes: '\201C' '\201D';
}
.block-testimonials__quote p { margin: 0 0 1em; }
.block-testimonials__quote p:last-child { margin-bottom: 0; }
.block-testimonials__quote::before {
    content: open-quote;
    font-family: var(--font-serif);
    color: var(--rose);
    font-size: 1.3em;
    line-height: 0;
    vertical-align: -0.15em;
    margin-right: 2px;
}
.bg-plum .block-testimonials__quote,
.bg-plum-2 .block-testimonials__quote { color: var(--on-plum); }

.block-testimonials__item--featured .block-testimonials__quote {
    font-size: clamp(20px, 2.2vw, 28px);
    line-height: 1.35;
    color: var(--plum);
    font-style: italic;
}

.block-testimonials__cite {
    display: flex;
    flex-direction: column;
    gap: 2px;
    padding-top: 14px;
    border-top: 1px solid var(--rule);
}
.block-testimonials__item--featured .block-testimonials__cite {
    border-top: 0;
    padding-top: 8px;
}
.block-testimonials__name {
    font-family: var(--font-sans);
    font-weight: var(--label-weight);
    letter-spacing: var(--label-tracking);
    text-transform: uppercase;
    font-size: var(--label-size);
    color: var(--plum);
}
.bg-plum .block-testimonials__name,
.bg-plum-2 .block-testimonials__name { color: var(--yellow); }
.block-testimonials__role {
    font-family: var(--font-serif);
    font-size: 14px;
    color: var(--plum-2);
    font-style: italic;
}
.bg-plum .block-testimonials__role,
.bg-plum-2 .block-testimonials__role { color: var(--on-plum-muted); }

/* -------------------------------------------------------------------------
   Block — Gallery Grid
   Editorial tile grid + tag filter pills + lightbox carousel.
   ------------------------------------------------------------------------- */

.block--gallery-grid { padding-block: 0; }
.block--gallery-grid.block--spacing-top    { padding-top: var(--rhythm-section-sm); }
.block--gallery-grid.block--spacing-bottom { padding-bottom: var(--rhythm-section-sm); }
.block--gallery-grid.block--spacing-both   { padding-block: var(--rhythm-section-sm); }
@media (min-width: 720px) {
    .block--gallery-grid.block--spacing-top    { padding-top: var(--rhythm-section); }
    .block--gallery-grid.block--spacing-bottom { padding-bottom: var(--rhythm-section); }
    .block--gallery-grid.block--spacing-both   { padding-block: var(--rhythm-section); }
}
.block--gallery-grid.block--border-top    { border-top: 1px solid var(--plum); }
.block--gallery-grid.block--border-bottom { border-bottom: 1px solid var(--plum); }

.block-gallery-grid {
    padding-block: 48px;
}
@media (min-width: 720px) {
    .block-gallery-grid { padding-block: 64px; }
}

.block-gallery-grid__head { margin-bottom: 32px; max-width: 72ch; }
.block-gallery-grid__head .section-num,
.block-gallery-grid__head .section-num--plain { color: var(--rose); margin-bottom: 12px; }
.block-gallery-grid__heading {
    font-family: var(--font-serif);
    font-weight: 400;
    font-size: clamp(28px, 3.4vw, 44px);
    line-height: 1.1;
    letter-spacing: -0.01em;
    margin: 0 0 14px;
    color: var(--plum);
}
.block-gallery-grid__heading em { font-style: italic; color: var(--rose); }
.block-gallery-grid__intro {
    font-family: var(--font-serif);
    font-size: 17px;
    line-height: 1.6;
    color: var(--plum-2);
}

/* Editorial grid — 2 col on mobile, 4 col on tablet+, dense flow packs tightly.
   Row height is fixed at each breakpoint so col-span × row-span math stays clean;
   tiles use `aspect-ratio: auto` on tablet+ so the grid cell defines their size. */
.block-gallery-grid__tiles {
    display: grid;
    grid-template-columns: repeat(2, 1fr);
    grid-auto-flow: dense;
    grid-auto-rows: minmax(0, 180px);
    gap: 12px;
}
@media (min-width: 720px) {
    .block-gallery-grid__tiles {
        grid-template-columns: repeat(4, 1fr);
        grid-auto-rows: minmax(0, 220px);
        gap: 16px;
    }
}
@media (min-width: 1100px) {
    .block-gallery-grid__tiles {
        grid-auto-rows: minmax(0, 260px);
    }
}

/* Tile sizing — consistent col-span × row-span at every breakpoint. */
.block-gallery-grid__tile--square { grid-column: span 1; grid-row: span 1; }
.block-gallery-grid__tile--tall   { grid-column: span 1; grid-row: span 2; }
.block-gallery-grid__tile--wide   { grid-column: span 2; grid-row: span 1; }
.block-gallery-grid__tile--hero   { grid-column: span 2; grid-row: span 2; }

/* On very narrow viewports (2-col), wide/hero still make sense as full-width
   rows. Tall doubles its row-span. Keep the grid-row defaults above. */

.block-gallery-grid__tile {
    position: relative;
    display: block;
    overflow: hidden;
    border: 1px solid var(--rule);
    background: var(--cream-2);
    padding: 0;
    cursor: pointer;
    color: inherit;
    font: inherit;
    transition: transform .25s ease, box-shadow .25s ease;
}
.block-gallery-grid__tile:hover {
    transform: translateY(-2px);
    box-shadow: 0 6px 18px rgba(38, 32, 27, 0.15);
}
.block-gallery-grid__tile[hidden] { display: none; }

.block-gallery-grid__cover {
    width: 100%;
    height: 100%;
    object-fit: cover;
    display: block;
    transition: transform .4s ease;
}
.block-gallery-grid__tile:hover .block-gallery-grid__cover { transform: scale(1.03); }

.block-gallery-grid__placeholder {
    position: absolute;
    inset: 0;
    background:
        repeating-linear-gradient(135deg, transparent 0 10px, rgba(59, 31, 40, 0.06) 10px 11px),
        var(--cream-2);
}

.block-gallery-grid__tile-label {
    position: absolute;
    left: 0; right: 0; bottom: 0;
    padding: 12px 14px;
    background: linear-gradient(180deg, transparent, rgba(38, 32, 27, 0.7));
    color: var(--cream);
    display: flex;
    justify-content: space-between;
    align-items: flex-end;
    gap: 10px;
    font-family: var(--font-sans);
    pointer-events: none;
}
.block-gallery-grid__tile-title {
    font-weight: var(--label-weight);
    letter-spacing: var(--label-tracking);
    text-transform: uppercase;
    font-size: var(--label-size);
}
.block-gallery-grid__tile-count {
    font-size: var(--label-size-sm);
    opacity: 0.8;
    letter-spacing: var(--label-tracking);
    text-transform: uppercase;
}

/* Filter pills */
.block-gallery-grid__filters {
    margin-top: 28px;
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 10px;
}
.block-gallery-grid__filter-label {
    font-family: var(--font-sans);
    font-weight: var(--label-weight);
    letter-spacing: var(--label-tracking);
    text-transform: uppercase;
    font-size: var(--label-size-sm);
    color: var(--plum-2);
    margin-right: 8px;
}
.block-gallery-grid__pill {
    font-family: var(--font-sans);
    font-weight: var(--label-weight);
    letter-spacing: var(--label-tracking);
    text-transform: uppercase;
    font-size: var(--label-size);
    padding: 8px 14px;
    border: 1px solid var(--plum);
    background: transparent;
    color: var(--plum);
    cursor: pointer;
    transition: background .15s, color .15s;
}
.block-gallery-grid__pill:hover {
    background: var(--plum);
    color: var(--cream);
}
.block-gallery-grid__pill.is-active {
    background: var(--plum);
    color: var(--cream);
}

/* Lightbox */
.gallery-lightbox {
    position: fixed;
    inset: 0;
    background: rgba(38, 32, 27, 0.94);
    z-index: 1000;
    display: flex;
    align-items: center;
    justify-content: center;
    padding: 24px;
}
.gallery-lightbox[hidden] { display: none; }

.gallery-lightbox__figure {
    margin: 0;
    max-width: 90vw;
    max-height: 86vh;
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 14px;
}
.gallery-lightbox__image {
    max-width: 100%;
    max-height: 78vh;
    object-fit: contain;
    display: block;
    background: var(--cream-2);
    border: 1px solid rgba(241, 234, 216, 0.2);
}
.gallery-lightbox__caption {
    color: var(--cream);
    font-family: var(--font-sans);
    font-weight: var(--label-weight);
    letter-spacing: var(--label-tracking);
    text-transform: uppercase;
    font-size: var(--label-size);
    text-align: center;
    max-width: 80ch;
    margin: 0;
}
.gallery-lightbox__counter {
    position: fixed;
    bottom: 20px;
    left: 50%;
    transform: translateX(-50%);
    color: var(--on-plum-muted);
    font-family: var(--font-sans);
    font-weight: var(--label-weight);
    letter-spacing: var(--label-tracking);
    text-transform: uppercase;
    font-size: var(--label-size-sm);
}
.gallery-lightbox__close,
.gallery-lightbox__nav {
    position: fixed;
    top: 20px;
    right: 20px;
    background: transparent;
    border: 1px solid rgba(241, 234, 216, 0.35);
    color: var(--cream);
    width: 44px;
    height: 44px;
    border-radius: 50%;
    cursor: pointer;
    display: flex;
    align-items: center;
    justify-content: center;
    font-size: 22px;
    line-height: 1;
    transition: background .15s;
}
.gallery-lightbox__close:hover,
.gallery-lightbox__nav:hover { background: rgba(241, 234, 216, 0.12); }
.gallery-lightbox__nav--prev {
    top: 50%;
    right: auto;
    left: 20px;
    transform: translateY(-50%);
}
.gallery-lightbox__nav--next {
    top: 50%;
    right: 20px;
    left: auto;
    transform: translateY(-50%);
}

/* -------------------------------------------------------------------------
   Block — Square Grid (Brady-Bunch-style 3-column square tiles)
   Always 3 cols at every viewport; tiles crop square via aspect-ratio.
   ------------------------------------------------------------------------- */
.block--square-grid { padding-block: 0; }
.block--square-grid.block--spacing-top    { padding-top: var(--rhythm-section-sm); }
.block--square-grid.block--spacing-bottom { padding-bottom: var(--rhythm-section-sm); }
.block--square-grid.block--spacing-both   { padding-block: var(--rhythm-section-sm); }
@media (min-width: 720px) {
    .block--square-grid.block--spacing-top    { padding-top: var(--rhythm-section); }
    .block--square-grid.block--spacing-bottom { padding-bottom: var(--rhythm-section); }
    .block--square-grid.block--spacing-both   { padding-block: var(--rhythm-section); }
}
.block--square-grid.block--border-top    { border-top: 1px solid var(--plum); }
.block--square-grid.block--border-bottom { border-bottom: 1px solid var(--plum); }

.block-square-grid { padding-block: 32px; }
@media (min-width: 720px) { .block-square-grid { padding-block: 48px; } }

.block-square-grid__head { margin-bottom: 28px; max-width: 68ch; }
/* Default variant — head aligns with the centered image grid (900px, margin auto) */
.block--square-grid--head-grid .block-square-grid__head {
    max-width: 900px;
    margin-inline: auto;
}
/* Alternate variant — head aligns with the page gutter (current default .block__inner) */
.block--square-grid--head-gutter .block-square-grid__head {
    max-width: 68ch;
    margin-inline: 0;
}
.block-square-grid__head .section-num,
.block-square-grid__head .section-num--plain { color: var(--rose); margin-bottom: 10px; }
.block-square-grid__heading {
    font-family: var(--font-serif);
    font-weight: 400;
    font-size: clamp(26px, 3vw, 40px);
    line-height: 1.1;
    letter-spacing: -0.01em;
    margin: 0 0 12px;
    color: var(--plum);
}
.block-square-grid__heading em { font-style: italic; color: var(--rose); }
.block-square-grid__intro {
    font-family: var(--font-serif);
    font-size: 17px;
    line-height: 1.6;
    color: var(--plum-2);
}

/* Always 3 columns — preserves the Brady-Bunch rhythm on mobile */
.block-square-grid__tiles {
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    gap: 4px;
    max-width: 900px;
    margin-inline: auto;  /* Center within the wider .block__inner shell */
}
@media (min-width: 720px) {
    .block-square-grid__tiles { gap: 6px; }
}

.block-square-grid__tile {
    margin: 0;
    display: flex;
    flex-direction: column;
    gap: 8px;
}
.block-square-grid__btn {
    position: relative;
    width: 100%;
    aspect-ratio: 1 / 1;
    overflow: hidden;
    padding: 0;
    border: 1px solid var(--rule);
    background: var(--cream-2);
    cursor: pointer;
    display: block;
    transition: transform .25s ease, box-shadow .25s ease;
}
.block-square-grid__btn:hover {
    transform: scale(1.02);
    box-shadow: 0 4px 14px rgba(38, 32, 27, 0.15);
    z-index: 1;
    position: relative;
}
.block-square-grid__btn img {
    width: 100%;
    height: 100%;
    object-fit: cover;
    display: block;
    transition: transform .4s ease;
}
.block-square-grid__btn:hover img { transform: scale(1.04); }

.block-square-grid__caption {
    font-family: var(--font-sans);
    font-weight: var(--label-weight);
    letter-spacing: var(--label-tracking);
    text-transform: uppercase;
    font-size: var(--label-size-sm);
    color: var(--plum-2);
    text-align: center;
    /* Hidden by default — enabled via --captions variant */
    display: none;
}
.block--square-grid--captions .block-square-grid__caption { display: block; }
/* On mobile, always hide captions — tiles are too tight to carry readable text */
@media (max-width: 719px) {
    .block--square-grid--captions .block-square-grid__caption { display: none; }
}

/* -------------------------------------------------------------------------
   Latest — index page (card grid + tag filter pills)
   ------------------------------------------------------------------------- */
.block--latest-index .block__inner { padding-block: 0; }

.latest-index__filters {
    display: flex;
    flex-wrap: wrap;
    gap: 10px;
    align-items: center;
    padding-block: 32px;
    border-bottom: 1px solid var(--rule);
}
.latest-index__filter-label {
    font-family: var(--font-sans);
    font-weight: var(--label-weight);
    letter-spacing: var(--label-tracking);
    text-transform: uppercase;
    font-size: var(--label-size-sm);
    color: var(--plum-2);
    margin-right: 8px;
}
.latest-index__pill {
    font-family: var(--font-sans);
    font-weight: var(--label-weight);
    letter-spacing: var(--label-tracking);
    text-transform: uppercase;
    font-size: var(--label-size);
    padding: 8px 14px;
    border: 1px solid var(--plum);
    background: transparent;
    color: var(--plum);
    cursor: pointer;
    transition: background .15s, color .15s;
}
.latest-index__pill:hover { background: var(--plum); color: var(--cream); }
.latest-index__pill.is-active { background: var(--plum); color: var(--cream); }

.latest-index__grid {
    display: grid;
    grid-template-columns: 1fr;
    gap: 32px;
    padding-block: 40px;
}
@media (min-width: 720px) {
    .latest-index__grid { grid-template-columns: repeat(2, 1fr); gap: 40px; }
}
@media (min-width: 1100px) {
    .latest-index__grid { grid-template-columns: repeat(3, 1fr); gap: 48px; }
}

.latest-index__empty {
    padding: 32px 0;
    color: var(--plum-2);
    font-family: var(--font-serif);
    font-style: italic;
}

/* Card */
.latest-card[hidden] { display: none; }
.latest-card__link {
    display: block;
    color: inherit;
    text-decoration: none;
    transition: transform .25s ease;
}
.latest-card__link:hover { transform: translateY(-2px); }

.latest-card__media {
    position: relative;
    aspect-ratio: 8 / 5;
    overflow: hidden;
    border: 1px solid var(--rule);
    background: var(--cream-2);
    margin-bottom: 16px;
}
.latest-card__image {
    width: 100%;
    height: 100%;
    object-fit: cover;
    display: block;
    transition: transform .4s ease;
}
.latest-card__link:hover .latest-card__image { transform: scale(1.03); }
.latest-card__placeholder {
    position: absolute;
    inset: 0;
    background:
        repeating-linear-gradient(135deg, transparent 0 10px, rgba(59, 31, 40, 0.06) 10px 11px),
        var(--cream-2);
}

.latest-card__body { display: flex; flex-direction: column; gap: 8px; }

.latest-card__meta {
    display: flex;
    flex-wrap: wrap;
    gap: 10px;
    align-items: center;
    font-family: var(--font-sans);
    font-weight: var(--label-weight);
    letter-spacing: var(--label-tracking);
    text-transform: uppercase;
    font-size: var(--label-size-sm);
    color: var(--plum-2);
}
.latest-card__tags { display: inline-flex; flex-wrap: wrap; gap: 6px; }
.latest-card__tag {
    padding: 2px 8px;
    border: 1px solid var(--rule);
    background: var(--cream-2);
    color: var(--plum);
}

.latest-card__label {
    font-family: var(--font-sans);
    font-weight: var(--label-weight);
    letter-spacing: var(--label-tracking);
    text-transform: uppercase;
    font-size: var(--label-size);
    color: var(--rose);
}

.latest-card__title {
    font-family: var(--font-serif);
    font-weight: 500;
    font-size: clamp(22px, 2.4vw, 28px);
    line-height: 1.2;
    letter-spacing: -0.01em;
    margin: 2px 0 4px;
    color: var(--plum);
}

.latest-card__excerpt {
    font-family: var(--font-serif);
    font-size: 16px;
    line-height: 1.55;
    color: var(--plum-2);
    margin: 0;
    display: -webkit-box;
    -webkit-line-clamp: 3;
    -webkit-box-orient: vertical;
    overflow: hidden;
}

/* -------------------------------------------------------------------------
   Latest — post detail header + footer
   ------------------------------------------------------------------------- */
.block--latest-header .block__inner { padding-block: 0; }
.latest-post__header { padding-block: 40px 32px; max-width: 960px; }
@media (min-width: 720px) { .latest-post__header { padding-block: 64px 40px; } }

.latest-post__backlink {
    display: inline-block;
    font-family: var(--font-sans);
    font-weight: var(--label-weight);
    letter-spacing: var(--label-tracking);
    text-transform: uppercase;
    font-size: var(--label-size-sm);
    color: var(--plum-2);
    text-decoration: none;
    margin-bottom: 24px;
}
.latest-post__backlink:hover { color: var(--rose); }

.latest-post__label { color: var(--rose); margin-bottom: 12px; }

.latest-post__title {
    font-family: var(--font-serif);
    font-weight: 400;
    font-size: clamp(34px, 4.6vw, 60px);
    line-height: 1.05;
    letter-spacing: -0.015em;
    margin: 0 0 20px;
    color: var(--plum);
}

.latest-post__meta {
    display: flex;
    flex-wrap: wrap;
    gap: 14px;
    align-items: center;
    font-family: var(--font-sans);
    font-weight: var(--label-weight);
    letter-spacing: var(--label-tracking);
    text-transform: uppercase;
    font-size: var(--label-size-sm);
    color: var(--plum-2);
    margin-bottom: 28px;
}
.latest-post__tags { display: inline-flex; flex-wrap: wrap; gap: 8px; }
.latest-post__tag {
    padding: 4px 10px;
    border: 1px solid var(--plum);
    background: transparent;
    color: var(--plum);
    text-decoration: none;
    transition: background .15s, color .15s;
}
.latest-post__tag:hover { background: var(--plum); color: var(--cream); }

.latest-post__featured {
    margin: 0;
    overflow: hidden;
    border: 1px solid var(--rule);
}
.latest-post__featured img {
    display: block;
    width: 100%;
    height: auto;
    aspect-ratio: 16 / 9;
    object-fit: cover;
}

.latest-post__footer { padding-block: 0; }

/* Print — rough defaults; refined later if a "press kit" page is added */
@media print {
    .site-header, .site-footer, .cookie-consent-banner, .cookie-preferences-modal { display: none !important; }
    body { background: #fff; color: #000; }
}
