/* ============================================================
   KIT CURSEUR-BLIP — cursor-kit.css
   Blip est le curseur. Hotspot = pointe haut-gauche = unite viewBox (6,3).
   Toutes les classes / keyframes prefixees bc-. Voir SPEC.md.
   ============================================================ */
.bc{--bc-px:1.75;position:fixed;left:0;top:0;width:0;height:0;overflow:visible;
  pointer-events:none;z-index:2147483647;will-change:transform;contain:layout style}
.bc .bc-svg{display:block;overflow:visible;
  width:calc(var(--bc-px)*24px);height:calc(var(--bc-px)*28px);
  margin-left:calc(var(--bc-px)*-6px);margin-top:calc(var(--bc-px)*-3px);
  filter:drop-shadow(0 0 calc(var(--bc-px)*.8px) var(--bc-glow))}
/* variante posee dans le flux (demos, previews) */
.bc.bc-inplace{position:relative;width:calc(var(--bc-px)*24px);height:calc(var(--bc-px)*28px)}
.bc.bc-inplace .bc-svg{margin:0}
/* l'orchestrateur pose bc-active sur <html> au premier mouvement :
   le curseur natif disparait, Blip prend le relais */
html.bc-active,html.bc-active *{cursor:none!important}
/* themes */
.bc.bc-theme-terminal{--bc-k:#12120f;--bc-w:#eaffdd;--bc-a:#ffb000;--bc-tw:#eaffdd;--bc-tl:#8dff5a;--bc-l1:#8dff5a;--bc-g1:#33ff00;--bc-d1:#1fae00;--bc-z1:#12851a;--bc-l2:#7ce04f;--bc-g2:#2ce000;--bc-d2:#1b9900;--bc-z2:#0f7516;--bc-fx:#8dff5a;--bc-glow:rgba(51,255,0,.40)}.bc.bc-theme-default{--bc-k:#12120f;--bc-w:#d7efe9;--bc-a:#ffb000;--bc-tw:#d7efe9;--bc-tl:#63a89b;--bc-l1:#63a89b;--bc-g1:#3d7a73;--bc-d1:#2c5952;--bc-z1:#1e3f3a;--bc-l2:#579388;--bc-g2:#356b65;--bc-d2:#264e48;--bc-z2:#1a3733;--bc-fx:#63a89b;--bc-glow:rgba(87,147,136,.38)}.bc.bc-theme-blueprint{--bc-k:#12120f;--bc-w:#dcffff;--bc-a:#ffb000;--bc-tw:#ffe066;--bc-tl:#ffd700;--bc-l1:#7dffff;--bc-g1:#00ffff;--bc-d1:#00b3b3;--bc-z1:#00787a;--bc-l2:#6ee0e0;--bc-g2:#00e0e0;--bc-d2:#009d9d;--bc-z2:#00696b;--bc-fx:#7dffff;--bc-glow:rgba(0,255,255,.35)}.bc.bc-theme-retro90s{--bc-k:#12120f;--bc-w:#ffd9ff;--bc-a:#ffb000;--bc-tw:#ff6666;--bc-tl:#ff2222;--bc-l1:#ff7dff;--bc-g1:#ff00ff;--bc-d1:#b300b3;--bc-z1:#7a007a;--bc-l2:#e06ee0;--bc-g2:#e000e0;--bc-d2:#9d009d;--bc-z2:#6b006b;--bc-fx:#ff7dff;--bc-glow:rgba(255,0,255,.35)}
.bc .bc-c-k{fill:var(--bc-k)}.bc .bc-c-w{fill:var(--bc-w)}.bc .bc-c-a{fill:var(--bc-a)}.bc .bc-c-tw{fill:var(--bc-tw)}.bc .bc-c-tl{fill:var(--bc-tl)}.bc .bc-c-l1{fill:var(--bc-l1)}.bc .bc-c-l2{fill:var(--bc-l2)}.bc .bc-c-g1{fill:var(--bc-g1)}.bc .bc-c-g2{fill:var(--bc-g2)}.bc .bc-c-d1{fill:var(--bc-d1)}.bc .bc-c-d2{fill:var(--bc-d2)}.bc .bc-c-z1{fill:var(--bc-z1)}.bc .bc-c-z2{fill:var(--bc-z2)}.bc .bc-c-fx{fill:var(--bc-fx)}
/* hierarchie animable — l'origine des transformations EST le hotspot */
.bc .bc-anim,.bc .bc-anim2{transform-box:view-box;transform-origin:6px 3px}
/* visibilites par defaut (pose neutre) */
.bc .bc-bf,.bc .bc-t,.bc .bc-e,.bc .bc-lid,.bc .bc-m,.bc .bc-paw,
.bc .bc-blush-warm,.bc .bc-sp,.bc .bc-z{opacity:0}
.bc .bc-b-n,.bc .bc-t-n,.bc .bc-e-n,.bc .bc-m-smirk,.bc .bc-blush{opacity:1}
/* etats */
.bc.bc-blink .bc-lid-1{animation:bc-k-blink-l1 240ms linear both}.bc.bc-blink .bc-lid-3{animation:bc-k-blink-l3 240ms linear both}.bc.bc-click .bc-b-n{animation:bc-k-click-fn 400ms linear both}.bc.bc-click .bc-b-sq{animation:bc-k-click-fsq 400ms linear both}.bc.bc-click .bc-b-cl{animation:bc-k-click-fcl 400ms linear both}.bc.bc-click .bc-b-st{animation:bc-k-click-fst 400ms linear both}.bc.bc-click .bc-face{animation:bc-k-click-face 400ms linear both}.bc.bc-click .bc-anim{animation:bc-k-click-root 400ms linear both}.bc.bc-click .bc-lid-2{animation:bc-k-click-lid2 400ms linear both}.bc.bc-click .bc-blush-warm{animation:bc-k-click-bw 400ms linear both}.bc.bc-click .bc-blush{animation:bc-k-click-b0 400ms linear both}.bc.bc-click .bc-sp-1{animation:bc-k-click-sp1 400ms linear both}.bc.bc-click .bc-sp-2{animation:bc-k-click-sp2 400ms linear both}.bc.bc-click .bc-sp-3{animation:bc-k-click-sp3 400ms linear both}.bc.bc-gag-1 .bc-b-n{animation:bc-k-gag-1-fn 1100ms linear both}.bc.bc-gag-1 .bc-b-sq{animation:bc-k-gag-1-fsq 1100ms linear both}.bc.bc-gag-1 .bc-b-st{animation:bc-k-gag-1-fst 1100ms linear both}.bc.bc-gag-1 .bc-face{animation:bc-k-gag-1-face 1100ms linear both}.bc.bc-gag-1 .bc-anim{animation:bc-k-gag-1-root 1100ms linear both}.bc.bc-gag-1 .bc-m-o{animation:bc-k-gag1-mo 1100ms linear both}.bc.bc-gag-1 .bc-m-smirk{animation:bc-k-gag1-ms 1100ms linear both}.bc.bc-gag-1 .bc-blush-warm{animation:bc-k-gag1-bw 1100ms linear both}.bc.bc-gag-1 .bc-blush{animation:bc-k-gag1-b0 1100ms linear both}.bc.bc-gag-1 .bc-lid-3{animation:bc-k-gag1-l3 1100ms linear both}.bc.bc-gag-2 .bc-b-n{animation:bc-k-gag-2-fn 1500ms linear both}.bc.bc-gag-2 .bc-b-sq{animation:bc-k-gag-2-fsq 1500ms linear both}.bc.bc-gag-2 .bc-face{animation:bc-k-gag-2-face 1500ms linear both}.bc.bc-gag-2 .bc-anim{animation:bc-k-gag-2-root 1500ms linear both}.bc.bc-gag-2 .bc-e-n{animation:bc-k-gag2-eyes 1500ms linear both}.bc.bc-gag-2 .bc-m-o{animation:bc-k-gag2-mo 1500ms linear both}.bc.bc-gag-2 .bc-m-smirk{animation:bc-k-gag2-ms 1500ms linear both}.bc.bc-gag-2 .bc-lid-1{animation:bc-k-gag2-l1 1500ms linear both}.bc.bc-gag-2 .bc-lid-2{animation:bc-k-gag2-l2 1500ms linear both}.bc.bc-gag-2 .bc-lid-3{animation:bc-k-gag2-l3 1500ms linear both}.bc.bc-gag-3 .bc-b-n{animation:bc-k-gag-3-fn 1400ms linear both}.bc.bc-gag-3 .bc-face{animation:bc-k-gag-3-face 1400ms linear both}.bc.bc-gag-3 .bc-anim{animation:bc-k-gag-3-root 1400ms linear both}.bc.bc-gag-3 .bc-paw-up{animation:bc-k-gag3-pup 1400ms linear both}.bc.bc-gag-3 .bc-paw-dn{animation:bc-k-gag3-pdn 1400ms linear both}.bc.bc-gag-3 .bc-e-n{animation:bc-k-gag3-eyes 1400ms linear both}.bc.bc-gag-3 .bc-m-o{animation:bc-k-gag3-mo 1400ms linear both}.bc.bc-gag-3 .bc-m-smirk{animation:bc-k-gag3-ms 1400ms linear both}.bc.bc-gag-3 .bc-blush-warm{animation:bc-k-gag3-bw 1400ms linear both}.bc.bc-gag-3 .bc-blush{animation:bc-k-gag3-b0 1400ms linear both}.bc.bc-snooze .bc-anim{animation:bc-k-sz-root 1800ms linear forwards}.bc.bc-snooze .bc-anim2{animation:bc-k-sz-breath 3400ms cubic-bezier(.45,.05,.55,.95) 1800ms infinite alternate}.bc.bc-snooze .bc-b-n{animation:bc-k-sz-fn 3400ms linear infinite}.bc.bc-snooze .bc-b-sq{animation:bc-k-sz-fsq 3400ms linear infinite}.bc.bc-snooze .bc-face{animation:bc-k-sz-face 3400ms linear infinite}.bc.bc-snooze .bc-lid-1{animation:bc-k-sz-l1 1800ms linear forwards}.bc.bc-snooze .bc-lid-2{animation:bc-k-sz-l2 1800ms linear forwards}.bc.bc-snooze .bc-lid-3{animation:bc-k-sz-l3 1800ms linear forwards}.bc.bc-snooze .bc-m-o{animation:bc-k-sz-mo 1800ms linear forwards}.bc.bc-snooze .bc-m-smirk{animation:bc-k-sz-ms 1800ms linear forwards}.bc.bc-snooze .bc-z1{animation:bc-k-sz-z 3000ms cubic-bezier(.45,.05,.55,.95) 2000ms infinite}.bc.bc-snooze .bc-z2{animation:bc-k-sz-z 3000ms cubic-bezier(.45,.05,.55,.95) 3500ms infinite}.bc.bc-wake .bc-b-n{animation:bc-k-wake-fn 420ms linear both}.bc.bc-wake .bc-b-sq{animation:bc-k-wake-fsq 420ms linear both}.bc.bc-wake .bc-b-st{animation:bc-k-wake-fst 420ms linear both}.bc.bc-wake .bc-face{animation:bc-k-wake-face 420ms linear both}.bc.bc-wake .bc-anim{animation:bc-k-wake-root 420ms linear both}.bc.bc-wake .bc-e-wide{animation:bc-k-wake-ew 420ms linear both}.bc.bc-wake .bc-e-n{animation:bc-k-wake-en 420ms linear both}.bc.bc-wake .bc-m-o{animation:bc-k-wake-mo 420ms linear both}.bc.bc-wake .bc-m-smirk{animation:bc-k-wake-ms 420ms linear both}.bc.bc-wake .bc-blush-warm{animation:bc-k-wake-bw 420ms linear both}.bc.bc-wake .bc-blush{animation:bc-k-wake-b0 420ms linear both}.bc.bc-hover-link .bc-b-n{animation:bc-k-hv-fn 200ms linear both}.bc.bc-hover-link .bc-b-lean{animation:bc-k-hv-lean 200ms linear both}.bc.bc-hover-link .bc-t-n{animation:bc-k-hv-tn 200ms linear both}.bc.bc-hover-link .bc-t-ext{animation:bc-k-hv-text 200ms linear both}.bc.bc-hover-link .bc-anim{animation:bc-k-hv-root 200ms linear both}.bc.bc-hover-link .bc-e-n{animation:bc-k-hv-eyes 200ms linear both}
/* accessibilite : tout coupe sauf la pose statique */
@media (prefers-reduced-motion:reduce){
  .bc *{animation:none!important;transition:none!important}
}
/* keyframes */
@keyframes bc-k-blink-l1{0%{opacity:1}24.80%{opacity:1}25.00%{opacity:0}58.13%{opacity:0}58.33%{opacity:1}81.05%{opacity:1}81.25%{opacity:0}100%{opacity:0}}@keyframes bc-k-blink-l3{0%{opacity:0}24.80%{opacity:0}25.00%{opacity:1}58.13%{opacity:1}58.33%{opacity:0}100%{opacity:0}}@keyframes bc-k-click-fn{0%{opacity:0}87.30%{opacity:0}87.50%{opacity:1}100%{opacity:1}}@keyframes bc-k-click-fsq{0%{opacity:0}69.80%{opacity:0}70.00%{opacity:1}87.30%{opacity:1}87.50%{opacity:0}100%{opacity:0}}@keyframes bc-k-click-fcl{0%{opacity:0}11.05%{opacity:0}11.25%{opacity:1}42.30%{opacity:1}42.50%{opacity:0}100%{opacity:0}}@keyframes bc-k-click-fst{0%{opacity:1}11.05%{opacity:1}11.25%{opacity:0}42.30%{opacity:0}42.50%{opacity:1}69.80%{opacity:1}70.00%{opacity:0}100%{opacity:0}}@keyframes bc-k-click-face{0%{transform:translate(0,1px)}11.05%{transform:translate(0,1px)}11.25%{transform:translate(0,-2px)}42.30%{transform:translate(0,-2px)}42.50%{transform:translate(0,1px)}69.80%{transform:translate(0,1px)}70.00%{transform:translate(0,-1px)}87.30%{transform:translate(0,-1px)}87.50%{transform:translate(0,0px)}100%{transform:translate(0,0px)}}@keyframes bc-k-click-root{0.00%{transform:rotate(0deg) translate(0px,0px);animation-timing-function:cubic-bezier(.19,.85,.36,1)}11.25%{transform:rotate(2.2deg) translate(0px,0.4px);animation-timing-function:cubic-bezier(.18,.89,.35,1.14)}27.50%{transform:rotate(-3.2deg) translate(0px,-0.2px);animation-timing-function:cubic-bezier(.18,.89,.35,1.14)}42.50%{transform:rotate(-2.2deg) translate(0px,0px);animation-timing-function:cubic-bezier(.42,0,.58,1)}57.50%{transform:rotate(1.8deg) translate(0px,0.2px);animation-timing-function:cubic-bezier(.18,.89,.35,1.14)}75.00%{transform:rotate(-0.7deg) translate(0px,0px);animation-timing-function:cubic-bezier(.42,0,.58,1)}100.00%{transform:rotate(0deg) translate(0px,0px);animation-timing-function:cubic-bezier(.19,.85,.36,1)}}@keyframes bc-k-click-lid2{0%{opacity:0}11.05%{opacity:0}11.25%{opacity:1}57.30%{opacity:1}57.50%{opacity:0}100%{opacity:0}}@keyframes bc-k-click-bw{0%{opacity:0}11.05%{opacity:0}11.25%{opacity:1}82.30%{opacity:1}82.50%{opacity:0}100%{opacity:0}}@keyframes bc-k-click-b0{0%{opacity:1}11.05%{opacity:1}11.25%{opacity:0}82.30%{opacity:0}82.50%{opacity:1}100%{opacity:1}}@keyframes bc-k-click-sp1{0%,10%{opacity:0;transform:translate(0,0)}11.25%{opacity:1;transform:translate(0,0);animation-timing-function:cubic-bezier(.19,.85,.36,1)}70%{opacity:0;transform:translate(-2.4px,-2.4px)}100%{opacity:0;transform:translate(-2.4px,-2.4px)}}@keyframes bc-k-click-sp2{0%,10%{opacity:0;transform:translate(0,0)}11.25%{opacity:1;transform:translate(0,0);animation-timing-function:cubic-bezier(.19,.85,.36,1)}70%{opacity:0;transform:translate(-3.2px,-0.6px)}100%{opacity:0;transform:translate(-3.2px,-0.6px)}}@keyframes bc-k-click-sp3{0%,10%{opacity:0;transform:translate(0,0)}11.25%{opacity:1;transform:translate(0,0);animation-timing-function:cubic-bezier(.19,.85,.36,1)}70%{opacity:0;transform:translate(0.6px,-3.0px)}100%{opacity:0;transform:translate(0.6px,-3.0px)}}@keyframes bc-k-gag-1-fn{0%{opacity:1}5.25%{opacity:1}5.45%{opacity:0}23.44%{opacity:0}23.64%{opacity:1}76.16%{opacity:1}76.36%{opacity:0}86.16%{opacity:0}86.36%{opacity:1}100%{opacity:1}}@keyframes bc-k-gag-1-fsq{0%{opacity:0}5.25%{opacity:0}5.45%{opacity:1}14.35%{opacity:1}14.55%{opacity:0}76.16%{opacity:0}76.36%{opacity:1}86.16%{opacity:1}86.36%{opacity:0}100%{opacity:0}}@keyframes bc-k-gag-1-fst{0%{opacity:0}14.35%{opacity:0}14.55%{opacity:1}23.44%{opacity:1}23.64%{opacity:0}100%{opacity:0}}@keyframes bc-k-gag-1-face{0%{transform:translate(0,0px)}5.25%{transform:translate(0,0px)}5.45%{transform:translate(0,-1px)}14.35%{transform:translate(0,-1px)}14.55%{transform:translate(0,1px)}23.44%{transform:translate(0,1px)}23.64%{transform:translate(0,0px)}76.16%{transform:translate(0,0px)}76.36%{transform:translate(0,-1px)}86.16%{transform:translate(0,-1px)}86.36%{transform:translate(0,0px)}100%{transform:translate(0,0px)}}@keyframes bc-k-gag-1-root{0.00%{transform:rotate(0deg) translate(0px,0px);animation-timing-function:cubic-bezier(.19,.85,.36,1)}5.45%{transform:rotate(1.6deg) translate(0px,0.4px);animation-timing-function:cubic-bezier(.19,.85,.36,1)}14.55%{transform:rotate(-7deg) translate(0px,-0.5px);animation-timing-function:cubic-bezier(.18,.89,.35,1.14)}27.27%{transform:rotate(6.2deg) translate(0px,0px);animation-timing-function:cubic-bezier(.18,.89,.35,1.14)}40.00%{transform:rotate(-4.8deg) translate(0px,0px);animation-timing-function:cubic-bezier(.18,.89,.35,1.14)}52.73%{transform:rotate(3.2deg) translate(0px,0px);animation-timing-function:cubic-bezier(.18,.89,.35,1.14)}63.64%{transform:rotate(-1.8deg) translate(0px,0px);animation-timing-function:cubic-bezier(.42,0,.58,1)}76.36%{transform:rotate(1.0deg) translate(0px,0.2px);animation-timing-function:cubic-bezier(.42,0,.58,1)}89.09%{transform:rotate(-0.4deg) translate(0px,0px);animation-timing-function:cubic-bezier(.42,0,.58,1)}100.00%{transform:rotate(0deg) translate(0px,0px);animation-timing-function:cubic-bezier(.19,.85,.36,1)}}@keyframes bc-k-gag1-mo{0%{opacity:0}14.35%{opacity:0}14.55%{opacity:1}68.89%{opacity:1}69.09%{opacity:0}100%{opacity:0}}@keyframes bc-k-gag1-bw{0%{opacity:0}12.53%{opacity:0}12.73%{opacity:1}86.16%{opacity:1}86.36%{opacity:0}100%{opacity:0}}@keyframes bc-k-gag1-ms{0%{opacity:1}14.35%{opacity:1}14.55%{opacity:0}68.89%{opacity:0}69.09%{opacity:1}100%{opacity:1}}@keyframes bc-k-gag1-b0{0%{opacity:1}12.53%{opacity:1}12.73%{opacity:0}86.16%{opacity:0}86.36%{opacity:1}100%{opacity:1}}@keyframes bc-k-gag1-l3{0%{opacity:0}86.16%{opacity:0}86.36%{opacity:1}93.44%{opacity:1}93.64%{opacity:0}100%{opacity:0}}@keyframes bc-k-gag-2-fn{0%{opacity:1}76.47%{opacity:1}76.67%{opacity:0}83.80%{opacity:0}84.00%{opacity:1}100%{opacity:1}}@keyframes bc-k-gag-2-fsq{0%{opacity:0}76.47%{opacity:0}76.67%{opacity:1}83.80%{opacity:1}84.00%{opacity:0}100%{opacity:0}}@keyframes bc-k-gag-2-face{0%{transform:translate(0,0px)}76.47%{transform:translate(0,0px)}76.67%{transform:translate(0,-1px)}83.80%{transform:translate(0,-1px)}84.00%{transform:translate(0,0px)}100%{transform:translate(0,0px)}}@keyframes bc-k-gag-2-root{0.00%{transform:rotate(0deg) translate(0px,0px);animation-timing-function:cubic-bezier(.42,0,.58,1)}20.00%{transform:rotate(2deg) translate(0px,0.1px);animation-timing-function:cubic-bezier(.45,.05,.55,.95)}40.00%{transform:rotate(1deg) translate(0px,0.3px);animation-timing-function:cubic-bezier(.45,.05,.55,.95)}60.00%{transform:rotate(-2deg) translate(0px,0.1px);animation-timing-function:cubic-bezier(.45,.05,.55,.95)}76.67%{transform:rotate(-1deg) translate(0px,0px);animation-timing-function:cubic-bezier(.42,0,.58,1)}90.00%{transform:rotate(0.4deg) translate(0px,0px);animation-timing-function:cubic-bezier(.42,0,.58,1)}100.00%{transform:rotate(0deg) translate(0px,0px);animation-timing-function:cubic-bezier(.42,0,.58,1)}}@keyframes bc-k-gag2-eyes{0.00%{transform:translate(0px,0px);animation-timing-function:cubic-bezier(.42,0,.58,1)}8.00%{transform:translate(0px,0px);animation-timing-function:cubic-bezier(.19,.85,.36,1)}13.33%{transform:translate(1px,-0.2px);animation-timing-function:cubic-bezier(.45,.05,.55,.95)}28.00%{transform:translate(1px,0.6px);animation-timing-function:cubic-bezier(.42,0,.58,1)}43.33%{transform:translate(0px,1px);animation-timing-function:cubic-bezier(.42,0,.58,1)}58.67%{transform:translate(-1px,0.6px);animation-timing-function:cubic-bezier(.42,0,.58,1)}70.67%{transform:translate(-1px,0px);animation-timing-function:cubic-bezier(.42,0,.58,1)}78.67%{transform:translate(0.3px,-0.1px);animation-timing-function:cubic-bezier(.18,.89,.35,1.14)}86.67%{transform:translate(0px,0px);animation-timing-function:cubic-bezier(.42,0,.58,1)}100.00%{transform:translate(0px,0px);animation-timing-function:cubic-bezier(.42,0,.58,1)}}@keyframes bc-k-gag2-mo{0%{opacity:0}26.47%{opacity:0}26.67%{opacity:1}69.80%{opacity:1}70.00%{opacity:0}100%{opacity:0}}@keyframes bc-k-gag2-l1{0%{opacity:0}75.80%{opacity:0}76.00%{opacity:1}78.47%{opacity:1}78.67%{opacity:0}100%{opacity:0}}@keyframes bc-k-gag2-l3{0%{opacity:0}78.47%{opacity:0}78.67%{opacity:1}83.80%{opacity:1}84.00%{opacity:0}100%{opacity:0}}@keyframes bc-k-gag2-l2{0%{opacity:0}83.80%{opacity:0}84.00%{opacity:1}87.13%{opacity:1}87.33%{opacity:0}100%{opacity:0}}@keyframes bc-k-gag2-ms{0%{opacity:1}26.47%{opacity:1}26.67%{opacity:0}69.80%{opacity:0}70.00%{opacity:1}100%{opacity:1}}@keyframes bc-k-gag-3-fn{0%{opacity:1}100%{opacity:1}}@keyframes bc-k-gag-3-face{0%{transform:translate(0,0px)}100%{transform:translate(0,0px)}}@keyframes bc-k-gag-3-root{0.00%{transform:rotate(0deg) translate(0px,0px);animation-timing-function:cubic-bezier(.19,.85,.36,1)}8.57%{transform:rotate(-3deg) translate(0px,0.3px);animation-timing-function:cubic-bezier(.19,.85,.36,1)}17.14%{transform:rotate(4.2deg) translate(0px,-0.2px);animation-timing-function:cubic-bezier(.18,.89,.35,1.14)}25.71%{transform:rotate(3.4deg) translate(0px,0px);animation-timing-function:cubic-bezier(.42,0,.58,1)}34.29%{transform:rotate(4.4deg) translate(0px,0px);animation-timing-function:cubic-bezier(.42,0,.58,1)}42.86%{transform:rotate(3.4deg) translate(0px,0px);animation-timing-function:cubic-bezier(.42,0,.58,1)}51.43%{transform:rotate(4.2deg) translate(0px,0px);animation-timing-function:cubic-bezier(.42,0,.58,1)}60.00%{transform:rotate(3.5deg) translate(0px,0px);animation-timing-function:cubic-bezier(.42,0,.58,1)}68.57%{transform:rotate(4deg) translate(0px,0px);animation-timing-function:cubic-bezier(.42,0,.58,1)}77.14%{transform:rotate(-1.4deg) translate(0px,0.2px);animation-timing-function:cubic-bezier(.18,.89,.35,1.14)}89.29%{transform:rotate(0.5deg) translate(0px,0px);animation-timing-function:cubic-bezier(.42,0,.58,1)}100.00%{transform:rotate(0deg) translate(0px,0px);animation-timing-function:cubic-bezier(.19,.85,.36,1)}}@keyframes bc-k-gag3-pup{0%{opacity:0}9.80%{opacity:0}10.00%{opacity:1}24.09%{opacity:1}24.29%{opacity:0}38.37%{opacity:0}38.57%{opacity:1}52.66%{opacity:1}52.86%{opacity:0}66.94%{opacity:0}67.14%{opacity:1}76.94%{opacity:1}77.14%{opacity:0}100%{opacity:0}}@keyframes bc-k-gag3-pdn{0%{opacity:0}24.09%{opacity:0}24.29%{opacity:1}38.37%{opacity:1}38.57%{opacity:0}52.66%{opacity:0}52.86%{opacity:1}66.94%{opacity:1}67.14%{opacity:0}100%{opacity:0}}@keyframes bc-k-gag3-eyes{0.00%{transform:translate(0px,0px);animation-timing-function:cubic-bezier(.42,0,.58,1)}10.00%{transform:translate(1px,0.1px);animation-timing-function:cubic-bezier(.45,.05,.55,.95)}75.00%{transform:translate(1px,0.1px);animation-timing-function:cubic-bezier(.42,0,.58,1)}89.29%{transform:translate(-0.2px,0px);animation-timing-function:cubic-bezier(.42,0,.58,1)}100.00%{transform:translate(0px,0px);animation-timing-function:cubic-bezier(.42,0,.58,1)}}@keyframes bc-k-gag3-mo{0%{opacity:0}12.66%{opacity:0}12.86%{opacity:1}74.80%{opacity:1}75.00%{opacity:0}100%{opacity:0}}@keyframes bc-k-gag3-bw{0%{opacity:0}9.80%{opacity:0}10.00%{opacity:1}89.09%{opacity:1}89.29%{opacity:0}100%{opacity:0}}@keyframes bc-k-gag3-ms{0%{opacity:1}12.66%{opacity:1}12.86%{opacity:0}74.80%{opacity:0}75.00%{opacity:1}100%{opacity:1}}@keyframes bc-k-gag3-b0{0%{opacity:1}9.80%{opacity:1}10.00%{opacity:0}89.09%{opacity:0}89.29%{opacity:1}100%{opacity:1}}@keyframes bc-k-sz-root{0.00%{transform:rotate(0deg) translate(0px,0px);animation-timing-function:cubic-bezier(.45,.05,.55,.95)}50.00%{transform:rotate(1.4deg) translate(0px,0.3px);animation-timing-function:cubic-bezier(.45,.05,.55,.95)}100.00%{transform:rotate(2.4deg) translate(0px,0.6px);animation-timing-function:cubic-bezier(.45,.05,.55,.95)}}@keyframes bc-k-sz-breath{0%{transform:rotate(0deg) translate(0,0)}100%{transform:rotate(.6deg) translate(0,.5px)}}@keyframes bc-k-sz-fn{0%{opacity:1}49.80%{opacity:1}50.00%{opacity:0}100%{opacity:0}}@keyframes bc-k-sz-fsq{0%{opacity:0}49.80%{opacity:0}50.00%{opacity:1}100%{opacity:1}}@keyframes bc-k-sz-face{0%{transform:translate(0,0px)}49.80%{transform:translate(0,0px)}50.00%{transform:translate(0,-1px)}100%{transform:translate(0,-1px)}}@keyframes bc-k-sz-l1{0%{opacity:0}22.02%{opacity:0}22.22%{opacity:1}44.24%{opacity:1}44.44%{opacity:0}100%{opacity:0}}@keyframes bc-k-sz-l2{0%{opacity:0}44.24%{opacity:0}44.44%{opacity:1}77.58%{opacity:1}77.78%{opacity:0}100%{opacity:0}}@keyframes bc-k-sz-l3{0%{opacity:0}77.58%{opacity:0}77.78%{opacity:1}100%{opacity:1}}@keyframes bc-k-sz-mo{0%{opacity:0}83.13%{opacity:0}83.33%{opacity:1}100%{opacity:1}}@keyframes bc-k-sz-ms{0%{opacity:1}83.13%{opacity:1}83.33%{opacity:0}100%{opacity:0}}@keyframes bc-k-sz-z{0%{opacity:0;transform:translate(0,0)}18%{opacity:.95;transform:translate(.5px,-1px)}45%{opacity:.8;transform:translate(-.4px,-2.6px)}75%{opacity:.45;transform:translate(1.3px,-4.2px)}100%{opacity:0;transform:translate(.6px,-5.8px)}}@keyframes bc-k-wake-fn{0%{opacity:0}59.32%{opacity:0}59.52%{opacity:1}100%{opacity:1}}@keyframes bc-k-wake-fsq{0%{opacity:0}30.75%{opacity:0}30.95%{opacity:1}59.32%{opacity:1}59.52%{opacity:0}100%{opacity:0}}@keyframes bc-k-wake-fst{0%{opacity:1}30.75%{opacity:1}30.95%{opacity:0}100%{opacity:0}}@keyframes bc-k-wake-face{0%{transform:translate(0,1px)}30.75%{transform:translate(0,1px)}30.95%{transform:translate(0,-1px)}59.32%{transform:translate(0,-1px)}59.52%{transform:translate(0,0px)}100%{transform:translate(0,0px)}}@keyframes bc-k-wake-root{0.00%{transform:rotate(2.4deg) translate(0px,0.6px);animation-timing-function:cubic-bezier(.19,.85,.36,1)}14.29%{transform:rotate(-4.5deg) translate(0px,-1px);animation-timing-function:cubic-bezier(.18,.89,.35,1.14)}33.33%{transform:rotate(-3deg) translate(0px,-0.5px);animation-timing-function:cubic-bezier(.42,0,.58,1)}54.76%{transform:rotate(1.8deg) translate(0px,0.3px);animation-timing-function:cubic-bezier(.18,.89,.35,1.14)}78.57%{transform:rotate(-0.6deg) translate(0px,0px);animation-timing-function:cubic-bezier(.42,0,.58,1)}100.00%{transform:rotate(0deg) translate(0px,0px);animation-timing-function:cubic-bezier(.19,.85,.36,1)}}@keyframes bc-k-wake-ew{0%{opacity:1}78.37%{opacity:1}78.57%{opacity:0}100%{opacity:0}}@keyframes bc-k-wake-en{0%{opacity:0}78.37%{opacity:0}78.57%{opacity:1}100%{opacity:1}}@keyframes bc-k-wake-mo{0%{opacity:1}56.94%{opacity:1}57.14%{opacity:0}100%{opacity:0}}@keyframes bc-k-wake-bw{0%{opacity:0}14.09%{opacity:0}14.29%{opacity:1}85.51%{opacity:1}85.71%{opacity:0}100%{opacity:0}}@keyframes bc-k-wake-ms{0%{opacity:0}56.94%{opacity:0}57.14%{opacity:1}100%{opacity:1}}@keyframes bc-k-wake-b0{0%{opacity:1}14.09%{opacity:1}14.29%{opacity:0}85.51%{opacity:0}85.71%{opacity:1}100%{opacity:1}}@keyframes bc-k-hv-fn{0%{opacity:1}49.80%{opacity:1}50.00%{opacity:0}100%{opacity:0}}@keyframes bc-k-hv-lean{0%{opacity:0}49.80%{opacity:0}50.00%{opacity:1}100%{opacity:1}}@keyframes bc-k-hv-tn{0%{opacity:1}49.80%{opacity:1}50.00%{opacity:0}100%{opacity:0}}@keyframes bc-k-hv-text{0%{opacity:0}49.80%{opacity:0}50.00%{opacity:1}100%{opacity:1}}@keyframes bc-k-hv-root{0.00%{transform:rotate(0deg) translate(0px,0px);animation-timing-function:cubic-bezier(.19,.85,.36,1)}45.00%{transform:rotate(1.4deg) translate(0px,0.35px);animation-timing-function:cubic-bezier(.18,.89,.35,1.14)}100.00%{transform:rotate(-1.6deg) translate(-0.3px,-0.25px);animation-timing-function:cubic-bezier(.42,0,.58,1)}}@keyframes bc-k-hv-eyes{0%,49.8%{transform:translate(0,0)}50%,100%{transform:translate(-1px,-.4px)}}

/* ============================================================
   SITE INTEGRATION — tomandrieu.com (blip-cursor.js)
   Everything above this line is the vendor cursor-kit, unmodified.
   ============================================================ */

/* Belt-and-suspenders: JS already gates activation on pointer type,
   reduced-motion and viewport width, but a stray resize/JS-timing gap
   should never leave a leftover cursor on screen. */
@media (pointer: coarse), (prefers-reduced-motion: reduce) {
  #blip-cursor { display: none !important; }
}
@media (max-width: 899px) {
  #blip-cursor { display: none !important; }
}

/* Discreet mode over native text fields: Blip stays on-screen (so the
   pointer never "disappears") but fades back while the browser's own
   caret/selection cursor does the actual work. */
#blip-cursor.bc-native {
  opacity: .32;
  transition: opacity 150ms ease;
}

/* Native cursor restored on top of the kit's `html.bc-active *{cursor:none}`
   for elements where a real system cursor communicates better than Blip:
   text fields get the caret, dropdowns get the default arrow. Higher
   specificity than the kit's blanket rule wins regardless of link order. */
html.bc-active input,
html.bc-active textarea,
html.bc-active [contenteditable]:not([contenteditable="false"]) {
  cursor: text !important;
}
html.bc-active select {
  cursor: default !important;
}

/* Neutralize the pre-existing per-theme cursors (terminal block cursor,
   blueprint crosshair, retro90s custom SVG arrow) while Blip is driving.
   Restored automatically the instant this class is removed on destroy(). */
body.blip-cursor-active .custom-cursor {
  display: none !important;
}

/* Wrapper du body language piloté par la vitesse (ressort JS) : pivote autour
   du hotspot (origine du root), n'interfère jamais avec les groupes du kit. */
.bc .bc-motion{transform-origin:0 0;will-change:transform}
