/* ═══════════════════════════════════════════════════
   TMU CTLD CONFERENCE — STYLES
   Fonts: DM Serif Display (headings) + Plus Jakarta Sans (body)
═══════════════════════════════════════════════════ */

/* ── Design Tokens ── */
:root {
    --navy: #002147;
    --navy-70: rgba(0, 33, 71, 0.7);
    --navy-10: rgba(0, 33, 71, 0.08);
    --orange: #fd6334;
    --orange-glow: rgba(255, 87, 34, 0.3);
    --orange-light: rgba(255, 87, 34, 0.12);
    --text: #1d1d1f;
    --text-muted: #5a6170;
    --glass-bg: rgba(255, 255, 255, 0.62);
    --glass-border: rgba(255, 255, 255, 0.5);
    --ease-out: cubic-bezier(0.16, 1, 0.3, 1);
    --bg-color: #f5f6fa;
    --radius-sm: 12px;
    --radius-md: 20px;
    --radius-lg: 28px;
    --shadow-sm: 0 4px 16px rgba(0, 33, 71, 0.06);
    --shadow-md: 0 10px 40px rgba(0, 33, 71, 0.1);
    --shadow-hover: 0 16px 48px rgba(255, 87, 34, 0.18);
}

/* ── Reset ── */
*,
*::before,
*::after {
    margin: 0;
    padding: 0;
    box-sizing: border-box;
}
html {
    scroll-behavior: smooth;
    font-size: 16px;
    overscroll-behavior: none;
    /* min-width prevents layout collapse on very narrow viewports */
    min-width: 320px;
}

body {
    font-family: "Plus Jakarta Sans", system-ui, sans-serif;
    color: var(--text);
    background: var(--bg-color);
    line-height: 1.65;
    overflow-x: hidden;
    overscroll-behavior: none;
    /* Guarantee full-width on every device/zoom level */
    width: 100%;
    max-width: 100vw;
}
img {
    max-width: 100%;
    display: block;
}
a {
    text-decoration: none;
    color: inherit;
}
button {
    cursor: pointer;
}
ul,
ol {
    list-style: none;
}

/* ── Type ── */
h1,
h2,
h3,
h4 {
    font-family: "DM Serif Display", Georgia, serif;
    line-height: 1.15;
    color: var(--navy);
}
h1 {
    font-size: clamp(2.4rem, 5.5vw, 4.2rem);
}
h2 {
    font-size: clamp(2rem, 4vw, 3rem);
}
h3 {
    font-size: clamp(1.3rem, 2.5vw, 1.75rem);
}
p {
    color: var(--text-muted);
}
strong {
    color: var(--text);
    font-weight: 600;
}

/* ── Utilities ── */
.container {
    /* Wider layout – fills screen edge-to-edge at scale */
    max-width: 1400px;
    margin: 0 auto;
    padding: 0 clamp(20px, 3vw, 56px);
}
.mt-1 {
    margin-top: 1rem;
}
.small-note {
    font-size: 0.8rem;
    color: var(--text-muted);
    margin-top: 0.75rem;
}

/* ── Glass Card ── */
.glass-card {
    background: var(--glass-bg);
    backdrop-filter: blur(20px);
    -webkit-backdrop-filter: blur(20px);
    border: 1px solid var(--glass-border);
    border-radius: var(--radius-md);
    box-shadow: var(--shadow-sm);
    transition:
        transform 0.4s var(--ease-out),
        box-shadow 0.4s var(--ease-out);
}
.glass-card:hover {
    transform: translateY(-4px);
    box-shadow: var(--shadow-hover);
}

/* ── Buttons ── */
.btn {
    display: inline-flex;
    align-items: center;
    gap: 0.5rem;
    font-family: "Plus Jakarta Sans", sans-serif;
    font-weight: 600;
    font-size: 0.95rem;
    padding: 0.65rem 1.5rem;
    border-radius: 50px;
    transition: all 0.3s var(--ease-out);
    border: 2px solid transparent;
    white-space: nowrap;
}
.btn-primary {
    background: var(--orange);
    color: #fff;
    box-shadow: 0 4px 18px var(--orange-glow);
}
.btn-primary:hover {
    background: #e84c1e;
    box-shadow: 0 6px 24px var(--orange-glow);
    transform: translateY(-2px);
}
.btn-ghost {
    background: transparent;
    color: #fff;
    border-color: rgba(255, 255, 255, 0.5);
}
.btn-ghost:hover {
    background: rgba(255, 255, 255, 0.12);
    border-color: #fff;
}
.btn-lg {
    padding: 0.9rem 2.2rem;
    font-size: 1.05rem;
}
.cta-ghost {
    color: #fff;
    border-color: rgba(255, 255, 255, 0.5);
}
.cta-ghost:hover {
    background: rgba(255, 255, 255, 0.12);
    border-color: #fff;
}

/* ═══════════════════════════════════════════
   SPLASH / PAGE-LOAD LOADER
═══════════════════════════════════════════ */
.splash {
    position: fixed;
    inset: 0;
    z-index: 9999;
    background: var(--navy);
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    gap: 1.25rem;
    transition:
        opacity 0.55s var(--ease-out),
        visibility 0.55s var(--ease-out);
}
.splash.hidden {
    opacity: 0;
    visibility: hidden;
    pointer-events: none;
}
.splash-inner {
    position: relative;
    width: 100px;
    height: 100px;
    display: flex;
    align-items: center;
    justify-content: center;
}
/* Spinning ring */
.splash-ring {
    position: absolute;
    inset: 0;
    border-radius: 50%;
    border: 3px solid rgba(255, 255, 255, 0.12);
    border-top-color: var(--orange);
    border-right-color: rgba(255, 87, 34, 0.45);
    animation: spin 0.9s linear infinite;
}
@keyframes spin {
    to {
        transform: rotate(360deg);
    }
}
/* TMU logo inside ring */
.splash-logo {
    width: 62px;
    height: 62px;
    border-radius: 50%;
    object-fit: contain;
    background: #fff;
    padding: 6px;
    animation: splashLogoIn 0.5s var(--ease-out) 0.15s both;
}
@keyframes splashLogoIn {
    from {
        opacity: 0;
        transform: scale(0.6);
    }
    to {
        opacity: 1;
        transform: scale(1);
    }
}
.splash-text {
    color: rgba(255, 255, 255, 0.45);
    font-size: 0.75rem;
    font-weight: 700;
    letter-spacing: 0.22em;
    text-transform: uppercase;
    animation: splashLogoIn 0.5s var(--ease-out) 0.3s both;
}

/* ═══════════════════════════════════════════
   NAVBAR
═══════════════════════════════════════════ */
.navbar {
    position: fixed;
    inset-block-start: 0;
    width: 100%;
    z-index: 1000;
    padding: 18px 0;
    transition: all 0.35s var(--ease-out);
}
.navbar.scrolled {
    background: var(--glass-bg);
    backdrop-filter: blur(24px);
    -webkit-backdrop-filter: blur(24px);
    border-bottom: 1px solid var(--glass-border);
    box-shadow: var(--shadow-sm);
    padding: 12px 0;
}
.nav-container {
    max-width: 1400px;
    margin: 0 auto;
    padding: 0 clamp(20px, 3vw, 56px);
    display: flex;
    align-items: center;
    gap: 1.5rem;
}
.logo {
    display: flex;
    align-items: center;
    gap: 0.5rem;
    font-family: "DM Serif Display", serif;
    font-size: 1.4rem;
    flex-shrink: 0;
}
/* Logo image (TMU badge) */
.logo-img {
    width: 44px;
    height: 44px;
    /* No circular crop — show the full TMU crest */
    border-radius: 6px;
    object-fit: contain;
    background: transparent;
    transition: filter 0.35s var(--ease-out);
    display: inline-block;
    /* Over the dark hero: a gentle brightness lift + soft white glow.
       No saturate() so the crest's original colours are preserved. */
    filter: brightness(1.15) drop-shadow(0 0 5px rgba(255, 255, 255, 0.35));
}
.navbar.scrolled .logo-img {
    /* Crisp full colour once the glass navbar appears */
    filter: none;
}
.logo-primary {
    color: var(--navy);
}
.logo-sep {
    color: var(--orange);
    font-weight: 300;
}
.logo-secondary {
    color: var(--orange);
}
/* On the dark hero, only the primary text goes white.
   logo-secondary ("CTLD") stays --orange — it's readable on navy
   and keeps the brand colour consistent at all scroll positions. */
.navbar:not(.scrolled) .logo-primary {
    color: #fff;
}
.navbar:not(.scrolled) .logo-sep {
    color: rgba(255, 255, 255, 0.5);
}

.nav-links {
    display: flex;
    gap: 1.75rem;
    margin-left: auto;
}
.nav-link {
    font-weight: 500;
    font-size: 0.92rem;
    color: var(--navy);
    position: relative;
    padding-bottom: 3px;
    transition: color 0.2s;
}
.navbar:not(.scrolled) .nav-link {
    color: rgba(255, 255, 255, 0.85);
}
.nav-link::after {
    content: "";
    position: absolute;
    left: 0;
    bottom: 0;
    width: 0;
    height: 2px;
    background: var(--orange);
    transition: width 0.3s var(--ease-out);
}
.nav-link:hover::after,
.nav-link.active::after {
    width: 100%;
}
.nav-cta {
    margin-left: 0.5rem;
}
/* Drawer-only elements: hidden on desktop, shown inside mobile nav drawer */
.nav-drawer-cta,
.nav-drawer-cta-wrap,
.nav-close-wrap,
.nav-close-btn {
    display: none;
}

.hamburger {
    display: none;
    flex-direction: column;
    justify-content: center;
    gap: 5px;
    background: none;
    border: none;
    padding: 4px;
}
.bar {
    width: 24px;
    height: 2.5px;
    background: var(--navy);
    border-radius: 2px;
    transition: all 0.3s;
}
.navbar:not(.scrolled) .bar {
    background: #fff;
}
.hamburger.active .bar:nth-child(1) {
    transform: translateY(7.5px) rotate(45deg);
}
.hamburger.active .bar:nth-child(2) {
    opacity: 0;
    transform: scaleX(0);
}
.hamburger.active .bar:nth-child(3) {
    transform: translateY(-7.5px) rotate(-45deg);
}

.mobile-overlay {
    display: none;
    position: fixed;
    inset: 0;
    background: rgba(0, 0, 0, 0.4);
    backdrop-filter: blur(4px);
    z-index: 999;
    opacity: 0;
    transition: opacity 0.3s;
}
.mobile-overlay.active {
    opacity: 1;
}

/* ═══════════════ SECTIONS (shared) ═══════════════ */
.section {
    min-height: 90vh;
    padding: clamp(80px, 10vw, 130px) 0 clamp(60px, 8vw, 100px);
    position: relative;
    display: flex;
    flex-direction: column;
    justify-content: center;
}
.section-header {
    text-align: center;
    margin-bottom: 1rem;
}
.section-eyebrow {
    font-weight: 700;
    font-size: 0.78rem;
    letter-spacing: 0.15em;
    text-transform: uppercase;
    color: var(--orange);
    margin-bottom: 0.6rem;
}
.section-title {
    margin-bottom: 0.75rem;
}
.section-desc {
    max-width: 560px;
    margin: 0 auto;
    font-size: 1.05rem;
}
.sub-heading {
    font-size: 1.9rem;
    text-align: center;
    margin: 2rem 0 1.2rem;
    color: var(--navy);
    font-style: italic;
}
.card-title {
    font-size: 1.35rem;
    margin-bottom: 1.5rem;
}

/* ── Scroll reveal ── */
.reveal {
    opacity: 0;
    transform: translateY(28px);
    transition:
        opacity 0.75s var(--ease-out),
        transform 0.75s var(--ease-out);
    transition-delay: var(--delay, 0s);
}
.reveal-delay {
    transition-delay: 0.15s;
}
.reveal.visible {
    opacity: 1;
    transform: translateY(0);
}

/* ═══════════════ HERO ═══════════════ */
.hero {
    min-height: 100vh;
    justify-content: center;
    align-items: center;
    padding: 0;
    overflow: hidden;
}
.hero-bg-img {
    position: absolute;
    inset: 0;
    background: url("https://cdn.jsdelivr.net/gh/Adi15Jain/assets@main/ctldConference/hero_bg.png")
        center center / cover no-repeat;
    z-index: 0;
    /* Fully static — no transform, no JS involvement.
       background-size: cover handles all framing. */
}
.hero-overlay {
    position: absolute;
    inset: 0;
    background: linear-gradient(
        125deg,
        rgba(0, 15, 45, 0.9) 0%,
        rgba(0, 28, 65, 0.8) 45%,
        rgba(140, 35, 0, 0.3) 100%
    );
    z-index: 1;
}
/* Three.js canvas layer */
.hero-canvas {
    position: absolute;
    inset: 0;
    width: 100%;
    height: 100%;
    z-index: 2;
    pointer-events: none;
}

/* ── Two-column layout ── */
.hero-container {
    position: relative;
    z-index: 3;
    width: 100%;
    max-width: 1240px;
    margin: 0 auto;
    padding: 0 clamp(20px, 5vw, 60px);
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: clamp(2rem, 5vw, 5rem);
    align-items: center;
    min-height: 100vh;
}

/* ── Left: Text ── */
.hero-left {
    display: flex;
    flex-direction: column;
    align-items: flex-start;
    gap: 0;
}
.hero-eyebrow {
    font-family: "Plus Jakarta Sans", sans-serif;
    font-weight: 700;
    font-size: 0.7rem;
    letter-spacing: 0.2em;
    color: var(--orange);
    text-transform: uppercase;
    margin-bottom: 1.4rem;
    background: rgba(255, 255, 255, 0.07);
    border: 1px solid rgba(255, 255, 255, 0.16);
    padding: 0.4rem 1rem;
    border-radius: 50px;
    backdrop-filter: blur(8px);
    -webkit-backdrop-filter: blur(8px);
}
.hero-title {
    color: #fff;
    font-size: clamp(2.3rem, 4vw, 3.5rem);
    line-height: 1.1;
    text-shadow: 0 2px 28px rgba(0, 0, 0, 0.45);
    margin-bottom: 1.5rem;
    letter-spacing: -0.01em;
}
.hero-title em {
    font-style: italic;
    color: var(--orange);
}
.hero-sub {
    color: rgba(255, 255, 255, 0.65);
    font-size: clamp(0.9rem, 1.5vw, 1.05rem);
    line-height: 1.7;
    margin-top: 0.25rem;
}

/* ── Right: Glass info card ── */
.hero-right {
    display: flex;
    justify-content: flex-end;
    align-items: center;
}
.hero-info-card {
    width: 100%;
    max-width: 420px;
    padding: 2.4rem;
    /* ── Fully transparent glass ──
       Pure frosted glass — virtually no fill so the
       hero photograph bleeds through beautifully. */
    background: rgba(255, 255, 255, 0.04);
    backdrop-filter: blur(32px) saturate(1.6) brightness(1.12);
    -webkit-backdrop-filter: blur(32px) saturate(1.6) brightness(1.12);
    border: 1px solid rgba(255, 255, 255, 0.18);
    border-top: 1px solid rgba(255, 255, 255, 0.38); /* stronger top highlight */
    border-radius: 24px;
    box-shadow:
        0 4px 24px rgba(0, 0, 0, 0.18),
        inset 0 1.5px 0 rgba(255, 255, 255, 0.22),
        inset 0 -1px 0 rgba(255, 255, 255, 0.06);
    /* override generic card hover */
    transition:
        transform 0.5s var(--ease-out),
        box-shadow 0.5s var(--ease-out),
        background 0.5s var(--ease-out);
    /* ── Shimmer / reflection on load ── */
    position: relative;
    overflow: hidden;
    /* No entrance animation here — the JS [data-anim="hero"] parent handles it */
}
/* Glass reflection streak that sweeps once on load */
.hero-info-card::before {
    content: "";
    position: absolute;
    top: -180%;
    left: -55%;
    width: 60%;
    height: 400%;
    background: linear-gradient(
        105deg,
        rgba(255, 255, 255, 0) 0%,
        rgba(255, 255, 255, 0.18) 48%,
        rgba(255, 255, 255, 0.28) 50%,
        rgba(255, 255, 255, 0.18) 52%,
        rgba(255, 255, 255, 0) 100%
    );
    transform: skewX(-12deg);
    /* Paused until .anim-in fires on the parent */
    animation: shimmerSweep 1.6s var(--ease-out) 0s both;
    animation-play-state: paused;
    pointer-events: none;
    z-index: 10;
}
/* Subtle ambient rim light that pulses gently */
.hero-info-card::after {
    content: "";
    position: absolute;
    inset: 0;
    border-radius: 24px;
    background: linear-gradient(
        135deg,
        rgba(255, 255, 255, 0.06) 0%,
        transparent 50%,
        rgba(255, 87, 34, 0.04) 100%
    );
    pointer-events: none;
    animation: rimPulse 4s ease-in-out 0s infinite alternate;
    animation-play-state: paused;
}
/* ── Trigger shimmer & rim ONLY after JS reveals the card ── */
.hero-right.anim-in .hero-info-card::before {
    animation-play-state: running;
    animation-delay: 0.35s; /* slight delay after parent slides in */
}
.hero-right.anim-in .hero-info-card::after {
    animation-play-state: running;
    animation-delay: 1.6s; /* start pulsing after shimmer completes */
}
.hero-info-card:hover {
    background: rgba(255, 255, 255, 0.07);
    transform: translateY(-6px);
    box-shadow:
        0 20px 60px rgba(0, 0, 0, 0.28),
        0 0 0 1px rgba(255, 87, 34, 0.28),
        inset 0 1.5px 0 rgba(255, 255, 255, 0.28),
        inset 0 -1px 0 rgba(255, 255, 255, 0.08);
}
/* ── card/shimmer keyframes ── */
@keyframes shimmerSweep {
    from {
        left: -55%;
        opacity: 0;
    }
    10% {
        opacity: 1;
    }
    to {
        left: 110%;
        opacity: 0;
    }
}
@keyframes rimPulse {
    from {
        opacity: 0.6;
    }
    to {
        opacity: 1;
    }
}
.hic-row {
    display: flex;
    align-items: center;
    gap: 1rem;
    padding: 1rem 0;
    border-bottom: 1px solid rgba(255, 255, 255, 0.1);
}
.hic-row:first-child {
    padding-top: 0;
}
.hic-icon {
    flex-shrink: 0;
    width: 42px;
    height: 42px;
    border-radius: 12px;
    background: rgba(255, 255, 255, 0.1);
    border: 1px solid rgba(255, 255, 255, 0.14);
    display: flex;
    align-items: center;
    justify-content: center;
    color: rgba(255, 255, 255, 0.85);
}
.deadline-icon {
    background: rgba(255, 87, 34, 0.22);
    border-color: rgba(255, 87, 34, 0.35);
    color: #ff9a6c;
}
.hic-row > div {
    display: flex;
    flex-direction: column;
    gap: 0.2rem;
}
.hic-label {
    font-size: 0.72rem;
    font-weight: 600;
    letter-spacing: 0.1em;
    text-transform: uppercase;
    color: rgba(255, 255, 255, 0.45);
}
.hic-value {
    font-weight: 700;
    font-size: 1rem;
    color: #fff;
    font-family: "DM Serif Display", serif;
}
.deadline-val {
    color: #ff9a6c;
}
.hic-deadline {
    border-bottom: none;
}
.hic-divider {
    height: 1px;
    background: rgba(255, 255, 255, 0.1);
    margin: 1rem 0;
}
.hic-actions {
    display: flex;
    flex-direction: column;
    gap: 0.75rem;
}
.hic-btn {
    width: 100%;
    justify-content: center;
    font-size: 1rem;
    padding: 0.9rem 1.5rem;
}

