:root {
    --kx-avatar-cloud: #2daeff;
    --kx-avatar-cloud-soft: #94e9ff;
    --kx-avatar-cloud-deep: #0b4a8d;
    --kx-avatar-core: #f4fbff;
    --kx-avatar-iris: #ffffff;
    --kx-avatar-eye: #06182f;
    --kx-avatar-halo-blue: rgba(143,231,255,.34);
    --kx-avatar-success: #5ee37d;
    --kx-avatar-warning: #ffd166;
    --kx-avatar-danger: #ff6b6b;
    --kx-avatar-text: #ffffff;
    --kx-avatar-button-size: 72px;
    --kx-avatar-button-size-mobile: 62px;
    --kx-avatar-bubble-max: 300px;
    --kx-avatar-shadow-cloud: 0 24px 42px rgba(44,169,255,.24);
    --kx-avatar-shadow-halo: 0 26px 46px rgba(44,169,255,.30), 0 0 46px rgba(143,231,255,.24);
    --kx-avatar-shadow-alert: 0 28px 44px rgba(255,209,102,.22), 0 0 36px rgba(255,209,102,.28);
    --kx-avatar-state-accent: #00d1ff;
    --kx-avatar-environment-glow: rgba(143,231,255,.22);
}

.kx-avatar-root[data-mode="repos"],
.kx-avatar-root[data-emotion="repos"],
.kx-avatar-root[data-presence-variant="calme"],
[data-state="repos"] {
    --kx-avatar-state-accent: #00d1ff;
}

.kx-avatar-root[data-mode="ecoute"],
.kx-avatar-root[data-attention="ecouter"],
[data-state="ecoute"] {
    --kx-avatar-state-accent: #27e6ff;
}

.kx-avatar-root[data-mode="reflexion"],
.kx-avatar-root[data-mode="chargement"],
.kx-avatar-root[data-attention="reflechir"],
[data-state="reflexion"] {
    --kx-avatar-state-accent: #2f80ff;
}

.kx-avatar-root[data-mode="reponse"],
.kx-avatar-root[data-expression="sourire"],
.kx-avatar-root[data-mode="succes"],
.kx-avatar-root[data-expression="encouragement"],
[data-state="reponse"],
[data-state="content"] {
    --kx-avatar-state-accent: #00e676;
}

.kx-avatar-root[data-mode="alerte"],
.kx-avatar-root[data-mode="erreur"],
.kx-avatar-root[data-expression="vigilance"],
[data-state="alerte"] {
    --kx-avatar-state-accent: #ff4d4d;
}

[data-state="dodo"] {
    --kx-avatar-state-accent: #ffd540;
}

.kx-avatar-official,
.kx-avatar-system-cloud {
    width: 100%;
    aspect-ratio: 1;
    position: relative;
    display: grid;
    place-items: center;
    overflow: visible;
    border: 0;
    border-radius: 0;
    background: transparent;
    box-shadow: none;
    filter: none;
    isolation: isolate;
}

.kx-avatar-official::before,
.kx-avatar-official::after,
.kx-avatar-system-cloud::before,
.kx-avatar-system-cloud::after {
    content: none !important;
}

.kx-avatar-official-aura,
.kx-avatar-official-ring,
.kx-avatar-official-particle {
    position: absolute;
    pointer-events: none;
}

.kx-avatar-environment {
    position: absolute;
    inset: 0;
    pointer-events: none;
    opacity: 0;
    z-index: 2;
}

.kx-avatar-official-aura {
    inset: 4%;
    border-radius: 50%;
    background:
        radial-gradient(circle at 50% 55%, color-mix(in srgb, var(--kx-avatar-state-accent) 30%, transparent), transparent 58%),
        conic-gradient(from 20deg, transparent, rgba(0,209,255,.20), transparent, rgba(47,128,255,.18), transparent);
    filter: blur(9px);
    opacity: .86;
    animation: kx-avatar-official-aura-breathe 5.6s ease-in-out infinite;
}

