/* Curseur personnalisé (assets/curseur.js). Actif seulement quand le script pose html.has-curseur. */
.curseur { display: none; }
html.has-curseur .curseur {
	--c: var(--galactic);
	--c-fond: rgba(78, 108, 255, .14);
	--c-texte: #fff;
	display: block; position: fixed; left: 0; top: 0; z-index: 2147483000;
	pointer-events: none; opacity: 0; transition: opacity .25s var(--ease-out);
}
html.has-curseur .curseur.is-visible { opacity: 1; }
html.has-curseur .curseur.is-sombre { --c: var(--boreal); --c-fond: rgba(48, 213, 200, .16); --c-texte: var(--nuit-950); }

.curseur__point,
.curseur__suiveur { position: absolute; left: 0; top: 0; will-change: transform; }
.curseur__point::before {
	content: ''; position: absolute; width: .5rem; height: .5rem; margin: -.25rem 0 0 -.25rem; border-radius: 50%;
	background: var(--c); box-shadow: 0 0 0 1.5px rgba(255, 255, 255, .7);
	transition: transform .25s var(--ease-out), background-color .25s;
}
.curseur__anneau {
	position: absolute; width: 2.5rem; height: 2.5rem; margin: -1.25rem 0 0 -1.25rem; border-radius: 50%;
	border: 1.5px solid var(--c); background: transparent; opacity: .55;
	box-shadow: 0 0 0 1px rgba(255, 255, 255, .35);
	transition: transform .45s var(--ease-out), opacity .3s, background-color .3s, border-color .3s;
}
.curseur__libelle {
	position: absolute; left: 0; top: 0; translate: -50% -50%; white-space: nowrap;
	font: 700 .75rem/1 var(--f-sans); letter-spacing: .02em; color: var(--c-texte);
	opacity: 0; scale: .6; transition: opacity .2s, scale .35s var(--ease-out);
}

/* Lien, bouton : l'anneau s'agrandit et se teinte, le point reste pour la précision. */
.curseur.is-clic .curseur__anneau { transform: scale(1.5); opacity: 1; background: var(--c-fond); }
/* Carte : pastille pleine avec un libellé. */
.curseur.is-libelle .curseur__anneau { transform: scale(2.1); opacity: 1; background: var(--c); border-color: var(--c); }
.curseur.is-libelle .curseur__libelle { opacity: 1; scale: 1; }
.curseur.is-libelle .curseur__point::before { transform: scale(0); }
/* Appui. */
.curseur.is-appui .curseur__anneau { transform: scale(.8); }
.curseur.is-appui.is-clic .curseur__anneau { transform: scale(1.25); }
.curseur.is-appui.is-libelle .curseur__anneau { transform: scale(1.85); }
/* Champ de saisie, iframe : le curseur du système reprend la main. */
.curseur.is-saisie, .curseur.is-cache { opacity: 0 !important; }

/* Le curseur du système est masqué partout, sauf dans les champs de saisie et quand une fenêtre
   de dialogue est ouverte (elle s'affiche au-dessus de tout, curseur compris). */
html.has-curseur:not(:has(dialog[open])),
html.has-curseur:not(:has(dialog[open])) *:not(input, textarea, select, [contenteditable]) { cursor: none !important; }
html.has-curseur :is(input[type="checkbox"], input[type="radio"], input[type="submit"], input[type="button"], input[type="range"]) { cursor: none !important; }
html.has-curseur:has(dialog[open]) .curseur { opacity: 0 !important; }

/* L'ancien point (assets/webeco.js) est remplacé. */
html.has-curseur .cursor-dot { display: none !important; }