/* Scroll indicator */
.scroll-indicator {
    position: absolute;
    bottom: 2.5rem;
    left: 50%;
    transform: translateX(-50%);
    z-index: 4;
    display: flex;
    flex-direction: column;
    align-items: center;
}
.scroll-indicator span {
    width: 1.5px;
    height: 52px;
    background: linear-gradient(
        to bottom,
        rgba(255, 255, 255, 0),
        rgba(255, 255, 255, 0.55)
    );
    display: block;
    animation: scrollPulse 2s ease-in-out infinite;
}
@keyframes scrollPulse {
    0%,
    100% {
        opacity: 0.3;
        transform: scaleY(0.5);
    }
    50% {
        opacity: 1;
        transform: scaleY(1);
    }
}

/* ── Hero entrance animations (triggered by JS after splash) ── */
[data-anim="hero"] {
    opacity: 0;
    transform: translateY(36px);
    transition:
        opacity 0.75s var(--ease-out),
        transform 0.75s var(--ease-out);
}
.hero-left[data-anim="hero"] {
    transition-delay: 0.05s;
    transform: translateX(-40px);
}
.hero-right[data-anim="hero"] {
    transition-delay: 0.2s;
    transform: translateX(40px);
}
[data-anim="hero"].anim-in {
    opacity: 1;
    transform: translate(0);
}

/* ── Circular loader (used for img lazy-loading skeletons) ── */
.img-loader {
    position: relative;
    overflow: hidden;
    background: rgba(0, 33, 71, 0.05);
    border-radius: var(--radius-sm);
}
.img-loader::after {
    content: "";
    position: absolute;
    inset: 0;
    display: flex;
    align-items: center;
    justify-content: center;
    background: radial-gradient(
        circle at center,
        rgba(255, 87, 34, 0.08) 0%,
        transparent 70%
    );
}
.img-loader::before {
    content: "";
    position: absolute;
    top: 50%;
    left: 50%;
    width: 32px;
    height: 32px;
    margin: -16px 0 0 -16px;
    border-radius: 50%;
    border: 3px solid rgba(0, 33, 71, 0.1);
    border-top-color: var(--orange);
    animation: spin 0.8s linear infinite;
}
.img-loader.loaded::before,
.img-loader.loaded::after {
    display: none;
}

/* ═══════════════ ABOUT ═══════════════ */
.about {
    /* Allow scrolling inside this section if screen is too short */
    min-height: 90vh;
    height: auto;
    overflow: hidden;
    padding: 0;
    /* Light professional gradient: warm white → cool grey-blue */
    background: linear-gradient(
        155deg,
        #f9f8f6 0%,
        #f2f4f8 30%,
        #edf0f7 60%,
        #e8ecf5 100%
    );
    position: relative;
    display: flex;
    flex-direction: column;
    justify-content: stretch;
}

/* ── Phantom floating 3D shapes (pure CSS, very low opacity) ── */
.about-shapes {
    position: absolute;
    inset: 0;
    overflow: hidden;
    pointer-events: none;
    z-index: 0;
}
.about-shape {
    position: absolute;
    border-radius: 50%;
    opacity: 0;
    animation: shapeFloat linear infinite;
    animation-fill-mode: both;
}
/* Sphere 1 — large navy glow, top-left */
.about-shape:nth-child(1) {
    width: 520px;
    height: 520px;
    top: -160px;
    left: -100px;
    background: radial-gradient(
        ellipse at 35% 35%,
        rgba(0, 33, 71, 0.09) 0%,
        rgba(0, 55, 120, 0.05) 45%,
        transparent 70%
    );
    filter: blur(48px);
    opacity: 1;
    animation-duration: 24s;
    animation-delay: 0s;
}
/* Sphere 2 — warm orange haze, bottom-right */
.about-shape:nth-child(2) {
    width: 420px;
    height: 420px;
    bottom: -100px;
    right: -80px;
    background: radial-gradient(
        ellipse at 60% 60%,
        rgba(253, 99, 52, 0.1) 0%,
        rgba(220, 70, 10, 0.04) 50%,
        transparent 72%
    );
    filter: blur(40px);
    opacity: 1;
    animation-duration: 20s;
    animation-delay: -6s;
}
/* Torus-like ring — right-center, navy */
.about-shape:nth-child(3) {
    width: 300px;
    height: 300px;
    top: 50%;
    right: 6%;
    transform: translate(0, -50%);
    background: transparent;
    border-radius: 50%;
    border: 24px solid rgba(0, 33, 71, 0.07);
    box-shadow:
        0 0 50px rgba(0, 33, 71, 0.04),
        inset 0 0 30px rgba(0, 33, 71, 0.03);
    filter: blur(5px);
    opacity: 1;
    animation-duration: 30s;
    animation-delay: -10s;
}
/* Diamond — mid upper area */
.about-shape:nth-child(4) {
    width: 120px;
    height: 120px;
    top: 22%;
    left: 38%;
    background: linear-gradient(
        135deg,
        rgba(0, 33, 71, 0.06) 0%,
        rgba(0, 60, 130, 0.03) 100%
    );
    border-radius: 20px;
    border: 1px solid rgba(0, 33, 71, 0.08);
    filter: blur(3px);
    opacity: 1;
    animation-duration: 22s;
    animation-delay: -4s;
    transform: rotate(45deg);
}
/* Small amber glow — lower-centre */
.about-shape:nth-child(5) {
    width: 240px;
    height: 240px;
    top: 62%;
    left: 52%;
    background: radial-gradient(
        ellipse,
        rgba(253, 180, 100, 0.08) 0%,
        transparent 65%
    );
    filter: blur(24px);
    opacity: 1;
    animation-duration: 26s;
    animation-delay: -14s;
}
@keyframes shapeFloat {
    0% {
        transform: translateY(0px) rotate(0deg);
    }
    25% {
        transform: translateY(-18px) rotate(4deg);
    }
    50% {
        transform: translateY(-8px) rotate(-3deg);
    }
    75% {
        transform: translateY(-22px) rotate(6deg);
    }
    100% {
        transform: translateY(0px) rotate(0deg);
    }
}
/* Shape 3 has its own transform baseline */
.about-shape:nth-child(3) {
    animation-name: shapeFloatRing;
}
@keyframes shapeFloatRing {
    0% {
        transform: translate(0, -50%) rotate(0deg);
    }
    33% {
        transform: translate(0, calc(-50% - 14px)) rotate(20deg);
    }
    66% {
        transform: translate(0, calc(-50% + 10px)) rotate(-15deg);
    }
    100% {
        transform: translate(0, -50%) rotate(0deg);
    }
}
/* Shape 4 has its own transform baseline */
.about-shape:nth-child(4) {
    animation-name: shapeFloatDiamond;
}
@keyframes shapeFloatDiamond {
    0% {
        transform: rotate(45deg) translateY(0);
    }
    50% {
        transform: rotate(55deg) translateY(-12px);
    }
    100% {
        transform: rotate(45deg) translateY(0);
    }
}

/* ── Inner layout wrapper — fills full 90vh ── */
.about-inner {
    position: relative;
    z-index: 1;
    width: 100%;
    max-width: 1400px;
    margin: 0 auto;
    padding: clamp(2rem, 4vh, 4rem) clamp(20px, 3vw, 56px);
    display: grid;
    grid-template-columns: 1.15fr 0.85fr;
    grid-template-rows: 1fr auto;
    row-gap: 1.5rem;
    column-gap: clamp(2.5rem, 4vw, 5rem);
    /* Stretch both columns to the full section height */
    align-items: stretch;
    height: 100%;
}

/* ── Left: Editorial Content Panel — distributed top-to-bottom ── */
.about-editorial {
    display: flex;
    flex-direction: column;
    justify-content: space-between;
    gap: 0;
    padding: 0.5rem 0;
}
.about-badge {
    display: inline-flex;
    align-items: center;
    gap: 0.5rem;
    font-size: 0.7rem;
    font-weight: 700;
    letter-spacing: 0.18em;
    text-transform: uppercase;
    color: var(--orange);
    background: rgba(253, 99, 52, 0.08);
    border: 1px solid rgba(253, 99, 52, 0.28);
    padding: 0.3rem 0.9rem;
    border-radius: 50px;
    width: fit-content;
}
.about-badge::before {
    content: "";
    width: 6px;
    height: 6px;
    border-radius: 50%;
    background: var(--orange);
    display: block;
    box-shadow: 0 0 6px var(--orange);
}
/* Top block: badge + heading + divider grouped */
.about-top-block {
    display: flex;
    flex-direction: column;
    gap: 0.75rem;
}
.about-heading {
    font-size: clamp(2.2rem, 3.5vw, 3.4rem);
    color: var(--navy);
    line-height: 1.08;
    letter-spacing: -0.025em;
}
.about-heading em {
    color: var(--orange);
    font-style: normal;
}
/* Horizontal rule divider */
.about-divider {
    width: 56px;
    height: 3px;
    background: linear-gradient(90deg, var(--orange), rgba(253, 99, 52, 0.2));
    border-radius: 3px;
}
/* Mid block: prose text */
.about-prose {
    display: flex;
    flex-direction: column;
    gap: 0.75rem;
}
.about-prose p {
    font-size: 1.05rem;
    line-height: 1.78;
    color: var(--text-muted);
}
/* Key terms inline highlight */
.about-prose strong {
    color: var(--text);
    font-weight: 600;
}
/* Bottom CTA strip */
.about-cta-strip {
    display: flex;
    align-items: center;
    gap: 1.25rem;
    flex-wrap: wrap;
    padding-top: 0.5rem;
    border-top: 1px solid rgba(0, 33, 71, 0.1);
}
.about-cta-label {
    font-size: 0.75rem;
    font-weight: 600;
    letter-spacing: 0.08em;
    text-transform: uppercase;
    color: var(--text-muted);
    opacity: 0.7;
}
.about-btn {
    display: inline-flex;
    align-items: center;
    gap: 0.4rem;
    font-size: 0.85rem;
    font-weight: 700;
    color: var(--orange);
    border: 1.5px solid rgba(253, 99, 52, 0.35);
    padding: 0.5rem 1.2rem;
    border-radius: 50px;
    transition: all 0.3s var(--ease-out);
    background: rgba(253, 99, 52, 0.06);
}
.about-btn:hover {
    background: var(--orange);
    border-color: var(--orange);
    color: #fff;
    transform: translateY(-2px);
    box-shadow: 0 6px 20px rgba(253, 99, 52, 0.3);
}

/* ── Right: Stat Pillars Panel — fills full column height ── */
.about-metrics {
    display: flex;
    flex-direction: column;
    gap: 0;
    justify-content: space-between;
    padding: 0.5rem 0;
}
/* Individual metric row */
.metric-row {
    display: flex;
    align-items: center;
    gap: 1.25rem;
    padding: 1.1rem 1.4rem;
    background: rgba(255, 255, 255, 0.72);
    border: 1px solid rgba(0, 33, 71, 0.09);
    border-radius: var(--radius-md);
    backdrop-filter: blur(16px);
    -webkit-backdrop-filter: blur(16px);
    box-shadow: 0 2px 12px rgba(0, 33, 71, 0.05);
    transition: all 0.35s var(--ease-out);
    position: relative;
    overflow: hidden;
    flex: 1;
    margin-bottom: 0.65rem;
}
.metric-row:last-of-type {
    margin-bottom: 0;
}
.metric-row::before {
    content: "";
    position: absolute;
    left: 0;
    top: 0;
    bottom: 0;
    width: 3px;
    background: var(--orange);
    border-radius: 0 2px 2px 0;
    opacity: 0;
    transition: opacity 0.3s var(--ease-out);
}
.metric-row:hover {
    background: rgba(255, 255, 255, 0.9);
    border-color: rgba(253, 99, 52, 0.2);
    transform: translateX(6px);
    box-shadow: 0 6px 24px rgba(0, 33, 71, 0.1);
}
.metric-row:hover::before {
    opacity: 1;
}
/* Icon badge */
.metric-icon {
    flex-shrink: 0;
    width: 48px;
    height: 48px;
    border-radius: 12px;
    background: rgba(253, 99, 52, 0.1);
    border: 1px solid rgba(253, 99, 52, 0.18);
    display: flex;
    align-items: center;
    justify-content: center;
    color: var(--orange);
}
.metric-icon svg {
    width: 22px;
    height: 22px;
    flex-shrink: 0;
}
/* Impact banner icon */
.impact-banner-icon {
    flex-shrink: 0;
    color: var(--orange);
    display: flex;
    align-items: center;
    margin-top: 0.1rem;
}
.impact-banner-icon svg {
    width: 22px;
    height: 22px;
}
/* CFP info-icon (submission guidelines) */
.info-icon {
    display: flex;
    align-items: center;
    justify-content: center;
    flex-shrink: 0;
    color: var(--orange);
}
.info-icon svg {
    width: 20px;
    height: 20px;
}
/* CFP output-icon (conference outputs) */
.output-icon {
    display: flex;
    align-items: center;
    justify-content: center;
    flex-shrink: 0;
    color: var(--orange);
}
.output-icon svg {
    width: 22px;
    height: 22px;
}

/* Number */
.metric-number {
    font-family: "DM Serif Display", serif;
    font-size: 2.6rem;
    color: var(--navy);
    line-height: 1;
    min-width: 3.2rem;
}
.metric-number span {
    font-size: 1.1rem;
    color: var(--orange);
    font-family: "Plus Jakarta Sans", sans-serif;
    font-weight: 700;
}
/* Label stack */
.metric-label-stack {
    display: flex;
    flex-direction: column;
    gap: 0.2rem;
    flex: 1;
}
.metric-title {
    font-weight: 700;
    font-size: 0.85rem;
    color: var(--navy);
    text-transform: uppercase;
    letter-spacing: 0.08em;
}
.metric-desc {
    font-size: 0.78rem;
    color: var(--text-muted);
    line-height: 1.45;
}

/* Separator in metrics panel */
.metrics-separator {
    height: 1px;
    background: linear-gradient(
        90deg,
        transparent,
        rgba(0, 33, 71, 0.1),
        transparent
    );
    margin: 0.35rem 0;
}

/* Impact banner at bottom of metrics panel */
/* Impact banner repurposed to full width */
.about-impact-banner {
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 2.5rem;
    padding: 2.2rem 3rem;
    background: linear-gradient(
        120deg,
        rgba(0, 33, 71, 0.98) 0%,
        rgba(15, 60, 115, 0.96) 25%,
        rgba(0, 55, 110, 0.96) 50%,
        rgba(15, 75, 135, 0.94) 75%,
        rgba(0, 33, 71, 0.98) 100%
    );
    background-size: 200% 200%;
    animation: impactGradientFlow 8s ease-in-out infinite;
    border: 1px solid rgba(255, 255, 255, 0.05); /* Adds a very subtle polish */
    border-radius: 60px;
    box-shadow: 0 10px 40px rgba(0, 33, 71, 0.15);
    position: relative;
    overflow: hidden;
}

@keyframes impactGradientFlow {
    0% {
        background-position: 0% 50%;
    }
    50% {
        background-position: 100% 50%;
    }
    100% {
        background-position: 0% 50%;
    }
}
.about-impact-banner.full-width {
    grid-column: 1 / -1;
    margin-top: 0.5rem;
}
.impact-banner-icon {
    flex-shrink: 0;
    color: var(--orange);
    z-index: 1;
    display: flex;
    align-items: center;
    animation: subtlePulse 4s ease-in-out infinite;
}

@keyframes subtlePulse {
    0%,
    100% {
        transform: scale(1);
        filter: brightness(1) drop-shadow(0 0 0 rgba(255, 120, 0, 0));
    }
    50% {
        transform: scale(1.05);
        filter: brightness(1.15) drop-shadow(0 0 10px rgba(255, 120, 0, 0.6));
    }
}
.impact-banner-icon svg {
    width: 3.8rem;
    height: 3.8rem;
}
.impact-banner-text {
    font-size: 1.2rem;
    line-height: 1.6;
    color: rgba(200, 220, 255, 0.85);
    z-index: 1;
    display: flex;
    flex-direction: column;
    justify-content: center;
}
.impact-banner-text strong {
    color: #fff;
    display: block;
    font-size: 1.6rem;
    margin-bottom: 0.25rem;
    letter-spacing: 0.02em;
}

/* ═══════════════ TRACKS ═══════════════ */
.tracks {
    /* Auto height allows tight wrapping around content, eliminating whitespace */
    height: auto;
    min-height: unset;
    overflow: hidden;
    padding: 5rem 0;
    /*
     * Warm ivory — deliberately warmer than the About section's
     * cool grey-blue (#f9f8f6→#e8ecf5) to create clear visual rhythm:
     * cool (About) → warm (Tracks) → dark navy (Objectives).
     */
    background: linear-gradient(
        145deg,
        #fdfcf9 0%,
        #f8f4ee 30%,
        #f3ede3 65%,
        #ede5d8 100%
    );
    position: relative;
    display: flex;
    flex-direction: column;
    justify-content: stretch;
}

