:root {
    --cdv-polish-violet:
        142, 116, 255;

    --cdv-polish-cyan:
        95, 211, 255;

    --cdv-polish-mint:
        82, 231, 174;

    --cdv-polish-duration:
        720ms;

    --cdv-polish-ease:
        cubic-bezier(
            .18,
            .78,
            .18,
            1
        );
}


/* =========================================================
   CHARGEMENT ET TRANSITION GLOBALE
========================================================= */

html {
    background:
        #040611;
}

body {
    --cdv-pointer-x:
        50%;

    --cdv-pointer-y:
        34%;
}

body::selection {
    color:
        #ffffff;

    background:
        rgba(
            132,
            105,
            255,
            .55
        );
}

.cdv-polish-load-line {
    position:
        fixed;

    z-index:
        30000;

    top:
        0;

    left:
        0;

    width:
        100%;

    height:
        2px;

    overflow:
        hidden;

    pointer-events:
        none;

    opacity:
        1;

    background:
        rgba(
            255,
            255,
            255,
            .025
        );

    transition:
        opacity
        .45s
        ease;
}

.cdv-polish-load-line::before {
    content:
        "";

    position:
        absolute;

    inset:
        0;

    transform:
        translateX(
            -105%
        );

    background:
        linear-gradient(
            90deg,
            transparent,
            rgba(
                var(
                    --cdv-polish-violet
                ),
                .90
            ),
            rgba(
                var(
                    --cdv-polish-cyan
                ),
                .96
            ),
            transparent
        );

    box-shadow:
        0 0 22px
        rgba(
            var(
                --cdv-polish-cyan
            ),
            .55
        );

    animation:
        cdvPolishLoadLine
        1.15s
        var(
            --cdv-polish-ease
        )
        both;
}

.cdv-polish-load-line.is-finished {
    opacity:
        0;
}

@keyframes cdvPolishLoadLine {
    0% {
        transform:
            translateX(
                -105%
            );
    }

    58% {
        transform:
            translateX(
                -20%
            );
    }

    100% {
        transform:
            translateX(
                105%
            );
    }
}


body.cdv-polish-page-enter
> main {
    animation:
        cdvPolishPageEnter
        .72s
        var(
            --cdv-polish-ease
        )
        both;
}

body.cdv-polish-page-leaving
> main {
    opacity:
        0;

    transform:
        translateY(
            -7px
        );

    filter:
        blur(
            3px
        );

    transition:
        opacity
        .22s
        ease,
        transform
        .22s
        ease,
        filter
        .22s
        ease;
}

@keyframes cdvPolishPageEnter {
    from {
        opacity:
            0;

        transform:
            translateY(
                13px
            );

        filter:
            blur(
                5px
            );
    }

    to {
        opacity:
            1;

        transform:
            translateY(
                0
            );

        filter:
            blur(
                0
            );
    }
}


/* =========================================================
   LUMIÈRE AMBIANTE TRÈS DISCRÈTE
========================================================= */

.cdv-polish-ambient-light {
    position:
        fixed;

    z-index:
        0;

    inset:
        0;

    overflow:
        hidden;

    pointer-events:
        none;

    contain:
        strict;
}

.cdv-polish-ambient-light::before {
    content:
        "";

    position:
        absolute;

    width:
        680px;

    height:
        680px;

    left:
        calc(
            var(
                --cdv-pointer-x
            )
            -
            340px
        );

    top:
        calc(
            var(
                --cdv-pointer-y
            )
            -
            340px
        );

    border-radius:
        50%;

    opacity:
        .11;

    filter:
        blur(
            75px
        );

    background:
        radial-gradient(
            circle,
            rgba(
                var(
                    --cdv-polish-violet
                ),
                .42
            ),
            rgba(
                var(
                    --cdv-polish-cyan
                ),
                .09
            )
            36%,
            transparent
            70%
        );

    transform:
        translate3d(
            0,
            0,
            0
        );

    transition:
        left
        1.1s
        cubic-bezier(
            .2,
            .7,
            .2,
            1
        ),
        top
        1.1s
        cubic-bezier(
            .2,
            .7,
            .2,
            1
        );
}


/* =========================================================
   ÉCRAN BIENVENUE
========================================================= */

.cdv-welcome-subtitle {
    display:
        none !important;
}

.cdv-welcome-center {
    gap:
        clamp(
            18px,
            2.3vh,
            29px
        ) !important;
}

.cdv-welcome-title {
    text-wrap:
        balance;
}

.cdv-welcome-enter {
    margin-top:
        4px !important;
}

.cdv-welcome-experience.cdv-polish-repeat-visit {
    animation:
        cdvPolishWelcomeRepeat
        1.55s
        ease
        both !important;
}

@keyframes cdvPolishWelcomeRepeat {
    0% {
        opacity:
            1;
    }

    70% {
        opacity:
            1;
    }

    100% {
        opacity:
            0;

        visibility:
            hidden;
    }
}


