.topline__short-name { display: none; }

.mobile-contact-dock { display: none; }

.campus-address-card {
    position: relative;
    display: grid;
    grid-template-columns: auto minmax(0, 1fr);
    gap: 1.35rem 1rem;
    align-items: start;
    overflow: hidden;
    padding: clamp(1.5rem, 4vw, 2.5rem);
    color: var(--white);
    background:
        linear-gradient(145deg, rgba(255,255,255,.055), transparent 48%),
        var(--red-950);
    border-top: 4px solid var(--gold-400);
    border-radius: var(--radius);
    box-shadow: var(--shadow);
}

.campus-address-card__pin {
    display: grid;
    width: 3.2rem;
    height: 3.2rem;
    place-items: center;
    color: var(--red-950);
    background: var(--gold-300);
    border-radius: 50%;
}

.campus-address-card__pin svg { width: 1.7rem; height: 1.7rem; fill: currentColor; }
.campus-address-card__label {
    margin: .1rem 0 .55rem;
    color: var(--gold-300);
    font-size: .75rem;
    font-weight: 900;
    letter-spacing: .14em;
    text-transform: uppercase;
}

.campus-address-card address { display: grid; gap: .45rem; font-style: normal; }
.campus-address-card address strong {
    color: var(--white);
    font-family: Georgia, "Times New Roman", serif;
    font-size: clamp(1.75rem, 3.5vw, 2.55rem);
    font-weight: 400;
    line-height: 1.05;
}
.campus-address-card address span { color: #eadfe1; font-size: 1rem; line-height: 1.55; }
.campus-address-card__action { grid-column: 1 / -1; justify-self: start; }
.campus-address-card__note {
    grid-column: 1 / -1;
    margin: -.2rem 0 0;
    padding-top: 1rem;
    color: #d9cacc !important;
    border-top: 1px solid rgba(255,255,255,.15);
    font-size: .9rem;
    line-height: 1.55;
}

.programme-decision-checklist {
    margin-top: 1.5rem;
    padding: 0 clamp(1rem, 2vw, 1.5rem);
    background: var(--white);
    border: 1px solid var(--border);
    border-radius: 1rem;
}

.programme-decision-checklist summary,
.programme-research-note summary {
    padding-block: 1.15rem;
    color: var(--red-950);
    font-weight: 800;
    cursor: pointer;
}

.programme-decision-checklist ol {
    display: grid;
    grid-template-columns: repeat(5, minmax(0, 1fr));
    gap: 1rem;
    margin: 0;
    padding: 0 0 1.35rem;
    list-style: none;
}

.programme-decision-checklist li {
    padding-top: .9rem;
    border-top: 2px solid var(--gold-500);
}

.programme-decision-checklist strong { display: block; color: var(--red-950); }
.programme-decision-checklist span { display: block; margin-top: .35rem; color: var(--muted); }
.programme-research-note[open] summary { margin-bottom: .35rem; }

@media (max-width: 900px) {
    .programme-decision-checklist ol { grid-template-columns: 1fr 1fr; }
}

@media (max-width: 760px) {
    .campus-address-card { grid-template-columns: 1fr; gap: 1rem; }
    .campus-address-card__pin { width: 2.8rem; height: 2.8rem; }
    .campus-address-card__action,
    .campus-address-card__note { grid-column: 1; }
    .campus-address-card__action { width: 100%; justify-content: center; }

    .topline__full-name { display: none; }
    .topline__short-name { display: inline; }
    .topline__identity { white-space: nowrap; }
    .topline__location,
    .topline__location + i { display: none; }

    .site-footer { padding-bottom: calc(6.5rem + env(safe-area-inset-bottom)); }
    .mobile-contact-dock {
        position: fixed;
        z-index: 45;
        right: .65rem;
        bottom: max(.65rem, env(safe-area-inset-bottom));
        left: .65rem;
        display: grid;
        grid-template-columns: 1fr 1fr;
        gap: .5rem;
        padding: .45rem;
        background: rgba(251, 248, 241, .96);
        border: 1px solid var(--border);
        border-radius: 1rem;
        box-shadow: 0 14px 34px rgba(58, 24, 29, .2);
        backdrop-filter: blur(12px);
    }

    .mobile-contact-dock a {
        display: flex;
        min-height: 3rem;
        align-items: center;
        justify-content: center;
        padding: .55rem .75rem;
        color: var(--white);
        background: var(--red-800);
        border-radius: .75rem;
        font-size: 1rem;
        font-weight: 800;
        line-height: 1.2;
        text-align: center;
        text-decoration: none;
    }

    .mobile-contact-dock a:last-child { color: var(--red-950); background: var(--gold-300); }
    body:has(.menu-toggle[aria-expanded="true"]) .mobile-contact-dock { display: none; }
    .programme-decision-checklist ol { grid-template-columns: 1fr; }
}

@media print {
    .mobile-contact-dock { display: none !important; }
}

/* Cross-device accessibility and reflow hardening from the August release audit. */
.learning-cycle article > span,
.evidence-list article > span,
.principle-grid article > span,
.support-grid article > span,
.statement-card > span,
.admissions-steps > li > span,
.contact-grid article > span,
.programme-list > a > span,
.programme-comparison tbody th > span,
.programme-workday li > span {
    color: var(--red-800);
}

.book-cover--blue > span { color: var(--white); }

main span { overflow-wrap: anywhere; }

.about-recommendation-grid > article > span,
.library-family__steps li > span,
.library-page .book-card__actions small {
    font-size: var(--type-caption) !important;
}

.library-shelves {
    max-width: 100%;
    overscroll-behavior-inline: contain;
}

.library-js [data-library-grid]:not([data-library-ready]) .book-card:nth-child(n + 13) {
    display: none;
}

.library-page .library-refine summary,
.library-page .book-card__guidance summary,
.library-page .library-collection-note summary {
    min-height: 2.75rem;
    padding-block: .65rem;
}

.reader-page .reader-book-title > a {
    min-width: 2.75rem;
    justify-content: center;
}

@media (max-width: 1040px) {
    body:has(.menu-toggle[aria-expanded="true"]) { overflow: hidden; }
    .primary-nav.is-open {
        min-height: calc(100dvh - 7.6rem);
        align-content: start;
        box-shadow: 0 24px 40px rgba(58, 24, 29, .16);
    }
}

@media (max-width: 760px) {
    .topline__inner {
        min-height: 1.9rem;
        padding-block: .2rem;
    }
    .topline__identity {
        max-width: 100%;
        flex-wrap: wrap;
        justify-content: flex-start;
        line-height: 1.25;
        white-space: normal;
    }
    .site-header__inner { gap: 8px; }
    .brand {
        width: min(235px, calc(100% - 56px));
        min-width: 0;
    }
    .menu-toggle {
        width: 48px;
        height: 48px;
        flex: 0 0 48px;
    }

    .wrap > * {
        min-width: 0;
        max-width: 100%;
    }
    main :where(h1, h2, h3, h4, p, li, a, span, strong, small, label, dt, dd) {
        max-width: 100%;
        overflow-wrap: anywhere;
        text-wrap: wrap;
        word-break: break-word;
    }

    :where(
        .decision-hero__grid,
        .continuity-panel,
        .pathway-feature__grid,
        .programme-campaign__hero-grid,
        .library-results-heading,
        .library-search-row
    ) > * {
        width: 100%;
        min-width: 0;
        max-width: 100%;
    }

    .pathway-map article { padding: clamp(1rem, 5vw, 1.35rem); }
    .programme-campaign__hero h1 {
        max-width: 100%;
        overflow-wrap: anywhere;
        text-wrap: wrap;
        word-break: break-word;
    }

    .library-audiences {
        width: 100%;
        flex-wrap: wrap;
        overflow: visible;
    }
    .library-audiences a {
        flex: 1 1 8rem;
        justify-content: center;
        text-align: center;
        white-space: normal;
    }
    .library-page .library-search-row > * {
        width: 100% !important;
        min-width: 0 !important;
        max-width: 100% !important;
    }

    .library-js [data-library-refine]:not([data-library-refine-ready]) > .library-refine__fields {
        display: none;
    }

    .library-js [data-library-grid]:not([data-library-ready]) .book-card:nth-child(n + 7) {
        display: none;
    }

    .library-shelves {
        margin-right: 0;
        padding-right: .5rem;
    }

    .library-page .book-cover span,
    .library-page .book-cover i { font-size: .68rem !important; }
    .library-page .book-card__meta { font-size: .78rem !important; }
    .library-page .book-card__summary {
        font-size: .92rem !important;
        -webkit-line-clamp: 3;
    }
    .library-page .book-card__guidance summary { font-size: .88rem; }
    .library-page .book-card__actions small { font-size: .78rem !important; }
}

@media (max-width: 360px) {
    .mobile-contact-dock,
    .quick-routes__grid,
    .home-proof__grid,
    .learning-cycle,
    .process-grid,
    .programme-fit,
    .session-flow,
    .stem-pulse .wrap,
    .stem-lab__steps,
    .stem-safety__checks,
    .programme-campaign__pulse .wrap,
    .programme-campaign__steps {
        grid-template-columns: 1fr;
    }

    /* The quick-contact dock becomes two stacked buttons at this width.
       Reserve its full height so footer actions remain visible and tappable. */
    .site-footer {
        padding-bottom: calc(10rem + env(safe-area-inset-bottom));
    }

    .continuity-panel li,
    .programme-comparison tbody td {
        grid-template-columns: 1fr;
    }

    .pathway-panel {
        min-height: 0;
        padding: clamp(1rem, 5vw, 1.5rem);
    }

    .evidence-list article,
    .programme-campaign__evidence-list article {
        grid-template-columns: 44px minmax(0, 1fr);
        gap: 12px;
        padding-inline: 16px;
    }

    .library-page .book-card {
        grid-template-columns: 1fr;
    }
    .library-page .book-cover {
        min-height: 12rem;
        border-right: 0;
        border-bottom: 4px solid var(--red-800);
    }
}

/* Header rhythm: keep the lockup present without letting it set the full
   visual height, and leave a little more space below desktop navigation. */
.site-header:not(.site-header--reader) .site-header__inner {
    min-height: 6.25rem;
}

.site-header:not(.site-header--reader) .brand {
    width: 260px;
}

@media (min-width: 1041px) {
    .site-header:not(.site-header--reader) .primary-nav {
        transform: translateY(-.22rem);
    }
}

@media (min-width: 1041px) and (max-height: 820px) {
    .site-header:not(.site-header--reader) .site-header__inner {
        min-height: 5.4rem;
    }

    .site-header:not(.site-header--reader) .brand {
        width: 235px;
    }
}

@media (max-width: 1120px) {
    .site-header:not(.site-header--reader) .site-header__inner {
        min-height: 5.85rem;
    }

    .site-header:not(.site-header--reader) .brand {
        width: 240px;
    }
}

@media (max-width: 1040px) {
    .site-header:not(.site-header--reader) .site-header__inner {
        min-height: 5.4rem;
    }

    .site-header:not(.site-header--reader) .brand {
        width: 225px;
    }
}

@media (max-width: 760px) {
    .site-header:not(.site-header--reader) .site-header__inner {
        min-height: 4.85rem;
    }

    .site-header:not(.site-header--reader) .brand {
        width: min(200px, calc(100% - 56px));
    }
}

/* Responsive reading guardrails: public hamburger-mode headers should leave
   the page when the family scrolls, and short labels should never be broken
   into arbitrary letter fragments. Reader-mode offsets remain unchanged. */
@media (max-width: 1040px) {
    .site-header:not(.site-header--reader) {
        position: relative;
    }
}

@media (max-width: 760px) {
    main :where(h1, h2, h3, h4, p, li, span, strong, small, label, dt, dd, b) {
        overflow-wrap: break-word;
        word-break: normal;
    }

    main a {
        overflow-wrap: anywhere;
        word-break: break-word;
    }

    .continuity-panel li {
        grid-template-columns: minmax(6.25rem, max-content) minmax(0, 1fr);
        column-gap: clamp(.75rem, 3vw, 1.2rem);
    }

    .continuity-panel b {
        overflow-wrap: normal;
        word-break: normal;
    }
}

@media (max-width: 400px) {
    .continuity-panel li {
        grid-template-columns: 1fr;
        gap: .35rem;
    }
}

/* Programme directory: separate family offers from professional learning
   with editorial rows and one clearly scoped current workshop. */
.programme-directory-page #student-programmes,
.programme-directory-page #professional-learning {
    scroll-margin-top: 8rem;
}

