/* ===========================================================================
   Agent au travail — animation « snake » de bordure, PARTAGÉE /app + /admin.

   UNE seule définition de l'effet pour toutes les surfaces : la carte de la
   galerie, la gemme de l'en-tête du chat, la carte de la console admin. Aucune
   page ne redéfinit l'animation ; elles posent toutes la MÊME classe, et c'est
   `shared/agent_activity.js` (setWorking) qui la pose.

   Technique : un anneau en `conic-gradient` sur `::after`, découpé au masque
   (recette « bordure en dégradé »), dont l'angle de départ tourne en boucle —
   la lumière parcourt donc le contour, quel que soit le rayon de l'élément
   (`border-radius: inherit` suit aussi bien une carte qu'une gemme ronde).
   L'angle est une propriété enregistrée (`@property`) : sans elle un navigateur
   ancien n'interpole pas l'angle et affiche un arc FIXE — dégradation
   acceptable, l'agent reste visiblement signalé.

   Réglable par l'hôte sans toucher ce fichier :
   `--yumi-snake-color` (défaut : l'accent du thème), `--yumi-snake-width`,
   `--yumi-snake-speed`.
   =========================================================================== */

@property --yumi-snake-angle {
  syntax: "<angle>";
  initial-value: 0deg;
  inherits: false;
}

/* `position:relative` : l'anneau se place sur le contour de l'élément marqué.
   Les hôtes actuels sont déjà positionnés ou statiques — jamais absolus. */
.agent-working {
  position: relative;
}

.agent-working::after {
  content: "";
  position: absolute;
  inset: calc(-1 * var(--yumi-snake-width, 2px));
  border-radius: inherit;
  padding: var(--yumi-snake-width, 2px);
  background: conic-gradient(
    from var(--yumi-snake-angle),
    transparent 0turn,
    transparent 0.58turn,
    var(--yumi-snake-color, var(--accent, #6b4dff)) 0.79turn,
    #fff 0.83turn,
    var(--yumi-snake-color, var(--accent, #6b4dff)) 0.87turn,
    transparent 1turn
  );
  -webkit-mask: linear-gradient(#000 0 0) content-box, linear-gradient(#000 0 0);
  -webkit-mask-composite: xor;
  mask: linear-gradient(#000 0 0) content-box, linear-gradient(#000 0 0);
  mask-composite: exclude;
  animation: yumi-snake var(--yumi-snake-speed, 2.6s) linear infinite;
  pointer-events: none;
}

@keyframes yumi-snake {
  to {
    --yumi-snake-angle: 1turn;
  }
}

/* Mouvement réduit : on garde l'INFORMATION (l'agent travaille) et on retire le
   déplacement — anneau plein discret, aucune animation. */
@media (prefers-reduced-motion: reduce) {
  .agent-working::after {
    animation: none;
    background: var(--yumi-snake-color, var(--accent, #6b4dff));
    opacity: 0.5;
  }
}