/* ── Phantom ambient shapes — warm amber / terracotta palette ── */
.tracks-shapes {
    position: absolute;
    inset: 0;
    overflow: hidden;
    pointer-events: none;
    z-index: 0;
}
.tracks-shape {
    position: absolute;
    border-radius: 50%;
    animation-fill-mode: both;
}
/* Large amber orb — top-right */
.tracks-shape:nth-child(1) {
    width: 500px;
    height: 500px;
    top: -140px;
    right: -100px;
    background: radial-gradient(
        ellipse at 40% 40%,
        rgba(220, 140, 60, 0.12) 0%,
        rgba(200, 100, 30, 0.05) 50%,
        transparent 72%
    );
    filter: blur(44px);
    animation: trShapeFloat1 26s ease-in-out infinite;
}
/* Warm terracotta glow — bottom-left */
.tracks-shape:nth-child(2) {
    width: 400px;
    height: 400px;
    bottom: -90px;
    left: -60px;
    background: radial-gradient(
        ellipse at 55% 55%,
        rgba(200, 90, 40, 0.09) 0%,
        rgba(180, 70, 20, 0.04) 55%,
        transparent 75%
    );
    filter: blur(38px);
    animation: trShapeFloat2 20s ease-in-out infinite;
}
/* Geometric ring — mid-left */
.tracks-shape:nth-child(3) {
    width: 260px;
    height: 260px;
    top: 50%;
    left: 5%;
    background: transparent;
    border-radius: 50%;
    border: 22px solid rgba(180, 110, 50, 0.06);
    filter: blur(5px);
    animation: trShapeFloat3 32s linear infinite;
}
/* Small gold diamond — upper right content area */
.tracks-shape:nth-child(4) {
    width: 110px;
    height: 110px;
    top: 18%;
    right: 12%;
    background: linear-gradient(
        135deg,
        rgba(210, 160, 60, 0.08) 0%,
        rgba(190, 130, 40, 0.04) 100%
    );
    border-radius: 20px;
    border: 1px solid rgba(200, 150, 60, 0.1);
    filter: blur(3px);
    animation: trShapeFloat4 24s ease-in-out infinite;
    transform: rotate(45deg);
}
/* Subtle warm mist — centre */
.tracks-shape:nth-child(5) {
    width: 300px;
    height: 300px;
    top: 40%;
    left: 40%;
    background: radial-gradient(
        ellipse,
        rgba(253, 99, 52, 0.05) 0%,
        transparent 65%
    );
    filter: blur(30px);
    animation: trShapeFloat1 30s ease-in-out infinite reverse;
}
@keyframes trShapeFloat1 {
    0%,
    100% {
        transform: translateY(0px);
    }
    40% {
        transform: translateY(-16px);
    }
    70% {
        transform: translateY(-8px);
    }
}
@keyframes trShapeFloat2 {
    0%,
    100% {
        transform: translateY(0px) translateX(0);
    }
    50% {
        transform: translateY(-14px) translateX(8px);
    }
}
@keyframes trShapeFloat3 {
    0% {
        transform: translate(-50%, -50%) rotate(0deg);
    }
    100% {
        transform: translate(-50%, -50%) rotate(360deg);
    }
}
@keyframes trShapeFloat4 {
    0%,
    100% {
        transform: rotate(45deg) translateY(0);
    }
    50% {
        transform: rotate(52deg) translateY(-10px);
    }
}

/* ── Inner two-column layout ── */
.tracks-inner {
    position: relative;
    z-index: 1;
    width: 100%;
    max-width: 1400px;
    margin: 0 auto;
    padding: clamp(1.5rem, 3vh, 2.5rem) clamp(20px, 3vw, 56px);
    display: grid;
    grid-template-columns: auto 1fr;
    gap: clamp(2rem, 3vw, 3.5rem);
    align-items: stretch;
    height: 100%;
}

/* ── Left: Section header + vertical tab rail ── */
.tracks-left {
    display: flex;
    flex-direction: column;
    justify-content: space-between;
    gap: 0;
    min-width: 220px;
    max-width: 260px;
    padding: 0.5rem 0;
}
.tracks-header {
    display: flex;
    flex-direction: column;
    gap: 0.5rem;
    margin-bottom: 1.5rem;
}
.tracks-eyebrow {
    font-weight: 700;
    font-size: 0.68rem;
    letter-spacing: 0.18em;
    text-transform: uppercase;
    color: var(--orange);
    display: flex;
    align-items: center;
    gap: 0.5rem;
}
.tracks-eyebrow::before {
    content: "";
    width: 5px;
    height: 5px;
    border-radius: 50%;
    background: var(--orange);
    box-shadow: 0 0 5px var(--orange-glow);
    flex-shrink: 0;
}
.tracks-heading {
    /* Match About section heading symmetry: same font family, similar scale */
    font-family: "DM Serif Display", serif;
    font-size: clamp(2.2rem, 3vw, 3.2rem);
    color: var(--navy);
    line-height: 1.08;
    letter-spacing: -0.025em;
}
.tracks-subline {
    font-size: 0.88rem;
    color: var(--text-muted);
    line-height: 1.6;
    margin-top: 0.25rem;
}

/* Vertical tab rail — cluster from top, no space-between stretching */
.tracks-rail {
    display: flex;
    flex-direction: column;
    gap: 0.4rem;
    flex: 1;
    justify-content: flex-start;
    padding-top: 0.2rem;
}
.tracks-tab {
    display: flex;
    align-items: center;
    gap: 0.85rem;
    padding: 0.78rem 1.1rem;
    border-radius: var(--radius-sm);
    border: 1.5px solid transparent;
    background: transparent;
    font-family: "Plus Jakarta Sans", sans-serif;
    font-size: 0.93rem;
    font-weight: 600;
    color: var(--text-muted);
    text-align: left;
    cursor: pointer;
    transition: all 0.25s var(--ease-out);
    position: relative;
}
.tracks-tab:hover {
    background: rgba(160, 100, 30, 0.06);
    color: var(--navy);
    border-color: rgba(160, 100, 30, 0.15);
}
.tracks-tab.active {
    background: var(--navy);
    color: #fff;
    border-color: var(--navy);
    box-shadow: 0 4px 16px rgba(0, 33, 71, 0.18);
}
.tracks-tab .tab-num {
    font-family: "DM Serif Display", serif;
    font-size: 0.88rem;
    opacity: 0.5;
    min-width: 1.5rem;
    line-height: 1;
}
.tracks-tab.active .tab-num {
    opacity: 0.75;
}
/* Active right-edge accent bar */
.tracks-tab.active::after {
    content: "";
    position: absolute;
    right: -1px;
    top: 20%;
    bottom: 20%;
    width: 3px;
    border-radius: 2px 0 0 2px;
    background: var(--orange);
}

/* ── Right: Track content panel ── */
.tracks-right {
    display: flex;
    align-items: stretch;
    padding: 0.5rem 0;
}
.tracks-panel {
    flex: 1;
    background: rgba(255, 255, 255, 0.7);
    border: 1px solid rgba(180, 130, 60, 0.14);
    border-radius: var(--radius-lg);
    backdrop-filter: blur(20px);
    -webkit-backdrop-filter: blur(20px);
    box-shadow:
        0 2px 24px rgba(160, 100, 30, 0.07),
        inset 0 1px 0 rgba(255, 255, 255, 0.8);
    display: flex;
    flex-direction: column;
    overflow: hidden;
    position: relative;
}

/* Tab pane display logic */
.tracks-pane {
    display: none;
    flex: 1;
    flex-direction: column;
    padding: clamp(1.1rem, 2vh, 1.8rem) clamp(1.2rem, 2.5vw, 2rem);
    animation: fadeUp 0.35s var(--ease-out);
    height: 100%;
}
.tracks-pane.active {
    display: flex;
}

/* Decorative oversized track number watermark */
.tracks-pane::before {
    content: attr(data-num);
    position: absolute;
    top: -0.15em;
    right: 1rem;
    font-family: "DM Serif Display", serif;
    font-size: clamp(6rem, 10vw, 9rem);
    color: rgba(180, 120, 40, 0.06);
    line-height: 1;
    pointer-events: none;
    user-select: none;
}

/* Pane top section: eyebrow + title */
.pane-eyebrow {
    font-size: 0.7rem;
    font-weight: 700;
    letter-spacing: 0.16em;
    text-transform: uppercase;
    color: var(--orange);
    margin-bottom: 0.3rem;
}
.pane-title {
    font-family: "DM Serif Display", serif;
    font-size: clamp(1.6rem, 2.6vw, 2.2rem);
    color: var(--navy);
    line-height: 1.12;
    margin-bottom: 0;
    letter-spacing: -0.02em;
    font-weight: 400;
}

/* Divider below title */
.pane-divider {
    width: 48px;
    height: 3px;
    background: linear-gradient(90deg, var(--orange), rgba(253, 99, 52, 0.15));
    border-radius: 3px;
    margin: 0.6rem 0 0.85rem;
    flex-shrink: 0;
}

/* Research topic list — top-anchored, consistent row heights */
.track-list {
    display: flex;
    flex-direction: column;
    gap: 0;
    flex: 1;
    justify-content: flex-start;
}
.track-list li {
    display: flex;
    align-items: center;
    gap: 1.1rem;
    padding: 0.75rem 1rem;
    border-bottom: 1px solid rgba(180, 130, 60, 0.1);
    font-size: 1.05rem;
    color: var(--text);
    transition:
        background 0.22s var(--ease-out),
        padding-left 0.22s var(--ease-out);
    position: relative;
    font-weight: 500;
}
.track-list li:last-child {
    border-bottom: none;
}
.track-list li:hover {
    background: rgba(253, 99, 52, 0.045);
    padding-left: 1.3rem;
}
/* Chevron icon badge per list item */
.track-list li::before {
    content: "";
    display: block;
    flex-shrink: 0;
    width: 24px;
    height: 24px;
    border-radius: 7px;
    background: rgba(253, 99, 52, 0.1);
    border: 1px solid rgba(253, 99, 52, 0.22);
    background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23fd6334' stroke-width='2.5' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolyline points='9 18 15 12 9 6'/%3E%3C/svg%3E");
    background-repeat: no-repeat;
    background-position: center;
    background-size: 14px;
}

/* Bottom progress strip */
.tracks-progress {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 0.5rem;
    padding: 0.6rem 1.5rem;
    border-top: 1px solid rgba(180, 130, 60, 0.1);
    background: rgba(255, 255, 255, 0.5);
    flex-shrink: 0;
}
.track-pip {
    width: 6px;
    height: 6px;
    border-radius: 50%;
    background: rgba(180, 130, 60, 0.2);
    transition: all 0.3s var(--ease-out);
    cursor: pointer;
    border: none;
    padding: 0;
    flex-shrink: 0;
}
.track-pip.active {
    width: 22px;
    border-radius: 3px;
    background: var(--orange);
    box-shadow: 0 0 8px var(--orange-glow);
}
.tracks-progress-label {
    margin-left: auto;
    font-size: 0.72rem;
    font-weight: 700;
    letter-spacing: 0.1em;
    text-transform: uppercase;
    color: var(--text-muted);
    opacity: 0.6;
}
.tracks-pips-wrapper {
    display: flex;
    align-items: center;
    gap: 0.5rem;
    flex: 1;
}
.tracks-nav-btns {
    display: flex;
    align-items: center;
    gap: 0.5rem;
    margin-left: 1rem;
}
.tracks-nav-btn {
    width: 38px;
    height: 38px;
    border-radius: 50%;
    border: 1px solid rgba(180, 130, 60, 0.2);
    background: #fff;
    color: var(--navy);
    cursor: pointer;
    display: flex;
    align-items: center;
    justify-content: center;
    transition: all 0.2s ease;
    box-shadow: 0 2px 8px rgba(0, 0, 0, 0.03);
}
.tracks-nav-btn:hover {
    background: var(--navy);
    color: #fff;
    border-color: var(--navy);
    transform: translateY(-2px);
    box-shadow: 0 4px 12px rgba(0, 0, 0, 0.1);
}

@keyframes fadeUp {
    from {
        opacity: 0;
        transform: translateY(12px);
    }
    to {
        opacity: 1;
        transform: translateY(0);
    }
}

/* ═══════════════ OBJECTIVES ═══════════════ */
.objectives {
    /* 90vh hard cap */
    height: 90vh;
    min-height: unset;
    overflow: hidden;
    padding: 0;
    position: relative;
    display: flex;
    flex-direction: column;
    justify-content: stretch;

    /*
     * Rich radial navy gradient — same blue family, dramatically more depth.
     * Central highlight 10% lighter than the edges to give the sense of
     * a light source emanating from mid-section (like a subtle spotlight).
     */
    background: radial-gradient(
        ellipse 80% 60% at 50% 30%,
        #003580 0%,
        #002660 35%,
        #001840 65%,
        #000e28 100%
    );
}

/* ── CSS Perspective Grid (thin white lines, no JS) ── */
.obj-grid-bg {
    position: absolute;
    inset: 0;
    z-index: 0;
    pointer-events: none;
    overflow: hidden;
    /*
     * Two overlapping repeating-linear-gradients create a cross-hatch grid.
     * Very low opacity (0.07) keeps it subtle — visible on dark bg, invisible
     * on card surfaces. background-size sets the cell size.
     */
    background-image:
        repeating-linear-gradient(
            0deg,
            rgba(255, 255, 255, 0.065) 0px,
            rgba(255, 255, 255, 0.065) 1px,
            transparent 1px,
            transparent 60px
        ),
        repeating-linear-gradient(
            90deg,
            rgba(255, 255, 255, 0.065) 0px,
            rgba(255, 255, 255, 0.065) 1px,
            transparent 1px,
            transparent 60px
        );
    background-size: 60px 60px;
    background-position: center center;
    /* Subtle perspective warp — makes the flat grid feel like a 3D floor */
    -webkit-mask-image: radial-gradient(
        ellipse 90% 90% at 50% 50%,
        rgba(0, 0, 0, 0.55) 0%,
        transparent 85%
    );
    mask-image: radial-gradient(
        ellipse 90% 90% at 50% 50%,
        rgba(0, 0, 0, 0.55) 0%,
        transparent 85%
    );
    animation: gridShift 30s linear infinite;
}
@keyframes gridShift {
    0% {
        background-position: 0px 0px;
    }
    100% {
        background-position: 60px 60px;
    }
}

/* ── Ambient glow orbs ── */
.obj-glows {
    position: absolute;
    inset: 0;
    z-index: 0;
    pointer-events: none;
    overflow: hidden;
}
.obj-glow {
    position: absolute;
    border-radius: 50%;
    filter: blur(70px);
    opacity: 0;
    animation: objGlowPulse 8s ease-in-out infinite;
}
.obj-glow--1 {
    width: 420px;
    height: 420px;
    top: -80px;
    right: 5%;
    background: radial-gradient(
        circle,
        rgba(0, 90, 200, 0.35) 0%,
        transparent 70%
    );
    animation-delay: 0s;
    animation-duration: 9s;
}
.obj-glow--2 {
    width: 320px;
    height: 320px;
    bottom: -60px;
    left: 8%;
    background: radial-gradient(
        circle,
        rgba(0, 60, 160, 0.3) 0%,
        transparent 70%
    );
    animation-delay: 3s;
    animation-duration: 11s;
}
.obj-glow--3 {
    width: 260px;
    height: 260px;
    top: 40%;
    left: 50%;
    transform: translateX(-50%);
    background: radial-gradient(
        circle,
        rgba(253, 99, 52, 0.08) 0%,
        transparent 70%
    );
    animation-delay: 5s;
    animation-duration: 13s;
}
@keyframes objGlowPulse {
    0%,
    100% {
        opacity: 0;
        transform: scale(0.92);
    }
    50% {
        opacity: 1;
        transform: scale(1.06);
    }
}
.obj-glow--3 {
    /* Override transform for center glow */
    animation-name: objGlowPulseCenter;
}
@keyframes objGlowPulseCenter {
    0%,
    100% {
        opacity: 0;
        transform: translateX(-50%) scale(0.9);
    }
    50% {
        opacity: 1;
        transform: translateX(-50%) scale(1.05);
    }
}

/* ── Inner layout: two-column 50/50 split ── */
.obj-inner {
    position: relative;
    z-index: 1;
    width: 100%;
    max-width: 1400px;
    margin: 0 auto;
    padding: clamp(1.5rem, 3vh, 2.5rem) clamp(20px, 3vw, 56px);
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: clamp(2rem, 3vw, 3.5rem);
    align-items: stretch;
    height: 100%;
}

/* ── LEFT: Header + decorative stat ── */
.obj-left {
    display: flex;
    flex-direction: column;
    justify-content: space-between;
    padding: 0.5rem 0;
}
.obj-header {
    display: flex;
    flex-direction: column;
    gap: 0.6rem;
}
.obj-eyebrow {
    display: flex;
    align-items: center;
    gap: 0.5rem;
    font-size: 0.68rem;
    font-weight: 700;
    letter-spacing: 0.18em;
    text-transform: uppercase;
    color: rgba(255, 160, 100, 1);
}
.obj-eyebrow-dot {
    width: 5px;
    height: 5px;
    border-radius: 50%;
    background: rgba(255, 160, 100, 1);
    box-shadow: 0 0 6px rgba(255, 160, 100, 0.5);
    flex-shrink: 0;
}
.obj-heading {
    font-family: "DM Serif Display", serif;
    font-size: clamp(2.8rem, 4vw, 4.2rem);
    color: #fff;
    line-height: 1.05;
    letter-spacing: -0.03em;
}
.obj-subline {
    font-size: 1.05rem;
    color: rgba(255, 255, 255, 0.52);
    line-height: 1.7;
    margin-top: 0.35rem;
}

/* Decorative stat block at bottom of left col */
.obj-left-stat {
    display: none;
    flex-direction: column;
    gap: 0.3rem;
    padding: 1.1rem 1.3rem;
    border: 1px solid rgba(255, 255, 255, 0.1);
    border-radius: 14px;
    background: rgba(255, 255, 255, 0.04);
    backdrop-filter: blur(10px);
}
.obj-stat-num {
    font-family: "DM Serif Display", serif;
    font-size: clamp(3rem, 4.5vw, 4.5rem);
    color: var(--orange);
    line-height: 1;
    opacity: 0.8;
}
.obj-stat-label {
    font-size: 0.8rem;
    color: rgba(255, 255, 255, 0.45);
    line-height: 1.5;
    max-width: 180px;
}

/* ── RIGHT: Glass panel container ── */
.obj-right {
    display: flex;
    align-items: stretch;
    padding: 0.5rem 0;
}
.obj-panel {
    flex: 1;
    display: flex;
    flex-direction: column;
    background: rgba(255, 255, 255, 0.05);
    border: 1px solid rgba(255, 255, 255, 0.1);
    border-radius: 18px;
    backdrop-filter: blur(20px);
    -webkit-backdrop-filter: blur(20px);
    box-shadow:
        0 2px 30px rgba(0, 0, 0, 0.25),
        inset 0 1px 0 rgba(255, 255, 255, 0.08);
    overflow: hidden;
}

/* ── Objective row — compact horizontal card ── */
.obj-row {
    display: flex;
    align-items: center;
    gap: 1.5rem;
    padding: 0 1.8rem;
    flex: 1; /* equal height distribution */
    border-bottom: 1px solid rgba(255, 255, 255, 0.07);
    transition:
        background 0.25s var(--ease-out),
        padding-left 0.25s var(--ease-out);
    position: relative;
    cursor: default;
}
.obj-row--last {
    border-bottom: none;
}
.obj-row:hover {
    background: rgba(255, 255, 255, 0.055);
    padding-left: 2.2rem;
}

/* Orange left-edge accent on hover */
.obj-row::before {
    content: "";
    position: absolute;
    left: 0;
    top: 20%;
    bottom: 20%;
    width: 3px;
    border-radius: 0 2px 2px 0;
    background: var(--orange);
    opacity: 0;
    transition: opacity 0.25s var(--ease-out);
}
.obj-row:hover::before {
    opacity: 1;
}

/* Serif number */
.obj-row-num {
    font-family: "DM Serif Display", serif;
    font-size: clamp(1.8rem, 2.5vw, 2.4rem);
    color: var(--orange);
    opacity: 0.45;
    line-height: 1;
    flex-shrink: 0;
    min-width: 2.8rem;
    transition: opacity 0.25s;
}
.obj-row:hover .obj-row-num {
    opacity: 0.85;
}