.programme-audience-card > strong {
    display: block;
    margin-top: .55rem;
}

.programme-audience-card__links {
    display: grid;
    margin-top: 1.2rem;
    border-top: 1px solid var(--border);
}

.programme-audience-card__links a {
    display: grid;
    grid-template-columns: minmax(0, 1fr) auto;
    gap: .35rem 1rem;
    min-width: 0;
    padding: 1rem 0;
    color: var(--red-950);
    border-bottom: 1px solid var(--border);
    text-decoration: none;
}

.programme-audience-card__links a:hover,
.programme-audience-card__links a:focus-visible {
    color: var(--red-800);
}

.programme-audience-card__links b {
    font-size: 1rem;
    line-height: 1.25;
}

.programme-audience-card__links small {
    grid-column: 1;
    color: var(--muted);
    font-size: .78rem;
    line-height: 1.45;
}

.programme-audience-card__links i {
    grid-column: 2;
    grid-row: 1 / span 2;
    align-self: center;
    color: var(--gold-600);
    font-size: 1.25rem;
    font-style: normal;
}

.professional-learning {
    background: #fffdf8;
}

.professional-learning__intro {
    display: grid;
    grid-template-columns: minmax(0, .9fr) minmax(0, 1.1fr);
    gap: clamp(2rem, 7vw, 6rem);
    align-items: start;
    margin-bottom: clamp(3rem, 6vw, 5rem);
}

