/*
 * Toi & Moi - Décors enchantés 1.9
 * Couche visuelle pure : aucun élément ne capte les interactions.
 */

.tm-ed,
.tm-ed * {
    box-sizing: border-box;
    pointer-events: none !important;
    user-select: none !important;
}

.tm-ed {
    position: fixed;
    z-index: var(--tm-ed-layer, 40);
    inset: 0;
    width: 100%;
    height: 100%;
    overflow: hidden;
    opacity: 0;
    visibility: hidden;
    transition: opacity .7s ease, visibility .7s ease;
    contain: layout style;
}

.tm-ed.is-ready {
    opacity: 1;
    visibility: visible;
}

.tm-ed__wash {
    position: fixed;
    top: 4vh;
    bottom: 0;
    width: min(34vw, 650px);
    opacity: .86;
    filter: blur(2px);
}

.tm-ed__wash--left {
    left: 0;
    background:
        radial-gradient(circle at 15% 22%, color-mix(in srgb, var(--tm-ed-pink, #ff4fb3) 20%, transparent), transparent 25%),
        radial-gradient(circle at 34% 72%, color-mix(in srgb, var(--tm-ed-purple, #8b5cf6) 16%, transparent), transparent 34%);
}

.tm-ed__wash--right {
    /*
     * Le rail des assistants reste une limite de placement pour les grands
     * décors, mais il ne doit jamais couper la lumière du ciel. Le voile
     * continue donc jusqu'au bord droit, derrière les lanceurs transparents.
     */
    right: 0;
    background:
        radial-gradient(circle at 74% 24%, color-mix(in srgb, var(--tm-ed-cyan, #39d5ff) 16%, transparent), transparent 27%),
        radial-gradient(circle at 64% 72%, color-mix(in srgb, var(--tm-ed-purple, #8b5cf6) 19%, transparent), transparent 34%);
}

.tm-ed__vignettes,
.tm-ed__launch-clouds,
.tm-ed__sections,
.tm-ed__sky {
    position: fixed;
    inset: 0;
}

.tm-ed__sky { z-index: 0; }
.tm-ed__launch-clouds { z-index: 2; }
.tm-ed__vignettes,
.tm-ed__sections { z-index: 3; }

.tm-ed__air {
    position: fixed;
    z-index: 1;
    inset: 0;
    overflow: hidden;
}

.tm-ed__fireflies {
    position: absolute;
    inset: 0;
}

/* Ciel de cœurs et d'étoiles, légèrement étendu sur les visuels centraux. */
.tm-ed__sky {
    width: 20vw;
    overflow: hidden;
}

.tm-ed__sky--left { right: auto; }

.tm-ed__sky--right {
    right: 0;
    left: auto;
}

/* Le filigrane central suit le réglage global sur toutes les pages. */
.tm-ed__sky--stage {
    right: 20vw;
    left: 20vw;
    width: auto;
}

/* Accueil : trois zones visuelles nettes, sans gros pavés qui se chevauchent. */
.tm-ed--profile-home .tm-ed__sky--left,
.tm-ed--profile-home .tm-ed__sky--right {
    width: 20vw;
}

.tm-ed--profile-home .tm-ed__sky--right {
    right: 0;
}

.tm-ed--profile-home .tm-ed__sky--stage {
    right: 20vw;
    left: 20vw;
    width: auto;
}

.tm-ed-twinkle {
    position: absolute;
    left: var(--tm-ed-x);
    top: var(--tm-ed-y);
    display: grid;
    place-items: center;
    width: 18px;
    height: 18px;
    color: var(--tm-ed-pink, #ff4fb3);
    font-family: Arial, sans-serif;
    font-size: calc(14px * var(--tm-ed-scale, 1));
    font-style: normal;
    line-height: 1;
    --tm-ed-low-opacity: .12;
    --tm-ed-mid-opacity: .34;
    --tm-ed-peak-opacity: .96;
    opacity: var(--tm-ed-low-opacity);
    transform: translate(-50%, -50%) scale(.72);
    filter: drop-shadow(0 0 5px currentColor) drop-shadow(0 0 12px currentColor);
    animation: tm-ed-star-twinkle var(--tm-ed-duration, 4.6s) ease-in-out infinite;
    animation-delay: var(--tm-ed-delay, 0s);
}

.tm-ed-twinkle--heart {
    width: 20px;
    height: 20px;
    font-size: calc(13px * var(--tm-ed-scale, 1));
    animation-name: tm-ed-heart-blink;
}

.tm-ed-twinkle--star {
    animation-name: tm-ed-star-twinkle;
}

.tm-ed__sky--left .tm-ed-twinkle--heart { color: var(--tm-ed-pink, #ff4fb3); }
.tm-ed__sky--left .tm-ed-twinkle--star { color: #ff9dd8; }
.tm-ed__sky--right .tm-ed-twinkle--heart { color: #b777ff; }
.tm-ed__sky--right .tm-ed-twinkle--star { color: #c69cff; }
.tm-ed__sky--stage .tm-ed-twinkle--tone-pink { color: #ff70c1; }
.tm-ed__sky--stage .tm-ed-twinkle--tone-purple { color: #a875ff; }
.tm-ed__sky--stage .tm-ed-twinkle {
    --tm-ed-low-opacity: .14;
    --tm-ed-mid-opacity: .4;
    --tm-ed-peak-opacity: .9;
    width: 16px;
    height: 16px;
    font-size: calc(11px * var(--tm-ed-scale, 1));
}

/* Sur l'accueil, les lumières restent lisibles sur le fond sombre et le visuel. */
.tm-ed--profile-home .tm-ed__sky:not(.tm-ed__sky--stage) .tm-ed-twinkle {
    --tm-ed-low-opacity: .28;
    --tm-ed-mid-opacity: .58;
    --tm-ed-peak-opacity: 1;
    width: 18px;
    height: 18px;
    font-size: calc(13px * var(--tm-ed-scale, 1));
    animation-name: tm-ed-home-star-twinkle;
}

.tm-ed--profile-home .tm-ed__sky:not(.tm-ed__sky--stage) .tm-ed-twinkle--heart {
    font-size: calc(12px * var(--tm-ed-scale, 1));
    animation-name: tm-ed-home-heart-blink;
}

.tm-ed--profile-home .tm-ed__sky--stage .tm-ed-twinkle {
    --tm-ed-low-opacity: .14;
    --tm-ed-mid-opacity: .4;
    --tm-ed-peak-opacity: .9;
    width: 16px;
    height: 16px;
    font-size: calc(11px * var(--tm-ed-scale, 1));
    animation-name: tm-ed-home-star-twinkle;
}

.tm-ed--profile-home .tm-ed__sky--stage .tm-ed-twinkle--heart {
    font-size: calc(11px * var(--tm-ed-scale, 1));
    animation-name: tm-ed-home-heart-blink;
}

.tm-ed--profile-home .tm-ed__sky--left .tm-ed-twinkle--heart { color: #ff2f9d; }
.tm-ed--profile-home .tm-ed__sky--left .tm-ed-twinkle--star { color: #ff61bd; }
.tm-ed--profile-home .tm-ed__sky--right .tm-ed-twinkle--heart { color: #864dff; }
.tm-ed--profile-home .tm-ed__sky--right .tm-ed-twinkle--star { color: #a86dff; }
.tm-ed--profile-home .tm-ed__sky--stage .tm-ed-twinkle--tone-pink { color: #ff4fb3; }
.tm-ed--profile-home .tm-ed__sky--stage .tm-ed-twinkle--tone-purple { color: #9660ff; }
.tm-ed--profile-home .tm-ed__sky .tm-ed-twinkle--tone-pink { color: #ff5db9; }
.tm-ed--profile-home .tm-ed__sky .tm-ed-twinkle--tone-purple { color: #a16cff; }

.tm-ed--density-enchanted .tm-ed-twinkle { --tm-ed-peak-opacity: 1; }

.tm-ed--profile-home .tm-ed__wash--left {
    background:
        radial-gradient(circle at 20% 28%, color-mix(in srgb, var(--tm-ed-pink, #ff4fb3) 25%, transparent), transparent 27%),
        radial-gradient(circle at 30% 74%, color-mix(in srgb, #ff86ce 15%, transparent), transparent 38%);
}

.tm-ed--profile-home .tm-ed__wash--right {
    background:
        radial-gradient(circle at 74% 25%, color-mix(in srgb, var(--tm-ed-purple, #8b5cf6) 24%, transparent), transparent 28%),
        radial-gradient(circle at 64% 72%, color-mix(in srgb, #b66cff 18%, transparent), transparent 38%);
}

.tm-ed--profile-home .tm-ed-lamp {
    display: none !important;
}

/* Lucioles de nuit d'été : petites, diffuses et réparties sans trajectoire. */
.tm-ed-firefly {
    position: absolute;
    left: var(--tm-ed-x);
    top: var(--tm-ed-y);
    width: var(--tm-ed-firefly-size, 6px);
    height: var(--tm-ed-firefly-size, 6px);
    border-radius: 50%;
    color: #ff79c8;
    background: #fff;
    opacity: .28;
    box-shadow: 0 0 4px 1px #fff, 0 0 10px 3px currentColor, 0 0 22px 7px color-mix(in srgb, currentColor 62%, transparent);
    transform: translate(-50%, -50%) scale(.62);
    animation: tm-ed-firefly-glow var(--tm-ed-duration, 6.4s) ease-in-out infinite;
    animation-delay: var(--tm-ed-delay, 0s);
}

.tm-ed-firefly--tone-pink { color: #ff5fba; }
.tm-ed-firefly--tone-purple { color: #9c6cff; }

/* Illustrations narratives. */
.tm-ed-scene {
    --tm-ed-scene-size: 210px;
    position: fixed;
    left: 0;
    top: 0;
    width: var(--tm-ed-scene-size);
    max-width: 25vw;
    margin: 0;
    opacity: 0;
    transform: translate(-50%, -50%) scale(.88);
    transform-origin: center;
    transition: opacity .55s ease, transform .7s cubic-bezier(.2, .8, .2, 1);
    will-change: transform, opacity;
}

.tm-ed-scene.is-visible {
    opacity: .96;
    transform: translate(-50%, -50%) scale(1);
}

/* Neutralise les anciens ornements mis en cache. Les nouvelles constellations
 * utilisent de vrais éléments indépendants pour obtenir des rythmes distincts. */
.tm-ed-scene::before,
.tm-ed-scene::after {
    content: none !important;
    display: none !important;
}

.tm-ed-mascot-spark {
    position: absolute;
    z-index: 3;
    left: var(--tm-ed-aura-x);
    top: var(--tm-ed-aura-y);
    display: grid;
    place-items: center;
    width: 18px;
    height: 18px;
    font-family: Arial, sans-serif;
    font-style: normal;
    line-height: 1;
    opacity: .32;
    pointer-events: none;
    transform: translate(-50%, -50%) scale(var(--tm-ed-aura-scale, 1));
}

.tm-ed-mascot-spark--star {
    font-size: 12px;
    text-shadow: 0 0 3px #fff, 0 0 8px currentColor, 0 0 15px currentColor;
    animation: tm-ed-mascot-star-twinkle var(--tm-ed-duration, 4.2s) ease-in-out infinite;
    animation-delay: var(--tm-ed-delay, 0s);
}

.tm-ed-mascot-spark--heart {
    width: 21px;
    height: 21px;
    font-size: 13px;
    opacity: .24;
    text-shadow: 0 0 3px #fff, 0 0 9px currentColor, 0 0 19px currentColor;
    animation: tm-ed-mascot-heart-blink var(--tm-ed-duration, 2.8s) ease-in-out infinite;
    animation-delay: var(--tm-ed-delay, 0s);
}

.tm-ed-mascot-spark--tone-pink { color: #ff4fb3; }
.tm-ed-mascot-spark--tone-purple { color: #a875ff; }

.tm-ed-scene__image {
    position: relative !important;
    z-index: 2;
    display: block;
    width: 100%;
    height: auto;
    margin: 0 !important;
    animation: none !important;
    transform: none !important;
    filter:
        drop-shadow(0 16px 22px rgba(10, 2, 24, .52))
        drop-shadow(0 0 12px color-mix(in srgb, var(--tm-ed-pink, #ff4fb3) 32%, transparent));
}

/* Petits nuages de départ indépendants, posés bas dans les gouttières. */
.tm-ed-launch-cloud {
    --tm-ed-launch-cloud-size: 138px;
    position: fixed;
    left: 0;
    top: 0;
    width: var(--tm-ed-launch-cloud-size);
    margin: 0;
    opacity: 0;
    color: #ff62be;
    transform: translate(-50%, -50%) scale(.88);
    transform-origin: center;
    transition: opacity .55s ease, transform .7s cubic-bezier(.2, .8, .2, 1);
    will-change: transform, opacity;
}

.tm-ed-launch-cloud.is-visible {
    opacity: .92;
    transform: translate(-50%, -50%) scale(1);
}

.tm-ed-launch-cloud--right { color: #9870ff; }

.tm-ed-launch-cloud__image {
    display: block;
    width: 100%;
    max-width: none;
    height: auto;
    margin: 0 !important;
    transform: none !important;
    filter: drop-shadow(0 8px 14px rgba(17, 3, 34, .54)) drop-shadow(0 0 13px currentColor);
}

.tm-ed--motion-gentle .tm-ed-launch-cloud.is-visible {
    animation: tm-ed-launch-cloud-breathe 7.4s ease-in-out infinite;
}

.tm-ed--motion-gentle .tm-ed-launch-cloud--right.is-visible { animation-delay: -3.2s; }
.tm-ed--motion-lively .tm-ed-launch-cloud.is-visible { animation: tm-ed-launch-cloud-breathe 5.1s ease-in-out infinite; }

.tm-ed-scene--right .tm-ed-scene__image {
    filter:
        drop-shadow(0 16px 22px rgba(10, 2, 24, .52))
        drop-shadow(0 0 12px color-mix(in srgb, var(--tm-ed-purple, #8b5cf6) 38%, transparent));
}

.tm-ed--motion-gentle .tm-ed-scene.is-visible {
    animation: tm-ed-float 7.2s ease-in-out infinite;
}

.tm-ed--motion-gentle .tm-ed-scene:nth-child(even).is-visible {
    animation-delay: -3.4s;
}

.tm-ed--motion-lively .tm-ed-scene.is-visible {
    animation: tm-ed-float-lively 4.7s ease-in-out infinite;
}

/* Les décors avec sol ou seuil intégrés restent physiquement posés. */
.tm-ed--motion-gentle .tm-ed-scene--grounded.is-visible,
.tm-ed--motion-lively .tm-ed-scene--grounded.is-visible {
    animation: none;
}

/* Lampadaires féeriques à tige unique, ancrés au bas de la scène. */
.tm-ed-lamp {
    --tm-ed-lamp-main: var(--tm-ed-pink, #ff4fb3);
    --tm-ed-lamp-second: #f5b4dc;
    position: fixed;
    z-index: 2;
    bottom: -8px;
    width: 148px;
    height: clamp(470px, 64vh, 620px);
    opacity: 0;
    transform: translateX(-50%) translateY(32px) scale(.93);
    transform-origin: 50% 100%;
    transition: opacity .7s ease, transform .8s cubic-bezier(.2, .8, .2, 1);
    will-change: opacity, transform;
}

.tm-ed-lamp--right {
    --tm-ed-lamp-main: var(--tm-ed-purple, #8b5cf6);
    --tm-ed-lamp-second: var(--tm-ed-cyan, #39d5ff);
}

.tm-ed-lamp.is-visible {
    opacity: .88;
    transform: translateX(-50%) translateY(0) scale(1);
}

.tm-ed.is-footer-near .tm-ed-lamp.is-visible {
    opacity: 0;
    transform: translateX(-50%) translateY(90px) scale(.94);
}

.tm-ed-lamp__aura {
    position: absolute;
    z-index: 0;
    top: -48px;
    left: 50%;
    width: 250px;
    height: 238px;
    border-radius: 50%;
    background: radial-gradient(circle, color-mix(in srgb, var(--tm-ed-lamp-main) 35%, transparent) 0, color-mix(in srgb, var(--tm-ed-lamp-second) 14%, transparent) 32%, transparent 70%);
    filter: blur(10px);
    transform: translateX(-50%);
    animation: tm-ed-lamp-aura 4.8s ease-in-out infinite;
}

.tm-ed-lamp__heart {
    position: absolute;
    z-index: 4;
    top: 2px;
    left: 50%;
    display: grid;
    place-items: center;
    width: 96px;
    height: 90px;
    color: var(--tm-ed-lamp-main);
    font-family: Arial, sans-serif;
    font-size: 86px;
    line-height: .9;
    text-shadow:
        0 0 4px #fff,
        0 0 11px var(--tm-ed-lamp-main),
        0 0 28px var(--tm-ed-lamp-main),
        0 0 48px color-mix(in srgb, var(--tm-ed-lamp-second) 72%, transparent);
    transform: translateX(-50%);
    animation: tm-ed-heart-pulse 3.8s ease-in-out infinite;
}

.tm-ed-lamp__heart::after {
    content: "✦";
    position: absolute;
    top: 24px;
    left: 50%;
    color: #fff;
    font-size: 18px;
    text-shadow: 0 0 10px #fff;
    transform: translateX(-50%);
}

.tm-ed-lamp__crown {
    position: absolute;
    z-index: 2;
    top: 3px;
    left: 50%;
    width: 118px;
    height: 122px;
    border: 2px solid color-mix(in srgb, var(--tm-ed-lamp-main) 70%, #fff 30%);
    border-radius: 54% 54% 46% 46%;
    background: radial-gradient(circle at 50% 35%, color-mix(in srgb, var(--tm-ed-lamp-main) 10%, transparent), transparent 62%);
    box-shadow:
        0 0 13px color-mix(in srgb, var(--tm-ed-lamp-main) 42%, transparent),
        inset 0 0 12px rgba(255, 255, 255, .08);
    transform: translateX(-50%);
}

.tm-ed-lamp__crown::before,
.tm-ed-lamp__crown::after {
    content: "✦";
    position: absolute;
    top: 53px;
    color: var(--tm-ed-lamp-second);
    font-family: Arial, sans-serif;
    font-size: 10px;
    text-shadow: 0 0 8px currentColor;
}

.tm-ed-lamp__crown::before { left: -7px; }
.tm-ed-lamp__crown::after { right: -7px; }

.tm-ed-lamp__collar {
    position: absolute;
    z-index: 4;
    top: 111px;
    left: 50%;
    width: 60px;
    height: 20px;
    border: 2px solid color-mix(in srgb, var(--tm-ed-lamp-second) 55%, #fff 12%);
    border-radius: 9px;
    background: linear-gradient(180deg, #35114d, #170724);
    box-shadow: 0 0 13px color-mix(in srgb, var(--tm-ed-lamp-main) 38%, transparent);
    transform: translateX(-50%);
}

.tm-ed-lamp__post {
    position: absolute;
    z-index: 2;
    top: 127px;
    bottom: 28px;
    left: 50%;
    width: 14px;
    border: 2px solid rgba(255, 255, 255, .1);
    border-radius: 8px;
    background:
        linear-gradient(90deg, #13051d 0%, #35114c 22%, color-mix(in srgb, var(--tm-ed-lamp-main) 55%, #40125a) 48%, #2c0c42 72%, #100419 100%);
    box-shadow:
        0 0 10px color-mix(in srgb, var(--tm-ed-lamp-main) 20%, transparent),
        inset 4px 0 5px rgba(255, 255, 255, .06);
    transform: translateX(-50%);
}

.tm-ed-lamp__post::before {
    content: "";
    position: absolute;
    top: 10%;
    left: -18px;
    width: 38px;
    height: 72%;
    border-left: 2px solid color-mix(in srgb, var(--tm-ed-lamp-main) 38%, transparent);
    border-radius: 50% 0 0 50%;
    filter: drop-shadow(0 0 5px var(--tm-ed-lamp-main));
    transform: skewY(-7deg);
}

.tm-ed-lamp__post::after {
    content: "";
    position: absolute;
    top: 14%;
    left: 26px;
    width: 5px;
    height: 5px;
    border-radius: 50%;
    color: var(--tm-ed-lamp-main);
    background: currentColor;
    box-shadow:
        -43px 54px 0 currentColor,
        4px 116px 0 var(--tm-ed-lamp-second),
        -42px 184px 0 currentColor,
        2px 252px 0 var(--tm-ed-lamp-second);
    filter: drop-shadow(0 0 7px currentColor);
    animation: tm-ed-fireflies 4.4s ease-in-out infinite;
}

.tm-ed-lamp__foot {
    position: absolute;
    z-index: 3;
    bottom: 0;
    left: 50%;
    width: 88px;
    height: 30px;
    border: 3px solid color-mix(in srgb, var(--tm-ed-lamp-main) 30%, #421154);
    border-radius: 54% 54% 10px 10px;
    background: linear-gradient(180deg, #39104e, #160620 72%);
    box-shadow: 0 10px 20px rgba(8, 1, 16, .5), 0 0 18px color-mix(in srgb, var(--tm-ed-lamp-main) 23%, transparent);
    transform: translateX(-50%);
}

.tm-ed-lamp__foot::before {
    content: "♥";
    position: absolute;
    left: 50%;
    top: 0;
    color: var(--tm-ed-lamp-main);
    font-family: Arial, sans-serif;
    font-size: 18px;
    text-shadow: 0 0 9px var(--tm-ed-lamp-main);
    transform: translateX(-50%);
}

.tm-ed--motion-still .tm-ed-twinkle,
.tm-ed--motion-still .tm-ed-lamp__aura,
.tm-ed--motion-still .tm-ed-lamp__heart,
.tm-ed--motion-still .tm-ed-lamp__post::after,
.tm-ed--motion-still .tm-ed-firefly,
.tm-ed--motion-still .tm-ed-launch-cloud,
.tm-ed--motion-still .tm-ed-mascot-spark,
.tm-ed.is-reduced-motion .tm-ed-lamp__aura,
.tm-ed.is-reduced-motion .tm-ed-lamp__heart,
.tm-ed.is-reduced-motion .tm-ed-lamp__post::after,
.tm-ed.is-reduced-motion .tm-ed-launch-cloud,
.tm-ed.is-reduced-motion .tm-ed-scene {
    animation: none !important;
}

.tm-ed.is-reduced-motion:not(.tm-ed--motion-still) .tm-ed-twinkle--star {
    animation-name: tm-ed-calm-star-blink !important;
}

.tm-ed.is-reduced-motion:not(.tm-ed--motion-still) .tm-ed-twinkle--heart {
    animation-name: tm-ed-calm-heart-blink !important;
}

.tm-ed.is-reduced-motion:not(.tm-ed--motion-still) .tm-ed-firefly {
    animation-name: tm-ed-calm-firefly-blink !important;
}

@keyframes tm-ed-star-twinkle {
    0%, 100% { opacity: var(--tm-ed-low-opacity); transform: translate(-50%, -50%) scale(.6) rotate(-12deg); filter: brightness(.8) drop-shadow(0 0 3px currentColor); }
    44% { opacity: var(--tm-ed-peak-opacity); transform: translate(-50%, -50%) scale(1.28) rotate(9deg); filter: brightness(1.7) drop-shadow(0 0 6px #fff) drop-shadow(0 0 15px currentColor); }
    62% { opacity: var(--tm-ed-mid-opacity); transform: translate(-50%, -50%) scale(.82) rotate(0); filter: brightness(1) drop-shadow(0 0 5px currentColor); }
}

@keyframes tm-ed-heart-blink {
    0%, 12%, 38%, 100% { opacity: var(--tm-ed-low-opacity); transform: translate(-50%, -50%) scale(.7); filter: brightness(.72) drop-shadow(0 0 4px currentColor); }
    17%, 29% { opacity: var(--tm-ed-peak-opacity); transform: translate(-50%, -50%) scale(1.18); filter: brightness(1.9) drop-shadow(0 0 6px #fff) drop-shadow(0 0 18px currentColor); }
    22%, 34% { opacity: var(--tm-ed-mid-opacity); transform: translate(-50%, -50%) scale(.88); filter: brightness(1.05) drop-shadow(0 0 8px currentColor); }
}

@keyframes tm-ed-home-star-twinkle {
    0%, 100% { opacity: var(--tm-ed-low-opacity); transform: translate(-50%, -50%) scale(.68) rotate(-10deg); filter: brightness(.92) drop-shadow(0 0 5px currentColor); }
    44% { opacity: var(--tm-ed-peak-opacity); transform: translate(-50%, -50%) scale(1.32) rotate(9deg); filter: brightness(1.55) drop-shadow(0 0 8px currentColor) drop-shadow(0 0 18px currentColor); }
    64% { opacity: var(--tm-ed-mid-opacity); transform: translate(-50%, -50%) scale(.9) rotate(0); filter: brightness(1.12) drop-shadow(0 0 7px currentColor); }
}

@keyframes tm-ed-home-heart-blink {
    0%, 11%, 39%, 100% { opacity: var(--tm-ed-low-opacity); transform: translate(-50%, -50%) scale(.72); filter: brightness(.88) drop-shadow(0 0 5px currentColor); }
    17%, 29% { opacity: var(--tm-ed-peak-opacity); transform: translate(-50%, -50%) scale(1.24); filter: brightness(1.62) drop-shadow(0 0 10px currentColor) drop-shadow(0 0 20px currentColor); }
    22%, 34% { opacity: var(--tm-ed-mid-opacity); transform: translate(-50%, -50%) scale(.9); filter: brightness(1.12) drop-shadow(0 0 8px currentColor); }
}

@keyframes tm-ed-firefly-glow {
    0%, 100% { opacity: .28; transform: translate(-50%, -50%) translate3d(-4px, 5px, 0) scale(.62); filter: brightness(.88); }
    38% { opacity: 1; transform: translate(-50%, -50%) translate3d(5px, -10px, 0) scale(1.24); filter: brightness(1.9); }
    58% { opacity: .52; transform: translate(-50%, -50%) translate3d(9px, -4px, 0) scale(.88); filter: brightness(1.2); }
    78% { opacity: .9; transform: translate(-50%, -50%) translate3d(2px, 3px, 0) scale(1.08); filter: brightness(1.65); }
}

@keyframes tm-ed-mascot-star-twinkle {
    0%, 100% { opacity: .3; filter: brightness(.82); }
    46% { opacity: 1; filter: brightness(1.9); }
    68% { opacity: .56; filter: brightness(1.15); }
}

@keyframes tm-ed-mascot-heart-blink {
    0%, 34%, 100% { opacity: .2; filter: brightness(.68); }
    42%, 60% { opacity: 1; filter: brightness(2); }
    51%, 69% { opacity: .34; filter: brightness(1); }
}

@keyframes tm-ed-calm-star-blink {
    0%, 100% { opacity: var(--tm-ed-low-opacity); filter: brightness(.9) drop-shadow(0 0 4px currentColor); }
    50% { opacity: var(--tm-ed-peak-opacity); filter: brightness(1.65) drop-shadow(0 0 8px #fff) drop-shadow(0 0 15px currentColor); }
}

@keyframes tm-ed-calm-heart-blink {
    0%, 35%, 100% { opacity: var(--tm-ed-low-opacity); filter: brightness(.75) drop-shadow(0 0 4px currentColor); }
    43%, 61% { opacity: var(--tm-ed-peak-opacity); filter: brightness(1.9) drop-shadow(0 0 8px #fff) drop-shadow(0 0 18px currentColor); }
    52%, 70% { opacity: var(--tm-ed-mid-opacity); filter: brightness(1.05) drop-shadow(0 0 7px currentColor); }
}

@keyframes tm-ed-calm-firefly-blink {
    0%, 100% { opacity: .3; filter: brightness(.85); }
    48% { opacity: 1; filter: brightness(1.9); }
    72% { opacity: .5; filter: brightness(1.15); }
}

@keyframes tm-ed-float {
    0%, 100% { transform: translate(-50%, -50%) translateY(0) rotate(-.7deg); }
    50% { transform: translate(-50%, -50%) translateY(-11px) rotate(.8deg); }
}

@keyframes tm-ed-float-lively {
    0%, 100% { transform: translate(-50%, -50%) translateY(0) rotate(-1deg); }
    50% { transform: translate(-50%, -50%) translateY(-16px) rotate(1.2deg); }
}

@keyframes tm-ed-lamp-aura {
    0%, 100% { opacity: .55; transform: translateX(-50%) scale(.92); }
    50% { opacity: .9; transform: translateX(-50%) scale(1.07); }
}

@keyframes tm-ed-heart-pulse {
    0%, 100% { transform: translateX(-50%) scale(.96); filter: brightness(.92); }
    50% { transform: translateX(-50%) scale(1.05); filter: brightness(1.18); }
}

@keyframes tm-ed-fireflies {
    0%, 100% { opacity: .3; transform: translateY(0) scale(.8); }
    45% { opacity: 1; transform: translateY(-8px) scale(1.18); }
    70% { opacity: .52; transform: translateY(3px) scale(.92); }
}

@keyframes tm-ed-launch-cloud-breathe {
    0%, 100% { transform: translate(-50%, -50%) translateY(0) scale(.98); filter: brightness(.96); }
    50% { transform: translate(-50%, -50%) translateY(-4px) scale(1.025); filter: brightness(1.08); }
}

@media (max-width: 1240px) {
    .tm-ed-lamp { height: clamp(440px, 61vh, 560px); }
    .tm-ed-scene { max-width: 22vw; }
}

@media (max-width: 782px) {
    .tm-ed__wash {
        width: 45vw;
        opacity: .42;
    }

    .tm-ed__sky {
        width: 52vw;
        opacity: .8;
    }

    .tm-ed__sky--right { right: 0; }
    .tm-ed__sky--stage { right: 0; left: 0; width: auto; }
    .tm-ed--profile-home .tm-ed__sky:not(.tm-ed__sky--stage) .tm-ed-twinkle:nth-child(n+49),
    .tm-ed--profile-home .tm-ed__sky--stage .tm-ed-twinkle:nth-child(n+97),
    .tm-ed--profile-home .tm-ed-firefly:nth-child(n+65) { display: none; }
    .tm-ed__air {
        display: block;
        opacity: .82;
    }
    .tm-ed-lamp,
    .tm-ed-launch-cloud,
    .tm-ed-scene--side { display: none !important; }

    .tm-ed-scene--section {
        display: block;
        max-width: none;
        opacity: 0;
    }

    .tm-ed-scene--section.is-visible { opacity: .88; }
}

@media (prefers-reduced-motion: reduce) {
    .tm-ed,
    .tm-ed * {
        transition-duration: .01ms !important;
    }
}


/* 1.9 - High-density starry sky: paint containment keeps large presets fluid. */
.tm-ed-home-sky,
.tm-ed-home-stage,
.tm-ed-fireflies {
	contain: paint;
}

/* The center deliberately remains slightly more visible than the side columns. */
.tm-ed-home-stage .tm-ed-center-twinkle {
	filter: brightness(1.08);
}


/* 2.0.0 - lampadaires retirés et scènes Concept dédiées. */
.tm-ed-lamp, .tm-ed-lamp--left, .tm-ed-lamp--right {
    display: none !important;
    visibility: hidden !important;
}
.tm-ed-scene img[src*="concept-livre-nuage.svg"],
.tm-ed-scene img[src*="concept-vision.svg"] {
    filter: drop-shadow(0 16px 20px rgba(4, 1, 18, .42)) drop-shadow(0 0 18px rgba(255, 88, 190, .3));
    transform-origin: 50% 72%;
    animation: tm-ed-concept-breathe 4.8s ease-in-out infinite;
}
.tm-ed-scene img[src*="concept-vision.svg"] {
    animation-delay: -2.4s;
    filter: drop-shadow(0 18px 24px rgba(4, 1, 18, .45)) drop-shadow(0 0 22px rgba(88, 207, 255, .34));
}
@keyframes tm-ed-concept-breathe {
    0%, 100% { transform: translateY(0) scale(1); }
    50% { transform: translateY(-18px) scale(1.02); }
}
body.tm-ed-motion-still .tm-ed-scene img[src*="concept-livre-nuage.svg"],
body.tm-ed-motion-still .tm-ed-scene img[src*="concept-vision.svg"] {
    animation: none !important;
}
@media (prefers-reduced-motion: reduce) {
    .tm-ed-scene img[src*="concept-livre-nuage.svg"],
    .tm-ed-scene img[src*="concept-vision.svg"] { animation: none !important; }
}


/* TM Decors 2.0.3 - scènes Concept entières et non rognées */
body.tm-ed-page-concept .tm-ed-scene,
body[class*="tm-ed-profile-concept"] .tm-ed-scene {
  overflow: visible !important;
}

.tm-ed-scene img[src*="concept-livre-nuage.svg"],
.tm-ed-scene img[src*="concept-vision.svg"] {
  overflow: visible;
  will-change: transform;
}


/* TM Decors 2.0.4 - protection transparence et flottaison complète */
.tm-ed-scene img[src*="concept-livre-nuage.svg"],
.tm-ed-scene img[src*="concept-vision.svg"] {
  display: block;
  background: transparent !important;
  background-color: transparent !important;
  background-image: none !important;
  border: 0 !important;
  box-shadow: none !important;
  clip-path: none !important;
  object-fit: contain !important;
  overflow: visible !important;
  transform-origin: 50% 58%;
  animation: tm-ed-concept-world-float 4.6s ease-in-out infinite !important;
  will-change: transform;
}

.tm-ed-scene img[src*="concept-vision.svg"] {
  animation-delay: -2.3s !important;
}

@keyframes tm-ed-concept-world-float {
  0%, 100% { transform: translate3d(0, 9px, 0) scale(1); }
  50% { transform: translate3d(0, -19px, 0) scale(1.018); }
}

body.tm-ed-motion-still .tm-ed-scene img[src*="concept-livre-nuage.svg"],
body.tm-ed-motion-still .tm-ed-scene img[src*="concept-vision.svg"] {
  animation: none !important;
}

@media (prefers-reduced-motion: reduce) {
  .tm-ed-scene img[src*="concept-livre-nuage.svg"],
  .tm-ed-scene img[src*="concept-vision.svg"] {
    animation: none !important;
  }
}


/* TM Decors 2.0.5 - trajectoires distinctes des deux mondes Concept */
.tm-ed-scene img[src*="concept-livre-nuage.svg"] {
  transform-origin: 50% 62%;
  animation: tm-ed-concept-left-world-float 20s ease-in-out infinite !important;
}

.tm-ed-scene img[src*="concept-vision.svg"] {
  transform-origin: 50% 62%;
  animation: tm-ed-concept-right-world-float 20s ease-in-out infinite !important;
  animation-delay: -5s !important;
}

@keyframes tm-ed-concept-left-world-float {
  0%, 100% { transform: translate3d(0, 0, 0) scale(1.16); }
  50% { transform: translate3d(0, -24px, 0) scale(1.16); }
}

@keyframes tm-ed-concept-right-world-float {
  0%, 100% { transform: translate3d(-16px, 0, 0) scale(.76); }
  50% { transform: translate3d(-16px, -24px, 0) scale(.76); }
}

body.tm-ed-motion-still .tm-ed-scene img[src*="concept-livre-nuage.svg"],
body.tm-ed-motion-still .tm-ed-scene img[src*="concept-vision.svg"] {
  animation: none !important;
}

@media (prefers-reduced-motion: reduce) {
  .tm-ed-scene img[src*="concept-livre-nuage.svg"],
  .tm-ed-scene img[src*="concept-vision.svg"] {
    animation: none !important;
  }
}


/* 2.0.11 - Concept: colonnes 20/60/20, ciel continu et flottaison visible. */
.tm-ed__wash--left,
.tm-ed__wash--right {
  background-color: transparent !important;
  box-shadow: none !important;
}

body:not(.tm-decors-motion-still):not(.tm-ed-motion-still)
  .tm-ed-scene img[src*="concept-livre-nuage.svg"] {
  animation: tm-ed-concept-left-float-2011 10s ease-in-out infinite !important;
  transform-origin: 50% 50%;
  will-change: transform;
}

body:not(.tm-decors-motion-still):not(.tm-ed-motion-still)
  .tm-ed-scene img[src*="concept-vision.svg"] {
  animation: tm-ed-concept-right-float-2011 10s ease-in-out infinite !important;
  animation-delay: -2.5s !important;
  transform-origin: 50% 50%;
  will-change: transform;
}

@keyframes tm-ed-concept-left-float-2011 {
  0%,
  100% {
    transform: translate3d(0, 0, 0) scale(1.16);
  }
  50% {
    transform: translate3d(0, -30px, 0) scale(1.16);
  }
}

@keyframes tm-ed-concept-right-float-2011 {
  0%,
  100% {
    transform: translate3d(0, 0, 0) scale(.76);
  }
  50% {
    transform: translate3d(0, -30px, 0) scale(.76);
  }
}

body.tm-decors-motion-still
  .tm-ed-scene img[src*="concept-livre-nuage.svg"],
body.tm-decors-motion-still
  .tm-ed-scene img[src*="concept-vision.svg"],
body.tm-ed-motion-still
  .tm-ed-scene img[src*="concept-livre-nuage.svg"],
body.tm-ed-motion-still
  .tm-ed-scene img[src*="concept-vision.svg"] {
  animation: none !important;
}


/* 2.0.12 - Le conteneur complet monte puis redescend en 10 secondes. */
.tm-ed-scene[data-asset="conceptStoryCloud"] .tm-ed-scene__image {
  animation: none !important;
  transform: scale(1.16) !important;
}

.tm-ed-scene[data-asset="conceptVision"] .tm-ed-scene__image {
  animation: none !important;
  transform: scale(.76) !important;
}

body:not(.tm-decors-motion-still):not(.tm-ed-motion-still)
  .tm-ed-scene[data-asset="conceptStoryCloud"].is-visible {
  animation: tm-ed-concept-left-vertical-2012 10s ease-in-out infinite !important;
  will-change: transform;
}

body:not(.tm-decors-motion-still):not(.tm-ed-motion-still)
  .tm-ed-scene[data-asset="conceptVision"].is-visible {
  animation: tm-ed-concept-right-vertical-2012 10s ease-in-out infinite !important;
  animation-delay: -2.5s !important;
  will-change: transform;
}

@keyframes tm-ed-concept-left-vertical-2012 {
  0%,
  100% {
    transform: translate(-50%, -50%) translateY(0);
  }
  50% {
    transform: translate(-50%, -50%) translateY(-30px);
  }
}

@keyframes tm-ed-concept-right-vertical-2012 {
  0%,
  100% {
    transform: translate(-50%, -50%) translateY(0);
  }
  50% {
    transform: translate(-50%, -50%) translateY(-30px);
  }
}

body.tm-decors-motion-still
  .tm-ed-scene[data-asset="conceptStoryCloud"].is-visible,
body.tm-decors-motion-still
  .tm-ed-scene[data-asset="conceptVision"].is-visible,
body.tm-ed-motion-still
  .tm-ed-scene[data-asset="conceptStoryCloud"].is-visible,
body.tm-ed-motion-still
  .tm-ed-scene[data-asset="conceptVision"].is-visible {
  animation: none !important;
  transform: translate(-50%, -50%) !important;
}


/* 2.1.0 - Événements : deux maisons en fête sur nuages fleuris. */
.tm-ed-scene[data-asset="eventsLilaHouse"],
.tm-ed-scene[data-asset="eventsMiloHouse"] {
  overflow: visible !important;
}

.tm-ed-scene[data-asset="eventsLilaHouse"] .tm-ed-scene__image,
.tm-ed-scene[data-asset="eventsMiloHouse"] .tm-ed-scene__image {
  display: block;
  width: 100%;
  height: auto;
  background: transparent !important;
  box-shadow: none !important;
  animation: none !important;
}

body:not(.tm-decors-motion-still):not(.tm-ed-motion-still)
  .tm-ed-scene[data-asset="eventsLilaHouse"].is-visible {
  animation: tm-ed-events-lila-house-float 12s ease-in-out infinite !important;
  will-change: transform;
}

body:not(.tm-decors-motion-still):not(.tm-ed-motion-still)
  .tm-ed-scene[data-asset="eventsMiloHouse"].is-visible {
  animation: tm-ed-events-milo-house-float 12s ease-in-out infinite !important;
  animation-delay: -3s !important;
  will-change: transform;
}

@keyframes tm-ed-events-lila-house-float {
  0%,
  100% {
    transform: translate(-50%, -50%) translateY(0);
  }
  50% {
    transform: translate(-50%, -50%) translateY(-22px);
  }
}

@keyframes tm-ed-events-milo-house-float {
  0%,
  100% {
    transform: translate(-50%, -50%) translateY(0);
  }
  50% {
    transform: translate(-50%, -50%) translateY(-16px);
  }
}

body.tm-decors-motion-still
  .tm-ed-scene[data-asset="eventsLilaHouse"].is-visible,
body.tm-decors-motion-still
  .tm-ed-scene[data-asset="eventsMiloHouse"].is-visible,
body.tm-ed-motion-still
  .tm-ed-scene[data-asset="eventsLilaHouse"].is-visible,
body.tm-ed-motion-still
  .tm-ed-scene[data-asset="eventsMiloHouse"].is-visible {
  animation: none !important;
  transform: translate(-50%, -50%) !important;
}


/* 2.2.0 - Témoignages : album géant et forêt-nuage des souvenirs. */
.tm-ed-scene[data-asset="testimonialsGiantAlbum"],
.tm-ed-scene[data-asset="testimonialsForestAlbum"] {
  overflow: visible !important;
}

.tm-ed-scene[data-asset="testimonialsGiantAlbum"] .tm-ed-scene__image,
.tm-ed-scene[data-asset="testimonialsForestAlbum"] .tm-ed-scene__image {
  display: block;
  width: 100%;
  height: auto;
  background: transparent !important;
  box-shadow: none !important;
  animation: none !important;
}

body:not(.tm-decors-motion-still):not(.tm-ed-motion-still)
  .tm-ed-scene[data-asset="testimonialsGiantAlbum"].is-visible {
  animation: tm-ed-testimonials-giant-album-float 12s ease-in-out infinite !important;
  will-change: transform;
}

body:not(.tm-decors-motion-still):not(.tm-ed-motion-still)
  .tm-ed-scene[data-asset="testimonialsForestAlbum"].is-visible {
  animation: tm-ed-testimonials-forest-album-float 12s ease-in-out infinite !important;
  animation-delay: -3s !important;
  will-change: transform;
}

@keyframes tm-ed-testimonials-giant-album-float {
  0%,
  100% {
    transform: translate(-50%, -50%) translateY(0);
  }
  50% {
    transform: translate(-50%, -50%) translateY(-22px);
  }
}

@keyframes tm-ed-testimonials-forest-album-float {
  0%,
  100% {
    transform: translate(-50%, -50%) translateY(0);
  }
  50% {
    transform: translate(-50%, -50%) translateY(-16px);
  }
}

body.tm-decors-motion-still
  .tm-ed-scene[data-asset="testimonialsGiantAlbum"].is-visible,
body.tm-decors-motion-still
  .tm-ed-scene[data-asset="testimonialsForestAlbum"].is-visible,
body.tm-ed-motion-still
  .tm-ed-scene[data-asset="testimonialsGiantAlbum"].is-visible,
body.tm-ed-motion-still
  .tm-ed-scene[data-asset="testimonialsForestAlbum"].is-visible {
  animation: none !important;
  transform: translate(-50%, -50%) !important;
}
/* Oscillations Adhésion, Galerie et Contact - 2.5.1 */
body:not(.tm-decors-motion-still):not(.tm-ed-motion-still)
  .tm-ed-scene[data-asset="membershipWelcomePath"].is-visible,
body:not(.tm-decors-motion-still):not(.tm-ed-motion-still)
  .tm-ed-scene[data-asset="galleryNightBench"].is-visible,
body:not(.tm-decors-motion-still):not(.tm-ed-motion-still)
  .tm-ed-scene[data-asset="contactMessengerBird"].is-visible {
  animation: tm-ed-new-scenes-left-vertical-float 12s ease-in-out infinite !important;
  will-change: transform;
}

body:not(.tm-decors-motion-still):not(.tm-ed-motion-still)
  .tm-ed-scene[data-asset="membershipInvitation"].is-visible,
body:not(.tm-decors-motion-still):not(.tm-ed-motion-still)
  .tm-ed-scene[data-asset="galleryPhotos"].is-visible,
body:not(.tm-decors-motion-still):not(.tm-ed-motion-still)
  .tm-ed-scene[data-asset="contactMessage"].is-visible {
  animation: tm-ed-new-scenes-right-vertical-float 12s ease-in-out infinite !important;
  animation-delay: -3s !important;
  will-change: transform;
}

/* 3.0.2 — Bibliothèque : même flottaison lente que Contact, hors modes Immobile et réduit. */
body:not(.tm-decors-motion-still):not(.tm-ed-motion-still)
  .tm-ed.tm-ed--profile-library:not(.tm-ed--motion-still):not(.is-reduced-motion)
  .tm-ed-scene[data-asset="libraryInterior"].is-visible {
  animation: tm-ed-new-scenes-left-vertical-float 12s ease-in-out infinite !important;
  will-change: transform;
}

body:not(.tm-decors-motion-still):not(.tm-ed-motion-still)
  .tm-ed.tm-ed--profile-library:not(.tm-ed--motion-still):not(.is-reduced-motion)
  .tm-ed-scene[data-asset="libraryExterior"].is-visible {
  animation: tm-ed-new-scenes-right-vertical-float 12s ease-in-out infinite !important;
  animation-delay: -3s !important;
  will-change: transform;
}

@keyframes tm-ed-new-scenes-left-vertical-float {
  0%, 100% {
    transform: translate(-50%, -50%) translateY(0);
  }
  50% {
    transform: translate(-50%, -50%) translateY(-22px);
  }
}

@keyframes tm-ed-new-scenes-right-vertical-float {
  0%, 100% {
    transform: translate(-50%, -50%) translateY(0);
  }
  50% {
    transform: translate(-50%, -50%) translateY(-16px);
  }
}

body.tm-decors-motion-still
  .tm-ed-scene[data-asset="membershipWelcomePath"].is-visible,
body.tm-decors-motion-still
  .tm-ed-scene[data-asset="membershipInvitation"].is-visible,
body.tm-decors-motion-still
  .tm-ed-scene[data-asset="galleryNightBench"].is-visible,
body.tm-decors-motion-still
  .tm-ed-scene[data-asset="galleryPhotos"].is-visible,
body.tm-decors-motion-still
  .tm-ed-scene[data-asset="contactMessengerBird"].is-visible,
body.tm-decors-motion-still
  .tm-ed-scene[data-asset="contactMessage"].is-visible,
body.tm-ed-motion-still
  .tm-ed-scene[data-asset="membershipWelcomePath"].is-visible,
body.tm-ed-motion-still
  .tm-ed-scene[data-asset="membershipInvitation"].is-visible,
body.tm-ed-motion-still
  .tm-ed-scene[data-asset="galleryNightBench"].is-visible,
body.tm-ed-motion-still
  .tm-ed-scene[data-asset="galleryPhotos"].is-visible,
body.tm-ed-motion-still
  .tm-ed-scene[data-asset="contactMessengerBird"].is-visible,
body.tm-ed-motion-still
  .tm-ed-scene[data-asset="contactMessage"].is-visible {
  animation: none !important;
  transform: translate(-50%, -50%) !important;
}

/* Mentions legales 2.6.0: sanctuaire et tapisserie flottants */
body:not(.tm-decors-motion-still):not(.tm-ed-motion-still)
  .tm-ed-scene[data-asset="legalReading"].is-visible {
  animation: tm-ed-new-scenes-left-vertical-float 12s ease-in-out infinite !important;
  will-change: transform;
}

body:not(.tm-decors-motion-still):not(.tm-ed-motion-still)
  .tm-ed-scene[data-asset="legalBanner"].is-visible {
  animation: tm-ed-new-scenes-right-vertical-float 12s ease-in-out infinite !important;
  animation-delay: -3s !important;
  will-change: transform;
}

body.tm-decors-motion-still
  .tm-ed-scene[data-asset="legalReading"].is-visible,
body.tm-decors-motion-still
  .tm-ed-scene[data-asset="legalBanner"].is-visible,
body.tm-ed-motion-still
  .tm-ed-scene[data-asset="legalReading"].is-visible,
body.tm-ed-motion-still
  .tm-ed-scene[data-asset="legalBanner"].is-visible {
  animation: none !important;
  transform: translate(-50%, -50%) !important;
}

/* Accueil 2.8.4 : proportions renforcées et oscillations réellement visibles. */
body:not(.tm-decors-motion-still):not(.tm-ed-motion-still)
  .tm-ed.tm-ed--profile-home
  .tm-ed-scene[data-asset="homeLilaFlying"].is-visible {
  animation: tm-ed-home-lila-header-reach-284 30s ease-in-out infinite !important;
  will-change: transform;
}

body:not(.tm-decors-motion-still):not(.tm-ed-motion-still)
  .tm-ed.tm-ed--profile-home
  .tm-ed-scene[data-asset="homeMiloFlying"].is-visible {
  animation: tm-ed-home-milo-community-rise-284 30s ease-in-out infinite !important;
  animation-delay: -7.5s !important;
  will-change: transform;
}

body:not(.tm-decors-motion-still):not(.tm-ed-motion-still)
  .tm-ed.tm-ed--profile-home
  .tm-ed-launch-cloud--left.is-visible,
body:not(.tm-decors-motion-still):not(.tm-ed-motion-still)
  .tm-ed.tm-ed--profile-home
  .tm-ed-launch-cloud--right.is-visible {
  animation: tm-ed-home-cloud-down-return 15s ease-in-out infinite !important;
  will-change: transform;
}

body:not(.tm-decors-motion-still):not(.tm-ed-motion-still)
  .tm-ed.tm-ed--profile-home
  .tm-ed-launch-cloud--right.is-visible {
  animation-delay: -7.5s !important;
}

@keyframes tm-ed-home-lila-header-reach-284 {
  0%, 100% {
    transform: translate(-50%, -50%) translateY(0);
  }
  50% {
    transform: translate(-50%, -50%) translateY(-32px);
  }
}

@keyframes tm-ed-home-milo-community-rise-284 {
  0%, 100% {
    transform: translate(-50%, -50%) translateY(0);
  }
  50% {
    transform: translate(-50%, -50%) translateY(-66px);
  }
}

@keyframes tm-ed-home-cloud-down-return {
  0%, 100% {
    transform: translate(-50%, -50%) translateY(0) scale(1);
  }
  50% {
    transform: translate(-50%, -50%) translateY(24px) scale(1);
  }
}

body.tm-decors-motion-still
  .tm-ed.tm-ed--profile-home
  .tm-ed-scene[data-asset="homeLilaFlying"].is-visible,
body.tm-decors-motion-still
  .tm-ed.tm-ed--profile-home
  .tm-ed-scene[data-asset="homeMiloFlying"].is-visible,
body.tm-decors-motion-still
  .tm-ed.tm-ed--profile-home
  .tm-ed-launch-cloud.is-visible,
body.tm-ed-motion-still
  .tm-ed.tm-ed--profile-home
  .tm-ed-scene[data-asset="homeLilaFlying"].is-visible,
body.tm-ed-motion-still
  .tm-ed.tm-ed--profile-home
  .tm-ed-scene[data-asset="homeMiloFlying"].is-visible,
body.tm-ed-motion-still
  .tm-ed.tm-ed--profile-home
  .tm-ed-launch-cloud.is-visible {
  animation: none !important;
  transform: translate(-50%, -50%) scale(1) !important;
}

/* Repli mobile du profil « Inscription au club » (page 1845). */
.tm-ed.tm-ed--profile-club-signup
  .tm-ed-scene[data-asset="clubSignupLila"] {
  overflow: visible !important;
  pointer-events: none !important;
}

body:not(.tm-decors-motion-still):not(.tm-ed-motion-still)
  .tm-ed.tm-ed--profile-club-signup
  .tm-ed-scene[data-asset="clubSignupLila"].is-visible {
  animation: tm-ed-club-signup-lila-float-290 14s ease-in-out infinite !important;
  will-change: transform;
}

@keyframes tm-ed-club-signup-lila-float-290 {
  0%, 100% { transform: translate(-50%, -50%) translateY(12px); }
  50% { transform: translate(-50%, -50%) translateY(-18px); }
}

body.tm-decors-motion-still
  .tm-ed.tm-ed--profile-club-signup
  .tm-ed-scene[data-asset="clubSignupLila"],
body.tm-ed-motion-still
  .tm-ed.tm-ed--profile-club-signup
  .tm-ed-scene[data-asset="clubSignupLila"],
.tm-ed.is-reduced-motion.tm-ed--profile-club-signup
  .tm-ed-scene[data-asset="clubSignupLila"] {
  animation: none !important;
  transform: translate(-50%, -50%) !important;
}


/* 2.9.3 - Inscription au club : géométrie de référence 123 corrige.png. */
.tm-ed.tm-ed--profile-club-signup .tm-ed-scene--side,
.tm-ed.tm-ed--profile-club-signup .tm-ed-scene--side .tm-ed-scene__image {
  display: none !important;
  border: 0 !important;
  outline: 0 !important;
  background: transparent !important;
  box-shadow: none !important;
  filter: none !important;
}

.tm-ed-club-stage,
.tm-ed-club-stage *,
.tm-ed-club-stage *::before,
.tm-ed-club-stage *::after {
  box-sizing: border-box !important;
  pointer-events: none !important;
  border: 0 !important;
  outline: 0 !important;
  background: transparent !important;
  box-shadow: none !important;
}

.tm-ed-club-stage {
  position: fixed;
  inset: 0;
  z-index: 4;
  overflow: visible;
  contain: layout style;
}

.tm-ed-club-stage__image {
  position: absolute;
  display: block;
  max-width: none !important;
  max-height: none !important;
  margin: 0 !important;
  padding: 0 !important;
  border-radius: 0 !important;
  filter: none !important;
  opacity: 1 !important;
  animation: none !important;
}

/*
 * 3.0.3 : chaque côté est désormais une seule composition fusionnée.
 * La boîte 2:3 remplit la hauteur cible ; ses marges alpha affleurent le
 * viewport sans étirement ni découpe de l'arbre ou de la falaise.
 */
.tm-ed-club-stage__scene {
  z-index: 3;
  width: min(31.25vw, 66.6667vh, 600px);
  height: auto !important;
  max-width: none;
  object-fit: contain !important;
  object-position: bottom;
  transform: translateY(0);
  transform-origin: 50% 100%;
}

.tm-ed-club-stage__scene--left {
  left: max(-1.0682vw, -2.2786vh, -20.51px);
  right: auto;
  bottom: max(-1.2512vw, -2.6693vh, -24.03px);
}

.tm-ed-club-stage__scene--right {
  right: max(-.76294vw, -1.6276vh, -14.65px);
  left: auto;
  bottom: max(-.76294vw, -1.6276vh, -14.65px);
}

/*
 * Synchronisation stricte : 5 s de montée douce, puis 5 s de descente.
 * Aucun délai n'est appliqué au côté droit.
 */
body:not(.tm-decors-motion-still):not(.tm-ed-motion-still)
  .tm-ed.tm-ed--profile-club-signup:not(.tm-ed--motion-still):not(.is-reduced-motion)
  .tm-ed-club-stage__scene {
  animation: tm-ed-club-fused-scene-float-303 10s ease-in-out 0s infinite !important;
  animation-delay: 0s !important;
  will-change: transform;
}

@keyframes tm-ed-club-fused-scene-float-303 {
  0%,
  100% {
    transform: translateY(0);
  }

  50% {
    transform: translateY(-8px);
  }
}

body.tm-decors-motion-still
  .tm-ed.tm-ed--profile-club-signup
  .tm-ed-club-stage__scene,
body.tm-ed-motion-still
  .tm-ed.tm-ed--profile-club-signup
  .tm-ed-club-stage__scene,
.tm-ed.is-reduced-motion.tm-ed--profile-club-signup
  .tm-ed-club-stage__scene {
  animation: none !important;
  transform: translateY(0) !important;
  will-change: auto;
}

@media (prefers-reduced-motion: reduce) {
  .tm-ed.tm-ed--profile-club-signup
    .tm-ed-club-stage__scene {
    animation: none !important;
    transform: translateY(0) !important;
    will-change: auto;
  }
}

.tm-ed-club-stage__spark {
  position: absolute;
  z-index: 2;
  display: block;
  line-height: 1;
  color: #fff2ff;
  text-shadow: 0 0 5px currentColor, 0 0 11px currentColor;
  opacity: .44;
  animation: tm-ed-club-sparkle-293 var(--tm-ed-club-spark-duration, 3.4s) ease-in-out var(--tm-ed-club-spark-delay, 0s) infinite;
}

.tm-ed-club-stage__spark--heart {
  color: #ff69c9;
  font-size: clamp(7px, .58vw, 11px);
}

.tm-ed-club-stage__spark--star {
  color: #c394ff;
  font-size: clamp(7px, .52vw, 10px);
}

.tm-ed-club-stage__spark--firefly {
  color: #ffe8ff;
  font-size: clamp(9px, .72vw, 14px);
}

@keyframes tm-ed-club-sparkle-293 {
  0%, 100% { opacity: .24; transform: scale(.78); }
  48% { opacity: .92; transform: scale(1.22); }
}

body.tm-decors-motion-still .tm-ed-club-stage__spark,
body.tm-ed-motion-still .tm-ed-club-stage__spark,
.tm-ed.is-reduced-motion .tm-ed-club-stage__spark {
  animation: none !important;
  opacity: .58;
  transform: none;
}

@media (max-width: 1049px) {
  .tm-ed-club-stage {
    display: none !important;
  }
}
