/* ============================================================
 PAGE À PROPOS — portée de refacto (assets/styles/about.css)
 ------------------------------------------------------------
 Le design est conservé tel quel : héros, vague animée, sections
 parallaxe, blocs chiffrés, cartes. SEULES LES COULEURS changent.
 Le legacy en utilisait trois — #ff6b35 (20 fois), #ff8e53, #e55100 —
 alors que la charte okc_v2 nen a QU UN, #ff6300. Les deux premiers
 deviennent donc `--orange`, le troisième `--orange-600`, qui est
 létat survolé et non une couleur de texte.
 Chargée UNIQUEMENT sur cette page : 870 lignes na rien à faire
 dans la feuille commune.
 ============================================================ */

/* ============================================
   À PROPOS — okcroisiere.fr
   ============================================ */

/* --- Disable sticky motor on this page --- */
.filters-desktop.sticky-top {
    position: relative;
}

/* --- Hero Section --- */
.about-hero {
    position: relative;
    padding: 80px 0 60px;
    overflow: hidden;
    background: #000;
    color: #fff;
}

.about-hero-bg {
    position: absolute;
    inset: 0;
    background:
        radial-gradient(ellipse at 20% 50%, rgba(255, 99, 0, 0.15) 0%, transparent 60%),
        radial-gradient(ellipse at 80% 20%, rgba(255, 99, 0, 0.1) 0%, transparent 50%);
    animation: heroPulse 8s ease-in-out infinite alternate;
}

@keyframes heroPulse {
    0% { opacity: 0.6; }
    100% { opacity: 1; }
}

.about-hero-badge {
    display: inline-block;
    padding: 8px 20px;
    background: rgba(255, 99, 0, 0.15);
    border: 1px solid rgba(255, 99, 0, 0.3);
    border-radius: 50px;
    font-size: 14px;
    font-weight: 600;
    letter-spacing: 1px;
    text-transform: uppercase;
    color: var(--orange);
    margin-bottom: 24px;
}

.about-hero-title {
    font-size: clamp(2rem, 5vw, 3.2rem);
    font-weight: 800;
    line-height: 1.15;
    margin-bottom: 20px;
    letter-spacing: -1px;
}

.about-hero-subtitle {
    font-size: clamp(1rem, 2.5vw, 1.2rem);
    color: rgba(255, 255, 255, 0.7);
    max-width: 700px;
    margin: 0 auto 40px;
    line-height: 1.6;
}

.min-vh-50 {
    min-height: 35vh;
}

/* Scroll indicator */
.about-scroll-indicator {
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 8px;
    color: rgba(255, 255, 255, 0.4);
    font-size: 12px;
    letter-spacing: 2px;
    text-transform: uppercase;
    text-decoration: none;
    cursor: pointer;
    transition: color 0.3s ease;
}

.about-scroll-indicator:hover {
    color: rgba(255, 255, 255, 0.7);
}

.about-scroll-indicator:focus,
.about-scroll-indicator:active {
    outline: none;
    box-shadow: none;
    color: rgba(255, 255, 255, 0.4);
}

.about-scroll-arrow {
    width: 2px;
    height: 40px;
    background: linear-gradient(to bottom, rgba(255, 99, 0, 0.6), transparent);
    animation: scrollBounce 2s ease-in-out infinite;
}

@keyframes scrollBounce {
    0%, 100% { transform: translateY(0); opacity: 1; }
    50% { transform: translateY(12px); opacity: 0.3; }
}

/* --- Reveal Animations --- */
.reveal-on-scroll {
    opacity: 0;
    transform: translateY(40px);
    transition: opacity 0.8s cubic-bezier(0.16, 1, 0.3, 1),
                transform 0.8s cubic-bezier(0.16, 1, 0.3, 1);
}

.reveal-on-scroll.revealed {
    opacity: 1;
    transform: translateY(0);
}

/* Stagger prejudice cards */
.reveal-on-scroll.about-prejudice-card {
    transition-delay: 0s;
}