/* =========================================================
   NAVIGATION
========================================================= */

.cdv-global-header {
    will-change:
        transform,
        height,
        background;

    transform:
        translateZ(
            0
        );
}

.cdv-global-link {
    isolation:
        isolate;
}

.cdv-global-link::after {
    content:
        "";

    position:
        absolute;

    z-index:
        -1;

    inset:
        5px;

    border-radius:
        8px;

    opacity:
        0;

    transform:
        scale(
            .82
        );

    background:
        radial-gradient(
            circle at center,
            rgba(
                var(
                    --cdv-polish-violet
                ),
                .18
            ),
            transparent
            72%
        );

    transition:
        opacity
        .3s
        ease,
        transform
        .3s
        var(
            --cdv-polish-ease
        );
}

.cdv-global-link:hover::after,
.cdv-global-link.active::after {
    opacity:
        1;

    transform:
        scale(
            1
        );
}


/* =========================================================
   APPARITION DES CARTES
========================================================= */

.cdv-polish-reveal {
    opacity:
        0;

    transform:
        translate3d(
            0,
            22px,
            0
        );

    filter:
        blur(
            4px
        );

    transition:
        opacity
        .74s
        var(
            --cdv-polish-ease
        ),
        transform
        .74s
        var(
            --cdv-polish-ease
        ),
        filter
        .62s
        ease;

    transition-delay:
        var(
            --cdv-polish-delay,
            0ms
        );
}

.cdv-polish-reveal.cdv-polish-visible {
    opacity:
        1;

    transform:
        translate3d(
            0,
            0,
            0
        );

    filter:
        blur(
            0
        );
}


/*
   Les lignes d’un tableau utilisent une animation plus courte
   afin de conserver une lecture rapide.
*/

.ranking-v2-row.cdv-polish-reveal,
.hof-board-row.cdv-polish-reveal {
    transform:
        translate3d(
            12px,
            0,
            0
        );

    filter:
        none;

    transition-duration:
        .48s;
}

.ranking-v2-row.cdv-polish-visible,
.hof-board-row.cdv-polish-visible {
    transform:
        translate3d(
            0,
            0,
            0
        );
}


/* =========================================================
   MICRO-INTERACTIONS
========================================================= */

.world-destination,
.world-custom-card,
.world-podium-card,
.cdv-news-card,
.hof-record-card,
.hof-timeline-card,
.ranking-v2-podium-card {
    will-change:
        transform;

    transform:
        translateZ(
            0
        );
}

.world-destination:active,
.world-custom-card:active,
.world-podium-card:active,
.cdv-news-card:active,
.hof-record-card:active,
.hof-timeline-card:active,
.ranking-v2-podium-card:active {
    transform:
        scale(
            .985
        );
}


/* =========================================================
   DONNÉES ET COMPTEURS
========================================================= */

[data-count],
.cdv-news-data-value,
.ranking-v2-hero-stat strong,
.ranking-v2-live-count,
.world-metric-value,
.hof-record-value {
    font-variant-numeric:
        tabular-nums;

    text-rendering:
        geometricPrecision;
}

.cdv-polish-number-flash {
    animation:
        cdvPolishNumberFlash
        .72s
        ease
        both;
}

@keyframes cdvPolishNumberFlash {
    0% {
        opacity:
            .35;

        filter:
            blur(
                3px
            );

        transform:
            translateY(
                5px
            );
    }

    100% {
        opacity:
            1;

        filter:
            blur(
                0
            );

        transform:
            translateY(
                0
            );
    }
}


/* =========================================================
   CONTRÔLE AUDIO
========================================================= */

.cdv-global-audio-control {
    overflow:
        visible !important;

    isolation:
        isolate;

    box-shadow:
        inset
        0 1px 0
        rgba(
            255,
            255,
            255,
            .07
        ),
        0 12px 34px
        rgba(
            0,
            0,
            0,
            .28
        ) !important;
}

.cdv-global-audio-control::after {
    content:
        attr(
            data-cdv-label
        );

    position:
        absolute;

    right:
        calc(
            100%
            +
            10px
        );

    top:
        50%;

    padding:
        8px
        10px;

    border:
        1px solid
        rgba(
            143,
            126,
            255,
            .17
        );

    border-radius:
        9px;

    color:
        rgba(
            238,
            236,
            255,
            .72
        );

    font-size:
        7px;

    font-weight:
        850;

    letter-spacing:
        .14em;

    text-transform:
        uppercase;

    white-space:
        nowrap;

    pointer-events:
        none;

    opacity:
        0;

    transform:
        translate(
            7px,
            -50%
        );

    background:
        rgba(
            5,
            7,
            23,
            .93
        );

    transition:
        opacity
        .25s
        ease,
        transform
        .25s
        ease;
}