.professional-learning__intro h2 {
    margin: 0;
    color: var(--red-950);
    font-family: Georgia, "Times New Roman", serif;
    font-size: clamp(2.45rem, 4.8vw, 4.5rem);
    font-weight: 400;
    letter-spacing: -.045em;
    line-height: .98;
}

.professional-learning__intro > div:last-child > p {
    color: var(--muted);
}

.professional-learning__intro > div:last-child > p:last-child {
    margin-bottom: 0;
}

.professional-priority-layout {
    display: grid;
    grid-template-columns: minmax(13rem, .42fr) minmax(0, 1.58fr);
    gap: clamp(2rem, 6vw, 5rem);
    align-items: start;
}

.professional-priority-heading {
    position: sticky;
    top: 9rem;
}

.professional-priority-heading > span,
.professional-current-offer > div > span,
.professional-specialist-boundary > span {
    color: var(--red-800);
    font-size: .7rem;
    font-weight: 900;
    letter-spacing: .12em;
    text-transform: uppercase;
}

.professional-priority-heading > strong {
    display: block;
    margin-top: .8rem;
    color: var(--red-950);
    font-family: Georgia, "Times New Roman", serif;
    font-size: clamp(1.8rem, 3vw, 2.7rem);
    font-weight: 400;
    line-height: 1.02;
}