.col-md-4:nth-child(1) .reveal-on-scroll.about-prejudice-card { transition-delay: 0.1s; }
.col-md-4:nth-child(2) .reveal-on-scroll.about-prejudice-card { transition-delay: 0.25s; }
.col-md-4:nth-child(3) .reveal-on-scroll.about-prejudice-card { transition-delay: 0.4s; }

/* --- Sections --- */
.about-section {
    padding: 50px 0;
}

.about-section p {
    font-size: 1.05rem;
    line-height: 1.8;
    color: var(--text-secondary);
    margin-bottom: 16px;
}

.about-section a {
    color: var(--orange);
    text-decoration: none;
    font-weight: 600;
    border-bottom: 1px solid transparent;
    transition: border-color 0.2s ease;
}

.about-section a:hover {
    border-bottom-color: var(--orange);
    color: var(--orange-600);
}

/* --- Section Title --- */
.about-section-title {
    font-size: clamp(1.5rem, 3vw, 2.2rem);
    font-weight: 800;
    color: var(--text-primary);
    margin-bottom: 30px;
    position: relative;
    letter-spacing: -0.5px;
}

.about-subsection-title {
    font-size: 1.3rem;
    font-weight: 700;
    color: var(--text-primary);
    margin: 30px 0 16px;
}

.about-title-accent {
    display: block;
    width: 40px;
    height: 4px;
    background: var(--orange);
    border-radius: 2px;
    margin-bottom: 16px;
}

.about-title-accent.center {
    margin-left: auto;
    margin-right: auto;
}

/* --- Photo intro --- */
.about-photo {
    border-radius: 16px;
    box-shadow: var(--shadow-md);
}

/* --- Highlight Text --- */
.about-highlight-text {
    position: relative;
    padding: 20px 24px;
    margin: 24px 0;
    background: linear-gradient(135deg, rgba(255, 99, 0, 0.06) 0%, rgba(255, 99, 0, 0.02) 100%);
    border-left: 4px solid var(--orange);
    border-radius: 0 12px 12px 0;
    font-size: 1.1rem;
}

/* ============================================
   WAVE CANVAS (inside hero)
   ============================================ */
.wave-divider {
    width: 100%;
    height: 120px;
    margin: 30px 0 10px;
}

.wave-divider canvas {
    display: block;
    width: 100%;
    height: 100%;
}

@media (max-width: 768px) {
    .wave-divider {
        height: 80px;
        margin: 20px 0 8px;
    }
}

/* Story nav heading */
.story-nav-heading {
    text-align: center;
    font-size: clamp(1.3rem, 3vw, 1.8rem);
    font-weight: 800;
    color: var(--text-primary);
    margin: 40px 0 12px;
    letter-spacing: -0.5px;
}

.story-nav-heading-accent {
    background: linear-gradient(90deg, var(--orange), var(--orange), var(--orange));
    background-size: 200% 100%;
    -webkit-background-clip: text;
    background-clip: text;
    -webkit-text-fill-color: transparent;
    animation: shimmer 3s ease-in-out infinite;
}

@keyframes shimmer {
    0%   { background-position: 200% center; }
    100% { background-position: -200% center; }
}

/* ============================================
   STORY NAV — Navigation narrative sticky
   ============================================ */
.story-nav {
    position: sticky;
    top: 0;
    z-index: 1010;
    background: rgba(0, 0, 0, 0.95);
    backdrop-filter: blur(12px);
    -webkit-backdrop-filter: blur(12px);
    padding: 0;
    margin: 30px 0 10px;
    border-radius: 16px;
    overflow: hidden;
}

.story-nav-inner {
    display: flex;
    align-items: stretch;
    position: relative;
    overflow-x: auto;
    scrollbar-width: none;
    -ms-overflow-style: none;
    scroll-snap-type: x mandatory;
}

.story-nav-inner::-webkit-scrollbar {
    display: none;
}