/* Vertical divider between number and text */
.obj-row-divider {
    width: 1px;
    align-self: stretch;
    background: rgba(255, 255, 255, 0.08);
    flex-shrink: 0;
    margin: 0.85rem 0;
}

/* Body: title + description */
.obj-row-body {
    display: flex;
    flex-direction: column;
    gap: 0.25rem;
    flex: 1;
    padding: 0.65rem 0;
}
.obj-row-title {
    font-family: "Plus Jakarta Sans", sans-serif;
    font-size: clamp(1rem, 1.3vw, 1.2rem);
    font-weight: 700;
    color: #fff;
    line-height: 1.2;
    letter-spacing: 0.005em;
}
.obj-row-text {
    font-size: clamp(0.85rem, 1.05vw, 0.95rem);
    color: rgba(255, 255, 255, 0.55);
    line-height: 1.6;
}

/* ── Mobile responsive ── */
@media (max-width: 900px) {
    .obj-inner {
        grid-template-columns: 1fr;
        height: auto;
    }
    .objectives {
        height: auto;
        overflow: visible;
    }
    .obj-left {
        max-width: 100%;
        min-width: unset;
        flex-direction: row;
        flex-wrap: wrap;
        gap: 1.5rem;
        align-items: flex-end;
    }
    .obj-header {
        flex: 1 1 260px;
    }
    .obj-left-stat {
        display: flex;
        flex: 0 0 auto;
    }
    .obj-right {
        padding: 0;
    }
}
@media (max-width: 480px) {
    .obj-left {
        flex-direction: column;
        gap: 1.25rem;
    }
    .obj-row {
        gap: 1rem;
        padding: 0 1.2rem;
    }
    .obj-row:hover {
        padding-left: 1.5rem;
    }
    .obj-row-num {
        font-size: 1.6rem;
        min-width: 2.2rem;
    }
}

/* ═══════════════ CFP ═══════════════ */
.cfp {
    /* 90vh cap — matching the site standard */
    height: 90vh;
    min-height: unset;
    overflow: hidden;
    padding: 0;
    position: relative;
    display: flex;
    flex-direction: column;

    /*
     * Warm white gradient — distinct from About (cool grey-blue)
     * and Tracks (ivory-amber). Light, airy, professional feel
     * appropriate for an academic submission section.
     */
    background: linear-gradient(
        150deg,
        #ffffff 0%,
        #fdf9f6 40%,
        #faf4ee 75%,
        #f6ede3 100%
    );
}

/* ── Ambient decorative shapes ── */
.cfp-shapes {
    position: absolute;
    inset: 0;
    pointer-events: none;
    overflow: hidden;
    z-index: 0;
}
.cfp-shape {
    position: absolute;
    border-radius: 50%;
    opacity: 0.04;
}
.cfp-shape--1 {
    width: 500px;
    height: 500px;
    top: -120px;
    right: -80px;
    background: var(--orange);
    animation: cfpShapeFloat1 18s ease-in-out infinite;
}
.cfp-shape--2 {
    width: 320px;
    height: 320px;
    bottom: -80px;
    left: -60px;
    background: var(--navy);
    border-radius: 40% 60% 70% 30% / 40% 50% 60% 50%;
    animation: cfpShapeFloat2 22s ease-in-out infinite reverse;
}
.cfp-shape--3 {
    width: 200px;
    height: 200px;
    top: 45%;
    left: 28%;
    background: var(--orange);
    border-radius: 30% 70% 50% 50% / 60% 40% 60% 40%;
    opacity: 0.03;
    animation: cfpShapeFloat1 14s ease-in-out infinite 4s;
}
@keyframes cfpShapeFloat1 {
    0%,
    100% {
        transform: translateY(0px) rotate(0deg);
    }
    40% {
        transform: translateY(-20px) rotate(6deg);
    }
    70% {
        transform: translateY(-10px) rotate(-4deg);
    }
}
@keyframes cfpShapeFloat2 {
    0%,
    100% {
        transform: translateY(0px) translateX(0) rotate(0deg);
    }
    50% {
        transform: translateY(-16px) translateX(12px) rotate(10deg);
    }
}

/* ── Inner three-column grid ── */
.cfp-inner {
    position: relative;
    z-index: 1;
    width: 100%;
    max-width: 1400px;
    margin: 0 auto;
    padding: clamp(2.5rem, 5vh, 5rem) clamp(32px, 5vw, 80px);
    display: grid;
    grid-template-columns: 1fr 1.2fr 1.2fr;
    gap: clamp(2.5rem, 4vw, 5rem);
    align-items: stretch;
    height: 100%;
}

/* ── LEFT column: header + peer-review notice ── */
.cfp-left {
    display: flex;
    flex-direction: column;
    justify-content: space-between;
    padding: 0.5rem 0;
}
.cfp-header {
    display: flex;
    flex-direction: column;
    gap: 0.65rem;
}
.cfp-eyebrow {
    display: flex;
    align-items: center;
    gap: 0.5rem;
    font-size: 0.68rem;
    font-weight: 700;
    letter-spacing: 0.18em;
    text-transform: uppercase;
    color: var(--orange);
}
.cfp-eyebrow-dot {
    width: 5px;
    height: 5px;
    border-radius: 50%;
    background: var(--orange);
    box-shadow: 0 0 6px var(--orange-glow);
    flex-shrink: 0;
}
.cfp-heading {
    font-family: "DM Serif Display", serif;
    font-size: clamp(2.6rem, 3.8vw, 4rem);
    color: var(--navy);
    line-height: 1.05;
    letter-spacing: -0.03em;
}
.cfp-subline {
    font-size: 0.95rem;
    color: var(--text-muted);
    line-height: 1.7;
    max-width: 300px;
}

/* ── Poster Preview & Action Row ── */
.cfp-action-row {
    display: flex;
    flex-direction: column;
    align-items: flex-start;
    gap: 1.5rem;
    margin-top: 1.5rem;
}
.cfp-poster-preview {
    position: relative;
    width: 100%;
    max-width: 150px;
    border-radius: 8px;
    overflow: hidden;
    cursor: pointer;
    box-shadow: 0 4px 15px rgba(0, 33, 71, 0.1);
    border: 1px solid rgba(0, 33, 71, 0.05);
    flex-shrink: 0;
    transition:
        transform 0.3s ease,
        box-shadow 0.3s ease;
}
.cfp-poster-preview:hover {
    transform: translateY(-4px);
    box-shadow: 0 8px 25px rgba(0, 33, 71, 0.15);
}
.cfp-poster-img {
    width: 100%;
    height: auto;
    display: block;
    background: #fff;
    object-fit: cover;
}
.cfp-poster-overlay {
    position: absolute;
    inset: 0;
    background: rgba(0, 33, 71, 0.6);
    display: flex;
    align-items: center;
    justify-content: center;
    opacity: 0;
    transition: opacity 0.3s ease;
}
.cfp-poster-preview:hover .cfp-poster-overlay {
    opacity: 1;
}
.cfp-poster-overlay span {
    color: #fff;
    font-weight: 600;
    font-size: 0.85rem;
    padding: 0.6rem 1.2rem;
    border: 1px solid rgba(255, 255, 255, 0.4);
    border-radius: 20px;
    background: rgba(0, 0, 0, 0.3);
    backdrop-filter: blur(4px);
}

/* ── Poster Modal ── */
.poster-modal {
    position: fixed;
    inset: 0;
    z-index: 9999;
    display: flex;
    align-items: center;
    justify-content: center;
    opacity: 0;
    pointer-events: none;
    transition: opacity 0.3s ease;
}
.poster-modal.active {
    opacity: 1;
    pointer-events: auto;
}
.poster-modal-overlay {
    position: absolute;
    inset: 0;
    background: rgba(0, 10, 25, 0.85);
    backdrop-filter: blur(8px);
}
.poster-modal-content {
    position: relative;
    z-index: 10000;
    max-width: 90vw;
    max-height: 90vh;
    border-radius: 8px;
    overflow: hidden;
    box-shadow: 0 10px 40px rgba(0, 0, 0, 0.5);
    transform: scale(0.95);
    transition: transform 0.3s ease;
}
.poster-modal.active .poster-modal-content {
    transform: scale(1);
}
.poster-modal-content img {
    display: block;
    max-width: 100%;
    max-height: 90vh;
    object-fit: contain;
}
.poster-modal-close {
    position: absolute;
    top: 10px;
    right: 15px;
    background: rgba(0, 0, 0, 0.6);
    color: #fff;
    border: none;
    font-size: 2rem;
    width: 40px;
    height: 40px;
    border-radius: 50%;
    cursor: pointer;
    display: flex;
    align-items: center;
    justify-content: center;
    transition: background 0.2s;
}
.poster-modal-close:hover {
    background: var(--orange);
}

.cfp-notice {
    display: flex;
    align-items: flex-start;
    gap: 1rem;
    padding: 1.1rem 1.3rem;
    background: linear-gradient(
        135deg,
        rgba(253, 99, 52, 0.06),
        rgba(253, 99, 52, 0.02)
    );
    border: 1px solid rgba(253, 99, 52, 0.18);
    border-radius: 14px;
    margin-top: 0;
}
.cfp-notice svg {
    width: 22px;
    height: 22px;
    flex-shrink: 0;
    stroke: var(--orange);
    margin-top: 0.1rem;
}
.cfp-notice strong {
    display: block;
    font-size: 0.95rem;
    font-weight: 700;
    color: var(--navy);
    margin-bottom: 0.2rem;
}
.cfp-notice span {
    font-size: 0.85rem;
    color: var(--text-muted);
    line-height: 1.55;
}

/* ── Column heading shared style ── */
.cfp-col-heading {
    font-family: "Plus Jakarta Sans", sans-serif;
    font-size: 0.72rem;
    font-weight: 700;
    letter-spacing: 0.14em;
    text-transform: uppercase;
    color: var(--text-muted);
    margin-bottom: 1.25rem;
    display: flex;
    align-items: center;
    gap: 0.6rem;
}
.cfp-col-heading::before {
    content: "";
    display: block;
    width: 24px;
    height: 2px;
    background: var(--orange);
    border-radius: 2px;
    flex-shrink: 0;
}

/* ── MIDDLE column: Submission guideline steps ── */
.cfp-mid {
    display: flex;
    flex-direction: column;
    padding: 0.5rem 0;
}
.cfp-steps {
    display: flex;
    flex-direction: column;
    flex: 1;
    gap: 0;
    background: rgba(255, 255, 255, 0.7);
    border: 1px solid rgba(180, 130, 60, 0.12);
    border-radius: 16px;
    backdrop-filter: blur(16px);
    -webkit-backdrop-filter: blur(16px);
    box-shadow: 0 2px 20px rgba(0, 33, 71, 0.06);
    overflow: hidden;
}
.cfp-step {
    display: flex;
    align-items: center;
    gap: 1.6rem;
    padding: 1.2rem 2rem;
    flex: 1;
    border-bottom: 1px solid rgba(180, 130, 60, 0.09);
    transition: background 0.25s var(--ease-out);
    position: relative;
}
.cfp-step--last {
    border-bottom: none;
}
.cfp-step:hover {
    background: rgba(253, 99, 52, 0.03);
}
.cfp-step::before {
    content: "";
    position: absolute;
    left: 0;
    top: 22%;
    bottom: 22%;
    width: 3px;
    border-radius: 0 2px 2px 0;
    background: var(--orange);
    opacity: 0;
    transition: opacity 0.25s;
}
.cfp-step:hover::before {
    opacity: 1;
}

.cfp-step-badge {
    width: 54px;
    height: 54px;
    border-radius: 14px;
    background: rgba(253, 99, 52, 0.08);
    border: 1px solid rgba(253, 99, 52, 0.18);
    display: flex;
    align-items: center;
    justify-content: center;
    flex-shrink: 0;
    transition:
        background 0.25s,
        transform 0.25s;
}
.cfp-step:hover .cfp-step-badge {
    background: rgba(253, 99, 52, 0.14);
    transform: scale(1.07);
}
.cfp-step-badge svg {
    width: 22px;
    height: 22px;
    stroke: var(--orange);
}
.cfp-step-body h4 {
    font-size: 1.12rem;
    font-weight: 700;
    color: var(--navy);
    margin-bottom: 0.25rem;
}
.cfp-step-body p {
    font-size: 0.97rem;
    color: var(--text-muted);
    line-height: 1.6;
}

/* ── RIGHT column: Conference output tiles 2×2 ── */
.cfp-right {
    display: flex;
    flex-direction: column;
    padding: 0.5rem 0;
}
.cfp-outputs {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 0.85rem;
    flex: 1;
    align-content: stretch;
}
.cfp-output-tile {
    display: flex;
    flex-direction: column;
    gap: 0.85rem;
    padding: 1.9rem 1.75rem;
    background: rgba(255, 255, 255, 0.75);
    border: 1px solid rgba(0, 33, 71, 0.08);
    border-radius: 14px;
    box-shadow: 0 2px 12px rgba(0, 33, 71, 0.05);
    transition:
        transform 0.25s var(--ease-out),
        box-shadow 0.25s var(--ease-out),
        background 0.25s;
    position: relative;
    overflow: hidden;
}
.cfp-output-tile::before {
    content: "";
    position: absolute;
    top: 0;
    left: 0;
    right: 0;
    height: 2px;
    background: linear-gradient(
        90deg,
        var(--orange) 0%,
        rgba(253, 99, 52, 0.2) 70%,
        transparent 100%
    );
    opacity: 0.6;
    border-radius: 14px 14px 0 0;
    transition: opacity 0.25s;
}
.cfp-output-tile:hover {
    transform: translateY(-3px);
    box-shadow: 0 8px 24px rgba(0, 33, 71, 0.1);
    background: rgba(255, 255, 255, 0.95);
}
.cfp-output-tile:hover::before {
    opacity: 1;
}

.cfp-output-icon {
    width: 50px;
    height: 50px;
    border-radius: 13px;
    background: rgba(253, 99, 52, 0.08);
    border: 1px solid rgba(253, 99, 52, 0.16);
    display: flex;
    align-items: center;
    justify-content: center;
    flex-shrink: 0;
}
.cfp-output-icon svg {
    width: 22px;
    height: 22px;
    stroke: var(--orange);
}
.cfp-output-tile h4 {
    font-size: 1.08rem;
    font-weight: 700;
    color: var(--navy);
    line-height: 1.2;
}
.cfp-output-tile p {
    font-size: 0.92rem;
    color: var(--text-muted);
    line-height: 1.65;
}

/* ── Mobile responsive ── */
@media (max-width: 1024px) {
    .cfp-inner {
        grid-template-columns: 1fr 1fr;
        grid-template-rows: auto auto;
    }
    .cfp-left {
        grid-column: 1 / -1;
        flex-direction: row;
        flex-wrap: wrap;
        gap: 1.5rem;
        align-items: flex-start;
    }
    .cfp-header {
        flex: 1 1 280px;
    }
    .cfp-notice {
        flex: 1 1 260px;
        margin-top: 0;
    }
}
@media (max-width: 768px) {
    .cfp {
        height: auto;
        overflow: visible;
    }
    .cfp-inner {
        grid-template-columns: 1fr;
        height: auto;
        padding-top: 1rem;
    }
    .cfp-left {
        flex-direction: column;
        gap: 0.75rem;
    }
    .cfp-header,
    .cfp-notice {
        flex: 0 0 auto;
    }
    .cfp-outputs {
        grid-template-columns: 1fr 1fr;
    }
}
@media (max-width: 480px) {
    .cfp-outputs {
        grid-template-columns: 1fr;
    }
}

/* ═══════════════ DATES & FEES ═══════════════ */

/* ── Section shell: strictly 90vh ──
   IMPORTANT: this overrides conflicting rules from the shared .section class
   which applies padding: clamp(80px,10vw,130px) 0 clamp(60px,8vw,100px)
   and flex-direction: column + justify-content: center ── */
.dates {
    position: relative;
    height: 90vh;
    min-height: 600px;
    max-height: 900px;
    /* Reset .section's padding — it eats 140–230px of the 90vh */
    padding: 0;
    /* Reset .section's flex-direction/justify-content */
    flex-direction: row;
    justify-content: flex-start;
    /* Stretch .dates-inner to fill full height */
    align-items: stretch;
    overflow: hidden;
    /* Rich multi-stop gradient: deep navy → steel-blue → near-black */
    background: linear-gradient(
        150deg,
        #001020 0%,
        #002147 28%,
        #003670 55%,
        #001a38 78%,
        #000d1f 100%
    );
}

/* ── SVG dot-grid overlay – gives the "perspective grid" texture ── */
.dates::before {
    content: "";
    position: absolute;
    inset: 0;
    background-image: radial-gradient(
        circle,
        rgba(255, 255, 255, 0.07) 1px,
        transparent 1px
    );
    background-size: 32px 32px;
    background-position: center center;
    mask-image: radial-gradient(
        ellipse 80% 80% at 50% 50%,
        black 40%,
        transparent 100%
    );
    -webkit-mask-image: radial-gradient(
        ellipse 80% 80% at 50% 50%,
        black 40%,
        transparent 100%
    );
    pointer-events: none;
    z-index: 0;
}

/* ── Diagonal ruled lines (secondary grid layer) ── */
.dates::after {
    content: "";
    position: absolute;
    inset: 0;
    background-image:
        linear-gradient(rgba(255, 255, 255, 0.025) 1px, transparent 1px),
        linear-gradient(90deg, rgba(255, 255, 255, 0.025) 1px, transparent 1px);
    background-size: 80px 80px;
    pointer-events: none;
    z-index: 0;
}

/* Decorative ambient glow blobs */
.dates-bg-shapes {
    position: absolute;
    inset: 0;
    pointer-events: none;
    overflow: hidden;
    z-index: 1;
}
.dates-shape {
    position: absolute;
    border-radius: 50%;
    filter: blur(72px);
    opacity: 0.22;
}
.dates-shape--1 {
    width: 500px;
    height: 500px;
    background: radial-gradient(
        circle,
        rgba(253, 99, 52, 0.65),
        transparent 70%
    );
    top: -140px;
    right: -60px;
    animation: datesGlow1 18s ease-in-out infinite;
}
.dates-shape--2 {
    width: 340px;
    height: 340px;
    background: radial-gradient(
        circle,
        rgba(0, 100, 200, 0.55),
        transparent 70%
    );
    bottom: -80px;
    left: 4%;
    animation: datesGlow2 22s ease-in-out infinite 4s;
}
.dates-shape--3 {
    width: 220px;
    height: 220px;
    background: radial-gradient(
        circle,
        rgba(253, 99, 52, 0.28),
        transparent 70%
    );
    top: 45%;
    left: 42%;
    animation: datesGlow1 16s ease-in-out infinite 10s;
}
@keyframes datesGlow1 {
    0%,
    100% {
        transform: scale(1) translate(0, 0);
    }
    50% {
        transform: scale(1.12) translate(24px, -18px);
    }
}
@keyframes datesGlow2 {
    0%,
    100% {
        transform: scale(1) translate(0, 0);
    }
    50% {
        transform: scale(1.08) translate(-16px, 22px);
    }
}

