/* Central palette and composable colour utilities. */
:root {
    --color--white: #ffffff;
    --color--cream: #fffded;
    --color--cream-muted: #f1f0e5;
    --color--navy: #133e67;
    --color--orange: #e16333;
    --color--green: #85c48c;
    --color--green-light: var(--color--green);
    --color--logo-green: #458052;
    --color--logo-grey: #868d97;
    --color--connexus-orange: #db6b3d;
    --color--connexus-grey: #a7a7a7;
    --color--footer-ink: #536879;
    --color--ink: var(--color--navy);
    --color--muted: var(--color--navy);
    --color--edge: var(--color--cream-muted);
    --color--accent: var(--color--orange);
}
.color--ink { color: var(--color--ink); }
.color--muted { color: var(--color--muted); }
.backgroundborder--white {
    background-color: var(--color--white);
    border-color: var(--color--edge);
}

/* Values use a 16px design baseline; the responsive root scales the result. */
:root {
    --font-family-body: "DM Sans", system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
    --font-family-heading: "EB Garamond", Georgia, serif;
    --font-family-brand: var(--font-family-body);
    --bodytext-size: 1rem;
    --bodytext-lineheight: 1.6;
    --bodytext-weight: 400;
    --bodytext-strong-weight: 400;
    --bodytext-letterspacing: 0em;
    --h1-fontsize: 2rem;
    --h1-lineheight: 1.15;
    --h1-fontweight: 400;
    --h1-letterspacing: -0.025em;
    --h2-fontsize: 1.75rem;
    --h2-lineheight: 1.25;
    --h3-fontsize: 1.25rem;
    --h3-lineheight: 1.35;
    --small-fontsize: 0.875rem;
}
body {
    font-family: var(--font-family-body);
    font-size: var(--bodytext-size);
    font-weight: var(--bodytext-weight);
    line-height: var(--bodytext-lineheight);
    letter-spacing: var(--bodytext-letterspacing);
}
h1, h2, h3 {
    font-family: var(--font-family-heading);
    font-weight: var(--h1-fontweight);
    overflow-wrap: break-word;
}
h1 {
    font-size: var(--h1-fontsize);
    line-height: var(--h1-lineheight);
    letter-spacing: var(--h1-letterspacing);
}
h2 { font-size: var(--h2-fontsize); line-height: var(--h2-lineheight); }
h3 { font-size: var(--h3-fontsize); line-height: var(--h3-lineheight); }
.hero__title,
.content-block__title {
    font-size: 1rem;
    font-weight: var(--bodytext-weight);
    transform: translateY(-1rem);
}
strong, b { font-weight: var(--bodytext-weight); }
@media (max-width: 40rem) {
    :root { --h1-fontsize: 2rem; }
}

/* Retained root scaling, maximum width and responsive side-gap mechanism. */
:root {
    --max-width: min(81.25rem, calc(100vw - 20rem));
    --wide-max-width: 120rem;
    --max-width-side-gap: calc((100vw - var(--max-width)) / 2);
    --interval: 8rem;
    --top-band-height: calc(1rem + env(safe-area-inset-top, 0rem));
    --border-radius: 0.6875rem;
    --photo-radius: 0;
    --pill-radius: 999rem;
    --border-width: 0.125rem;
    color-scheme: only light;
}
html {
    margin: 0;
    padding: 0;
    font-size: clamp(0.875rem, min(1.13vw, 2.00vh), 0.96875rem);
    background-color: var(--color--green);
    color: var(--color--ink);
}
body {
    margin: 0;
    padding-top: var(--top-band-height);
    min-height: 100vh;
    background-color: var(--color--cream);
}
*, *::before, *::after { box-sizing: border-box; }
button, input, select, textarea { font: inherit; }
a { color: var(--color--accent); text-underline-offset: 0.2em; }
:focus-visible { outline: 0.1875rem solid var(--color--accent); outline-offset: 0.25rem; }
@media (min-width: 115rem) {
    :root { --max-width: 85rem; }
    html { font-size: 0.96875rem; }
}
@media (max-width: 82rem) { :root { --max-width: calc(100vw - 20rem); } }
@media (max-width: 70rem) { :root { --max-width: calc(100vw - 10rem); } }
@media (max-width: 60rem) { :root { --interval: var(--gap-l); } }
@media (max-width: 50rem) { :root { --max-width: calc(100vw - 10rem); } }
@media (max-width: 40rem) { :root { --max-width: calc(100vw - 4rem); } }
@media (prefers-reduced-motion: reduce) {
    html { scroll-behavior: auto; }
}