.professional-priority-heading p {
    margin: 1rem 0 0;
    color: var(--muted);
}

.professional-priority-list {
    margin: 0;
    padding: 0;
    border-top: 1px solid var(--border);
    list-style: none;
}

.professional-priority-list li {
    display: grid;
    grid-template-columns: 3.25rem minmax(0, 1fr) 8.5rem;
    gap: 1rem 1.35rem;
    align-items: start;
    padding: 1.55rem 0;
    border-bottom: 1px solid var(--border);
}

.professional-priority-list li > span {
    color: var(--red-800);
    font-size: .72rem;
    font-weight: 950;
    letter-spacing: .08em;
    white-space: nowrap;
}

.professional-priority-list li > div > strong {
    display: block;
    color: var(--red-950);
    font-family: Georgia, "Times New Roman", serif;
    font-size: clamp(1.35rem, 2.1vw, 1.75rem);
    font-weight: 400;
    line-height: 1.08;
}

.professional-priority-list li p {
    max-width: 49rem;
    margin: .55rem 0 0;
    color: var(--muted);
}

.professional-priority-list li a {
    display: inline-flex;
    min-height: 2.75rem;
    align-items: center;
    margin-top: .65rem;
    color: var(--red-800);
    font-weight: 850;
}

.professional-priority-list li > b {
    justify-self: end;
    color: var(--red-800);
    font-size: .65rem;
    font-weight: 900;
    letter-spacing: .09em;
    line-height: 1.3;
    text-align: right;
    text-transform: uppercase;
}