/* ── Inner two-column layout ── */
.dates-inner {
    position: relative;
    z-index: 2;
    width: 100%;
    max-width: 1360px;
    margin: 0 auto;
    padding: clamp(3rem, 5.2vh, 6rem) clamp(40px, 5.5vw, 88px);
    display: grid;
    grid-template-columns: 1fr 1.25fr;
    gap: clamp(3rem, 5vw, 6rem);
    /* KEY: stretch so columns fill the full 90vh minus padding */
    align-items: stretch;
    height: 100%;
    box-sizing: border-box;
}

/* ── Both columns: full-height flex column layout ── */
.dates-col {
    display: flex;
    flex-direction: column;
    height: 100%;
    gap: 0;
}

/* Left column: header at top, timeline fills all remaining height */
/* Right column: overridden below with justify-content: space-between */

/* ── Column header — sits at the top, never shrinks ── */
.dates-col-header {
    display: flex;
    flex-direction: column;
    gap: 0.5rem;
    flex-shrink: 0;
    padding-bottom: 1.75rem;
}
.dates-eyebrow {
    display: inline-flex;
    align-items: center;
    gap: 0.5rem;
    font-size: 0.72rem;
    font-weight: 700;
    letter-spacing: 0.2em;
    text-transform: uppercase;
    color: var(--orange);
}
.dates-eyebrow-dot {
    width: 6px;
    height: 6px;
    border-radius: 50%;
    background: var(--orange);
    box-shadow: 0 0 8px var(--orange-glow);
    flex-shrink: 0;
}
.dates-heading {
    font-family: "DM Serif Display", serif;
    font-size: clamp(2.2rem, 3vw, 2.8rem);
    color: #ffffff;
    line-height: 1.08;
    letter-spacing: -0.03em;
}
.dates-subline {
    font-size: 0.95rem;
    color: rgba(255, 255, 255, 0.55);
    line-height: 1.6;
    max-width: 340px;
    margin-top: 0.15rem;
}

/* ─── LEFT: Vertical Timeline fills the rest of the left column ─── */
.dates-timeline {
    /* Takes all remaining height after the header */
    flex: 1;
    display: flex;
    flex-direction: column;
    /* Distribute 5 items evenly — top item at top, bottom at bottom */
    justify-content: space-between;
    list-style: none;
    padding: 0;
    margin: 0;
    /* Allows the ::before line to be positioned relative to this container */
    position: relative;
}

/*
 * Single continuous connector line spanning from first to last dot.
 * This replaces the per-item .dtl-line approach which breaks when items
 * are distributed with space-between (gap areas have no line).
 * Left offset = center of marker (20px wide) = 10px, minus 1px (half of 2px line) = 9px
 */
.dates-timeline::before {
    content: "";
    position: absolute;
    left: 9px;
    top: 14px; /* half of first dot height (14px) ≈ center of first dot */
    bottom: 14px;
    width: 2px;
    background: linear-gradient(
        180deg,
        rgba(255, 255, 255, 0.2) 0%,
        rgba(255, 255, 255, 0.05) 100%
    );
    pointer-events: none;
    z-index: 0;
}

.dtl-item {
    display: flex;
    align-items: flex-start;
    gap: 1.25rem;
    position: relative;
}
.dtl-marker {
    display: flex;
    flex-direction: column;
    align-items: center;
    flex-shrink: 0;
    width: 20px;
    padding-top: 0.2rem;
}
.dtl-dot {
    width: 14px;
    height: 14px;
    border-radius: 50%;
    background: rgba(255, 255, 255, 0.14);
    border: 2px solid rgba(255, 255, 255, 0.3);
    flex-shrink: 0;
    transition:
        background 0.3s,
        border-color 0.3s,
        box-shadow 0.3s;
    /* Sit above the timeline ::before line */
    position: relative;
    z-index: 1;
}
/* Per-item lines hidden — replaced by ::before on the timeline */
.dtl-line {
    display: none;
}
.dtl-content {
    display: flex;
    flex-direction: column;
    gap: 0.18rem;
}
.dtl-date {
    font-family: "DM Serif Display", serif;
    font-size: 1.25rem;
    font-weight: 700;
    color: #fff;
    letter-spacing: -0.02em;
    line-height: 1.2;
}
.dtl-label {
    font-size: 0.92rem;
    color: rgba(255, 255, 255, 0.52);
    line-height: 1.4;
}
/* Highlighted timeline item — Conference Days */
.dtl-item--highlight .dtl-dot {
    background: var(--orange);
    border-color: var(--orange);
    box-shadow:
        0 0 0 4px rgba(253, 99, 52, 0.28),
        0 0 14px rgba(253, 99, 52, 0.55);
    width: 18px;
    height: 18px;
}
.dtl-item--highlight .dtl-date {
    font-size: 1.38rem;
    color: #fff;
}
.dtl-label--accent {
    color: var(--orange) !important;
    font-weight: 600;
    font-size: 0.95rem !important;
}
/* .dtl-item--highlight .dtl-line is hidden globally */

/* ─── RIGHT column: 3 zones pinned top / middle / bottom ─── */
.dates-col--right {
    /* 3 children: header (top) → table (middle) → QR strip (bottom) */
    justify-content: space-between;
}

/* Table wrapper — grows to fill the middle zone */
.reg-table-wrap {
    flex: 1; /* takes all height between header and QR strip */
    min-height: 0; /* prevent flex overflow in some browsers */
    display: flex;
    flex-direction: column;
    background: rgba(255, 255, 255, 0.055);
    border: 1px solid rgba(255, 255, 255, 0.12);
    border-radius: 16px;
    backdrop-filter: blur(18px);
    -webkit-backdrop-filter: blur(18px);
    overflow: hidden;
    box-shadow:
        0 4px 28px rgba(0, 0, 0, 0.3),
        inset 0 1px 0 rgba(255, 255, 255, 0.09);
}
/* Table fills the wrapper — rows distribute their height evenly */
.reg-table {
    width: 100%;
    height: 100%;
    border-collapse: collapse;
    table-layout: fixed;
}
.reg-th {
    font-family: "Plus Jakarta Sans", sans-serif;
    font-size: 0.7rem;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: 0.13em;
    color: rgba(255, 255, 255, 0.48);
    padding: 0.85rem 1.4rem;
    text-align: left;
    background: rgba(255, 255, 255, 0.04);
    border-bottom: 1px solid rgba(255, 255, 255, 0.08);
    /* Fixed row — doesn't grow */
    white-space: nowrap;
}
.reg-th:first-child {
    width: 44%;
}
.reg-th:nth-child(2),
.reg-th:nth-child(3) {
    width: 28%;
    text-align: center;
}
.reg-tr {
    border-bottom: 1px solid rgba(255, 255, 255, 0.06);
    transition: background 0.2s;
}
.reg-tr:last-child {
    border-bottom: none;
}
.reg-tr:hover {
    background: rgba(253, 99, 52, 0.065);
}
.reg-tr--special {
    background: rgba(253, 99, 52, 0.04);
}
.reg-tr--special:hover {
    background: rgba(253, 99, 52, 0.1);
}
.reg-td {
    padding: 0 1.4rem; /* no vertical padding — table height distributes it */
    vertical-align: middle;
}
.reg-td--cat {
    font-size: 0.97rem;
    font-weight: 600;
    color: rgba(255, 255, 255, 0.88);
    line-height: 1.4;
}
.reg-td--price {
    font-family: "DM Serif Display", serif;
    font-size: 1.2rem;
    color: #ffa07a;
    text-align: center;
    font-weight: 700;
}
.reg-tr--special .reg-td--price {
    color: #ffb899;
}
.reg-td--dash {
    color: rgba(255, 255, 255, 0.35);
    font-family: "Plus Jakarta Sans", sans-serif;
    font-size: 1.2rem;
    font-weight: 400;
    text-align: center;
}

/* QR strip — anchored to bottom: margin-top:auto pushes it down
   regardless of table height, space-between on parent reinforces this */
.reg-qr-strip {
    width: 100%;
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 1.5rem;
    flex-wrap: wrap;
    flex-shrink: 0;
    margin-top: auto;
    padding-top: 1.5rem;
}
.reg-qr-block {
    display: flex;
    flex-direction: row;
    align-items: center;
    gap: 1.5rem;
}
.reg-qr-frame {
    width: 80px;
    height: 80px;
    border-radius: 14px;
    background: #fff;
    padding: 5px;
    display: flex;
    align-items: center;
    justify-content: center;
    box-shadow: 0 4px 20px rgba(0, 0, 0, 0.32);
    flex-shrink: 0;
    overflow: hidden;
}
.reg-qr-img {
    width: 100%;
    height: 100%;
    object-fit: contain;
    display: block;
    border-radius: 7px;
}
.reg-qr-info {
    display: flex;
    flex-direction: column;
    gap: 0.18rem;
}
.reg-qr-label {
    font-size: 0.97rem;
    font-weight: 700;
    color: #fff;
}
.reg-qr-sub {
    font-size: 0.82rem;
    color: rgba(255, 255, 255, 0.45);
}
.reg-cta-btn {
    margin-left: auto;
    display: inline-flex;
    align-items: center;
    gap: 0.55rem;
    padding: 0.9rem 2rem;
    background: var(--orange);
    color: #fff;
    font-family: "Plus Jakarta Sans", sans-serif;
    font-size: 0.95rem;
    font-weight: 700;
    letter-spacing: 0.03em;
    border-radius: 50px;
    border: none;
    cursor: pointer;
    text-decoration: none;
    box-shadow: 0 5px 20px rgba(253, 99, 52, 0.44);
    transition:
        transform 0.22s var(--ease-out),
        box-shadow 0.22s var(--ease-out),
        background 0.2s;
    white-space: nowrap;
}
.reg-cta-btn svg {
    width: 16px;
    height: 16px;
    stroke: #fff;
    transition: transform 0.22s var(--ease-out);
}
.reg-cta-btn:hover {
    transform: translateY(-2px);
    box-shadow: 0 9px 28px rgba(253, 99, 52, 0.58);
    background: #e5531f;
}
.reg-cta-btn:hover svg {
    transform: translateX(4px);
}

/* ── Responsive ── */
@media (max-width: 1024px) {
    .dates {
        height: auto;
        min-height: 90vh;
        max-height: none;
    }
    .dates-inner {
        grid-template-columns: 1fr;
        gap: 3.5rem;
        padding-top: 3rem;
        padding-bottom: 3rem;
        height: auto;
    }
    .dates-col {
        height: auto;
    }
    .dates-timeline {
        justify-content: flex-start;
        gap: 2.2rem;
    }
    .dates-subline {
        max-width: 100%;
    }
    .reg-cta-btn {
        margin-left: 0;
    }
}
@media (max-width: 640px) {
    .dates-heading {
        font-size: clamp(1.8rem, 7vw, 2.5rem);
    }
    .dates-inner {
        padding-left: 1.25rem;
        padding-right: 1.25rem;
    }
    .reg-table-wrap {
        display: block;
        overflow-x: auto;
        -webkit-overflow-scrolling: touch;
        width: 100%;
        margin-bottom: 0.5rem;
        scrollbar-width: thin;
        scrollbar-color: rgba(255, 255, 255, 0.2) transparent;
    }
    .reg-table-wrap::-webkit-scrollbar {
        height: 6px;
    }
    .reg-table-wrap::-webkit-scrollbar-thumb {
        background: rgba(255, 255, 255, 0.2);
        border-radius: 4px;
    }
    .reg-table {
        min-width: 0;
        width: 100%;
        table-layout: auto;
    }
    .reg-th:first-child,
    .reg-th:nth-child(2),
    .reg-th:nth-child(3) {
        width: auto;
    }
    .reg-th {
        white-space: normal;
        word-break: break-word;
        font-size: 0.55rem;
        padding: 0.5rem 0.2rem;
        text-align: center;
    }
    .reg-td,
    .reg-td--cat {
        padding: 0.6rem 0.2rem;
        text-align: center;
    }
    .reg-td--cat {
        font-size: 0.72rem;
        white-space: normal;
        line-height: 1.3;
    }
    .reg-td--price {
        font-size: 0.85rem;
    }
    .reg-qr-strip {
        width: 100%;
        flex-direction: row;
        align-items: flex-end;
        justify-content: space-between;
        margin-top: 1.5rem;
    }
    .reg-qr-block {
        flex-direction: column;
        gap: 0.8rem;
        align-items: flex-start;
    }
    .reg-qr-info {
        text-align: left;
    }
    .reg-cta-btn {
        margin: 0;
        padding: 0.8rem 1.25rem;
        font-size: 0.85rem;
    }

    /* CFP Action Row mobile: Side-by-side to save vertical space */
    .cfp-action-row {
        flex-direction: row;
        align-items: center;
        gap: 0.8rem;
    }
    .cfp-poster-preview {
        max-width: 100px;
        margin: 0;
    }
    .cfp-notice {
        padding: 1rem;
        gap: 0.6rem;
        flex-direction: column;
        align-items: flex-start;
        justify-content: center;
        flex: 1;
    }
    .cfp-notice svg {
        display: none;
    }
    .cfp-notice strong {
        font-size: 0.9rem;
    }
    .cfp-notice span {
        font-size: 0.72rem;
    }
}

/* ═══════════════ COMMITTEE ═══════════════ */
.committee {
    /* Exact same warm-white gradient as the CFP section */
    background: linear-gradient(
        150deg,
        #bdd7ff 0%,
        #fddc9a 40%,
        #faf4ee 75%,
        #bdd7ff 100%
    );
    padding-top: clamp(30px, 4vw, 60px);
    justify-content: flex-start;
    position: relative;
    overflow: hidden;
}

/* ── Floating decorative shapes (same system as .cfp-shapes) ── */
.cmte-shapes {
    position: absolute;
    inset: 0;
    pointer-events: none;
    overflow: hidden;
    z-index: 0;
}
.cmte-shape {
    position: absolute;
    border-radius: 50%;
    opacity: 0.055;
}
.cmte-shape--1 {
    width: 520px;
    height: 520px;
    top: -130px;
    left: -90px;
    background: var(--orange);
    animation: cfpShapeFloat1 20s ease-in-out infinite;
}
.cmte-shape--2 {
    width: 340px;
    height: 340px;
    bottom: -80px;
    right: -60px;
    background: var(--navy);
    border-radius: 40% 60% 70% 30% / 40% 50% 60% 50%;
    animation: cfpShapeFloat2 24s ease-in-out infinite reverse;
}
.cmte-shape--3 {
    width: 220px;
    height: 220px;
    top: 40%;
    right: 30%;
    background: var(--orange);
    border-radius: 30% 70% 50% 50% / 60% 40% 60% 40%;
    opacity: 0.035;
    animation: cfpShapeFloat1 16s ease-in-out infinite 5s;
}
/* Shapes sit below content */
.committee .container {
    position: relative;
    z-index: 1;
}
/* ── Full-bleed photo cards (Chief Patrons) ── */
.photo-cards-row {
    display: flex;
    justify-content: center;
    gap: 2.5rem;
    margin: 0 0 0.5rem;
}
.photo-card {
    flex: 0 0 calc(26% - 1rem);
    min-width: 0;
    position: relative;
    border-radius: 16px;
    overflow: hidden;
    aspect-ratio: 3 / 4;
    max-height: 42vh;
    box-shadow: 0 8px 32px rgba(0, 20, 60, 0.18);
    cursor: default;
    transition:
        transform 0.35s ease,
        box-shadow 0.35s ease;
}
.photo-card:hover {
    transform: translateY(-6px);
    box-shadow: 0 16px 48px rgba(0, 20, 60, 0.26);
}
.photo-card-img {
    position: absolute;
    inset: 0;
    width: 100%;
    height: 100%;
    object-fit: cover;
    object-position: center top;
    display: block;
}
/* Dark gradient rising from bottom ~55% of card */
.photo-card-overlay {
    position: absolute;
    inset: 0;
    background: linear-gradient(
        to top,
        rgba(5, 15, 40, 0.9) 0%,
        rgba(5, 15, 40, 0.55) 38%,
        rgba(5, 15, 40, 0) 65%
    );
}
.photo-card-info {
    position: absolute;
    bottom: 0;
    left: 0;
    right: 0;
    padding: 1.4rem 1.4rem 1.6rem;
    z-index: 2;
}
.photo-card-badge {
    display: inline-block;
    font-size: 0.65rem;
    font-weight: 800;
    letter-spacing: 0.1em;
    text-transform: uppercase;
    color: var(--navy);
    background: rgba(255, 185, 100, 0.92);
    padding: 0.2rem 0.65rem;
    border-radius: 50px;
    margin-bottom: 0.55rem;
    backdrop-filter: blur(4px);
}
/* Distinguished Guests — teal/green badge */
.photo-card-badge--guest {
    background: rgba(100, 210, 180, 0.92);
    color: #0a2a22;
}
.photo-card-name {
    font-size: 1.25rem;
    font-weight: 700;
    color: #fff;
    margin: 0 0 0.2rem;
    line-height: 1.2;
    text-shadow: 0 1px 4px rgba(0, 0, 0, 0.4);
}
.photo-card-org {
    font-size: 0.8rem;
    color: rgba(255, 255, 255, 0.72);
    margin: 0;
}

.people-grid {
    display: grid;
    gap: 1.5rem;
    margin-bottom: 0.5rem;
}