/* Barre de progression en bas */
.story-nav-progress {
    position: absolute;
    bottom: 0;
    left: 0;
    right: 0;
    height: 3px;
    background: rgba(255, 255, 255, 0.08);
}

.story-nav-progress-fill {
    height: 100%;
    width: 0%;
    background: linear-gradient(90deg, var(--orange), var(--orange));
    border-radius: 0 3px 3px 0;
    transition: width 0.3s ease;
    box-shadow: 0 0 8px rgba(255, 99, 0, 0.5);
}

/* Items */
.story-nav-item {
    flex: 1;
    min-width: 0;
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 4px;
    padding: 14px 12px 18px;
    text-decoration: none;
    position: relative;
    cursor: pointer;
    scroll-snap-align: center;
    transition: background 0.3s ease;
}

.story-nav-item:hover {
    background: rgba(255, 255, 255, 0.05);
    text-decoration: none;
}

/* Dot */
.story-nav-dot {
    width: 10px;
    height: 10px;
    border-radius: 50%;
    background: rgba(255, 255, 255, 0.2);
    border: 2px solid rgba(255, 255, 255, 0.15);
    transition: all 0.4s cubic-bezier(0.16, 1, 0.3, 1);
    flex-shrink: 0;
}

.story-nav-item.active .story-nav-dot {
    background: var(--orange);
    border-color: var(--orange);
    box-shadow: 0 0 12px rgba(255, 99, 0, 0.6), 0 0 24px rgba(255, 99, 0, 0.2);
    transform: scale(1.3);
}

.story-nav-item.passed .story-nav-dot {
    background: var(--orange);
    border-color: var(--orange);
    opacity: 0.5;
}

/* Year */
.story-nav-year {
    font-size: 13px;
    font-weight: 800;
    color: rgba(255, 255, 255, 0.3);
    letter-spacing: 0.5px;
    transition: color 0.3s ease, transform 0.3s ease;
    white-space: nowrap;
}

.story-nav-item.active .story-nav-year {
    color: var(--orange);
    transform: scale(1.1);
}

.story-nav-item.passed .story-nav-year {
    color: rgba(255, 99, 0, 0.5);
}

/* Label */
.story-nav-label {
    font-size: 10px;
    font-weight: 600;
    color: rgba(255, 255, 255, 0.15);
    text-transform: uppercase;
    letter-spacing: 0.5px;
    white-space: nowrap;
    transition: color 0.3s ease;
    text-align: center;
}

.story-nav-item.active .story-nav-label {
    color: rgba(255, 255, 255, 0.7);
}

.story-nav-item.passed .story-nav-label {
    color: rgba(255, 255, 255, 0.25);
}

/* Connecteur entre dots */
.story-nav-item:not(:last-child)::after {
    content: '';
    position: absolute;
    top: 18px;
    right: 0;
    width: 0;
    height: 2px;
    background: rgba(255, 99, 0, 0.4);
    transition: width 0.5s cubic-bezier(0.16, 1, 0.3, 1);
}

.story-nav-item.passed:not(:last-child)::after {
    width: 100%;
}

/* Responsive mobile */
@media (max-width: 768px) {
    .story-nav {
        border-radius: 0;
        margin: 20px -12px 10px;
    }

    .story-nav-item {
        min-width: 90px;
        padding: 10px 10px 14px;
    }

    .story-nav-year {
        font-size: 12px;
    }

    .story-nav-label {
        font-size: 9px;
    }
}

