:root {

            --blanc: #ffffff;
            --ivoire: #fffdf8;
            --beige: #f4efe5;
            --beige-fonce: #e4dac8;

            --or: #b08a45;
            --or-clair: #d4b77b;

            --texte: #393631;
            --texte-clair: #746f68;

            --brun: #66543f;

            --ombre: rgba(65, 52, 35, 0.10);

        }


        /* =====================================================
           RESET
        ===================================================== */

        * {
            margin: 0;
            padding: 0;
            box-sizing: border-box;
        }


        html {
            scroll-behavior: smooth;
        }


        body {

            background: var(--ivoire);

            color: var(--texte);

            font-family:
                Georgia,
                "Times New Roman",
                serif;

            line-height: 1.8;

        }


        img {
            max-width: 100%;
            display: block;
        }


        a {
            color: inherit;
        }


        /* =====================================================
           HEADER
        ===================================================== */

        header {

            position: fixed;

            top: 0;
            left: 0;

            width: 100%;

            z-index: 1000;

            background:
                rgba(255,255,255,0.96);

            backdrop-filter: blur(10px);

            border-bottom:
                1px solid var(--beige-fonce);

        }


        .header-inner {

            max-width: 1250px;

            margin: auto;

            padding:
                17px 30px;

            display: flex;

            align-items: center;

            justify-content: space-between;

            gap: 30px;

        }


        /* =====================================================
           LOGO
        ===================================================== */

        .logo {

            text-decoration: none;

            display: flex;

            flex-direction: column;

            line-height: 1.1;

        }


        .logo-main {

            font-size: 1.45rem;

            letter-spacing: 2px;

        }


        .logo-main span {
            color: var(--or);
        }


        .logo-sub {

            margin-top: 5px;

            font-family: Arial, sans-serif;

            font-size: 0.58rem;

            letter-spacing: 3px;

            text-transform: uppercase;

            color: var(--texte-clair);

        }


        /* =====================================================
           NAVIGATION
        ===================================================== */

        nav {

            display: flex;

            align-items: center;

            gap: 24px;

        }


        nav a {

            text-decoration: none;

            font-family: Arial, sans-serif;

            font-size: 0.72rem;

            letter-spacing: 1.4px;

            text-transform: uppercase;

            transition: 0.3s;

        }


        nav a:hover {
            color: var(--or);
        }


        .home-button {

            padding:
                10px 18px;

            border:
                1px solid var(--or);

            color:
                var(--brun);

        }


        .home-button:hover {

            background:
                var(--or);

            color:
                white;

        }


        /* =====================================================
           HERO
        ===================================================== */

        .hero {

            min-height: 92vh;

            padding-top: 90px;

            display: flex;

            justify-content: center;

            align-items: center;

            text-align: center;

            background:

                linear-gradient(
                    rgba(255,255,255,0.80),
                    rgba(244,239,229,0.92)
                ),

                url("images/cathedrale-senlis.jpg")
                center / cover no-repeat;

        }


        .hero-content {

            max-width: 900px;

            padding: 50px 30px;

        }


        .small-title {

            font-family: Arial, sans-serif;

            text-transform: uppercase;

            letter-spacing: 4px;

            font-size: 0.72rem;

            color: var(--or);

            margin-bottom: 20px;

        }


        .hero h1 {

            font-size:
                clamp(3rem, 7vw, 6.5rem);

            font-weight: normal;

            line-height: 1;

            margin-bottom: 30px;

        }


        .hero h1 span {
            color: var(--or);
        }


        .hero-description {

            max-width: 730px;

            margin: auto;

            font-size: 1.2rem;

            color: var(--texte-clair);

        }


        .hero-button {

            display: inline-block;

            margin-top: 38px;

            padding:
                14px 30px;

            background:
                var(--or);

            color: white;

            text-decoration: none;

            font-family: Arial, sans-serif;

            font-size: 0.75rem;

            letter-spacing: 2px;

            text-transform: uppercase;

            transition: 0.3s;

        }


        .hero-button:hover {

            background:
                var(--brun);

            transform:
                translateY(-3px);

        }


        /* =====================================================
           SECTIONS
        ===================================================== */

        section {

            padding:
                110px 7%;

        }


        .section-heading {

            max-width: 800px;

            margin:
                0 auto 65px;

            text-align: center;

        }


        .chapter {

            font-family: Arial, sans-serif;

            text-transform: uppercase;

            letter-spacing: 3px;

            font-size: 0.7rem;

            color: var(--or);

        }


        h2 {

            font-size:
                clamp(2.5rem, 5vw, 4rem);

            font-weight: normal;

            line-height: 1.1;

            margin:
                15px 0 25px;

        }


        .section-heading p {

            color:
                var(--texte-clair);

        }


        /* =====================================================
           INTRODUCTION
        ===================================================== */

        .intro {
            background: white;
        }


        .intro-grid {

            max-width: 1150px;

            margin: auto;

            display: grid;

            grid-template-columns:
                1fr 1fr;

            gap: 75px;

            align-items: center;

        }


        .image-frame {

            position: relative;

            padding: 15px;

            border:
                1px solid var(--beige-fonce);

        }


        .image-frame img {

            width: 100%;

            height: 580px;

            object-fit: cover;

        }


        .image-frame::after {

            content: "";

            position: absolute;

            width: 100px;

            height: 100px;

            top: -8px;

            right: -8px;

            border-top:
                2px solid var(--or);

            border-right:
                2px solid var(--or);

        }


        .intro-text h3 {

            font-size:
                2.5rem;

            font-weight: normal;

            line-height: 1.2;

            margin-bottom: 25px;

        }


        .intro-text p {

            margin-bottom: 20px;

            color:
                var(--texte-clair);

        }


        .quote {

            margin-top: 30px;

            padding:
                20px 25px;

            border-left:
                3px solid var(--or);

            background:
                var(--beige);

            color:
                var(--brun);

            font-style:
                italic;

        }


        /* =====================================================
           CHIFFRES
        ===================================================== */

        .numbers {
            background: var(--beige);
        }


        .numbers-grid {

            max-width: 1100px;

            margin: auto;

            display: grid;

            grid-template-columns:
                repeat(4, 1fr);

            border-top:
                1px solid var(--beige-fonce);

            border-bottom:
                1px solid var(--beige-fonce);

        }


        .number {

            padding:
                45px 20px;

            text-align: center;

            border-right:
                1px solid var(--beige-fonce);

        }


        .number:last-child {
            border-right: none;
        }


        .number strong {

            display: block;

            font-size:
                3.5rem;

            font-weight: normal;

            color:
                var(--or);

            line-height: 1.1;

        }


        .number span {

            display: block;

            margin-top: 12px;

            font-family: Arial, sans-serif;

            font-size: 0.65rem;

            letter-spacing: 1.5px;

            text-transform: uppercase;

            color:
                var(--texte-clair);

        }


        /* =====================================================
           TIMELINE
        ===================================================== */

        .timeline-section {
            background: var(--ivoire);
        }


        .timeline {

            max-width:
                950px;

            margin:
                auto;

            position:
                relative;

        }


        .timeline::before {

            content: "";

            position: absolute;

            top: 0;
            bottom: 0;

            left: 50%;

            width: 1px;

            background:
                var(--beige-fonce);

        }


        .timeline-item {

            position: relative;

            width: 50%;

            padding:
                30px 50px;

        }


        .timeline-item:nth-child(even) {

            margin-left:
                50%;

        }


        .timeline-item:nth-child(odd) {

            text-align:
                right;

        }


        .timeline-dot {

            position: absolute;

            top: 43px;

            width: 13px;
            height: 13px;

            border-radius: 50%;

            background:
                var(--or);

            box-shadow:

                0 0 0 5px var(--ivoire),

                0 0 0 6px var(--or-clair);

        }


        .timeline-item:nth-child(odd)
        .timeline-dot {

            right:
                -6px;

        }


        .timeline-item:nth-child(even)
        .timeline-dot {

            left:
                -6px;

        }


        .timeline-year {

            font-size:
                2.1rem;

            color:
                var(--or);

            line-height:
                1;

            margin-bottom:
                10px;

        }


        .timeline-item h3 {

            font-size:
                1.6rem;

            font-weight:
                normal;

            margin-bottom:
                8px;

        }


        .timeline-item p {

            color:
                var(--texte-clair);

        }


        /* =====================================================
           PORTAIL
        ===================================================== */

        .portal {

            background:
                white;

            text-align:
                center;

        }


        .portal-inner {

            max-width:
                900px;

            margin:
                auto;

        }


        .portal-number {

            font-size:
                7rem;

            line-height:
                1;

            color:
                var(--or);

            opacity:
                0.22;

        }


        .portal h2 {
            margin-top: -20px;
        }


        .portal p {

            color:
                var(--texte-clair);

            font-size:
                1.08rem;

            margin-bottom:
                20px;

        }


        /* =====================================================
           ARCHITECTURE
        ===================================================== */

        .architecture {
            background: var(--beige);
        }


        .architecture-grid {

            max-width:
                1150px;

            margin:
                auto;

            display:
                grid;

            grid-template-columns:
                1fr 1fr;

            gap:
                70px;

            align-items:
                center;

        }


        .architecture-grid img {

            width:
                100%;

            height:
                570px;

            object-fit:
                cover;

        }


        .architecture-text h3 {

            font-size:
                2.7rem;

            font-weight:
                normal;

            line-height:
                1.15;

            margin-bottom:
                25px;

        }


        .architecture-text p {

            color:
                var(--texte-clair);

            margin-bottom:
                20px;

        }


        /* =====================================================
           FLÈCHE
        ===================================================== */

        .spire {

            background:
                white;

            text-align:
                center;

        }


        .spire-box {

            max-width:
                950px;

            margin:
                auto;

            padding:
                60px;

            border:
                1px solid var(--beige-fonce);

            background:
                var(--ivoire);

        }


        .spire-box h3 {

            font-size:
                2.8rem;

            font-weight:
                normal;

            margin-bottom:
                25px;

        }


        .spire-box p {

            color:
                var(--texte-clair);

            margin-bottom:
                20px;

        }


        .spire-height {

            font-size:
                5rem;

            line-height:
                1;

            color:
                var(--or);

            margin:
                30px 0 10px;

        }


        .spire-label {

            font-family:
                Arial, sans-serif;

            text-transform:
                uppercase;

            letter-spacing:
                2px;

            font-size:
                0.7rem;

            color:
                var(--texte-clair);

        }


        /* =====================================================
           INCENDIE 1504
        ===================================================== */

        .fire {

            background:
                var(--beige);

        }


        .fire-grid {

            max-width:
                1150px;

            margin:
                auto;

            display:
                grid;

            grid-template-columns:
                0.9fr 1.1fr;

            gap:
                60px;

            align-items:
                center;

        }


        .fire-grid img {

            width:
                100%;

            height:
                500px;

            object-fit:
                cover;

        }


        .fire-text h3 {

            font-size:
                2.7rem;

            font-weight:
                normal;

            line-height:
                1.15;

            margin-bottom:
                25px;

        }


        .fire-text p {

            color:
                var(--texte-clair);

            margin-bottom:
                20px;

        }


        .fire-quote {

            padding:
                25px;

            border-left:
                3px solid var(--or);

            background:
                white;

            color:
                var(--brun);

            font-style:
                italic;

        }


        /* =====================================================
           RENAISSANCE
        ===================================================== */

        .renaissance {

            background:
                white;

        }


        .renaissance-box {

            max-width:
                1050px;

            margin:
                auto;

            padding:
                60px;

            border:
                1px solid var(--beige-fonce);

        }


        .renaissance-box h3 {

            font-size:
                2.7rem;

            font-weight:
                normal;

            margin-bottom:
                25px;

        }


        .renaissance-box p {

            color:
                var(--texte-clair);

            margin-bottom:
                20px;

        }


        .facts {

            display:
                grid;

            grid-template-columns:
                repeat(3, 1fr);

            gap:
                20px;

            margin-top:
                35px;

        }


        .fact {

            padding:
                25px;

            background:
                var(--beige);

            text-align:
                center;

        }


        .fact strong {

            display:
                block;

            color:
                var(--or);

            font-size:
                2rem;

            font-weight:
                normal;

        }


        .fact span {

            font-family:
                Arial, sans-serif;

            font-size:
                0.65rem;

            letter-spacing:
                1px;

            text-transform:
                uppercase;

            color:
                var(--texte-clair);

        }


        /* =====================================================
           PERSONNAGES / ARTISTES
        ===================================================== */

        .figures {
            background: var(--beige);
        }


        .cards {

            max-width:
                1100px;

            margin:
                auto;

            display:
                grid;

            grid-template-columns:
                repeat(2, 1fr);

            gap:
                30px;

        }


        .card {

            background:
                white;

            padding:
                45px;

            border:
                1px solid var(--beige-fonce);

            transition:
                0.35s;

        }


        .card:hover {

            transform:
                translateY(-7px);

            border-color:
                var(--or);

            box-shadow:
                0 20px 45px
                var(--ombre);

        }


        .card-year {

            font-family:
                Arial, sans-serif;

            font-size:
                0.7rem;

            letter-spacing:
                3px;

            color:
                var(--or);

            text-transform:
                uppercase;

        }


        .card h3 {

            font-size:
                2rem;

            font-weight:
                normal;

            margin:
                15px 0;

        }


        .card p {

            color:
                var(--texte-clair);

            margin-bottom:
                15px;

        }


        /* =====================================================
           RÉVOLUTION / XIXe
        ===================================================== */

        .after {

            background:
                white;

            text-align:
                center;

        }


        .after-inner {

            max-width:
                850px;

            margin:
                auto;

        }


        .after-number {

            font-size:
                6rem;

            line-height:
                1;

            color:
                var(--or);

            opacity:
                0.25;

        }


        .after h2 {
            margin-top: -20px;
        }


        .after p {

            color:
                var(--texte-clair);

            font-size:
                1.1rem;

        }


        /* =====================================================
           AUJOURD'HUI
        ===================================================== */

        .today {

            background:
                var(--beige);

        }


        .today-grid {

            max-width:
                1100px;

            margin:
                auto;

            display:
                grid;

            grid-template-columns:
                1fr 1fr;

            gap:
                70px;

            align-items:
                center;

        }


        .today-grid img {

            width:
                100%;

            height:
                500px;

            object-fit:
                cover;

        }


        .today-text h3 {

            font-size:
                2.8rem;

            font-weight:
                normal;

            line-height:
                1.15;

            margin-bottom:
                25px;

        }


        .today-text p {

            color:
                var(--texte-clair);

            margin-bottom:
                20px;

        }


        /* =====================================================
           SOURCES
        ===================================================== */

        .sources {
            background: var(--ivoire);
        }


        .sources-list {

            max-width:
                850px;

            margin:
                auto;

        }


        .source {

            padding:
                25px 0;

            border-bottom:
                1px solid var(--beige-fonce);

        }


        .source:first-child {

            border-top:
                1px solid var(--beige-fonce);

        }


        .source strong {

            display:
                block;

            color:
                var(--brun);

            margin-bottom:
                5px;

        }


        .source span {

            color:
                var(--texte-clair);

            font-size:
                0.95rem;

        }


        .source a {

            color:
                var(--or);

            text-decoration:
                none;

        }


        .source a:hover {

            text-decoration:
                underline;

        }


        /* =====================================================
           CONCLUSION
        ===================================================== */

        .conclusion {

            padding:
                140px 7%;

            text-align:
                center;

            background:

                linear-gradient(
                    rgba(255,255,255,0.89),
                    rgba(244,239,229,0.94)
                ),

                url("images/senlis-paysage.jpg")
                center / cover;

        }


        .conclusion-inner {

            max-width:
                800px;

            margin:
                auto;

        }


        .conclusion h2 {

            font-size:
                clamp(3rem, 7vw, 5.5rem);

        }


        .conclusion p {

            color:
                var(--texte-clair);

            font-size:
                1.15rem;

        }


        /* =====================================================
           FOOTER
        ===================================================== */

        footer {

            padding:
                45px 7%;

            background:
                var(--texte);

            color:
                #ddd;

            text-align:
                center;

        }


        .footer-logo {

            font-size:
                1.4rem;

            letter-spacing:
                2px;

            margin-bottom:
                8px;

        }


        .footer-logo span {
            color: var(--or-clair);
        }


        footer p {

            font-family:
                Arial, sans-serif;

            font-size:
                0.72rem;

            color:
                #aaa;

        }


        /* =====================================================
           ANIMATIONS
        ===================================================== */

        .reveal {

            opacity:
                0;

            transform:
                translateY(35px);

            transition:

                opacity 0.8s ease,

                transform 0.8s ease;

        }


        .reveal.visible {

            opacity:
                1;

            transform:
                translateY(0);

        }


        /* =====================================================
           RESPONSIVE
        ===================================================== */

        @media (max-width: 850px) {

            .header-inner {
                padding: 15px 20px;
            }


            nav a:not(.home-button) {
                display: none;
            }


            section {
                padding: 80px 6%;
            }


            .intro-grid,
            .architecture-grid,
            .fire-grid,
            .today-grid {

                grid-template-columns:
                    1fr;

            }


            .numbers-grid {

                grid-template-columns:
                    1fr 1fr;

            }


            .number {

                border-bottom:
                    1px solid var(--beige-fonce);

            }


            .number:nth-child(2) {
                border-right: none;
            }


            .cards {
                grid-template-columns: 1fr;
            }


            .facts {
                grid-template-columns: 1fr;
            }


            .timeline::before {
                left: 10px;
            }


            .timeline-item,
            .timeline-item:nth-child(even) {

                width:
                    100%;

                margin-left:
                    0;

                padding-left:
                    45px;

                padding-right:
                    0;

                text-align:
                    left;

            }


            .timeline-item:nth-child(odd)
            .timeline-dot,
            .timeline-item:nth-child(even)
            .timeline-dot {

                left:
                    4px;

                right:
                    auto;

            }

        }


        @media (max-width: 550px) {

            .logo-main {
                font-size: 1.1rem;
            }


            .logo-sub {
                font-size: 0.45rem;
            }


            .home-button {
                padding: 8px 10px;
            }


            .numbers-grid {
                grid-template-columns: 1fr;
            }


            .number,
            .number:nth-child(2) {
                border-right: none;
            }


            .hero h1 {
                font-size: 3.2rem;
            }

        }