#cxt-navigation-dock,
#cxt-navigation-dock *{box-sizing:border-box}
#cxt-navigation-dock{
  --cxt-nav-size:60px;
  --cxt-nav-gap:10px;
  --cxt-nav-purple:#2b0b4e;
  --cxt-nav-accent:#7643de;
  position:fixed;
  z-index:2147482500;
  left:12px;
  top:50%;
  top:50svh;
  top:var(--cxt-navigation-stable-top,50svh);
  transform:translateY(-50%);
  display:flex;
  flex-direction:column;
  align-items:center;
  gap:var(--cxt-nav-gap);
  padding:8px;
  overflow:visible;
  border:1px solid rgba(118,67,222,.16);
  border-radius:22px;
  background:rgba(31,0,74,.18);
  box-shadow:0 18px 55px rgba(25,0,60,.16);
  backdrop-filter:blur(14px);
  -webkit-backdrop-filter:blur(14px);
  scrollbar-width:none;
  font-family:Inter,system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;
}
#cxt-navigation-dock::-webkit-scrollbar{display:none}
.cxt-navigation-toggle{
  box-sizing:border-box;display:none;position:fixed;z-index:2147482501;
  top:var(--cxt-navigation-stable-top,50svh);left:var(--cxt-navigation-toggle-left,4px);right:auto;
  width:32px;height:52px;padding:0;align-items:center;justify-content:center;
  border:1px solid rgba(118,67,222,.28);border-left:0;border-radius:0 14px 14px 0;
  color:#2b0b4e;background:rgba(255,253,251,.98);box-shadow:8px 8px 24px rgba(39,31,29,.13);
  cursor:pointer;transform:translateY(-50%);transition:left .30s cubic-bezier(.22,1,.36,1);
  -webkit-tap-highlight-color:transparent;
}
.cxt-navigation-toggle svg{width:19px;height:19px;fill:none;stroke:currentColor;stroke-width:2.2;stroke-linecap:round;stroke-linejoin:round;transition:transform .24s ease}
.cxt-navigation-toggle:focus-visible{outline:3px solid rgba(118,67,222,.34);outline-offset:2px}
.cxt-navigation-tools,.cxt-navigation-universes{display:grid;gap:var(--cxt-nav-gap);justify-items:center}
.cxt-navigation-slot{position:relative;width:var(--cxt-nav-size);height:var(--cxt-nav-size);min-width:var(--cxt-nav-size);min-height:var(--cxt-nav-size)}
.cxt-navigation-slot:empty{display:none}
.cxt-navigation-separator{width:42px;height:2px;border-radius:99px;background:rgba(255,255,255,.22)}
.cxt-navigation-tools:not(:has(.cxt-navigation-slot:not(:empty))) + .cxt-navigation-separator{display:none}
.cxt-navigation-link{
  width:var(--cxt-nav-size);height:var(--cxt-nav-size);min-width:var(--cxt-nav-size);min-height:var(--cxt-nav-size);
  display:flex;flex-direction:column;align-items:center;justify-content:center;gap:3px;
  padding:6px;border:1px solid rgba(43,11,78,.14);border-radius:16px;
  color:var(--cxt-nav-purple);background:rgba(255,253,251,.98);text-decoration:none!important;
  box-shadow:0 12px 34px rgba(39,31,29,.14);backdrop-filter:blur(10px);
  transition:transform .18s ease,box-shadow .18s ease,border-color .18s ease,background .18s ease;
}
.cxt-navigation-link:hover{transform:translateY(-1px);border-color:rgba(118,67,222,.4);box-shadow:0 15px 38px rgba(39,31,29,.18);background:#fff}
.cxt-navigation-link:focus-visible{outline:3px solid rgba(118,67,222,.32);outline-offset:3px}
.cxt-navigation-link svg{width:25px;height:25px;fill:none;stroke:currentColor;stroke-width:1.9;stroke-linecap:round;stroke-linejoin:round}
.cxt-navigation-link span{display:block;max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:8px;line-height:1;font-weight:900;letter-spacing:.035em}
.cxt-navigation-link[hidden]{display:none!important}

/* CXT Live reste propriétaire de son bouton/panneau. Le dock ne change que son ancrage. */
#cxt-navigation-dock [data-cxt-navigation-slot="live"] #cxt-live-root,
#cxt-live-root.is-cxt-navigation-docked{
  position:relative!important;left:auto!important;right:auto!important;top:auto!important;bottom:auto!important;
  width:var(--cxt-nav-size)!important;height:var(--cxt-nav-size)!important;transform:none!important;margin:0!important;
  z-index:2147482000!important;visibility:visible!important;
}
#cxt-navigation-dock #cxt-live-root .cxt-live-tab,
#cxt-live-root.is-cxt-navigation-docked .cxt-live-tab{
  position:absolute!important;inset:0!important;left:0!important;right:auto!important;top:0!important;bottom:auto!important;
  width:var(--cxt-nav-size)!important;height:var(--cxt-nav-size)!important;min-height:var(--cxt-nav-size)!important;transform:none!important;
}
#cxt-navigation-dock #cxt-live-root .cxt-live-panel,
#cxt-live-root.is-cxt-navigation-docked .cxt-live-panel{left:calc(var(--cxt-nav-size) + 10px)!important;right:auto!important}

