/* Graphen Studio — curseur du site

   La flèche de Windows, corps noir, liseré blanc d'un pixel, angles à peine
   arrondis ; elle se change en loupe sur les cartes cliquables. Le dessin
   animé est posé par curseur.js, qui masque alors le curseur système
   (classe curseur-anime, ajoutée au premier mouvement de la souris).

   Les fichiers de assets/img/curseurs/, tirés du même dessin, servent de
   repli : avant le premier mouvement, sans script, et dans le plein écran du
   film de Création de contenu, où rien ne peut passer au-dessus de la vidéo.
   La première déclaration sert aux navigateurs qui ignorent image-set ici. */

html {
  cursor: url(/assets/img/curseurs/fleche.svg) 1 1, default;
  cursor: -webkit-image-set(url(/assets/img/curseurs/fleche.svg) 1x, url(/assets/img/curseurs/fleche@2x.png) 2x) 1 1, default;
}

html.curseur-anime,
html.curseur-anime * { cursor: none !important; }

/* Champs de saisie : le curseur texte du système, le seul qui montre où l'on
   va écrire ; le dessin s'efface (is-texte). */
html.curseur-anime :is(input:not([type="button"], [type="submit"], [type="reset"], [type="checkbox"], [type="radio"], [type="range"], [type="file"], [type="color"]), textarea, [contenteditable=""], [contenteditable="true"]) {
  cursor: text !important;
}

.curseur {
  position: fixed;
  top: 0;
  left: 0;
  z-index: 2147483647;
  pointer-events: none;
  opacity: 0;
  will-change: transform;
  /* l'ombre discrète du pointeur de Windows */
  filter: drop-shadow(0 1px 1px rgb(0 0 0 / .2));
}
.curseur.is-visible { opacity: 1; }
.curseur.is-texte { opacity: 0; }
.curseur svg { position: absolute; left: -6px; top: -6px; display: block; }
.curseur__fond { fill: #000; stroke: #fff; stroke-linejoin: round; }
.curseur__trait { fill: none; stroke: #000; }
.curseur__halo-manche,
.curseur__manche { fill: none; stroke-linecap: round; }
.curseur__halo-manche { stroke: #fff; stroke-width: 3.5; }
.curseur__manche { stroke: #000; stroke-width: 1.5; }

@media (hover: none), (pointer: coarse) {
  .curseur { display: none; }
}