.cols-3 {
    grid-template-columns: repeat(3, 1fr);
}
.cols-4 {
    grid-template-columns: repeat(4, 1fr);
}
.person-card {
    padding: 2rem;
    text-align: center;
}
.person-card h4 {
    font-size: 1.1rem;
    margin: 0.75rem 0 0.35rem;
}
.person-role {
    font-size: 0.85rem;
    color: var(--orange);
    font-weight: 600;
}
.person-org {
    font-size: 0.82rem;
    color: var(--text-muted);
}
.person-avatar {
    width: 90px;
    height: 90px;
    border-radius: 50%;
    background: linear-gradient(135deg, var(--navy), #003a7a);
    color: #fff;
    font-family: "DM Serif Display", serif;
    font-size: 1.25rem;
    font-weight: 700;
    letter-spacing: 0.04em;
    display: flex;
    align-items: center;
    justify-content: center;
    margin: 0 auto;
    border: 4px solid #c8d8f0;
    box-shadow: 0 4px 16px rgba(0, 30, 80, 0.14);
}
.av-advisor {
    background: linear-gradient(135deg, #b34a1f, var(--orange));
    border-color: #ffd8c2;
}
/* Chief Patron primary — bigger circle */
.patron-card--primary .person-avatar {
    width: 110px;
    height: 110px;
    font-size: 1.5rem;
    border-width: 5px;
    border-color: #a8c0e8;
    box-shadow: 0 6px 24px rgba(0, 30, 80, 0.2);
}
/* Regular patron size */
.patron-card .person-avatar {
    width: 90px;
    height: 90px;
    font-size: 1.25rem;
}
/* Chairperson — orange accent ring */
.chair-card .person-avatar {
    width: 100px;
    height: 100px;
    font-size: 1.4rem;
    border-color: var(--orange);
    box-shadow:
        0 0 0 4px rgba(253, 99, 52, 0.18),
        0 6px 20px rgba(253, 99, 52, 0.14);
}
/* Guest cards — warm amber ring */
.guest-card .person-avatar {
    width: 90px;
    height: 90px;
    font-size: 1.25rem;
    background: linear-gradient(135deg, #7a3000, #c85800);
    border-color: #ffd0a0;
    box-shadow: 0 4px 16px rgba(200, 88, 0, 0.16);
}
/* Helper: single card centered in grid */
.cmte-single-center {
    display: flex;
    justify-content: center;
}
.cmte-single-center > * {
    max-width: 280px;
    width: 100%;
}
/* Circular photo frame — wraps the actual <img> */
.person-photo-wrap {
    width: 100px;
    height: 100px;
    border-radius: 50%;
    overflow: hidden;
    margin: 0 auto 0.1rem;
    border: 4px solid #c8d8f0;
    box-shadow: 0 4px 16px rgba(0, 30, 80, 0.14);
    background: linear-gradient(135deg, var(--navy), #003a7a);
    display: flex;
    align-items: center;
    justify-content: center;
    flex-shrink: 0;
}
.patron-card .person-photo-wrap {
    width: 100px;
    height: 100px;
}
.person-photo {
    width: 100%;
    height: 100%;
    object-fit: cover;
    object-position: center top;
    display: block;
    border-radius: 50%;
}
/* Narrow two-col grid (max ~700px wide, centered) */
.cmte-narrow {
    max-width: 680px;
    margin-left: auto;
    margin-right: auto;
}
/* Two-col grid */
.cols-2 {
    grid-template-columns: repeat(2, 1fr);
}
/* Orange pill label inside a card */
.cmte-pill {
    display: inline-block;
    font-size: 0.7rem;
    font-weight: 800;
    letter-spacing: 0.12em;
    text-transform: uppercase;
    color: #fff;
    background: var(--orange);
    padding: 0.25rem 0.75rem;
    border-radius: 50px;
    margin-bottom: 0.6rem;
}
/* Speaker / text-only card (no avatar, left-aligned) */
.speaker-card {
    text-align: left;
    padding: 1.4rem 1.6rem;
}
.speaker-card h4 {
    font-size: 1rem;
    margin: 0 0 0.3rem;
}
/* card-title sub-header inside committee grid cards */
.card-title {
    font-size: 1.4rem;
    font-weight: 700;
    color: var(--navy);
    margin: 0 0 1rem;
}
/* small footnote */
.small-note {
    font-size: 0.78rem;
    color: var(--text-muted);
    margin-top: 1rem;
    font-style: italic;
}
.role-card {
    padding: 1.5rem;
}
.role-tag {
    display: inline-block;
    font-size: 0.7rem;
    font-weight: 700;
    letter-spacing: 0.12em;
    text-transform: uppercase;
    color: #fff;
    background: var(--navy);
    padding: 0.25rem 0.7rem;
    border-radius: 50px;
    margin-bottom: 0.75rem;
}
.committee-grid {
    display: grid;
    grid-template-columns: 1fr 1.8fr;
    gap: 2rem;
    margin-top: 2rem;
    align-items: start;
}
/* 3-equal-column variant */
.committee-grid--3 {
    grid-template-columns: repeat(3, 1fr);
}
.committee-grid .glass-card,
.cmte-card {
    padding: 2rem 2rem;
    display: flex;
    flex-direction: column;
}
.core-list {
    display: flex;
    flex-direction: column;
    gap: 0.75rem;
}
.core-item {
    display: flex;
    flex-direction: column;
    gap: 0.1rem;
    padding-bottom: 0.75rem;
    border-bottom: 1px solid var(--glass-border);
}
.core-item:last-child {
    border-bottom: none;
    padding-bottom: 0;
}
.core-item strong {
    font-size: 1.05rem;
}
.core-item span {
    font-size: 0.88rem;
    color: var(--text-muted);
}
.working-grid {
    display: grid;
    grid-template-columns: repeat(2, 1fr);
    gap: 0.75rem 1.5rem;
}
.wc-item {
    display: flex;
    flex-direction: column;
    padding-bottom: 0.6rem;
    border-bottom: 1px solid var(--bg-color);
}
.wc-item strong {
    font-size: 0.9rem;
}
.wc-item span {
    font-size: 0.78rem;
    color: var(--text-muted);
}

/* ═══════════════ CTA ═══════════════ */
.cta {
    background: linear-gradient(
        130deg,
        #fdf3e7 0%,
        #fde8c8 30%,
        #e8d5f5 65%,
        #c8d8f8 100%
    );
    min-height: unset;
    height: auto;
    max-height: 30vh;
    display: flex;
    align-items: center;
    padding: clamp(1.5rem, 3vh, 2.5rem) 0;
}
.cta .container {
    width: 100%;
}
.cta-card {
    display: flex;
    flex-direction: row;
    align-items: center;
    justify-content: space-between;
    gap: 2rem;
    max-width: 100%;
    width: 100%;
    margin: 0 auto;
    padding: clamp(1.2rem, 2.5vw, 2rem) clamp(2rem, 5vw, 4rem);
    background: linear-gradient(
        140deg,
        rgba(0, 33, 71, 0.92) 0%,
        rgba(0, 55, 110, 0.88) 55%,
        rgba(160, 40, 0, 0.65) 100%
    );
}
.cta-text {
    flex: 1;
    text-align: left;
}
.cta-card .section-eyebrow {
    color: rgba(255, 160, 100, 0.9);
    margin-bottom: 0.3rem;
}
.cta-title {
    color: #fff;
    font-size: clamp(1.4rem, 2.5vw, 2rem);
    margin-bottom: 0.4rem;
    line-height: 1.2;
}
.cta-desc {
    color: rgba(255, 255, 255, 0.72);
    font-size: 0.88rem;
    margin: 0;
    max-width: 480px;
}
.cta-right {
    display: flex;
    flex-direction: column;
    align-items: flex-end;
    gap: 0.6rem;
    flex-shrink: 0;
}
.cta-actions {
    display: flex;
    gap: 1rem;
    flex-wrap: wrap;
    justify-content: flex-end;
}
.cta-footer-note {
    font-size: 0.82rem;
    color: rgba(255, 255, 255, 0.75);
    text-align: right;
}
.cta-footer-note strong {
    font-size: 0.95rem;
    font-weight: 700;
    color: #fff;
}

/* ═══════════════ FOOTER ═══════════════ */
.footer {
    background: var(--navy);
    padding: 4rem 0 0;
}
.footer-inner {
    display: grid;
    grid-template-columns: 1.6fr 1fr 1.2fr 1fr;
    gap: 3rem;
    padding-bottom: 3rem;
    align-items: flex-start;
}
/* Col 1 — Brand */
.footer-col {
    display: flex;
    flex-direction: column;
    gap: 1rem;
}
.footer-logo-row {
    display: flex;
    align-items: center;
    gap: 0.75rem;
}
.footer-logo-img {
    width: 48px;
    height: 48px;
    object-fit: contain;
}
.footer-conf-name {
    font-family: "DM Serif Display", serif;
    font-size: 1.6rem;
    color: #fff;
    letter-spacing: 0.02em;
}
.footer-tagline {
    font-size: 0.82rem;
    color: rgba(255, 255, 255, 0.5);
    line-height: 1.65;
    max-width: 280px;
}
/* Column headings */
.footer-col-title {
    font-size: 1rem;
    font-weight: 700;
    color: #fff;
    margin-bottom: 0.25rem;
    position: relative;
    padding-bottom: 0.6rem;
}
.footer-col-title::after {
    content: "";
    position: absolute;
    bottom: 0;
    left: 0;
    width: 32px;
    height: 2px;
    background: var(--orange);
    border-radius: 2px;
}
/* Quick links */
.footer-links {
    list-style: none;
    padding: 0;
    margin: 0;
    display: flex;
    flex-direction: column;
    gap: 0.55rem;
}
.footer-links li::before {
    content: "›";
    color: var(--orange);
    margin-right: 0.45rem;
    font-weight: 700;
}
.footer-links a {
    color: rgba(255, 255, 255, 0.62);
    text-decoration: none;
    font-size: 0.85rem;
    transition: color 0.2s;
}
.footer-links a:hover {
    color: var(--orange);
}
/* Contact list */
.footer-contact {
    list-style: none;
    padding: 0;
    margin: 0;
    display: flex;
    flex-direction: column;
    gap: 0.9rem;
}
.footer-contact li {
    display: flex;
    align-items: flex-start;
    gap: 0.6rem;
    font-size: 0.83rem;
    font-weight: 600;
    color: rgba(255, 255, 255, 0.62);
    line-height: 1.5;
}
.fc-icon {
    flex-shrink: 0;
    font-size: 1rem;
    margin-top: 0.05rem;
}
.footer-contact a {
    color: rgba(255, 255, 255, 0.62);
    text-decoration: none;
    transition: color 0.2s;
}
.footer-contact a:hover {
    color: var(--orange);
}
/* Social */
.footer-social-desc {
    font-size: 0.82rem;
    color: rgba(255, 255, 255, 0.5);
    line-height: 1.55;
}
.footer-socials {
    display: flex;
    gap: 0.65rem;
    flex-wrap: wrap;
}
.social-btn {
    display: flex;
    align-items: center;
    justify-content: center;
    width: 38px;
    height: 38px;
    border-radius: 8px;
    background: rgba(255, 255, 255, 0.08);
    color: rgba(255, 255, 255, 0.7);
    text-decoration: none;
    transition:
        background 0.2s,
        color 0.2s,
        transform 0.2s;
    border: 1px solid rgba(255, 255, 255, 0.12);
}
.social-btn:hover {
    background: var(--orange);
    color: #fff;
    border-color: var(--orange);
    transform: translateY(-2px);
}
/* Bottom bar */
.footer-bottom {
    border-top: 1px solid rgba(255, 255, 255, 0.1);
    padding: 1.2rem 0;
    text-align: center;
}
.footer-bottom p {
    font-size: 0.78rem;
    color: rgba(255, 255, 255, 0.35);
    margin: 0;
}

/* ═══════════════ RESPONSIVE ═══════════════ */
@media (max-width: 1024px) {
    .about-inner {
        grid-template-columns: 1fr;
        padding-top: 2.5rem;
        padding-bottom: 2.5rem;
        height: auto;
        min-height: 90vh;
    }
    .about {
        height: auto;
        overflow: visible;
    }
    .cfp-grid {
        grid-template-columns: 1fr;
    }
    .cols-4 {
        grid-template-columns: repeat(2, 1fr);
    }
    .committee-grid {
        grid-template-columns: 1fr;
    }
}

/* ── 900px: tablet stacked hero ── */
@media (max-width: 900px) {
    .hero-container {
        grid-template-columns: 1fr;
        text-align: center;
        align-items: center;
        justify-content: center;
        padding: 100px clamp(20px, 5vw, 48px) 48px;
        gap: 2rem;
        min-height: 100svh;
    }
    .hero-left {
        align-items: center;
    }
    .hero-right {
        justify-content: center;
    }
    .hero-info-card {
        max-width: 500px;
    }
    .hero {
        height: 100dvh;
        min-height: 100dvh;
        overflow: hidden;
    }
}

/* ── 768px: mobile layout ── */
@media (max-width: 768px) {
    /* ── Hamburger: show, pushed to far right ── */
    .hamburger {
        display: flex;
        margin-left: auto; /* push to right edge */
        padding: 8px;
        border-radius: 10px;
        background: rgba(255, 255, 255, 0.08);
        border: 1px solid rgba(255, 255, 255, 0.16);
        transition: background 0.25s;
    }
    .hamburger:hover {
        background: rgba(255, 255, 255, 0.15);
    }
    .navbar.scrolled .hamburger {
        background: rgba(0, 33, 71, 0.06);
        border-color: rgba(0, 33, 71, 0.12);
    }
    .navbar.scrolled .hamburger:hover {
        background: rgba(0, 33, 71, 0.12);
    }

    /* ── Drawer close button ── */
    .nav-close-wrap {
        display: flex !important;
        align-items: center;
        justify-content: flex-end;
        border-bottom: 1px solid rgba(255, 255, 255, 0.07) !important;
        border-top: none !important;
        padding: 0.75rem 1.25rem;
    }
    .nav-close-btn {
        display: flex;
        align-items: center;
        justify-content: center;
        width: 38px;
        height: 38px;
        border-radius: 10px;
        border: 1px solid rgba(255, 255, 255, 0.14);
        background: rgba(255, 255, 255, 0.07);
        color: rgba(255, 255, 255, 0.85);
        cursor: pointer;
        transition:
            background 0.22s,
            transform 0.18s;
        flex-shrink: 0;
    }
    .nav-close-btn:hover {
        background: rgba(255, 69, 0, 0.2);
        border-color: rgba(255, 69, 0, 0.4);
        color: #fff;
        transform: rotate(90deg);
    }
    .nav-close-btn svg {
        pointer-events: none;
    }

    /* Hide desktop nav CTA */
    .nav-cta.nav-cta {
        display: none;
    }

    /* ── Mobile nav drawer ── */
    .nav-links {
        position: fixed;
        top: 0;
        right: -100%;
        width: min(80vw, 310px);
        height: 100dvh;
        /* Deep navy — fully opaque so the hero bg doesn't bleed through */
        background: var(--navy);
        border-left: 1px solid rgba(255, 255, 255, 0.08);
        flex-direction: column;
        justify-content: flex-start;
        align-items: stretch;
        padding: 0 0 2rem;

        gap: 0;
        z-index: 1001;
        box-shadow: -16px 0 48px rgba(0, 0, 0, 0.35);
        transition: right 0.42s var(--ease-out);
        overflow-y: auto;
    }
    .nav-links.active {
        right: 0;
    }
    .mobile-overlay {
        display: none; /* JS adds display:block when menu opens */
    }

    /* Individual nav links in drawer */
    .nav-links li {
        border-bottom: 1px solid rgba(255, 255, 255, 0.07);
    }
    .nav-links li:first-child {
        border-top: 1px solid rgba(255, 255, 255, 0.07);
    }
    .navbar .nav-link {
        font-size: 1.05rem;
        font-weight: 600;
        padding: 1rem 1.75rem;
        color: rgba(255, 255, 255, 0.82) !important;
        width: 100%;
        display: flex;
        align-items: center;
        letter-spacing: 0.01em;
        transition:
            background 0.2s,
            color 0.2s,
            padding-left 0.25s var(--ease-out);
    }
    .navbar .nav-link:hover {
        background: rgba(255, 255, 255, 0.07);
        color: #fff !important;
        padding-left: 2.2rem;
    }
    .navbar .nav-link::after {
        display: none;
    }
    /* Register CTA at bottom of drawer — hide separator on its li */
    .nav-drawer-cta-wrap {
        display: list-item;
        border-bottom: none !important;
        border-top: 1px solid rgba(255, 255, 255, 0.07) !important;
        padding: 1.25rem 1.75rem 0;
    }
    .nav-drawer-cta {
        display: flex;
        padding: 0.85rem 1.5rem;
        background: var(--orange);
        color: #fff !important;
        font-weight: 700;
        font-size: 0.95rem;
        border-radius: 50px;
        justify-content: center;
        box-shadow: 0 4px 18px var(--orange-glow);
        transition:
            background 0.25s,
            transform 0.25s;
        letter-spacing: 0.01em;
    }
    .nav-drawer-cta:hover {
        background: #e84c1e;
        transform: translateY(-2px);
    }

    /* About section: stacked, auto height */
    .about-inner {
        grid-template-columns: 1fr;
        height: auto;
        min-height: unset;
        padding: 3rem clamp(20px, 5vw, 40px);
        gap: 2.5rem;
    }
    .about {
        height: auto;
        overflow: visible;
    }
    .about-editorial {
        justify-content: flex-start;
        gap: 1.5rem;
    }
    .about-metrics {
        justify-content: flex-start;
        gap: 0.7rem;
    }
    .metric-row {
        flex: none;
        margin-bottom: 0;
    }
    .about-prose p {
        font-size: 1rem;
    }

    /* Grids */
    .cols-3,
    .people-grid.cols-3 {
        grid-template-columns: 1fr 1fr;
    }
    .working-grid {
        grid-template-columns: 1fr;
    }
    /* Tracks section: stacked mobile */
    .tracks {
        height: auto;
        overflow: visible;
    }
    .tracks-inner {
        grid-template-columns: 1fr;
        height: auto;
        padding: 2.5rem clamp(20px, 5vw, 40px);
        gap: 2rem;
    }
    .tracks-left {
        max-width: 100%;
        min-width: unset;
        gap: 1.25rem;
    }
    .tracks-header {
        margin-bottom: 0;
    }
    .tracks-rail {
        /* Horizontal scrollable pill row on mobile */
        flex-direction: row;
        flex-wrap: nowrap;
        overflow-x: auto;
        gap: 0.5rem;
        padding-bottom: 0.5rem;
        scrollbar-width: none;
        justify-content: flex-start;
    }
    .tracks-rail::-webkit-scrollbar {
        display: none;
    }
    .tracks-tab {
        white-space: nowrap;
        flex-shrink: 0;
        padding: 0.5rem 0.9rem;
        font-size: 0.8rem;
    }
    .tracks-tab.active::after {
        display: none;
    }
    .tracks-right {
        padding: 0;
    }

    /* Footer — the comprehensive block below handles this */
    .footer-copy {
        align-self: flex-start;
    }
}

/* ── 480px: small phones ── */
/* ── 480px: small phones ── */
@media (max-width: 480px) {
    /* ─── HERO: scrollable on short devices, full-screen look on tall ones ─── */
    .hero {
        height: 100dvh;
        min-height: 100dvh;
        overflow: hidden;
    }

    .hero-container {
        grid-template-columns: 1fr;
        text-align: center;
        display: flex;
        flex-direction: column;
        justify-content: center;
        align-items: center;
        padding: 84px 20px 24px;
        gap: 1.1rem;
        height: 100dvh;
        min-height: 100dvh;
        overflow: hidden;
    }

    .hero-left {
        align-items: center;
        gap: 0;
        flex-shrink: 0;
    }
    .hero-eyebrow {
        font-size: 0.6rem;
        letter-spacing: 0.14em;
        padding: 0.3rem 0.8rem;
        margin-bottom: 0.8rem;
        /* Prevent text wrapping on very small screens */
        white-space: nowrap;
        overflow: hidden;
        text-overflow: ellipsis;
        max-width: 100%;
    }
    .hero-title {
        /* Fluid scale: 1.9rem on 320px → 2.6rem on 480px */
        font-size: clamp(1.85rem, 8.5vw, 2.55rem);
        line-height: 1.1;
        margin-bottom: 0.5rem;
    }
    .hero-sub {
        font-size: 0.8rem;
        line-height: 1.55;
        margin-top: 0;
        color: rgba(255, 255, 255, 0.6);
        text-align: center;
    }
    /* Compact the info card to fit in remaining space */
    .hero-left {
        flex-shrink: 1;
        min-height: 0;
    }
    .hero-right {
        justify-content: center;
        width: 100%;
        flex-shrink: 1;
        min-height: 0;
    }
    .hero-info-card {
        max-width: 100%;
        width: 100%;
        padding: 1rem 1.1rem 0.9rem;
        border-radius: 16px;
    }
    .hic-row {
        padding: 0.5rem 0;
        gap: 0.7rem;
    }
    .hic-icon {
        width: 32px;
        height: 32px;
        border-radius: 9px;
    }
    .hic-icon svg {
        width: 15px;
        height: 15px;
    }
    .hic-label {
        font-size: 0.62rem;
    }
    .hic-value {
        font-size: 0.88rem;
    }
    .hic-divider {
        margin: 0.45rem 0;
    }
    .hic-actions {
        gap: 0.45rem;
    }
    .hic-btn {
        padding: 0.65rem 1.1rem;
        font-size: 0.88rem;
    }

    /* Scroll indicator: hide on tiny screens to save space */
    .scroll-indicator {
        display: none;
    }

    /* ─── Grids ─── */
    .cols-3,
    .cols-4 {
        grid-template-columns: 1fr;
    }

    /* ─── About section ─── */
    .about-inner {
        padding: 2rem clamp(16px, 4vw, 28px);
        gap: 2rem;
    }
    .about-heading {
        font-size: clamp(1.8rem, 7vw, 2.4rem);
    }
    .about-prose p {
        font-size: 0.95rem;
    }
    .metric-number {
        font-size: 2rem;
        min-width: 2.8rem;
    }
    .metric-icon {
        width: 40px;
        height: 40px;
        font-size: 1rem;
    }
    .about-cta-strip {
        gap: 0.75rem;
    }
    .about-btn {
        font-size: 0.8rem;
        padding: 0.4rem 0.9rem;
    }

    /* Icon sizing in CFP */
    .info-icon svg,
    .output-icon svg {
        width: 18px;
        height: 18px;
    }

    /* General */
    .fee-grid {
        grid-template-columns: 1fr;
    }
    .obj-grid {
        grid-template-columns: 1fr;
    }
    .section-header {
        margin-bottom: 1.75rem;
    }
}

/* ── 375px: iPhone SE / small Android ── */
@media (max-width: 375px) {
    .hero {
        height: 100dvh;
        min-height: 100dvh;
        overflow: hidden;
    }

    .hero-container {
        padding: 76px 16px 20px;
        gap: 0.9rem;
        height: 100dvh;
        min-height: 100dvh;
        overflow: hidden;
    }

    .hero-eyebrow {
        font-size: 0.55rem;
        letter-spacing: 0.1em;
    }
    .hero-title {
        font-size: clamp(1.65rem, 9vw, 2rem);
    }
    .hero-sub {
        font-size: 0.78rem;
    }
    .hero-info-card {
        padding: 1rem;
        border-radius: 14px;
    }
    .hic-row {
        padding: 0.5rem 0;
        gap: 0.6rem;
    }
    .hic-icon {
        width: 30px;
        height: 30px;
    }
    .hic-value {
        font-size: 0.82rem;
    }
    .hic-btn {
        padding: 0.65rem 1rem;
        font-size: 0.85rem;
    }
}

/* ═══════════════════════════════════════════════════
   COMPREHENSIVE MOBILE OPTIMIZATION
   Fixes all fixed-height, overflow:hidden sections so
   they display correctly on ≤768px and when zoomed out.
═══════════════════════════════════════════════════ */
@media (max-width: 768px) {
    /* ── 1. Kill fixed-height clipping; clip only horizontal overflow ── */
    .about,
    .tracks,
    .objectives,
    .cfp,
    .dates {
        height: auto !important;
        min-height: unset !important;
        max-height: none !important;
        overflow-x: clip !important;
        overflow-y: visible !important;
    }

    /* CTA section: allow it to grow */
    .cta {
        max-height: none !important;
        height: auto !important;
    }

    /* ── 2. Section inner wrappers — all go single-column, auto height ── */
    .about-inner,
    .tracks-inner,
    .obj-inner,
    .cfp-inner,
    .dates-inner {
        grid-template-columns: 1fr !important;
        height: auto !important;
        min-height: unset !important;
        min-width: 0;
        max-width: 100%;
        padding-top: clamp(2rem, 5vw, 3rem);
        padding-bottom: clamp(2rem, 5vw, 3rem);
        gap: 2rem;
        /* NO overflow:hidden — it breaks touch-event interactability on mobile */
    }
    /* Grid children also need min-width:0 to respect 1fr constraint */
    .tracks-left,
    .tracks-right,
    .obj-left,
    .obj-right,
    .about-editorial,
    .about-metrics {
        min-width: 0;
        max-width: 100%;
    }

    /* ── 3. About section ── */
    .about-editorial,
    .about-metrics {
        justify-content: flex-start;
        gap: 1.25rem;
    }
    .about-heading {
        font-size: clamp(2rem, 7vw, 2.8rem);
    }
    .about-prose p {
        font-size: 0.95rem;
        line-height: 1.7;
    }
    .about-cta-strip {
        flex-wrap: wrap;
        gap: 0.75rem;
    }
    /* Compact metric cards on mobile */
    .metric-row {
        padding: 0.9rem 1rem;
        gap: 1rem;
        margin-bottom: 0.5rem;
    }
    .metric-number {
        font-size: 2rem;
        min-width: 2.6rem;
    }
    .metric-icon {
        width: 40px;
        height: 40px;
        border-radius: 10px;
    }
    .metric-icon svg {
        width: 18px;
        height: 18px;
    }
    .metric-title {
        font-size: 0.78rem;
    }
    .metric-desc {
        font-size: 0.72rem;
    }
    .about-impact-banner {
        padding: 1rem 1.1rem;
        gap: 0.85rem;
    }

    /* ── 4. Tracks: see the dedicated mobile redesign block at end of file ── */

    /* ── 5. Objectives section ── */
    .obj-heading {
        font-size: clamp(2rem, 7vw, 3rem);
        line-height: 1.1;
    }
    .obj-subline {
        font-size: 0.9rem;
    }
    .obj-left {
        gap: 1.25rem;
        justify-content: flex-start;
    }
    /* Objectives glass panel — give it breathing room on mobile */
    .obj-right {
        padding: 0;
    }
    .obj-panel {
        border-radius: 14px;
        /* On mobile, each row must have a guaranteed minimum height */
        min-height: unset;
    }
    .obj-row {
        padding: 0.9rem 1.2rem;
        gap: 1rem;
        /* Let rows grow naturally on mobile, don't force equal height */
        flex: none;
        border-bottom: 1px solid rgba(255, 255, 255, 0.07);
    }
    .obj-row--last {
        border-bottom: none;
    }
    .obj-row-num {
        font-size: 1.6rem;
        min-width: 2.2rem;
    }
    .obj-row-divider {
        margin: 0.5rem 0;
    }
    .obj-row-title {
        font-size: 1rem;
    }
    .obj-row-text {
        font-size: 0.82rem;
    }
    .obj-left-stat {
        display: none; /* save space on mobile */
    }

    /* ── 6. Dates section ── */
    .dates {
        flex-direction: column !important;
    }
    .dates-inner {
        grid-template-columns: 1fr;
    }
    .dates-heading {
        font-size: clamp(1.8rem, 6vw, 2.4rem);
    }
    /* Registration fee table: allow horizontal scroll */
    .reg-table-wrap {
        overflow-x: auto;
        -webkit-overflow-scrolling: touch;
        margin: 0 -4px;
        padding: 0 4px;
    }
    .reg-table {
        min-width: 0;
    }
    .reg-th,
    .reg-td {
        padding: 0.5rem 0.25rem;
    }
    .reg-qr-strip {
        gap: 0.5rem;
    }

    /* ── 7. Committee section ── */
    /* Photo card row: stack vertically */
    .photo-cards-row {
        flex-direction: column;
        align-items: center;
        gap: 1.5rem;
    }
    .photo-card {
        flex: none !important;
        width: min(340px, 92vw);
        max-height: none;
        aspect-ratio: 3 / 4;
        min-height: 380px;
    }
    /* Reduce text sizes to reveal more of the photo */
    .photo-card-info {
        padding: 1.1rem 1.1rem 1.2rem;
    }
    .photo-card-badge {
        font-size: 0.58rem;
        padding: 0.2rem 0.5rem;
        margin-bottom: 0.35rem;
    }
    .photo-card-name {
        font-size: 1.15rem;
        margin-bottom: 0.15rem;
    }
    .photo-card-org {
        font-size: 0.75rem;
    }
    /* Committee grids: force single column */
    .committee-grid {
        grid-template-columns: 1fr !important;
    }
    .committee-grid--3 {
        grid-template-columns: 1fr !important;
    }
    .cols-2 {
        grid-template-columns: 1fr !important;
    }
    .cols-3 {
        grid-template-columns: 1fr 1fr !important;
    }
    .cols-4 {
        grid-template-columns: 1fr 1fr !important;
    }
    .working-grid {
        grid-template-columns: 1fr !important;
    }
    /* Speaker cards in a 1-col grid on mobile */
    .people-grid.cols-4 {
        grid-template-columns: 1fr 1fr;
    }
    /* Cmte card padding */
    .cmte-card {
        padding: 1.5rem 1.25rem;
    }

    /* ── 8. CTA banner: stack vertically ── */
    .cta-card {
        flex-direction: column;
        align-items: flex-start;
        gap: 1.5rem;
        padding: 1.5rem 1.25rem;
        border-radius: 16px;
    }
    .cta-right {
        align-items: flex-start;
        width: 100%;
    }
    .cta-actions {
        flex-direction: column;
        width: 100%;
    }
    .cta-actions .btn {
        width: 100%;
        justify-content: center;
    }
    .cta-text {
        text-align: left;
    }

    /* ── 9. Footer ── */
    .footer-inner {
        grid-template-columns: 1fr 1fr;
        gap: 2rem 1.5rem;
    }
    .footer-brand {
        grid-column: 1 / -1;
    }

    /* ── 10. General padding fix ── */
    .section {
        padding: clamp(56px, 8vw, 80px) 0 clamp(40px, 6vw, 60px);
    }
    .container {
        padding: 0 clamp(16px, 4vw, 32px);
    }
}

/* ── 480px: small phone fine-tuning ── */
@media (max-width: 480px) {
    /* Photo cards even smaller */
    .photo-cards-row {
        gap: 1rem;
    }
    .photo-card {
        width: min(240px, 90vw);
    }
    /* Committee grids: all 1-col */
    .cols-2,
    .cols-3 {
        grid-template-columns: 1fr !important;
    }
    .people-grid.cols-4 {
        grid-template-columns: 1fr;
    }
    /* Tracks very small */
    .tracks-tab {
        font-size: 0.74rem;
        padding: 0.4rem 0.7rem;
    }
    .track-list li {
        font-size: 0.82rem;
    }
    /* Footer: single column */
    .footer-inner {
        grid-template-columns: 1fr;
    }
    /* CTA card tighter */
    .cta-title {
        font-size: clamp(1.2rem, 5vw, 1.6rem);
    }
    /* Dates fee table */
    .reg-th,
    .reg-td {
        padding: 0.5rem 0.6rem;
        font-size: 0.78rem;
    }
    /* Objective rows compact — keep vertical padding, reduce horizontal */
    .obj-row {
        padding: 0.75rem 1rem; /* keep top/bottom so rows aren't clipped */
        gap: 0.75rem;
    }
    .obj-row-num {
        font-size: 1.4rem;
    }
    .obj-row-title {
        font-size: 0.88rem;
    }
    .obj-row-text {
        font-size: 0.76rem;
    }
    /* CFP steps compact */
    .cfp-step {
        padding: 1rem;
        gap: 0.9rem;
    }
    .cfp-step-badge {
        width: 40px;
        height: 40px;
    }
}

/* ═══════════════════════════════════════════════════════════
   MOBILE TRACKS — Complete redesign for ≤768px
   Replaces the desktop 2-col grid+tab-rail with a
   stacked header → custom dropdown → full-width content card
═══════════════════════════════════════════════════════════ */
@media (max-width: 768px) {
    /* ── Section reset ── */
    .tracks {
        height: auto !important;
        overflow: visible !important;
        padding: 0;
    }
    .tracks-nav-btns {
        display: none !important;
    }

    /* ── Outer wrapper: single-column flex stack ── */
    .tracks-inner {
        display: flex !important;
        flex-direction: column !important;
        grid-template-columns: unset !important;
        height: auto !important;
        min-height: unset !important;
        padding: clamp(2rem, 6vw, 3rem) clamp(16px, 5vw, 28px)
            clamp(2.5rem, 7vw, 3.5rem) !important;
        gap: 1.5rem !important;
        min-width: 0;
        max-width: 100%;
    }

    /* ── Mobile header block: shown, desktop left-column: hidden ── */
    .tracks-mobile-header {
        display: flex;
        flex-direction: column;
        gap: 1.1rem;
    }
    .tracks-left {
        display: none !important; /* desktop tab rail — hidden on mobile */
    }

    /* ── Eyebrow & heading inside mobile header ── */
    .tracks-mobile-header .tracks-eyebrow {
        font-weight: 700;
        font-size: 0.68rem;
        letter-spacing: 0.18em;
        text-transform: uppercase;
        color: var(--orange);
        display: flex;
        align-items: center;
        gap: 0.5rem;
    }
    .tracks-mobile-header .tracks-eyebrow::before {
        content: "";
        width: 5px;
        height: 5px;
        border-radius: 50%;
        background: var(--orange);
        box-shadow: 0 0 5px var(--orange-glow);
        flex-shrink: 0;
    }
    .tracks-mobile-header .tracks-heading {
        font-family: "DM Serif Display", serif;
        font-size: clamp(2rem, 7vw, 2.8rem);
        color: var(--navy);
        line-height: 1.08;
        letter-spacing: -0.025em;
        margin: 0;
    }
    .tracks-mobile-header .tracks-subline {
        font-size: 0.88rem;
        color: var(--text-muted);
        line-height: 1.6;
        margin: 0;
    }

    /* ── Trigger button (replaces native select) ── */
    .tracks-sheet-trigger {
        width: 100%;
        display: flex;
        align-items: center;
        gap: 0.75rem;
        background: var(--navy);
        border: 1.5px solid rgba(253, 130, 60, 0.35);
        border-radius: 14px;
        padding: 0.9rem 1.1rem;
        cursor: pointer;
        color: #fff;
        text-align: left;
        font-family: "Plus Jakarta Sans", sans-serif;
        box-shadow:
            0 4px 24px rgba(0, 33, 71, 0.22),
            inset 0 1px 0 rgba(255, 255, 255, 0.06);
        transition:
            border-color 0.22s,
            box-shadow 0.22s,
            transform 0.15s;
        -webkit-tap-highlight-color: transparent;
    }
    .tracks-sheet-trigger:active {
        transform: scale(0.985);
        border-color: var(--orange);
    }
    .tracks-sheet-trigger-num {
        font-size: 0.7rem;
        font-weight: 800;
        letter-spacing: 0.12em;
        color: var(--orange);
        background: rgba(253, 99, 52, 0.14);
        border-radius: 6px;
        padding: 0.2rem 0.5rem;
        flex-shrink: 0;
    }
    .tracks-sheet-trigger-label {
        flex: 1;
        font-size: 0.97rem;
        font-weight: 600;
        color: rgba(255, 255, 255, 0.92);
        letter-spacing: 0.01em;
    }
    .tracks-sheet-trigger-icon {
        color: rgba(255, 255, 255, 0.5);
        flex-shrink: 0;
        transition: transform 0.25s;
    }
    .tracks-sheet-trigger[aria-expanded="true"] .tracks-sheet-trigger-icon {
        transform: rotate(180deg);
    }

    /* ── Right panel: full width, proper containment ── */
    .tracks-right {
        width: 100% !important;
        max-width: 100% !important;
        min-width: 0 !important;
        padding: 0 !important;
        overflow: hidden;
    }
    .tracks-panel {
        width: 100% !important;
        max-width: 100% !important;
        overflow: hidden;
        border-radius: 16px;
        border: 1px solid rgba(180, 130, 60, 0.16);
        background: rgba(255, 255, 255, 0.9);
        backdrop-filter: blur(16px);
        -webkit-backdrop-filter: blur(16px);
        box-shadow:
            0 4px 32px rgba(160, 100, 30, 0.1),
            inset 0 1px 0 rgba(255, 255, 255, 0.9);
    }
    .tracks-pane {
        width: 100% !important;
        max-width: 100% !important;
        overflow: hidden;
        padding: 1.4rem 1.25rem 1rem !important;
    }
    .tracks-pane::before {
        display: none;
    }

    .pane-eyebrow {
        font-size: 0.66rem;
    }
    .pane-title {
        font-size: clamp(1rem, 4.5vw, 1.35rem);
        line-height: 1.2;
    }

    /* ── Track list items ── */
    .track-list {
        gap: 0;
        width: 100%;
    }
    .track-list li {
        display: block !important;
        position: relative;
        padding: 0.7rem 0.75rem 0.7rem 2.5rem !important;
        font-size: 0.9rem;
        line-height: 1.45;
        white-space: normal;
        word-break: break-word;
        overflow: hidden;
        border-bottom: 1px solid rgba(180, 130, 60, 0.1);
        color: var(--text);
        font-weight: 500;
    }
    .track-list li:last-child {
        border-bottom: none;
    }
    .track-list li::before {
        display: block !important;
        position: absolute !important;
        left: 0.55rem;
        top: 50%;
        transform: translateY(-50%);
    }

    .tracks-progress {
        padding: 0.7rem 1.25rem;
        border-top: 1px solid rgba(180, 130, 60, 0.1);
        background: rgba(255, 255, 255, 0.5);
    }
}

/* ═══════════════════════════════════════════════════════════
   TRACKS BOTTOM SHEET — fixed overlay, slides from bottom
   Visible on all viewport sizes when open; JS controls the
   .open class. Designed to match website nav-drawer aesthetic.
═══════════════════════════════════════════════════════════ */

/* Scrim / backdrop */
.tracks-sheet-overlay {
    display: none;
    position: fixed;
    inset: 0;
    background: rgba(0, 10, 30, 0.55);
    backdrop-filter: blur(3px);
    -webkit-backdrop-filter: blur(3px);
    z-index: 1100;
    opacity: 0;
    transition: opacity 0.3s ease;
}
.tracks-sheet-overlay.open {
    opacity: 1;
}

/* Sheet panel */
.tracks-sheet {
    position: fixed;
    bottom: 0;
    left: 0;
    right: 0;
    z-index: 1101;
    background: var(--navy);
    border-top-left-radius: 24px;
    border-top-right-radius: 24px;
    border-top: 1px solid rgba(253, 130, 60, 0.2);
    padding-bottom: env(safe-area-inset-bottom, 20px);
    transform: translateY(100%);
    transition: transform 0.38s cubic-bezier(0.32, 0.72, 0, 1);
    will-change: transform;
    box-shadow: 0 -16px 60px rgba(0, 0, 0, 0.45);
    /* Hidden by default — JS adds .open */
    visibility: hidden;
}
.tracks-sheet.open {
    transform: translateY(0);
    visibility: visible;
}

/* Drag handle bar */
.tracks-sheet-handle-wrap {
    display: flex;
    justify-content: center;
    padding: 1rem 0 0.5rem;
    cursor: grab;
    touch-action: none; /* JS handles drag */
}
.tracks-sheet-handle-wrap:active {
    cursor: grabbing;
}
.tracks-sheet-handle {
    width: 40px;
    height: 4px;
    border-radius: 100px;
    background: rgba(255, 255, 255, 0.22);
    transition:
        background 0.2s,
        width 0.2s;
}
.tracks-sheet-handle-wrap:hover .tracks-sheet-handle,
.tracks-sheet-handle-wrap:active .tracks-sheet-handle {
    background: rgba(253, 99, 52, 0.55);
    width: 52px;
}

/* Sheet header */
.tracks-sheet-header {
    padding: 0.25rem 1.5rem 1rem;
    border-bottom: 1px solid rgba(255, 255, 255, 0.07);
}
.tracks-sheet-title {
    font-family: "DM Serif Display", serif;
    font-size: 1.25rem;
    color: #fff;
    margin: 0 0 0.2rem;
    letter-spacing: -0.01em;
}
.tracks-sheet-sub {
    font-size: 0.78rem;
    color: rgba(255, 255, 255, 0.45);
    margin: 0;
    font-weight: 500;
}

/* Option list */
.tracks-sheet-list {
    list-style: none;
    margin: 0;
    padding: 0.5rem 0 0.75rem;
    max-height: 60vh;
    overflow-y: auto;
    overscroll-behavior: contain;
    -webkit-overflow-scrolling: touch;
}
.tracks-sheet-list::-webkit-scrollbar {
    display: none;
}

/* Each option row */
.tracks-sheet-item {
    display: flex;
    align-items: center;
    gap: 0.85rem;
    padding: 0.9rem 1.5rem;
    cursor: pointer;
    transition: background 0.18s;
    position: relative;
    -webkit-tap-highlight-color: transparent;
}
.tracks-sheet-item:active {
    background: rgba(255, 255, 255, 0.05);
}
.tracks-sheet-item-num {
    font-size: 0.68rem;
    font-weight: 800;
    letter-spacing: 0.12em;
    color: rgba(255, 255, 255, 0.35);
    background: rgba(255, 255, 255, 0.06);
    border-radius: 5px;
    padding: 0.18rem 0.45rem;
    flex-shrink: 0;
    transition:
        color 0.2s,
        background 0.2s;
    min-width: 2rem;
    text-align: center;
}
.tracks-sheet-item-name {
    flex: 1;
    font-size: 0.97rem;
    font-weight: 500;
    color: rgba(255, 255, 255, 0.7);
    letter-spacing: 0.005em;
    transition: color 0.2s;
}
.tracks-sheet-item-check {
    color: transparent;
    flex-shrink: 0;
    transition: color 0.2s;
}

/* Active / selected state */
.tracks-sheet-item.active {
    background: rgba(253, 99, 52, 0.1);
}
.tracks-sheet-item.active .tracks-sheet-item-num {
    color: var(--orange);
    background: rgba(253, 99, 52, 0.18);
}
.tracks-sheet-item.active .tracks-sheet-item-name {
    color: #fff;
    font-weight: 700;
}
.tracks-sheet-item.active .tracks-sheet-item-check {
    color: var(--orange);
}

/* Separator lines between items */
.tracks-sheet-item + .tracks-sheet-item::before {
    content: "";
    position: absolute;
    top: 0;
    left: 1.5rem;
    right: 1.5rem;
    height: 1px;
    background: rgba(255, 255, 255, 0.05);
}

/* Desktop: hide the sheet elements — they are for mobile only */
@media (min-width: 769px) {
    .tracks-mobile-header {
        display: none;
    }
    .tracks-sheet-overlay {
        display: none !important;
    }
    .tracks-sheet {
        display: none !important;
    }
}

/* ═══════════════════════════════════════════════════════════
   MOBILE SPACING & LAYOUT POLISH
   Reduces excessive section padding, tightens the Objectives
   gap, and shrinks the CFP peer-review card on mobile.
═══════════════════════════════════════════════════════════ */
@media (max-width: 768px) {
    /* ── 1. Global section padding: cut the 80px/60px floor way down ── */
    .section {
        padding-top: clamp(2rem, 7vw, 3.5rem) !important;
        padding-bottom: clamp(1.75rem, 6vw, 3rem) !important;
    }

    /* ── 2. Shared inner wrappers: tighter vertical padding ── */
    .about-inner,
    .obj-inner,
    .cfp-inner,
    .dates-inner {
        padding-top: clamp(1.25rem, 4vw, 2rem) !important;
        padding-bottom: clamp(1.25rem, 4vw, 2rem) !important;
        gap: 1.5rem !important;
    }

    /* ── 3. Objectives: collapse the space between header and rows ── */

    /* The left col (header + stat) — on mobile remove justify-content:space-between
       so the header sits tight above the rows panel with no gap */
    .obj-left {
        justify-content: flex-start !important;
        gap: 0.6rem !important; /* tight between heading and subline */
    }
    .obj-header {
        gap: 0.35rem !important;
    }
    .obj-heading {
        font-size: clamp(1.9rem, 6.5vw, 2.6rem) !important;
        margin-bottom: 0 !important;
    }
    .obj-subline {
        font-size: 0.85rem !important;
        margin-top: 0 !important;
    }
    /* The stat badge is already hidden — confirm zero height */
    .obj-left-stat {
        display: none !important;
        margin: 0 !important;
        padding: 0 !important;
    }
    /* Rows panel: no extra top margin */
    .obj-right {
        margin-top: 0 !important;
    }
    /* Individual rows: reduce padding so they stack tighter */
    .obj-row {
        padding: 0.75rem 1rem !important;
        gap: 0.85rem !important;
    }
    .obj-row-num {
        font-size: 1.35rem !important;
        min-width: 2rem !important;
    }
    .obj-row-title {
        font-size: 0.92rem !important;
    }
    .obj-row-text {
        font-size: 0.78rem !important;
    }
    .obj-row-divider {
        margin: 0.35rem 0 !important;
    }

    /* ── 4. CFP section: collapse the header/notice block ── */

    /* cfp-inner: single column already handled by the mobile grid override;
       ensure padding is tight */
    .cfp-inner {
        padding: clamp(1.25rem, 4vw, 2rem) clamp(16px, 5vw, 28px) !important;
        gap: 1.25rem !important;
    }
    /* cfp-left: remove the desktop justify-content:space-between that creates
       a huge invisible spacer between the header and the peer-review card */
    .cfp-left {
        justify-content: flex-start !important;
        gap: 0.85rem !important;
    }
    .cfp-header {
        gap: 0.35rem !important;
    }
    .cfp-heading {
        font-size: clamp(2rem, 7vw, 2.8rem) !important;
        line-height: 1.05 !important;
    }
    .cfp-subline {
        font-size: 0.85rem !important;
        max-width: 100% !important;
        margin-top: 0 !important;
    }
    /* Peer-reviewed card: tight, compact, no excessive height */
    .cfp-notice {
        margin-top: 0 !important;
        padding: 0.8rem 1rem !important;
        gap: 0.75rem !important;
        border-radius: 12px !important;
        /* Override any implicit flex stretch height */
        align-self: flex-start !important;
        width: 100% !important;
    }
    .cfp-notice svg {
        width: 18px !important;
        height: 18px !important;
        margin-top: 0 !important;
    }
    .cfp-notice strong {
        font-size: 0.88rem !important;
    }
    .cfp-notice span {
        font-size: 0.78rem !important;
    }
}

/* Extra-small (375px and below): even tighter */
@media (max-width: 375px) {
    .section {
        padding-top: 1.5rem !important;
        padding-bottom: 1.25rem !important;
    }
    .obj-row {
        padding: 0.65rem 0.9rem !important;
    }
    .cfp-notice {
        padding: 0.7rem 0.9rem !important;
    }
}

/* ═══════════════════════════════════════════════════════════
   OBJECTIVES — MOBILE GAP FIX
   The section is locked to height:90vh on desktop with
   obj-inner { height:100% } creating massive whitespace when
   the 2-col grid stacks to 1-col on mobile.
   On mobile: force everything to auto height and collapse all
   internal spacing so the header sits flush above the rows.
═══════════════════════════════════════════════════════════ */
@media (max-width: 768px) {
    /* 1. Release the 90vh lock — let the section be content-tall */
    .objectives {
        height: auto !important;
        min-height: unset !important;
        overflow: visible !important;
        padding: clamp(2rem, 7vw, 3rem) 0 clamp(1.75rem, 6vw, 2.75rem) !important;
    }

    /* 2. Inner grid: auto height, tight gap, mobile padding */
    .obj-inner {
        height: auto !important;
        min-height: unset !important;
        grid-template-columns: 1fr !important;
        gap: 1rem !important;
        padding: 0 clamp(16px, 5vw, 28px) !important;
        align-items: start !important;
    }

    /* 3. Left col (header block): remove space-between stretch */
    .obj-left {
        flex-direction: column !important;
        justify-content: flex-start !important;
        align-items: flex-start !important;
        gap: 0.35rem !important;
        padding: 0 !important;
        height: auto !important;
        min-height: unset !important;
    }
    .obj-header {
        gap: 0.3rem !important;
    }
    .obj-eyebrow {
        margin-bottom: 0.1rem;
    }
    .obj-heading {
        font-size: clamp(1.9rem, 7vw, 2.6rem) !important;
        line-height: 1.06 !important;
        margin: 0 !important;
    }
    .obj-subline {
        font-size: 0.84rem !important;
        line-height: 1.55 !important;
        margin-top: 0.25rem !important;
        color: rgba(255, 255, 255, 0.5) !important;
    }
    /* Stat block: zero-footprint on mobile */
    .obj-left-stat {
        display: none !important;
        height: 0 !important;
        margin: 0 !important;
        padding: 0 !important;
    }

    /* 4. Right col (rows panel): directly under the header, no extra top margin */
    .obj-right {
        margin-top: 0 !important;
        padding: 0 !important;
        height: auto !important;
        min-height: unset !important;
    }
    .obj-panel {
        min-height: unset !important;
        height: auto !important;
    }

    /* 5. Each objective row: compact */
    .obj-row {
        padding: 0.8rem 1rem !important;
        gap: 0.85rem !important;
        flex: none !important;
        min-height: unset !important;
    }
    .obj-row-num {
        font-size: 1.3rem !important;
        min-width: 1.9rem !important;
    }
    .obj-row-title {
        font-size: 0.9rem !important;
        font-weight: 700 !important;
    }
    .obj-row-text {
        font-size: 0.76rem !important;
        line-height: 1.45 !important;
    }
    .obj-row-divider {
        margin: 0.3rem 0 !important;
    }

    /* 6. Ambient glows: clip to section so they don't add height */
    .obj-glows {
        overflow: hidden !important;
    }
}

/* Extra-small: even tighter heading + rows */
@media (max-width: 375px) {
    .objectives {
        padding-top: 1.75rem !important;
        padding-bottom: 1.5rem !important;
    }
    .obj-inner {
        gap: 0.75rem !important;
    }
    .obj-row {
        padding: 0.65rem 0.9rem !important;
    }
}

/* ═══════════════════════════════════════════════════════════
   OBJECTIVES FINAL GAP FIX
   The gap persists because:
   1. .section { min-height: 90vh } is still forcing the section
      to be 90vh tall even when .objectives has height:auto
   2. .objectives { justify-content: stretch } makes .obj-inner
      fill that entire 90vh tall space
   3. .obj-inner { height: 100% } then fills that stretched space
   Fix: zero-out all height constraints at every level on mobile
═══════════════════════════════════════════════════════════ */
@media (max-width: 768px) {
    /* Level 1: Section itself — kill the 90vh lock from BOTH
       .section (min-height) and .objectives (height + justify) */
    .section.objectives,
    .objectives {
        height: auto !important;
        min-height: 0 !important; /* override .section { min-height:90vh } */
        justify-content: flex-start !important;
        padding: clamp(2rem, 7vw, 3rem) 0 clamp(1.75rem, 6vw, 2.75rem) !important;
        overflow: visible !important;
    }

    /* Level 2: Inner grid — switch to flex so children size to content */
    .section.objectives .obj-inner,
    .objectives .obj-inner {
        display: flex !important;
        flex-direction: column !important;
        height: auto !important;
        min-height: 0 !important;
        gap: 1rem !important;
        padding: 0 clamp(16px, 5vw, 28px) !important;
        align-items: stretch !important;
    }

    /* Level 3: Both columns — no stretch, no space-between, content height */
    .objectives .obj-left,
    .objectives .obj-right {
        height: auto !important;
        min-height: 0 !important;
        flex: 0 0 auto !important; /* do NOT grow to fill parent */
    }

    /* Left col: stack header items tight */
    .objectives .obj-left {
        display: flex !important;
        flex-direction: column !important;
        justify-content: flex-start !important;
        align-items: flex-start !important;
        gap: 0.4rem !important;
        padding: 0 !important;
    }
    /* Hide the stat widget with zero footprint */
    .objectives .obj-left-stat {
        display: none !important;
        height: 0 !important;
        padding: 0 !important;
        margin: 0 !important;
        overflow: hidden !important;
    }

    /* Right col: rows panel sits immediately below header */
    .objectives .obj-right {
        margin-top: 0 !important;
        padding: 0 !important;
    }
    .objectives .obj-panel {
        height: auto !important;
        min-height: 0 !important;
    }
}

/* ═══════════════════════════════════════════════════════════
   OBJECTIVES — DEFINITIVE MOBILE FIX (overrides all previous)
   Uses compound selectors and !important to win at every
   specificity level. Converts the section + inner grid from
   fixed-height to pure auto-height content flow.
═══════════════════════════════════════════════════════════ */
@media (max-width: 768px) {
    /* ---- Section shell: zero-out ALL height forcing ---- */
    section#objectives.section,
    section#objectives {
        height: auto !important;
        min-height: 0 !important;
        max-height: none !important;
        padding-top: 2rem !important;
        padding-bottom: 2rem !important;
        justify-content: flex-start !important;
        overflow: visible !important;
    }

    /* ---- Inner container: flex column, content-height only ---- */
    section#objectives .obj-inner {
        display: flex !important;
        flex-direction: column !important;
        height: auto !important;
        min-height: 0 !important;
        gap: 1.25rem !important;
        padding: 0 clamp(16px, 5vw, 28px) !important;
        align-items: stretch !important;
    }

    /* ---- Left col (heading block): shrink to content ---- */
    section#objectives .obj-left {
        display: flex !important;
        flex-direction: column !important;
        justify-content: flex-start !important;
        align-items: flex-start !important;
        height: auto !important;
        min-height: 0 !important;
        flex: 0 0 auto !important;
        gap: 0.4rem !important;
        padding: 0 !important;
    }

    /* ---- Stat widget: absolute zero footprint ---- */
    section#objectives .obj-left-stat {
        display: none !important;
        height: 0 !important;
        min-height: 0 !important;
        padding: 0 !important;
        margin: 0 !important;
        overflow: hidden !important;
        visibility: hidden !important;
    }

    /* ---- Right col (rows panel): sits right below header ---- */
    section#objectives .obj-right {
        height: auto !important;
        min-height: 0 !important;
        flex: 0 0 auto !important;
        margin-top: 0 !important;
        padding: 0 !important;
    }
    section#objectives .obj-panel {
        height: auto !important;
        min-height: 0 !important;
    }

    /* ---- Typography: compact for mobile ---- */
    section#objectives .obj-heading {
        font-size: clamp(1.9rem, 7vw, 2.6rem) !important;
        line-height: 1.06 !important;
        margin-bottom: 0 !important;
    }
    section#objectives .obj-subline {
        font-size: 0.85rem !important;
        line-height: 1.55 !important;
        margin-top: 0.2rem !important;
    }
    section#objectives .obj-row {
        padding: 0.8rem 1rem !important;
        gap: 0.85rem !important;
        flex: none !important;
        min-height: 0 !important;
    }
}