/* CXT Consent garde son modal et sa logique. Le FAB devient simplement un enfant du slot. */
#cxt-navigation-dock #cxt-consent-fab,
#cxt-consent-fab.is-cxt-navigation-docked{
  position:relative!important;left:auto!important;right:auto!important;top:auto!important;bottom:auto!important;transform:none!important;
  width:var(--cxt-nav-size)!important;height:var(--cxt-nav-size)!important;margin:0!important;
  z-index:2147482900!important;
}


/* CXT Pulse reste propriétaire de ses avis, réactions, iframe et logique d'ouverture.
   Seul un Pulse flottant réellement rendu (donc actif et attaché à la page) est docké. */
#cxt-navigation-dock [data-cxt-navigation-slot="pulse"] .cxt-pulse-host--floating,
.cxt-pulse-host--floating.is-cxt-navigation-docked{
  position:relative!important;left:auto!important;right:auto!important;top:auto!important;bottom:auto!important;
  width:var(--cxt-nav-size)!important;height:var(--cxt-nav-size)!important;transform:none!important;margin:0!important;
  z-index:2147482000!important;visibility:visible!important;opacity:1!important;
}
#cxt-navigation-dock [data-cxt-navigation-slot="pulse"] .cxt-pulse-launcher,
.cxt-pulse-host--floating.is-cxt-navigation-docked .cxt-pulse-launcher{
  position:absolute!important;inset:0!important;
  width:var(--cxt-nav-size)!important;height:var(--cxt-nav-size)!important;
  border-radius:16px!important;
}
#cxt-navigation-dock [data-cxt-navigation-slot="pulse"] .cxt-pulse-popover,
.cxt-pulse-host--floating.is-cxt-navigation-docked .cxt-pulse-popover{
  z-index:2147482950!important;
}

/* 0.1.7 — sous 1600 px, le dock se replie hors du contenu pour ne plus masquer les textes.
   Un onglet reste toujours visible. Sur pointeur précis, le survol ressort le dock ;
   sur tactile/clavier, le bouton assure le même accès. */