.kx-avatar-official-ring {
    left: 50%;
    bottom: 9%;
    width: 58%;
    height: 14%;
    border: 2px solid color-mix(in srgb, var(--kx-avatar-state-accent) 56%, transparent);
    border-radius: 50%;
    filter: drop-shadow(0 0 12px var(--kx-avatar-state-accent));
    opacity: .56;
    transform: translateX(-50%);
    animation: kx-avatar-official-ring-pulse 4.8s ease-in-out infinite;
}

.kx-avatar-official-particle {
    width: 4px;
    height: 4px;
    border-radius: 50%;
    background: #9ff2ff;
    box-shadow: 0 0 12px #00d1ff;
    opacity: .75;
    animation: kx-avatar-official-particle-drift 6.4s ease-in-out infinite;
}

.kx-avatar-official-particle:nth-of-type(3) { left: 18%; top: 36%; animation-delay: -.4s; }
.kx-avatar-official-particle:nth-of-type(4) { left: 77%; top: 32%; animation-delay: -1.7s; }
.kx-avatar-official-particle:nth-of-type(5) { left: 68%; top: 72%; animation-delay: -3.2s; }
.kx-avatar-official-particle:nth-of-type(6) { left: 30%; top: 76%; animation-delay: -4.8s; }

.kx-avatar-official-svg {
    width: 78%;
    max-width: 400px;
    overflow: visible;
    animation: kx-avatar-official-cloud-rest 5.8s ease-in-out infinite;
    filter:
        drop-shadow(0 28px 42px rgba(0,0,0,.36))
        drop-shadow(0 0 26px color-mix(in srgb, var(--kx-avatar-state-accent) 52%, transparent))
        drop-shadow(0 0 34px var(--kx-avatar-environment-glow));
    mix-blend-mode: normal;
}

