/* Explicit public-page components. Existing global/home rules below are intact. */
:root {
    --gvp-button-syllabus:linear-gradient(135deg,#6266ea,#4145bd);
    --gvp-button-syllabus-hover:linear-gradient(135deg,#5559d7,#35399f);
    --gvp-button-green:linear-gradient(135deg,#08783f,#0ca65a);
    --gvp-button-green-hover:linear-gradient(135deg,#065d31,#087f45);
    --gvp-button-coral:linear-gradient(135deg,#ee7647,#cf4c20);
    --gvp-button-coral-hover:linear-gradient(135deg,#d85f31,#b93c16);
    --gvp-button-navy:linear-gradient(135deg,#16365f,#102443);
    --gvp-button-navy-hover:linear-gradient(135deg,#224878,#18365f);
}
/* Match Governing Body's outer heading gap; keep each page's bottom padding. */
body.gvp-public-page :is(.leadership-page,.gvp-centres,.presidents-page,.faculty-page,.schools-programmes) {
    padding-top:40px;
}
body.gvp-public-page .gvp-page-heading {
    position:relative;
    max-width:none;
    margin:0 0 24px;
    padding:28px 32px;
    border-bottom:4px solid var(--coral,#ee7647);
    border-radius:14px;
    background:linear-gradient(135deg,#343675,#212254);
    color:#fff;
    text-align:left;
    box-shadow:0 10px 28px rgba(33,34,84,.12);
}
body.gvp-public-page .gvp-page-heading > .kicker {
    justify-content:flex-start;
    gap:12px;
    color:#ffc4aa;
    font-size:12px;
    font-weight:800;
    letter-spacing:.13em;
}
body.gvp-public-page .gvp-page-heading > .kicker::before { background:#ffc4aa; }
body.gvp-public-page .gvp-page-heading > h1 {
    display:block;
    margin:10px 0 8px;
    color:#fff;
    font-size:clamp(1.8rem,3.5vw,2.6rem);
    font-weight:850;
    line-height:1.2;
    letter-spacing:-.035em;
}
body.gvp-public-page .gvp-page-heading > p {
    max-width:none;
    margin:0;
    color:rgba(255,255,255,.82);
    font-size:16px;
    line-height:1.6;
}
/* Academic Calendar's Academic Year text is white; only programme names opt in. */
.syllabus-page .gvp-programme-heading {
    background:linear-gradient(135deg,#08783f,#0b9250);
    color:#fff;
}
.syllabus-page .gvp-programme-name { color:#fff; }

/* No geometry rules: existing button dimensions, wrapping and icons stay local. */
body.gvp-public-page :is(.gvp-centre-link,.leadership-profile-button,.academic-calendar-document-action):where(:not(.gvp-button-colour,:disabled,[aria-disabled="true"],[aria-busy="true"],.disabled,.is-disabled,.pending,.is-pending,.semester-subject-link-pending,[data-state="pending"])) {
    /* Keep static actions usable when JavaScript is unavailable. */
    background:var(--gvp-button-syllabus);
    color:#fff;
}
body.gvp-public-page .gvp-button-colour[data-gvp-button-tone="1"] {
    --gvp-button-background:var(--gvp-button-syllabus);
    --gvp-button-hover:var(--gvp-button-syllabus-hover);
    --gvp-button-text:#fff;
    --gvp-button-hover-text:#fff;
}
body.gvp-public-page .gvp-button-colour[data-gvp-button-tone="2"] {
    /* The original green is retained beneath a contrast layer for small text. */
    --gvp-button-background:linear-gradient(#00000033,#00000033),var(--gvp-button-green);
    --gvp-button-hover:var(--gvp-button-green-hover);
    --gvp-button-text:#fff;
    --gvp-button-hover-text:#fff;
}
body.gvp-public-page .gvp-button-colour[data-gvp-button-tone="3"] {
    --gvp-button-background:linear-gradient(#00000040,#00000040),var(--gvp-button-coral);
    --gvp-button-hover:linear-gradient(#00000026,#00000026),var(--gvp-button-coral-hover);
    --gvp-button-text:#fff;
    --gvp-button-hover-text:#fff;
}
body.gvp-public-page .gvp-button-colour[data-gvp-button-tone="4"] {
    --gvp-button-background:var(--gvp-button-navy);
    --gvp-button-hover:var(--gvp-button-navy-hover);
    --gvp-button-text:#fff;
    --gvp-button-hover-text:#fff;
}
body.gvp-public-page .gvp-button-colour[data-gvp-button-tone]:where(:not(:disabled,[aria-disabled="true"],[aria-busy="true"],.disabled,.is-disabled,.pending,.is-pending,.semester-subject-link-pending,[data-state="pending"])),
body.gvp-public-page #schools .gvp-button-colour[data-gvp-button-tone]:where(:not(:disabled,[aria-disabled="true"],[aria-busy="true"],.disabled,.is-disabled,.pending,.is-pending,.semester-subject-link-pending,[data-state="pending"])) {
    background:var(--gvp-button-background);
    color:var(--gvp-button-text);
    border-color:transparent;
}
body.gvp-public-page .gvp-button-colour[data-gvp-button-tone]:where(:not(:disabled,[aria-disabled="true"],[aria-busy="true"],.disabled,.is-disabled,.pending,.is-pending,.semester-subject-link-pending,[data-state="pending"])) i { color:inherit; }
body.gvp-public-page .gvp-button-colour[data-gvp-button-tone]:where(:not(:disabled,[aria-disabled="true"],[aria-busy="true"],.disabled,.is-disabled,.pending,.is-pending,.semester-subject-link-pending,[data-state="pending"])):is(:hover,:focus-visible),
body.gvp-public-page #schools .gvp-button-colour[data-gvp-button-tone]:where(:not(:disabled,[aria-disabled="true"],[aria-busy="true"],.disabled,.is-disabled,.pending,.is-pending,.semester-subject-link-pending,[data-state="pending"])):is(:hover,:focus-visible),
body.gvp-public-page .academic-calendar-document:is(:hover,:focus-visible) .gvp-button-colour {
    background:var(--gvp-button-hover);
    color:var(--gvp-button-hover-text);
}
body.gvp-public-page .gvp-button-colour[data-gvp-button-tone]:where(:not(:disabled,[aria-disabled="true"],[aria-busy="true"],.disabled,.is-disabled,.pending,.is-pending,.semester-subject-link-pending,[data-state="pending"])):focus-visible {
    outline:3px solid #212254;
    outline-offset:3px;
}
@media(max-width:700px) {
    body.gvp-public-page .gvp-page-heading { padding:22px 20px; }
}
@media(max-width:650px) {
    body.gvp-public-page :is(.leadership-page,.gvp-centres,.presidents-page,.faculty-page,.schools-programmes) {
        padding-top:42px;
    }
}

/* Foundation and shared typography */
:root {
    --plum:#212254;
    --deep:#261b2a;
    --coral:#ee7647;
    --emerald:#182076;
    --orchid:#9052a8;
    --rose:#5a5ed3;
    --ink:#2f2632;
    --muted:#736775;
    --line:#dfdfea;
    --paper:#fff;
    --wash:#f2f2f7;
    --surface-soft:#f8f8fc;
    --radius-sm:10px;
    --radius-md:16px;
    --radius-lg:22px;
    --shadow-soft:0 10px 30px rgba(33,34,84,.07);
    --shadow-card:0 18px 48px rgba(33,34,84,.11);
    --bs-body-font-family:Arial,Helvetica,sans-serif;
    --bs-body-font-size:1rem;
    --bs-body-line-height:1.75;
    --bs-body-color:#2f2632;
    --bs-link-color:#212254;
    --bs-link-hover-color:#ca5a2e;
}
* {
    box-sizing:border-box;
}
html {
    scroll-behavior:smooth;
    scroll-padding-top:85px;
}
body {
    margin:0;
    overflow-x:hidden;
    background:linear-gradient(180deg,#fff 0%,#fdfdff 100%);
    font-family:"Inter","Segoe UI",Arial,Helvetica,sans-serif;
    color:var(--ink);
    font-size:16px;
    line-height:1.75;
}
a {
    text-decoration:none;
    color:inherit;
}
a,
button {
    transition:background .22s,color .22s,transform .22s,box-shadow .22s;
}
button {
    font:inherit;
}
img {
    max-width:100%;
    height:auto;
}
h1,
h2,
h3,
h4,
h5,
p {
    margin:0;
}
h1,
h2,
h3,
h4,
h5 {
    letter-spacing:-.035em;
    line-height:1.2;
}
a:focus-visible,
button:focus-visible {
    outline:3px solid var(--coral);
    outline-offset:5px;
}
.container-premium {
    width:min(1320px,calc(100% - 64px));
    margin-inline:auto;
}
.section-pad {
    padding-block:clamp(68px,7vw,96px);
}
.kicker {
    display:inline-flex;
    align-items:center;
    gap:12px;
    font-size:12px;
    letter-spacing:.13em;
    text-transform:uppercase;
    font-weight:800;
    color:var(--coral);
}
.kicker:before {
    content:'';
    width:28px;
    height:2px;
    background:currentColor;
}
.section-title,
.intro-copy .section-title {
    font-size:clamp(1.75rem,2.5vw,2.2rem);
    font-weight:800;
    color:var(--plum);
    line-height:1.15;
    letter-spacing:-.055em;
}
.btn-gold,
.btn-outline-light-premium {
    display:inline-flex;
    align-items:center;
    justify-content:center;
    gap:20px;
    padding:17px 26px;
    border-radius:11px;
    font-size:15px;
    font-weight:750;
    line-height:1.5;
}
.btn-gold {
    color:#fff;
    background:linear-gradient(135deg,#f18459,var(--coral));
    box-shadow:0 12px 26px rgba(238,118,71,.22);
}
.btn-gold:hover {
    background:#d86234;
    color:#fff;
    transform:translateY(-3px);
    box-shadow:0 15px 30px rgba(33,34,84,.18);
}
.btn-outline-light-premium {
    border:1px solid #ffffff70;
    color:#fff;
    background:#ffffff08;
}
.btn-outline-light-premium:hover {
    background:white;
    color:var(--plum);
    transform:translateY(-3px);
}
.reveal {
    opacity:1;
}
.text-muted-premium {
    color:var(--muted);
}

/* =========================================================
   UNIVERSAL RICH EDITOR CONTENT

   Used by:
   - About University
   - About VC
   - Department pages
   - Centres
   - Any backend/editor-generated HTML

   Editor-selected colours and alignments are preserved.
========================================================= */

.rich-content{
    color:#000;
    font-family:"Inter","Segoe UI",Arial,sans-serif;
    font-size:16px;
    font-weight:500;
    line-height:1.7;
    letter-spacing:.003em;
    overflow-wrap:anywhere;
    word-break:normal;
}

/* =========================================================
   PARAGRAPHS
========================================================= */

.rich-content p{
    margin:0 0 14px;
}

/* =========================================================
   PRESERVE EDITOR COLOURS
========================================================= */

/*
 * Support editors that generate:
 * class="color" style="--color:#ff0000"
 */
.rich-content .color{
    color:var(--color) !important;
}

/*
 * Support editor colour variables on any element.
 */
.rich-content [style*="--color"]{
    color:var(--color) !important;
}

/*
 * Do not specify fixed colours for spans or child elements.
 * Inline styles such as style="color:#ff0000" will therefore work.
 */
.rich-content span,
.rich-content div,
.rich-content section,
.rich-content article,
.rich-content label{
    font-family:inherit;
}

/* =========================================================
   EDITOR ALIGNMENT
========================================================= */

.rich-content [style*="text-align:left"],
.rich-content [style*="text-align: left"]{
    text-align:left !important;
}

.rich-content [style*="text-align:center"],
.rich-content [style*="text-align: center"]{
    text-align:center !important;
}

.rich-content [style*="text-align:right"],
.rich-content [style*="text-align: right"]{
    text-align:right !important;
}

.rich-content [style*="text-align:justify"],
.rich-content [style*="text-align: justify"]{
    text-align:justify !important;
    text-justify:inter-word;
}

/* Bootstrap and editor alignment classes */
.rich-content .text-start,
.rich-content .text-left,
.rich-content .text-align-left{
    text-align:left !important;
}

.rich-content .text-center,
.rich-content .text-align-center{
    text-align:center !important;
}

.rich-content .text-end,
.rich-content .text-right,
.rich-content .text-align-right{
    text-align:right !important;
}

.rich-content .text-justify,
.rich-content .text-align-justify{
    text-align:justify !important;
    text-justify:inter-word;
}

/* =========================================================
   BOLD, ITALIC, UNDERLINE AND STRIKE
========================================================= */

.rich-content strong,
.rich-content b{
    font-weight:750;
}

.rich-content em,
.rich-content i{
    font-style:italic;
}

.rich-content u{
    text-decoration:underline;
    text-underline-offset:3px;
}

.rich-content s,
.rich-content strike,
.rich-content del{
    text-decoration:line-through;
}

/* =========================================================
   HEADINGS
========================================================= */

.rich-content h1,
.rich-content h2,
.rich-content h3,
.rich-content h4,
.rich-content h5,
.rich-content h6{
    margin:22px 0 10px;
    font-family:"Inter","Segoe UI",Arial,sans-serif;
    font-weight:800;
    line-height:1.25;
}

/*
 * Apply the default heading colour only when the editor
 * has not assigned a colour directly.
 */
.rich-content h1:not([style*="color"]),
.rich-content h2:not([style*="color"]),
.rich-content h3:not([style*="color"]),
.rich-content h4:not([style*="color"]),
.rich-content h5:not([style*="color"]),
.rich-content h6:not([style*="color"]){
    color:#181a2a;
}

.rich-content h1{
    font-size:clamp(1.65rem,3vw,2.3rem);
}

.rich-content h2{
    font-size:26px;
}

.rich-content h3{
    font-size:22px;
}

.rich-content h4,
.rich-content h5,
.rich-content h6{
    font-size:clamp(1rem,1.7vw,1.25rem);
}

/* =========================================================
   LISTS
========================================================= */

.rich-content ul,
.rich-content ol{
    margin:12px 0 18px;
    padding-left:24px;
}

.rich-content li{
    margin-bottom:7px;
    padding-left:3px;
    line-height:1.65;
}

/*
 * Marker colour only affects bullets/numbers.
 * It does not override the editor-selected text colour.
 */
.rich-content li::marker{
    color:#6266ea;
    font-weight:800;
}

/* =========================================================
   LINKS
========================================================= */

.rich-content a{
    font-weight:650;
    text-decoration:none;
    border-bottom:1px solid currentColor;
    transition:color .2s ease,border-color .2s ease;
}

/* Default link colour only when the editor has not selected one */
.rich-content a:not([style*="color"]):not(.color){
    color:#3539b8;
}

.rich-content a:hover{
    color:#ad0909;
    border-bottom-color:#ad0909;
}

/* =========================================================
   BLOCKQUOTES
========================================================= */

.rich-content blockquote{
    margin:18px 0;
    padding:15px 18px;
    border-left:4px solid #d7b875;
    border-radius:0 8px 8px 0;
    background:#f6f6fb;
    font-style:italic;
}

/* Default colour only when no editor colour is assigned */
.rich-content blockquote:not([style*="color"]):not(.color){
    color:#202124;
}

/* =========================================================
   IMAGES
========================================================= */

.rich-content img{
    display:block;
    max-width:100%;
    height:auto;
    margin:18px auto;
    border-radius:9px;
}

.rich-content figure{
    max-width:100%;
    margin:18px auto;
}

.rich-content figure img{
    margin:0 auto;
}

.rich-content figcaption{
    margin-top:7px;
    color:#736775;
    font-size:13px;
    line-height:1.5;
    text-align:center;
}

/* =========================================================
   TABLES
========================================================= */

.rich-content table{
    width:100%;
    margin:18px 0;
    border-collapse:collapse;
    background:#fff;
}

.rich-content table,
.rich-content th,
.rich-content td{
    border:1px solid #dfe1e8;
}

.rich-content th,
.rich-content td{
    padding:10px 12px;
    text-align:left;
    vertical-align:top;
}

.rich-content th{
    background:#f1f1f8;
    font-weight:750;
}

.rich-content th:not([style*="color"]):not(.color){
    color:#181a2a;
}

/* =========================================================
   OTHER EDITOR ELEMENTS
========================================================= */

.rich-content hr{
    margin:22px 0;
    border:0;
    border-top:1px solid #dfe1e8;
    opacity:1;
}

.rich-content pre{
    max-width:100%;
    margin:18px 0;
    padding:15px;
    overflow-x:auto;
    border-radius:8px;
    background:#202124;
    color:#fff;
    font-size:14px;
    line-height:1.6;
}

.rich-content code{
    font-family:Consolas,"Courier New",monospace;
}

.rich-content sub,
.rich-content sup{
    font-size:75%;
}

/* =========================================================
   SPACING
========================================================= */

.rich-content > :first-child{
    margin-top:0;
}

.rich-content > :last-child{
    margin-bottom:0;
}

/* =========================================================
   DEPARTMENT CONTENT

   Only dimensions are customized.
   Editor colours remain universal.
========================================================= */

/* =========================================================
   ABOUT UNIVERSITY CONTENT
========================================================= */

.intro-copy .rich-content{
    width:100%;
}

/* =========================================================
   RESPONSIVE CONTENT
========================================================= */

@media(min-width:992px){
    .intro-copy .rich-content{
        font-size:16px;
        line-height:1.9;
    }
}

@media(max-width:767px){
    .rich-content{
        font-size:16px;
        line-height:1.65;
    }

    .rich-content p{
        margin-bottom:11px;
    }

    .rich-content ul,
    .rich-content ol{
        padding-left:20px;
    }

    .rich-content table{
        display:block;
        width:100%;
        overflow-x:auto;
        white-space:nowrap;
        -webkit-overflow-scrolling:touch;
    }
}

.gvp-dept-page .rich-content{
    max-width:1100px;
    color:var(--ink);
    font-size:15.5px;
    line-height:1.82;
    overflow-wrap:anywhere;
}

.gvp-dept-page .rich-content p{
    margin:0 0 14px;
}

.gvp-dept-page .rich-content p:last-child{
    margin-bottom:0;
}

.gvp-dept-page .rich-content ul,
.gvp-dept-page .rich-content ol{
    margin:14px 0;
    padding-left:24px;
}

.gvp-dept-page .rich-content li{
    margin-bottom:7px;
}

.gvp-dept-page .rich-content img{
    display:block;
    max-width:100%;
    height:auto;
    border-radius:8px;
}

.gvp-dept-page .rich-content table{
    width:100%;
    border-collapse:collapse;
}

.gvp-dept-page .rich-content table,
.gvp-dept-page .rich-content th,
.gvp-dept-page .rich-content td{
    border:1px solid var(--line);
}

.gvp-dept-page .rich-content th,
.gvp-dept-page .rich-content td{
    padding:9px 11px;
}

/* =========================================================
   MOBILE
   ========================================================= */

@media(max-width:650px){

    .gvp-dept-page .rich-content{
        font-size:14.5px;
        line-height:1.75;
    }
}

/* =========================================================
   FOOTER
========================================================= */

.footer{
    position:relative;
    padding:70px 0 0;
    border-top:5px solid var(--coral);
    background:#261b2b;
    color:#dcdce8;
}

.footer-content-container{
    position:relative;
}

/* =========================================================
   VISITOR COUNTER
========================================================= */

.footer-visitor-counter{
    position:absolute;
    top:0;
    right:0;
    z-index:2;
    display:inline-flex;
    align-items:center;
    gap:8px;
    padding:10px 15px;
    border:1px solid rgba(215,184,117,.38);
    border-radius:999px;
    background:rgba(255,255,255,.07);
    color:#fff;
    font-size:13px;
    line-height:1;
    white-space:nowrap;
    box-shadow:0 8px 20px rgba(0,0,0,.15);
}

.footer-visitor-counter i{
    color:#d7b875;
    font-size:14px;
}

.footer-visitor-counter span{
    color:rgba(255,255,255,.78);
    font-weight:600;
}

.footer-visitor-counter strong{
    color:#d7b875;
    font-size:14px;
    font-weight:800;
}

/* =========================================================
   BOOTSTRAP FOOTER GRID
========================================================= */

.footer-grid{
    padding-top:10px;
    padding-bottom:45px;
}

.footer-brand{
    max-width:440px;
    margin:0 0 28px;
    color:#fff;
    font-size:24px;
    font-weight:750;
    line-height:1.3;
    letter-spacing:-.035em;
}

.footer h5{
    margin:0 0 17px;
    color:#fff;
    font-size:17px;
    font-weight:750;
    line-height:1.3;
    letter-spacing:-.015em;
}

.footer p,
.footer-grid > div > a{
    font-size:14px;
}

/* =========================================================
   CONTACT DETAILS
========================================================= */

.footer-contact{
    display:flex;
    flex-direction:column;
    align-items:flex-start;
    gap:10px;
    margin-bottom:28px;
}

.footer-contact-item{
    display:flex;
    align-items:flex-start;
    gap:10px;
    color:#bbaec0;
    font-size:14px;
    line-height:1.6;
}

.footer-contact-item i{
    flex:0 0 17px;
    margin-top:5px;
    color:#ed9d7d;
    text-align:center;
}

.footer-contact-item a{
    color:#bbaec0;
    text-decoration:none;
}

.footer-contact-item a:hover{
    color:#ffb294;
}

.footer-map-heading{
    margin-top:5px !important;
}

/* =========================================================
   MAP
========================================================= */

.footer-map{
    width:100%;
    max-width:520px;
    height:230px;
    overflow:hidden;
    border:1px solid rgba(255,255,255,.18);
    border-radius:10px;
    background:rgba(255,255,255,.06);
}

.footer-map iframe{
    display:block;
    width:100%;
    height:100%;
    border:0;
}

/* =========================================================
   FOOTER LINKS
========================================================= */

.footer-link-group{
    display:flex;
    flex-direction:column;
    align-items:flex-start;
}

.footer-link-group > a{
    position:relative;
    display:inline-block;
    margin-bottom:11px;
    color:#b8b8c9;
    font-size:14px;
    line-height:1.5;
    text-decoration:none;
}

.footer-link-group > a:hover{
    color:#ffb294;
    transform:translateX(3px);
}

.footer-follow-heading{
    margin-top:25px !important;
    margin-bottom:13px !important;
}

/* =========================================================
   SOCIAL LINKS
========================================================= */

.footer-social{
    display:flex;
    flex-wrap:wrap;
    gap:9px;
}

.footer-social a{
    display:grid;
    width:36px;
    height:36px;
    place-items:center;
    border:1px solid rgba(255,255,255,.12);
    border-radius:7px;
    background:rgba(255,255,255,.06);
    color:#fff;
    font-size:14px;
    text-decoration:none;
}

.footer-social a:hover{
    border-color:var(--coral);
    background:var(--coral);
    color:#fff;
    transform:translateY(-3px);
}

/* =========================================================
   COPYRIGHT
========================================================= */

.footer-bottom{
    width:100%;
    margin-top:10px;
    padding:18px 0;
    border-top:1px solid #ffffff15;
    color:#a494ab;
    font-size:13px;
    line-height:1.6;
    text-align:center;
}

.footer-bottom span{
    display:block;
}

.footer-bottom p{
    width:100%;
    margin:0;
    color:inherit;
    font-size:inherit;
    line-height:1.6;
    text-align:center;
}

/* =========================================================
   RESPONSIVE FOOTER
========================================================= */

@media(max-width:991px){

    .footer{
        padding-top:50px;
    }

    .footer-visitor-counter{
        position:static;
        width:max-content;
        margin:0 0 22px auto;
    }

    .footer-grid{
        padding-top:0;
        padding-bottom:35px;
    }

    .footer-map{
        max-width:100%;
    }
}

@media(max-width:700px){

    .footer{
        padding-top:45px;
    }

    .footer-brand{
        margin-bottom:23px;
        font-size:22px;
    }

    .footer h5{
        font-size:17px;
    }

    .footer p{
        font-size:14px;
    }

    .footer-map{
        height:220px;
    }

    .footer-bottom{
        margin-top:8px;
        padding:16px 10px;
        font-size:12px;
        text-align:center;
    }
}

@media(max-width:575px){

    .footer-visitor-counter{
        margin:0 auto 22px;
    }

    .footer-grid{
        padding-bottom:28px;
    }

    .footer-contact-item,
    .footer-link-group > a{
        font-size:13px;
    }

    .footer-contact{
        align-items:flex-start;
        padding:0 10px;
        line-height:1.6;
    }
}

/* =========================================================
   SCROLL TO TOP
========================================================= */

#scroll-top {
    position:fixed;
    right:24px;
    bottom:24px;
    z-index:60;
    display:grid;
    width:46px;
    height:46px;
    place-items:center;
    border:0;
    border-radius:9px;
    background:var(--coral);
    color:#fff;
    font-size:20px;
    opacity:0;
    visibility:hidden;
    pointer-events:none;
    transform:translateY(12px);
    box-shadow:0 8px 24px #22234725;
    transition:
        opacity .25s ease,
        visibility .25s ease,
        transform .25s ease;
}

#scroll-top.show {
    opacity:1;
    visibility:visible;
    pointer-events:auto;
    transform:translateY(0);
}

@media(max-width:700px) {
    #scroll-top {
        right:16px;
        bottom:16px;
        width:42px;
        height:42px;
    }
}

/* =========================================================
   REDUCED MOTION
========================================================= */

@media(prefers-reduced-motion:reduce) {
    html {
        scroll-behavior:auto;
    }

    *,
    *::before,
    *::after {
        transition:none !important;
        animation:none !important;
    }
}


/* =========================================================
   GLOBAL RESPONSIVE CONTAINER AND SECTION SPACING
   Applies to every public page and section
========================================================= */

@media(max-width:1199px){

    .container-premium{
        width:calc(100% - 48px);
    }

    .section-pad{
        padding-block:75px;
    }
}

@media(max-width:767px){

    .container-premium{
        width:calc(100% - 32px);
    }

    .section-pad{
        padding-block:52px;
    }
}

@media(max-width:430px){

    .container-premium{
        width:calc(100% - 24px);
    }

    .section-pad{
        padding-block:44px;
    }
}

#overview,
#about,
#programmes,
#contact{
    scroll-margin-top:90px;
}

/* =========================================================
   CONSOLIDATED SHARED REFINEMENTS
   Formerly loaded from the heading and compact-type files.
   Component-owned declarations remain in their component CSS.
========================================================= */

body .section-title,
body .intro-copy .section-title{
    font-size:clamp(1.75rem,2.5vw,2.2rem);
    line-height:1.2;
}

body .announcement-tabs{
    display:flex;
    flex-direction:row;
    align-items:center;
    gap:12px;
    margin-top:30px;
    margin-bottom:25px;
    flex-wrap:wrap;
}

body .announcements > .container-premium{
    display:block;
}

body .announcement-tab{
    min-width:0;
    padding:12px 24px;
    border:1px solid #dbdbe7;
    border-radius:7px;
    background:#fff;
    font-size:15px;
    text-align:center;
}

body .announcement-tab.active{
    border-color:var(--plum);
    background:var(--plum);
    color:#fff;
    box-shadow:0 5px 15px #21225416;
}

body .announcement-tab:hover:not(.active){
    border-color:#edc4b4;
    background:#f8e8e2;
    color:var(--plum);
}

body .announcement-panels{
    width:100%;
    padding-inline:30px;
}

body .announcement-arrow{
    border:0;
    border-radius:0;
    background:transparent;
    color:var(--coral);
    font-size:20px;
}

body .announcement-item:hover .announcement-arrow{
    background:transparent;
    color:var(--plum);
}

body .announcement-content h3{
    font-size:clamp(1rem,1.4vw,1.15rem);
}

body .announcement-date strong{
    font-size:36px;
}

body .announcement-panel-footer{
    font-size:13px;
}

body .programme-top-tab{
    font-size:15px;
}

body .programme-intro,
body .schools-head > p{
    font-size:16px;
}

body .programme-card h3,
body .school-content h3{
    font-size:20px;
}

body .programme-number{
    font-size:32px;
}

body .programme-card-title p,
body .programme-intake{
    font-size:14px;
}

body .programme-empty,
body .programme-loading{
    font-size:16px;
}

body .event-card h4{
    font-size:20px;
}

body .event-date strong{
    font-size:38px;
}

body .signature-mark{
    font-size:23px;
}

@media(min-width:1200px){
    body .programme-grid{
        grid-template-columns:repeat(4,minmax(0,1fr));
    }

    body .programme-card{
        min-width:0;
        padding-inline:21px;
    }

    body .programme-card-title{
        gap:12px;
        padding-right:0;
    }
}

@media(min-width:701px) and (max-width:1199px){
    body .programme-grid{
        grid-template-columns:repeat(2,minmax(0,1fr));
    }
}

@media(max-width:700px){
    body .section-title,
    body .intro-copy .section-title{
        font-size:clamp(1.65rem,4.9vw,2rem);
    }

    body .announcement-tabs{
        gap:8px;
        margin-top:24px;
        margin-bottom:20px;
    }

    body .announcement-tab{
        padding:11px 14px;
    }

    body .announcement-tab,
    body .programme-top-tab{
        font-size:13px;
    }

    body .announcement-panels{
        padding-inline:20px;
    }

    body .announcement-arrow{
        font-size:17px;
    }

    body .announcement-content h3{
        font-size:16px;
    }

    body .announcement-date strong{
        font-size:30px;
    }

    body .programme-grid{
        grid-template-columns:minmax(0,1fr);
    }

    body .programme-card h3,
    body .school-content h3{
        font-size:19px;
    }

    body .event-card h4{
        font-size:18px;
    }

    body .event-date strong{
        font-size:33px;
    }

    body .signature-mark{
        font-size:21px;
    }
}