@media(max-width:1600px){
  #cxt-navigation-dock{
    transition:transform .26s cubic-bezier(.22,1,.36,1),box-shadow .18s ease;
    will-change:transform;
  }
  /* 0.1.14 — état de premier rendu : déjà replié et sans animation.
     Le JS ajoute .is-cxt-navigation-initialized seulement après avoir calculé
     l'état responsive, ce qui supprime le flash « ouvert puis fermé ». */
  #cxt-navigation-dock:not(.is-cxt-navigation-initialized){
    transform:translate3d(calc(-100% - 10px),-50%,0);
    transition:none!important;
  }
  .cxt-navigation-toggle{display:flex}
  #cxt-navigation-dock:not(.is-cxt-navigation-initialized) + .cxt-navigation-toggle{
    opacity:0;pointer-events:none;transition:none!important;
  }
  #cxt-navigation-dock.is-cxt-navigation-collapsed{
    transform:translate3d(calc(-100% - 10px),-50%,0);
    box-shadow:0 10px 30px rgba(25,0,60,.10);
  }
  #cxt-navigation-dock.is-cxt-navigation-collapsed + .cxt-navigation-toggle svg{transform:rotate(180deg)}
  @media(hover:hover) and (pointer:fine){
    #cxt-navigation-dock.is-cxt-navigation-collapsed:hover,
    #cxt-navigation-dock.is-cxt-navigation-collapsed:focus-within{
      transform:translate3d(0,-50%,0);
    }
    #cxt-navigation-dock.is-cxt-navigation-collapsed:hover .cxt-navigation-toggle svg,
    #cxt-navigation-dock.is-cxt-navigation-collapsed:focus-within .cxt-navigation-toggle svg{transform:none}
  }
}

@media(max-width:700px){
  #cxt-navigation-dock{--cxt-nav-size:54px;--cxt-nav-gap:7px;left:7px;padding:6px;border-radius:18px}
  .cxt-navigation-link{border-radius:15px;padding:5px}.cxt-navigation-link svg{width:23px;height:23px}.cxt-navigation-link span{font-size:7px}
  .cxt-navigation-separator{width:36px}
}

/* 0.1.13 — le dock mobile ET sa flèche partagent le même centre fixe.
   Le centre est ancré depuis le bas avec une valeur verrouillée par orientation.
   Le dock utilise translateY(50%) depuis ce même centre : sa hauteur peut varier
   selon le site ou les outils présents sans jamais se désaligner verticalement de la flèche. */
@media(max-width:720px),(pointer:coarse){
  #cxt-navigation-dock{
    top:auto!important;
    bottom:var(--cxt-navigation-stable-center-bottom,50svh)!important;
    transform:translate3d(0,50%,0)!important;
  }
  #cxt-navigation-dock:not(.is-cxt-navigation-initialized){
    transform:translate3d(calc(-100% - 10px),50%,0)!important;
  }
  #cxt-navigation-dock.is-cxt-navigation-collapsed{
    transform:translate3d(calc(-100% - 10px),50%,0)!important;
  }
  @media(hover:hover) and (pointer:fine){
    #cxt-navigation-dock.is-cxt-navigation-collapsed:hover,
    #cxt-navigation-dock.is-cxt-navigation-collapsed:focus-within{
      transform:translate3d(0,50%,0)!important;
    }
  }
  .cxt-navigation-toggle{
    top:auto!important;
    bottom:var(--cxt-navigation-toggle-stable-bottom,calc(50svh - 26px))!important;
    transform:none!important;
  }
}
#cxt-navigation-dock.is-cxt-navigation-low-height{--cxt-nav-size:50px;--cxt-nav-gap:5px;padding:5px}
#cxt-navigation-dock.is-cxt-navigation-low-height .cxt-navigation-link svg{width:21px;height:21px}
#cxt-navigation-dock.is-cxt-navigation-low-height .cxt-navigation-link span{font-size:7px}
@media(prefers-reduced-motion:reduce){#cxt-navigation-dock,.cxt-navigation-link,.cxt-navigation-toggle svg{transition:none}}

#cxt-navigation-dock.is-cxt-navigation-tiny-height{--cxt-nav-size:42px;--cxt-nav-gap:3px;padding:4px;left:4px;border-radius:14px}
#cxt-navigation-dock.is-cxt-navigation-tiny-height .cxt-navigation-link{padding:3px;border-radius:12px}
#cxt-navigation-dock.is-cxt-navigation-tiny-height .cxt-navigation-link svg{width:18px;height:18px}
#cxt-navigation-dock.is-cxt-navigation-tiny-height .cxt-navigation-link span{font-size:6px}
#cxt-navigation-dock.is-cxt-navigation-tiny-height .cxt-navigation-separator{width:30px}
