/* =============================================================================
   ALPHA EDUCATION - Design system
   Loaded last, after bootstrap.min.css / style.css / cras-course-card.css /
   cras-nav.css, so tokens and components below win the cascade.
   Reference: DESIGN.md at the project root.
   ============================================================================= */

/* -----------------------------------------------------------------------------
   1. TOKENS
   -------------------------------------------------------------------------- */
:root {
    /* Brand */
    --a-gold:        #b68a35;   /* primary accent: graphics, rules, large text */
    --a-gold-ink:    #8a6a24;   /* accent for small text on light (5.0:1)      */
    --a-gold-ink-2:  #85651f;   /* the same accent on the cream tint (4.8:1)   */
    --a-gold-soft:   #c9a25a;
    --a-gold-tint:   #f7f1e4;
    --a-gold-line:   #e2d3ae;

    --a-navy:        #142439;   /* secondary / dark surfaces and body headings */
    --a-navy-soft:   #1d3252;
    --a-navy-deep:   #0d1826;

    /* Neutrals */
    --a-white:       #ffffff;
    --a-surface:     #f6f7f9;
    --a-surface-2:   #eef0f4;
    --a-line:        #e2e5ea;
    --a-line-soft:   #edeff3;
    --a-body:        #5b6470;   /* body copy on light (5.9:1)   */
    --a-muted:       #646b7a;   /* small meta: 5.3:1 white, 5.0:1 surface, 4.8:1 cream */

    /* Type. Two families, no more: Inter operates the interface, Newsreader
       carries the editorial headings. Both are requested at the weights used
       below and nothing else. */
    --a-font-display: 'Newsreader', Georgia, 'Times New Roman', serif;
    --a-font-ui:      'Inter', -apple-system, BlinkMacSystemFont, 'SF Pro Display', 'SF Pro Text',
                      'Segoe UI', Roboto, Helvetica, Arial, sans-serif;

    /* Size ramp. Two display steps: the full-bleed hero can take the larger
       one, a heading sitting in a column cannot without breaking long course
       names across the grid. */
    --a-fs-display: clamp(2.875rem, 5.2vw, 5rem);
    --a-fs-h1:      clamp(2.625rem, 4.1vw, 3.625rem);
    --a-fs-h2:      clamp(2.125rem, 3.2vw, 2.75rem);
    --a-fs-h3:      clamp(1.125rem, 1.6vw, 1.3125rem);
    --a-fs-h4:      1.0625rem;
    --a-fs-lead:    clamp(1.0625rem, 1.15vw, 1.1875rem);
    --a-fs-body:    1.0625rem;
    --a-fs-sm:      0.9375rem;
    --a-fs-xs:      0.8125rem;
    --a-fs-label:   0.6875rem;

    /* Weights. Nothing load-bearing is lighter than 400. */
    --a-w-body:    400;
    --a-w-ui:      500;   /* navigation, secondary UI, list rows   */
    --a-w-strong:  600;   /* buttons, labels, emphasis             */
    --a-w-display: 600;   /* editorial headings                    */

    /* Line height and tracking */
    --a-lh-display: 1.04;
    --a-lh-heading: 1.14;
    --a-lh-body:    1.7;
    --a-ls-display: -0.03em;   /* a serif collides below this  */
    --a-ls-heading: -0.02em;
    --a-ls-ui:      -0.01em;
    --a-ls-label:   0.1em;

    /* Icons. One family (Font Awesome 6 Pro), two optical sizes: inline with
       text, or alone in a control. */
    --a-icon-inline: 0.78em;
    --a-icon-btn:    15px;

    /* Spacing (4px base) */
    --a-1:  4px;   --a-2:  8px;   --a-3: 12px;  --a-4: 16px;
    --a-5: 24px;   --a-6: 32px;   --a-7: 48px;  --a-8: 64px;
    --a-9: 80px;   --a-10: 96px;  --a-11: 120px; --a-12: 128px;
    --a-section: clamp(72px, 8vw, 116px);
    --a-gutter:  clamp(16px, 4vw, 48px);
    --a-max:     1280px;

    /* Shape: rounded, minimal system. Controls at --a-radius, large media
       and cards at --a-radius-lg, badges and pills fully round. */
    --a-radius:      10px;
    --a-radius-lg:   18px;
    --a-radius-pill: 999px;

    /* Elevation, tinted to the navy base */
    --a-shadow-1: 0 1px 2px rgba(20, 36, 57, 0.05);
    --a-shadow-2: 0 1px 2px rgba(20, 36, 57, 0.05), 0 14px 34px -14px rgba(20, 36, 57, 0.18);
    --a-shadow-3: 0 2px 4px rgba(20, 36, 57, 0.06), 0 28px 60px -22px rgba(20, 36, 57, 0.26);

    /* Motion */
    --a-ease:  cubic-bezier(0.22, 1, 0.36, 1);
    --a-fast:  160ms;
    --a-base:  240ms;
    --a-slow:  620ms;

    /* Legacy theme overrides so inherited components pick up Alpha branding */
    --theme-color:   #b68a35;
    --theme-color2:  #142439;
    --title-color:   #142439;
    --title-color2:  #142439;
    --title-color3:  #142439;
    --title-color4:  #142439;
    --body-color:    #5b6470;
    --black-color:   #142439;
    --title-font:    var(--a-font-display);
    --subtitle-font: var(--a-font-ui);
    --body-font:     var(--a-font-ui);
}

/* -----------------------------------------------------------------------------
   2. BASE
   -------------------------------------------------------------------------- */
*, *::before, *::after { box-sizing: border-box; }

body {
    font-family: var(--a-font-ui);
    font-size: var(--a-fs-body);
    font-weight: var(--a-w-body);
    line-height: var(--a-lh-body);
    letter-spacing: -0.005em;
    color: var(--a-body);
    background: var(--a-white);
    -webkit-font-smoothing: antialiased;
    -moz-osx-font-smoothing: grayscale;
    text-rendering: optimizeLegibility;
    font-feature-settings: 'kern' 1, 'liga' 1;
    font-synthesis-weight: none;
}

h1, h2, h3, h4, h5, h6 {
    font-family: var(--a-font-display);
    color: var(--a-navy);
    font-weight: var(--a-w-display);
    line-height: var(--a-lh-heading);
    letter-spacing: var(--a-ls-heading);
    text-wrap: balance;
}

/* Anything the visitor operates is Inter, whatever tag it happens to be. */
button, input, select, textarea, label, th, td, legend, summary {
    font-family: var(--a-font-ui);
}

/* Prose sits inside a comfortable measure by default, so a paragraph never
   runs the full width of a section. */
p { max-width: 68ch; text-wrap: pretty; }

a { color: var(--a-navy); }
a:hover { color: var(--a-gold-ink); }

:focus-visible {
    outline: 2px solid var(--a-gold);
    outline-offset: 3px;
    border-radius: 2px;
}

::selection { background: var(--a-gold-tint); color: var(--a-navy); }

/* -----------------------------------------------------------------------------
   3. LAYOUT
   -------------------------------------------------------------------------- */
.a-wrap {
    width: 100%;
    max-width: var(--a-max);
    margin-inline: auto;
    padding-inline: var(--a-gutter);
}
.a-wrap--narrow { max-width: 900px; }

.a-section { padding-block: var(--a-section); background: var(--a-white); }
.a-section--tint  { background: var(--a-surface); }
.a-section--cream { background: var(--a-gold-tint); }
.a-section--navy  { background: var(--a-navy); color: rgba(255, 255, 255, 0.74); }
.a-section--flush { padding-block: 0; }

.a-sec-head { margin-bottom: var(--a-7); max-width: 780px; }
.a-sec-head--row {
    display: flex; align-items: flex-end; justify-content: space-between;
    gap: var(--a-5); max-width: none; flex-wrap: wrap;
}

/* -----------------------------------------------------------------------------
   4. TYPOGRAPHY UTILITIES
   -------------------------------------------------------------------------- */
.a-eyebrow {
    display: block;
    font-family: var(--a-font-ui);
    font-size: var(--a-fs-label);
    font-weight: var(--a-w-strong);
    letter-spacing: var(--a-ls-label);
    text-transform: uppercase;
    color: var(--a-gold-ink);
    margin-bottom: var(--a-4);
}
.a-eyebrow--onnavy { color: var(--a-gold-soft); }

.a-h1 {
    font-family: var(--a-font-display);
    font-size: var(--a-fs-h1);
    line-height: var(--a-lh-display);
    font-weight: var(--a-w-display);
    letter-spacing: var(--a-ls-display);
    color: var(--a-navy);
    margin: 0;
    text-wrap: balance;
}
/* The one heading that gets the top of the ramp: a hero with the full width
   of the page to wrap into. */
.a-h1--hero { font-size: var(--a-fs-display); }
.a-h2 {
    font-family: var(--a-font-display);
    font-size: var(--a-fs-h2);
    line-height: var(--a-lh-heading);
    font-weight: var(--a-w-display);
    letter-spacing: var(--a-ls-heading);
    color: var(--a-navy);
    margin: 0;
    text-wrap: balance;
}
.a-h3 {
    font-family: var(--a-font-display);
    font-size: var(--a-fs-h3);
    line-height: 1.3;
    font-weight: var(--a-w-display);
    letter-spacing: -0.014em;
    color: var(--a-navy);
    margin: 0;
    text-wrap: balance;
}
.a-h4 {
    font-family: var(--a-font-ui);
    font-size: var(--a-fs-h4);
    font-weight: var(--a-w-strong);
    line-height: 1.4;
    color: var(--a-navy);
    letter-spacing: var(--a-ls-ui);
    margin: 0;
}
.a-h1--onnavy, .a-h2--onnavy, .a-h3--onnavy, .a-h4--onnavy { color: var(--a-white); }

.a-lead {
    font-size: var(--a-fs-lead);
    line-height: var(--a-lh-body);
    font-weight: var(--a-w-body);
    color: var(--a-body);
    margin: var(--a-4) 0 0;
    max-width: 64ch;
    text-wrap: pretty;
}
.a-lead--onnavy { color: rgba(255, 255, 255, 0.74); }

.a-body { font-size: var(--a-fs-body); line-height: 1.72; color: var(--a-body); margin: 0 0 var(--a-4); }
.a-meta { font-size: var(--a-fs-xs); color: var(--a-muted); }
.a-num  { font-variant-numeric: tabular-nums; font-feature-settings: 'tnum' 1; }

/* -----------------------------------------------------------------------------
   5. SIGNATURE ELEMENT: the crest corner
   A 1px gold bracket with a solid gold cap, drawn from the corner outward.
   Derived from the shield crest in the logo. This is the ONLY decorative
   flourish in the system. Nothing else draws attention to itself.
   -------------------------------------------------------------------------- */
.a-crest { position: relative; padding-top: var(--a-5); }
.a-crest::before,
.a-crest::after {
    content: '';
    position: absolute;
    top: 0; left: 0;
    background: var(--a-gold);
    transform-origin: left top;
    transition: transform var(--a-slow) var(--a-ease);
}
.a-crest::before { width: 56px; height: 1px; transform: scaleX(0); }
.a-crest::after  { width: 1px; height: 20px; transform: scaleY(0); transition-delay: 90ms; }
.a-crest.in-view::before,
[data-reveal].in-view .a-crest::before,
.a-crest:not([data-reveal])::before { transform: scaleX(1); }
.a-crest.in-view::after,
[data-reveal].in-view .a-crest::after,
.a-crest:not([data-reveal])::after { transform: scaleY(1); }

/* Vertical-only variant for list rows and cards */
.a-crest--tick { padding-top: 0; padding-left: var(--a-4); }
.a-crest--tick::before { width: 1px; height: 100%; transform: scaleY(1); }
.a-crest--tick::after  { display: none; }

/* -----------------------------------------------------------------------------
   6. BUTTONS
   -------------------------------------------------------------------------- */
.a-btn {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: var(--a-2);
    min-height: 46px;
    padding: 12px 26px;
    border: 1px solid transparent;
    border-radius: var(--a-radius);
    font-family: var(--a-font-ui);
    font-size: var(--a-fs-sm);
    font-weight: var(--a-w-strong);
    letter-spacing: var(--a-ls-ui);
    line-height: 1.2;
    text-decoration: none;
    white-space: nowrap;
    cursor: pointer;
    transition: background var(--a-fast) ease, border-color var(--a-fast) ease,
                color var(--a-fast) ease, transform var(--a-fast) ease;
}
.a-btn:active { transform: translateY(1px); }
.a-btn i { font-size: var(--a-icon-inline); }

.a-btn--primary { background: var(--a-navy); border-color: var(--a-navy); color: var(--a-white); }
.a-btn--primary:hover { background: var(--a-navy-soft); border-color: var(--a-navy-soft); color: var(--a-white); }

