/* Blindo Cursor
 *
 * Il sito ha una regola globale `*, ::before, ::after { cursor: none !important }`.
 * Qui il cursore di sistema torna visibile in tutti i casi in cui quello
 * disegnato non è attivo (classe `blc-on` assente su <html>), e viene nascosto
 * solo mentre quello disegnato sta davvero seguendo il mouse.
 */

/* Il vecchio cursore del sito viene sostituito da questo. */
#blindo-cursor {
	display: none !important;
}

/* 1. Cursore di sistema visibile quando quello disegnato non è attivo. */
html:not(.blc-on),
html:not(.blc-on) *,
html:not(.blc-on) *::before,
html:not(.blc-on) *::after {
	cursor: revert !important;
}

html:not(.blc-on) a[href],
html:not(.blc-on) a[href] *,
html:not(.blc-on) button:not(:disabled),
html:not(.blc-on) button:not(:disabled) *,
html:not(.blc-on) [role="button"],
html:not(.blc-on) [role="button"] *,
html:not(.blc-on) summary,
html:not(.blc-on) label,
html:not(.blc-on) select,
html:not(.blc-on) input[type="submit"]:not(:disabled),
html:not(.blc-on) input[type="button"]:not(:disabled),
html:not(.blc-on) input[type="checkbox"],
html:not(.blc-on) input[type="radio"],
html:not(.blc-on) input[type="file"],
html:not(.blc-on) [onclick],
html:not(.blc-on) .blindo-service-card,
html:not(.blc-on) .blindo-service-card * {
	cursor: pointer !important;
}

html:not(.blc-on) :disabled,
html:not(.blc-on) [aria-disabled="true"] {
	cursor: not-allowed !important;
}

/* 2. Cursore disegnato attivo: quello di sistema è nascosto… */
html.blc-on,
html.blc-on *,
html.blc-on *::before,
html.blc-on *::after {
	cursor: none !important;
}

/* …tranne dove serve vedere il punto di inserimento del testo. */
html.blc-on input:not([type]),
html.blc-on input[type="text"],
html.blc-on input[type="email"],
html.blc-on input[type="tel"],
html.blc-on input[type="url"],
html.blc-on input[type="search"],
html.blc-on input[type="password"],
html.blc-on input[type="number"],
html.blc-on input[type="date"],
html.blc-on textarea,
html.blc-on [contenteditable="true"],
html.blc-on [contenteditable="true"] * {
	cursor: text !important;
}

html.blc-on select,
html.blc-on option {
	cursor: pointer !important;
}

/* 3. Il cursore disegnato: figlio diretto di <body>, sopra a tutto. */
#blc-cursor {
	position: fixed;
	top: 0;
	left: 0;
	z-index: 2147483647;
	width: 0;
	height: 0;
	pointer-events: none;
	opacity: 0;
	transition: opacity 0.15s ease;
	contain: layout style;
}

html.blc-on #blc-cursor.blc-visible {
	opacity: 1;
}

#blc-cursor .blc-dot,
#blc-cursor .blc-ring {
	position: absolute;
	top: 0;
	left: 0;
	border-radius: 50%;
	pointer-events: none;
	will-change: transform;
}

#blc-cursor .blc-dot {
	width: var(--blc-dot, 8px);
	height: var(--blc-dot, 8px);
	margin: calc(var(--blc-dot, 8px) / -2) 0 0 calc(var(--blc-dot, 8px) / -2);
	background: var(--blc-color, #00c8ff);
}

/* L'anello ha un elemento interno, così lo spostamento (fuori) e
   l'ingrandimento al passaggio (dentro) non si disturbano. */
#blc-cursor .blc-ring {
	width: var(--blc-ring, 36px);
	height: var(--blc-ring, 36px);
	margin: calc(var(--blc-ring, 36px) / -2) 0 0 calc(var(--blc-ring, 36px) / -2);
}

#blc-cursor .blc-ring-inner {
	display: block;
	box-sizing: border-box;
	width: 100%;
	height: 100%;
	border: 1.5px solid rgba(var(--blc-rgb, 0, 200, 255), 0.5);
	border-radius: 50%;
	background: transparent;
	transition: transform 0.15s ease, border-color 0.2s ease, background-color 0.2s ease;
}

#blc-cursor.blc-hover .blc-ring-inner {
	transform: scale(1.8);
	border-color: var(--blc-color, #00c8ff);
	background-color: rgba(var(--blc-rgb, 0, 200, 255), 0.07);
}

#blc-cursor.blc-down .blc-ring-inner {
	transform: scale(0.8);
}

#blc-cursor.blc-hover.blc-down .blc-ring-inner {
	transform: scale(1.5);
}

@media (prefers-reduced-motion: reduce) {
	#blc-cursor,
	#blc-cursor .blc-ring-inner {
		transition: none;
	}
}

@media print {
	#blc-cursor {
		display: none !important;
	}
}