/* --- Numbers Section --- */
.about-numbers {
    padding: 30px 20px 40px;
    margin: 16px 0 0;
    background: linear-gradient(135deg, #fff 0%, #f8f8f8 100%);
    border: 1px solid var(--border-light);
    border-radius: 24px;
}

.about-number-block {
    padding: 24px 10px;
}

.about-number {
    font-size: clamp(2rem, 5vw, 2.8rem);
    font-weight: 800;
    color: var(--orange);
    display: inline;
    font-variant-numeric: tabular-nums;
}

.about-number-suffix {
    font-size: clamp(1.2rem, 3vw, 1.6rem);
    font-weight: 700;
    color: var(--orange);
}

.about-number-label {
    display: block;
    font-size: 13px;
    color: var(--text-muted);
    text-transform: uppercase;
    letter-spacing: 1px;
    margin-top: 6px;
    font-weight: 600;
}

/* ============================================
   PARALLAX SECTIONS
   ============================================ */
.parallax-section {
    position: relative;
    min-height: 400px;
    background-attachment: fixed;
    background-position: center center;
    background-repeat: no-repeat;
    background-size: cover;
    display: flex;
    align-items: center;
    justify-content: center;
    margin: 40px 0;
    border-radius: 16px;
    overflow: hidden;
}

.parallax-section .parallax-overlay {
    position: absolute;
    inset: 0;
    background: rgba(0, 0, 0, 0.5);
}

.parallax-section .parallax-content {
    position: relative;
    z-index: 2;
    text-align: center;
    padding: 3rem 1.5rem;
    max-width: 800px;
}

.parallax-section .parallax-content p {
    color: #fff;
    font-size: 1.4rem;
    font-weight: 500;
    line-height: 1.6;
    margin: 0;
    font-style: italic;
    text-shadow: 0 1px 3px rgba(0, 0, 0, 0.4);
}

/* Fallback mobile : pas de background-attachment:fixed sur iOS */
@supports (-webkit-touch-callout: none) {
    .parallax-section {
        background-attachment: scroll;
    }
}

@media (max-width: 768px) {
    .parallax-section {
        min-height: 300px;
        background-attachment: scroll;
        margin: 20px 0;
    }
    .parallax-section .parallax-content p {
        font-size: 1.1rem;
    }
}

/* ============================================
   CARROUSEL MERAVIGLIA
   ============================================ */
#carrousel-meraviglia {
    border-radius: 16px;
    overflow: hidden;
    box-shadow: var(--shadow-lg);
}

#carrousel-meraviglia .carousel-item img {
    height: 500px;
    object-fit: cover;
}

#carrousel-meraviglia .carousel-caption {
    background: rgba(0, 0, 0, 0.6);
    backdrop-filter: blur(4px);
    border-radius: 10px;
    padding: 12px 20px;
    bottom: 1.5rem;
    left: 50%;
    transform: translateX(-50%);
    width: auto;
    max-width: 85%;
    right: auto;
}

#carrousel-meraviglia .carousel-caption p {
    margin: 0;
    font-size: 0.95rem;
    color: #fff;
}

@media (max-width: 768px) {
    #carrousel-meraviglia .carousel-item img {
        height: 280px;
    }
    #carrousel-meraviglia .carousel-caption {
        padding: 8px 14px;
        bottom: 0.75rem;
        max-width: 92%;
    }
    #carrousel-meraviglia .carousel-caption p {
        font-size: 0.8rem;
    }
}

/* ============================================
   VIDÉO RESPONSIVE
   ============================================ */
.about-video-block {
    margin: 30px 0;
}

.video-responsive {
    position: relative;
    padding-bottom: 56.25%;
    height: 0;
    overflow: hidden;
    border-radius: 16px;
    box-shadow: var(--shadow-lg);
}

.video-responsive iframe {
    position: absolute;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
    border: 0;
}

/* ============================================
   PREJUDICE CARDS
   ============================================ */
.about-prejudice-card {
    background: var(--bg-white);
    border: 1px solid var(--border-light);
    border-radius: 20px;
    padding: 36px 28px;
    height: 100%;
    transition: transform 0.4s cubic-bezier(0.16, 1, 0.3, 1),
                box-shadow 0.4s ease,
                border-color 0.4s ease;
}

.about-prejudice-card:hover {
    transform: translateY(-6px);
    box-shadow: 0 20px 40px rgba(0, 0, 0, 0.08);
    border-color: rgba(255, 99, 0, 0.3);
}

