﻿        #site-header {
            opacity: 0;
            transition: opacity 0.25s ease;
        }

        /* ── Page entrance (@keyframes pageEnter lives in shared.css) ── */
        @media (prefers-reduced-motion: no-preference) {
            body {
                animation: pageEnter 0.9s ease-out both;
            }

            .ab-hero {
                animation: heroReveal 1.2s cubic-bezier(0.2, 0.8, 0.2, 1) forwards;
            }

            @keyframes heroReveal {
                from {
                    opacity: 0;
                    transform: scale(1.03);
                    filter: blur(10px);
                }

                to {
                    opacity: 1;
                    transform: scale(1);
                    filter: blur(0);
                }
            }

            .ab-pre {
                opacity: 0;
                animation: floatIn 1s cubic-bezier(0.2, 0.8, 0.2, 1) 0.75s forwards;
            }

            .ab-hero-title {
                opacity: 0;
                animation: floatIn 1s cubic-bezier(0.2, 0.8, 0.2, 1) 1.1s forwards;
            }

            .ab-co-list {
                opacity: 0;
                animation: floatIn 1s cubic-bezier(0.2, 0.8, 0.2, 1) 1.45s forwards;
            }

            @keyframes floatIn {
                from {
                    opacity: 0;
                    transform: translateY(22px);
                    filter: blur(4px);
                }

                to {
                    opacity: 1;
                    transform: translateY(0);
                    filter: blur(0);
                }
            }
        }

        /* ── Scroll reveal ───────────────────────────────── */
        @media (prefers-reduced-motion: no-preference) {

            /* Generic fade-up — story header, 2026 block */
            .ab-reveal {
                opacity: 0;
                transform: translateY(24px);
                transition:
                    opacity 0.75s cubic-bezier(0.22, 0.61, 0.36, 1),
                    transform 0.75s cubic-bezier(0.22, 0.61, 0.36, 1);
            }

            .ab-reveal.in-view {
                opacity: 1;
                transform: none;
            }

            /* Media panels: slide in from whichever side they live on */
            .ab-row-media {
                opacity: 0;
                transition:
                    opacity 0.85s cubic-bezier(0.22, 0.61, 0.36, 1),
                    transform 0.85s cubic-bezier(0.22, 0.61, 0.36, 1);
            }

            .ab-row:not(.ab-row--tl) .ab-row-media {
                transform: translateX(-40px);
            }

            .ab-row--tl .ab-row-media {
                transform: translateX(40px);
            }

            .ab-row-media.in-view {
                opacity: 1;
                transform: none;
            }

            /* Milestones: individual fade-up, staggered within their column */
            .ab-milestone {
                opacity: 0;
                transform: translateY(22px);
                transition:
                    opacity 0.65s cubic-bezier(0.22, 0.61, 0.36, 1),
                    transform 0.65s cubic-bezier(0.22, 0.61, 0.36, 1);
            }

            .ab-milestone.in-view {
                opacity: 1;
                transform: none;
            }

            .ab-row-text .ab-milestone:nth-child(2) {
                transition-delay: 0.17s;
            }

            /* Inline photo (row 1 right column) */
            .ab-ph--inline {
                opacity: 0;
                transform: translateY(16px);
                transition:
                    opacity 0.6s cubic-bezier(0.22, 0.61, 0.36, 1),
                    transform 0.6s cubic-bezier(0.22, 0.61, 0.36, 1);
                transition-delay: 0.32s;
            }

            .ab-ph--inline.in-view {
                opacity: 1;
                transform: none;
            }
        }

        /* ── Image placeholder ───────────────────────────── */
        .ab-ph {
            background: var(--color-background-secondary);
            position: relative;
            overflow: hidden;
            width: 100%;
            display: block;
        }

        .ab-ph::after {
            content: attr(data-slot);
            position: absolute;
            top: 50%;
            left: 50%;
            transform: translate(-50%, -50%);
            font-size: 10px;
            letter-spacing: 0.16em;
            color: var(--color-text-faint);
            text-transform: uppercase;
            opacity: 0.5;
            white-space: nowrap;
            pointer-events: none;
        }

        /* ── HERO ────────────────────────────────────────── */
        .ab-hero {
            position: relative;
            min-height: calc(100vh - var(--header-height));
            overflow: hidden;
        }

        .ab-hero-img {
            position: absolute;
            inset: 0;
        }

        .ab-hero-img-m {
            display: none;
        }


        .ab-hero-img>.ab-ph,
        .ab-hero-img img {
            width: 100%;
            height: 100%;
            object-fit: cover;
            display: block;
        }

        /* directional darkening so the glass card always reads */
        .ab-hero-img::after {
            content: '';
            position: absolute;
            inset: 0;
            background: linear-gradient(105deg,
                    rgba(0, 0, 0, 0.05) 0%,
                    rgba(0, 0, 0, 0.2) 45%,
                    rgba(0, 0, 0, 0.52) 100%);
            pointer-events: none;
        }

        .ab-hero-panel {
            position: absolute;
            right: 18%;
            top: 50%;
            transform: translateY(-50%);
            z-index: 2;
            width: min(42%, 580px);
            max-height: 90vh;
            overflow-y: hidden;
            display: flex;
            flex-direction: column;
            padding: 2.75rem 3rem;
            background: rgba(8, 6, 5, 0.42);
            backdrop-filter: blur(18px);
            -webkit-backdrop-filter: blur(18px);
            border: 0.5px solid rgba(255, 255, 255, 0.1);
            scrollbar-width: thin;
            scrollbar-color: rgba(255,255,255,0.15) transparent;
        }

        .ab-hero-panel::-webkit-scrollbar { width: 3px; }
        .ab-hero-panel::-webkit-scrollbar-thumb { background: rgba(255,255,255,0.15); border-radius: 2px; }

        .ab-pre {
            font-size: calc(9px * var(--font-scale));
            letter-spacing: 0.26em;
            color: rgba(255, 255, 255, 0.45);
            text-transform: uppercase;
            margin-bottom: 1rem;
        }

        .ab-hero-title {
            font-size: calc(26px * var(--font-scale));
            font-weight: 300;
            line-height: 1.3;
            letter-spacing: 0.02em;
            color: #fff;
            margin-bottom: 1.8rem;
        }

        .ab-co-list {
            display: flex;
            flex-direction: column;
        }

        .ab-co-item {
            padding: 1.1rem 0;
            border-bottom: 0.5px solid rgba(255, 255, 255, 0.1);
            cursor: default;
        }

        .ab-co-label {
            font-size: calc(10px * var(--font-scale));
            letter-spacing: 0.22em;
            color: var(--color-accent);
            text-transform: uppercase;
            margin-bottom: 0.3rem;
            transition: color 0.25s;
        }

        .ab-co-name {
            font-size: calc(18px * var(--font-scale));
            font-weight: 500;
            color: rgba(255, 255, 255, 0.75);
            letter-spacing: 0.02em;
            margin-bottom: 0;
            transition: color 0.25s;
        }

        .ab-co-item.is-active .ab-co-name {
            color: #fff;
        }

        /* Grid accordion — expands to true natural height, no max-height cap */
        .ab-co-desc-wrapper {
            display: grid;
            grid-template-rows: 0fr;
            transition: grid-template-rows 0.4s cubic-bezier(0.25, 1, 0.5, 1);
        }

        .ab-co-desc-inner {
            overflow: hidden;
        }

        .ab-co-desc {
            font-size: calc(12px * var(--font-scale));
            line-height: 1.85;
            color: rgba(255, 255, 255, 0.55);
            margin: 0;
            padding-top: 0;
            opacity: 0;
            transition: opacity 0.3s ease, padding-top 0.3s ease;
        }

        .ab-co-item.is-active .ab-co-desc-wrapper {
            grid-template-rows: 1fr;
        }

        .ab-co-item.is-active .ab-co-desc {
            opacity: 1;
            padding-top: 0.5rem;
        }

        /* ── STORY ───────────────────────────────────────── */
        .ab-story {
            padding: 10rem 0 6rem;
        }

        .ab-story-header {
            text-align: center;
            margin-bottom: 9rem;
        }

        .ab-eyebrow {
            font-size: calc(9px * var(--font-scale));
            letter-spacing: 0.28em;
            color: var(--color-text-faint);
            text-transform: uppercase;
            margin-bottom: 2rem;
        }

        .ab-story-sub {
            font-size: calc(13px * var(--font-scale));
            line-height: 2.1;
            color: var(--color-text-secondary);
        }

        /* ── Timeline rows ───────────────────────────────── */
        .ab-row {
            display: grid;
            grid-template-columns: 1fr 1fr;
            gap: 7rem;
            margin-bottom: 9rem;
            align-items: center;
        }

        /* ── Timeline spine ─────────────────────────────── */
        .ab-rows {
            position: relative;
        }

        /* vertical center line */
        .ab-rows::before {
            content: '';
            position: absolute;
            left: 50%;
            top: 0;
            bottom: 0;
            width: 0.5px;
            background: var(--color-border-tertiary);
            transform: translateX(-50%);
            pointer-events: none;
        }

        /* dot at each row's midpoint */
        .ab-row {
            position: relative;
        }

        .ab-row::after {
            content: '';
            position: absolute;
            left: 50%;
            top: 50%;
            transform: translate(-50%, -50%);
            width: 7px;
            height: 7px;
            border-radius: 50%;
            background: var(--color-accent);
            z-index: 1;
        }

        /* text-left variant: swap visual order */
        .ab-row--tl .ab-row-media {
            order: 2;
        }

        .ab-row--tl .ab-row-text {
            order: 1;
        }

        .ab-row-media {
            overflow: hidden;
            min-width: 0;
        }

        .ab-row-media img {
            width: 100%;
            height: auto;
            display: block;
        }

        .ab-row-media .ab-ph {
            aspect-ratio: 4 / 3;
        }

        .ab-caption {
            font-size: calc(9px * var(--font-scale));
            color: var(--color-text-faint);
            margin-top: 0.85rem;
            line-height: 1.75;
            font-style: italic;
        }

        .ab-row-text {
            display: flex;
            flex-direction: column;
            gap: 3rem;
            min-width: 0;
        }

        .ab-row-text img {
            max-width: 72%;
            height: auto;
            display: block;
        }

        .ab-year {
            display: flex;
            align-items: baseline;
            gap: 0.85rem;
            margin-bottom: 0.9rem;
        }

        .ab-year-num {
            font-size: calc(26px * var(--font-scale));
            font-weight: 700;
            color: var(--color-text-primary);
            letter-spacing: -0.01em;
            line-height: 1;
        }

        .ab-year-label {
            font-size: calc(9px * var(--font-scale));
            font-weight: 400;
            letter-spacing: 0.22em;
            color: var(--color-text-faint);
            text-transform: uppercase;
        }

        .ab-milestone p {
            font-size: calc(13px * var(--font-scale));
            line-height: 1.95;
            color: var(--color-text-secondary);
        }

        /* small inline image within text column */
        .ab-ph--inline {
            aspect-ratio: 4 / 3;
            max-width: 72%;
        }

        /* ── 2026 ─────────────────────────────────────────── */
        .ab-future {
            text-align: center;
            padding: 7rem 0 3rem;
            border-top: 0.5px solid var(--color-border-tertiary);
            margin-top: 3rem;
        }

        .ab-future-year {
            font-size: calc(80px * var(--font-scale));
            font-weight: 300;
            color: #ddd5cb;
            letter-spacing: 0.06em;
            line-height: 1;
            margin-bottom: 2.5rem;
        }

        .ab-future p {
            font-size: calc(13px * var(--font-scale));
            color: var(--color-text-secondary);
            line-height: 2.1;
        }

        /* ── Closing image ───────────────────────────────── */
        .ab-closing {
            margin-top: 0.5rem;
        }

        .ab-closing>.ab-ph {
            aspect-ratio: 16 / 9;
            min-height: 360px;
        }

        .ab-closing img {
            width: 100%;
            aspect-ratio: 16 / 9;
            min-height: 360px;
            object-fit: cover;
            display: block;
        }

        /* ── Responsive ──────────────────────────────────── */
        @media (max-width: 1024px) {
            .ab-hero-panel {
                width: min(52%, 460px);
                padding: 2rem 2rem;
            }

            .ab-row {
                gap: 4.5rem;
            }
        }

        @media (max-width: 900px) {
            .ab-hero {
                min-height: auto;
                overflow: visible;
            }

            .ab-hero-img {
                display: none;
            }

            .ab-hero-img-m {
                display: block;
                width: 100%;
                overflow: hidden;
            }

            .ab-hero-img-m img {
                width: 100%;
                height: 70vw;
                min-height: 320px;
                object-fit: cover;
                display: block;
            }

            .ab-hero-panel {
                display: block;
                position: relative;
                right: auto;
                top: auto;
                transform: none;
                width: 100%;
                max-height: none;
                overflow: visible;
                padding: 5rem 4.75rem 4rem;
                background: #0d0b09;
                backdrop-filter: none;
                -webkit-backdrop-filter: none;
                border: none;
                border-top: 0.5px solid rgba(255, 255, 255, 0.08);
            }

            /* show all descriptions on mobile */
            .ab-co-desc-wrapper {
                grid-template-rows: 1fr !important;
            }
            .ab-co-desc {
                opacity: 1 !important;
                padding-top: 0.5rem !important;
            }
        }

        @media (prefers-reduced-motion: no-preference) and (max-width: 768px) {

            .ab-row:not(.ab-row--tl) .ab-row-media,
            .ab-row--tl .ab-row-media {
                transform: translateY(24px);
            }
        }

        @media (max-width: 768px) {
            
            .ab-story {
                padding: 6rem 0 4rem;
            }

            .ab-story-header {
                margin-bottom: 5rem;
            }

            .ab-rows::before,
            .ab-row::after {
                display: none;
            }

            .ab-row {
                grid-template-columns: 1fr;
                gap: 2.5rem;
                margin-bottom: 5.5rem;
            }

            .ab-row--tl .ab-row-media {
                order: 1;
            }

            .ab-row--tl .ab-row-text {
                order: 2;
            }

            .ab-ph--inline,
            .ab-row-text img {
                max-width: 100%;
            }

            .ab-caption {
                margin-bottom: 3rem;
            }

            .ab-future {
                padding: 5rem 0 2rem;
                margin-top: 2rem;
            }

            .ab-future-year {
                font-size: calc(52px * var(--font-scale));
            }

            .ab-closing {
                margin-top: 3rem;
                display: none;
            }
        }
    