.professional-current-offer {
    display: grid;
    grid-template-columns: minmax(0, 1.08fr) minmax(0, .92fr);
    margin-top: clamp(3rem, 7vw, 6rem);
    overflow: hidden;
    color: var(--white);
    background: var(--red-950);
    border-top: 4px solid var(--gold-400);
}

.professional-current-offer > div {
    padding: clamp(1.6rem, 4vw, 3rem);
}

.professional-current-offer > div > span {
    color: var(--gold-300);
}

.professional-current-offer h3 {
    margin: .85rem 0 .75rem;
    color: var(--white);
    font-family: Georgia, "Times New Roman", serif;
    font-size: clamp(2rem, 4vw, 3.6rem);
    font-weight: 400;
    letter-spacing: -.035em;
    line-height: 1;
}

.professional-current-offer p {
    max-width: 42rem;
    color: #eadfe1;
}

.professional-current-offer .button {
    margin-top: .5rem;
    color: var(--red-950);
    background: var(--gold-300);
    border-color: var(--gold-300);
}

.professional-current-offer dl {
    display: grid;
    grid-template-columns: 1fr 1fr;
    margin: 0;
    border-left: 1px solid rgba(255,255,255,.16);
}

.professional-current-offer dl > div {
    min-width: 0;
    padding: clamp(1.25rem, 3vw, 2rem);
    border-right: 1px solid rgba(255,255,255,.16);
    border-bottom: 1px solid rgba(255,255,255,.16);
}

.professional-current-offer dt {
    color: var(--gold-300);
    font-size: .68rem;
    font-weight: 900;
    letter-spacing: .1em;
    text-transform: uppercase;
}

.professional-current-offer dd {
    margin: .45rem 0 0;
    color: var(--white);
    font-weight: 800;
    line-height: 1.4;
}

.professional-specialist-boundary {
    display: grid;
    grid-template-columns: minmax(13rem, .42fr) minmax(0, 1.58fr);
    gap: clamp(1.5rem, 5vw, 4rem);
    margin-top: 1.5rem;
    padding-block: 1.4rem;
    border-top: 1px solid var(--border);
    border-bottom: 1px solid var(--border);
}

.professional-specialist-boundary p {
    margin: 0;
    color: var(--muted);
}

.professional-research-note {
    margin-top: 2rem;
}

@media (max-width: 1120px) {
    .professional-priority-layout {
        grid-template-columns: 1fr;
    }

    .professional-priority-heading {
        position: static;
        max-width: 46rem;
    }
}

@media (max-width: 760px) {
    .professional-learning__intro,
    .professional-current-offer,
    .professional-specialist-boundary {
        grid-template-columns: 1fr;
    }

    .professional-priority-list li {
        grid-template-columns: 2.5rem minmax(0, 1fr);
        gap: .75rem 1rem;
    }

    .professional-priority-list li > b {
        grid-column: 2;
        justify-self: start;
        text-align: left;
    }

    .professional-current-offer dl {
        border-top: 1px solid rgba(255,255,255,.16);
        border-left: 0;
    }
}

@media (max-width: 420px) {
    .professional-current-offer dl {
        grid-template-columns: 1fr;
    }

    .professional-current-offer dl > div {
        border-right: 0;
    }
}