.a-btn--gold { background: var(--a-gold); border-color: var(--a-gold); color: var(--a-navy); }
.a-btn--gold:hover { background: var(--a-gold-soft); border-color: var(--a-gold-soft); color: var(--a-navy); }

.a-btn--ghost { background: transparent; border-color: var(--a-line); color: var(--a-navy); }
.a-btn--ghost:hover { border-color: var(--a-navy); background: var(--a-navy); color: var(--a-white); }

.a-btn--onnavy {
    background: rgba(255, 255, 255, 0.06);
    border-color: rgba(255, 255, 255, 0.34);
    color: var(--a-white);
}
.a-btn--onnavy:hover { background: rgba(255, 255, 255, 0.14); border-color: rgba(255, 255, 255, 0.6); color: var(--a-white); }

/* Ghost over photography: needs its own scrim to stay readable */
.a-btn--onimage {
    background: rgba(13, 24, 38, 0.42);
    border-color: rgba(255, 255, 255, 0.46);
    color: var(--a-white);
    backdrop-filter: blur(6px);
    -webkit-backdrop-filter: blur(6px);
}
.a-btn--onimage:hover { background: rgba(13, 24, 38, 0.66); border-color: var(--a-white); color: var(--a-white); }

.a-btn--sm { min-height: 38px; padding: 9px 18px; font-size: var(--a-fs-xs); }
.a-btn[disabled], .a-btn.is-loading { opacity: 0.6; pointer-events: none; }

.a-btn .a-spin {
    display: none;
    width: 14px; height: 14px;
    border: 2px solid currentColor;
    border-top-color: transparent;
    border-radius: 50%;
    animation: a-spin 700ms linear infinite;
}
.a-btn.is-loading .a-spin { display: inline-block; }
@keyframes a-spin { to { transform: rotate(360deg); } }

/* Quiet inline link with arrow */
.a-link {
    display: inline-flex; align-items: center; gap: var(--a-2);
    font-size: var(--a-fs-xs); font-weight: var(--a-w-strong);
    letter-spacing: var(--a-ls-ui);
    color: var(--a-navy); text-decoration: none;
    transition: color var(--a-fast) ease, gap var(--a-fast) ease;
}
.a-link i { font-size: var(--a-icon-inline); }
.a-link:hover { color: var(--a-gold-ink); gap: 12px; }
.a-link--onnavy { color: var(--a-gold-soft); }
.a-link--onnavy:hover { color: var(--a-white); }

/* -----------------------------------------------------------------------------
   7. BADGES AND PILLS
   -------------------------------------------------------------------------- */
.a-pill {
    display: inline-flex; align-items: center; gap: 6px;
    padding: 4px 11px;
    border-radius: var(--a-radius-pill);
    border: 1px solid var(--a-line);
    background: var(--a-white);
    font-family: var(--a-font-ui);
    font-size: 0.6875rem;
    font-weight: 600;
    letter-spacing: 0.04em;
    color: var(--a-muted);
    white-space: nowrap;
}
.a-pill--cme    { background: var(--a-gold-tint); border-color: var(--a-gold-line); color: var(--a-gold-ink); }
.a-pill--accred { background: var(--a-surface); border-color: var(--a-line); color: var(--a-navy); }
.a-pill--navy   { background: var(--a-navy); border-color: var(--a-navy); color: var(--a-white); }
.a-pill--onimage {
    background: rgba(13, 24, 38, 0.7);
    border-color: rgba(255, 255, 255, 0.2);
    color: var(--a-white);
    backdrop-filter: blur(6px);
    -webkit-backdrop-filter: blur(6px);
}

/* -----------------------------------------------------------------------------
   8. CARDS
   -------------------------------------------------------------------------- */
.a-card {
    background: var(--a-white);
    border: 1px solid var(--a-line);
    border-radius: var(--a-radius-lg);
    transition: border-color var(--a-base) ease, box-shadow var(--a-base) ease,
                transform var(--a-base) var(--a-ease);
}

/* Generic responsive card grid. Breakpoint-free, per DESIGN.md's layout rules. */
.a-cards-grid {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(280px, 1fr));
    gap: var(--a-4);
}

/* Accreditation body card: mark, scope pill, name, real description text */
.a-accred-card { padding: var(--a-5); }
.a-accred-card:hover { border-color: var(--a-gold-line); box-shadow: var(--a-shadow-2); transform: translateY(-3px); }
.a-accred-card__head { display: flex; align-items: center; justify-content: space-between; margin-bottom: var(--a-4); }
.a-accred-card .a-h3 { margin: 0 0 8px; }
.a-card:hover { border-color: var(--a-gold-line); box-shadow: var(--a-shadow-2); transform: translateY(-3px); }

/* Faculty card: circular portrait, name, nationality, short bio clamp */
.a-faculty-grid {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(220px, 1fr));
    gap: var(--a-4);
}
.a-faculty-card { padding: var(--a-6) var(--a-5) var(--a-5); text-align: center; text-decoration: none; display: block; }
.a-faculty-card:hover { border-color: var(--a-gold-line); box-shadow: var(--a-shadow-2); transform: translateY(-3px); }
.a-faculty-card__avatar {
    width: 104px; height: 104px; margin: 0 auto var(--a-4);
    border-radius: 50%; overflow: hidden;
    background: var(--a-surface-2);
}
.a-faculty-card__avatar img { width: 100%; height: 100%; object-fit: cover; display: block; transition: transform var(--a-slow) var(--a-ease); }
.a-faculty-card:hover .a-faculty-card__avatar img { transform: scale(1.06); }
.a-faculty-card__name {
    font-family: var(--a-font-display);
    font-size: 1.05rem; font-weight: var(--a-w-display); color: var(--a-navy);
    margin: 0 0 4px; transition: color var(--a-fast) ease;
}
.a-faculty-card:hover .a-faculty-card__name { color: var(--a-gold-ink); }
.a-faculty-card__tag {
    display: block; font-size: var(--a-fs-xs); font-weight: 600; letter-spacing: 0.04em;
    color: var(--a-gold-ink); text-transform: uppercase; margin: 0 0 var(--a-3);
}
.a-faculty-card__desc {
    font-size: var(--a-fs-xs); line-height: 1.65; color: var(--a-muted); margin: 0;
    display: -webkit-box; -webkit-line-clamp: 3; -webkit-box-orient: vertical; overflow: hidden;
}

/* Partner / provider card: logo zone, name, description clamp, link */
.a-partner-card { display: flex; flex-direction: column; text-decoration: none; }
.a-partner-card:hover { border-color: var(--a-gold-line); box-shadow: var(--a-shadow-2); transform: translateY(-3px); }
.a-partner-card__logo {
    height: 96px; display: flex; align-items: center; justify-content: center;
    padding: var(--a-4); border-bottom: 1px solid var(--a-line-soft);
}
.a-partner-card__logo img { max-width: 100%; max-height: 100%; object-fit: contain; }
.a-partner-card__body { padding: var(--a-5); flex: 1; display: flex; flex-direction: column; }
.a-partner-card__name { font-family: var(--a-font-display); font-size: 1.05rem; font-weight: var(--a-w-display); color: var(--a-navy); margin: 0 0 8px; }
.a-partner-card:hover .a-partner-card__name { color: var(--a-gold-ink); }
.a-partner-card__desc {
    font-size: var(--a-fs-xs); line-height: 1.65; color: var(--a-muted); margin: 0 0 var(--a-3); flex: 1;
    display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden;
}

/* Partner detail hero: fixed logo column, flexible content column */
.a-partner-hero { display: grid; grid-template-columns: 320px 1fr; gap: clamp(32px, 6vw, 80px); align-items: start; }
@media (max-width: 991px) { .a-partner-hero { grid-template-columns: 1fr; } }

/* Gallery album card: cover photo, name, photo count, view link */
.a-gallery-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(260px, 1fr)); gap: var(--a-4); }
.a-gallery-card { cursor: pointer; overflow: hidden; }
.a-gallery-card:hover { border-color: var(--a-gold-line); box-shadow: var(--a-shadow-2); transform: translateY(-3px); }
.a-gallery-card__cover { aspect-ratio: 4 / 3; background: var(--a-surface-2); overflow: hidden; position: relative; }
.a-gallery-card__cover img { width: 100%; height: 100%; object-fit: cover; display: block; transition: transform var(--a-slow) var(--a-ease); }
.a-gallery-card:hover .a-gallery-card__cover img { transform: scale(1.04); }
.a-gallery-card__body { padding: var(--a-4) var(--a-5) var(--a-5); }
.a-gallery-card__name { font-family: var(--a-font-display); font-size: 1.05rem; font-weight: var(--a-w-display); color: var(--a-navy); margin: 0 0 6px; }
.a-gallery-card__meta { font-size: var(--a-fs-xs); color: var(--a-muted); margin: 0 0 var(--a-3); }

/* Video card: 16:9 thumbnail with a play affordance, title, description clamp */
.a-video-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(280px, 1fr)); gap: var(--a-4); }
.a-video-card { cursor: pointer; overflow: hidden; }
.a-video-card:hover { border-color: var(--a-gold-line); box-shadow: var(--a-shadow-2); transform: translateY(-3px); }
.a-video-card__thumb { aspect-ratio: 16 / 9; background: var(--a-navy-deep); position: relative; overflow: hidden; }
.a-video-card__thumb img { width: 100%; height: 100%; object-fit: cover; display: block; transition: transform var(--a-slow) var(--a-ease); }
.a-video-card:hover .a-video-card__thumb img { transform: scale(1.04); }
.a-video-card__play {
    position: absolute; inset: 0; display: flex; align-items: center; justify-content: center;
    background: rgba(13, 24, 38, 0.22); transition: background var(--a-base) ease;
}
.a-video-card:hover .a-video-card__play { background: rgba(13, 24, 38, 0.42); }
.a-video-card__play-btn {
    width: 52px; height: 52px; border-radius: 50%;
    background: var(--a-gold); color: var(--a-navy); font-size: 16px;
    display: flex; align-items: center; justify-content: center;
    transition: transform var(--a-base) var(--a-ease);
}
.a-video-card:hover .a-video-card__play-btn { transform: scale(1.08); }
.a-video-card__body { padding: var(--a-4) var(--a-5) var(--a-5); }
.a-video-card__title { font-family: var(--a-font-display); font-size: 1rem; font-weight: var(--a-w-display); color: var(--a-navy); margin: 0 0 6px; line-height: 1.4; }
.a-video-card__desc { font-size: var(--a-fs-xs); line-height: 1.6; color: var(--a-muted); margin: 0; display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; }

/* Dark modal chrome for the gallery lightbox and video player, on brand
   instead of Bootstrap's default light modal. */
.a-modal-dark .modal-content { background: var(--a-navy-deep); border: none; border-radius: var(--a-radius-lg); overflow: hidden; }
.a-modal-dark .modal-header { background: var(--a-navy-deep); border-bottom: 1px solid rgba(255, 255, 255, 0.1); padding: var(--a-4) var(--a-5); }
.a-modal-dark .modal-title { color: var(--a-white); font-family: var(--a-font-ui); font-size: 0.9375rem; font-weight: 600; }
.a-modal-dark .btn-close { filter: invert(1); }
.a-modal-dark .modal-body { padding: 0; position: relative; }

.a-gsl-wrap { position: relative; background: var(--a-navy-deep); display: flex; align-items: center; justify-content: center; min-height: 200px; max-height: 70vh; overflow: hidden; }
.a-gsl-imgwrap { width: 100%; max-height: 70vh; display: flex; align-items: center; justify-content: center; position: relative; user-select: none; }
.a-gsl-imgwrap img { max-width: 100%; max-height: 70vh; object-fit: contain; display: block; pointer-events: none; user-select: none; -webkit-user-drag: none; }
.a-gsl-btn {
    position: absolute; top: 50%; transform: translateY(-50%); z-index: 5;
    background: rgba(255, 255, 255, 0.1); border: 1px solid rgba(255, 255, 255, 0.28);
    color: var(--a-white); border-radius: 50%; width: 44px; height: 44px; font-size: 15px;
    display: flex; align-items: center; justify-content: center;
    transition: background var(--a-fast) ease;
}
.a-gsl-btn:hover { background: var(--a-gold); color: var(--a-navy); }
.a-gsl-btn.is-prev { left: 14px; }
.a-gsl-btn.is-next { right: 14px; }
.a-gsl-foot { background: var(--a-navy-deep); padding: var(--a-3) var(--a-5); display: flex; align-items: center; justify-content: space-between; }
.a-gsl-counter { font-size: var(--a-fs-xs); color: rgba(255, 255, 255, 0.6); font-variant-numeric: tabular-nums; }
.a-gsl-dots { display: flex; gap: 6px; flex-wrap: wrap; justify-content: center; }
.a-gsl-dot { width: 7px; height: 7px; border-radius: 50%; background: rgba(255, 255, 255, 0.25); border: none; padding: 0; cursor: pointer; transition: background var(--a-fast) ease, transform var(--a-fast) ease; }
.a-gsl-dot.active { background: var(--a-gold); transform: scale(1.3); }
.a-video-embed-wrap { position: relative; padding-bottom: 56.25%; height: 0; }
.a-video-embed-wrap iframe { position: absolute; inset: 0; width: 100%; height: 100%; border: none; }