:root {
    --gap-xs: 0.78125rem;
    --gap-s: 1.5rem;
    --gap-m: 2rem;
    --gap-ml: 3rem;
    --gap-l: 4rem;
    --pill-tail-overhang: 0.7rem;
}
.layout { width: var(--max-width); margin-inline: auto; }
.section { margin-block: var(--interval); }
.stack { display: flex; flex-direction: column; gap: var(--gap-s); }
.cluster { display: flex; flex-wrap: wrap; align-items: center; gap: var(--gap-s); }
.intro { max-width: 42rem; color: var(--color--muted); }
.site-header { position: sticky; top: var(--top-band-height); z-index: 10; width: 100%; margin-inline: 0; padding-block: 1rem 1.5rem; padding-inline: max(2rem, var(--max-width-side-gap)); background-color: var(--color--cream); }
/* A real fixed edge element lets Safari paint the status area solid green. */
.site-header__top-band { position: fixed; top: 0; inset-inline: 0; z-index: 20; height: var(--top-band-height); background-color: var(--color--green); pointer-events: none; }
.site-header__name { display: block; color: var(--color--ink); font-family: var(--font-family-brand); font-weight: var(--bodytext-strong-weight); text-decoration: none; }
.site-header__logo-frame { display: block; width: 12.85rem; height: 4.22rem; overflow: hidden; }
.site-header__logo { display: block; width: 13.51rem; max-width: none; height: auto; margin: -0.32rem; }
.site-header__menu-toggle { display: none; align-items: center; justify-content: center; margin-inline-start: auto; width: 3.5rem; height: 3.5rem; padding: 0.5rem; border: 0; background: transparent; color: var(--color--ink); cursor: pointer; }
.site-nav__items { display: contents; }
.site-nav { margin-inline-start: auto; gap: var(--gap-ml); }
.site-nav__link { color: var(--color--ink); font-family: var(--font-family-heading); font-size: 1rem; font-weight: var(--bodytext-weight); text-decoration: none; }
.site-nav__link:hover { color: var(--color--accent); }
.site-nav__link--pill,
.button {
    --pill-tail-width: 1.5rem;
    --pill-tail-height: 1rem;
    position: relative;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    min-height: 3rem;
    padding-block: 0.5rem;
    border-radius: var(--pill-radius);
}
.site-nav__link--pill {
    --pill-fill: var(--color--orange);
    padding-inline: 2.25rem;
    background-color: var(--color--orange);
    color: var(--color--white);
}
.site-nav__link--pill:hover { --pill-fill: var(--color--navy); background-color: var(--color--navy); color: var(--color--white); }
.secondary-banner { position: relative; display: grid; grid-template-columns: minmax(18rem, 28rem) minmax(0, 1fr); align-items: center; column-gap: var(--gap-l); width: 100%; height: 29.5rem; margin-top: 6.5rem; padding-inline: max(2rem, var(--max-width-side-gap)); padding-bottom: 1.5rem; background-color: var(--color--cream-muted); }
.secondary-banner__photo { position: absolute; top: -3rem; left: max(2rem, var(--max-width-side-gap)); width: min(28rem, calc(100vw - 4rem)); height: 35.5rem; border-radius: var(--photo-radius); object-fit: cover; object-position: center; }
.secondary-banner__content { grid-column: 2; max-width: 42rem; }
.secondary-banner__title { max-width: 38rem; margin: 0; font-family: var(--font-family-heading); font-size: 3.5rem; line-height: var(--h1-lineheight); font-weight: var(--h1-fontweight); letter-spacing: var(--h1-letterspacing); }
.secondary-banner__title-break { display: inline; }
.secondary-banner__content p { max-width: 40rem; margin: 0; color: var(--color--navy); }
.secondary-banner__content .button { align-self: flex-start; margin-top: var(--gap-xs); }
.main--with-secondary-banner { margin-block: var(--interval); gap: var(--interval); }
.contact-page { margin-top: 5.5rem; margin-bottom: var(--interval); gap: calc(var(--gap-l) + var(--gap-m)); }
.site-footer { --footer-text-size: 1rem; margin-top: 0; border-top: 0; background-color: var(--color--cream-muted); }
.site-footer__bar { width: 100vw; height: 0.5rem; margin-left: calc(50% - 50vw); background-color: var(--color--orange); }
.site-footer__content { padding-block: calc(var(--gap-l) - 1rem); }
.site-footer__grid { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); align-items: center; gap: var(--gap-l); width: 100%; }
.site-footer__logo-link { display: flex; align-items: center; justify-content: center; min-height: 4.5rem; }
.site-footer__logo-link--cpd { position: relative; }
.site-footer__logo-link--cpd::before { position: absolute; z-index: 0; top: 2.85rem; left: calc(50% - 2.3rem); width: 0.9rem; height: 0.8rem; background-color: var(--color--cream-muted); clip-path: polygon(0 0, 100% 0, 100% 100%); content: ""; pointer-events: none; }
.site-footer__logo { display: block; width: 10rem; height: 4rem; object-fit: contain; filter: brightness(0) saturate(100%) invert(46.2%) sepia(18.1%) saturate(541%) hue-rotate(164.7deg) brightness(80.7%) contrast(93.3%); }
.site-footer__logo-link--cpd .site-footer__logo { position: relative; z-index: 1; }
.site-footer__logo-link--cpd::after { position: absolute; z-index: 2; top: calc(50% - 1.45rem); left: calc(50% - 4rem); width: 2.55rem; height: 2.45rem; border: 0.1rem solid var(--color--cream-muted); border-radius: 50%; clip-path: polygon(0 0, 100% 0, 100% 69%, 74% 69%, 70% 82%, 70% 100%, 0 100%); content: ""; pointer-events: none; }
.site-footer__legal { display: flex; flex-direction: column; align-items: center; gap: 0; text-align: center; }
.site-footer__links { display: flex; flex-direction: column; align-items: center; gap: 0; }
.site-footer__links a { color: var(--color--footer-ink); font-size: var(--footer-text-size); line-height: var(--bodytext-lineheight); text-decoration: none; }
.site-footer__links a:hover { color: var(--color--accent); }
.site-footer__copyright { margin: 0; color: var(--color--footer-ink); font-size: var(--footer-text-size); line-height: var(--bodytext-lineheight); }
.events-page { gap: calc((var(--interval) + var(--gap-l)) / 2); margin-top: var(--gap-l); }
.events-page__intro { max-width: 52rem; gap: var(--gap-s); margin-inline: auto; text-align: center; }
.events-page__title { margin: 0; font-family: var(--font-family-heading); font-size: 3.5rem; line-height: var(--h1-lineheight); font-weight: var(--h1-fontweight); letter-spacing: var(--h1-letterspacing); }
.events-page__title-phrase { display: inline-block; white-space: nowrap; }
.events-page__lead { max-width: 46rem; margin: 0 auto; }
.events-list { gap: var(--gap-m); }
.events-list__items { gap: var(--gap-m); }
.events-page__actions { display: flex; justify-content: center; }
.event-card { position: relative; display: grid; grid-template-columns: 12rem minmax(0, 1fr) auto; grid-template-areas: "media body actions"; align-items: center; gap: var(--gap-m); padding: var(--gap-m); background-color: var(--color--cream-muted); }
.event-card__media { grid-area: media; display: flex; align-items: center; justify-content: center; width: 100%; background-color: var(--color--cream); box-shadow: 0 0.25rem 0.875rem rgb(19 62 103 / 16%); }
.event-card__image { display: block; width: 100%; height: auto; object-fit: contain; }
.event-card__body { grid-area: body; display: flex; flex-direction: column; gap: 0.5rem; min-width: 0; }
.event-card__date { margin: 0; color: var(--color--orange); font-family: var(--font-family-body); font-size: var(--bodytext-size); line-height: var(--bodytext-lineheight); }
.event-card__title { margin: 0; font-size: 2rem; line-height: var(--h2-lineheight); }
.event-card__detail,
.event-card__summary { margin: 0; }
.event-card__summary { color: var(--color--muted); }
.event-card__actions { grid-area: actions; display: flex; flex-direction: column; align-items: flex-start; gap: 0.75rem; }
.event-card__link { color: inherit; text-decoration: none; }
.event-card__link::after { position: absolute; inset: 0; content: ""; }
.event-card__link:hover { color: inherit; }
.event-card__link:focus-visible { outline: none; }
.event-card__link:focus-visible::after { outline: 0.1875rem solid var(--color--accent); outline-offset: 0.25rem; }
.event-card__book { position: relative; z-index: 1; }
.events-list__empty { width: 100vw; max-width: none; margin-left: calc(50% - 50vw); margin-right: 0; padding: var(--gap-l) max(2rem, var(--max-width-side-gap)); background-color: var(--color--cream-muted); text-align: center; }
.events-list__empty-title { max-width: 42rem; margin: 0 auto var(--gap-s); font-size: 2rem; line-height: var(--h2-lineheight); }
.events-list__empty p { max-width: 42rem; margin: 0 auto; }
.events-page__suggestion { margin-block-start: calc(var(--gap-l) + var(--gap-m) + var(--gap-ml) - ((var(--interval) + var(--gap-l)) / 2)); margin-block-end: var(--gap-m); position: relative; display: grid; grid-template-columns: minmax(18rem, 28rem) minmax(0, 1fr); align-items: center; column-gap: var(--gap-l); overflow: visible; width: 100vw; height: 29.5rem; margin-left: calc(50% - 50vw); padding-inline: max(2rem, var(--max-width-side-gap)); background-color: var(--color--green); }
.events-page__suggestion-content { position: relative; z-index: 1; grid-column: 2; max-width: 42rem; gap: var(--gap-s); }
.events-page__suggestion-title { margin: 0; color: var(--color--cream); font-family: var(--font-family-heading); font-size: var(--h1-fontsize); line-height: var(--h1-lineheight); font-weight: var(--h1-fontweight); letter-spacing: var(--h1-letterspacing); }
.events-page__suggestion-copy { max-width: 40rem; margin: 0; color: var(--color--cream); }
.events-page__suggestion-content .button { align-self: flex-start; margin-top: var(--gap-xs); }
.events-page__suggestion-photo { position: absolute; z-index: 2; top: -3rem; left: max(2rem, var(--max-width-side-gap)); width: min(28rem, calc(100vw - 4rem)); height: 35.5rem; border-radius: var(--photo-radius); object-fit: cover; object-position: center; }
.contact-intro { position: relative; display: grid; grid-template-columns: calc(50% - 6rem) calc(50% + 6rem); align-items: stretch; width: 100vw; min-height: 15rem; margin-left: calc(50% - 50vw); background-color: var(--color--green); }
.contact-intro__photo { position: absolute; z-index: 1; top: -2rem; bottom: -2rem; inset-inline-start: 0; display: block; width: calc(50% - 6rem); height: calc(100% + 4rem); border-radius: 0 var(--photo-radius) var(--photo-radius) 0; object-fit: cover; object-position: center; }
.contact-intro__content { display: flex; grid-column: 2; flex-direction: column; justify-content: center; gap: var(--gap-s); min-height: 15rem; padding: 3.5rem max(2rem, var(--max-width-side-gap)) 3.5rem var(--gap-l); color: var(--color--cream); }
.contact-intro__title { margin: 0; color: var(--color--cream); font-family: var(--font-family-heading); font-size: 3.5rem; line-height: var(--h1-lineheight); font-weight: var(--h1-fontweight); letter-spacing: var(--h1-letterspacing); }
.contact-intro__copy { display: flex; flex-direction: column; gap: var(--gap-s); }
.contact-intro__copy p { margin: 0; color: var(--color--cream); }
.contact-form { width: 100%; max-width: 45rem; margin-inline: auto; }
.contact-form__embed { display: block; width: 100%; border: 0; }
.about-section { max-width: 52rem; margin-inline: auto; text-align: center; }
.about-section__title { max-width: 40rem; margin: 0 auto; font-family: var(--font-family-heading); font-size: var(--h1-fontsize); line-height: var(--h1-lineheight); font-weight: var(--h1-fontweight); letter-spacing: var(--h1-letterspacing); }
.about-section__text { max-width: 46rem; margin: 0 auto; }
.upcoming-events { position: relative; display: flex; align-items: center; overflow: visible; width: 100vw; min-height: 20rem; margin-left: calc(50% - 50vw); padding: var(--gap-ml) max(2rem, var(--max-width-side-gap)) calc(var(--gap-ml) + var(--pill-tail-overhang)); background-color: var(--color--green); }
.upcoming-events__intro { position: relative; z-index: 1; flex: none; width: calc(100vw - max(2rem, var(--max-width-side-gap)) - min(40rem, 48vw) - var(--gap-ml)); max-width: 42rem; gap: var(--gap-s); }
.upcoming-events__intro p { margin: 0; color: var(--color--cream); }
.upcoming-events__intro .button { align-self: flex-start; margin-top: var(--gap-xs); }
.upcoming-events__title { margin: 0; font-family: var(--font-family-heading); font-size: var(--h1-fontsize); line-height: var(--h1-lineheight); font-weight: var(--h1-fontweight); letter-spacing: var(--h1-letterspacing); color: var(--color--cream); }
.upcoming-events__photo { position: absolute; z-index: 2; top: -2rem; right: 0; width: min(40rem, 48vw); height: calc(100% + 4rem); border-radius: var(--photo-radius) 0 0 var(--photo-radius); object-fit: cover; object-position: center; }
.partnership-section { max-width: 60rem; margin-block-start: calc(var(--gap-l) - var(--interval)); margin-inline: auto; text-align: center; }
.partnership-section__title { max-width: 52rem; margin: 0 auto; font-family: var(--font-family-heading); font-size: var(--h1-fontsize); line-height: var(--h1-lineheight); font-weight: var(--h1-fontweight); letter-spacing: var(--h1-letterspacing); }
.partnership-section__title-phrase { display: inline-block; max-width: 100%; }
.partnership-section__tagline { margin: var(--gap-xs) auto 0; font-family: var(--font-family-heading); font-size: var(--h1-fontsize); line-height: var(--h1-lineheight); font-weight: var(--h1-fontweight); font-style: normal; letter-spacing: var(--h1-letterspacing); }
.partnership-section__text { max-width: 52rem; margin: var(--gap-m) auto 0; font-family: var(--font-family-body); font-size: var(--bodytext-size); line-height: var(--bodytext-lineheight); font-weight: var(--bodytext-weight); }
.partner-organisations { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); column-gap: 0; max-width: 72rem; margin-inline: auto; }
.partner-organisation { position: relative; display: flex; flex-direction: column; align-items: center; gap: var(--gap-m); min-width: 0; padding-inline: var(--gap-l); text-align: center; }
.partner-organisation + .partner-organisation::before { position: absolute; top: 0; bottom: -0.3rem; inset-inline-start: 0; width: 0.125rem; background-color: var(--color--navy); content: ""; }
.partner-organisation__logo-link { display: flex; align-items: center; justify-content: center; width: min(100%, 18rem); height: 6rem; }
.partner-organisation__logo { display: block; width: 100%; height: 100%; object-fit: contain; }
.partner-organisation__text { width: min(100%, 28rem); margin: 0; }
.partner-organisation .button { width: 11rem; margin-top: auto; }
.partner-organisations__bar { grid-column: 1 / -1; width: 100vw; height: 0.5rem; margin-top: calc(var(--gap-l) + 1rem); margin-left: calc(50% - 50vw); background-color: var(--color--orange); }
.hero { padding: var(--gap-l); background-color: transparent; }
.hero__title { max-width: 58rem; margin: 0; }
.hero__actions { margin-top: var(--gap-xs); }
.content-block { max-width: 52rem; }
.content-block--accent { max-width: none; padding: var(--gap-l); background-color: var(--color--green); border-radius: var(--border-radius); }
.content-block--accent h2,
.content-block--accent p { color: var(--color--navy); }
.button { --pill-fill: var(--color--navy); padding-inline: 1.25rem; border: var(--border-width) solid var(--color--navy); background-color: var(--color--navy); color: var(--color--white); cursor: pointer; font-family: var(--font-family-heading); font-weight: var(--bodytext-strong-weight); text-decoration: none; }
.button::after,
.site-nav__link--pill::after { position: absolute; right: 0.9rem; bottom: calc(-1 * var(--pill-tail-overhang)); width: var(--pill-tail-width); height: var(--pill-tail-height); background-color: var(--pill-fill); clip-path: polygon(0 0, 100% 0, 100% 100%); content: ""; pointer-events: none; }
.button:hover { --pill-fill: var(--color--orange); background-color: var(--color--orange); border-color: var(--color--orange); color: var(--color--white); }
.button--secondary { background-color: transparent; color: var(--color--navy); }
.button--secondary:hover { --pill-fill: var(--color--white); background-color: var(--color--white); border-color: var(--color--white); color: var(--color--navy); }
.button--light { --pill-fill: var(--color--cream); background-color: var(--color--cream); border-color: var(--color--cream); color: var(--color--navy); }
.button--light:hover { --pill-fill: var(--color--orange); background-color: var(--color--orange); border-color: var(--color--orange); color: var(--color--white); }
.skip-link { position: fixed; top: var(--gap-s); left: var(--gap-s); padding: 0.5rem 1rem; background: var(--color--white); transform: translateY(-12rem); }
.skip-link:focus { transform: translateY(0); }
@media (min-width: 45.0625rem) and (max-width: 70rem) {
    .site-footer { --footer-text-size: 0.875rem; }
    .site-footer__grid { gap: var(--gap-m); }
    .site-footer__logo-link { transform: scale(0.85); }
}
@media (min-width: 45.0625rem) and (max-width: 50rem) {
    .site-footer { --footer-text-size: 0.8125rem; }
    .site-footer__grid { gap: var(--gap-xs); }
    .site-footer__logo-link { transform: scale(0.72); }
}
@media (max-width: 40rem) {
    /* Phone headings wrap word by word; preserve authored breaks on larger screens. */
    .secondary-banner__title-break,
    .about-section__title-break { display: none; }
    .events-page__title-phrase,
    .partnership-section__title-phrase { display: inline; white-space: normal; }
    .site-header { align-items: flex-start; }
    .site-header__logo-frame { width: 11.02rem; height: 3.61rem; }
    .site-header__logo { width: 11.57rem; margin: -0.28rem; }
    .site-nav { width: 100%; margin-inline-start: 0; }
    .hero,
    .content-block--accent { padding: var(--gap-m); }
}
/* Keep the tablet banner side by side with a smaller, in-flow photo. */
@media (max-width: 62rem) {
    .main--with-secondary-banner { margin-block-start: var(--gap-l); }
    .secondary-banner { grid-template-columns: minmax(0, 0.7fr) minmax(0, 1fr); column-gap: var(--gap-m); height: auto; min-height: 29.5rem; margin-top: 3.5rem; padding-block: var(--gap-ml); }
    .secondary-banner__photo { position: static; width: 100%; height: auto; aspect-ratio: 3 / 4; }
    .events-page__suggestion { grid-template-columns: minmax(0, 0.7fr) minmax(0, 1fr); column-gap: var(--gap-m); height: auto; min-height: 29.5rem; margin-block-start: calc(var(--gap-l) + var(--gap-m) - ((var(--interval) + var(--gap-l)) / 2)); padding-block: var(--gap-ml); }
    .events-page__suggestion-photo { position: static; grid-column: 1; width: 100%; height: auto; aspect-ratio: 3 / 4; }
}
@media (max-width: 50rem) {
    .secondary-banner { display: flow-root; height: auto; min-height: 25rem; margin-top: 6.5rem; padding: 0 2rem 3rem; }
    .secondary-banner__photo { position: relative; inset: auto; display: block; width: min(100%, 18rem); height: 24rem; margin: -3rem auto 2rem; }
    .secondary-banner__content { width: min(100%, 36rem); margin-inline: auto; }
    .events-page__suggestion { display: flow-root; height: auto; min-height: 25rem; margin-block-start: calc(var(--gap-l) + var(--gap-m) + var(--gap-ml) - ((var(--interval) + var(--gap-l)) / 2)); padding: 0 2rem 3rem; }
    .events-page__suggestion-photo { position: relative; inset: auto; display: block; width: min(100%, 18rem); height: 24rem; margin: -3rem auto 2rem; }
    .events-page__suggestion-content { width: min(100%, 36rem); margin-inline: auto; }
}
@media (max-width: 50rem) {
    .upcoming-events { display: flow-root; min-height: 0; margin-block-end: var(--gap-m); padding-top: var(--gap-ml); padding-bottom: 0; }
    .upcoming-events__intro { width: auto; max-width: none; }
    .upcoming-events__photo { position: relative; inset: auto; display: block; width: 100%; height: auto; margin-top: calc(var(--gap-ml) + var(--pill-tail-overhang)); margin-bottom: calc(-1 * var(--gap-m)); border-radius: var(--photo-radius); }
    .contact-page { margin-top: 3.5rem; }
    .contact-intro { display: flow-root; min-height: 0; padding: var(--gap-ml) max(2rem, var(--max-width-side-gap)) 0; }
    .contact-intro__photo { position: relative; inset: auto; width: 100%; height: auto; margin-top: var(--gap-ml); margin-bottom: calc(-1 * var(--gap-m)); border-radius: var(--photo-radius); }
    .contact-intro__content { min-height: 0; padding: 0; }
    .event-card { grid-template-columns: minmax(0, 1fr); grid-template-areas: "body" "actions" "media"; }
    .event-card__body { text-align: center; }
    .event-card__actions { align-items: center; }
    .event-card__actions { margin-bottom: var(--pill-tail-overhang); }
    .partner-organisations { grid-template-columns: 1fr; }
    .partner-organisation { padding-inline: 0; }
    .partner-organisation__logo-link { height: auto; }
    .partner-organisation__logo { height: auto; }
    .partner-organisations__bar { margin-top: calc(var(--gap-l) + var(--pill-tail-overhang)); }
    .partner-organisation + .partner-organisation { padding-block-start: calc(var(--gap-l) + var(--pill-tail-overhang)); }
    .partner-organisation + .partner-organisation::before { display: none; }
}
@media (min-width: 40.0625rem) and (max-width: 50rem) {
    .contact-intro__photo { width: min(100%, 32rem); margin-inline: auto; }
}
@media (min-width: 30.0625rem) and (max-width: 50rem) {
    .event-card__media { width: min(100%, 22rem); justify-self: center; }
}
@media (min-width: 50.0625rem) and (max-width: 60rem) {
    .upcoming-events { margin-block-start: var(--gap-m); }
}
@media (min-width: 50.0625rem) and (max-width: 65rem) {
    .contact-page { margin-top: 3.5rem; gap: var(--gap-l); }
    .contact-intro { grid-template-columns: minmax(0, 1fr) minmax(0, 1.2fr); align-items: center; gap: var(--gap-m); padding: 0 max(2rem, var(--max-width-side-gap)); }
    .contact-intro__photo { position: static; grid-column: 1; grid-row: 1; align-self: center; justify-self: center; width: min(90%, 30rem); height: auto; aspect-ratio: 4 / 3; border-radius: var(--photo-radius); object-fit: cover; }
    .contact-intro__content { grid-row: 1; min-width: 0; padding: var(--gap-s) 0; }
}
@media (min-width: 50.0625rem) {
    .upcoming-events { margin-block-end: var(--gap-m); }
    .partnership-section + .partner-organisations { margin-top: -3rem; }
}
@media (min-width: 50.0625rem) and (max-width: 60rem) {
    .partnership-section + .partner-organisations { margin-top: 0; }
}
@media (max-width: 45rem) {
    .site-footer__content { padding-top: var(--gap-m); }
    .site-footer__grid { grid-template-columns: repeat(3, minmax(0, 1fr)); column-gap: var(--gap-xs); row-gap: var(--gap-m); }
    .site-footer__logo-link { min-width: 0; }
    .site-footer__logo { width: 85%; max-width: 8.5rem; height: auto; }
    .site-footer__logo-link--cpd::before,
    .site-footer__logo-link--cpd::after { display: none; }
    .site-footer__legal { grid-column: 1 / -1; flex-direction: row; justify-content: center; flex-wrap: wrap; column-gap: 0.5rem; }
    .site-footer__links { flex-direction: row; gap: 0.5rem; }
    .site-footer__links a + a::before { margin-inline-end: 0.5rem; content: "|"; }
    .site-footer__copyright::before { margin-inline-end: 0.5rem; content: "|"; }
}
@media (max-width: 30rem) {
    .events-page__title { font-size: 2rem; }
    .event-card { grid-template-columns: 1fr; }
    .event-card__actions { grid-column: auto; }
}

