/* Sprint 06 — Protocole CHIVARYN
   Module isolé : aucune règle ne sort de .protocole-v2. */

.protocole-v2 {
    --protocol-progress: 0;
    --protocol-scroll-shift: 0px;
    --protocol-parallax-x: 0;
    --protocol-parallax-y: 0;
    --protocol-pointer-x: 50%;
    --protocol-pointer-y: 38%;
    --protocol-accent: 168, 85, 247;
    min-height: 100vh;
    background:
        radial-gradient(ellipse at 50% 27%, rgba(91, 33, 182, .18), transparent 31%),
        radial-gradient(ellipse at 14% 19%, rgba(76, 29, 149, .07), transparent 27%),
        radial-gradient(ellipse at 86% 72%, rgba(30, 64, 175, .055), transparent 29%),
        linear-gradient(180deg, #03040b 0%, #050412 46%, #03040a 100%);
}

.protocole-v2::after {
    content: "";
    position: absolute;
    inset: 0;
    z-index: -1;
    pointer-events: none;
    background: radial-gradient(circle 520px at var(--protocol-pointer-x) var(--protocol-pointer-y), rgba(var(--protocol-accent), .075), transparent 72%);
    transition: background .8s ease;
}

.protocole-v2 .protocole-environnement-canvas {
    position: absolute;
    inset: 0;
    z-index: -1;
    width: 100%;
    height: 100%;
    pointer-events: none;
    opacity: .48;
    mix-blend-mode: screen;
    mask-image: linear-gradient(to bottom, transparent, #000 7%, #000 94%, transparent);
}

.protocole-v2 .protocole-fond-neural,
.protocole-v2 .protocole-fond-constellations,
.protocole-v2 .protocole-fond-fog,
.protocole-v2 .protocole-impulsion {
    position: absolute;
    inset: 0;
    pointer-events: none;
}

.protocole-v2 .protocole-fond-grille {
    opacity: .46;
    background-image:
        url("../assets/images/protocole-universe-v1.webp"),
        linear-gradient(rgba(139,92,246,.04) 1px, transparent 1px),
        linear-gradient(90deg,rgba(139,92,246,.04) 1px, transparent 1px);
    background-position: center, 0 0, 0 0;
    background-size: 100% 100%, 68px 68px, 68px 68px;
    background-repeat: no-repeat, repeat, repeat;
    background-blend-mode: screen;
    filter: saturate(.78) brightness(.68);
    mix-blend-mode: screen;
}

.protocole-v2 .protocole-fond-neural {
    z-index: -3;
    opacity: .31;
    background:
        radial-gradient(circle at 12% 24%, rgba(196, 181, 253, .6) 0 1px, transparent 2px),
        radial-gradient(circle at 82% 18%, rgba(96, 165, 250, .48) 0 1px, transparent 2px),
        radial-gradient(circle at 23% 66%, rgba(168, 85, 247, .5) 0 1.5px, transparent 3px),
        radial-gradient(circle at 74% 72%, rgba(245, 196, 83, .38) 0 1px, transparent 2px),
        linear-gradient(112deg, transparent 18%, rgba(139, 92, 246, .1) 18.08%, transparent 18.22%),
        linear-gradient(68deg, transparent 71%, rgba(96, 165, 250, .085) 71.08%, transparent 71.22%),
        linear-gradient(147deg, transparent 38%, rgba(192,132,252,.055) 38.06%, transparent 38.18%),
        linear-gradient(32deg, transparent 56%, rgba(59,130,246,.045) 56.06%, transparent 56.16%);
    background-size: 310px 350px, 410px 330px, 450px 400px, 380px 460px, 520px 520px, 630px 630px, 740px 690px, 820px 760px;
    background-blend-mode: screen;
    mask-image: linear-gradient(to bottom, transparent, #000 7%, #000 94%, transparent);
    animation: protocolNeuralDrift 42s linear infinite;
}

.protocole-v2 .protocole-fond-neural::before,
.protocole-v2 .protocole-fond-neural::after,
.protocole-v2 .protocole-fond-constellations::before,
.protocole-v2 .protocole-fond-constellations::after,
.protocole-v2 .protocole-fond-grille::before,
.protocole-v2 .protocole-fond-grille::after {
    position: absolute;
    display: grid;
    place-items: center;
    min-width: 64px;
    height: 25px;
    padding: 0 10px;
    border: 1px solid rgba(196, 181, 253, .16);
    border-radius: 999px;
    color: rgba(226, 232, 240, .48);
    background: rgba(10, 8, 20, .24);
    box-shadow: 0 0 24px rgba(124, 58, 237, .07), inset 0 0 12px rgba(139, 92, 246, .035);
    font-size: .47rem;
    font-weight: 760;
    letter-spacing: .14em;
    white-space: nowrap;
    opacity: .24;
    backdrop-filter: blur(3px);
    will-change: transform, opacity;
}

.protocole-v2 .protocole-fond-neural::before {
    content: "IA";
    top: 16%;
    left: 7%;
    animation: protocolSatelliteA 31s cubic-bezier(.45,0,.22,1) infinite;
}

.protocole-v2 .protocole-fond-neural::after {
    content: "ANALYTICS";
    right: 5%;
    bottom: 13%;
    animation: protocolSatelliteB 37s cubic-bezier(.45,0,.22,1) infinite;
}

.protocole-v2 .protocole-fond-constellations::before {
    content: "CRM";
    top: 39%;
    right: 10%;
    animation: protocolSatelliteB 43s cubic-bezier(.45,0,.22,1) -17s infinite;
}

.protocole-v2 .protocole-fond-constellations::after {
    content: "SEO";
    left: 11%;
    bottom: 34%;
    animation: protocolSatelliteA 41s cubic-bezier(.45,0,.22,1) -23s infinite;
}

.protocole-v2 .protocole-fond-grille::before {
    content: "DASHBOARD";
    top: 28%;
    right: 19%;
    animation: protocolSatelliteC 47s cubic-bezier(.45,0,.22,1) -9s infinite;
}

.protocole-v2 .protocole-fond-grille::after {
    content: "AUTOMATION";
    left: 17%;
    bottom: 19%;
    animation: protocolSatelliteC 53s cubic-bezier(.45,0,.22,1) -31s infinite reverse;
}

.protocole-v2 .protocole-fond-constellations {
    z-index: -2;
    opacity: .43;
    background-image:
        radial-gradient(circle, rgba(255, 255, 255, .7) 0 1px, transparent 1.6px),
        radial-gradient(circle, rgba(192, 132, 252, .5) 0 1px, transparent 1.8px),
        linear-gradient(118deg, transparent 0 46%, rgba(167,139,250,.09) 46.1%, transparent 46.28% 100%),
        linear-gradient(62deg, transparent 0 63%, rgba(96,165,250,.07) 63.08%, transparent 63.24% 100%);
    background-position: 0 0, 76px 113px, 30px 90px, 140px -60px;
    background-size: 190px 230px, 270px 310px, 560px 520px, 690px 640px;
    background-blend-mode: screen;
    mask-image: radial-gradient(ellipse at center, #000, transparent 78%);
    animation:
        protocolStars 86s linear infinite,
        protocolCircuitLife 28s cubic-bezier(.45,0,.22,1) infinite;
}

.protocole-v2 .protocole-fond-fog {
    z-index: -2;
    width: 72vw;
    height: 72vw;
    margin: auto;
    border-radius: 50%;
    filter: blur(105px);
    opacity: .2;
    will-change: transform;
}

.protocole-v2 .protocole-fond-fog-a {
    right: 42%;
    bottom: 32%;
    background:
        conic-gradient(from 128deg at 58% 46%, transparent 0 11%, rgba(168,85,247,.19) 18%, transparent 27% 48%, rgba(59,130,246,.12) 57%, transparent 68% 100%),
        radial-gradient(circle at 58% 46%, rgba(109,40,217,.52), rgba(76,29,149,.27) 34%, transparent 68%),
        radial-gradient(ellipse at 34% 62%, rgba(37,99,235,.17), transparent 58%);
    box-shadow: 22vw -8vw 18vw rgba(88,28,135,.045), -16vw 26vw 20vw rgba(30,64,175,.035);
    animation:
        protocolFogA 48s cubic-bezier(.45,0,.22,1) infinite alternate,
        protocolUniverseResponse 15.6s cubic-bezier(.45,0,.22,1) infinite;
}

.protocole-v2 .protocole-fond-fog-b {
    left: 48%;
    top: 38%;
    background:
        conic-gradient(from 302deg at 42% 48%, transparent 0 17%, rgba(59,130,246,.14) 24%, transparent 34% 59%, rgba(217,70,239,.1) 68%, transparent 78% 100%),
        radial-gradient(circle at 42% 48%, rgba(30,64,175,.27), rgba(76,29,149,.17) 42%, transparent 70%),
        radial-gradient(ellipse at 68% 36%, rgba(192,132,252,.11), transparent 55%);
    box-shadow: -24vw 12vw 22vw rgba(124,58,237,.035), 14vw 29vw 19vw rgba(245,158,11,.025);
    animation:
        protocolFogB 61s cubic-bezier(.45,0,.22,1) infinite alternate,
        protocolUniverseResponse 15.6s cubic-bezier(.45,0,.22,1) -7.8s infinite;
}

.protocole-v2 .protocole-impulsion {
    z-index: 1;
    top: 42%;
    bottom: auto;
    height: 2px;
    opacity: 0;
    background: linear-gradient(90deg, transparent, rgba(216, 180, 254, .7), #fff, rgba(245, 196, 83, .7), transparent);
    box-shadow: 0 0 28px rgba(192, 132, 252, .55);
    transform: scaleX(.05);
}

.protocole-v2[data-protocole-actif="5"] .protocole-impulsion {
    animation: protocolLaunchWave 1.5s cubic-bezier(.2, .8, .2, 1);
}

.protocole-v2 .protocole-intro {
    position: relative;
    z-index: 5;
    margin-bottom: clamp(80px, 9vw, 140px);
}

.protocole-v2 .protocole-intro h2 {
    max-width: 820px;
    font-size: clamp(3.4rem, 6.5vw, 6.8rem);
}

.protocole-v2 .protocole-lueur-a,
.protocole-v2 .protocole-lueur-b {
    width: min(920px, 72vw);
    height: min(920px, 72vw);
    opacity: .28;
    filter: blur(105px);
    border-radius: 38% 62% 58% 42% / 46% 41% 59% 54%;
    mix-blend-mode: screen;
    will-change: transform, opacity;
}

.protocole-v2 .protocole-lueur-a {
    left: -34%;
    top: 11%;
    background:
        conic-gradient(from 42deg, transparent 0 18%, rgba(168,85,247,.42) 27%, transparent 38% 61%, rgba(59,130,246,.22) 70%, transparent 81%),
        radial-gradient(ellipse, rgba(126,34,206,.32), transparent 68%);
    animation: protocolNebulaEdgeA 72s cubic-bezier(.45,0,.22,1) infinite alternate;
}

.protocole-v2 .protocole-lueur-b {
    right: -36%;
    bottom: 7%;
    background:
        conic-gradient(from 224deg, transparent 0 21%, rgba(37,99,235,.32) 31%, transparent 41% 64%, rgba(217,70,239,.24) 73%, transparent 84%),
        radial-gradient(ellipse, rgba(88,28,135,.3), transparent 68%);
    animation: protocolNebulaEdgeB 83s cubic-bezier(.45,0,.22,1) infinite alternate;
}

.protocole-v2 .protocole-systeme {
    min-height: 1880px;
    contain: layout style;
}

.protocole-v2 .protocole-systeme::before {
    content: "";
    position: absolute;
    z-index: 0;
    top: -210px;
    left: 50%;
    width: min(1120px, 88vw);
    aspect-ratio: 1;
    border-radius: 50%;
    pointer-events: none;
    background:
        repeating-radial-gradient(circle, transparent 0 8.4%, rgba(167,139,250,.028) 8.5% 8.65%, transparent 8.75% 13%),
        radial-gradient(circle, rgba(139,92,246,.075), rgba(76,29,149,.035) 38%, transparent 69%);
    mask-image: radial-gradient(circle, #000 0 54%, rgba(0,0,0,.72) 66%, transparent 78%);
    transform: translateX(-50%) scale(calc(.97 + var(--protocol-progress) * .04));
    animation: protocolGravityField 18.4s cubic-bezier(.45,0,.22,1) infinite;
}

.protocole-v2 .protocole-core {
    position: sticky;
    top: clamp(105px, 14vh, 155px);
    left: auto;
    width: min(500px, 43vw);
    margin: 0 auto;
    transform: none;
    filter: drop-shadow(0 0 50px rgba(var(--protocol-accent), .25));
    will-change: transform, filter;
}

.protocole-v2 .protocole-core::before,
.protocole-v2 .protocole-core::after {
    content: "";
    position: absolute;
    border-radius: 50%;
    pointer-events: none;
}

.protocole-v2 .protocole-core::before {
    inset: -7%;
    border: 1px solid rgba(var(--protocol-accent), .14);
    background: conic-gradient(from 90deg, transparent 0 18%, rgba(var(--protocol-accent), .22) 25%, transparent 32% 68%, rgba(96, 165, 250, .18) 75%, transparent 82%);
    mask-image: radial-gradient(circle, transparent 67%, #000 68%);
    animation: protocolSpin 36s linear infinite;
}

.protocole-v2 .protocole-core::after {
    inset: 36%;
    background: rgba(var(--protocol-accent), .28);
    filter: blur(30px);
    animation: protocolCoreBreath 4.6s ease-in-out infinite;
}

.protocole-v2 .protocole-core-halo {
    position: absolute;
    inset: 11%;
    border-radius: 50%;
    background: radial-gradient(circle, rgba(255,255,255,.08), rgba(var(--protocol-accent), .12) 36%, transparent 70%);
    box-shadow:
        0 0 90px rgba(var(--protocol-accent), .16),
        0 0 190px rgba(var(--protocol-accent), .055),
        0 0 320px rgba(var(--protocol-accent), .025),
        inset 0 0 70px rgba(var(--protocol-accent), .12);
    animation: protocolHalo 5.2s ease-in-out infinite;
}

.protocole-v2 .protocole-core-scan {
    position: absolute;
    z-index: 3;
    inset: 19%;
    overflow: hidden;
    border-radius: 50%;
    mask-image: radial-gradient(circle, #000 0 63%, transparent 70%);
}

.protocole-v2 .protocole-core-scan::after {
    content: "";
    position: absolute;
    inset: -40% 0 auto;
    height: 30%;
    background: linear-gradient(transparent, rgba(216, 180, 254, .22), transparent);
    animation: protocolScan 4.8s ease-in-out infinite;
}

.protocole-v2 .protocole-core-logo {
    transform: translateZ(0) scale(calc(.96 + var(--protocol-progress) * .035));
    transition: box-shadow .7s ease, background .7s ease;
}

.protocole-v2 .protocole-core-logo::before,
.protocole-v2 .protocole-core-logo::after {
    content: "";
    position: absolute;
    inset: 0;
    pointer-events: none;
}

.protocole-v2 .protocole-core-logo::before {
    inset: 14%;
    border-radius: 50%;
    background: conic-gradient(from 35deg, transparent 0 15%, rgba(255,255,255,.4) 18%, transparent 21% 49%, rgba(var(--protocol-accent),.7) 52%, transparent 56% 82%, rgba(125,211,252,.42) 85%, transparent 89%);
    mask-image: radial-gradient(circle, transparent 56%, #000 58% 63%, transparent 65%);
    animation: protocolIris 26s linear infinite;
}

.protocole-v2 .protocole-core-logo::after {
    inset: 28%;
    border-radius: 50%;
    background: radial-gradient(circle at 42% 36%, rgba(255,255,255,.22), rgba(var(--protocol-accent),.14) 38%, transparent 70%);
    filter: blur(5px);
    animation: protocolThought 9.8s cubic-bezier(.45,0,.22,1) infinite;
}

.protocole-v2 .protocole-core-logo span {
    position: relative;
    z-index: 2;
}

.protocole-v2 .protocole-core-point {
    animation: protocolPoint 8.2s cubic-bezier(.45,0,.22,1) infinite;
}

.protocole-v2 .protocole-core-point.p2 { animation-delay: -2.05s; }
.protocole-v2 .protocole-core-point.p3 { animation-delay: -4.1s; }
.protocole-v2 .protocole-core-point.p4 { animation-delay: -6.15s; }

.protocole-v2 .protocole-core-statut {
    position: absolute;
    z-index: 8;
    left: 50%;
    bottom: -18px;
    display: grid;
    grid-template-columns: auto 42px auto;
    align-items: center;
    gap: 10px;
    min-width: 245px;
    padding: 9px 14px;
    border: 1px solid rgba(var(--protocol-accent), .27);
    border-radius: 999px;
    background: rgba(6, 6, 13, .84);
    box-shadow: 0 14px 40px rgba(0, 0, 0, .3);
    backdrop-filter: blur(14px);
    transform: translateX(-50%);
}

.protocole-v2 .protocole-core-statut span,
.protocole-v2 .protocole-core-statut small {
    color: #eee9f8;
    font-size: .58rem;
    font-weight: 850;
    letter-spacing: .09em;
}

.protocole-v2 .protocole-core-statut i {
    height: 1px;
    overflow: hidden;
    background: rgba(255,255,255,.1);
}

.protocole-v2 .protocole-core-statut i::after {
    content: "";
    display: block;
    width: calc(var(--protocol-progress) * 100%);
    height: 100%;
    background: linear-gradient(90deg, #8b5cf6, #f2c14e);
    box-shadow: 0 0 9px #a855f7;
}

.protocole-v2 .protocole-liaisons {
    height: 1880px;
}

.protocole-v2 .protocole-liaisons path {
    stroke-dasharray: 2 8;
    opacity: .2;
}

.protocole-v2 .protocole-liaisons .protocole-flux {
    stroke-dasharray: 4 34;
    animation-duration: 5.8s;
}

.protocole-v2 .protocole-liaisons .protocole-flux:not(.protocole-flux-retard) {
    stroke-dasharray: 2 10 12 38;
}

.protocole-v2 .protocole-liaisons .protocole-flux:last-of-type {
    stroke-dasharray: 1 7 8 42;
}

.protocole-v2 .protocole-etape {
    opacity: .38;
    transform: translate3d(0, 24px, 0) scale(.975);
    transition: opacity .7s ease, transform .7s cubic-bezier(.2,.8,.2,1), filter .7s ease;
    filter: saturate(.7);
    outline: none;
}

.protocole-v2 .protocole-etape-1,
.protocole-v2 .protocole-etape-2 { top: 420px; }
.protocole-v2 .protocole-etape-3,
.protocole-v2 .protocole-etape-4 { top: 930px; }
.protocole-v2 .protocole-etape-5,
.protocole-v2 .protocole-etape-6 { top: 1440px; }

.protocole-v2 .protocole-etape.est-active,
.protocole-v2 .protocole-etape:focus-visible,
.protocole-v2 .protocole-etape:hover {
    opacity: 1;
    transform: translate3d(0, 0, 0) scale(1);
    filter: saturate(1) brightness(1.04);
}

.protocole-v2 .protocole-etape::before {
    content: "";
    position: absolute;
    z-index: -1;
    top: 8%;
    width: 74%;
    height: 72%;
    border-radius: 50%;
    background: radial-gradient(circle, rgba(var(--protocol-accent),.13), transparent 69%);
    filter: blur(34px);
    opacity: 0;
    transform: scale(.82);
    transition: opacity 1.4s ease, transform 1.8s cubic-bezier(.2,.8,.2,1);
    pointer-events: none;
}

.protocole-v2 .protocole-etape:nth-of-type(odd)::before { right: -8%; }
.protocole-v2 .protocole-etape:nth-of-type(even)::before { left: -8%; }

.protocole-v2 .protocole-etape.est-active::before {
    opacity: .72;
    transform: scale(1);
}

.protocole-v2 .protocole-etape:focus-visible .protocole-station {
    outline: 2px solid rgba(216, 180, 254, .85);
    outline-offset: 8px;
}

.protocole-v2 .protocole-scene {
    background: linear-gradient(145deg, rgba(16, 13, 29, .78), rgba(6, 6, 13, .7));
    backdrop-filter: blur(14px);
    transform: translateY(10px);
    transition: transform .8s cubic-bezier(.2,.8,.2,1), border-color .8s ease, box-shadow .8s ease;
}

.protocole-v2 .protocole-etape.est-active .protocole-scene {
    border-color: rgba(var(--protocol-accent), .42);
    box-shadow: 0 28px 75px rgba(0,0,0,.38), 0 0 42px rgba(var(--protocol-accent), .12);
    transform: translateY(0);
}

.protocole-v2 .scene-decouverte span,
.protocole-v2 .scene-architecture span,
.protocole-v2 .scene-evolution span,
.protocole-v2 .scene-deploiement li,
.protocole-v2 .scene-browser strong,
.protocole-v2 .scene-browser b,
.protocole-v2 .scene-phone,
.protocole-v2 .scene-optimisation polyline {
    transition: opacity .55s ease, transform .65s cubic-bezier(.2,.8,.2,1), stroke-dashoffset 1.2s ease;
}

.protocole-v2 .scene-decouverte span,
.protocole-v2 .scene-architecture span,
.protocole-v2 .scene-evolution span,
.protocole-v2 .scene-deploiement li {
    opacity: .25;
    transform: translateY(6px);
}

.protocole-v2 .protocole-etape.est-active .scene-decouverte span,
.protocole-v2 .protocole-etape.est-active .scene-architecture span,
.protocole-v2 .protocole-etape.est-active .scene-evolution span,
.protocole-v2 .protocole-etape.est-active .scene-deploiement li {
    opacity: 1;
    transform: translateY(0);
}

.protocole-v2 .protocole-etape.est-active .protocole-scene span:nth-child(2),
.protocole-v2 .protocole-etape.est-active .protocole-scene li:nth-child(2) { transition-delay: .09s; }
.protocole-v2 .protocole-etape.est-active .protocole-scene span:nth-child(3),
.protocole-v2 .protocole-etape.est-active .protocole-scene li:nth-child(3) { transition-delay: .18s; }
.protocole-v2 .protocole-etape.est-active .protocole-scene span:nth-child(4),
.protocole-v2 .protocole-etape.est-active .protocole-scene li:nth-child(4) { transition-delay: .27s; }
.protocole-v2 .protocole-etape.est-active .protocole-scene span:nth-child(5) { transition-delay: .36s; }

.protocole-v2 .scene-optimisation polyline {
    stroke-dasharray: 420;
    stroke-dashoffset: 420;
}

.protocole-v2 .protocole-etape.est-active .scene-optimisation polyline { stroke-dashoffset: 0; }

.protocole-v2 .launch-gate::after {
    content: "LIVE";
    position: absolute;
    bottom: 13px;
    color: #86efac;
    font-size: .52rem;
    font-weight: 900;
    letter-spacing: .18em;
    opacity: 0;
    transform: translateY(5px);
    transition: .7s .45s ease;
}

.protocole-v2 .protocole-etape.est-active .launch-gate::after {
    opacity: 1;
    transform: translateY(0);
}

.protocole-v2 .protocole-projet-actif {
    top: 1040px;
    opacity: calc(.3 + var(--protocol-progress) * .7);
}

.protocole-v2[data-protocole-actif="5"],
.protocole-v2[data-protocole-actif="6"] { --protocol-accent: 242, 193, 78; }

.protocole-v2[data-protocole-actif="6"] .protocole-core-logo {
    background: linear-gradient(145deg, #4b3510, #0a0810);
    box-shadow: 0 0 42px rgba(242,193,78,.42), inset 0 0 28px rgba(242,193,78,.18);
}

/* POLISH FINAL — une impulsion commune relie le Core, le fond et les stations. */
.protocole-v2 .protocole-fond-neural {
    transform: translate3d(
        calc(var(--protocol-parallax-x) * -7px),
        calc(var(--protocol-scroll-shift) * .34 + var(--protocol-parallax-y) * -5px),
        0
    );
    transition: transform 1.4s cubic-bezier(.2,.8,.2,1), opacity 1.2s ease;
}

.protocole-v2 .protocole-fond-constellations {
    transform: translate3d(
        calc(var(--protocol-parallax-x) * 11px),
        calc(var(--protocol-scroll-shift) * -.22 + var(--protocol-parallax-y) * 8px),
        0
    ) scale(1.025);
    transition: transform 1.8s cubic-bezier(.2,.8,.2,1);
}

.protocole-v2 .protocole-fond-grille {
    animation: protocolGridBreath 9.6s ease-in-out infinite;
}

.protocole-v2::after {
    animation: protocolAmbientIntelligence 15.6s cubic-bezier(.45,0,.22,1) infinite;
}

.protocole-v2::before {
    animation: protocolAtmosphere 18s ease-in-out infinite;
}

.protocole-v2 .protocole-core-halo,
.protocole-v2 .protocole-core::after,
.protocole-v2 .protocole-liaisons,
.protocole-v2 .protocole-etape.est-active .protocole-station {
    animation-duration: 7.8s;
    animation-timing-function: cubic-bezier(.45, 0, .22, 1);
    animation-iteration-count: infinite;
}

.protocole-v2 .protocole-core-halo { animation-name: protocolSourceLight; }
.protocole-v2 .protocole-core::after { animation-name: protocolCoreEnergy; }
.protocole-v2 .protocole-liaisons { animation-name: protocolNetworkLight; }
.protocole-v2 .protocole-etape.est-active .protocole-station { animation-name: protocolStationReceive; }

.protocole-v2 .protocole-core-orbite-3 {
    animation-duration: 9.4s;
    animation-timing-function: cubic-bezier(.45,0,.22,1);
}

.protocole-v2 .protocole-core-scan::after {
    animation-duration: 11.6s;
}

.protocole-v2 .protocole-liaisons .protocole-flux {
    stroke-linecap: round;
    filter: drop-shadow(0 0 5px rgba(var(--protocol-accent), .72));
    animation-name: protocoleFlux, protocolDataBrightness;
    animation-duration: 8.6s, 7.8s;
    animation-timing-function: linear, cubic-bezier(.45, 0, .22, 1);
    animation-iteration-count: infinite;
}

.protocole-v2 .protocole-station > i {
    animation: protocolDataArrival 5.2s cubic-bezier(.4,0,.2,1) infinite;
}

.protocole-v2 .protocole-etape:nth-child(even) .protocole-station > i {
    animation-delay: -2.6s;
}

/* 01 — des signaux bruts convergent et sont absorbés. */
.protocole-v2 .scene-decouverte b {
    transform-origin: 50% 100%;
    animation: protocolDiscoveryBeam 6.8s cubic-bezier(.45,0,.22,1) infinite;
}

.protocole-v2 .protocole-etape.est-active .scene-decouverte span {
    animation: protocolSignalRead 6.8s cubic-bezier(.45,0,.22,1) infinite;
}

.protocole-v2 .protocole-etape.est-active .scene-decouverte span:nth-child(2) { animation-delay: -1.1s; }
.protocole-v2 .protocole-etape.est-active .scene-decouverte span:nth-child(3) { animation-delay: -2.2s; }
.protocole-v2 .protocole-etape.est-active .scene-decouverte span:nth-child(4) { animation-delay: -3.3s; }
.protocole-v2 .protocole-etape.est-active .scene-decouverte span:nth-child(5) { animation-delay: -4.4s; }

/* 02 — les briques deviennent un réseau cohérent. */
.protocole-v2 .scene-architecture {
    background-image:
        linear-gradient(90deg, transparent 49.7%, rgba(192,132,252,.12) 50%, transparent 50.3%),
        linear-gradient(0deg, transparent 49.7%, rgba(96,165,250,.1) 50%, transparent 50.3%);
}

.protocole-v2 .protocole-etape.est-active .scene-architecture span {
    animation: protocolModuleOnline 8.4s cubic-bezier(.45,0,.22,1) infinite;
}

.protocole-v2 .protocole-etape.est-active .scene-architecture span:nth-child(2) { animation-delay: -1.4s; }
.protocole-v2 .protocole-etape.est-active .scene-architecture span:nth-child(3) { animation-delay: -2.8s; }
.protocole-v2 .protocole-etape.est-active .scene-architecture span:nth-child(4) { animation-delay: -4.2s; }
.protocole-v2 .protocole-etape.est-active .scene-architecture span:nth-child(5) { animation-delay: -5.6s; }

/* 03 — les interfaces s’assemblent et prennent vie. */
.protocole-v2 .protocole-etape.est-active .scene-browser strong {
    background-size: 220% 100%;
    animation: protocolInterfaceBuild 7.8s cubic-bezier(.45,0,.22,1) infinite;
}

.protocole-v2 .protocole-etape.est-active .scene-browser b {
    animation: protocolWorkflowBuild 6.6s cubic-bezier(.45,0,.22,1) infinite;
}

.protocole-v2 .protocole-etape.est-active .scene-phone {
    animation: protocolDeviceOnline 7.8s cubic-bezier(.45,0,.22,1) infinite;
}

/* 04 — la donnée accélère, puis se stabilise. */
.protocole-v2 .protocole-etape.est-active .scene-optimisation strong {
    animation: protocolKpiPulse 6.4s cubic-bezier(.45,0,.22,1) infinite;
}

.protocole-v2 .protocole-etape.est-active .scene-optimisation div:nth-child(2) strong { animation-delay: -.5s; }
.protocole-v2 .protocole-etape.est-active .scene-optimisation div:nth-child(3) strong { animation-delay: -1s; }

/* 05 — le portail expulse le système vers son environnement live. */
.protocole-v2 .protocole-etape.est-active .launch-gate {
    animation: protocolPortalOpen 8.8s cubic-bezier(.45,0,.22,1) infinite;
}

.protocole-v2 .protocole-etape.est-active .launch-gate span {
    animation: protocolLaunchObject 8.8s cubic-bezier(.45,0,.22,1) infinite;
}

/* 06 — l’écosystème continue de croître autour du noyau. */
.protocole-v2 .protocole-etape.est-active .scene-evolution span {
    animation: protocolEvolutionOrbit 12s cubic-bezier(.45,0,.22,1) infinite;
}

.protocole-v2 .protocole-etape.est-active .scene-evolution span:nth-child(2) { animation-delay: -2.4s; }
.protocole-v2 .protocole-etape.est-active .scene-evolution span:nth-child(3) { animation-delay: -4.8s; }
.protocole-v2 .protocole-etape.est-active .scene-evolution span:nth-child(4) { animation-delay: -7.2s; }
.protocole-v2 .protocole-etape.est-active .scene-evolution span:nth-child(5) { animation-delay: -9.6s; }

.protocole-v2 .protocole-etape.est-active .scene-evolution b {
    animation: protocolEvolutionCore 6s cubic-bezier(.45,0,.22,1) infinite;
}

.protocole-v2:not(.protocole-est-visible) .protocole-fond-neural,
.protocole-v2:not(.protocole-est-visible) .protocole-fond-constellations,
.protocole-v2:not(.protocole-est-visible) .protocole-fond-fog,
.protocole-v2:not(.protocole-est-visible) .protocole-core,
.protocole-v2:not(.protocole-est-visible) .protocole-liaisons,
.protocole-v2.protocole-est-en-pause * {
    animation-play-state: paused;
}

@keyframes protocolGridBreath { 50% { opacity: .19; transform: translateY(2px); } }
@keyframes protocolAtmosphere { 50% { opacity: .84; filter: saturate(1.045); } }
@keyframes protocolAmbientIntelligence { 0%,100% { opacity: .74; } 50% { opacity: 1; } }
@keyframes protocolIris { to { transform: rotate(360deg); } }
@keyframes protocolThought { 0%,100% { transform: translate3d(-2px,2px,0) scale(.92); opacity: .48; } 46% { transform: translate3d(3px,-2px,0) scale(1.12); opacity: .82; } 68% { transform: translate3d(1px,1px,0) scale(1.02); opacity: .62; } }
@keyframes protocolSatelliteA { 0%,100% { transform: translate3d(-6px,8px,0) scale(.94); opacity: .11; } 42% { transform: translate3d(9px,-5px,0) scale(1); opacity: .27; } 68% { transform: translate3d(4px,4px,0) scale(.97); opacity: .18; } }
@keyframes protocolSatelliteB { 0%,100% { transform: translate3d(8px,-6px,0) scale(.96); opacity: .1; } 48% { transform: translate3d(-7px,7px,0) scale(1.025); opacity: .25; } 73% { transform: translate3d(-2px,-3px,0) scale(.98); opacity: .16; } }
@keyframes protocolSatelliteC { 0%,100% { transform: translate3d(-3px,-7px,0); opacity: .09; } 51% { transform: translate3d(6px,6px,0); opacity: .22; } }
@keyframes protocolNebulaEdgeA { to { transform: translate3d(17vw,9%,0) rotate(7deg) scale(1.12); opacity: .2; } }
@keyframes protocolNebulaEdgeB { to { transform: translate3d(-15vw,-7%,0) rotate(-6deg) scale(1.1); opacity: .22; } }
@keyframes protocolGravityField { 0%,100% { opacity: .54; filter: brightness(.92); } 50% { opacity: .82; filter: brightness(1.08); } }
@keyframes protocolSourceLight { 0%,100% { transform: scale(.992); opacity: .72; } 50% { transform: scale(1.045); opacity: .94; box-shadow: 0 0 96px rgba(var(--protocol-accent),.2), inset 0 0 72px rgba(var(--protocol-accent),.13); } }
@keyframes protocolCoreEnergy { 0%,100% { transform: scale(.94); opacity: .48; } 50% { transform: scale(1.2); opacity: .74; } }
@keyframes protocolNetworkLight { 0%,100% { opacity: .62; } 50% { opacity: .9; filter: brightness(1.16); } }
@keyframes protocolDataBrightness { 0%,100% { opacity: .52; } 50% { opacity: 1; } }
@keyframes protocolStationReceive { 0%,100% { filter: brightness(.92); } 54% { filter: brightness(1.12); box-shadow: 0 0 52px rgba(var(--protocol-accent),.32), inset 0 0 31px rgba(var(--protocol-accent),.2); } }
@keyframes protocolDataArrival { 0%,100% { transform: scale(.72); opacity: .38; } 42% { transform: scale(1.22); opacity: .88; } 70% { transform: scale(.94); opacity: .62; } }
@keyframes protocolDiscoveryBeam { 0%,100% { opacity: .34; transform: rotate(-24deg) scaleY(.55); } 50% { opacity: 1; transform: rotate(-24deg) scaleY(1); } }
@keyframes protocolSignalRead { 0%,72%,100% { border-color: rgba(139,92,246,.2); background: rgba(139,92,246,.05); } 82% { border-color: rgba(216,180,254,.55); background: rgba(139,92,246,.14); } }
@keyframes protocolModuleOnline { 0%,68%,100% { border-color: rgba(139,92,246,.26); } 80% { border-color: rgba(125,211,252,.58); box-shadow: inset 0 0 18px rgba(96,165,250,.12); } }
@keyframes protocolInterfaceBuild { 0%,100% { background-position: 100% 0; opacity: .72; } 50% { background-position: 0 0; opacity: 1; } }
@keyframes protocolWorkflowBuild { 0%,100% { transform: scaleX(.72); transform-origin: left; opacity: .55; } 55% { transform: scaleX(1); opacity: 1; } }
@keyframes protocolDeviceOnline { 0%,100% { transform: translateY(2px); filter: brightness(.82); } 50% { transform: translateY(-4px); filter: brightness(1.2); } }
@keyframes protocolKpiPulse { 0%,100% { color: #f5f3ff; text-shadow: none; } 50% { color: #fff; text-shadow: 0 0 14px rgba(192,132,252,.7); } }
@keyframes protocolPortalOpen { 0%,100% { box-shadow: 0 0 28px rgba(139,92,246,.22); } 50% { box-shadow: 0 0 58px rgba(139,92,246,.48), inset 0 -20px 45px rgba(139,92,246,.2); } }
@keyframes protocolLaunchObject { 0%,100% { transform: translateY(7px) scale(.92); opacity: .7; } 48% { transform: translateY(-9px) scale(1.06); opacity: 1; } }
@keyframes protocolEvolutionOrbit { 0%,100% { filter: brightness(.78); } 50% { filter: brightness(1.28); box-shadow: 0 0 18px rgba(245,158,11,.13); } }
@keyframes protocolEvolutionCore { 0%,100% { transform: translate(-50%,-50%) scale(.92); } 50% { transform: translate(-50%,-50%) scale(1.1); filter: brightness(1.25); } }

@keyframes protocolNeuralDrift { to { background-position: 110px 70px, -80px 120px, 60px -100px, -110px -70px, 90px 120px, -120px 90px, 74px -110px, -96px 82px; } }
@keyframes protocolStars { to { background-position: 160px 240px, -190px 280px, 118px -42px, -74px 126px; } }
@keyframes protocolCircuitLife { 0%,100% { opacity: .25; } 38% { opacity: .36; } 67% { opacity: .28; } }
@keyframes protocolUniverseResponse { 0%,100% { opacity: .145; } 48% { opacity: .19; } 62% { opacity: .17; } }
@keyframes protocolFogA { to { transform: translate3d(16vw,-8%,0) scale(1.14); } }
@keyframes protocolFogB { to { transform: translate3d(-14vw,9%,0) scale(.9); } }
@keyframes protocolHalo { 50% { transform: scale(1.06); opacity: .72; } }
@keyframes protocolCoreBreath { 50% { transform: scale(1.22); opacity: .72; } }
@keyframes protocolPoint { 50% { transform: scale(1.45); opacity: .58; } }
@keyframes protocolScan { 0%, 12% { transform: translateY(-120%); opacity: 0; } 35% { opacity: 1; } 75%, 100% { transform: translateY(520%); opacity: 0; } }
@keyframes protocolLaunchWave { 0% { opacity: 0; transform: scaleX(.04); } 35% { opacity: 1; } 100% { opacity: 0; transform: scaleX(1); } }

@media (max-width: 1050px) {
    .protocole-v2 .protocole-systeme {
        min-height: auto;
        padding-top: 355px;
    }

    .protocole-v2 .protocole-core {
        position: absolute;
        top: 0;
        left: 50%;
        width: min(390px, 72vw);
        margin: 0;
        transform: translateX(-50%);
    }

    .protocole-v2 .protocole-etape {
        opacity: .64;
        transform: translateY(18px) scale(.985);
    }

    .protocole-v2 .protocole-etape-1,
    .protocole-v2 .protocole-etape-2,
    .protocole-v2 .protocole-etape-3,
    .protocole-v2 .protocole-etape-4,
    .protocole-v2 .protocole-etape-5,
    .protocole-v2 .protocole-etape-6 { top: auto; }
}

@media (max-width: 650px) {
    .protocole-v2 { padding: 92px 0 100px; }
    .protocole-v2 .protocole-intro { gap: 34px; margin-bottom: 65px; }
    .protocole-v2 .protocole-intro h2 { font-size: clamp(2.65rem, 14vw, 4rem); }
    .protocole-v2 .protocole-manifeste { padding: 20px; }
    .protocole-v2 .protocole-systeme { gap: 16px; padding-top: 300px; }
    .protocole-v2 .protocole-core { width: 278px; }
    .protocole-v2 .protocole-core-titre { top: -12px; }
    .protocole-v2 .protocole-core-statut { min-width: 218px; bottom: -20px; }
    .protocole-v2 .protocole-etape {
        min-height: 0;
        padding: 22px;
        border-color: rgba(var(--protocol-accent), .14);
        background: linear-gradient(145deg, rgba(14,11,25,.76), rgba(7,7,13,.82));
    }
    .protocole-v2 .protocole-station { width: 88px; height: 88px; }
    .protocole-v2 .protocole-station .station-icone { font-size: 1.7rem; }
    .protocole-v2 .protocole-scene { min-height: 142px; }
    .protocole-v2 .protocole-conclusion { margin-top: 54px; }
    .protocole-v2 .protocole-fond-fog { filter: blur(70px); opacity: .11; }
    .protocole-v2 .protocole-fond-neural { animation-duration: 70s; opacity: .13; }
    .protocole-v2 .protocole-fond-constellations { animation-duration: 90s; opacity: .2; }
    .protocole-v2 .protocole-fond-grille {
        animation: none;
        opacity: .18;
        background-image:
            linear-gradient(rgba(139,92,246,.035) 1px, transparent 1px),
            linear-gradient(90deg,rgba(139,92,246,.035) 1px, transparent 1px);
        background-size: 68px 68px, 68px 68px;
        filter: none;
        mix-blend-mode: normal;
    }
    .protocole-v2 .protocole-core::before { animation-duration: 58s; }
    .protocole-v2 .protocole-lueur-a,
    .protocole-v2 .protocole-lueur-b { opacity: .12; animation-duration: 120s; }
    .protocole-v2 .protocole-systeme::before { opacity: .4; animation: none; }
    .protocole-v2 .protocole-fond-neural::before,
    .protocole-v2 .protocole-fond-neural::after,
    .protocole-v2 .protocole-fond-constellations::before,
    .protocole-v2 .protocole-fond-constellations::after,
    .protocole-v2 .protocole-fond-grille::before,
    .protocole-v2 .protocole-fond-grille::after { display: none; }
    .protocole-v2 .protocole-environnement-canvas { display: none; }
}

@media (hover: none) {
    .protocole-v2::after { display: none; }
}

@media (prefers-reduced-motion: reduce) {
    .protocole-v2 .protocole-environnement-canvas { display: none; }
    .protocole-v2 *,
    .protocole-v2 *::before,
    .protocole-v2 *::after {
        scroll-behavior: auto;
        animation-duration: .001ms;
        animation-iteration-count: 1;
        transition-duration: .001ms;
    }

    .protocole-v2 .protocole-etape {
        opacity: 1;
        filter: none;
        transform: none;
    }

    .protocole-v2 .scene-decouverte span,
    .protocole-v2 .scene-architecture span,
    .protocole-v2 .scene-evolution span,
    .protocole-v2 .scene-deploiement li {
        opacity: 1;
        transform: none;
    }
}

/* =========================================================
   SPRINT 06.9 — COHÉRENCE CHIVARYN
   Même langage environnemental qu’Advisor et Réalisations :
   noir continu, deux masses diffuses, détail structurel discret.
========================================================= */
.protocole-v2 {
    background: transparent;
}

.protocole-v2::before {
    content: "";
    position: absolute;
    inset: 0;
    z-index: -3;
    pointer-events: none;
    background:
        radial-gradient(circle at 15% 22%, rgba(79, 70, 229, .12), transparent 29%),
        radial-gradient(circle at 86% 67%, rgba(168, 85, 247, .12), transparent 28%);
    animation: protocoleFondChivaryn 24s ease-in-out infinite alternate;
}

.protocole-v2::after {
    z-index: -2;
    opacity: .38;
    background: radial-gradient(
        circle 460px at var(--protocol-pointer-x) var(--protocol-pointer-y),
        rgba(var(--protocol-accent), .055),
        transparent 72%
    );
    animation: none;
}

.protocole-v2 .protocole-environnement-canvas,
.protocole-v2 .protocole-fond-neural,
.protocole-v2 .protocole-fond-constellations,
.protocole-v2 .protocole-fond-fog {
    display: none;
}

.protocole-v2 .protocole-fond-grille {
    opacity: .16;
    background-image:
        linear-gradient(rgba(255, 255, 255, .026) 1px, transparent 1px),
        linear-gradient(90deg, rgba(255, 255, 255, .026) 1px, transparent 1px);
    background-position: 0 0, 0 0;
    background-size: 68px 68px, 68px 68px;
    background-repeat: repeat;
    background-blend-mode: normal;
    filter: none;
    mix-blend-mode: normal;
    mask-image: linear-gradient(to bottom, transparent, #000 12%, #000 88%, transparent);
    animation: protocoleGrilleChivaryn 28s ease-in-out infinite alternate;
}

.protocole-v2 .protocole-fond-grille::before,
.protocole-v2 .protocole-fond-grille::after {
    display: none;
}

.protocole-v2 .protocole-lueur-a,
.protocole-v2 .protocole-lueur-b {
    width: 500px;
    height: 500px;
    border-radius: 50%;
    opacity: 1;
    filter: blur(100px);
    mix-blend-mode: normal;
    will-change: transform;
}

.protocole-v2 .protocole-lueur-a {
    top: 23%;
    left: -250px;
    background: rgba(79, 70, 229, .13);
    animation: protocoleLueurChivarynA 26s ease-in-out infinite alternate;
}

.protocole-v2 .protocole-lueur-b {
    right: -220px;
    bottom: 8%;
    background: rgba(168, 85, 247, .13);
    animation: protocoleLueurChivarynB 31s ease-in-out infinite alternate;
}

@keyframes protocoleFondChivaryn {
    from { opacity: .82; }
    to { opacity: 1; }
}

@keyframes protocoleGrilleChivaryn {
    from { transform: translate3d(0, 0, 0); opacity: .13; }
    to { transform: translate3d(0, 10px, 0); opacity: .18; }
}

@keyframes protocoleLueurChivarynA {
    from { transform: translate3d(0, -12px, 0) scale(.96); }
    to { transform: translate3d(34px, 28px, 0) scale(1.04); }
}

@keyframes protocoleLueurChivarynB {
    from { transform: translate3d(0, 16px, 0) scale(1.03); }
    to { transform: translate3d(-30px, -24px, 0) scale(.97); }
}

@media (max-width: 650px) {
    .protocole-v2 .protocole-fond-grille {
        opacity: .09;
        animation: none;
    }

    .protocole-v2 .protocole-lueur-a,
    .protocole-v2 .protocole-lueur-b {
        width: 360px;
        height: 360px;
        filter: blur(90px);
        animation-duration: 42s;
    }
}

@media (prefers-reduced-motion: reduce) {
    .protocole-v2::before,
    .protocole-v2 .protocole-fond-grille,
    .protocole-v2 .protocole-lueur-a,
    .protocole-v2 .protocole-lueur-b {
        animation: none;
    }
}

/* SPRINT 06.9.1 — corrections ciblées des étapes 03 et 06. */
.protocole-v2 .protocole-etape-6 { align-items: start; }
.protocole-v2 .protocole-etape-6 .protocole-station { align-self: start; margin-top: 18px; }
.protocole-v2 .protocole-etape-6 .station-icone {
    width: 100%; height: 100%; display: grid; place-items: center;
    line-height: 1;
}
.protocole-v2 .protocole-etape-6 .protocole-etape-texte {
    display: flex; flex-direction: column; align-items: flex-start;
}
.protocole-v2 .protocole-etape-6 .protocole-etape-texte > span { margin: 0; line-height: 1; }
.protocole-v2 .protocole-etape-6 .protocole-etape-texte h3 { margin: 10px 0 9px; }
.protocole-v2 .protocole-etape-6 .protocole-etape-texte small { margin: 0; }
.protocole-v2 .protocole-etape-6 .protocole-etape-texte p { margin: 16px 0 0; }

.protocole-v2 .scene-creation { isolation: isolate; }
.protocole-v2 .scene-creation .scene-browser { width: 78%; }
.protocole-v2 .creation-statut {
    position: absolute; top: 19px; left: 9px; right: 9px;
    display: grid; grid-template-columns: 5px 1fr auto; align-items: center; gap: 5px;
    color: #c4b5fd; font-size: .39rem; font-weight: 850; letter-spacing: .08em;
}
.protocole-v2 .creation-statut > i {
    width: 5px; height: 5px; border-radius: 50%; background: #a78bfa;
    box-shadow: 0 0 7px rgba(167,139,250,.8);
}
.protocole-v2 .creation-statut small { color: #7dd3fc; font-size: .39rem; font-weight: 900; }
.protocole-v2 .creation-progression {
    position: absolute; top: 32px; left: 9px; right: 9px; height: 2px;
    overflow: hidden; border-radius: 999px; background: rgba(255,255,255,.08);
}
.protocole-v2 .creation-progression i {
    display: block; width: 68%; height: 100%; border-radius: inherit;
    background: linear-gradient(90deg,#8b5cf6,#38bdf8); transform-origin: left;
}
.protocole-v2 .creation-etapes {
    position: absolute; top: 42px; left: 9px; width: 75px; display: grid; gap: 4px;
}
.protocole-v2 .creation-etapes span {
    position: relative; padding-left: 9px; color: #777185;
    font-size: .32rem; font-weight: 780; letter-spacing: .035em; line-height: 1.2;
}
.protocole-v2 .creation-etapes span::before {
    content: ""; position: absolute; top: 50%; left: 0; width: 4px; height: 4px;
    border-radius: 50%; background: rgba(167,139,250,.34); transform: translateY(-50%);
}
.protocole-v2 .creation-etapes span:nth-child(-n+3) { color: #c4b5fd; }
.protocole-v2 .creation-etapes span:nth-child(-n+3)::before {
    background: #a78bfa; box-shadow: 0 0 6px rgba(139,92,246,.65);
}
.protocole-v2 .scene-creation .scene-browser > strong {
    top: 42px; right: 9px; left: 92px; height: 43px; padding: 5px;
    display: grid; grid-template-columns: 1fr 1fr; grid-template-rows: 12px 1fr; gap: 4px;
    background: rgba(139,92,246,.12);
}
.protocole-v2 .scene-creation .scene-browser > strong i {
    display: block; border-radius: 2px; background: rgba(192,132,252,.22);
}
.protocole-v2 .scene-creation .scene-browser > strong i:first-child {
    grid-column: 1/-1;
    background: linear-gradient(90deg,rgba(192,132,252,.42),rgba(56,189,248,.18));
}
.protocole-v2 .scene-creation .scene-browser > b {
    right: 9px; bottom: 8px; left: 92px; height: 22px;
}
.protocole-v2 .scene-creation .scene-phone {
    right: 14px; bottom: 12px; width: 54px; height: 92px; padding: 11px 6px 6px;
    display: grid; grid-template-rows: 16px 1fr 12px; gap: 5px;
}
.protocole-v2 .scene-creation .scene-phone i {
    display: block; border-radius: 3px; background: rgba(192,132,252,.2);
}
.protocole-v2 .scene-creation .scene-phone i:nth-child(2) {
    background: linear-gradient(145deg,rgba(139,92,246,.38),rgba(56,189,248,.12));
}
.protocole-v2 .protocole-etape-3.est-active .creation-progression i {
    animation: protocoleCreationProgress 7.2s cubic-bezier(.45,0,.22,1) infinite alternate;
}
.protocole-v2 .protocole-etape-3.est-active .creation-etapes span {
    animation: protocoleCreationModule 6.8s ease-in-out infinite;
}
.protocole-v2 .protocole-etape-3.est-active .creation-etapes span:nth-child(2) { animation-delay: -.8s; }
.protocole-v2 .protocole-etape-3.est-active .creation-etapes span:nth-child(3) { animation-delay: -1.6s; }
.protocole-v2 .protocole-etape-3.est-active .creation-etapes span:nth-child(4) { animation-delay: -2.4s; }
.protocole-v2 .protocole-etape-3.est-active .creation-etapes span:nth-child(5) { animation-delay: -3.2s; }
@keyframes protocoleCreationProgress {
    from { transform: scaleX(.72); opacity: .72; }
    to { transform: scaleX(1); opacity: 1; }
}
@keyframes protocoleCreationModule {
    0%,76%,100% { opacity: .48; }
    86% { opacity: 1; }
}
@media (max-width: 1050px) {
    .protocole-v2 .protocole-etape-6 .protocole-station { margin-top: 0; }
}
@media (prefers-reduced-motion: reduce) {
    .protocole-v2 .protocole-etape-3.est-active .creation-progression i,
    .protocole-v2 .protocole-etape-3.est-active .creation-etapes span { animation: none; }
}

/* SPRINT 06.9.2 — composition de référence, étape 06 uniquement. */
.protocole-v2 .protocole-etape-6 {
    grid-template-columns: 154px minmax(0, 1fr);
    column-gap: 24px;
    align-items: start;
}
.protocole-v2 .protocole-etape-6 .protocole-station {
    order: 1;
    width: 146px;
    height: 146px;
    margin: 20px 0 0;
    align-self: center;
    border-color: rgba(245,196,83,.82);
    background: radial-gradient(circle,rgba(245,158,11,.14),rgba(8,6,14,.96) 62%);
    box-shadow: 0 0 34px rgba(245,158,11,.16), inset 0 0 28px rgba(139,92,246,.14);
}
.protocole-v2 .protocole-etape-6 .protocole-station::before {
    inset: 17px;
    border-color: rgba(139,92,246,.42);
}
.protocole-v2 .protocole-etape-6 .protocole-station::after {
    inset: -10px;
    border-color: rgba(139,92,246,.62);
}
.protocole-v2 .protocole-etape-6 .protocole-station > i {
    right: 7px;
    bottom: 20px;
    width: 10px;
    height: 10px;
    background: #fff;
    box-shadow: 0 0 9px #fff, 0 0 20px #a855f7;
}
.protocole-v2 .protocole-etape-6 .station-icone {
    color: #ffd966;
    font-size: 3rem;
    text-shadow: 0 0 18px rgba(245,196,83,.72);
}
.protocole-v2 .protocole-etape-6 .protocole-etape-texte {
    order: 2;
    justify-content: center;
    min-width: 0;
}
.protocole-v2 .protocole-etape-6 .protocole-etape-texte > span {
    color: #a855f7;
    font-size: 2.45rem;
    font-weight: 950;
}
.protocole-v2 .protocole-etape-6 .protocole-etape-texte h3 {
    margin: 8px 0 9px;
    color: #fff;
    font-size: 1.36rem;
    letter-spacing: -.015em;
}
.protocole-v2 .protocole-etape-6 .protocole-etape-texte small {
    padding: 6px 13px;
    border-color: rgba(168,85,247,.42);
    color: #c084fc;
    background: rgba(139,92,246,.07);
}
.protocole-v2 .protocole-etape-6 .protocole-etape-texte p {
    margin-top: 15px;
    color: #aaa5b5;
    line-height: 1.68;
}
.protocole-v2 .protocole-etape-6 .scene-evolution-reference {
    top: 210px;
    left: 0;
    right: 0;
    width: 100%;
    height: 200px;
    min-height: 200px;
    border: 1px solid rgba(168,85,247,.34);
    border-radius: 18px;
    background:
        radial-gradient(circle at 50% 52%,rgba(245,158,11,.055),transparent 32%),
        linear-gradient(145deg,rgba(14,10,26,.88),rgba(6,6,13,.94));
    box-shadow: 0 24px 60px rgba(0,0,0,.28), inset 0 1px 0 rgba(255,255,255,.025);
    transform: none;
}
.protocole-v2 .protocole-etape-6.est-active .scene-evolution-reference {
    transform: none;
}
.protocole-v2 .evolution-connexions {
    position: absolute;
    inset: 0;
    z-index: 1;
    width: 100%;
    height: 100%;
    overflow: hidden;
    pointer-events: none;
}
.protocole-v2 .evolution-connexions path {
    fill: none;
    stroke: rgba(168,85,247,.58);
    stroke-width: 1.2;
    stroke-dasharray: 4 6;
    vector-effect: non-scaling-stroke;
}
.protocole-v2 .evolution-connexions circle {
    fill: #a855f7;
    filter: drop-shadow(0 0 4px rgba(168,85,247,.8));
}
.protocole-v2 .scene-evolution-reference > span {
    z-index: 3;
    min-height: 30px;
    display: grid;
    place-items: center;
    padding: 6px 13px;
    border-color: rgba(168,85,247,.48);
    color: #facc15;
    background: rgba(8,6,16,.94);
    font-size: .45rem;
    font-weight: 850;
    text-align: center;
    white-space: nowrap;
}
.protocole-v2 .scene-evolution-reference > span:nth-of-type(1) {
    top: 16px; left: 50%; width: 31%; transform: translateX(-50%);
}
.protocole-v2 .scene-evolution-reference > span:nth-of-type(2) {
    top: 88px; left: 3%; width: 38%;
}
.protocole-v2 .scene-evolution-reference > span:nth-of-type(3) {
    top: auto; bottom: 18px; left: 11%; width: 31%;
}
.protocole-v2 .scene-evolution-reference > span:nth-of-type(4) {
    top: 88px; right: 3%; width: 34%;
}
.protocole-v2 .scene-evolution-reference > span:nth-of-type(5) {
    top: auto; right: 11%; bottom: 18px; width: 27%;
}
.protocole-v2 .scene-evolution-reference > b {
    z-index: 4;
    width: 84px;
    height: 84px;
    display: grid;
    place-items: center;
    border: 1px solid rgba(245,196,83,.36);
    border-radius: 50%;
    color: #ffd966;
    background: radial-gradient(circle,rgba(245,158,11,.18),rgba(10,7,18,.98) 68%);
    box-shadow: 0 0 25px rgba(245,158,11,.16), 0 0 0 7px rgba(139,92,246,.08), 0 0 0 12px rgba(139,92,246,.12);
    font-size: 2.65rem;
    line-height: 1;
    text-shadow: 0 0 17px rgba(245,196,83,.72);
}
.protocole-v2 .protocole-etape-6.est-active .evolution-connexions path {
    animation: protocoleEvolutionData 9s linear infinite;
}
@keyframes protocoleEvolutionData { to { stroke-dashoffset: -40; } }

@media (max-width: 1050px) {
    .protocole-v2 .protocole-etape-6 {
        grid-template-columns: 1fr !important;
        justify-items: center;
        row-gap: 20px;
    }
    .protocole-v2 .protocole-etape-6 .protocole-station { order: 1; }
    .protocole-v2 .protocole-etape-6 .protocole-station { margin-top: 0; }
    .protocole-v2 .protocole-etape-6 .protocole-etape-texte {
        order: 2;
        width: 100%;
        align-items: center;
        text-align: center;
    }
    .protocole-v2 .protocole-etape-6 .scene-evolution-reference {
        position: relative;
        order: 3;
        top: auto;
        left: auto;
        right: auto;
        width: 100%;
        height: 245px;
        margin-top: 3px;
    }
}
@media (max-width: 650px) {
    .protocole-v2 .protocole-etape-6 .protocole-station {
        width: 112px;
        height: 112px;
    }
    .protocole-v2 .protocole-etape-6 .station-icone { font-size: 2.35rem; }
    .protocole-v2 .protocole-etape-6 .protocole-etape-texte > span { font-size: 2.15rem; }
    .protocole-v2 .protocole-etape-6 .scene-evolution-reference {
        height: 238px;
        min-height: 238px;
    }
    .protocole-v2 .scene-evolution-reference > span {
        min-height: 27px;
        padding-inline: 7px;
        font-size: .39rem;
    }
    .protocole-v2 .scene-evolution-reference > span:nth-of-type(2) { left: 2%; width: 41%; }
    .protocole-v2 .scene-evolution-reference > span:nth-of-type(4) { right: 2%; width: 36%; }
    .protocole-v2 .scene-evolution-reference > b {
        width: 70px;
        height: 70px;
        font-size: 2.2rem;
    }
}
@media (prefers-reduced-motion: reduce) {
    .protocole-v2 .protocole-etape-6.est-active .evolution-connexions path {
        animation: none;
    }
}

/* SPRINT 06.9.5 — géométrie stricte de l’étape 06. */
.protocole-v2 .protocole-etape-6 {
    display: grid;
    grid-template-columns: minmax(138px, .82fr) minmax(0, 1.45fr);
    grid-template-areas:
        "orbite texte"
        "carte carte";
    column-gap: clamp(20px, 2.2vw, 30px);
    row-gap: 42px;
    align-items: center;
    min-height: 0;
}
.protocole-v2 .protocole-etape-6 .protocole-station {
    grid-area: orbite;
    justify-self: center;
    align-self: center;
    margin: 0;
}
.protocole-v2 .protocole-etape-6 .protocole-etape-texte {
    grid-area: texte;
    align-self: center;
    justify-self: stretch;
}
.protocole-v2 .protocole-etape-6 .scene-evolution-reference,
.protocole-v2 .protocole-etape-6.est-active .scene-evolution-reference {
    position: relative;
    grid-area: carte;
    align-self: start;
    justify-self: stretch;
    top: auto;
    right: auto;
    bottom: auto;
    left: auto;
    width: 100%;
    height: 200px;
    min-height: 200px;
    margin: 0;
    padding: 16px;
    display: grid;
    grid-template-columns: minmax(0, 1fr) 84px minmax(0, 1fr);
    grid-template-rows: 32px minmax(84px, 1fr) 32px;
    grid-template-areas:
        ". module-haut ."
        "module-gauche noyau module-droite"
        "module-bas-gauche . module-bas-droite";
    gap: 10px 14px;
    transform: none;
}
.protocole-v2 .scene-evolution-reference > span {
    position: relative;
    inset: auto;
    width: auto;
    min-width: 0;
    max-width: 100%;
    min-height: 30px;
    transform: none;
}
.protocole-v2 .scene-evolution-reference > span:nth-of-type(1) {
    grid-area: module-haut;
    justify-self: center;
    width: 152px;
    max-width: 190%;
    transform: none;
}
.protocole-v2 .scene-evolution-reference > span:nth-of-type(1),
.protocole-v2 .scene-evolution-reference > span:nth-of-type(2),
.protocole-v2 .scene-evolution-reference > span:nth-of-type(3),
.protocole-v2 .scene-evolution-reference > span:nth-of-type(4),
.protocole-v2 .scene-evolution-reference > span:nth-of-type(5) {
    top: auto;
    right: auto;
    bottom: auto;
    left: auto;
}
.protocole-v2 .scene-evolution-reference > span:nth-of-type(2) {
    grid-area: module-gauche;
    justify-self: stretch;
    align-self: center;
    width: auto;
}
.protocole-v2 .scene-evolution-reference > span:nth-of-type(3) {
    grid-area: module-bas-gauche;
    justify-self: stretch;
    width: auto;
}
.protocole-v2 .scene-evolution-reference > span:nth-of-type(4) {
    grid-area: module-droite;
    justify-self: stretch;
    align-self: center;
    width: auto;
}
.protocole-v2 .scene-evolution-reference > span:nth-of-type(5) {
    grid-area: module-bas-droite;
    justify-self: stretch;
    width: auto;
}
.protocole-v2 .scene-evolution-reference > b {
    position: absolute;
    grid-area: noyau;
    top: 50%;
    left: 50%;
    transform: translate(-50%, -50%);
}
.protocole-v2[data-protocole-actif="6"] .protocole-impulsion {
    display: none;
}

@media (max-width: 1050px) {
    .protocole-v2 .protocole-etape-6 {
        grid-template-columns: minmax(0, 1fr) !important;
        grid-template-areas:
            "orbite"
            "texte"
            "carte";
        row-gap: 24px;
        justify-items: center;
    }
    .protocole-v2 .protocole-etape-6 .protocole-etape-texte {
        justify-self: stretch;
    }
    .protocole-v2 .protocole-etape-6 .scene-evolution-reference {
        margin-top: 18px;
    }
}

@media (max-width: 650px) {
    .protocole-v2 .protocole-etape-6 .scene-evolution-reference {
        height: 238px;
        min-height: 238px;
        padding: 14px 10px;
        grid-template-columns: minmax(0, 1fr) 70px minmax(0, 1fr);
        grid-template-rows: 30px minmax(70px, 1fr) 30px;
        gap: 10px 8px;
    }
    .protocole-v2 .scene-evolution-reference > span:nth-of-type(1) {
        width: 130px;
    }
}