/* ═══════════════════════════════════════════════════════════
   SCROLL LOCK — simple overflow:hidden on html+body
   Applied by JS (lockBodyScroll) when the bottom sheet is open.
   No position:fixed — avoids the scroll-position jump on close.
═══════════════════════════════════════════════════════════ */
html[style*="overflow: hidden"],
html[style*="overflow:hidden"] {
    overflow: hidden !important;
}

/* ═══════════════════════════════════════════════════
   ASSOCIATION HEADLINE — CUSTOM STYLES
   "In association with ISTD"
═══════════════════════════════════════════════════ */

.assoc-highlight {
    display: inline-flex;
    align-items: center;
    gap: 0.75rem;
    padding: 0.5rem 1.2rem;
    background: rgba(255, 255, 255, 0.05);
    border: 1px solid rgba(255, 255, 255, 0.1);
    border-radius: 50px;
    backdrop-filter: blur(10px);
    -webkit-backdrop-filter: blur(10px);
    margin-bottom: 1.5rem;
    animation: assocFadeIn 1s var(--ease-out) both;
    position: relative;
    overflow: hidden;
}

/* Flashy shimmer effect */
.assoc-highlight::after {
    content: "";
    position: absolute;
    top: 0;
    left: -100%;
    width: 50%;
    height: 100%;
    background: linear-gradient(
        90deg,
        transparent,
        rgba(255, 255, 255, 0.2),
        transparent
    );
    animation: assocShimmer 3s infinite;
}