.about-prejudice-icon {
    width: 56px;
    height: 56px;
    border-radius: 14px;
    background: #000;
    color: var(--orange);
    display: flex;
    align-items: center;
    justify-content: center;
    font-size: 22px;
    margin-bottom: 18px;
    transition: transform 0.3s ease;
}

.about-prejudice-card:hover .about-prejudice-icon {
    transform: scale(1.1) rotate(-3deg);
}

.about-prejudice-card h3 {
    font-size: 1.15rem;
    font-weight: 700;
    color: var(--text-primary);
    margin-bottom: 12px;
}

.about-prejudice-card p {
    color: var(--text-secondary);
    line-height: 1.65;
    margin-bottom: 0;
    font-size: 0.92rem;
}

/* ============================================
   LINK CARDS (CTA contextuels)
   ============================================ */
.about-link-card {
    border: 1px solid var(--border-light);
    border-radius: 14px;
    padding: 20px 24px;
    margin: 30px 0;
    background: var(--bg-light);
    transition: border-color 0.3s ease, box-shadow 0.3s ease;
}

.about-link-card:hover {
    border-color: rgba(255, 99, 0, 0.3);
    box-shadow: var(--shadow-sm);
}

.about-link-card a {
    color: var(--orange);
    font-weight: 600;
    text-decoration: none;
    transition: color 0.2s ease;
}

.about-link-card a:hover {
    color: var(--orange-600);
}

/* ============================================
   AUTHOR SECTION
   ============================================ */
.about-author {
    padding: 50px 0;
}

.about-author-card {
    background: var(--bg-light);
    border-radius: 24px;
    padding: 50px 40px;
    border: 1px solid var(--border-light);
}

.about-author-portrait {
    position: relative;
    display: inline-block;
}

.about-author-portrait img {
    width: 200px;
    height: 200px;
    object-fit: cover;
    border-radius: 50%;
    border: 4px solid #fff;
    box-shadow: 0 8px 30px rgba(0, 0, 0, 0.12);
}

.about-author-portrait::after {
    content: '';
    position: absolute;
    inset: -6px;
    border-radius: 50%;
    border: 2px dashed rgba(255, 99, 0, 0.3);
    animation: portraitSpin 20s linear infinite;
}

@keyframes portraitSpin {
    from { transform: rotate(0deg); }
    to { transform: rotate(360deg); }
}

.about-author-name {
    font-size: 1.6rem;
    font-weight: 800;
    color: var(--text-primary);
    margin-bottom: 8px;
}

.about-author-social {
    color: #0A66C2;
    margin-left: 8px;
    font-size: 1.2rem;
    transition: transform 0.2s ease;
    display: inline-block;
}

.about-author-social:hover {
    transform: scale(1.15);
    color: #0A66C2;
}

.about-author-role {
    display: inline-block;
    padding: 4px 16px;
    background: #000;
    color: var(--orange);
    font-size: 13px;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: 1px;
    border-radius: 50px;
    margin-bottom: 20px;
}

.about-author-bio {
    color: var(--text-secondary);
    line-height: 1.8;
    font-size: 1rem;
}

/* ============================================
   CTA SECTION
   ============================================ */
.about-cta {
    background: linear-gradient(135deg, var(--orange) 0%, var(--orange) 100%);
    border-radius: 20px;
    padding: 50px 40px;
    text-align: center;
    color: #fff;
    margin: 40px 0;
}

.about-cta h2 {
    font-size: 1.6rem;
    font-weight: 700;
    margin-bottom: 12px;
    color: #fff;
}

.about-cta p {
    font-size: 1.05rem;
    opacity: 0.9;
    margin-bottom: 24px;
    color: #fff;
}

.about-cta-btn {
    background: #fff;
    color: var(--orange);
    font-weight: 700;
    border: none;
    border-radius: 12px;
    padding: 14px 36px;
    font-size: 1rem;
    transition: transform 0.3s ease, box-shadow 0.3s ease;
}