/* Therapy-site burger proportions, adapted to the CPD palette and compact layout. */
.site-header__burger-icon { display: block; flex: none; width: 1.3rem; height: 0.994118rem; overflow: visible; }
/* Keep matching transform functions in both states for continuous SVG interpolation. */
.site-header__burger-line { stroke: currentColor; stroke-width: 2; stroke-linecap: round; vector-effect: non-scaling-stroke; transform-box: view-box; transform-origin: center; transition: opacity 300ms ease, transform 350ms cubic-bezier(0.4, 0, 0.2, 1); }

.site-header__burger-line--top { transform: translateY(-38.461538%) rotate(0deg); }
.site-header__burger-line--bottom { transform: translateY(38.461538%) rotate(0deg); }
.site-header__burger-line--top.is-open { transform: translateY(0%) rotate(45deg); }
.site-header__burger-line--middle.is-open { opacity: 0; }
.site-header__burger-line--bottom.is-open { transform: translateY(0%) rotate(-45deg); }
@media (max-width: 50rem) {
    .site-header { align-items: center; row-gap: 0; }
    .site-header__menu-toggle:not([hidden]) { display: inline-flex; }
    .site-nav { position: absolute; top: 100%; inset-inline: 0; display: grid; grid-template-rows: 1fr; width: 100%; margin-inline-start: 0; padding-inline: max(2rem, var(--max-width-side-gap)); background-color: var(--color--cream); gap: 0; transition: grid-template-rows 350ms cubic-bezier(0.4, 0, 0.2, 1), visibility 0s; }
    .site-nav__items { display: flex; flex-direction: column; align-items: flex-end; gap: var(--gap-s); min-height: 0; overflow: hidden; text-align: right; }
    .site-nav__link { flex-shrink: 0; opacity: 1; transform: translateY(0); transition: opacity 200ms ease 180ms, transform 200ms ease 180ms; }
    /* Align the labels; the events bubble extends beyond their shared right edge. */
    .site-nav__link:not(.site-nav__link--pill) { margin-inline-end: 2.25rem; }
    .site-nav__link:first-child { margin-top: 0; }
    .site-nav__link:last-child { margin-bottom: var(--gap-ml); }
    .site-nav.is-collapsed { grid-template-rows: 0fr; visibility: hidden; transition-delay: 0s, 350ms; }
    .site-nav__link.is-collapsed { opacity: 0; transform: translateY(0.75rem); transition-delay: 0s; }
}
@media (prefers-reduced-motion: reduce) {
    .site-header__burger-line, .site-nav, .site-nav__link { transition: none; }
}

/* Long-form policy copy uses the shared content width and natural wrapping. */
.policy-page__title { margin: 0; }
.policy-page__heading { margin: var(--gap-s) 0 0; }
.policy-page__text { margin: 0; }
.policy-page__list { margin: 0; padding-inline-start: var(--gap-s); }
.policy-page__link { overflow-wrap: anywhere; }
