/* =============================================================================
   SANKALP INSTITUTE — Main Stylesheet
   -----------------------------------------------------------------------------
   01. Design tokens
   02. Base & reset
   03. Utilities
   04. Buttons
   05. Preloader & floating actions
   06. Header / navbar / mobile menu
   07. Hero
   08. Statistics
   09. About
   10. Section heading
   11. Course cards
   12. Feature cards
   13. Faculty cards
   14. Success timeline
   15. Testimonials
   16. Gallery & lightbox
   17. Admission steps
   18. FAQ
   19. Contact & forms
   20. Footer
   21. Inner pages (page hero, filters, 404)
   22. Media skeleton & animations
   23. Homepage hero slider
   ========================================================================== */

/* 01. DESIGN TOKENS ======================================================== */
:root {
    /* Brand */
    --brand: #e53935;
    --brand-dark: #c62828;
    --brand-light: #ff6f60;
    --accent: #ff9800;
    --accent-dark: #ef6c00;
    --ink: #111111;
    --white: #ffffff;
    --bg: #fafafa;
    --line: #eeeeee;
    --success: #2e7d32;

    /* Neutrals */
    --ink-70: #3d4148;
    --muted: #5f6570;
    --muted-soft: #8b909b;
    --surface: #ffffff;
    --surface-soft: #f6f7f9;

    /* Gradients */
    --grad-brand: linear-gradient(135deg, var(--brand) 0%, var(--accent) 100%);
    --grad-brand-soft: linear-gradient(135deg, rgba(229, 57, 53, .1), rgba(255, 152, 0, .1));
    --grad-dark: linear-gradient(135deg, #16161a 0%, #111111 60%, #1c1414 100%);

    /* Radii */
    --r-xs: 10px;
    --r-sm: 14px;
    --r-md: 18px;
    --r-lg: 24px;
    --r-xl: 32px;
    --r-pill: 999px;

    /* Shadows */
    --shadow-xs: 0 2px 8px rgba(17, 17, 17, .04);
    --shadow-sm: 0 6px 20px rgba(17, 17, 17, .06);
    --shadow-md: 0 14px 40px rgba(17, 17, 17, .08);
    --shadow-lg: 0 26px 70px rgba(17, 17, 17, .12);
    --shadow-brand: 0 14px 32px rgba(229, 57, 53, .3);
    --shadow-accent: 0 14px 32px rgba(255, 152, 0, .28);

    /* Typography */
    --font: 'Poppins', system-ui, -apple-system, 'Segoe UI', Roboto, sans-serif;
    --fs-display: clamp(2.4rem, 1.35rem + 3.4vw, 4.15rem);
    --fs-h1: clamp(2.1rem, 1.4rem + 2.6vw, 3.25rem);
    --fs-h2: clamp(1.85rem, 1.3rem + 1.9vw, 2.75rem);
    --fs-h3: clamp(1.15rem, 1.02rem + .45vw, 1.4rem);
    --fs-body: clamp(.95rem, .92rem + .12vw, 1.02rem);
    --fs-sm: .875rem;

    /* Layout */
    --container: 1240px;
    --section-y: clamp(4rem, 2.4rem + 5vw, 7.5rem);
    --header-h: 86px;

    /* Motion */
    --ease: cubic-bezier(.22, 1, .36, 1);
    --ease-out: cubic-bezier(.16, 1, .3, 1);
    --t-fast: .2s;
    --t: .35s;
    --t-slow: .6s;
}

/* 02. BASE & RESET ========================================================= */
*,
*::before,
*::after {
    box-sizing: border-box;
}

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

body {
    margin: 0;
    font-family: var(--font);
    font-size: var(--fs-body);
    font-weight: 400;
    line-height: 1.75;
    color: var(--ink-70);
    background-color: var(--bg);
    overflow-x: hidden;
    -webkit-font-smoothing: antialiased;
    -moz-osx-font-smoothing: grayscale;
}

body.no-scroll {
    overflow: hidden;
}

h1,
h2,
h3,
h4,
h5,
h6 {
    font-weight: 700;
    color: var(--ink);
    line-height: 1.25;
    letter-spacing: -.02em;
    margin: 0 0 .6rem;
}

p {
    margin: 0 0 1rem;
}

a {
    color: var(--brand);
    text-decoration: none;
    transition: color var(--t-fast) var(--ease);
}

a:hover {
    color: var(--brand-dark);
}

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

ul,
ol {
    margin: 0;
    padding: 0;
    list-style: none;
}

figure {
    margin: 0;
}

iframe {
    border: 0;
    display: block;
}

::selection {
    background: rgba(229, 57, 53, .16);
    color: var(--ink);
}

:focus-visible {
    outline: 3px solid rgba(229, 57, 53, .45);
    outline-offset: 3px;
    border-radius: 6px;
}

/* Custom scrollbar (desktop) */
@media (min-width: 992px) {
    ::-webkit-scrollbar {
        width: 10px;
    }

    ::-webkit-scrollbar-track {
        background: #f1f1f3;
    }

    ::-webkit-scrollbar-thumb {
        background: linear-gradient(var(--brand), var(--accent));
        border-radius: 10px;
        border: 2px solid #f1f1f3;
    }
}

/* Skip link */
.skip-link {
    position: fixed;
    top: -100px;
    left: 24px;
    z-index: 2000;
    padding: .75rem 1.4rem;
    background: var(--ink);
    color: var(--white);
    border-radius: 0 0 var(--r-xs) var(--r-xs);
    font-weight: 600;
    transition: top var(--t) var(--ease);
}

.skip-link:focus {
    top: 0;
    color: var(--white);
}

/* 03. UTILITIES ============================================================ */
.container {
    max-width: var(--container);
    /* 1.5rem matches the negative margin of a `g-5` row (-1.5rem), so wide
       gutters can never push content past the viewport edge. */
    padding-inline: 1.5rem;
}

.section {
    position: relative;
    padding-block: var(--section-y);
    isolation: isolate;
}

.section--muted {
    background: linear-gradient(180deg, var(--bg) 0%, #f4f5f7 100%);
}

.section--dark {
    background: var(--grad-dark);
    color: rgba(255, 255, 255, .74);
    overflow: hidden;
}

.section--dark h1,
.section--dark h2,
.section--dark h3,
.section--dark h4 {
    color: var(--white);
}

.section__cta {
    margin-top: clamp(2.5rem, 1.5rem + 2vw, 3.5rem);
    text-align: center;
}

section[id] {
    scroll-margin-top: 110px;
}

.text-gradient {
    background: var(--grad-brand);
    -webkit-background-clip: text;
    background-clip: text;
    color: transparent;
    -webkit-text-fill-color: transparent;
}

.empty-state {
    text-align: center;
    color: var(--muted);
    padding: 3rem 1rem;
    background: var(--white);
    border: 1px dashed var(--line);
    border-radius: var(--r-md);
}

/* Curved section divider */
.section-divider {
    position: absolute;
    inset-inline: 0;
    bottom: -1px;
    line-height: 0;
    color: var(--bg);
    pointer-events: none;
}

.section-divider svg {
    width: 100%;
    height: clamp(50px, 6vw, 110px);
    display: block;
}

/* Rating */
.rating {
    display: inline-flex;
    align-items: center;
    gap: .4rem;
    font-size: var(--fs-sm);
}

.rating__stars {
    color: var(--accent);
    letter-spacing: 1px;
    line-height: 1;
}

.rating__value {
    font-weight: 700;
    color: var(--ink);
}

.rating__count {
    color: var(--muted-soft);
    font-size: .8rem;
}

/* 04. BUTTONS ============================================================== */
.btn {
    --bs-btn-focus-box-shadow: none;
    position: relative;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: .55rem;
    padding: .8rem 1.6rem;
    border: 0;
    border-radius: var(--r-pill);
    font-family: var(--font);
    font-size: .94rem;
    font-weight: 600;
    line-height: 1.4;
    letter-spacing: .01em;
    cursor: pointer;
    overflow: hidden;
    white-space: nowrap;
    transition: transform var(--t) var(--ease), box-shadow var(--t) var(--ease),
        background-color var(--t) var(--ease), color var(--t) var(--ease), border-color var(--t) var(--ease);
}

.btn:focus-visible {
    outline: 3px solid rgba(229, 57, 53, .4);
    outline-offset: 3px;
}

.btn-lg {
    padding: 1rem 2rem;
    font-size: 1rem;
}

.btn-block {
    display: flex;
    width: 100%;
}

.btn i {
    font-size: .9em;
    transition: transform var(--t) var(--ease);
}

.btn:hover i.fa-arrow-right {
    transform: translateX(4px);
}

.btn-brand {
    background: var(--grad-brand);
    background-size: 160% 160%;
    background-position: 0% 50%;
    color: var(--white);
    box-shadow: var(--shadow-brand);
}

.btn-brand:hover,
.btn-brand:focus {
    color: var(--white);
    background-position: 100% 50%;
    transform: translateY(-3px);
    box-shadow: 0 18px 40px rgba(229, 57, 53, .38);
}

.btn-outline-brand {
    background: transparent;
    color: var(--brand);
    box-shadow: inset 0 0 0 2px rgba(229, 57, 53, .35);
}

.btn-outline-brand:hover,
.btn-outline-brand:focus {
    background: rgba(229, 57, 53, .06);
    color: var(--brand-dark);
    box-shadow: inset 0 0 0 2px var(--brand);
    transform: translateY(-3px);
}

.btn-ghost {
    background: transparent;
    color: var(--ink);
    box-shadow: inset 0 0 0 1.5px var(--line);
}

.btn-ghost:hover,
.btn-ghost:focus {
    color: var(--brand);
    background: rgba(229, 57, 53, .05);
    box-shadow: inset 0 0 0 1.5px rgba(229, 57, 53, .3);
}

.btn-light-outline {
    background: rgba(255, 255, 255, .06);
    color: var(--white);
    box-shadow: inset 0 0 0 1.5px rgba(255, 255, 255, .3);
    backdrop-filter: blur(6px);
}

.btn-light-outline:hover,
.btn-light-outline:focus {
    background: var(--white);
    color: var(--ink);
    transform: translateY(-3px);
}

.btn-outline-dark {
    background: transparent;
    color: var(--ink);
    box-shadow: inset 0 0 0 1.5px rgba(17, 17, 17, .18);
}

.btn-outline-dark:hover {
    background: var(--ink);
    color: var(--white);
}

/* Ripple */
.btn-ripple {
    position: relative;
}

.ripple {
    position: absolute;
    border-radius: 50%;
    transform: scale(0);
    background: rgba(255, 255, 255, .45);
    animation: ripple .65s linear;
    pointer-events: none;
}

.btn-outline-brand .ripple,
.btn-ghost .ripple,
.btn-outline-dark .ripple {
    background: rgba(229, 57, 53, .25);
}

@keyframes ripple {
    to {
        transform: scale(3.2);
        opacity: 0;
    }
}

/* Submit spinner state */
.btn__spinner {
    display: none;
    width: 1.05em;
    height: 1.05em;
    border: 2px solid rgba(255, 255, 255, .45);
    border-top-color: var(--white);
    border-radius: 50%;
    animation: spin .7s linear infinite;
}

.btn.is-loading {
    pointer-events: none;
    opacity: .85;
}

.btn.is-loading .btn__spinner {
    display: inline-block;
}

.btn.is-loading i {
    display: none;
}

@keyframes spin {
    to {
        transform: rotate(360deg);
    }
}

/* 05. PRELOADER & FLOATING ACTIONS ========================================= */
.preloader {
    position: fixed;
    inset: 0;
    z-index: 3000;
    display: grid;
    place-items: center;
    background: var(--white);
    transition: opacity .45s var(--ease), visibility .45s var(--ease);
}

.preloader.is-hidden {
    opacity: 0;
    visibility: hidden;
}

.preloader__inner {
    text-align: center;
}

.preloader__mark {
    position: relative;
    width: 92px;
    height: 92px;
    margin: 0 auto 1.1rem;
    display: grid;
    place-items: center;
}

.preloader__mark i {
    font-size: 2rem;
    background: var(--grad-brand);
    -webkit-background-clip: text;
    background-clip: text;
    color: transparent;
}

.preloader__ring {
    position: absolute;
    inset: 0;
    border: 3px solid var(--line);
    border-top-color: var(--brand);
    border-right-color: var(--accent);
    border-radius: 50%;
    animation: spin 1s linear infinite;
}

.preloader__text {
    margin: 0;
    font-weight: 700;
    letter-spacing: .18em;
    text-transform: uppercase;
    font-size: .74rem;
    color: var(--muted);
}

.back-to-top {
    position: fixed;
    right: 22px;
    bottom: 22px;
    z-index: 1020;
    width: 48px;
    height: 48px;
    display: grid;
    place-items: center;
    border: 0;
    border-radius: 50%;
    background: var(--grad-brand);
    color: var(--white);
    box-shadow: var(--shadow-brand);
    opacity: 0;
    visibility: hidden;
    transform: translateY(16px);
    transition: all var(--t) var(--ease);
}

.back-to-top.is-visible {
    opacity: 1;
    visibility: visible;
    transform: translateY(0);
}

.back-to-top:hover {
    transform: translateY(-4px);
}

.whatsapp-float {
    position: fixed;
    left: 22px;
    bottom: 22px;
    z-index: 1020;
    width: 52px;
    height: 52px;
    display: grid;
    place-items: center;
    border-radius: 50%;
    background: #25d366;
    color: var(--white);
    font-size: 1.5rem;
    box-shadow: 0 12px 28px rgba(37, 211, 102, .38);
    transition: transform var(--t) var(--ease);
}

.whatsapp-float::after {
    content: '';
    position: absolute;
    inset: 0;
    border-radius: 50%;
    border: 2px solid rgba(37, 211, 102, .5);
    animation: pulse-ring 2.2s ease-out infinite;
}

.whatsapp-float:hover {
    color: var(--white);
    transform: scale(1.08);
}

@keyframes pulse-ring {
    0% {
        transform: scale(1);
        opacity: .8;
    }

    100% {
        transform: scale(1.55);
        opacity: 0;
    }
}

/* 06. HEADER / NAVBAR ====================================================== */
.site-header {
    position: fixed;
    inset-inline: 0;
    top: 0;
    z-index: 1030;
    transition: background-color var(--t) var(--ease), box-shadow var(--t) var(--ease);
}

.site-header.is-scrolled,
.site-header--solid {
    background: rgba(255, 255, 255, .92);
    backdrop-filter: saturate(180%) blur(14px);
    box-shadow: 0 6px 30px rgba(17, 17, 17, .07);
}

/* Topbar */
.topbar {
    background: var(--grad-dark);
    color: rgba(255, 255, 255, .75);
    font-size: .8rem;
    max-height: 46px;
    overflow: hidden;
    transition: max-height var(--t) var(--ease), opacity var(--t) var(--ease);
}

.site-header.is-scrolled .topbar {
    max-height: 0;
    opacity: 0;
}

.topbar__inner {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 1.5rem;
    min-height: 46px;
}

.topbar__contact,
.topbar__social,
.topbar__right {
    display: flex;
    align-items: center;
    gap: 1.4rem;
}

.topbar a {
    color: rgba(255, 255, 255, .78);
}

.topbar a:hover {
    color: var(--white);
}

.topbar i {
    color: var(--accent);
    margin-right: .4rem;
}

.topbar__note {
    display: inline-flex;
    align-items: center;
    gap: .2rem;
    padding: .25rem .8rem;
    border-radius: var(--r-pill);
    background: rgba(229, 57, 53, .18);
    color: #ffd9d8;
    font-size: .74rem;
    font-weight: 500;
}

.topbar__social {
    gap: .35rem;
}

.topbar__social a {
    width: 28px;
    height: 28px;
    display: grid;
    place-items: center;
    border-radius: 50%;
    background: rgba(255, 255, 255, .08);
    transition: background-color var(--t-fast) var(--ease), transform var(--t-fast) var(--ease);
}

.topbar__social i {
    margin: 0;
    color: inherit;
    font-size: .78rem;
}

.topbar__social a:hover {
    background: var(--brand);
    transform: translateY(-2px);
}

/* Navbar */
.site-nav {
    padding-block: .85rem;
    transition: padding var(--t) var(--ease);
}

.site-header.is-scrolled .site-nav {
    padding-block: .55rem;
}

.site-nav .container {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 1rem;
}

.site-nav__logo {
    width: auto;
    height: clamp(44px, 3.4vw, 56px);
    transition: height var(--t) var(--ease);
}

.site-header.is-scrolled .site-nav__logo {
    height: 44px;
}

.site-nav__list {
    display: flex;
    align-items: center;
    gap: .2rem;
}

.site-nav__link {
    position: relative;
    padding: .55rem .85rem !important;
    font-size: .93rem;
    font-weight: 500;
    color: var(--ink-70) !important;
    border-radius: var(--r-pill);
    transition: color var(--t-fast) var(--ease);
}

.site-nav__link::after {
    content: '';
    position: absolute;
    left: 50%;
    bottom: .28rem;
    width: 0;
    height: 3px;
    border-radius: 3px;
    background: var(--grad-brand);
    transform: translateX(-50%);
    transition: width var(--t) var(--ease);
}

.site-nav__link:hover,
.site-nav__link.active {
    color: var(--brand) !important;
}

.site-nav__link:hover::after,
.site-nav__link.active::after {
    width: 22px;
}

.site-nav__actions {
    display: flex;
    align-items: center;
    gap: .6rem;
}

.site-nav__actions .btn {
    padding: .62rem 1.2rem;
    font-size: .88rem;
}

/* Hamburger */
.site-nav__toggler {
    display: none;
    flex-direction: column;
    justify-content: center;
    gap: 5px;
    width: 46px;
    height: 46px;
    padding: 0 11px;
    border: 1px solid var(--line);
    border-radius: 14px;
    background: var(--white);
    box-shadow: var(--shadow-xs);
}

.site-nav__toggler:focus {
    box-shadow: none;
}

.site-nav__toggler-bar {
    display: block;
    height: 2px;
    width: 100%;
    border-radius: 2px;
    background: var(--ink);
    transition: transform var(--t) var(--ease), opacity var(--t) var(--ease);
}

.site-nav__toggler-bar:nth-child(2) {
    width: 70%;
    background: var(--brand);
}

/* Mobile off-canvas */
.mobile-menu {
    width: min(360px, 88vw);
    border-left: 1px solid var(--line);
}

.mobile-menu__header {
    padding: 1.1rem 1.35rem;
    border-bottom: 1px solid var(--line);
}

.mobile-menu__brand img {
    height: 46px;
    width: auto;
}

.mobile-menu__body {
    display: flex;
    flex-direction: column;
    padding: 1.35rem;
}

.mobile-menu__list {
    margin-bottom: 1.5rem;
}

.mobile-menu__list a {
    display: flex;
    align-items: center;
    justify-content: space-between;
    padding: .85rem .25rem;
    border-bottom: 1px solid var(--line);
    color: var(--ink);
    font-weight: 500;
}

.mobile-menu__list i {
    font-size: .7rem;
    color: var(--muted-soft);
    transition: transform var(--t-fast) var(--ease);
}

.mobile-menu__list a:hover,
.mobile-menu__list a.active {
    color: var(--brand);
}

.mobile-menu__list a:hover i,
.mobile-menu__list a.active i {
    transform: translateX(4px);
    color: var(--brand);
}

.mobile-menu__actions {
    display: grid;
    gap: .6rem;
    margin-bottom: 1.5rem;
}

.mobile-menu__contact {
    display: grid;
    gap: .5rem;
    padding: 1rem;
    border-radius: var(--r-md);
    background: var(--surface-soft);
    margin-bottom: 1.2rem;
}

.mobile-menu__contact a {
    color: var(--ink-70);
    font-size: .9rem;
}

.mobile-menu__contact i {
    color: var(--brand);
    width: 20px;
}

.mobile-menu__social {
    display: flex;
    gap: .5rem;
}

.mobile-menu__social a {
    width: 38px;
    height: 38px;
    display: grid;
    place-items: center;
    border-radius: 50%;
    background: var(--surface-soft);
    color: var(--ink-70);
}

.mobile-menu__social a:hover {
    background: var(--grad-brand);
    color: var(--white);
}

/* 07. HERO ================================================================= */
.hero {
    position: relative;
    padding-top: clamp(150px, 12vw, 210px);
    padding-bottom: clamp(80px, 9vw, 150px);
    background: linear-gradient(170deg, #fff7f2 0%, #ffffff 45%, #fff9f4 100%);
    overflow: hidden;
    isolation: isolate;
}

.hero__bg {
    position: absolute;
    inset: 0;
    z-index: -1;
}

.hero__blob {
    position: absolute;
    border-radius: 50%;
    filter: blur(70px);
    opacity: .5;
}

.hero__blob--one {
    width: 460px;
    height: 460px;
    top: -140px;
    right: -110px;
    background: radial-gradient(circle, rgba(229, 57, 53, .35), transparent 68%);
}

.hero__blob--two {
    width: 420px;
    height: 420px;
    bottom: -160px;
    left: -120px;
    background: radial-gradient(circle, rgba(255, 152, 0, .32), transparent 68%);
}

.hero__blob--three {
    width: 300px;
    height: 300px;
    top: 40%;
    left: 45%;
    background: radial-gradient(circle, rgba(229, 57, 53, .12), transparent 70%);
}

.hero__grid {
    position: absolute;
    inset: 0;
    background-image:
        linear-gradient(rgba(17, 17, 17, .035) 1px, transparent 1px),
        linear-gradient(90deg, rgba(17, 17, 17, .035) 1px, transparent 1px);
    background-size: 56px 56px;
    mask-image: radial-gradient(ellipse 70% 60% at 50% 40%, #000 40%, transparent 100%);
    -webkit-mask-image: radial-gradient(ellipse 70% 60% at 50% 40%, #000 40%, transparent 100%);
}

.hero__pill {
    display: inline-flex;
    align-items: center;
    gap: .55rem;
    padding: .45rem 1.1rem .45rem .6rem;
    margin-bottom: 1.5rem;
    border-radius: var(--r-pill);
    background: var(--white);
    border: 1px solid var(--line);
    box-shadow: var(--shadow-xs);
    font-size: .82rem;
    font-weight: 500;
    color: var(--ink-70);
}

.hero__pill-dot {
    width: 9px;
    height: 9px;
    border-radius: 50%;
    background: var(--brand);
    box-shadow: 0 0 0 4px rgba(229, 57, 53, .16);
    animation: pulse-dot 1.9s ease-in-out infinite;
}

@keyframes pulse-dot {

    0%,
    100% {
        box-shadow: 0 0 0 4px rgba(229, 57, 53, .16);
    }

    50% {
        box-shadow: 0 0 0 9px rgba(229, 57, 53, .04);
    }
}

.hero__title {
    font-size: var(--fs-display);
    font-weight: 800;
    line-height: 1.08;
    margin-bottom: 1.2rem;
}

.hero__subtitle {
    max-width: 34rem;
    font-size: clamp(1rem, .95rem + .3vw, 1.14rem);
    color: var(--muted);
    margin-bottom: 2rem;
}

.hero__actions {
    display: flex;
    flex-wrap: wrap;
    gap: .85rem;
    margin-bottom: 2.6rem;
}

.hero__trust {
    display: flex;
    align-items: center;
    gap: 1rem;
    flex-wrap: wrap;
}

.hero__avatars {
    display: flex;
}

.hero__avatar {
    width: 42px;
    height: 42px;
    display: grid;
    place-items: center;
    margin-left: -12px;
    border-radius: 50%;
    border: 3px solid var(--white);
    background: var(--grad-brand);
    color: var(--white);
    font-size: .85rem;
    font-weight: 600;
    box-shadow: var(--shadow-xs);
}

.hero__avatar:first-child {
    margin-left: 0;
}

.hero__avatar--more {
    background: var(--ink);
    font-size: .7rem;
}

.hero__trust-text p {
    margin: 0;
    font-size: .88rem;
    color: var(--muted);
}

.hero__trust-text strong {
    color: var(--ink);
}

.hero__stars {
    font-size: .8rem;
}

/* Hero visual */
.hero__visual {
    position: relative;
    padding: 1.5rem;
}

.hero__visual-glow {
    position: absolute;
    inset: 8% 6%;
    border-radius: 50%;
    background: radial-gradient(circle, rgba(255, 152, 0, .2), rgba(229, 57, 53, .12) 45%, transparent 70%);
    filter: blur(30px);
    z-index: -1;
}

.hero__illustration {
    width: 100%;
    height: auto;
    filter: drop-shadow(0 30px 55px rgba(17, 17, 17, .12));
}

.hero__chip {
    position: absolute;
    width: 56px;
    height: 56px;
    display: grid;
    place-items: center;
    border-radius: 18px;
    background: var(--white);
    box-shadow: var(--shadow-md);
    font-size: 1.28rem;
}

.hero__chip--books {
    top: 6%;
    left: 0;
    color: var(--brand);
}

.hero__chip--cap {
    top: 20%;
    right: 2%;
    color: var(--accent);
}

.hero__chip--certificate {
    bottom: 24%;
    left: -2%;
    color: var(--accent-dark);
}

.hero__chip--laptop {
    bottom: 6%;
    right: 8%;
    color: var(--brand);
}

.hero__card {
    position: absolute;
    display: flex;
    align-items: center;
    gap: .7rem;
    padding: .7rem .95rem;
    border-radius: var(--r-md);
    background: rgba(255, 255, 255, .9);
    backdrop-filter: blur(10px);
    border: 1px solid rgba(255, 255, 255, .8);
    box-shadow: var(--shadow-md);
}

.hero__card strong {
    display: block;
    font-size: .95rem;
    color: var(--ink);
    line-height: 1.2;
}

.hero__card small {
    font-size: .72rem;
    color: var(--muted);
}

.hero__card--rate {
    top: 12%;
    right: -4%;
}

.hero__card--live {
    bottom: 12%;
    left: -6%;
}

.hero__card-icon {
    width: 38px;
    height: 38px;
    display: grid;
    place-items: center;
    border-radius: 12px;
    background: rgba(229, 57, 53, .1);
    color: var(--brand);
}

.hero__card-icon--alt {
    background: rgba(255, 152, 0, .14);
    color: var(--accent-dark);
}

.hero__scroll {
    position: absolute;
    left: 50%;
    bottom: clamp(70px, 8vw, 120px);
    transform: translateX(-50%);
    display: grid;
    justify-items: center;
    gap: .4rem;
    color: var(--muted);
    font-size: .7rem;
    letter-spacing: .2em;
    text-transform: uppercase;
}

.hero__scroll-mouse {
    width: 24px;
    height: 38px;
    border: 2px solid rgba(17, 17, 17, .2);
    border-radius: var(--r-pill);
    display: grid;
    justify-items: center;
    padding-top: 6px;
}

.hero__scroll-mouse span {
    width: 4px;
    height: 8px;
    border-radius: 4px;
    background: var(--brand);
    animation: scroll-dot 1.6s ease-in-out infinite;
}

@keyframes scroll-dot {

    0%,
    100% {
        transform: translateY(0);
        opacity: 1;
    }

    50% {
        transform: translateY(9px);
        opacity: .35;
    }
}

/* 08. STATISTICS =========================================================== */
.statistics {
    position: relative;
    padding-block: clamp(2rem, 1rem + 3vw, 3.5rem);
}

.statistics__panel {
    padding: clamp(2rem, 1.2rem + 2.5vw, 3.25rem) clamp(1.25rem, .8rem + 2vw, 3rem);
    border-radius: var(--r-xl);
    background: var(--white);
    border: 1px solid var(--line);
    box-shadow: var(--shadow-md);
}

.stat {
    position: relative;
    text-align: center;
    padding: .5rem 1rem;
}

.stat::after {
    content: '';
    position: absolute;
    right: 0;
    top: 18%;
    height: 64%;
    width: 1px;
    background: var(--line);
}

.col-lg-3:last-child .stat::after,
.col-sm-6:nth-child(even) .stat::after {
    display: none;
}

.stat__icon {
    display: inline-grid;
    place-items: center;
    width: 56px;
    height: 56px;
    margin-bottom: .85rem;
    border-radius: 18px;
    background: var(--grad-brand-soft);
    color: var(--brand);
    font-size: 1.3rem;
}

.stat__value {
    display: flex;
    align-items: baseline;
    justify-content: center;
    gap: 1px;
    margin: 0;
    font-size: clamp(2rem, 1.4rem + 2vw, 3rem);
    font-weight: 800;
    line-height: 1;
    background: var(--grad-brand);
    -webkit-background-clip: text;
    background-clip: text;
    color: transparent;
    -webkit-text-fill-color: transparent;
}

.stat__label {
    margin: .55rem 0 0;
    font-size: .92rem;
    font-weight: 500;
    color: var(--muted);
}

/* 09. ABOUT ================================================================ */
.about__visual {
    position: relative;
    padding-bottom: 3rem;
}

.about__image {
    border-radius: var(--r-lg);
    overflow: hidden;
    box-shadow: var(--shadow-lg);
}

.about__image--small {
    position: absolute;
    right: -6%;
    bottom: 0;
    width: 46%;
    border: 6px solid var(--white);
    border-radius: var(--r-lg);
    box-shadow: var(--shadow-md);
}

.about__badge {
    position: absolute;
    left: -4%;
    bottom: 16%;
    display: grid;
    justify-items: center;
    gap: .1rem;
    padding: 1.1rem 1.35rem;
    border-radius: var(--r-md);
    background: var(--grad-brand);
    color: var(--white);
    text-align: center;
    box-shadow: var(--shadow-brand);
}

.about__badge-value {
    font-size: 2rem;
    font-weight: 800;
    line-height: 1;
}

.about__badge-label {
    font-size: .74rem;
    font-weight: 500;
    line-height: 1.3;
    opacity: .92;
}

.about__dots {
    position: absolute;
    top: -22px;
    left: -22px;
    width: 120px;
    height: 120px;
    z-index: -1;
    background-image: radial-gradient(var(--accent) 1.6px, transparent 1.6px);
    background-size: 14px 14px;
    opacity: .45;
    border-radius: var(--r-sm);
}

.about__pillars {
    margin-block: 1.75rem;
}

.about__pillar {
    height: 100%;
    padding: 1.4rem;
    border-radius: var(--r-md);
    background: var(--white);
    border: 1px solid var(--line);
    box-shadow: var(--shadow-xs);
    transition: transform var(--t) var(--ease), box-shadow var(--t) var(--ease);
}

.about__pillar:hover {
    transform: translateY(-5px);
    box-shadow: var(--shadow-md);
}

.about__pillar h3 {
    font-size: 1.05rem;
    margin-bottom: .35rem;
}

.about__pillar p {
    margin: 0;
    font-size: .9rem;
    color: var(--muted);
}

.about__pillar-icon {
    display: inline-grid;
    place-items: center;
    width: 46px;
    height: 46px;
    margin-bottom: .85rem;
    border-radius: 14px;
    background: rgba(229, 57, 53, .1);
    color: var(--brand);
    font-size: 1.05rem;
}

.about__pillar-icon--alt {
    background: rgba(255, 152, 0, .14);
    color: var(--accent-dark);
}

.about__list-title {
    font-size: 1.1rem;
    margin-bottom: 1rem;
}

.about__list {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: .7rem 1.25rem;
    margin-bottom: 2rem;
}

.about__list li {
    display: flex;
    align-items: flex-start;
    gap: .6rem;
    font-size: .92rem;
    color: var(--ink-70);
}

.about__list i {
    margin-top: .28rem;
    color: var(--success);
    font-size: .95rem;
}

.about__actions {
    display: flex;
    align-items: center;
    flex-wrap: wrap;
    gap: 1.5rem;
}

.about__call {
    display: flex;
    align-items: center;
    gap: .7rem;
    color: var(--ink);
}

.about__call-icon {
    width: 44px;
    height: 44px;
    display: grid;
    place-items: center;
    border-radius: 50%;
    background: rgba(229, 57, 53, .1);
    color: var(--brand);
    animation: pulse-ring-soft 2.4s ease-out infinite;
}

.about__call small {
    display: block;
    font-size: .74rem;
    color: var(--muted);
}

.about__call strong {
    font-size: .98rem;
}

@keyframes pulse-ring-soft {

    0%,
    100% {
        box-shadow: 0 0 0 0 rgba(229, 57, 53, .3);
    }

    70% {
        box-shadow: 0 0 0 12px rgba(229, 57, 53, 0);
    }
}

/* 10. SECTION HEADING ====================================================== */
.section-heading {
    margin-bottom: clamp(2.25rem, 1.4rem + 2.5vw, 3.5rem);
}

.section-heading--center {
    max-width: 46rem;
    margin-inline: auto;
    text-align: center;
}

.section-heading__eyebrow {
    display: inline-flex;
    align-items: center;
    gap: .45rem;
    padding: .4rem 1rem;
    margin-bottom: 1rem;
    border-radius: var(--r-pill);
    background: rgba(229, 57, 53, .08);
    color: var(--brand);
    font-size: .76rem;
    font-weight: 600;
    letter-spacing: .1em;
    text-transform: uppercase;
}

.section-heading__eyebrow i {
    font-size: .62rem;
}

.section-heading__title {
    font-size: var(--fs-h2);
    font-weight: 700;
    margin-bottom: .85rem;
}

.section-heading__text {
    margin: 0;
    color: var(--muted);
    font-size: 1rem;
}

.section-heading--light .section-heading__eyebrow {
    background: rgba(255, 255, 255, .1);
    color: #ffb3b1;
}

.section-heading--light .section-heading__text {
    color: rgba(255, 255, 255, .68);
}

/* 11. COURSE CARDS ========================================================= */
.course-card {
    position: relative;
    display: flex;
    flex-direction: column;
    height: 100%;
    padding-bottom: 1.35rem;
    border-radius: var(--r-lg);
    background: var(--white);
    border: 1px solid var(--line);
    box-shadow: var(--shadow-xs);
    overflow: hidden;
    transition: transform var(--t) var(--ease), box-shadow var(--t) var(--ease), border-color var(--t) var(--ease);
}

.course-card:hover {
    transform: translateY(-8px);
    border-color: rgba(229, 57, 53, .2);
    box-shadow: var(--shadow-lg);
}

.course-card__media {
    position: relative;
    overflow: hidden;
}

.course-card__media .media__img {
    transition: transform var(--t-slow) var(--ease);
}

.course-card:hover .media__img {
    transform: scale(1.07);
}

.course-card__category,
.course-card__badge {
    position: absolute;
    top: .9rem;
    z-index: 2;
    padding: .3rem .8rem;
    border-radius: var(--r-pill);
    font-size: .72rem;
    font-weight: 600;
}

.course-card__category {
    left: .9rem;
    background: rgba(255, 255, 255, .94);
    color: var(--ink);
    backdrop-filter: blur(6px);
}

.course-card__badge {
    right: .9rem;
    background: var(--grad-brand);
    color: var(--white);
    box-shadow: var(--shadow-brand);
}

.course-card__badge--new {
    background: linear-gradient(135deg, var(--success), #43a047);
    box-shadow: 0 10px 22px rgba(46, 125, 50, .3);
}

.course-card__badge--popular {
    background: linear-gradient(135deg, var(--accent), var(--accent-dark));
    box-shadow: var(--shadow-accent);
}

.course-card__overlay {
    position: absolute;
    inset: 0;
    display: grid;
    place-items: center;
    background: linear-gradient(to top, rgba(17, 17, 17, .75), rgba(17, 17, 17, .15));
    opacity: 0;
    transition: opacity var(--t) var(--ease);
}

.course-card:hover .course-card__overlay {
    opacity: 1;
}

.course-card__preview {
    display: inline-flex;
    align-items: center;
    gap: .5rem;
    padding: .6rem 1.15rem;
    border-radius: var(--r-pill);
    background: rgba(255, 255, 255, .95);
    color: var(--ink);
    font-size: .84rem;
    font-weight: 600;
    transform: translateY(10px);
    transition: transform var(--t) var(--ease);
}

.course-card:hover .course-card__preview {
    transform: translateY(0);
}

.course-card__preview i {
    color: var(--brand);
}

.course-card__body {
    flex: 1;
    padding: 1.35rem 1.35rem .5rem;
}

.course-card__icon-row {
    display: flex;
    align-items: center;
    gap: .75rem;
    margin-bottom: .9rem;
}

.course-card__icon {
    display: grid;
    place-items: center;
    flex: 0 0 auto;
    width: 42px;
    height: 42px;
    border-radius: 14px;
    background: var(--grad-brand-soft);
    color: var(--brand);
    font-size: 1rem;
}

.course-card__level {
    color: var(--brand);
    font-size: .78rem;
    font-weight: 700;
}

.course-card__meta {
    display: flex;
    flex-wrap: wrap;
    gap: .55rem .9rem;
    margin-bottom: .7rem;
    font-size: .78rem;
    color: var(--muted);
}

.course-card__meta span {
    display: inline-flex;
    align-items: flex-start;
    gap: .35rem;
    flex: 1 1 100%;
    line-height: 1.45;
}

.course-card__meta i {
    color: var(--brand);
    margin-top: .2rem;
}

.course-card__title {
    font-size: 1.16rem;
    margin-bottom: .5rem;
}

.course-card__title a {
    color: var(--ink);
    background-image: var(--grad-brand);
    background-size: 0% 2px;
    background-repeat: no-repeat;
    background-position: 0 100%;
    transition: background-size var(--t) var(--ease), color var(--t-fast) var(--ease);
}

.course-card__title a:hover {
    color: var(--brand);
    background-size: 100% 2px;
}

.course-card__text {
    font-size: .88rem;
    color: var(--muted);
    margin-bottom: 1rem;
}

.course-card__subjects {
    display: flex;
    flex-wrap: wrap;
    gap: .45rem;
    margin-bottom: 1rem;
}

.course-card__subjects span {
    padding: .32rem .68rem;
    border-radius: var(--r-pill);
    background: var(--surface-soft);
    color: var(--ink-70);
    font-size: .73rem;
    font-weight: 600;
}

.course-card__features {
    display: grid;
    gap: .45rem;
    margin-bottom: 1rem;
}

.course-card__features li {
    display: flex;
    align-items: flex-start;
    gap: .45rem;
    color: var(--ink-70);
    font-size: .82rem;
    line-height: 1.5;
}

.course-card__features i {
    margin-top: .18rem;
    color: var(--success);
    font-size: .72rem;
}

.course-card__faculty {
    display: flex;
    align-items: center;
    gap: .6rem;
    padding-top: .9rem;
    border-top: 1px dashed var(--line);
}

.course-card__avatar {
    width: 34px;
    height: 34px;
    display: grid;
    place-items: center;
    border-radius: 50%;
    background: var(--grad-brand-soft);
    color: var(--brand);
    font-size: .76rem;
    font-weight: 700;
}

.course-card__faculty-name {
    font-size: .85rem;
    font-weight: 500;
    color: var(--ink-70);
}

.course-card__cta {
    margin-inline: 1.35rem;
}

.course-card__actions {
    display: grid;
    grid-template-columns: minmax(0, 1fr) minmax(0, 1fr);
    gap: .75rem;
    padding: .9rem 1.35rem 0;
}

.course-card__actions .btn {
    min-width: 0;
    justify-content: center;
    padding-inline: .9rem;
}

.course-card__actions .course-card__cta {
    margin-inline: 0;
}

/* Course overview and detail pages */
.course-overview-grid,
.course-tree {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 1.5rem;
}

.course-overview,
.course-tree__group {
    height: 100%;
    padding: clamp(1.35rem, 1rem + 1.2vw, 2rem);
    border-radius: var(--r-lg);
    background: var(--white);
    border: 1px solid var(--line);
    box-shadow: var(--shadow-xs);
    transition: transform var(--t) var(--ease), box-shadow var(--t) var(--ease), border-color var(--t) var(--ease);
}

.course-overview:hover,
.course-tree__group:hover {
    transform: translateY(-6px);
    border-color: rgba(229, 57, 53, .22);
    box-shadow: var(--shadow-md);
}

.course-overview__top,
.course-tree__group {
    display: flex;
    align-items: flex-start;
    gap: 1rem;
}

.course-overview__icon,
.course-tree__icon,
.course-detail__icon {
    display: grid;
    place-items: center;
    flex: 0 0 auto;
    width: 56px;
    height: 56px;
    border-radius: 18px;
    background: var(--grad-brand);
    color: var(--white);
    font-size: 1.25rem;
    box-shadow: var(--shadow-brand);
}

.course-overview__label {
    display: block;
    color: var(--brand);
    font-size: .8rem;
    font-weight: 700;
}

.course-overview__title,
.course-tree__body h3 {
    margin-bottom: .35rem;
    font-size: 1.25rem;
}

.course-overview__text,
.courses-structure__text,
.course-tree__body p,
.course-detail__lead {
    color: var(--muted);
}

.course-overview__text {
    margin-top: 1rem;
}

.course-overview__features {
    display: grid;
    gap: .55rem;
    margin-top: 1rem;
}

.course-overview__features li {
    display: flex;
    align-items: flex-start;
    gap: .5rem;
    color: var(--ink-70);
    font-size: .9rem;
}

.course-overview__features i {
    margin-top: .25rem;
    color: var(--success);
    font-size: .75rem;
}

.course-overview__links,
.course-tree__links,
.subject-pills {
    display: flex;
    flex-wrap: wrap;
    gap: .55rem;
}

.course-overview__links,
.course-tree__links {
    margin-top: 1.15rem;
}

.course-overview__links a,
.course-tree__links a,
.subject-pills span {
    display: inline-flex;
    align-items: center;
    min-height: 36px;
    padding: .42rem .82rem;
    border-radius: var(--r-pill);
    background: var(--surface-soft);
    color: var(--ink-70);
    font-size: .82rem;
    font-weight: 600;
}

.course-overview__links a:hover,
.course-tree__links a:hover {
    background: rgba(229, 57, 53, .08);
    color: var(--brand);
}

.courses-structure__head {
    max-width: 48rem;
    margin-bottom: 2rem;
}

.courses-structure__title {
    font-size: var(--fs-h2);
}

.course-detail-list {
    display: grid;
    gap: clamp(1.5rem, 1rem + 2vw, 2.5rem);
}

.course-detail {
    display: grid;
    grid-template-columns: minmax(280px, .8fr) minmax(0, 1.35fr);
    gap: clamp(1.25rem, 1rem + 1.5vw, 2rem);
    padding: clamp(1.25rem, 1rem + 1.6vw, 2rem);
    border-radius: var(--r-lg);
    background: var(--white);
    border: 1px solid var(--line);
    box-shadow: var(--shadow-xs);
    scroll-margin-top: 120px;
}

.course-detail__summary {
    align-self: start;
}

.course-detail__kicker {
    margin: 1rem 0 .35rem;
    color: var(--brand);
    font-size: .82rem;
    font-weight: 700;
}

.course-detail__title {
    font-size: clamp(1.35rem, 1.1rem + .9vw, 1.8rem);
}

.course-detail__lead {
    margin-bottom: 1.2rem;
}

.course-detail__meta-grid {
    display: grid;
    gap: .75rem;
    margin-bottom: 1.25rem;
}

.course-detail__meta-grid div {
    padding: .85rem 1rem;
    border-radius: var(--r-sm);
    background: var(--surface-soft);
    border: 1px solid var(--line);
}

.course-detail__meta-grid span {
    display: block;
    margin-bottom: .15rem;
    color: var(--muted);
    font-size: .75rem;
    font-weight: 600;
}

.course-detail__meta-grid strong {
    display: block;
    color: var(--ink);
    font-size: .9rem;
    line-height: 1.45;
}

.course-detail__actions {
    display: flex;
    flex-wrap: wrap;
    gap: .75rem;
}

.course-detail__content {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 1rem;
}

.course-detail__block {
    padding: 1.1rem;
    border-radius: var(--r-md);
    background: var(--surface-soft);
    border: 1px solid var(--line);
}

.course-detail__block--wide {
    grid-column: 1 / -1;
}

.course-detail__block--focus {
    background: linear-gradient(135deg, rgba(229, 57, 53, .08), rgba(255, 152, 0, .08));
    border-color: rgba(229, 57, 53, .18);
}

.course-detail__block h4 {
    margin-bottom: .8rem;
    font-size: 1rem;
}

.course-detail__block ul {
    display: grid;
    gap: .55rem;
}

.course-detail__block li {
    position: relative;
    padding-left: 1.05rem;
    color: var(--ink-70);
    font-size: .88rem;
    line-height: 1.55;
}

.course-detail__block li::before {
    content: '';
    position: absolute;
    top: .65em;
    left: 0;
    width: 6px;
    height: 6px;
    border-radius: 50%;
    background: var(--brand);
}

/* 12. FEATURE CARDS ======================================================== */
.why {
    position: relative;
    overflow: hidden;
}

.why__blob {
    position: absolute;
    top: 12%;
    right: -160px;
    width: 420px;
    height: 420px;
    border-radius: 50%;
    background: radial-gradient(circle, rgba(255, 152, 0, .16), transparent 68%);
    filter: blur(50px);
    z-index: -1;
}

.feature-card {
    position: relative;
    height: 100%;
    padding: 2rem 1.75rem;
    border-radius: var(--r-lg);
    background: var(--white);
    border: 1px solid var(--line);
    box-shadow: var(--shadow-xs);
    overflow: hidden;
    transition: transform var(--t) var(--ease), box-shadow var(--t) var(--ease), border-color var(--t) var(--ease);
}

.feature-card::before {
    content: '';
    position: absolute;
    inset-inline: 0;
    top: 0;
    height: 4px;
    background: var(--grad-brand);
    transform: scaleX(0);
    transform-origin: left;
    transition: transform var(--t) var(--ease);
}

.feature-card:hover {
    transform: translateY(-10px);
    border-color: transparent;
    box-shadow: var(--shadow-lg);
}

.feature-card:hover::before {
    transform: scaleX(1);
}

.feature-card__icon {
    position: relative;
    display: grid;
    place-items: center;
    width: 66px;
    height: 66px;
    margin-bottom: 1.35rem;
    border-radius: 20px;
    background: var(--grad-brand-soft);
    color: var(--brand);
    font-size: 1.55rem;
    transition: background var(--t) var(--ease), color var(--t) var(--ease), transform var(--t) var(--ease);
}

.feature-card:hover .feature-card__icon {
    background: var(--grad-brand);
    color: var(--white);
    transform: rotate(-6deg) scale(1.06);
}

.feature-card__title {
    font-size: 1.14rem;
    margin-bottom: .55rem;
}

.feature-card__text {
    margin: 0;
    font-size: .9rem;
    color: var(--muted);
}

.feature-card__arrow {
    position: absolute;
    right: 1.5rem;
    bottom: 1.35rem;
    width: 34px;
    height: 34px;
    display: grid;
    place-items: center;
    border-radius: 50%;
    background: var(--surface-soft);
    color: var(--brand);
    font-size: .78rem;
    opacity: 0;
    transform: translateX(-8px);
    transition: opacity var(--t) var(--ease), transform var(--t) var(--ease);
}

.feature-card:hover .feature-card__arrow {
    opacity: 1;
    transform: translateX(0);
}

/* 13. FACULTY CARDS ======================================================== */
.faculty-card {
    height: 100%;
    border-radius: var(--r-lg);
    background: var(--white);
    border: 1px solid var(--line);
    box-shadow: var(--shadow-xs);
    overflow: hidden;
    transition: transform var(--t) var(--ease), box-shadow var(--t) var(--ease);
}

.faculty-card:hover {
    transform: translateY(-8px);
    box-shadow: var(--shadow-lg);
}

.faculty-card__media {
    position: relative;
    background: var(--grad-brand-soft);
    overflow: hidden;
}

.faculty-card__media .media__img {
    transition: transform var(--t-slow) var(--ease);
}

.faculty-card:hover .faculty-card__media .media__img {
    transform: scale(1.05);
}

.faculty-card__social {
    position: absolute;
    left: 50%;
    bottom: 1rem;
    transform: translate(-50%, 130%);
    display: flex;
    gap: .4rem;
    padding: .4rem;
    border-radius: var(--r-pill);
    background: rgba(255, 255, 255, .95);
    backdrop-filter: blur(8px);
    box-shadow: var(--shadow-md);
    transition: transform var(--t) var(--ease-out);
}

.faculty-card:hover .faculty-card__social,
.faculty-card:focus-within .faculty-card__social {
    transform: translate(-50%, 0);
}

.faculty-card__social a {
    width: 34px;
    height: 34px;
    display: grid;
    place-items: center;
    border-radius: 50%;
    background: var(--surface-soft);
    color: var(--ink-70);
    font-size: .82rem;
}

.faculty-card__social a:hover {
    background: var(--grad-brand);
    color: var(--white);
}

.faculty-card__body {
    padding: 1.3rem 1.35rem 1.5rem;
    text-align: center;
}

.faculty-card__name {
    font-size: 1.08rem;
    margin-bottom: .2rem;
}

.faculty-card__role {
    margin-bottom: .8rem;
    font-size: .84rem;
    font-weight: 600;
    color: var(--brand);
}

.faculty-card__meta {
    display: grid;
    gap: .35rem;
    padding-top: .85rem;
    border-top: 1px dashed var(--line);
    font-size: .82rem;
    color: var(--muted);
}

.faculty-card__meta i {
    color: var(--accent-dark);
    margin-right: .35rem;
}

/* 14. SUCCESS TIMELINE ===================================================== */
.success {
    position: relative;
    overflow: hidden;
}

.success__blob {
    position: absolute;
    border-radius: 50%;
    filter: blur(60px);
    z-index: -1;
}

.success__blob--one {
    width: 340px;
    height: 340px;
    top: 10%;
    left: -140px;
    background: radial-gradient(circle, rgba(229, 57, 53, .14), transparent 70%);
}

.success__blob--two {
    width: 380px;
    height: 380px;
    bottom: 5%;
    right: -150px;
    background: radial-gradient(circle, rgba(255, 152, 0, .16), transparent 70%);
}

.timeline {
    position: relative;
    max-width: 980px;
    margin-inline: auto;
    padding-block: 1rem;
}

.timeline::before {
    content: '';
    position: absolute;
    left: 50%;
    top: 0;
    bottom: 0;
    width: 3px;
    margin-left: -1.5px;
    border-radius: 3px;
    background: linear-gradient(180deg, transparent, rgba(229, 57, 53, .3) 12%, rgba(255, 152, 0, .3) 88%, transparent);
}

.timeline__item {
    position: relative;
    width: 50%;
    padding-right: 3.5rem;
    margin-bottom: 2.25rem;
}

.timeline__item:nth-child(even) {
    margin-left: 50%;
    padding-right: 0;
    padding-left: 3.5rem;
}

.timeline__marker {
    position: absolute;
    top: 1.6rem;
    right: -25px;
    width: 50px;
    height: 50px;
    display: grid;
    place-items: center;
    border-radius: 50%;
    background: var(--white);
    border: 3px solid var(--white);
    box-shadow: var(--shadow-md);
    color: var(--brand);
    font-size: 1.05rem;
    z-index: 2;
}

.timeline__item:nth-child(even) .timeline__marker {
    right: auto;
    left: -25px;
    color: var(--accent-dark);
}

.timeline__card {
    position: relative;
    padding: 1.6rem 1.75rem;
    border-radius: var(--r-lg);
    background: var(--white);
    border: 1px solid var(--line);
    box-shadow: var(--shadow-sm);
    transition: transform var(--t) var(--ease), box-shadow var(--t) var(--ease);
}

.timeline__card:hover {
    transform: translateY(-5px);
    box-shadow: var(--shadow-lg);
}

.timeline__year {
    display: inline-block;
    margin-bottom: .55rem;
    padding: .22rem .8rem;
    border-radius: var(--r-pill);
    background: var(--grad-brand);
    color: var(--white);
    font-size: .74rem;
    font-weight: 700;
    letter-spacing: .06em;
}

.timeline__title {
    font-size: 1.12rem;
    margin-bottom: .45rem;
}

.timeline__text {
    margin: 0 0 .9rem;
    font-size: .9rem;
    color: var(--muted);
}

.timeline__tags {
    display: flex;
    flex-wrap: wrap;
    gap: .4rem;
}

.timeline__tags li {
    padding: .25rem .7rem;
    border-radius: var(--r-pill);
    background: var(--surface-soft);
    border: 1px solid var(--line);
    font-size: .74rem;
    font-weight: 500;
    color: var(--ink-70);
}

/* 15. TESTIMONIALS ========================================================= */
.testimonials__slider {
    /* Swiper needs the track clipped — `overflow: visible` here would let the
       slide row push the whole document sideways on small screens. */
    padding: 1rem .5rem 3.25rem;
    overflow: hidden;
    -webkit-mask-image: linear-gradient(90deg, transparent, #000 4%, #000 96%, transparent);
    mask-image: linear-gradient(90deg, transparent, #000 4%, #000 96%, transparent);
}

.testimonials .swiper-slide {
    height: auto;
}

.testimonial-card {
    position: relative;
    height: 100%;
    padding: 2rem 1.85rem;
    border-radius: var(--r-lg);
    background: var(--white);
    border: 1px solid var(--line);
    box-shadow: var(--shadow-xs);
    transition: transform var(--t) var(--ease), box-shadow var(--t) var(--ease);
}

.swiper-slide-active .testimonial-card {
    box-shadow: var(--shadow-md);
}

.testimonial-card:hover {
    transform: translateY(-6px);
    box-shadow: var(--shadow-lg);
}

.testimonial-card__quote {
    position: absolute;
    top: 1.4rem;
    right: 1.6rem;
    font-size: 2.4rem;
    line-height: 1;
    color: rgba(229, 57, 53, .1);
}

.testimonial-card__rating {
    margin-bottom: .9rem;
}

.testimonial-card__text {
    margin: 0 0 1.5rem;
    font-size: .93rem;
    color: var(--ink-70);
    quotes: none;
}

.testimonial-card__author {
    display: flex;
    align-items: center;
    gap: .85rem;
    padding-top: 1.1rem;
    border-top: 1px dashed var(--line);
}

.testimonial-card__avatar {
    width: 52px;
    min-width: 52px;
    border-radius: 50%;
    overflow: hidden;
    border: 2px solid rgba(229, 57, 53, .18);
}

.testimonial-card__name {
    margin: 0;
    font-weight: 600;
    color: var(--ink);
    line-height: 1.3;
}

.testimonial-card__course {
    margin: 0;
    font-size: .8rem;
    color: var(--brand);
}

.testimonials__nav {
    display: flex;
    justify-content: center;
    gap: .6rem;
    margin-top: .5rem;
}

.testimonials__arrow {
    width: 46px;
    height: 46px;
    display: grid;
    place-items: center;
    border: 1px solid var(--line);
    border-radius: 50%;
    background: var(--white);
    color: var(--ink);
    box-shadow: var(--shadow-xs);
    transition: all var(--t) var(--ease);
}

.testimonials__arrow:hover {
    background: var(--grad-brand);
    border-color: transparent;
    color: var(--white);
    transform: translateY(-3px);
    box-shadow: var(--shadow-brand);
}

.swiper-pagination {
    position: static !important;
    margin-top: 1.25rem;
}

.swiper-pagination-bullet {
    width: 9px;
    height: 9px;
    background: rgba(17, 17, 17, .2);
    opacity: 1;
    transition: width var(--t) var(--ease), background var(--t) var(--ease);
}

.swiper-pagination-bullet-active {
    width: 28px;
    border-radius: var(--r-pill);
    background: var(--grad-brand);
}

/* 16. GALLERY & LIGHTBOX =================================================== */
.gallery__grid {
    display: grid;
    grid-template-columns: repeat(4, minmax(0, 1fr));
    grid-auto-rows: 190px;
    gap: 1rem;
}

.gallery__item {
    position: relative;
    display: block;
    height: 100%;
    border-radius: var(--r-md);
    overflow: hidden;
    background: var(--surface-soft);
    box-shadow: var(--shadow-xs);
}

/* Editorial mosaic: two features break the rhythm */
.gallery__item--1 {
    grid-column: span 2;
    grid-row: span 2;
}

.gallery__item--6 {
    grid-column: span 2;
}

.gallery__image {
    width: 100%;
    height: 100%;
    object-fit: cover;
    transition: transform var(--t-slow) var(--ease);
}

.gallery__item:hover .gallery__image {
    transform: scale(1.08);
}

.gallery__overlay {
    position: absolute;
    inset: 0;
    display: flex;
    flex-direction: column;
    justify-content: flex-end;
    padding: 1.1rem;
    background: linear-gradient(to top, rgba(17, 17, 17, .82) 0%, rgba(17, 17, 17, .18) 55%, transparent 100%);
    opacity: 0;
    transition: opacity var(--t) var(--ease);
}

.gallery__item:hover .gallery__overlay,
.gallery__item:focus-visible .gallery__overlay {
    opacity: 1;
}

.gallery__zoom {
    position: absolute;
    top: 1rem;
    right: 1rem;
    width: 38px;
    height: 38px;
    display: grid;
    place-items: center;
    border-radius: 50%;
    background: rgba(255, 255, 255, .92);
    color: var(--brand);
    font-size: .85rem;
    transform: scale(.6);
    transition: transform var(--t) var(--ease-out);
}

.gallery__item:hover .gallery__zoom {
    transform: scale(1);
}

.gallery__caption {
    color: var(--white);
    transform: translateY(10px);
    transition: transform var(--t) var(--ease-out);
}

.gallery__item:hover .gallery__caption {
    transform: translateY(0);
}

.gallery__caption strong {
    display: block;
    font-size: 1rem;
}

.gallery__caption small {
    font-size: .76rem;
    opacity: .8;
}

.gallery__item--flat {
    height: 260px;
}

/* Lightbox */
.lightbox {
    position: fixed;
    inset: 0;
    z-index: 2500;
    display: grid;
    grid-template-columns: auto 1fr auto;
    align-items: center;
    gap: 1rem;
    padding: clamp(1rem, 4vw, 3rem);
    background: rgba(10, 10, 12, .93);
    backdrop-filter: blur(6px);
    opacity: 0;
    transition: opacity var(--t) var(--ease);
}

.lightbox.is-open {
    opacity: 1;
}

.lightbox__figure {
    display: grid;
    justify-items: center;
    gap: .9rem;
    max-height: 100%;
}

.lightbox__image {
    max-width: 100%;
    max-height: 78vh;
    border-radius: var(--r-md);
    box-shadow: 0 30px 80px rgba(0, 0, 0, .5);
    animation: lightbox-in .4s var(--ease-out);
}

@keyframes lightbox-in {
    from {
        opacity: 0;
        transform: scale(.94);
    }
}

.lightbox__caption {
    color: rgba(255, 255, 255, .82);
    font-size: .92rem;
}

.lightbox__close,
.lightbox__nav {
    width: 50px;
    height: 50px;
    display: grid;
    place-items: center;
    border: 1px solid rgba(255, 255, 255, .22);
    border-radius: 50%;
    background: rgba(255, 255, 255, .08);
    color: var(--white);
    transition: all var(--t) var(--ease);
}

.lightbox__close {
    position: absolute;
    top: clamp(1rem, 3vw, 2rem);
    right: clamp(1rem, 3vw, 2rem);
}

.lightbox__close:hover,
.lightbox__nav:hover {
    background: var(--brand);
    border-color: transparent;
    transform: scale(1.08);
}

/* 17. ADMISSION STEPS ====================================================== */
.admission {
    position: relative;
}

.admission__blob {
    position: absolute;
    border-radius: 50%;
    filter: blur(80px);
}

.admission__blob--one {
    width: 420px;
    height: 420px;
    top: -120px;
    left: -100px;
    background: radial-gradient(circle, rgba(229, 57, 53, .32), transparent 70%);
}

.admission__blob--two {
    width: 380px;
    height: 380px;
    bottom: -140px;
    right: -80px;
    background: radial-gradient(circle, rgba(255, 152, 0, .24), transparent 70%);
}

.steps {
    display: grid;
    grid-template-columns: repeat(4, minmax(0, 1fr));
    gap: 1.25rem;
}

.steps__item {
    position: relative;
}

.steps__card {
    position: relative;
    height: 100%;
    padding: 2.1rem 1.5rem 1.75rem;
    border-radius: var(--r-lg);
    background: rgba(255, 255, 255, .05);
    border: 1px solid rgba(255, 255, 255, .1);
    backdrop-filter: blur(8px);
    text-align: center;
    overflow: hidden;
    transition: transform var(--t) var(--ease), background var(--t) var(--ease), border-color var(--t) var(--ease);
}

.steps__card:hover {
    transform: translateY(-8px);
    background: rgba(255, 255, 255, .09);
    border-color: rgba(229, 57, 53, .4);
}

.steps__number {
    position: absolute;
    top: .35rem;
    right: 1rem;
    font-size: 3.4rem;
    font-weight: 800;
    line-height: 1;
    color: rgba(255, 255, 255, .07);
}

.steps__icon {
    display: inline-grid;
    place-items: center;
    width: 64px;
    height: 64px;
    margin-bottom: 1.1rem;
    border-radius: 20px;
    background: var(--grad-brand);
    color: var(--white);
    font-size: 1.4rem;
    box-shadow: var(--shadow-brand);
}

.steps__title {
    font-size: 1.1rem;
    margin-bottom: .45rem;
}

.steps__text {
    margin: 0;
    font-size: .87rem;
    color: rgba(255, 255, 255, .6);
}

.steps__connector {
    position: absolute;
    top: 50%;
    right: -1.05rem;
    width: 2rem;
    display: grid;
    place-items: center;
    color: rgba(255, 255, 255, .28);
    font-size: .8rem;
    animation: nudge 1.8s ease-in-out infinite;
}

@keyframes nudge {

    0%,
    100% {
        transform: translateX(0);
    }

    50% {
        transform: translateX(5px);
    }
}

.admission__cta {
    display: flex;
    align-items: center;
    justify-content: space-between;
    flex-wrap: wrap;
    gap: 1.5rem;
    margin-top: clamp(2.5rem, 1.5rem + 2vw, 3.5rem);
    padding: clamp(1.6rem, 1rem + 2vw, 2.6rem);
    border-radius: var(--r-xl);
    background: rgba(255, 255, 255, .06);
    border: 1px solid rgba(255, 255, 255, .12);
}

.admission__cta-text h3 {
    font-size: clamp(1.2rem, 1rem + .8vw, 1.6rem);
    margin-bottom: .35rem;
}

.admission__cta-text p {
    margin: 0;
    color: rgba(255, 255, 255, .62);
    font-size: .93rem;
}

.admission__cta-actions {
    display: flex;
    flex-wrap: wrap;
    gap: .75rem;
}

/* 18. FAQ ================================================================== */
.faq__accordion {
    --bs-accordion-border-color: transparent;
    --bs-accordion-bg: transparent;
    --bs-accordion-btn-focus-box-shadow: none;
    display: grid;
    gap: .85rem;
}

.faq__item {
    border: 1px solid var(--line) !important;
    border-radius: var(--r-md) !important;
    background: var(--white);
    box-shadow: var(--shadow-xs);
    overflow: hidden;
    transition: box-shadow var(--t) var(--ease), border-color var(--t) var(--ease);
}

.faq__item:has(.accordion-button:not(.collapsed)) {
    border-color: rgba(229, 57, 53, .28) !important;
    box-shadow: var(--shadow-md);
}

.faq__accordion .accordion-button {
    padding: 1.15rem 1.35rem;
    font-family: var(--font);
    font-size: 1rem;
    font-weight: 600;
    color: var(--ink);
    background: transparent;
    box-shadow: none !important;
}

.faq__accordion .accordion-button:not(.collapsed) {
    color: var(--brand);
    background: transparent;
}

.faq__accordion .accordion-button::after {
    width: 34px;
    height: 34px;
    flex-shrink: 0;
    background-image: none;
    background-color: var(--surface-soft);
    border-radius: 50%;
    display: grid;
    place-items: center;
    content: '\f078';
    font-family: 'Font Awesome 6 Free';
    font-weight: 900;
    font-size: .72rem;
    color: var(--ink-70);
    text-align: center;
    line-height: 34px;
    transition: transform var(--t) var(--ease), background-color var(--t) var(--ease), color var(--t) var(--ease);
}

.faq__accordion .accordion-button:not(.collapsed)::after {
    transform: rotate(-180deg);
    background-color: var(--brand);
    color: var(--white);
}

.faq__accordion .accordion-body {
    padding: 0 1.35rem 1.3rem;
    font-size: .93rem;
    color: var(--muted);
}

.faq__help {
    display: flex;
    align-items: center;
    gap: 1rem;
    margin-top: 1.5rem;
    padding: 1.25rem 1.4rem;
    border-radius: var(--r-md);
    background: var(--white);
    border: 1px solid var(--line);
    box-shadow: var(--shadow-xs);
}

.faq__help-icon {
    width: 52px;
    height: 52px;
    display: grid;
    place-items: center;
    border-radius: 16px;
    background: var(--grad-brand-soft);
    color: var(--brand);
    font-size: 1.25rem;
}

.faq__help-label {
    margin: 0;
    font-size: .8rem;
    color: var(--muted);
}

.faq__help-link {
    font-size: 1.1rem;
    font-weight: 700;
    color: var(--ink);
}

.faq__help-link:hover {
    color: var(--brand);
}

/* 19. CONTACT & FORMS ====================================================== */
.contact__cards {
    margin-bottom: 2.5rem;
}

.contact__card {
    height: 100%;
    padding: 1.75rem;
    border-radius: var(--r-lg);
    background: var(--white);
    border: 1px solid var(--line);
    box-shadow: var(--shadow-xs);
    transition: transform var(--t) var(--ease), box-shadow var(--t) var(--ease);
}

.contact__card:hover {
    transform: translateY(-6px);
    box-shadow: var(--shadow-md);
}

.contact__card h3 {
    font-size: 1.05rem;
    margin-bottom: .4rem;
}

.contact__card p {
    margin: 0;
    font-size: .9rem;
    color: var(--muted);
}

.contact__card a {
    color: var(--muted);
}

.contact__card a:hover {
    color: var(--brand);
}

.contact__card-icon {
    display: grid;
    place-items: center;
    width: 54px;
    height: 54px;
    margin-bottom: 1.1rem;
    border-radius: 18px;
    background: var(--grad-brand);
    color: var(--white);
    font-size: 1.2rem;
    box-shadow: var(--shadow-brand);
}

.contact__map {
    height: 100%;
    min-height: 420px;
    border-radius: var(--r-lg);
    overflow: hidden;
    border: 1px solid var(--line);
    box-shadow: var(--shadow-sm);
    filter: grayscale(.25);
    transition: filter var(--t) var(--ease);
}

.contact__map:hover {
    filter: grayscale(0);
}

.contact__map iframe {
    width: 100%;
    height: 100%;
    min-height: 420px;
}

.contact__form-wrap {
    padding: clamp(1.5rem, 1rem + 2vw, 2.5rem);
    border-radius: var(--r-lg);
    background: var(--white);
    border: 1px solid var(--line);
    box-shadow: var(--shadow-sm);
}

.contact__form-title {
    font-size: 1.4rem;
    margin-bottom: .3rem;
}

.contact__form-text {
    font-size: .86rem;
    color: var(--muted);
    margin-bottom: 1.5rem;
}

.contact-form__honeypot {
    position: absolute;
    left: -9999px;
    width: 1px;
    height: 1px;
    overflow: hidden;
}

.form-label {
    margin-bottom: .4rem;
    font-size: .85rem;
    font-weight: 600;
    color: var(--ink);
}

.required {
    color: var(--brand);
}

.input-icon {
    position: relative;
}

.input-icon i {
    position: absolute;
    left: 1rem;
    top: 50%;
    transform: translateY(-50%);
    color: var(--muted-soft);
    font-size: .88rem;
    pointer-events: none;
    transition: color var(--t-fast) var(--ease);
}

.input-icon:focus-within i {
    color: var(--brand);
}

.form-control {
    padding: .82rem 1rem;
    font-family: var(--font);
    font-size: .93rem;
    color: var(--ink);
    background: var(--surface-soft);
    border: 1.5px solid transparent;
    border-radius: var(--r-sm);
    transition: border-color var(--t-fast) var(--ease), background var(--t-fast) var(--ease),
        box-shadow var(--t-fast) var(--ease);
}

.input-icon .form-control {
    padding-left: 2.7rem;
}

.form-control::placeholder {
    color: var(--muted-soft);
}

.form-control:focus {
    background: var(--white);
    border-color: var(--brand);
    box-shadow: 0 0 0 4px rgba(229, 57, 53, .1);
}

.form-control.is-invalid {
    border-color: var(--brand);
    background-image: none;
    background-color: rgba(229, 57, 53, .04);
}

textarea.form-control {
    min-height: 140px;
    resize: vertical;
}

.invalid-note {
    margin: .35rem 0 0;
    font-size: .8rem;
    color: var(--brand-dark);
}

.contact-form__submit {
    margin-top: .5rem;
}

.contact-form__note {
    margin: .9rem 0 0;
    font-size: .78rem;
    color: var(--muted-soft);
}

.contact-form__note i {
    color: var(--success);
    margin-right: .3rem;
}

/* Alerts */
.alert-brand-success,
.alert-brand-error {
    display: flex;
    align-items: flex-start;
    gap: .7rem;
    padding: .95rem 1.15rem;
    margin-bottom: 1.35rem;
    border-radius: var(--r-sm);
    font-size: .9rem;
    border: 1px solid transparent;
    animation: slide-in .4s var(--ease-out);
}

.alert-brand-success {
    background: rgba(46, 125, 50, .08);
    border-color: rgba(46, 125, 50, .2);
    color: #1e5c22;
}

.alert-brand-error {
    background: rgba(229, 57, 53, .07);
    border-color: rgba(229, 57, 53, .22);
    color: var(--brand-dark);
}

@keyframes slide-in {
    from {
        opacity: 0;
        transform: translateY(-8px);
    }
}

/* 20. FOOTER =============================================================== */
.site-footer {
    position: relative;
    padding-top: clamp(3.5rem, 2rem + 4vw, 5.5rem);
    background: var(--grad-dark);
    color: rgba(255, 255, 255, .62);
    overflow: hidden;
}

.site-footer__glow {
    position: absolute;
    top: -180px;
    left: 50%;
    width: 700px;
    height: 400px;
    transform: translateX(-50%);
    background: radial-gradient(ellipse, rgba(229, 57, 53, .22), transparent 65%);
    filter: blur(60px);
    pointer-events: none;
}

.site-footer__main {
    position: relative;
    padding-bottom: 3rem;
}

.site-footer__brand {
    display: inline-block;
    margin-bottom: 1.25rem;
}

.site-footer__brand img {
    height: 66px;
    width: auto;
}

.site-footer__about {
    font-size: .9rem;
    margin-bottom: 1.35rem;
    max-width: 24rem;
}

.site-footer__social {
    display: flex;
    gap: .5rem;
}

.site-footer__social a {
    width: 40px;
    height: 40px;
    display: grid;
    place-items: center;
    border-radius: 50%;
    background: rgba(255, 255, 255, .07);
    color: rgba(255, 255, 255, .8);
    transition: all var(--t) var(--ease);
}

.site-footer__social a:hover {
    background: var(--grad-brand);
    color: var(--white);
    transform: translateY(-4px);
}

.site-footer__title {
    position: relative;
    margin-bottom: 1.4rem;
    padding-bottom: .7rem;
    font-size: 1.06rem;
    color: var(--white);
}

.site-footer__title::after {
    content: '';
    position: absolute;
    left: 0;
    bottom: 0;
    width: 34px;
    height: 3px;
    border-radius: 3px;
    background: var(--grad-brand);
}

.site-footer__subtitle {
    margin: 1.6rem 0 .8rem;
    font-size: .95rem;
    color: var(--white);
}

.site-footer__links li+li {
    margin-top: .55rem;
}

.site-footer__links a {
    position: relative;
    display: inline-block;
    padding-left: 0;
    font-size: .9rem;
    color: rgba(255, 255, 255, .62);
    transition: color var(--t-fast) var(--ease), padding-left var(--t-fast) var(--ease);
}

.site-footer__links a::before {
    content: '\f105';
    font-family: 'Font Awesome 6 Free';
    font-weight: 900;
    position: absolute;
    left: -12px;
    opacity: 0;
    color: var(--brand);
    transition: opacity var(--t-fast) var(--ease);
}

.site-footer__links a:hover {
    color: var(--white);
    padding-left: 12px;
}

.site-footer__links a:hover::before {
    opacity: 1;
    left: 0;
}

.site-footer__more {
    color: var(--accent) !important;
    font-weight: 600;
}

.site-footer__contact li {
    display: flex;
    gap: .75rem;
    font-size: .9rem;
    line-height: 1.6;
}

.site-footer__contact li+li {
    margin-top: .8rem;
}

.site-footer__contact i {
    margin-top: .35rem;
    color: var(--brand);
}

.site-footer__contact a {
    color: rgba(255, 255, 255, .62);
}

.site-footer__contact a:hover {
    color: var(--white);
}

.site-footer__hours li {
    display: flex;
    justify-content: space-between;
    gap: 1rem;
    padding: .45rem 0;
    border-bottom: 1px dashed rgba(255, 255, 255, .1);
    font-size: .84rem;
}

.site-footer__hours li span:last-child {
    color: var(--white);
    font-weight: 500;
    white-space: nowrap;
}

/* Newsletter */
.site-footer__newsletter {
    position: relative;
    padding: clamp(1.6rem, 1rem + 2vw, 2.5rem);
    border-radius: var(--r-xl);
    background: rgba(255, 255, 255, .05);
    border: 1px solid rgba(255, 255, 255, .1);
}

.site-footer__newsletter-title {
    font-size: clamp(1.15rem, 1rem + .6vw, 1.5rem);
    margin-bottom: .3rem;
}

.site-footer__newsletter p {
    margin: 0;
    font-size: .9rem;
}

.newsletter-form__group {
    position: relative;
    display: flex;
    align-items: center;
    gap: .5rem;
    padding: .4rem .4rem .4rem 1rem;
    border-radius: var(--r-pill);
    background: rgba(255, 255, 255, .09);
    border: 1px solid rgba(255, 255, 255, .14);
    transition: border-color var(--t) var(--ease);
}

.newsletter-form__group:focus-within {
    border-color: rgba(229, 57, 53, .6);
}

.newsletter-form__group>i {
    color: rgba(255, 255, 255, .5);
}

.newsletter-form__input {
    flex: 1;
    min-width: 0;
    padding: .6rem .3rem;
    border: 0;
    background: transparent;
    color: var(--white);
    font-family: var(--font);
    font-size: .92rem;
}

.newsletter-form__input::placeholder {
    color: rgba(255, 255, 255, .45);
}

.newsletter-form__input:focus {
    outline: none;
}

.newsletter-form__msg {
    margin: .7rem 0 0;
    font-size: .84rem;
}

.newsletter-form__msg.is-success {
    color: #8fe39a;
}

.newsletter-form__msg.is-error {
    color: #ff9e9c;
}

.site-footer__bottom {
    display: flex;
    align-items: center;
    justify-content: space-between;
    flex-wrap: wrap;
    gap: 1rem;
    margin-top: 3rem;
    padding-block: 1.5rem;
    border-top: 1px solid rgba(255, 255, 255, .09);
    font-size: .85rem;
}

.site-footer__bottom strong {
    color: var(--white);
}

.site-footer__legal {
    display: flex;
    gap: 1.5rem;
}

.site-footer__legal a {
    color: rgba(255, 255, 255, .6);
    font-size: .85rem;
}

.site-footer__legal a:hover {
    color: var(--white);
}

/* 21. INNER PAGES ========================================================== */
.page-hero {
    position: relative;
    padding-top: clamp(140px, 11vw, 195px);
    padding-bottom: clamp(3rem, 2rem + 3vw, 5rem);
    background: linear-gradient(170deg, #fff6f1 0%, #ffffff 70%);
    overflow: hidden;
    text-align: center;
}

.page-hero__blob {
    position: absolute;
    border-radius: 50%;
    filter: blur(70px);
}

.page-hero__blob--one {
    width: 380px;
    height: 380px;
    top: -160px;
    left: -100px;
    background: radial-gradient(circle, rgba(229, 57, 53, .22), transparent 70%);
}

.page-hero__blob--two {
    width: 340px;
    height: 340px;
    bottom: -180px;
    right: -80px;
    background: radial-gradient(circle, rgba(255, 152, 0, .22), transparent 70%);
}

.page-hero__inner {
    position: relative;
    max-width: 44rem;
    margin-inline: auto;
}

.page-hero__title {
    font-size: var(--fs-h1);
    margin-bottom: .75rem;
}

.page-hero__subtitle {
    color: var(--muted);
    margin-bottom: 1.35rem;
}

.page-hero__breadcrumb {
    display: flex;
    justify-content: center;
    flex-wrap: wrap;
    gap: .5rem;
    font-size: .86rem;
    color: var(--muted);
}

.page-hero__breadcrumb li+li::before {
    content: '\f054';
    font-family: 'Font Awesome 6 Free';
    font-weight: 900;
    font-size: .58rem;
    margin-right: .55rem;
    color: var(--muted-soft);
    vertical-align: middle;
}

.page-hero__breadcrumb a {
    color: var(--ink-70);
}

.page-hero__breadcrumb a:hover {
    color: var(--brand);
}

.page-hero__breadcrumb li[aria-current] {
    color: var(--brand);
    font-weight: 500;
}

/* Filters */
.filter {
    display: flex;
    flex-wrap: wrap;
    justify-content: center;
    gap: .55rem;
    margin-bottom: 2.5rem;
}

.filter__btn {
    padding: .55rem 1.25rem;
    border: 1px solid var(--line);
    border-radius: var(--r-pill);
    background: var(--white);
    font-family: var(--font);
    font-size: .88rem;
    font-weight: 500;
    color: var(--ink-70);
    transition: all var(--t) var(--ease);
}

.filter__btn:hover {
    color: var(--brand);
    border-color: rgba(229, 57, 53, .35);
}

.filter__btn.is-active {
    background: var(--grad-brand);
    border-color: transparent;
    color: var(--white);
    box-shadow: var(--shadow-brand);
}

.filter__empty {
    margin-top: 2rem;
    text-align: center;
    color: var(--muted);
}

[data-filter-item].is-hidden {
    display: none;
}

/* Join the team card */
.join-card {
    display: flex;
    align-items: center;
    justify-content: space-between;
    flex-wrap: wrap;
    gap: 1.5rem;
    padding: clamp(1.75rem, 1.2rem + 2vw, 3rem);
    border-radius: var(--r-xl);
    background: var(--grad-brand-soft);
    border: 1px solid rgba(229, 57, 53, .14);
}

.join-card__icon {
    display: grid;
    place-items: center;
    width: 58px;
    height: 58px;
    margin-bottom: 1rem;
    border-radius: 18px;
    background: var(--grad-brand);
    color: var(--white);
    font-size: 1.25rem;
    box-shadow: var(--shadow-brand);
}

.join-card__title {
    font-size: clamp(1.3rem, 1.1rem + .8vw, 1.75rem);
    margin-bottom: .4rem;
}

.join-card__text {
    margin: 0;
    max-width: 38rem;
    color: var(--muted);
}

/* 404 */
.error-page {
    position: relative;
    display: grid;
    place-items: center;
    min-height: 100vh;
    padding-block: clamp(140px, 12vw, 200px) 5rem;
    text-align: center;
    overflow: hidden;
}

.error-page__blob {
    position: absolute;
    border-radius: 50%;
    filter: blur(80px);
}

.error-page__blob--one {
    width: 420px;
    height: 420px;
    top: 5%;
    left: -120px;
    background: radial-gradient(circle, rgba(229, 57, 53, .18), transparent 70%);
}

.error-page__blob--two {
    width: 380px;
    height: 380px;
    bottom: 0;
    right: -110px;
    background: radial-gradient(circle, rgba(255, 152, 0, .2), transparent 70%);
}

.error-page__inner {
    position: relative;
    max-width: 40rem;
    margin-inline: auto;
}

.error-page__code {
    font-size: clamp(6rem, 4rem + 12vw, 12rem);
    font-weight: 800;
    line-height: .9;
    margin: 0;
    background: var(--grad-brand);
    -webkit-background-clip: text;
    background-clip: text;
    color: transparent;
    -webkit-text-fill-color: transparent;
}

.error-page__title {
    font-size: var(--fs-h2);
    margin-bottom: .75rem;
}

.error-page__text {
    color: var(--muted);
    margin-bottom: 2rem;
}

.error-page__actions {
    display: flex;
    justify-content: center;
    flex-wrap: wrap;
    gap: .75rem;
    margin-bottom: 2.5rem;
}

.error-page__links {
    display: flex;
    justify-content: center;
    flex-wrap: wrap;
    gap: 1.5rem;
    padding-top: 1.5rem;
    border-top: 1px solid var(--line);
}

.error-page__links a {
    color: var(--muted);
    font-size: .9rem;
}

.error-page__links a:hover {
    color: var(--brand);
}

/* 22. MEDIA SKELETON & ANIMATIONS ========================================== */
.media {
    position: relative;
    overflow: hidden;
    background: var(--surface-soft);
    aspect-ratio: var(--media-ratio, 4/3);
}

.media__img {
    width: 100%;
    height: 100%;
    object-fit: cover;
    opacity: 1;
    transition: opacity var(--t) var(--ease), transform var(--t-slow) var(--ease);
}

/* Loading skeleton — removed by app.js once the image decodes */
.media.is-loading .media__img {
    opacity: 0;
}

.media.is-loading::after {
    content: '';
    position: absolute;
    inset: 0;
    background: linear-gradient(100deg, #eff1f4 30%, #f8f9fb 50%, #eff1f4 70%);
    background-size: 220% 100%;
    animation: shimmer 1.25s linear infinite;
}

@keyframes shimmer {
    to {
        background-position: -220% 0;
    }
}

.media__caption {
    position: absolute;
    inset-inline: 0;
    bottom: 0;
    padding: .6rem .9rem;
    background: linear-gradient(to top, rgba(17, 17, 17, .8), transparent);
    color: var(--white);
    font-size: .82rem;
}

/* Floating loops */
.float-slow {
    animation: float 6s ease-in-out infinite;
}

.float-medium {
    animation: float 4.5s ease-in-out infinite;
    animation-delay: .4s;
}

.float-fast {
    animation: float 3.6s ease-in-out infinite;
    animation-delay: .8s;
}

@keyframes float {

    0%,
    100% {
        transform: translateY(0);
    }

    50% {
        transform: translateY(-14px);
    }
}

/* Respect the visitor's motion preference */
@media (prefers-reduced-motion: reduce) {

    html {
        scroll-behavior: auto;
    }

    *,
    *::before,
    *::after {
        animation-duration: .01ms !important;
        animation-iteration-count: 1 !important;
        transition-duration: .01ms !important;
        scroll-behavior: auto !important;
    }

    [data-aos] {
        opacity: 1 !important;
        transform: none !important;
    }
}

/* =============================================================================
   NAVIGATION — dropdowns & mega menu
   ========================================================================== */

.site-nav__item--has-children {
    position: relative;
}

.site-nav__caret {
    margin-left: .3rem;
    font-size: .58rem;
    opacity: .6;
    transition: transform var(--t-fast) var(--ease);
}

.site-nav__item--has-children:hover .site-nav__caret,
.site-nav__item--has-children:focus-within .site-nav__caret {
    transform: rotate(180deg);
    opacity: 1;
}

/* Panel */
.site-nav__dropdown {
    position: absolute;
    top: 100%;
    left: 50%;
    z-index: 40;
    min-width: 268px;
    margin-top: .35rem;
    padding: .6rem;
    border-radius: var(--r-md);
    background: var(--white);
    border: 1px solid var(--line);
    box-shadow: var(--shadow-lg);
    opacity: 0;
    visibility: hidden;
    transform: translate(-50%, 10px);
    transition: opacity var(--t) var(--ease), transform var(--t) var(--ease), visibility var(--t) var(--ease);
}

/* A hover bridge, so the pointer can cross the gap without the panel closing */
.site-nav__item--has-children::after {
    content: '';
    position: absolute;
    top: 100%;
    left: 0;
    right: 0;
    height: .5rem;
}

.site-nav__dropdown-link {
    display: flex;
    align-items: flex-start;
    gap: .7rem;
    padding: .6rem .7rem;
    border-radius: var(--r-sm);
    color: var(--ink-70);
    transition: background-color var(--t-fast) var(--ease), color var(--t-fast) var(--ease);
}

.site-nav__dropdown-link strong {
    display: block;
    font-size: .9rem;
    font-weight: 600;
    color: var(--ink);
    line-height: 1.35;
}

.site-nav__dropdown-link small {
    display: block;
    font-size: .76rem;
    color: var(--muted);
}

.site-nav__dropdown-link:hover,
.site-nav__dropdown-link:focus-visible,
.site-nav__dropdown-link.is-active {
    background: rgba(229, 57, 53, .06);
}

.site-nav__dropdown-link:hover strong,
.site-nav__dropdown-link.is-active strong {
    color: var(--brand);
}

.site-nav__dropdown-icon {
    display: grid;
    place-items: center;
    width: 34px;
    height: 34px;
    flex-shrink: 0;
    border-radius: 10px;
    background: var(--grad-brand-soft);
    color: var(--brand);
    font-size: .85rem;
}

/* Mega panel (courses) */
.site-nav__dropdown--mega {
    min-width: min(620px, 92vw);
    padding: 1.1rem;
}

.site-nav__mega-grid {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(220px, 1fr));
    gap: 1.25rem;
}

.site-nav__mega-title {
    margin: 0 0 .6rem;
    padding-bottom: .45rem;
    border-bottom: 1px dashed var(--line);
    font-size: .72rem;
    font-weight: 700;
    letter-spacing: .08em;
    text-transform: uppercase;
    color: var(--brand);
}

.site-nav__mega-link {
    display: flex;
    align-items: center;
    gap: .45rem;
    padding: .38rem .4rem;
    border-radius: var(--r-xs);
    font-size: .86rem;
    color: var(--ink-70);
    transition: background-color var(--t-fast) var(--ease), color var(--t-fast) var(--ease);
}

.site-nav__mega-link i {
    font-size: .62rem;
    color: var(--muted-soft);
    transition: transform var(--t-fast) var(--ease), color var(--t-fast) var(--ease);
}

.site-nav__mega-link:hover {
    background: rgba(229, 57, 53, .06);
    color: var(--brand);
}

.site-nav__mega-link:hover i {
    transform: translateX(2px);
    color: var(--brand);
}

.site-nav__mega-footer {
    display: flex;
    align-items: center;
    justify-content: center;
    gap: .4rem;
    margin-top: 1rem;
    padding-top: .85rem;
    border-top: 1px solid var(--line);
    font-size: .85rem;
    font-weight: 600;
    color: var(--brand);
}

.site-nav__mega-footer i {
    transition: transform var(--t-fast) var(--ease);
}

.site-nav__mega-footer:hover i {
    transform: translateX(4px);
}

/* Open on hover, and on keyboard focus, from the breakpoint where the bar shows */
@media (min-width: 1200px) {

    .site-nav__item--has-children:hover > .site-nav__dropdown,
    .site-nav__item--has-children:focus-within > .site-nav__dropdown {
        opacity: 1;
        visibility: visible;
        transform: translate(-50%, 0);
    }

    /* Keep wide panels inside the viewport near the ends of the bar */
    .site-nav__list > .nav-item:last-child .site-nav__dropdown,
    .site-nav__list > .nav-item:nth-last-child(2) .site-nav__dropdown {
        left: auto;
        right: 0;
        transform: translate(0, 10px);
    }

    .site-nav__list > .nav-item:last-child:hover > .site-nav__dropdown,
    .site-nav__list > .nav-item:last-child:focus-within > .site-nav__dropdown,
    .site-nav__list > .nav-item:nth-last-child(2):hover > .site-nav__dropdown,
    .site-nav__list > .nav-item:nth-last-child(2):focus-within > .site-nav__dropdown {
        transform: translate(0, 0);
    }
}

/* --- Mobile drawer submenus --------------------------------------------- */
.mobile-menu__row {
    display: flex;
    align-items: center;
    border-bottom: 1px solid var(--line);
}

.mobile-menu__row > a {
    flex: 1;
    display: flex;
    align-items: center;
    justify-content: space-between;
    padding: .85rem .25rem;
    border-bottom: 0;
    color: var(--ink);
    font-weight: 500;
}

.mobile-menu__row > a.active {
    color: var(--brand);
}

.mobile-menu__arrow {
    font-size: .7rem;
    color: var(--muted-soft);
    padding-right: .25rem;
}

.mobile-menu__caret {
    width: 40px;
    height: 40px;
    display: grid;
    place-items: center;
    border: 0;
    border-radius: 50%;
    background: var(--surface-soft);
    color: var(--ink-70);
    font-size: .7rem;
    transition: transform var(--t) var(--ease), background-color var(--t-fast) var(--ease);
}

.mobile-menu__caret[aria-expanded="true"] {
    transform: rotate(180deg);
    background: var(--grad-brand-soft);
    color: var(--brand);
}

.mobile-menu__sub {
    display: grid;
    grid-template-rows: 0fr;
    transition: grid-template-rows var(--t) var(--ease);
}

.mobile-menu__sub.is-open {
    grid-template-rows: 1fr;
}

.mobile-menu__sub > ul {
    overflow: hidden;
}

.mobile-menu__sub a {
    display: flex;
    align-items: center;
    gap: .55rem;
    padding: .6rem .25rem .6rem 1rem;
    border-bottom: 1px dashed var(--line);
    font-size: .88rem;
    color: var(--muted);
}

.mobile-menu__sub a.active,
.mobile-menu__sub a:hover {
    color: var(--brand);
}

.mobile-menu__sub a i {
    width: 16px;
    font-size: .75rem;
    color: var(--muted-soft);
}

.mobile-menu__sub-title {
    padding: .7rem .25rem .35rem 1rem;
    font-size: .68rem;
    font-weight: 700;
    letter-spacing: .08em;
    text-transform: uppercase;
    color: var(--brand);
}

.mobile-menu__sub-all {
    font-weight: 600;
    color: var(--brand) !important;
}


/* 23. HOMEPAGE HERO SLIDER ================================================= */
/* -----------------------------------------------------------------------------
   Dynamic hero banner driven by the `sliders` table. Renders as a Swiper
   carousel with several active slides and as a plain banner with one.

   The section keeps a cream strip behind the fixed header, exactly the wash
   the static hero uses, so the transparent navigation stays readable over any
   banner an admin uploads — the header itself is untouched.

   Motion budget: opacity and transform only. Every animation is disabled by
   the prefers-reduced-motion block at the end of this section.
   -------------------------------------------------------------------------- */

.hero-slider {
    /* Dark topbar (46px) + the nav row. --header-h already steps down at the
       1199px breakpoint, so this offset follows it automatically. */
    --hs-top: calc(46px + var(--header-h));
    --hs-ratio: 12 / 5;
    --hs-min: 580px;
    --hs-max: 80vh;
    /* Everything at the foot of the banner is chained to the curved divider:
       the dots clear the curve, and the copy clears the dots. One value to
       change, and no combination of viewport and copy length can collide. */
    --hs-divider-h: clamp(50px, 6vw, 110px);
    --hs-dots-h: 34px;
    --hs-dots-bottom: calc(var(--hs-divider-h) + 18px);
    --hs-pad-bottom: calc(var(--hs-dots-bottom) + var(--hs-dots-h) + 24px);

    position: relative;
    isolation: isolate;
    padding-top: var(--hs-top);
    background: linear-gradient(170deg, #fff7f2 0%, #ffffff 45%, #fff9f4 100%);
}

/* The banner area. Arrows and the autoplay toggle live here rather than
   inside .swiper so Swiper's overflow never clips their focus ring. */
.hero-slider__stage {
    position: relative;
}

.hero-slider__swiper {
    width: 100%;
    /* aspect-ratio reserves the height before the image loads, so the page
       below never jumps (CLS). min/max keep it usable on any screen. */
    aspect-ratio: var(--hs-ratio);
    min-height: var(--hs-min);
    max-height: var(--hs-max);
}

/* One slide: no carousel, no Swiper init — drop the flex track entirely. */
.hero-slider--single .swiper-wrapper {
    display: block;
}

.hero-slider--single .hero-slide {
    width: 100%;
    height: 100%;
}

/* --------------------------------------------------------------- The slide */

.hero-slide {
    /* Overlay tint as an "r, g, b" triplet, and its strength 0–1. The strength
       is written inline per slide from the admin setting. */
    --hs-tint: 10, 10, 12;
    --hs-overlay: .55;
    --hs-angle: 90deg;

    position: relative;
    display: flex;
    align-items: stretch;
    overflow: hidden;
    /* Paint the ink ground first so a slow image never flashes white. */
    background-color: var(--ink);
}

.hero-slide--brand {
    --hs-tint: 122, 18, 16;
}

.hero-slide--light {
    --hs-tint: 255, 251, 247;
}

/* --------------------------------------------------------------- The image */

.hero-slide__media {
    position: absolute;
    /* Wider than the slide so Swiper's parallax shift never exposes an edge. */
    inset: 0 -14%;
    z-index: 0;
    overflow: hidden;
}

.hero-slide__img {
    width: 100%;
    height: 100%;
    /* cover crops rather than squashes, so a 12:5 upload stays undistorted
       whatever ratio the breakpoint asks for. */
    object-fit: cover;
    object-position: center;
    display: block;
    /* Both resting and active scales stay above 1, so the Ken Burns drift can
       never pull the image edge into view. */
    transform: scale(1.06);
}

.hero-slider__swiper .swiper-slide-active .hero-slide__img,
.hero-slider--single .hero-slide__img {
    transform: scale(1.14);
    transition: transform 9s linear;
    will-change: transform;
}

/* ------------------------------------------------------------- The overlay */

.hero-slide__overlay {
    position: absolute;
    inset: 0;
    z-index: 1;
    background: linear-gradient(var(--hs-angle),
            rgba(var(--hs-tint), calc(var(--hs-overlay) * 1.28)) 0%,
            rgba(var(--hs-tint), var(--hs-overlay)) 46%,
            rgba(var(--hs-tint), calc(var(--hs-overlay) * .38)) 100%);
}

.hero-slide--right {
    --hs-angle: 270deg;
}

.hero-slide--center .hero-slide__overlay {
    background: radial-gradient(ellipse 82% 92% at 50% 50%,
            rgba(var(--hs-tint), calc(var(--hs-overlay) * 1.12)) 0%,
            rgba(var(--hs-tint), calc(var(--hs-overlay) * .72)) 100%);
}

/* Keep the dots and the curved divider legible over a bright banner. */
.hero-slide--dark .hero-slide__overlay::after,
.hero-slide--brand .hero-slide__overlay::after {
    content: '';
    position: absolute;
    inset: auto 0 0 0;
    height: 45%;
    background: linear-gradient(to top, rgba(0, 0, 0, .3), transparent);
}

/* ------------------------------------------------------------- The content */

.hero-slide__inner {
    position: relative;
    z-index: 2;
    width: 100%;
    /* Full height, then centre the copy in the space left once the control
       strip and the curved divider at the foot have been reserved. */
    display: flex;
    align-items: center;
    padding-block: 2rem var(--hs-pad-bottom);
}

.hero-slide__content {
    max-width: 660px;
}

.hero-slide--center .hero-slide__content {
    max-width: 800px;
    margin-inline: auto;
    text-align: center;
}

.hero-slide--right .hero-slide__content {
    margin-inline-start: auto;
    text-align: right;
}

.hero-slide__pill {
    display: inline-flex;
    align-items: center;
    gap: .55rem;
    padding: .45rem 1.1rem .45rem .6rem;
    margin-bottom: 1.35rem;
    border-radius: var(--r-pill);
    background: rgba(255, 255, 255, .14);
    border: 1px solid rgba(255, 255, 255, .3);
    backdrop-filter: blur(10px);
    -webkit-backdrop-filter: blur(10px);
    font-size: .82rem;
    font-weight: 500;
    color: var(--white);
}

.hero-slide__pill-dot {
    width: 9px;
    height: 9px;
    border-radius: 50%;
    background: var(--accent);
    box-shadow: 0 0 0 4px rgba(255, 152, 0, .22);
    animation: pulse-dot 1.9s ease-in-out infinite;
}

.hero-slide__title {
    margin: 0 0 1rem;
    font-size: clamp(2rem, 1.15rem + 2.55vw, 3.35rem);
    font-weight: 800;
    line-height: 1.1;
    letter-spacing: -.01em;
    color: var(--white);
    text-shadow: 0 2px 26px rgba(0, 0, 0, .32);
    display: -webkit-box;
    -webkit-box-orient: vertical;
    -webkit-line-clamp: 3;
    line-clamp: 3;
    overflow: hidden;
}

.hero-slide__text {
    max-width: 56ch;
    margin: 0 0 1.6rem;
    font-size: clamp(1rem, .94rem + .32vw, 1.16rem);
    line-height: 1.7;
    color: rgba(255, 255, 255, .9);
    text-shadow: 0 1px 18px rgba(0, 0, 0, .3);
    display: -webkit-box;
    -webkit-box-orient: vertical;
    -webkit-line-clamp: 2;
    line-clamp: 2;
    overflow: hidden;
}

.hero-slide--center .hero-slide__text {
    margin-inline: auto;
}

.hero-slide--right .hero-slide__text {
    margin-inline-start: auto;
}

.hero-slide__actions {
    display: flex;
    flex-wrap: wrap;
    gap: .85rem;
}

.hero-slide--center .hero-slide__actions {
    justify-content: center;
}

.hero-slide--right .hero-slide__actions {
    justify-content: flex-end;
}

/* Light overlays put ink text back on the banner. */
.hero-slide--light .hero-slide__title {
    color: var(--ink);
    text-shadow: none;
}

.hero-slide--light .hero-slide__text {
    color: var(--ink-70);
    text-shadow: none;
}

.hero-slide--light .hero-slide__pill {
    background: var(--white);
    border-color: var(--line);
    box-shadow: var(--shadow-xs);
    color: var(--ink-70);
}

.hero-slide--light .hero-slide__pill-dot {
    background: var(--brand);
    box-shadow: 0 0 0 4px rgba(229, 57, 53, .16);
}

/* -------------------------------------------------- Content entrance stagger */

.hero-slide [data-hs-anim] {
    opacity: 0;
    transform: translate3d(0, 26px, 0);
    transition: opacity .7s var(--ease-out), transform .7s var(--ease-out);
}

.hero-slider__swiper .swiper-slide-active [data-hs-anim],
.hero-slider--single [data-hs-anim] {
    opacity: 1;
    transform: none;
}

.hero-slider__swiper .swiper-slide-active [data-hs-anim="1"],
.hero-slider--single [data-hs-anim="1"] {
    transition-delay: .16s;
}

.hero-slider__swiper .swiper-slide-active [data-hs-anim="2"],
.hero-slider--single [data-hs-anim="2"] {
    transition-delay: .28s;
}

.hero-slider__swiper .swiper-slide-active [data-hs-anim="3"],
.hero-slider--single [data-hs-anim="3"] {
    transition-delay: .4s;
}

.hero-slider__swiper .swiper-slide-active [data-hs-anim="4"],
.hero-slider--single [data-hs-anim="4"] {
    transition-delay: .52s;
}

/* Leaving a slide should clear quickly rather than linger under the next. */
.hero-slide:not(.swiper-slide-active) [data-hs-anim] {
    transition-duration: .25s;
    transition-delay: 0s;
}

/* ----------------------------------------------------------------- Controls */

.hero-slider__nav {
    position: absolute;
    top: 50%;
    z-index: 4;
    display: grid;
    place-items: center;
    width: 54px;
    height: 54px;
    padding: 0;
    border: 1px solid rgba(255, 255, 255, .34);
    border-radius: 50%;
    background: rgba(255, 255, 255, .12);
    backdrop-filter: blur(10px);
    -webkit-backdrop-filter: blur(10px);
    color: var(--white);
    font-size: 1rem;
    cursor: pointer;
    transform: translateY(-50%);
    transition: background-color var(--t) var(--ease), border-color var(--t) var(--ease),
        color var(--t) var(--ease), opacity var(--t) var(--ease);
}

.hero-slider__nav--prev {
    left: clamp(.75rem, 2.4vw, 2.25rem);
}

.hero-slider__nav--next {
    right: clamp(.75rem, 2.4vw, 2.25rem);
}

.hero-slider__nav:hover,
.hero-slider__nav:focus-visible {
    background: var(--white);
    border-color: var(--white);
    color: var(--brand);
}

.hero-slider__nav:focus-visible {
    outline: 3px solid rgba(255, 255, 255, .55);
    outline-offset: 3px;
}

.hero-slider__nav.swiper-button-disabled {
    opacity: .35;
    pointer-events: none;
}

/* Pagination — the active bullet grows into a pill that fills with the brand
   gradient as the autoplay timer runs down. */
.hero-slider__pagination.swiper-pagination {
    --hs-progress: 1;
    /* The testimonials slider drops its dots into normal flow with
       `.swiper-pagination { position: static !important }`. The hero needs them
       floating over the banner, so this scoped rule takes it back — the
       testimonials rule is left exactly as it is. */
    position: absolute !important;
    margin-top: 0;
    left: 0;
    right: 0;
    bottom: var(--hs-dots-bottom);
    z-index: 4;
    display: flex;
    align-items: center;
    justify-content: center;
    gap: .5rem;
    /* Same box height as the toggle, so both sit on one line. */
    height: var(--hs-dots-h);
    line-height: 0;
}

.hero-slider__pagination .swiper-pagination-bullet {
    width: 10px;
    height: 10px;
    margin: 0;
    border-radius: var(--r-pill);
    background: rgba(255, 255, 255, .45);
    opacity: 1;
    transition: width var(--t) var(--ease), background-color var(--t) var(--ease);
}

.hero-slider__pagination .swiper-pagination-bullet:hover {
    background: rgba(255, 255, 255, .7);
}

.hero-slider__pagination .swiper-pagination-bullet-active {
    position: relative;
    width: 46px;
    background: rgba(255, 255, 255, .32);
    overflow: hidden;
}

.hero-slider__pagination .swiper-pagination-bullet-active::after {
    content: '';
    position: absolute;
    inset: 0;
    border-radius: inherit;
    background: var(--grad-brand);
    transform-origin: left center;
    transform: scaleX(var(--hs-progress, 1));
}

.hero-slider__toggle {
    position: absolute;
    right: clamp(.75rem, 2.4vw, 2.25rem);
    bottom: var(--hs-dots-bottom);
    z-index: 4;
    display: grid;
    place-items: center;
    width: var(--hs-dots-h);
    height: var(--hs-dots-h);
    padding: 0;
    border: 1px solid rgba(255, 255, 255, .3);
    border-radius: 50%;
    background: rgba(255, 255, 255, .12);
    backdrop-filter: blur(10px);
    -webkit-backdrop-filter: blur(10px);
    color: var(--white);
    font-size: .7rem;
    cursor: pointer;
    transition: background-color var(--t) var(--ease), color var(--t) var(--ease);
}

.hero-slider__toggle:hover,
.hero-slider__toggle:focus-visible {
    background: var(--white);
    color: var(--brand);
}

/* ------------------------------------------------------------- Breakpoints */

/* Tablets — a squarer frame keeps the subject visible as the copy grows. */
@media (max-width: 991.98px) {
    .hero-slider {
        /* The topbar is hidden below 992px, so only the nav row needs clearing. */
        --hs-top: calc(var(--header-h) + 6px);
        --hs-ratio: 16 / 11;
        --hs-min: 520px;
        --hs-max: 82vh;
    }

    .hero-slide__content {
        max-width: 620px;
    }
}

/* Phones — copy drops to the foot of the banner, which leaves the arrows a
   clear band of image to sit in. */
@media (max-width: 767.98px) {
    .hero-slider {
        --hs-ratio: 3 / 4;
        --hs-min: 500px;
        --hs-max: 88vh;
        --hs-dots-h: 30px;
        --hs-dots-bottom: calc(var(--hs-divider-h) + 14px);
    }

    .hero-slide__inner {
        align-items: flex-end;
    }

    .hero-slide__content,
    .hero-slide--right .hero-slide__content {
        max-width: none;
        margin-inline: 0;
        text-align: left;
    }

    .hero-slide--center .hero-slide__content {
        margin-inline: 0;
        text-align: left;
    }

    .hero-slide__actions,
    .hero-slide--center .hero-slide__actions,
    .hero-slide--right .hero-slide__actions {
        justify-content: flex-start;
    }

    .hero-slide__text {
        margin-bottom: 1.6rem;
    }

    .hero-slide--center .hero-slide__text,
    .hero-slide--right .hero-slide__text {
        margin-inline: 0;
    }

    /* The copy is bottom-aligned and can be tall, so the arrows join the dots
       and the toggle in the reserved control strip instead of floating over
       the middle of the slide: prev/next left, dots centred, toggle right. */
    .hero-slider__nav {
        top: auto;
        bottom: var(--hs-dots-bottom);
        width: var(--hs-dots-h);
        height: var(--hs-dots-h);
        font-size: .68rem;
        transform: none;
    }

    .hero-slider__nav--prev {
        left: clamp(.75rem, 3.5vw, 1.5rem);
    }

    .hero-slider__nav--next {
        right: auto;
        left: calc(clamp(.75rem, 3.5vw, 1.5rem) + var(--hs-dots-h) + .5rem);
    }

    .hero-slider__pagination.swiper-pagination {
        gap: .4rem;
    }

    .hero-slider__pagination .swiper-pagination-bullet {
        width: 8px;
        height: 8px;
    }

    .hero-slider__pagination .swiper-pagination-bullet-active {
        width: 34px;
    }

    .hero-slider__toggle {
        font-size: .64rem;
    }
}

@media (max-width: 575.98px) {
    .hero-slider {
        --hs-ratio: 5 / 7;
        --hs-min: 470px;
    }

    .hero-slide__actions .btn {
        padding: .82rem 1.35rem;
        font-size: .9rem;
    }
}

/* --------------------------------------------- Reduced motion / no autoplay */

@media (prefers-reduced-motion: reduce) {

    .hero-slide__img,
    .hero-slider__swiper .swiper-slide-active .hero-slide__img,
    .hero-slider--single .hero-slide__img {
        transform: none;
        transition: none;
        will-change: auto;
    }

    .hero-slide [data-hs-anim],
    .hero-slider__swiper .swiper-slide-active [data-hs-anim] {
        opacity: 1;
        transform: none;
        transition: none;
        transition-delay: 0s;
    }

    .hero-slide__pill-dot {
        animation: none;
    }

    .hero-slider__pagination .swiper-pagination-bullet-active::after {
        transform: scaleX(1);
    }
}