.about-cta-btn:hover {
    transform: translateY(-3px);
    box-shadow: 0 12px 30px rgba(0, 0, 0, 0.2);
    background: #000;
    color: #fff;
}

/* ============================================
   PARTNER & LEGAL
   ============================================ */
.about-partner {
    padding-bottom: 30px;
}

.about-legal {
    padding: 20px 0 40px;
    border-top: 1px solid var(--border-light);
    margin-top: 10px;
}

.about-legal p {
    color: var(--text-muted);
    margin: 0;
}

/* ============================================
   RESPONSIVE
   ============================================ */
@media (max-width: 768px) {
    .about-hero {
        padding: 50px 0 40px;
    }

    .min-vh-50 {
        min-height: auto;
    }

    .about-section {
        padding: 30px 0;
    }

    .about-numbers {
        border-radius: 16px;
        margin: 20px -12px;
        padding: 20px 10px;
    }

    .about-number-block {
        padding: 16px 8px;
    }

    .about-prejudice-card {
        padding: 24px 20px;
    }

    .about-author-card {
        padding: 30px 20px;
        text-align: center;
    }

    .about-author-portrait {
        margin-bottom: 24px;
    }

    .about-author-portrait img {
        width: 150px;
        height: 150px;
    }

    .about-author-info {
        text-align: left;
    }

    .about-cta {
        padding: 36px 24px;
        border-radius: 16px;
        margin: 30px 0;
    }

    .about-link-card {
        padding: 16px 18px;
    }

    .about-highlight-text {
        padding: 16px 18px;
        font-size: 1rem;
    }
}

/* ---- CORRECTIONS D'INTÉGRATION DANS okc_v2 ----
   Le legacy n'imposait pas de couleur à ses titres : ils héritaient de sa
   feuille. Ici `theme.css` pose `h1,h2,h3{color:var(--ink)}`, et le titre du
   héros se retrouvait en #16161a sur un fond noir — illisible. C'est le piège
   consigné dans CLAUDE.md : tout titre sur fond sombre doit reposer sa
   couleur. */