.kx-avatar-cloud-core {
    fill: url(#kxAvatarCloudVolume);
    stroke: url(#kxAvatarCloudEdge);
    stroke-width: 2.4;
}

.kx-avatar-cloud-soft-glow {
    fill: none;
    stroke: color-mix(in srgb, var(--kx-avatar-state-accent) 70%, transparent);
    stroke-width: 4;
    opacity: .55;
    filter: url(#kxAvatarSoftBlur);
}

.kx-avatar-inner-light {
    fill: url(#kxAvatarInnerLight);
    opacity: .78;
    mix-blend-mode: screen;
}

.kx-avatar-cheek {
    fill: url(#kxAvatarCheekLight);
    opacity: .36;
}

.kx-avatar-official[data-environment="sunny"],
.kx-avatar-system-cloud[data-environment="sunny"] {
    --kx-avatar-environment-glow: rgba(255,213,64,.32);
}

.kx-avatar-official[data-environment="rain"],
.kx-avatar-system-cloud[data-environment="rain"],
.kx-avatar-official[data-environment="heavyRain"],
.kx-avatar-system-cloud[data-environment="heavyRain"] {
    --kx-avatar-environment-glow: rgba(121,200,255,.22);
}

.kx-avatar-official[data-environment="storm"],
.kx-avatar-system-cloud[data-environment="storm"] {
    --kx-avatar-environment-glow: rgba(167,124,255,.30);
}

.kx-avatar-official[data-environment="wind"],
.kx-avatar-system-cloud[data-environment="wind"] {
    --kx-avatar-environment-glow: rgba(70,220,255,.30);
}

.kx-avatar-official[data-environment="night"],
.kx-avatar-system-cloud[data-environment="night"] {
    --kx-avatar-environment-glow: rgba(127,167,255,.18);
}

.kx-avatar-official[data-environment="sunny"] .kx-avatar-official-aura,
.kx-avatar-system-cloud[data-environment="sunny"] .kx-avatar-official-aura {
    background:
        radial-gradient(circle at 50% 56%, rgba(255,231,122,.34), transparent 58%),
        conic-gradient(from 18deg, transparent, rgba(255,213,64,.30), transparent, rgba(255,163,26,.18), transparent);
    filter: blur(10px);
    opacity: .96;
}

.kx-avatar-official[data-environment="rain"] .kx-avatar-official-aura,
.kx-avatar-system-cloud[data-environment="rain"] .kx-avatar-official-aura,
.kx-avatar-official[data-environment="heavyRain"] .kx-avatar-official-aura,
.kx-avatar-system-cloud[data-environment="heavyRain"] .kx-avatar-official-aura,
.kx-avatar-official[data-environment="night"] .kx-avatar-official-aura,
.kx-avatar-system-cloud[data-environment="night"] .kx-avatar-official-aura {
    opacity: .58;
    filter: blur(12px);
}

.kx-avatar-official[data-environment="rain"] .kx-avatar-environment-rain,
.kx-avatar-system-cloud[data-environment="rain"] .kx-avatar-environment-rain {
    opacity: .42;
    background:
        linear-gradient(105deg, transparent 0 34%, rgba(159,212,255,.72) 35% 38%, transparent 39% 100%) 18% 14% / 38px 84px,
        linear-gradient(105deg, transparent 0 38%, rgba(159,212,255,.48) 39% 42%, transparent 43% 100%) 78% 16% / 42px 92px;
    background-repeat: no-repeat;
    filter: drop-shadow(0 0 7px rgba(121,200,255,.42));
    animation: kx-avatar-environment-rain 1.8s linear infinite;
}

.kx-avatar-official[data-environment="heavyRain"] .kx-avatar-environment-rain,
.kx-avatar-system-cloud[data-environment="heavyRain"] .kx-avatar-environment-rain {
    opacity: .62;
    background:
        linear-gradient(105deg, transparent 0 34%, rgba(159,212,255,.70) 35% 38%, transparent 39% 100%) 14% 10% / 34px 78px,
        linear-gradient(105deg, transparent 0 40%, rgba(159,212,255,.56) 41% 44%, transparent 45% 100%) 48% 18% / 40px 86px,
        linear-gradient(105deg, transparent 0 42%, rgba(159,212,255,.46) 43% 46%, transparent 47% 100%) 82% 12% / 42px 90px;
    background-repeat: no-repeat;
    filter: drop-shadow(0 0 7px rgba(121,200,255,.42));
    animation: kx-avatar-environment-rain 1.35s linear infinite;
}

.kx-avatar-official[data-environment="storm"] .kx-avatar-environment-rain,
.kx-avatar-system-cloud[data-environment="storm"] .kx-avatar-environment-rain {
    opacity: .24;
    background:
        linear-gradient(105deg, transparent 0 36%, rgba(174,210,255,.46) 37% 39%, transparent 40% 100%) 14% 16% / 42px 90px,
        linear-gradient(105deg, transparent 0 42%, rgba(174,210,255,.36) 43% 45%, transparent 46% 100%) 80% 20% / 46px 96px;
    background-repeat: no-repeat;
    animation: kx-avatar-environment-rain 1.5s linear infinite;
}

.kx-avatar-official[data-environment="storm"] .kx-avatar-environment-storm,
.kx-avatar-system-cloud[data-environment="storm"] .kx-avatar-environment-storm {
    opacity: .9;
}

.kx-avatar-environment-storm::before,
.kx-avatar-environment-storm::after {
    content: "";
    position: absolute;
    width: 26px;
    height: 62px;
    clip-path: polygon(48% 0, 78% 0, 58% 38%, 86% 38%, 34% 100%, 48% 52%, 24% 52%);
    background: linear-gradient(180deg, #f7f4ff, #b987ff 48%, #5beaff);
    filter: drop-shadow(0 0 14px rgba(167,124,255,.82));
    opacity: .92;
}

.kx-avatar-environment-storm::before {
    left: 67%;
    top: 38%;
    transform: rotate(9deg) scale(.74);
    animation: kx-avatar-environment-flash 3.2s ease-in-out infinite;
}

.kx-avatar-environment-storm::after {
    left: 22%;
    top: 46%;
    transform: rotate(-12deg) scale(.48);
    animation: kx-avatar-environment-flash 3.8s ease-in-out infinite .8s;
}

.kx-avatar-official[data-environment="wind"] .kx-avatar-official-aura,
.kx-avatar-system-cloud[data-environment="wind"] .kx-avatar-official-aura {
    transform: scaleX(1.14);
    animation: kx-avatar-environment-wind-aura 4.6s ease-in-out infinite;
}

.kx-avatar-official[data-environment="wind"] .kx-avatar-environment-wind,
.kx-avatar-system-cloud[data-environment="wind"] .kx-avatar-environment-wind {
    opacity: .62;
    animation: kx-avatar-environment-wind-drift 3.8s ease-in-out infinite;
}

.kx-avatar-environment-wind::before,
.kx-avatar-environment-wind::after {
    content: "";
    position: absolute;
    right: 6%;
    width: 34%;
    height: 2px;
    border-radius: 999px;
    background: linear-gradient(90deg, transparent, rgba(143,231,255,.88), transparent);
    filter: drop-shadow(0 0 8px rgba(70,220,255,.52));
}

.kx-avatar-environment-wind::before {
    top: 34%;
}

.kx-avatar-environment-wind::after {
    top: 58%;
    width: 27%;
    opacity: .74;
}

.kx-avatar-official[data-environment="night"] .kx-avatar-official-ring,
.kx-avatar-system-cloud[data-environment="night"] .kx-avatar-official-ring {
    opacity: .28;
}

.kx-avatar-official[data-environment="sunny"] .kx-avatar-environment-sky,
.kx-avatar-system-cloud[data-environment="sunny"] .kx-avatar-environment-sky,
.kx-avatar-official[data-environment="cloudy"] .kx-avatar-environment-sky,
.kx-avatar-system-cloud[data-environment="cloudy"] .kx-avatar-environment-sky,
.kx-avatar-official[data-environment="night"] .kx-avatar-environment-sky,
.kx-avatar-system-cloud[data-environment="night"] .kx-avatar-environment-sky {
    opacity: 1;
}

.kx-avatar-environment-sky::before,
.kx-avatar-environment-sky::after {
    content: "";
    position: absolute;
    pointer-events: none;
}

.kx-avatar-official[data-environment="sunny"] .kx-avatar-environment-sky::before,
.kx-avatar-system-cloud[data-environment="sunny"] .kx-avatar-environment-sky::before {
    left: 60%;
    top: 8%;
    width: 32px;
    height: 32px;
    border-radius: 50%;
    background: radial-gradient(circle, #fff7b0 0 24%, #ffd540 42%, rgba(255,213,64,.10) 70%, transparent 72%);
    box-shadow: 0 0 18px rgba(255,213,64,.58);
}

.kx-avatar-official[data-environment="sunny"] .kx-avatar-environment-sky::after,
.kx-avatar-system-cloud[data-environment="sunny"] .kx-avatar-environment-sky::after {
    left: 19%;
    top: 30%;
    width: 62%;
    height: 54%;
    background:
        radial-gradient(circle at 10% 46%, rgba(255,213,64,.78) 0 2px, transparent 3px),
        radial-gradient(circle at 86% 30%, rgba(255,231,122,.72) 0 2px, transparent 3px),
        radial-gradient(circle at 78% 78%, rgba(255,213,64,.48) 0 1.5px, transparent 2.5px);
    animation: kx-avatar-environment-sparkle 5s ease-in-out infinite;
}

.kx-avatar-official[data-environment="cloudy"] .kx-avatar-environment-sky::before,
.kx-avatar-system-cloud[data-environment="cloudy"] .kx-avatar-environment-sky::before {
    left: 59%;
    top: 14%;
    width: 54px;
    height: 25px;
    border-radius: 999px;
    background:
        radial-gradient(circle at 25% 62%, rgba(208,238,255,.82) 0 14px, transparent 15px),
        radial-gradient(circle at 48% 42%, rgba(208,238,255,.86) 0 17px, transparent 18px),
        radial-gradient(circle at 74% 64%, rgba(208,238,255,.76) 0 13px, transparent 14px);
    filter: drop-shadow(0 0 12px rgba(143,231,255,.24));
    opacity: .72;
}

.kx-avatar-official[data-environment="night"] .kx-avatar-environment-sky::before,
.kx-avatar-system-cloud[data-environment="night"] .kx-avatar-environment-sky::before {
    left: 63%;
    top: 10%;
    width: 30px;
    height: 30px;
    border-radius: 50%;
    background: radial-gradient(circle at 34% 34%, #f7fbff 0 54%, transparent 56%);
    box-shadow: inset -9px -1px 0 rgba(127,167,255,.28), 0 0 16px rgba(183,205,255,.36);
}

.kx-avatar-official[data-environment="night"] .kx-avatar-environment-sky::after,
.kx-avatar-system-cloud[data-environment="night"] .kx-avatar-environment-sky::after {
    left: 20%;
    top: 20%;
    width: 62%;
    height: 52%;
    background:
        radial-gradient(circle at 18% 26%, rgba(247,251,255,.78) 0 1.5px, transparent 2.5px),
        radial-gradient(circle at 72% 18%, rgba(247,251,255,.68) 0 1.5px, transparent 2.5px),
        radial-gradient(circle at 83% 72%, rgba(247,251,255,.52) 0 1.5px, transparent 2.5px);
    animation: kx-avatar-environment-sparkle 6.2s ease-in-out infinite;
}

.kx-avatar-eye-white {
    fill: url(#kxAvatarEyeWhite);
}

.kx-avatar-iris {
    fill: url(#kxAvatarIrisBlue);
}

.kx-avatar-pupil {
    fill: #031225;
}

.kx-avatar-spark {
    fill: #fff;
    opacity: .96;
}

.kx-avatar-brow {
    fill: none;
    stroke: #072551;
    stroke-width: 6;
    stroke-linecap: round;
    opacity: .72;
    transform-box: fill-box;
    transform-origin: center;
    transition: transform .22s ease;
}

.kx-avatar-mouth {
    display: block !important;
    fill: #04152b;
    stroke: rgba(255,255,255,.24);
    stroke-width: 1.4;
    transform-box: fill-box;
    transform-origin: center;
    transition: transform .22s ease;
}

.kx-avatar-mouth-shine {
    fill: #ff759f;
    opacity: .88;
}

.kx-avatar-arm,
.kx-avatar-hand {
    fill: url(#kxAvatarCloudVolume);
    stroke: rgba(141,235,255,.62);
    stroke-width: 1.8;
}

.kx-avatar-face,
.kx-avatar-arms {
    transform-box: fill-box;
    transform-origin: center;
    transition: transform .22s ease;
}

.kx-avatar-shadow-base {
    fill: rgba(0,20,45,.36);
    filter: url(#kxAvatarSoftBlur);
}

.kx-avatar-eye-sleep {
    fill: none;
    stroke: #031225;
    stroke-width: 6;
    stroke-linecap: round;
    opacity: 0;
}

.kx-avatar-root[data-mode="ecoute"] .kx-avatar-brow,
.kx-avatar-root[data-attention="ecouter"] .kx-avatar-brow {
    transform: translateY(-3px);
}

.kx-avatar-root[data-mode="reflexion"] .kx-avatar-face,
.kx-avatar-root[data-mode="chargement"] .kx-avatar-face,
.kx-avatar-root[data-attention="reflechir"] .kx-avatar-face {
    transform: translateY(-4px);
}

.kx-avatar-root[data-mode="reflexion"] .kx-avatar-brow-left,
.kx-avatar-root[data-mode="chargement"] .kx-avatar-brow-left,
.kx-avatar-root[data-attention="reflechir"] .kx-avatar-brow-left {
    transform: translateY(-6px) rotate(-7deg);
}

.kx-avatar-root[data-mode="reflexion"] .kx-avatar-brow-right,
.kx-avatar-root[data-mode="chargement"] .kx-avatar-brow-right,
.kx-avatar-root[data-attention="reflechir"] .kx-avatar-brow-right {
    transform: translateY(-6px) rotate(7deg);
}

.kx-avatar-root[data-mode="reponse"] .kx-avatar-mouth,
.kx-avatar-root[data-mode="succes"] .kx-avatar-mouth,
.kx-avatar-root[data-expression="sourire"] .kx-avatar-mouth,
.kx-avatar-root[data-expression="encouragement"] .kx-avatar-mouth {
    transform: scale(1.12);
}

.kx-avatar-root[data-mode="alerte"] .kx-avatar-official-svg,
.kx-avatar-root[data-mode="erreur"] .kx-avatar-official-svg {
    animation: kx-avatar-official-cloud-alert 1.4s ease-in-out infinite;
}

.kx-avatar-root[data-mode="alerte"] .kx-avatar-mouth,
.kx-avatar-root[data-mode="erreur"] .kx-avatar-mouth {
    transform: scale(.82) translateY(-2px);
}

.kx-avatar-root[data-mode="alerte"] .kx-avatar-brow-left,
.kx-avatar-root[data-mode="erreur"] .kx-avatar-brow-left {
    transform: translateY(-4px) rotate(10deg);
}

.kx-avatar-root[data-mode="alerte"] .kx-avatar-brow-right,
.kx-avatar-root[data-mode="erreur"] .kx-avatar-brow-right {
    transform: translateY(-4px) rotate(-10deg);
}

[data-state="dodo"] .kx-avatar-eye-open,
[data-state="dodo"] .kx-avatar-mouth-shine {
    opacity: 0;
}

[data-state="dodo"] .kx-avatar-eye-sleep {
    opacity: 1;
}

@keyframes kx-avatar-official-cloud-rest {
    0%, 100% { transform: translateY(0) scale(1); }
    50% { transform: translateY(-9px) scale(1.018); }
}

@keyframes kx-avatar-official-cloud-alert {
    0%, 100% { transform: translateX(0) translateY(0) scale(1); }
    25% { transform: translateX(-2px) translateY(-5px) scale(1.014); }
    50% { transform: translateX(2px) translateY(-2px) scale(1.018); }
    75% { transform: translateX(-1px) translateY(-5px) scale(1.014); }
}

@keyframes kx-avatar-official-aura-breathe {
    0%, 100% { opacity: .62; transform: scale(.96); }
    50% { opacity: .94; transform: scale(1.06); }
}

@keyframes kx-avatar-official-ring-pulse {
    0%, 100% { opacity: .34; transform: translateX(-50%) scale(.92); }
    50% { opacity: .72; transform: translateX(-50%) scale(1.06); }
}

@keyframes kx-avatar-official-particle-drift {
    0%, 100% { transform: translateY(0) scale(.82); opacity: .32; }
    50% { transform: translateY(-16px) scale(1); opacity: .92; }
}

@keyframes kx-avatar-environment-rain {
    0% { transform: translate3d(0, -10px, 0); }
    100% { transform: translate3d(-12px, 18px, 0); }
}

@keyframes kx-avatar-environment-flash {
    0%, 64%, 100% { opacity: .38; transform: rotate(9deg) scale(.62); }
    68% { opacity: .94; transform: rotate(9deg) scale(.74); }
    72% { opacity: .46; }
    76% { opacity: .78; }
}

@keyframes kx-avatar-environment-wind-aura {
    0%, 100% { transform: scaleX(1.04) translateX(0); }
    50% { transform: scaleX(1.18) translateX(3%); }
}

@keyframes kx-avatar-environment-wind-drift {
    0%, 100% { transform: translateX(-4px); opacity: .38; }
    50% { transform: translateX(12px); opacity: .72; }
}

@keyframes kx-avatar-environment-sparkle {
    0%, 100% { opacity: .42; transform: translateY(0); }
    50% { opacity: .9; transform: translateY(-3px); }
}

@keyframes kx-avatar-system-breathe {
    0%, 100% { transform: translateY(0) scale(1); }
    50% { transform: translateY(-2px) scale(1.025); }
}

@keyframes kx-avatar-system-float {
    0%, 100% { transform: translateY(0); }
    50% { transform: translateY(-5px); }
}

@keyframes kx-avatar-system-appear {
    0% { opacity: 0; transform: translateY(6px) scale(.98); }
    100% { opacity: 1; transform: translateY(0) scale(1); }
}

@keyframes kx-avatar-system-disappear {
    0% { opacity: 1; transform: translateY(0) scale(1); }
    100% { opacity: 0; transform: translateY(6px) scale(.98); }
}

@keyframes kx-avatar-system-soft-bounce {
    0%, 100% { transform: translateY(0) scale(1); }
    45% { transform: translateY(-2px) scale(1.025); }
}

@keyframes kx-avatar-system-halo {
    0%, 100% { filter: drop-shadow(var(--kx-avatar-shadow-cloud)); }
    50% { filter: drop-shadow(var(--kx-avatar-shadow-halo)); }
}

@keyframes kx-avatar-system-alert {
    0%, 100% { transform: translateY(0) scale(1); }
    20% { transform: translateY(-1px) scale(1.02); }
    40% { transform: translateY(1px) scale(1.02); }
    60% { transform: translateY(-1px) scale(1.02); }
}

@keyframes kx-avatar-system-soft-transition {
    0%, 100% { transform: translateY(0); }
    50% { transform: translateY(-1px); }
}

@keyframes kx-avatar-system-loading {
    0% { filter: brightness(1) saturate(1); }
    50% { filter: brightness(1.18) saturate(1.2); }
    100% { filter: brightness(1) saturate(1); }
}

@keyframes kx-avatar-system-living-breath {
    0%, 100% {
        transform: translateY(0) scale(1);
        filter: brightness(var(--kx-avatar-presence-brightness, 1));
    }
    50% {
        transform: translateY(calc(var(--kx-avatar-presence-amplitude, 1px) * -1)) translateX(var(--kx-avatar-presence-micro, 0)) scale(1.006);
        filter: brightness(calc(var(--kx-avatar-presence-brightness, 1) + .04));
    }
}

@keyframes kx-avatar-system-living-halo {
    0%, 100% {
        opacity: calc(var(--kx-avatar-presence-halo, .2) + .05);
        transform: scale(.96);
    }
    50% {
        opacity: calc(var(--kx-avatar-presence-halo, .2) + .18);
        transform: scale(1.05);
    }
}

@keyframes kx-avatar-system-soft-blink {
    0%, 100% { transform: scaleY(1); }
    50% { transform: scaleY(.12); }
}

@keyframes kx-avatar-system-gentle-reaction {
    0%, 100% { transform: translateY(0) scale(1); }
    45% { transform: translateY(-1px) scale(1.018); }
}

@media (prefers-reduced-motion: reduce) {
    .kx-avatar-root *,
    .kx-avatar-root *::before,
    .kx-avatar-root *::after,
    .kx-avatar-official,
    .kx-avatar-official::before,
    .kx-avatar-official::after,
    .kx-avatar-official *,
    .kx-avatar-system-cloud,
    .kx-avatar-system-cloud::before,
    .kx-avatar-system-cloud::after,
    .kx-avatar-system-cloud * {
        animation: none !important;
        transition-duration: .01ms !important;
    }
}

/* Official Kynexy Companion V4. Avatar Lab is the only source of truth. */
.kx-avatar-official,
.kx-avatar-system-cloud {
    aspect-ratio: 1 !important;
    display: grid !important;
    place-items: center !important;
    background: transparent !important;
    box-shadow: none !important;
    filter: none !important;
}

.kx-avatar-official::before,
.kx-avatar-official::after,
.kx-avatar-system-cloud::before,
.kx-avatar-system-cloud::after {
    content: none !important;
    display: none !important;
}

.kx-avatar-official .kx-avatar-mouth {
    display: block !important;
}

.kx-avatar-root[data-mode="ecoute"] .kx-avatar-brow,
.kx-avatar-root[data-attention="ecouter"] .kx-avatar-brow {
    transform: translateY(-3px);
}

.kx-avatar-root[data-mode="reflexion"] .kx-avatar-face,
.kx-avatar-root[data-mode="chargement"] .kx-avatar-face,
.kx-avatar-root[data-attention="reflechir"] .kx-avatar-face {
    transform: translateY(-4px);
}

.kx-avatar-root[data-mode="alerte"] .kx-avatar-official-svg,
.kx-avatar-root[data-mode="erreur"] .kx-avatar-official-svg {
    animation: kx-avatar-official-cloud-alert 1.4s ease-in-out infinite;
}