/* Numbered process steps: for a genuine ordered sequence only (admissions,
   enrolment), never as decorative section numbering. Vertical list with a
   connecting line, visually distinct from the .a-benefit differentiator grid. */
.a-steps { display: flex; flex-direction: column; }
.a-step { display: flex; gap: var(--a-5); padding-bottom: var(--a-6); position: relative; }
.a-step:not(:last-child)::before {
    content: ''; position: absolute; left: 21px; top: 44px; bottom: 0;
    width: 1px; background: var(--a-line);
}
.a-step__num {
    flex-shrink: 0; width: 44px; height: 44px; border-radius: 50%;
    display: flex; align-items: center; justify-content: center;
    background: var(--a-navy); color: var(--a-white);
    font-family: var(--a-font-ui); font-size: 0.9375rem; font-weight: 700;
    font-variant-numeric: tabular-nums;
}
.a-step__title { font-family: var(--a-font-display); font-size: 1.1rem; font-weight: var(--a-w-display); color: var(--a-navy); margin: 0 0 6px; }
.a-step__text { font-size: var(--a-fs-sm); line-height: 1.7; color: var(--a-body); margin: 0; }

/* Rating badge: overall score plus star row, for the testimonials hero */
.a-rating {
    display: inline-flex; align-items: center; gap: var(--a-4);
    padding: var(--a-4) var(--a-5);
    border: 1px solid rgba(255, 255, 255, 0.28);
    border-radius: var(--a-radius-lg);
    background: rgba(255, 255, 255, 0.06);
}
.a-rating__score { font-family: var(--a-font-display); font-size: 2rem; font-weight: var(--a-w-display); color: var(--a-white); line-height: 1; font-variant-numeric: tabular-nums; }
.a-rating__stars { display: flex; gap: 3px; }
.a-rating__star { font-size: 15px; color: rgba(255, 255, 255, 0.25); }
.a-rating__star.is-on { color: var(--a-gold); }
.a-rating__meta { font-size: var(--a-fs-xs); color: rgba(255, 255, 255, 0.68); line-height: 1.5; text-align: left; }

/* Breadcrumb trail, used on detail pages beneath the header */
.a-breadcrumb {
    display: flex; align-items: center; gap: 8px; flex-wrap: wrap;
    font-size: var(--a-fs-xs); color: var(--a-muted); margin-bottom: var(--a-5);
}
.a-breadcrumb a { color: var(--a-muted); text-decoration: none; transition: color var(--a-fast) ease; }
.a-breadcrumb a:hover { color: var(--a-gold-ink); }
.a-breadcrumb__sep { color: var(--a-line); }
.a-breadcrumb__current { color: var(--a-navy); font-weight: 600; }

/* Course card, canonical across home, listing and related-course rails */
.a-course-card {
    display: flex; flex-direction: column;
    height: 100%;
    background: var(--a-white);
    border: 1px solid var(--a-line);
    border-radius: var(--a-radius-lg);
    overflow: hidden;
    text-decoration: none;
    transition: border-color var(--a-base) ease, box-shadow var(--a-base) ease,
                transform var(--a-base) var(--a-ease);
}
.a-course-card:hover { border-color: var(--a-gold-line); box-shadow: var(--a-shadow-3); transform: translateY(-3px); }
.a-course-card__media {
    position: relative;
    aspect-ratio: 16 / 10;
    background: var(--a-surface-2);
    overflow: hidden;
}
.a-course-card__media img {
    width: 100%; height: 100%; object-fit: cover; display: block;
    transition: transform var(--a-slow) var(--a-ease);
}
.a-course-card:hover .a-course-card__media img { transform: scale(1.035); }
.a-course-card__tags {
    position: absolute; left: var(--a-3); bottom: var(--a-3);
    display: flex; gap: 6px; flex-wrap: wrap; max-width: calc(100% - 24px);
}
.a-course-card__body {
    display: flex; flex-direction: column; flex: 1;
    padding: var(--a-5) var(--a-5) var(--a-4);
}
.a-course-card__title {
    font-family: var(--a-font-display);
    font-size: 1.15rem; font-weight: var(--a-w-display); line-height: 1.3;
    color: var(--a-navy); margin: 0 0 8px;
    transition: color var(--a-fast) ease;
}
.a-course-card:hover .a-course-card__title { color: var(--a-gold-ink); }
.a-course-card__meta {
    display: flex; align-items: center; gap: 8px;
    font-size: var(--a-fs-xs); color: var(--a-muted);
    margin: 0;
}
.a-course-card__dot { width: 3px; height: 3px; border-radius: 50%; background: var(--a-line); flex-shrink: 0; }
.a-course-card__foot {
    display: flex; align-items: center; justify-content: space-between; gap: var(--a-3);
    margin-top: auto; padding-top: var(--a-4);
    border-top: 1px solid var(--a-line-soft);
}
/* The fee takes the room it needs, the action never breaks across two lines. */
.a-course-card__fee { min-width: 0; font-size: var(--a-fs-sm); font-weight: var(--a-w-strong); letter-spacing: -0.01em; color: var(--a-navy); }
.a-course-card__fee small { display: block; font-size: 0.6875rem; font-weight: var(--a-w-ui); letter-spacing: 0; color: var(--a-gold-ink); }
.a-course-card__foot .a-link { flex-shrink: 0; white-space: nowrap; }

/* -----------------------------------------------------------------------------
   9. FORMS
   -------------------------------------------------------------------------- */