.about-hero-title{color:#fff}
.about-hero .about-hero-subtitle{color:rgba(255,255,255,.78)}
/* Même cause pour les sections à fond sombre. */
.parallax-content h2,.parallax-content h3,.parallax-content p{color:#fff}

/* Le fil d'Ariane doit s'aligner sur le contenu, pas sur le bord de la
   fenêtre : le reste de la page vit dans un `.container` Bootstrap de
   1 180 px, centré. Il collait sinon au bord gauche, seul élément de la page
   à le faire. */
.ap-fil{max-width:1180px;margin:0 auto;padding:.85rem 12px 0}
.ap-fil .fil{margin:0}

/* ---- MISE AU DIAPASON DU RESTE DU SITE ----
   Le design de la page est conservé ; ces réglages ne font que l'accorder à
   okc_v2, où les héros sont plus courts et la typographie tenue par la charte. */

/* Le héros faisait 705 px, contre 560 à 634 pour ceux du site. Sur un
   portable de 786 px de haut il occupait la fenêtre entière et l'on ne
   soupçonnait pas qu'il y avait une page en dessous. */
.about-hero{padding:56px 0 44px}
.about-hero .min-vh-50{min-height:0!important}

/* Titres : la charte a sa police de titrage et son interlettrage serré. Le
   legacy laissait la police du corps. */
.about-hero-title,.about-section-title,.about-subsection-title,
.parallax-content h2,.about-number{font-family:var(--font-head);letter-spacing:-.02em}

/* Le filet orange court sous les titres de section, comme sur les pages
   éditoriales : il découpe une page longue sans ajouter de bruit, et fait le
   lien visuel avec le reste du site. */
.about-section-title{position:relative;padding-bottom:.55rem}
.about-section-title::after{content:"";position:absolute;left:0;bottom:0;
  width:44px;height:3px;border-radius:2px;background:var(--orange)}
.about-section-title.text-center::after{left:50%;transform:translateX(-50%)}

/* Rayons alignés sur les jetons du thème : le legacy mélangeait 8, 12, 16 et
   20 px, okc_v2 s'en tient à 10-12 sur les cartes. */
.about-prejudice-card,.about-link-card,.about-number-block,.about-photo,
.about-video-block{border-radius:12px}

/* Le fil d'Ariane est désormais dans le conteneur : il n'a plus besoin de le
   recréer. */
.ap-fil{max-width:none;margin:0;padding:1.1rem 0 .2rem}

/* ---- FUSION AVEC LE MOTEUR ----
   Le moteur est sur `--black` (#101014), le héros était sur `#000` pur : deux
   noirs voisins mais distincts, donc une ligne visible entre les deux blocs.
   Pire, la lueur orange du héros démarrait à 50 % de hauteur avec un rayon
   large, donc juste sous la jonction, ce qui la soulignait au lieu de
   l'effacer.

   On part donc du MÊME fond, et le dégradé vient ensuite :
     1. le héros prend exactement la couleur du moteur ;
     2. les lueurs descendent dans le corps du héros ;
     3. un voile de cette même couleur, opaque en haut et nul plus bas, couvre
        le tiers supérieur : la jonction disparaît, et le dégradé semble naître
        du moteur lui-même. */
.about-hero{background:var(--black)}
.about-hero-bg{
  background:
    radial-gradient(ellipse at 22% 78%, rgba(255,99,0,.17) 0%, transparent 58%),
    radial-gradient(ellipse at 80% 52%, rgba(255,99,0,.10) 0%, transparent 52%);
}
/* Le voile est porté par le héros et NON par `.about-hero-bg`, qui pulse :
   animé, il ferait scintiller la jonction, c'est-à-dire exactement ce qu'il
   est là pour masquer. */
.about-hero::after{
  content:"";position:absolute;left:0;right:0;top:0;height:42%;
  background:linear-gradient(to bottom, var(--black) 0%, rgba(16,16,20,.72) 38%, rgba(16,16,20,0) 100%);
  pointer-events:none;z-index:0}
/* Le voile est positionne ET dernier dans l ordre du DOM : sans cette
   precision il se peignait AU-DESSUS du titre et du badge, qu il ternissait.
   Le contenu repasse devant. */
.about-hero > .container{position:relative;z-index:1}
.about-hero .wave-divider{position:relative;z-index:1}
/* Le moteur garde son fond PLEIN. J avais voulu le faire s eteindre vers le
   bas, mais un degrade qui finit a 94 % d opacite laisse passer le blanc du
   corps de page : il eclaircirait la jonction au lieu de la fondre, soit
   exactement l inverse du but. La fusion se joue du seul cote du heros, ou
   le voile est opaque et n a rien derriere lui. */
.p-apropos .cp-moteur{padding-bottom:2.25rem}

/* ---- L'ANIMATION NE DOIT MASQUER QUE SI ELLE PEUT RÉVÉLER ----
   `.reveal-on-scroll` pose `opacity:0` et attend que le script ajoute
   `revealed`. Sans JavaScript, ce script ne tourne jamais : les 500 lignes de
   contenu de ces pages restaient invisibles, alors qu'elles sont bien dans le
   document. On conditionne donc l'état masqué à la présence du script, signalée
   par une classe posée sur `<html>` avant le rendu. */
.reveal-on-scroll{opacity:1;transform:none}
.js-reveal .reveal-on-scroll{opacity:0;transform:translateY(40px)}
.js-reveal .reveal-on-scroll.revealed{opacity:1;transform:none}
/* Qui demande moins d'animation ne demande pas moins de contenu. */
@media(prefers-reduced-motion:reduce){
  .js-reveal .reveal-on-scroll{opacity:1;transform:none;transition:none}
}