.assoc-text {
    font-size: 1rem;
    font-weight: 600;
    letter-spacing: 0.05em;
    color: rgba(255, 255, 255, 0.9);
    text-transform: uppercase;
    display: flex;
    align-items: center;
    gap: 0.5rem;
}

.assoc-text strong {
    color: var(--orange);
    font-family: "DM Serif Display", serif;
    font-size: 2rem;
    font-style: italic;
    text-transform: none;
    letter-spacing: 0;
}

/* Light version for sections with light backgrounds */
.assoc-highlight.light {
    background: rgba(0, 33, 71, 0.04);
    border-color: rgba(0, 33, 71, 0.08);
}

.assoc-highlight.light .assoc-text {
    color: var(--navy);
}

/* Pulse animation for extra "flash" */
.assoc-highlight.flashy {
    box-shadow: 0 0 15px rgba(253, 99, 52, 0.2);
    border-color: rgba(253, 99, 52, 0.3);
    animation: assocPulse 2s infinite alternate;
}

@keyframes assocFadeIn {
    from {
        opacity: 0;
        transform: translateY(10px);
    }
    to {
        opacity: 1;
        transform: translateY(0);
    }
}

@keyframes assocShimmer {
    0% {
        left: -100%;
    }
    20%,
    100% {
        left: 150%;
    }
}

@keyframes assocPulse {
    from {
        box-shadow: 0 0 10px rgba(253, 99, 52, 0.1);
        border-color: rgba(253, 99, 52, 0.2);
    }
    to {
        box-shadow: 0 0 20px rgba(253, 99, 52, 0.4);
        border-color: rgba(253, 99, 52, 0.5);
    }
}

/* Footer specific tweak */
.footer .assoc-highlight {
    margin-top: 1.5rem;
    background: rgba(255, 255, 255, 0.03);
}
