        /* ── Self-hosted fonts ── */
        @font-face {
            font-family: 'DM Sans';
            font-style: normal;
            font-weight: 400 700;
            font-display: swap;
            src: url('/fonts/dm-sans-latin.woff2') format('woff2');
            unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
        }

        @font-face {
            font-family: 'Playfair Display';
            font-style: normal;
            font-weight: 300 500;
            font-display: swap;
            src: url('/fonts/playfair-normal-latin.woff2') format('woff2');
        }

        @font-face {
            font-family: 'Playfair Display';
            font-style: italic;
            font-weight: 300 400;
            font-display: swap;
            src: url('/fonts/playfair-italic-latin.woff2') format('woff2');
        }

        @font-face {
            font-family: 'Newsreader';
            font-style: normal;
            font-weight: 300 500;
            font-display: swap;
            src: url('/fonts/newsreader-normal-latin.woff2') format('woff2');
        }

        @font-face {
            font-family: 'Newsreader';
            font-style: normal;
            font-weight: 600 700;
            font-display: swap;
            src: url('/fonts/newsreader-bold-latin.woff2') format('woff2');
        }

        @font-face {
            font-family: 'Newsreader';
            font-style: italic;
            font-weight: 300 500;
            font-display: swap;
            src: url('/fonts/newsreader-italic-latin.woff2') format('woff2');
        }

        /* ── Reset ── */
        *, *::before, *::after { margin: 0; padding: 0; box-sizing: border-box; }

        :root {
            color-scheme: light;
            --bg: #F0EDE8;
            --bg-subtle: #E8E2D9;
            --text: #3D1C2A;
            --text-light: rgba(61, 28, 42, 0.78);
            --text-faint: rgba(61, 28, 42, 0.7);
            --footer-bg: #3D1C2A;
            --footer-text: #ffffff;
            --footer-text-light: rgba(255, 255, 255, 0.85);
            --footer-text-faint: rgba(255, 255, 255, 0.7);
            --sans: 'DM Sans', -apple-system, system-ui, sans-serif;
            --serif: 'Playfair Display', Georgia, serif;
        }

        html { font-size: 16px; scroll-behavior: smooth; }

        body {
            background: var(--bg);
            color: var(--text);
            font-family: var(--sans);
            -webkit-font-smoothing: antialiased;
        }

        .content-width {
            max-width: 1600px;
            margin: 0 auto;
        }

        .main {
            position: relative;
            z-index: 2;
            background: var(--bg);
        }

        /* ── CTA ── */
        .cta-btn {
            display: inline-block;
            font-family: var(--sans);
            font-size: 0.9rem;
            font-weight: 500;
            letter-spacing: 0.01em;
            padding: 0.85rem 2rem;
            border-radius: 99px;
            text-decoration: none;
            transition: opacity 0.2s;
            margin-top: 1.5rem;
        }

        .cta-btn:hover {
            opacity: 0.75;
        }

        .cta-btn-primary {
            background: var(--text);
            color: var(--bg);
            transition: opacity 0.2s, transform 0.2s;
        }

        .cta-btn-primary:hover {
            opacity: 0.75 !important;
            transform: translateY(-1px);
        }

        .cta-btn-light {
            background: var(--bg);
            color: var(--text);
        }

        .cta-btn-outline {
            background: transparent;
            color: var(--footer-text);
            border: 1px solid var(--footer-text-light);
        }

        /* ── Divider ── */
        .section-divider {
            width: 100%;
            border: none;
            border-top: 1px solid var(--text-faint);
        }

        [data-reveal] {
            opacity: 0;
            transform: translateY(30px);
            transition: opacity 0.8s ease-out, transform 0.8s ease-out;
        }

        [data-reveal].visible {
            opacity: 1;
            transform: translateY(0);
        }

        /* ── Animations ── */
        .fade-in {
            animation: fadeIn 0.8s ease-out backwards;
        }

        .fade-in-d1 { animation-delay: 0.1s; }
        .fade-in-d2 { animation-delay: 0.25s; }
        .fade-in-d3 { animation-delay: 0.4s; }

        @keyframes fadeIn {
            from { opacity: 0; transform: translateY(20px); }
        }

        /* ── Shared eyebrow ── */
        .hero-eyebrow {
            font-size: 0.82rem;
            font-weight: 700;
            text-transform: uppercase;
            letter-spacing: 0.14em;
            color: var(--text-faint);
            margin-bottom: 2rem;
        }