.a-field { display: flex; flex-direction: column; gap: var(--a-2); }
.a-label {
    font-family: var(--a-font-ui);
    font-size: var(--a-fs-xs); font-weight: var(--a-w-strong);
    color: var(--a-navy); letter-spacing: var(--a-ls-ui);
}
.a-label--onnavy { color: rgba(255, 255, 255, 0.9); }
.a-req { color: #d1444c; margin-left: 2px; }
.a-req--onnavy { color: #ff8f96; }

.a-input {
    width: 100%;
    min-height: 46px;
    padding: 11px 14px;
    background: var(--a-white);
    border: 1px solid var(--a-line);
    border-radius: var(--a-radius);
    font-family: var(--a-font-ui);
    font-size: var(--a-fs-sm);
    font-weight: var(--a-w-body);
    letter-spacing: -0.005em;
    color: var(--a-navy);
    transition: border-color var(--a-fast) ease, box-shadow var(--a-fast) ease;
}
.a-input::placeholder { color: var(--a-muted); }
.a-input:focus {
    outline: none;
    border-color: var(--a-gold);
    box-shadow: 0 0 0 3px rgba(182, 138, 53, 0.18);
}
.a-input--onnavy {
    background: rgba(255, 255, 255, 0.07);
    border-color: rgba(255, 255, 255, 0.28);
    color: var(--a-white);
}
.a-input--onnavy::placeholder { color: rgba(255, 255, 255, 0.55); }
.a-input--onnavy:focus { border-color: var(--a-gold-soft); box-shadow: 0 0 0 3px rgba(201, 162, 90, 0.24); }
.a-input[aria-invalid="true"] { border-color: #d1444c; }
textarea.a-input { min-height: 140px; resize: vertical; }

.a-help  { font-size: 0.75rem; color: var(--a-muted); }
.a-help--onnavy { font-size: 0.75rem; color: rgba(255, 255, 255, 0.6); }
.a-error { font-size: 0.75rem; color: #d1444c; min-height: 1em; }
.a-error--onnavy { font-size: 0.75rem; color: #ff9ba1; min-height: 1em; }
.a-ok    { font-size: 0.75rem; color: #8fd8ad; min-height: 1em; }

/* Radio card group: a11y-friendly fieldset, each option a selectable card
   with its description, for choices like membership tier or gender. */
.a-radio-group { display: flex; flex-direction: column; gap: var(--a-2); }
.a-radio-group--row { flex-direction: row; flex-wrap: wrap; gap: var(--a-3); }
.a-radio {
    display: flex; align-items: flex-start; gap: var(--a-3);
    padding: var(--a-4); border: 1px solid var(--a-line); border-radius: var(--a-radius);
    cursor: pointer; transition: border-color var(--a-fast) ease, background var(--a-fast) ease;
}
.a-radio:hover { border-color: var(--a-gold-line); }
.a-radio input[type="radio"] { flex-shrink: 0; margin-top: 3px; accent-color: var(--a-gold); width: 16px; height: 16px; }
.a-radio:has(input:checked) { border-color: var(--a-gold); background: var(--a-gold-tint); }
.a-radio__title { font-family: var(--a-font-ui); font-size: var(--a-fs-sm); font-weight: 600; color: var(--a-navy); }
.a-radio__desc { font-size: var(--a-fs-xs); color: var(--a-muted); margin-top: 2px; }

/* Plain checkbox row for a single agreement / opt-in */
.a-checkbox { display: flex; align-items: flex-start; gap: var(--a-3); cursor: pointer; }
.a-checkbox input[type="checkbox"] { flex-shrink: 0; margin-top: 3px; accent-color: var(--a-gold); width: 16px; height: 16px; }
.a-checkbox__label { font-size: var(--a-fs-xs); color: var(--a-body); line-height: 1.6; }

/* File input, styled to match .a-input rather than the OS default button */
.a-file {
    display: flex; align-items: center; gap: var(--a-3);
    min-height: 46px; padding: 8px 14px;
    background: var(--a-white); border: 1px solid var(--a-line); border-radius: var(--a-radius);
    font-family: var(--a-font-ui); font-size: var(--a-fs-sm); color: var(--a-muted);
    transition: border-color var(--a-fast) ease;
}
.a-file:focus-within { border-color: var(--a-gold); box-shadow: 0 0 0 3px rgba(182, 138, 53, 0.18); }
.a-file input[type="file"] { font-size: var(--a-fs-xs); color: var(--a-body); width: 100%; }
.a-file input[type="file"]::-webkit-file-upload-button {
    margin-right: var(--a-3); padding: 7px 14px; border: none; border-radius: var(--a-radius);
    background: var(--a-navy); color: var(--a-white); font-family: var(--a-font-ui); font-size: var(--a-fs-xs); font-weight: 600;
    cursor: pointer;
}

.a-form-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(240px, 1fr)); gap: var(--a-4); }
.a-form-fieldset { border: none; padding: 0; margin: 0 0 var(--a-5); }
.a-form-legend { font-family: var(--a-font-ui); font-size: var(--a-fs-xs); font-weight: 600; color: var(--a-navy); margin-bottom: var(--a-3); padding: 0; }

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

/* -----------------------------------------------------------------------------
   10. SCROLL REVEAL
   -------------------------------------------------------------------------- */
[data-reveal] {
    opacity: 0;
    transform: translateY(20px);
    transition: opacity var(--a-slow) var(--a-ease), transform var(--a-slow) var(--a-ease);
}
[data-reveal].in-view { opacity: 1; transform: none; }
[data-reveal="1"] { transition-delay: 80ms; }
[data-reveal="2"] { transition-delay: 160ms; }
[data-reveal="3"] { transition-delay: 240ms; }
[data-reveal="4"] { transition-delay: 320ms; }
[data-reveal="5"] { transition-delay: 400ms; }

@media (prefers-reduced-motion: reduce) {
    [data-reveal] { opacity: 1; transform: none; transition: none; }
    .a-crest::before { transform: scaleX(1); transition: none; }
    .a-crest::after  { transform: scaleY(1); transition: none; }
    .a-marquee__track { animation: none; }
    .a-hero__bg { transition: none; transform: none; }
    * { scroll-behavior: auto; }
}

/* =============================================================================
   HOME PAGE SECTIONS
   ============================================================================= */

/* --- Hero ------------------------------------------------------------------ */
.a-hero {
    position: relative;
    min-height: clamp(600px, 92svh, 880px);
    overflow: hidden;
    background: var(--a-navy-deep);
}
.a-hero__slides { position: absolute; inset: 0; }
.a-hero__slide {
    position: absolute; inset: 0;
    opacity: 0; pointer-events: none;
    transition: opacity 900ms ease;
}
.a-hero__slide.is-active { opacity: 1; pointer-events: auto; }
.a-hero__bg {
    position: absolute; inset: 0;
    background-size: cover; background-position: center;
    transform: scale(1.05);
    transition: transform 9s cubic-bezier(0.25, 0.46, 0.45, 0.94);
}
.a-hero__slide.is-active .a-hero__bg { transform: scale(1); }
.a-hero__scrim {
    position: absolute; inset: 0;
    background: rgba(13, 24, 38, 0.1);
}
.a-hero__inner {
    position: relative;
    min-height: clamp(600px, 92svh, 880px);
    display: flex; align-items: center;
    padding-top: 96px; padding-bottom: 120px;
}
.a-hero__text { max-width: 720px; }
.a-hero__eyebrow {
    display: inline-flex; align-items: center;
    font-family: var(--a-font-ui);
    font-size: var(--a-fs-label); font-weight: 600;
    letter-spacing: var(--a-ls-label); text-transform: uppercase;
    color: var(--a-gold-soft);
    margin-bottom: var(--a-5);
}

.a-hero__title {
    font-family: var(--a-font-display);
    font-size: var(--a-fs-display);
    font-weight: var(--a-w-display);
    line-height: var(--a-lh-display);
    letter-spacing: var(--a-ls-display);
    color: var(--a-white);
    margin: 0 0 var(--a-5);
    text-wrap: balance;
}
.a-hero__body {
    font-size: var(--a-fs-lead);
    line-height: 1.7;
    color: rgba(255, 255, 255, 0.82);
    max-width: 54ch;
    margin: 0 0 var(--a-6);
}
.a-hero__btns { display: flex; gap: var(--a-3); flex-wrap: wrap; }

.a-hero__controls {
    position: absolute; left: 0; right: 0; bottom: 34px;
    z-index: 5;
}
.a-hero__controls-inner {
    display: flex; align-items: center; justify-content: space-between; gap: var(--a-4);
}
.a-hero__dots { display: flex; gap: var(--a-2); }
.a-hero__dot {
    width: 28px; height: 2px; padding: 0; border: none;
    background: rgba(255, 255, 255, 0.28); cursor: pointer;
    transition: background var(--a-base) ease;
}
.a-hero__dot.is-active { background: var(--a-gold); }
.a-hero__nav { display: flex; align-items: center; gap: var(--a-3); }
.a-hero__count {
    font-family: var(--a-font-ui); font-size: var(--a-fs-xs); font-weight: 600;
    letter-spacing: 0.08em; color: rgba(255, 255, 255, 0.7);
    font-variant-numeric: tabular-nums;
}
.a-hero__arrow {
    width: 44px; height: 44px;
    display: flex; align-items: center; justify-content: center;
    background: rgba(255, 255, 255, 0.08);
    border: 1px solid rgba(255, 255, 255, 0.28);
    border-radius: var(--a-radius);
    color: var(--a-white); font-size: 13px; cursor: pointer;
    transition: background var(--a-fast) ease, border-color var(--a-fast) ease;
}
.a-hero__arrow:hover { background: rgba(255, 255, 255, 0.18); border-color: rgba(255, 255, 255, 0.5); }

@media (max-width: 767px) {
    .a-hero__inner { padding-top: 84px; padding-bottom: 108px; }
}

/* --- Credential rail ------------------------------------------------------- */
.a-rail { border-bottom: 1px solid var(--a-line); background: var(--a-white); }
.a-rail__grid { display: grid; grid-template-columns: repeat(4, 1fr); }
.a-rail__item {
    padding: var(--a-6) var(--a-5) var(--a-6) 0;
    border-right: 1px solid var(--a-line);
}
.a-rail__item:last-child { border-right: none; padding-right: 0; }
.a-rail__item + .a-rail__item { padding-left: var(--a-5); }
.a-rail__icon { color: var(--a-gold); font-size: 15px; margin-bottom: var(--a-3); display: block; }
.a-rail__title { font-family: var(--a-font-ui); font-size: var(--a-fs-sm); font-weight: 600; color: var(--a-navy); margin: 0 0 5px; }
.a-rail__text  { font-size: var(--a-fs-xs); color: var(--a-muted); margin: 0; line-height: 1.55; }
@media (max-width: 991px) {
    .a-rail__grid { grid-template-columns: repeat(2, 1fr); }
    .a-rail__item:nth-child(2) { border-right: none; }
    .a-rail__item:nth-child(n+3) { border-top: 1px solid var(--a-line); }
    .a-rail__item:nth-child(odd) { padding-left: 0; }
}
@media (max-width: 575px) {
    .a-rail__grid { grid-template-columns: 1fr; }
    .a-rail__item { border-right: none; padding: var(--a-5) 0 !important; }
    .a-rail__item + .a-rail__item { border-top: 1px solid var(--a-line); }
}

/* --- Fields of study (bento) ---------------------------------------------- */
.a-bento {
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    gap: var(--a-3);
}
.a-bento__cell {
    position: relative;
    display: flex; flex-direction: column; justify-content: flex-end;
    min-height: 214px;
    padding: var(--a-5);
    border: 1px solid var(--a-line);
    border-radius: var(--a-radius-lg);
    background: var(--a-white);
    text-decoration: none;
    overflow: hidden;
    transition: border-color var(--a-base) ease, box-shadow var(--a-base) ease, transform var(--a-base) var(--a-ease);
}
.a-bento__cell:hover { border-color: var(--a-gold-line); box-shadow: var(--a-shadow-2); transform: translateY(-3px); }
.a-bento__cell--feature { grid-column: span 2; grid-row: span 2; min-height: 440px; border-color: transparent; }
.a-bento__cell--cream { background: var(--a-gold-tint); border-color: var(--a-gold-line); }
.a-bento__img { position: absolute; inset: 0; }
.a-bento__img img { width: 100%; height: 100%; object-fit: cover; display: block; transition: transform var(--a-slow) var(--a-ease); }
.a-bento__cell:hover .a-bento__img img { transform: scale(1.04); }
.a-bento__img::after {
    content: ''; position: absolute; inset: 0;
    background: linear-gradient(180deg, rgba(13, 24, 38, 0.1) 0%, rgba(13, 24, 38, 0.82) 100%);
}
.a-bento__content { position: relative; }
.a-bento__label {
    font-family: var(--a-font-display);
    font-size: 1.2rem; font-weight: var(--a-w-display); color: var(--a-navy);
    margin: 0 0 6px; line-height: 1.3;
}
.a-bento__cell--feature .a-bento__label { color: var(--a-white); font-size: clamp(1.5rem, 2.4vw, 2rem); }
.a-bento__text { font-size: var(--a-fs-xs); color: var(--a-muted); margin: 0; }
.a-bento__cell--feature .a-bento__text { color: rgba(255, 255, 255, 0.76); font-size: var(--a-fs-sm); max-width: 44ch; }
.a-bento__go { margin-top: var(--a-4); display: inline-flex; align-items: center; gap: var(--a-2); font-size: var(--a-fs-xs); font-weight: 600; color: var(--a-gold-ink); }
.a-bento__cell--feature .a-bento__go { color: var(--a-gold-soft); }
@media (max-width: 991px) {
    .a-bento { grid-template-columns: repeat(2, 1fr); }
    .a-bento__cell--feature { grid-column: span 2; grid-row: auto; min-height: 320px; }
}
@media (max-width: 575px) {
    .a-bento { grid-template-columns: 1fr; }
    .a-bento__cell--feature { grid-column: span 1; min-height: 280px; }
}

/* --- Course carousel ------------------------------------------------------ */
/* Visible so a card's hover shadow is not sliced off, but clipped on the x
   axis: left visible outright, the slide track ran past the viewport and
   scrolled the whole document sideways. overflow-clip-margin keeps the shadow. */
.a-courses .swiper { overflow-x: clip; overflow-y: visible; overflow-clip-margin: 20px; }
.a-courses .swiper-slide { height: auto; }
.a-courses .slider-pagination { margin-top: var(--a-6); }

/* --- Why Alpha (accordion + sticky media) --------------------------------- */
.a-why__body {
    display: grid;
    grid-template-columns: 1fr 420px;
    gap: clamp(32px, 6vw, 80px);
    align-items: start;
}
.a-acc { border-bottom: 1px solid var(--a-line); }
.a-acc__item { border-top: 1px solid var(--a-line); position: relative; }
.a-acc__head {
    display: flex; align-items: center; gap: var(--a-4);
    width: 100%; padding: var(--a-5) 0;
    background: none; border: none; cursor: pointer; text-align: left;
    font-family: var(--a-font-ui);
}
.a-acc__num {
    font-size: 0.6875rem; font-weight: 700; letter-spacing: 0.1em;
    color: var(--a-gold); opacity: 0.5; width: 24px; flex-shrink: 0;
    font-variant-numeric: tabular-nums;
    transition: opacity var(--a-base) ease;
}
.a-acc__item.is-active .a-acc__num { opacity: 1; }
.a-acc__title {
    font-family: var(--a-font-display);
    font-size: 1.14rem; font-weight: var(--a-w-display); color: var(--a-navy);
    margin: 0; flex: 1; line-height: 1.35;
}
.a-acc__sign {
    width: 20px; height: 20px; flex-shrink: 0; position: relative;
    transition: transform var(--a-base) var(--a-ease);
}
.a-acc__sign::before, .a-acc__sign::after {
    content: ''; position: absolute; top: 50%; left: 50%;
    background: var(--a-muted); transition: background var(--a-base) ease, opacity var(--a-base) ease;
}
.a-acc__sign::before { width: 13px; height: 1px; transform: translate(-50%, -50%); }
.a-acc__sign::after  { width: 1px; height: 13px; transform: translate(-50%, -50%); }
.a-acc__item.is-active .a-acc__sign::after { opacity: 0; }
.a-acc__item.is-active .a-acc__sign::before { background: var(--a-gold); }
.a-acc__panel { max-height: 0; overflow: hidden; transition: max-height 460ms var(--a-ease); }
.a-acc__item.is-active .a-acc__panel { max-height: 260px; }
.a-acc__panel p {
    font-size: var(--a-fs-sm); line-height: 1.75; color: var(--a-body);
    margin: 0; padding: 0 var(--a-6) var(--a-5) 40px;
}
.a-why__media { position: sticky; top: 104px; }
.a-why__frame {
    border-radius: var(--a-radius-lg);
    overflow: hidden;
    aspect-ratio: 4 / 5;
    background: var(--a-navy);
}
.a-why__frame img { width: 100%; height: 100%; object-fit: cover; display: block; }
.a-why__caption {
    margin-top: var(--a-3);
    font-size: var(--a-fs-xs); color: var(--a-muted);
}
@media (max-width: 991px) {
    .a-why__body { grid-template-columns: 1fr; }
    .a-why__media { position: static; order: -1; }
    .a-why__frame { aspect-ratio: 16 / 9; }
    .a-acc__panel p { padding-left: 40px; padding-right: 0; }
}

/* --- Accreditation marquee ----------------------------------------------- */
.a-marquee {
    position: relative; overflow: hidden;
    -webkit-mask-image: linear-gradient(90deg, transparent 0, #000 8%, #000 92%, transparent 100%);
            mask-image: linear-gradient(90deg, transparent 0, #000 8%, #000 92%, transparent 100%);
}
.a-marquee__track {
    display: flex; gap: var(--a-3);
    width: max-content;
    padding: var(--a-2) 0;
    animation: a-marquee 46s linear infinite;
}
.a-marquee:hover .a-marquee__track { animation-play-state: paused; }
@keyframes a-marquee { from { transform: translateX(0); } to { transform: translateX(-50%); } }
.a-authority {
    flex-shrink: 0; width: 176px;
    display: flex; flex-direction: column; align-items: center; gap: var(--a-3);
    padding: var(--a-5) var(--a-4);
    background: var(--a-white);
    border: 1px solid var(--a-line);
    border-radius: var(--a-radius-lg);
    transition: border-color var(--a-base) ease, box-shadow var(--a-base) ease;
}
.a-authority:hover { border-color: var(--a-gold-line); box-shadow: var(--a-shadow-1); }
.a-authority__mark {
    width: 64px; height: 64px;
    display: flex; align-items: center; justify-content: center;
    border: 1px solid var(--a-line-soft); border-radius: 50%;
    background: var(--a-white); overflow: hidden;
}
.a-authority__mark img {
    width: 46px; height: 46px; object-fit: contain;
    filter: grayscale(100%) opacity(0.66);
    transition: filter var(--a-base) ease;
}
.a-authority:hover .a-authority__mark img { filter: none; }
.a-authority__initials {
    font-family: var(--a-font-ui); font-size: 0.8125rem; font-weight: 700;
    letter-spacing: 0.04em; color: var(--a-gold-ink);
}
.a-authority__name { font-size: 0.75rem; font-weight: 600; color: var(--a-navy); text-align: center; line-height: 1.4; }
.a-authority__scope { font-size: 0.6875rem; font-weight: 600; letter-spacing: 0.1em; text-transform: uppercase; color: var(--a-muted); }

/* --- Testimonials -------------------------------------------------------- */
.a-testi__layout { display: grid; grid-template-columns: 1fr 1fr; gap: clamp(28px, 5vw, 56px); align-items: center; }
.a-testi__layout--single { grid-template-columns: minmax(0, 760px); justify-content: center; }
.a-testi__col { display: flex; gap: var(--a-4); align-items: stretch; }
.a-testi__viewport { flex: 1; overflow: hidden; min-width: 0; position: relative; }
.a-testi__track { display: flex; flex-direction: column; gap: var(--a-5); transition: transform 460ms var(--a-ease); }
.a-testi__card {
    flex-shrink: 0;
    padding: var(--a-6);
    background: var(--a-white);
    border: 1px solid var(--a-line);
    border-radius: var(--a-radius-lg);
}
.a-testi__stars { display: flex; gap: 3px; margin-bottom: var(--a-4); }
.a-testi__star { font-size: 11px; color: var(--a-line); }
.a-testi__star.is-on { color: var(--a-gold); }
/* The site's legacy stylesheet skins every <blockquote>: a border, 60px of
   side padding and a clipped quote glyph. On a testimonial card that reads as
   a box inside a box and squeezes the text to a third of the width, so the
   skin is undone here rather than the element changed. */
.a-testi__quote {
    font-family: var(--a-font-display);
    font-size: 1.0625rem; line-height: 1.6; color: var(--a-navy);
    margin: 0 0 var(--a-5);
    padding: 0;
    background: none;
    border: 0 !important;
    border-radius: 0;
    font-weight: 400;
    width: auto;
}
.a-testi__quote::before, .a-testi__quote::after { content: none; }
.a-testi__author { display: flex; align-items: center; gap: var(--a-3); padding-top: var(--a-4); border-top: 1px solid var(--a-line-soft); }
.a-testi__avatar {
    width: 40px; height: 40px; border-radius: 50%; flex-shrink: 0; overflow: hidden;
    background: var(--a-gold-tint);
    display: flex; align-items: center; justify-content: center;
    font-size: 0.8125rem; font-weight: 700; color: var(--a-gold-ink);
}
.a-testi__avatar img { width: 100%; height: 100%; object-fit: cover; }
.a-testi__name { font-size: var(--a-fs-sm); font-weight: 600; color: var(--a-navy); }
.a-testi__vnav { display: flex; flex-direction: column; justify-content: space-between; flex-shrink: 0; }
.a-testi__vbtn {
    width: 40px; height: 40px;
    background: var(--a-white); border: 1px solid var(--a-line); border-radius: var(--a-radius);
    color: var(--a-navy); font-size: 12px; cursor: pointer;
    display: flex; align-items: center; justify-content: center;
    transition: background var(--a-fast) ease, border-color var(--a-fast) ease, color var(--a-fast) ease;
}
.a-testi__vbtn:hover { background: var(--a-navy); border-color: var(--a-navy); color: var(--a-white); }
.a-testi__vbtn:disabled { opacity: 0.35; cursor: default; }
.a-testi__video { display: flex; flex-direction: column; align-items: center; gap: var(--a-4); }
.a-testi__stage { position: relative; width: 100%; max-width: 296px; aspect-ratio: 9 / 16; }
.a-testi__vcard {
    position: absolute; inset: 0;
    border-radius: var(--a-radius-lg); overflow: hidden;
    background: var(--a-navy-deep);
    box-shadow: var(--a-shadow-3);
    opacity: 0; transform: scale(0.97); pointer-events: none; z-index: 1;
    transition: opacity var(--a-base) ease, transform var(--a-base) ease;
}
.a-testi__vcard.is-active { opacity: 1; transform: none; pointer-events: auto; z-index: 2; }
.a-testi__vcard iframe { width: 100%; height: 100%; border: none; }
.a-testi__vbtn-abs {
    position: absolute; top: 50%; transform: translateY(-50%); z-index: 6;
    width: 40px; height: 40px;
    background: var(--a-navy); border: none; border-radius: var(--a-radius);
    color: var(--a-white); font-size: 13px; cursor: pointer;
    display: flex; align-items: center; justify-content: center;
    transition: background var(--a-fast) ease;
}
.a-testi__vbtn-abs:hover { background: var(--a-gold); color: var(--a-navy); }
.a-testi__vbtn-abs.is-prev { left: -20px; }
.a-testi__vbtn-abs.is-next { right: -20px; }
.a-testi__vdots { display: flex; gap: 6px; }
.a-testi__vdot { width: 22px; height: 2px; padding: 0; border: none; background: var(--a-line); cursor: pointer; transition: background var(--a-base) ease; }
.a-testi__vdot.is-active { background: var(--a-gold); }
@media (max-width: 991px) {
    .a-testi__layout { grid-template-columns: 1fr; }
    .a-testi__stage { max-width: 260px; }
}

/* --- About: editorial two column ---------------------------------------- */
.a-about { display: grid; grid-template-columns: 1.15fr 1fr; gap: clamp(32px, 6vw, 88px); align-items: start; }
.a-stats { display: grid; grid-template-columns: 1fr; }
.a-stat {
    display: flex; align-items: baseline; gap: var(--a-5);
    padding: var(--a-5) 0;
    border-top: 1px solid var(--a-line);
}
.a-stat:last-child { border-bottom: 1px solid var(--a-line); }
.a-stat__num {
    font-family: var(--a-font-display);
    font-size: clamp(2rem, 3.4vw, 2.9rem); font-weight: var(--a-w-display); line-height: 1;
    color: var(--a-navy); min-width: 84px;
    font-variant-numeric: tabular-nums;
}
.a-stat__label { font-family: var(--a-font-ui); font-size: var(--a-fs-sm); font-weight: 600; color: var(--a-navy); margin: 0 0 2px; }
.a-stat__text  { font-size: var(--a-fs-xs); color: var(--a-muted); margin: 0; }
.a-about__figure { margin: 0 0 var(--a-6); border-radius: var(--a-radius-lg); overflow: hidden; aspect-ratio: 16 / 10; }
.a-about__figure img { width: 100%; height: 100%; object-fit: cover; display: block; }
@media (max-width: 991px) { .a-about { grid-template-columns: 1fr; } }

.a-body-rich p { font-size: var(--a-fs-body); line-height: 1.72; color: var(--a-body); margin: 0 0 var(--a-4); }
.a-body-rich p:last-child { margin-bottom: 0; }

/* --- About: horizontal stat row (below the intro text) ------------------ */
.a-stats-h {
    display: flex; flex-wrap: wrap; gap: var(--a-6);
    margin: var(--a-6) 0 var(--a-2);
    padding-top: var(--a-5);
    border-top: 1px solid var(--a-line);
}
.a-stat-h { flex: 1 1 150px; min-width: 130px; }
.a-stat-h__num {
    display: block;
    font-family: var(--a-font-display);
    font-size: clamp(1.8rem, 2.6vw, 2.4rem); font-weight: var(--a-w-display); line-height: 1;
    color: var(--a-navy); margin: 0 0 6px;
    font-variant-numeric: tabular-nums;
}
.a-stat-h__label { font-family: var(--a-font-ui); font-size: var(--a-fs-sm); font-weight: 600; color: var(--a-navy); margin: 0 0 2px; }
.a-stat-h__text  { font-size: var(--a-fs-xs); color: var(--a-muted); margin: 0; }
@media (max-width: 560px) {
    .a-stats-h { gap: var(--a-5); }
    .a-stat-h { flex: 1 1 42%; }
}

/* --- Benefits: numbered rule grid --------------------------------------- */
.a-benefits { display: grid; grid-template-columns: repeat(4, 1fr); gap: 0; }
.a-benefit {
    display: flex; flex-direction: column;
    padding: var(--a-5) var(--a-5) var(--a-5) 0;
    border-top: 2px solid var(--a-navy);
}
.a-benefit + .a-benefit { padding-left: var(--a-5); border-left: 1px solid var(--a-line); }
.a-benefit__num {
    font-family: var(--a-font-ui); font-size: 0.6875rem; font-weight: 700;
    letter-spacing: 0.1em; color: var(--a-gold); margin-bottom: var(--a-4);
    font-variant-numeric: tabular-nums;
}
.a-benefit__title { font-family: var(--a-font-display); font-size: 1.1rem; font-weight: var(--a-w-display); color: var(--a-navy); margin: 0 0 10px; line-height: 1.3; }
.a-benefit__text { font-size: var(--a-fs-sm); line-height: 1.7; color: var(--a-body); flex: 1; margin: 0 0 var(--a-4); }
@media (max-width: 991px) {
    .a-benefits { grid-template-columns: repeat(2, 1fr); }
    .a-benefit:nth-child(odd) { padding-left: 0; border-left: none; }
    .a-benefit:nth-child(n+3) { border-top-width: 1px; border-top-color: var(--a-line); margin-top: var(--a-5); }
}
@media (max-width: 575px) {
    .a-benefits { grid-template-columns: 1fr; }
    .a-benefit { padding-left: 0 !important; border-left: none !important; }
    .a-benefit:nth-child(n+2) { border-top-width: 1px; border-top-color: var(--a-line); margin-top: var(--a-4); }
}

/* --- Insight: blog + gallery -------------------------------------------- */
.a-insight { display: grid; grid-template-columns: 2fr 1fr; gap: clamp(28px, 5vw, 56px); align-items: stretch; }
.a-insight__col { display: flex; flex-direction: column; }
.a-insight__head { margin-bottom: var(--a-5); }
.a-posts { display: grid; grid-template-columns: 1fr 1fr; gap: var(--a-6); flex: 1; align-content: start; }
.a-post { display: flex; flex-direction: column; }
.a-post__media { display: block; aspect-ratio: 16 / 10; border-radius: var(--a-radius-lg); overflow: hidden; margin-bottom: var(--a-4); }
.a-post__media img { width: 100%; height: 100%; object-fit: cover; display: block; transition: transform var(--a-slow) var(--a-ease); }
.a-post:hover .a-post__media img { transform: scale(1.04); }
.a-post__date { font-size: 0.6875rem; letter-spacing: 0.08em; text-transform: uppercase; color: var(--a-muted); display: block; margin-bottom: var(--a-2); }
.a-post__title { font-family: var(--a-font-display); font-size: 1.05rem; font-weight: var(--a-w-display); line-height: 1.35; margin: 0 0 var(--a-2); }
.a-post__title a { color: var(--a-navy); text-decoration: none; transition: color var(--a-fast) ease; }
.a-post__title a:hover { color: var(--a-gold-ink); }
.a-post__excerpt { font-size: var(--a-fs-xs); line-height: 1.7; color: var(--a-body); flex: 1; margin: 0 0 var(--a-3); }
.a-post__meta { display: flex; align-items: center; gap: var(--a-4); flex-wrap: wrap; font-size: var(--a-fs-xs); color: var(--a-muted); margin: 0; }
.a-post__meta span { display: inline-flex; align-items: center; gap: 6px; }

/* Full-page blog grid: breakpoint-free, wider cards than the home rail */
.a-blog-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(300px, 1fr)); gap: var(--a-6) var(--a-5); }

.a-insight__foot {
    display: flex; align-items: center; justify-content: space-between; gap: var(--a-4);
    margin-top: var(--a-5); padding-top: var(--a-4); border-top: 1px solid var(--a-line);
}
.a-insight__foot-label { font-size: 0.6875rem; font-weight: 600; letter-spacing: 0.1em; text-transform: uppercase; color: var(--a-muted); }
@media (max-width: 991px) { .a-insight { grid-template-columns: 1fr; } }
@media (max-width: 575px) { .a-posts { grid-template-columns: 1fr; } }

/* --- Gallery tile and lightbox (ids and JS hooks unchanged) -------------- */
.ig-gal-tile {
    position: relative; display: flex; flex-direction: column; height: 100%;
    border-radius: var(--a-radius-lg); overflow: hidden; cursor: pointer;
    border: 1px solid var(--a-line);
    transition: border-color var(--a-base) ease, box-shadow var(--a-base) ease;
}
.ig-gal-tile:hover { border-color: var(--a-gold-line); box-shadow: var(--a-shadow-2); }
.ig-mosaic { display: grid; flex: 1; min-height: 300px; gap: 2px; }
.ig-img-span { grid-row: span 2; }
.ig-img { position: relative; overflow: hidden; background: var(--a-surface-2); }
.ig-img img { width: 100%; height: 100%; object-fit: cover; display: block; transition: transform var(--a-slow) var(--a-ease); }
.ig-gal-tile:hover .ig-img img { transform: scale(1.05); }
.ig-more-badge {
    position: absolute; inset: 0; background: rgba(13, 24, 38, 0.62);
    display: flex; align-items: center; justify-content: center;
    color: var(--a-white); font-family: var(--a-font-display); font-size: 1.4rem; pointer-events: none;
}
.ig-hover-overlay {
    position: absolute; inset: 0; z-index: 3; pointer-events: none;
    background: rgba(13, 24, 38, 0);
    display: flex; align-items: flex-end;
    transition: background var(--a-base) ease;
}
.ig-gal-tile:hover .ig-hover-overlay { background: rgba(13, 24, 38, 0.52); }
.ig-hover-content { padding: var(--a-5); opacity: 0; transform: translateY(8px); transition: opacity var(--a-base) ease, transform var(--a-base) ease; }
.ig-gal-tile:hover .ig-hover-content { opacity: 1; transform: none; }
.ig-hover-name { font-family: var(--a-font-display); color: var(--a-white); font-size: 1.05rem; }
.ig-hover-eyebrow { font-size: 0.625rem; letter-spacing: var(--a-ls-label); text-transform: uppercase; color: var(--a-gold-soft); font-weight: 600; margin-bottom: 6px; }

.ig-lb {
    position: fixed; inset: 0; z-index: 9999;
    background: rgba(9, 16, 26, 0.96);
    display: flex; flex-direction: column;
    opacity: 0; pointer-events: none; transition: opacity var(--a-base) ease;
}
.ig-lb.open { opacity: 1; pointer-events: auto; }
.ig-lb-header { display: flex; align-items: center; justify-content: space-between; padding: var(--a-4) var(--a-6); border-bottom: 1px solid rgba(255, 255, 255, 0.1); }
.ig-lb-album { font-family: var(--a-font-display); color: var(--a-white); font-size: 1rem; }
.ig-lb-meta { font-size: 0.75rem; color: rgba(255, 255, 255, 0.5); margin-top: 2px; }
.ig-lb-xbtn, .ig-lb-snav, .ig-lb-sclose {
    background: rgba(255, 255, 255, 0.1); border: 1px solid rgba(255, 255, 255, 0.18);
    color: var(--a-white); cursor: pointer; border-radius: var(--a-radius);
    width: 40px; height: 40px; display: flex; align-items: center; justify-content: center;
    transition: background var(--a-fast) ease;
}
.ig-lb-xbtn:hover, .ig-lb-snav:hover, .ig-lb-sclose:hover { background: rgba(255, 255, 255, 0.2); }
.ig-lb-grid {
    flex: 1; overflow-y: auto; padding: var(--a-4) var(--a-5) var(--a-6);
    display: grid; grid-template-columns: repeat(auto-fill, minmax(160px, 1fr)); gap: 4px; align-content: start;
}
.ig-lb-thumb { aspect-ratio: 1; overflow: hidden; cursor: pointer; border-radius: 2px; }
.ig-lb-thumb img { width: 100%; height: 100%; object-fit: cover; display: block; transition: transform var(--a-base) ease; }
.ig-lb-thumb:hover img { transform: scale(1.05); }
.ig-lb-foot { padding: var(--a-4) var(--a-6); border-top: 1px solid rgba(255, 255, 255, 0.1); display: flex; justify-content: center; }
.ig-lb-foot a { color: rgba(255, 255, 255, 0.6); font-size: var(--a-fs-xs); font-weight: 600; text-decoration: none; }
.ig-lb-foot a:hover { color: var(--a-white); }
.ig-lb-single {
    position: fixed; inset: 0; z-index: 10000; background: rgba(9, 16, 26, 0.98);
    display: flex; align-items: center; justify-content: center;
    opacity: 0; pointer-events: none; transition: opacity var(--a-fast) ease;
}
.ig-lb-single.open { opacity: 1; pointer-events: auto; }
.ig-lb-single img { max-width: min(88vw, 1000px); max-height: 86vh; object-fit: contain; display: block; border-radius: 2px; }
.ig-lb-snav { position: absolute; top: 50%; transform: translateY(-50%); width: 44px; height: 44px; }
.ig-lb-snav.prev { left: 20px; }
.ig-lb-snav.next { right: 20px; }
.ig-lb-sclose { position: absolute; top: 18px; right: 20px; }
.ig-lb-sctr { position: absolute; bottom: 20px; left: 50%; transform: translateX(-50%); color: rgba(255, 255, 255, 0.5); font-size: 0.75rem; font-variant-numeric: tabular-nums; }
@media (max-width: 767px) {
    .ig-mosaic { grid-template-rows: 130px 130px; }
    .ig-lb-grid { grid-template-columns: repeat(auto-fill, minmax(110px, 1fr)); }
}

/* --- Admissions band (the single dark colour block) --------------------- */
.a-cta { background: var(--a-navy); position: relative; overflow: hidden; }
.a-cta::after {
    content: ''; position: absolute; top: 0; left: 0; right: 0; height: 1px;
    background: var(--a-gold);
}
.a-cta__inner { display: grid; grid-template-columns: 1.2fr 1fr; gap: clamp(32px, 6vw, 80px); align-items: center; }

/* A pull quote on the navy band. The legacy stylesheet fills every
   <blockquote> white, which on this background hides the quote entirely, so
   the box keeps its outline and drops the fill. The glyph that hangs off the
   top left corner stays; the patch that masks the border behind it is repainted
   in the band's own navy instead of white. */
.a-quote--onnavy {
    background: none;
    border: 1px solid rgba(255, 255, 255, 0.2) !important;
    border-radius: var(--a-radius-lg);
    padding: clamp(26px, 3.4vw, 42px) clamp(24px, 3.2vw, 40px);
    margin: var(--a-4) 0 0;
    width: auto;
    color: inherit;
    font-weight: 400;
}
.a-quote--onnavy::before { background-color: var(--a-navy); }

.a-cta__contacts { display: flex; flex-direction: column; gap: var(--a-3); margin-top: var(--a-5); }
.a-cta__contact {
    display: inline-flex; align-items: center; gap: var(--a-3);
    font-size: var(--a-fs-sm); color: rgba(255, 255, 255, 0.78); text-decoration: none;
    transition: color var(--a-fast) ease;
}
.a-cta__contact:hover { color: var(--a-white); }
.a-cta__contact i { color: var(--a-gold); width: 16px; text-align: center; }
.a-cta__btns { display: flex; flex-wrap: wrap; gap: var(--a-3); margin-top: var(--a-6); }
@media (max-width: 991px) { .a-cta__inner { grid-template-columns: 1fr; } }

/* --- Partner strip inherited from cras.craspartners_course -------------- */
.partner-box { border-color: var(--a-line) !important; box-shadow: none !important; border-radius: var(--a-radius-lg) !important; }
.box-left h4 { color: var(--a-gold-ink) !important; font-family: var(--a-font-display) !important; }
.divider { background: var(--a-line) !important; }

/* --- Scroll to top ------------------------------------------------------- */
.scroll-top { position: fixed; bottom: 28px; right: 28px; width: 46px; height: 46px; z-index: 999; }
.scroll-top .progress-circle path { stroke: var(--a-gold); }

/* =============================================================================
   HEADER
   Two variants share one stylesheet:
   .a-hdr            solid, in-flow sticky header for inner pages
   .a-hdr--over      transparent over the hero, turns solid on scroll (home)
   ============================================================================= */
.a-topbar {
    height: 40px;
    background: var(--a-navy-deep);
    border-bottom: 1px solid rgba(182, 138, 53, 0.24);
    position: relative; z-index: 901;
}
.a-topbar--fixed { position: fixed; top: 0; left: 0; right: 0; transition: transform var(--a-base) var(--a-ease); }
.a-topbar--fixed.is-hidden { transform: translateY(-100%); }
.a-topbar__inner {
    max-width: var(--a-max); margin-inline: auto; padding-inline: var(--a-gutter);
    height: 100%; display: flex; align-items: center; justify-content: space-between; gap: var(--a-4);
}
.a-topbar__contacts { display: flex; align-items: center; gap: var(--a-5); }
.a-topbar__contact {
    display: inline-flex; align-items: center; gap: var(--a-2);
    font-size: 0.75rem; color: rgba(255, 255, 255, 0.66); text-decoration: none;
    white-space: nowrap; transition: color var(--a-fast) ease;
}
.a-topbar__contact i { color: var(--a-gold); font-size: 11px; }
.a-topbar__contact:hover { color: var(--a-white); }
.a-topbar__links { display: flex; align-items: center; gap: var(--a-2); }
.a-topbar__link {
    font-size: 0.75rem; color: rgba(255, 255, 255, 0.6); text-decoration: none;
    padding: 0 10px; white-space: nowrap; transition: color var(--a-fast) ease;
}
.a-topbar__link:hover { color: var(--a-white); }
.a-topbar__cta {
    margin-left: var(--a-2);
    display: inline-flex; align-items: center; height: 26px; padding: 0 14px;
    border: 1px solid rgba(182, 138, 53, 0.6);
    border-radius: var(--a-radius);
    background: rgba(182, 138, 53, 0.16);
    font-size: 0.6875rem; font-weight: 600; letter-spacing: 0.06em; text-transform: uppercase;
    color: #e0c383; text-decoration: none; white-space: nowrap;
    transition: background var(--a-fast) ease, color var(--a-fast) ease, border-color var(--a-fast) ease;
}
.a-topbar__cta:hover { background: var(--a-gold); border-color: var(--a-gold); color: var(--a-navy); }
@media (max-width: 1199px) { .a-topbar__links { display: none; } }
@media (max-width: 767px) { .a-topbar { display: none; } }

.a-hdr {
    position: sticky; top: 0; z-index: 900;
    background: var(--a-white);
    border-bottom: 1px solid var(--a-line);
    transition: background var(--a-base) ease, border-color var(--a-base) ease,
                box-shadow var(--a-base) ease, top var(--a-base) var(--a-ease);
}
.a-hdr__inner {
    max-width: var(--a-max); margin-inline: auto; padding-inline: var(--a-gutter);
    height: 72px;
    display: flex; align-items: center; justify-content: space-between; gap: var(--a-5);
}
.a-hdr__logo { flex-shrink: 0; display: flex; align-items: center; text-decoration: none; }
.a-hdr__logo img { height: 46px; width: auto; display: block; transition: filter var(--a-base) ease; }

/* Transparent-over-hero variant */
.a-hdr--over {
    position: fixed; top: 40px; left: 0; right: 0;
    background: transparent;
    border-bottom-color: transparent;
}
.a-hdr--over::before {
    content: ''; position: absolute; inset: 0; z-index: -1;
    background: linear-gradient(180deg, rgba(13, 24, 38, 0.55) 0%, rgba(13, 24, 38, 0) 100%);
    transition: opacity var(--a-base) ease;
}
.a-hdr--over.is-solid { top: 0; background: rgba(255, 255, 255, 0.97); border-bottom-color: var(--a-line); box-shadow: var(--a-shadow-1); backdrop-filter: blur(14px); -webkit-backdrop-filter: blur(14px); }
.a-hdr--over.is-solid::before { opacity: 0; }
/* Lift the grey wordmark so it stays legible on the dark hero */
.a-hdr--over .a-hdr__logo img { filter: brightness(1.55) saturate(1.05); }
.a-hdr--over.is-solid .a-hdr__logo img { filter: none; }

/* Desktop navigation: single line, 72px tall */
.a-nav { display: flex; align-items: center; list-style: none; margin: 0; padding: 0; flex: 1; justify-content: center; }
.a-nav > li { position: relative; }
.a-nav > li > a {
    display: flex; align-items: center; gap: 6px;
    height: 72px; padding: 0 var(--a-4);
    font-family: var(--a-font-ui); font-size: 0.9375rem; font-weight: var(--a-w-ui);
    letter-spacing: var(--a-ls-ui);
    color: var(--a-navy); text-decoration: none; white-space: nowrap;
    transition: color var(--a-fast) ease;
}
.a-nav > li > a[aria-current="page"],
.a-nav > li.is-open > a { font-weight: var(--a-w-strong); }
.a-hdr--over:not(.is-solid) .a-nav > li > a { color: rgba(255, 255, 255, 0.92); }
.a-nav > li > a:hover { color: var(--a-gold-ink); }
.a-hdr--over:not(.is-solid) .a-nav > li > a:hover { color: var(--a-gold-soft); }
.a-nav > li > a[aria-current="page"] { color: var(--a-gold-ink); }
/* Chevron drawn in CSS rather than set in a glyph: the bundled kit is Font
   Awesome 6 Pro, so a rule asking for "Font Awesome 6 Free" rendered a tofu
   box next to every menu item that has a dropdown. */
.a-nav > li.has-sub > a::after {
    content: '';
    width: 5px; height: 5px; margin-left: 2px;
    border-right: 1.5px solid currentColor; border-bottom: 1.5px solid currentColor;
    transform: translateY(-2px) rotate(45deg);
    opacity: 0.5;
    transition: transform var(--a-fast) ease, opacity var(--a-fast) ease;
}
.a-nav > li.has-sub > a:hover::after { opacity: 0.9; }
.a-nav > li.has-sub.is-open > a::after { transform: translateY(1px) rotate(225deg); opacity: 0.9; }

.a-drop {
    position: absolute; top: 100%; left: 0; min-width: 244px;
    list-style: none; margin: 0; padding: var(--a-2);
    background: var(--a-white);
    border: 1px solid var(--a-line);
    border-radius: var(--a-radius-lg);
    box-shadow: var(--a-shadow-3);
    opacity: 0; pointer-events: none; transform: translateY(6px);
    transition: opacity var(--a-fast) ease, transform var(--a-fast) ease;
    z-index: 120;
}
.a-nav > li.is-open .a-drop,
.a-nav > li:focus-within .a-drop { opacity: 1; pointer-events: auto; transform: none; }
.a-drop a {
    display: block; padding: 10px 12px;
    font-size: 0.875rem; color: var(--a-navy); text-decoration: none;
    border-radius: var(--a-radius); white-space: nowrap;
    transition: background var(--a-fast) ease, color var(--a-fast) ease;
}
.a-drop a:hover { background: var(--a-gold-tint); color: var(--a-gold-ink); }
.a-drop__head {
    display: block; padding: var(--a-3) 12px 4px;
    font-size: 0.6875rem; font-weight: 700; letter-spacing: var(--a-ls-label); text-transform: uppercase;
    color: var(--a-muted);
}
.a-drop__sep { height: 1px; background: var(--a-line-soft); margin: 6px 8px; }
.a-drop--wide { min-width: 272px; }
.a-drop--scroll { max-height: 340px; overflow-y: auto; }

/* The containing block for the panels below. `.a-nav > li` sets position
   relative, which outranks a bare .a-mega-li, so the header only becomes the
   containing block when this selector carries the same weight. Without it the
   panel is positioned against the 96px menu item and hangs off the page,
   taking a horizontal scrollbar with it. */
.a-nav > li.a-mega-li { position: static; }

/* Courses mega menu: full viewport width so a large, growing catalogue
   (fields of study, fellowships, popular courses) has room to breathe,
   plus a promotional banner for free / self-paced online learning. */
.a-mega {
    position: absolute; top: 100%; left: 50%;
    transform: translateX(-50%) translateY(4px);
    width: 100vw;
    background: var(--a-white);
    border-top: 1px solid var(--a-line);
    box-shadow: var(--a-shadow-3);
    opacity: 0; pointer-events: none;
    transition: opacity 180ms ease-out, transform 180ms ease-out;
    z-index: 120;
}
@media (prefers-reduced-motion: reduce) {
    .a-mega { transition: opacity 1ms linear; transform: translateX(-50%); }
}
.a-mega-li.is-open .a-mega,
.a-mega-li:focus-within .a-mega { opacity: 1; pointer-events: auto; transform: translateX(-50%); }
/* The full-width variant spans the header rather than the viewport: 100vw
   counts the scrollbar, which is enough to scroll the whole page sideways. */
.a-mega--full { left: 0; width: 100%; transform: translateY(4px); }
.a-mega-li.is-open .a-mega--full,
.a-mega-li:focus-within .a-mega--full { transform: none; }
.a-mega__title {
    font-family: var(--a-font-ui);
    font-size: 0.6875rem; font-weight: 700; letter-spacing: var(--a-ls-label); text-transform: uppercase;
    color: var(--a-muted); margin: 0 0 var(--a-4); padding-bottom: var(--a-3);
    border-bottom: 1px solid var(--a-line-soft);
}
.a-mega__railnav::-webkit-scrollbar, .a-drop--scroll::-webkit-scrollbar { width: 3px; }
.a-mega__railnav::-webkit-scrollbar-thumb, .a-drop--scroll::-webkit-scrollbar-thumb { background: var(--a-line); border-radius: 2px; }

/* ---------------------------------------------------------------------------
   Mega menu: one white surface under the header, three zones down the page.
   Licensing bodies (or fields, or delivery modes) on the left, the programmes
   in the open group beside them, supporting actions along the bottom.

   Read: quiet. No tinted panel, no filled selection block, no second band at
   the foot. Hierarchy comes from alignment, one hairline and a 3px accent on
   the open row. Used by Courses, Exam Preparations and CME Programs.
   ------------------------------------------------------------------------ */
.a-mega--full {
    border-top: 1px solid var(--a-line);
    box-shadow: 0 18px 40px -24px rgba(20, 36, 57, 0.22);
}
.a-mega__full {
    max-width: var(--a-max); margin-inline: auto;
    padding: var(--a-5) var(--a-gutter) 0;
    display: grid; grid-template-columns: minmax(212px, 244px) minmax(0, 1fr);
    /* Column gap only. A row gap here would add itself to the footer's own
       margin and open a second, unintended band of space. */
    column-gap: clamp(24px, 3vw, 48px); row-gap: 0;
    align-items: start;
}

/* Rail: the same white as the panel, separated by a hairline rather than a
   change of colour. */
.a-mega__rail {
    position: relative;
    padding-right: clamp(16px, 2vw, 28px);
    border-right: 1px solid var(--a-line-soft);
}
.a-mega__title {
    font-family: var(--a-font-ui);
    font-size: 0.6875rem; font-weight: 600; letter-spacing: 0.1em; text-transform: uppercase;
    color: var(--a-muted); margin: 0 0 var(--a-3);
}
.a-mega__railnav { display: flex; flex-direction: column; gap: 1px; }
.a-mega__railbtn {
    position: relative;
    display: flex; align-items: center; justify-content: space-between; gap: var(--a-3);
    width: 100%; padding: 9px 12px 9px 14px;
    background: none; border: 0; border-radius: var(--a-radius);
    font-family: var(--a-font-ui);
    font-size: 0.9375rem; font-weight: 500; letter-spacing: 0;
    color: var(--a-navy); text-align: left; cursor: pointer;
    transition: background var(--a-fast) ease, color var(--a-fast) ease;
}
/* The open row is marked three ways: a tint, a 3px gold indicator and the
   heavier weight, so it never depends on colour alone. */
.a-mega__railbtn::before {
    content: ''; position: absolute; left: 0; top: 50%;
    width: 3px; height: 0; border-radius: 2px;
    background: var(--a-gold);
    transform: translateY(-50%);
    transition: height var(--a-fast) var(--a-ease);
}
.a-mega__railbtn:hover { background: var(--a-surface); }
.a-mega__railbtn:focus-visible { outline: 2px solid var(--a-gold); outline-offset: -2px; }
.a-mega__railbtn.is-active { background: var(--a-surface); font-weight: 600; }
.a-mega__railbtn.is-active::before { height: 18px; }
.a-mega__railname { min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.a-mega__count {
    flex-shrink: 0;
    font-size: 0.75rem; font-weight: 500;
    color: var(--a-muted);
    font-variant-numeric: tabular-nums;
}
.a-mega__railbtn.is-active .a-mega__count { color: var(--a-navy); }

/* Panel */
.a-mega__panels { min-width: 0; }
.a-mega__panel { display: flex; flex-direction: column; }
.a-mega__panel[hidden] { display: none; }
.a-mega__panel.is-active { animation: a-mega-in 180ms ease-out both; }
@keyframes a-mega-in { from { opacity: 0; } to { opacity: 1; } }
.a-mega__panelhead {
    display: flex; align-items: baseline; justify-content: space-between; gap: var(--a-5);
    min-height: 30px;
    margin-bottom: var(--a-3); padding-bottom: var(--a-3);
    border-bottom: 1px solid var(--a-line-soft);
}
.a-mega__panelname {
    display: flex; align-items: baseline; gap: 10px; flex-wrap: wrap;
    margin: 0;
    font-family: var(--a-font-display);
    font-size: 1.3125rem; font-weight: var(--a-w-display); letter-spacing: -0.01em; line-height: 1.2;
    color: var(--a-navy);
}
.a-mega__panelcount {
    font-family: var(--a-font-ui);
    font-size: 0.75rem; font-weight: 500; letter-spacing: 0.01em;
    color: var(--a-muted);
    font-variant-numeric: tabular-nums;
}
.a-mega__viewall {
    display: inline-flex; align-items: center; gap: 8px; flex-shrink: 0;
    font-size: 0.8125rem; font-weight: 600; color: var(--a-gold-ink); text-decoration: none;
    transition: gap var(--a-fast) ease;
}
.a-mega__viewall:hover { gap: 12px; color: var(--a-gold-ink); }
.a-mega__viewall i { font-size: var(--a-icon-inline); }

/* Programme links: text navigation, not cards. Three columns while there are
   enough to fill three, two when a group holds six or fewer. */
.a-mega__items { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 0 clamp(16px, 2.2vw, 32px); }
.a-mega__items:has(> :nth-child(7)) { grid-template-columns: repeat(3, minmax(0, 1fr)); }
.a-mega__item {
    display: flex; flex-direction: column; gap: 1px;
    padding: 8px 10px; margin-inline: -10px;
    border-radius: var(--a-radius);
    text-decoration: none;
    transition: background var(--a-fast) ease;
}
.a-mega__item:hover { background: var(--a-surface); }
.a-mega__item:focus-visible { outline: 2px solid var(--a-gold); outline-offset: -2px; }
.a-mega__item-name {
    font-family: var(--a-font-ui);
    font-size: 0.9375rem; font-weight: 500; line-height: 1.45; letter-spacing: 0;
    color: var(--a-navy);
    transition: color var(--a-fast) ease;
}
.a-mega__item:hover .a-mega__item-name { color: var(--a-gold-ink); }
.a-mega__item-meta { font-size: 0.75rem; color: var(--a-muted); }
.a-mega__more {
    margin: var(--a-3) 0 0;
    font-size: var(--a-fs-xs); color: var(--a-muted);
}
.a-mega__more a { color: var(--a-gold-ink); font-weight: 600; text-decoration: none; }
.a-mega__more a:hover { text-decoration: underline; text-underline-offset: 3px; }

/* Footer: admissions, the catalogue's own numbers and the supporting links,
   on the same surface, above one hairline. */
.a-mega__foot {
    grid-column: 1 / -1;
    display: flex; align-items: center; justify-content: space-between;
    gap: var(--a-4) var(--a-5); flex-wrap: wrap;
    margin-top: var(--a-5);
    padding: var(--a-4) 0;
    border-top: 1px solid var(--a-line-soft);
}
.a-mega__tally { margin: 0; max-width: none; font-size: var(--a-fs-xs); color: var(--a-muted); }
.a-mega__tally .a-num { color: var(--a-navy); font-weight: 600; }
.a-mega__tally a { color: var(--a-gold-ink); font-weight: 600; text-decoration: none; }
.a-mega__tally a:hover { text-decoration: underline; text-underline-offset: 3px; }
.a-mega__footlinks { display: flex; align-items: center; gap: var(--a-5); flex-wrap: wrap; }
.a-mega__footlinks a {
    font-size: var(--a-fs-xs); font-weight: 500; color: var(--a-body); text-decoration: none;
    transition: color var(--a-fast) ease;
}
.a-mega__footlinks a:hover { color: var(--a-gold-ink); }
.a-mega__footcta {
    display: inline-flex; align-items: center; gap: 8px;
    font-weight: 600 !important; color: var(--a-gold-ink) !important;
    transition: gap var(--a-fast) ease;
}
.a-mega__footcta:hover { gap: 12px; }
.a-mega__footcta i { font-size: var(--a-icon-inline); }

@media (max-width: 1279px) {
    .a-mega__full { grid-template-columns: minmax(184px, 212px) minmax(0, 1fr); }
    .a-mega__items:has(> :nth-child(7)) { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}

/* A short window scrolls the whole panel, once, rather than the rail and the
   programmes fighting over two nested scrollbars. */
@media (max-height: 720px) {
    .a-mega--full { max-height: calc(100vh - var(--cd-header, 72px) - 40px); overflow-y: auto; }
}

@media (prefers-reduced-motion: reduce) {
    .a-mega__panel.is-active { animation: none; }
    .a-mega__railbtn::before { transition: none; }
}

.a-hdr__actions { display: flex; align-items: center; gap: var(--a-2); flex-shrink: 0; }
.a-icon-btn {
    width: 40px; height: 40px;
    display: flex; align-items: center; justify-content: center;
    background: none; border: 1px solid transparent; border-radius: var(--a-radius);
    color: var(--a-navy); font-size: var(--a-icon-btn); cursor: pointer;
    transition: background var(--a-fast) ease, border-color var(--a-fast) ease, color var(--a-fast) ease;
}
.a-icon-btn:hover { background: var(--a-surface); border-color: var(--a-line); }
.a-hdr--over:not(.is-solid) .a-icon-btn { color: rgba(255, 255, 255, 0.9); }
.a-hdr--over:not(.is-solid) .a-icon-btn:hover { background: rgba(255, 255, 255, 0.14); border-color: rgba(255, 255, 255, 0.3); color: var(--a-white); }
.a-hdr--over:not(.is-solid) .a-hdr__cta { background: rgba(255, 255, 255, 0.1); border-color: rgba(255, 255, 255, 0.4); color: var(--a-white); }
.a-hdr--over:not(.is-solid) .a-hdr__cta:hover { background: var(--a-gold); border-color: var(--a-gold); color: var(--a-navy); }

.a-burger { display: none; }
@media (max-width: 1199px) {
    .a-nav, .a-hdr__cta { display: none; }
    .a-burger { display: flex; }
}
/* The utility bar is hidden below 768px, so the header sits flush at the top. */
@media (max-width: 767px) {
    .a-hdr--over { top: 0; }
}

/* Search overlay */
.a-search-ov {
    position: fixed; inset: 0; z-index: 1000;
    background: rgba(9, 16, 26, 0.7);
    display: flex; align-items: flex-start; justify-content: center;
    padding: 120px var(--a-4) 0;
    opacity: 0; pointer-events: none; transition: opacity var(--a-fast) ease;
}
.a-search-ov.is-open { opacity: 1; pointer-events: auto; }
.a-search-box {
    width: 100%; max-width: 580px;
    background: var(--a-white);
    border-radius: var(--a-radius-lg);
    box-shadow: var(--a-shadow-3);
    padding: var(--a-5);
    transform: translateY(-14px); transition: transform var(--a-fast) ease;
}
.a-search-ov.is-open .a-search-box { transform: none; }
.a-search-row { display: flex; gap: var(--a-2); margin-top: var(--a-2); }
.a-search-close {
    position: absolute; top: 22px; right: 24px;
    width: 40px; height: 40px;
    background: rgba(255, 255, 255, 0.12); border: 1px solid rgba(255, 255, 255, 0.24);
    border-radius: var(--a-radius); color: var(--a-white); font-size: 14px; cursor: pointer;
}
.a-search-close:hover { background: rgba(255, 255, 255, 0.22); }

/* Mobile drawer */
/* Layering: topbar 901, header 900, so the drawer and its scrim sit above
   both. Below the header the drawer's own head was drawn under the page logo
   and the two overlapped. */
.a-mob-ov { position: fixed; inset: 0; background: rgba(9, 16, 26, 0.5); z-index: 950; opacity: 0; pointer-events: none; transition: opacity var(--a-base) ease; }
.a-mob-ov.is-open { opacity: 1; pointer-events: auto; }
.a-mob {
    position: fixed; top: 0; right: 0; z-index: 960;
    width: min(100%, 380px); height: 100%;
    background: var(--a-white);
    display: flex; flex-direction: column; overflow-y: auto;
    transform: translateX(100%);
    transition: transform 340ms var(--a-ease);
}
.a-mob.is-open { transform: none; }
.a-mob__head { display: flex; align-items: center; justify-content: space-between; padding: var(--a-5); border-bottom: 1px solid var(--a-line); }
.a-mob__head img { height: 40px; width: auto; display: block; }
.a-mob__nav { list-style: none; margin: 0; padding: 0 0 var(--a-4); flex: 1; }
.a-mob__nav > li { border-bottom: 1px solid var(--a-line-soft); display: flex; flex-wrap: wrap; align-items: stretch; }
.a-mob__nav > li > a {
    flex: 1; display: flex; align-items: center;
    min-height: 52px; padding: 14px var(--a-4) 14px var(--a-5);
    font-size: 0.9375rem; font-weight: 600; color: var(--a-navy); text-decoration: none;
}
.a-mob__toggle {
    width: 52px; min-height: 52px; flex-shrink: 0;
    display: flex; align-items: center; justify-content: center;
    background: none; border: none; border-left: 1px solid var(--a-line-soft);
    color: var(--a-muted); font-size: 12px; cursor: pointer;
    transition: transform var(--a-fast) ease, background var(--a-fast) ease, color var(--a-fast) ease;
}
.a-mob__toggle:hover { background: var(--a-surface); color: var(--a-gold-ink); }
.a-mob__nav > li.is-open .a-mob__toggle { transform: rotate(180deg); color: var(--a-navy); background: var(--a-surface); }
.a-mob__sub { display: none; width: 100%; list-style: none; margin: 0; padding: var(--a-2) var(--a-5) var(--a-4) var(--a-6); background: var(--a-surface); border-top: 1px solid var(--a-line-soft); }
.a-mob__nav > li.is-open .a-mob__sub { display: block; }
/* 44px of touch target per row, and the drawer's open state uses the same
   quiet tint as the desktop panel rather than the gold it used to. */
.a-mob__sub a { display: block; padding: 13px 0; font-size: 0.8125rem; color: var(--a-body); text-decoration: none; border-bottom: 1px solid var(--a-line-soft); }
.a-mob__sub a:active { color: var(--a-gold-ink); }
.a-mob__sub li:last-child a { border-bottom: none; }
.a-mob__sub a:hover { color: var(--a-gold-ink); }
/* Group rows carry how many programmes sit behind them, set against the right
   edge so the labels still read as one column. */
.a-mob__sub a:has(.a-mob__count) { display: flex; align-items: baseline; justify-content: space-between; gap: var(--a-3); }
.a-mob__count { flex-shrink: 0; font-size: 0.6875rem; font-weight: 600; font-variant-numeric: tabular-nums; color: var(--a-muted); }
.a-mob__sub-head { display: block; padding: var(--a-3) 0 2px; font-size: 0.6875rem; font-weight: 700; letter-spacing: var(--a-ls-label); text-transform: uppercase; color: var(--a-muted); }
.a-mob__ctas { padding: var(--a-4) var(--a-5) var(--a-6); border-top: 1px solid var(--a-line); display: flex; flex-direction: column; gap: var(--a-2); }
.a-mob__ctas .a-btn { width: 100%; }

/* =============================================================================
   FOOTER
   ============================================================================= */
.a-foot {
    background: var(--a-navy);
    color: rgba(255, 255, 255, 0.7);
    position: relative;
}
.a-foot__top {
    display: grid; grid-template-columns: 1.1fr 2fr;
    gap: clamp(32px, 6vw, 72px);
    padding-block: clamp(48px, 6vw, 72px);
    border-bottom: 1px solid rgba(255, 255, 255, 0.1);
}
.a-foot__logo { display: inline-block; margin-bottom: var(--a-4); }
.a-foot__logo img { height: 62px; width: auto; display: block; filter: brightness(1.55) saturate(1.05); }
.a-foot__tagline {
    font-family: var(--a-font-display);
    font-size: 1.1rem; line-height: 1.45; color: var(--a-white);
    margin: 0 0 var(--a-5); max-width: 30ch;
}
.a-foot__contacts { display: flex; flex-direction: column; gap: var(--a-3); }
.a-foot__contact {
    display: flex; align-items: flex-start; gap: var(--a-3);
    font-size: var(--a-fs-sm); color: rgba(255, 255, 255, 0.7); text-decoration: none;
    line-height: 1.5; transition: color var(--a-fast) ease;
}
.a-foot__contact:hover { color: var(--a-white); }
.a-foot__contact i { color: var(--a-gold); width: 15px; text-align: center; margin-top: 3px; flex-shrink: 0; font-size: 12px; }

.a-foot__social { display: flex; gap: var(--a-3); margin-top: var(--a-4); }
.a-foot__social a {
    display: flex; align-items: center; justify-content: center;
    width: 36px; height: 36px; border-radius: var(--a-radius);
    border: 1px solid rgba(255, 255, 255, 0.16); color: rgba(255, 255, 255, 0.7);
    font-size: 14px; transition: border-color var(--a-fast) ease, color var(--a-fast) ease, background var(--a-fast) ease;
}
.a-foot__social a:hover { color: var(--a-navy); background: var(--a-gold); border-color: var(--a-gold); }

.a-foot__cols { display: grid; grid-template-columns: repeat(3, 1fr); gap: var(--a-5); }
.a-foot__title {
    font-family: var(--a-font-ui);
    font-size: 0.6875rem; font-weight: 700; letter-spacing: var(--a-ls-label); text-transform: uppercase;
    color: var(--a-gold-soft); margin: 0 0 var(--a-4);
}
.a-foot__menu { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; gap: 2px; }
.a-foot__menu a {
    display: block; padding: 4px 0;
    font-size: var(--a-fs-sm); color: rgba(255, 255, 255, 0.66); text-decoration: none;
    transition: color var(--a-fast) ease, transform var(--a-fast) ease;
}
.a-foot__menu a:hover { color: var(--a-white); transform: translateX(3px); }

.a-foot__signup { padding-block: clamp(32px, 4vw, 48px); border-bottom: 1px solid rgba(255, 255, 255, 0.1); }
.a-foot__signup-grid { display: grid; grid-template-columns: 1fr 1fr; gap: clamp(24px, 5vw, 64px); align-items: start; }
.a-foot__form { display: flex; flex-direction: column; gap: var(--a-2); }
.a-foot__form-row { display: flex; gap: var(--a-2); align-items: stretch; }
.a-foot__form-row .a-input { flex: 1; }

.a-foot__base { padding-block: var(--a-5); background: rgba(9, 16, 26, 0.45); }
.a-foot__base-row { display: flex; align-items: center; justify-content: space-between; flex-wrap: wrap; gap: var(--a-3) var(--a-5); }
.a-foot__copy { font-size: 0.8125rem; color: rgba(255, 255, 255, 0.56); margin: 0; }
.a-foot__copy strong { color: rgba(255, 255, 255, 0.78); font-weight: 600; }
.a-foot__lineage { font-size: 0.75rem; color: rgba(255, 255, 255, 0.4); margin: 3px 0 0; }
.a-foot__lineage a { color: rgba(255, 255, 255, 0.62); text-decoration: none; border-bottom: 1px solid rgba(255, 255, 255, 0.22); }
.a-foot__lineage a:hover { color: var(--a-white); }
.a-foot__note { font-size: 0.6875rem; color: rgba(255, 255, 255, 0.58); margin: var(--a-2) 0 0; max-width: 60ch; }
.a-foot__note a { color: var(--a-gold-soft); text-decoration: none; }
.a-foot__policies { display: flex; align-items: center; gap: var(--a-1); flex-wrap: wrap; }
.a-foot__policies a {
    font-size: 0.75rem; color: rgba(255, 255, 255, 0.7); text-decoration: none;
    padding: 4px 10px; border-radius: var(--a-radius); white-space: nowrap;
    transition: color var(--a-fast) ease, background var(--a-fast) ease;
}
.a-foot__policies a:hover { color: var(--a-white); background: rgba(255, 255, 255, 0.07); }

@media (max-width: 991px) {
    .a-foot__top, .a-foot__signup-grid { grid-template-columns: 1fr; }
    .a-foot__cols { grid-template-columns: repeat(2, 1fr); }
}
@media (max-width: 575px) {
    .a-foot__cols { grid-template-columns: 1fr; gap: var(--a-6); }
    .a-foot__base-row { flex-direction: column; align-items: flex-start; }
}

/* Floating contact widget */
.a-fcw { position: fixed; right: 20px; bottom: 84px; z-index: 998; display: flex; flex-direction: column; align-items: center; gap: var(--a-2); }
.a-fcw__opts { display: flex; flex-direction: column; align-items: center; gap: var(--a-2); }
.a-fcw__opt {
    position: relative;
    width: 40px; height: 40px; border-radius: var(--a-radius);
    display: flex; align-items: center; justify-content: center;
    color: var(--a-white); text-decoration: none;
    opacity: 0; transform: translateY(6px) scale(0.9); pointer-events: none;
    transition: opacity var(--a-fast) ease, transform var(--a-base) var(--a-ease);
}
.a-fcw.is-open .a-fcw__opt { opacity: 1; transform: none; pointer-events: auto; }
.a-fcw__opt--wa { background: #1f9d55; }
.a-fcw__opt--wa:hover { background: #167944; }
.a-fcw__opt--call { background: var(--a-gold); color: var(--a-navy); }
.a-fcw__opt--call:hover { background: var(--a-gold-soft); }
.a-fcw__opt::after {
    content: attr(data-tip);
    position: absolute; right: calc(100% + 8px); top: 50%; transform: translateY(-50%);
    background: var(--a-navy-deep); color: var(--a-white);
    font-size: 0.6875rem; white-space: nowrap; padding: 5px 9px; border-radius: var(--a-radius);
    opacity: 0; pointer-events: none; transition: opacity var(--a-fast) ease;
}
.a-fcw__opt:hover::after { opacity: 1; }
.a-fcw__trigger {
    width: 44px; height: 44px; border-radius: var(--a-radius);
    background: var(--a-navy); border: 1px solid rgba(255, 255, 255, 0.16);
    color: var(--a-white); cursor: pointer;
    display: flex; align-items: center; justify-content: center;
    box-shadow: var(--a-shadow-2);
    transition: background var(--a-fast) ease;
}
.a-fcw__trigger:hover { background: var(--a-navy-soft); }
.a-fcw.is-open .a-fcw__trigger { background: var(--a-gold); color: var(--a-navy); }