.cdv-global-audio-control:hover::after {
    opacity:
        1;

    transform:
        translate(
            0,
            -50%
        );
}


/* =========================================================
   FOOTER GLOBAL
========================================================= */

footer.cdv-polish-footer {
    position:
        relative;

    min-height:
        110px;

    display:
        flex;

    align-items:
        center;

    justify-content:
        space-between;

    gap:
        24px;

    margin-top:
        clamp(
            64px,
            8vw,
            118px
        );

    padding:
        34px
        max(
            24px,
            calc(
                (
                    100vw
                    -
                    1120px
                )
                /
                2
            )
        );

    overflow:
        hidden;

    border-top:
        1px solid
        rgba(
            159,
            143,
            255,
            .10
        );

    color:
        rgba(
            200,
            198,
            219,
            .37
        );

    font-size:
        8px;

    font-weight:
        850;

    letter-spacing:
        .20em;

    text-transform:
        uppercase;

    background:
        linear-gradient(
            180deg,
            rgba(
                4,
                6,
                18,
                0
            ),
            rgba(
                4,
                6,
                18,
                .68
            )
        );
}

footer.cdv-polish-footer::before {
    content:
        "";

    position:
        absolute;

    top:
        -1px;

    left:
        12%;

    width:
        23%;

    height:
        1px;

    background:
        linear-gradient(
            90deg,
            transparent,
            rgba(
                var(
                    --cdv-polish-violet
                ),
                .80
            ),
            rgba(
                var(
                    --cdv-polish-cyan
                ),
                .72
            ),
            transparent
        );

    animation:
        cdvPolishFooterLine
        7s
        ease-in-out
        infinite;
}

footer.cdv-polish-footer::after {
    content:
        "SAISON 01  ·  2026";

    color:
        rgba(
            104,
            218,
            255,
            .46
        );

    font-size:
        7px;

    letter-spacing:
        .22em;
}

@keyframes cdvPolishFooterLine {
    0%,
    100% {
        left:
            8%;

        opacity:
            .45;
    }

    50% {
        left:
            69%;

        opacity:
            1;
    }
}


/* =========================================================
   RESPONSIVE TABLETTE
========================================================= */

@media (max-width: 1100px) {
    footer.cdv-polish-footer {
        padding-inline:
            28px;
    }

    .ranking-v2-title,
    .cdv-news-title {
        overflow-wrap:
            anywhere;
    }
}


/* =========================================================
   RESPONSIVE MOBILE
========================================================= */

@media (max-width: 860px) {
    body {
        overflow-x:
            hidden;
    }

    body > main,
    main {
        max-width:
            100%;
    }

    .cdv-polish-ambient-light::before {
        width:
            420px;

        height:
            420px;

        left:
            calc(
                var(
                    --cdv-pointer-x
                )
                -
                210px
            );

        top:
            calc(
                var(
                    --cdv-pointer-y
                )
                -
                210px
            );

        opacity:
            .07;

        filter:
            blur(
                65px
            );
    }

    .world-section-title,
    .ranking-v2-title,
    .cdv-news-title,
    .hof-champion-title {
        text-wrap:
            balance;
    }

    .world-archive-track,
    .cdv-news-grid {
        scroll-snap-type:
            x
            proximity;
    }

    .world-custom-card,
    .cdv-news-card {
        scroll-snap-align:
            start;
    }

    footer.cdv-polish-footer {
        min-height:
            96px;

        flex-direction:
            column;

        align-items:
            flex-start;

        justify-content:
            center;

        margin-top:
            70px;

        padding:
            28px
            20px;

        line-height:
            1.7;
    }

    footer.cdv-polish-footer::after {
        position:
            static;
    }

    .cdv-global-audio-control::after {
        display:
            none;
    }
}


@media (max-width: 520px) {
    .cdv-welcome-title {
        font-size:
            clamp(
                52px,
                17vw,
                78px
            ) !important;

        letter-spacing:
            -.065em !important;
    }

    .cdv-welcome-enter {
        min-width:
            min(
                260px,
                calc(
                    100vw
                    -
                    40px
                )
            ) !important;
    }

    .ranking-v2-title,
    .cdv-news-title {
        letter-spacing:
            -.06em !important;
    }
}


/* =========================================================
   ACCESSIBILITÉ
========================================================= */

@media (prefers-reduced-motion: reduce) {
    .cdv-polish-load-line,
    .cdv-polish-load-line::before,
    .cdv-polish-reveal,
    .cdv-polish-number-flash,
    footer.cdv-polish-footer::before,
    body.cdv-polish-page-enter
    > main,
    body.cdv-polish-page-leaving
    > main {
        animation:
            none !important;

        transition:
            none !important;

        opacity:
            1 !important;

        transform:
            none !important;

        filter:
            none !important;
    }

    .cdv-polish-ambient-light {
        display:
            none !important;
    }
}
