/*!
 * NIK / DRIN — Cursore luminoso · CSS
 * Il pallino sostituisce la freccia di sistema solo quando lo script è attivo
 * (classe .ndc-active su <html>). Se il JS non parte, resta il cursore normale.
 */

/* ── 1. Colori ───────────────────────────────────────────────────────────
   --awb-color1 / 4 / 5 / 7 = posizioni 1 (bianco), 4 ("Nik"), 5 ("Drin") e 7 (antracite)
   della palette globale di Avada. I valori dopo la virgola sono gli HEX ufficiali
   delle Fondamenta, usati solo se la variabile Avada non esiste.            */
:root {
  --ndc-nik: var(--awb-color4, #CD3661);
  --ndc-drin: var(--awb-color5, #35A8CC);
  --ndc-neutral: var(--awb-color7, #3D3D3D); /* antracite: sezioni chiare */
  --ndc-white: var(--awb-color1, #FFFFFF);
  --ndc-neutral-dark: var(--ndc-white);   /* bianco: sezioni scure (.ndc-dark) */

  /* Colore del testo delle etichette, scelto per il contrasto */
  --ndc-nik-ink: var(--ndc-white);
  --ndc-drin-ink: var(--ndc-white);
  --ndc-neutral-ink: var(--ndc-white);
  --ndc-neutral-dark-ink: var(--ndc-neutral);

  /* Bordo del pallino, come il contorno del cursore classico:
     bianco sui pallini colorati, antracite sul pallino bianco */
  --ndc-ring: var(--ndc-white);
  --ndc-ring-dark: var(--ndc-neutral);
  --ndc-ring-width: 1.5px;

  /* Valori regolabili dalla pagina Impostazioni › Cursore DRIN/NIK.
     Qui ci sono i predefiniti; il plugin li sovrascrive con quelli salvati. */
  --ndc-dot-size: 12px;
  --ndc-hover-scale: 1.4;        /* ingrandimento sopra link e pulsanti */
  --ndc-hover-opacity: .85;
  --ndc-down-scale: .75;         /* click fuori dai link */
  --ndc-hover-down-scale: 1.15;  /* click su un link */
  --ndc-anim-ms: 160ms;
  --ndc-ring-rest: 0px;          /* bordo a riposo */
  --ndc-ring-hover: var(--ndc-ring-width);
  --ndc-shadow-rest: 0%;         /* ombra a riposo */
  --ndc-shadow-hover: 55%;
  --ndc-glow-size: 12px;         /* alone luminoso */
  --ndc-glow-strength: 30%;

  /* Anello tratteggiato (stile hover predefinito) */
  --ndc-orbit-size: 34px;        /* diametro dell'anello */
  --ndc-orbit-stroke: 1.5px;     /* spessore del tratteggio */
  --ndc-orbit-dot: 4px;          /* pallino centrale */

  --ndc-label-font: inherit;
  --ndc-label-size: 11px;
  --ndc-label-weight: 700;
  --ndc-label-spacing: .02em;
  --ndc-label-transform: none;
  --ndc-label-pad-y: 5px;
  --ndc-label-pad-x: 10px;
  --ndc-label-radius: 3px;
  --ndc-label-max: 250px;
}

/* ── 2. Nasconde la freccia di sistema ───────────────────────────────────
   Le aree escluse (campi di testo, .ndc-native) e tutto il loro contenuto
   non ricevono "cursor:none": lì il browser usa i suoi cursori normali.    */
html.ndc-active,
html.ndc-active *:not(:is(
  textarea,
  [contenteditable]:not([contenteditable="false"]),
  input:not([type="button"]):not([type="submit"]):not([type="reset"]):not([type="checkbox"]):not([type="radio"]):not([type="range"]):not([type="color"]):not([type="file"]):not([type="image"]),
  .ndc-native, [data-cursor="native"]
), :is(.ndc-native, [data-cursor="native"]) *),
html.ndc-active *:not(:is(.ndc-native, [data-cursor="native"]), :is(.ndc-native, [data-cursor="native"]) *)::before,
html.ndc-active *:not(:is(.ndc-native, [data-cursor="native"]), :is(.ndc-native, [data-cursor="native"]) *)::after {
  cursor: none !important;
}

/* Il cursore si eredita: l'area esclusa riparte da "auto", così non eredita
   il "none" della pagina (era il motivo per cui non si vedeva nulla). */
html.ndc-active :is(
  textarea,
  [contenteditable]:not([contenteditable="false"]),
  input:not([type="button"]):not([type="submit"]):not([type="reset"]):not([type="checkbox"]):not([type="radio"]):not([type="range"]):not([type="color"]):not([type="file"]):not([type="image"])
) {
  cursor: text;
}
html.ndc-active :is(.ndc-native, [data-cursor="native"]) {
  cursor: auto;
}

/* ── 3. Elementi del cursore ───────────────────────────────────────────── */
#nikdrin-cursor {
  position: fixed;
  top: 0;
  left: 0;
  width: 0;
  height: 0;
  z-index: 2147483647;
  pointer-events: none !important;
  user-select: none;
  -webkit-user-select: none;
  opacity: 0;
  color: var(--ndc-neutral);
  will-change: transform;
  transition: opacity 120ms ease, color 155ms linear;
}
#nikdrin-cursor.ndc-visible { opacity: 1; }

#nikdrin-cursor[data-tone="nik"]          { color: var(--ndc-nik); }
#nikdrin-cursor[data-tone="drin"]         { color: var(--ndc-drin); }
#nikdrin-cursor[data-tone="neutral-dark"] { color: var(--ndc-neutral-dark); --ndc-ring: var(--ndc-ring-dark); }

/* Scia (canvas 216×216 centrato sul pallino) */
#nikdrin-cursor .ndc-trail {
  position: absolute;
  left: -108px;
  top: -108px;
  width: 216px;
  height: 216px;
  opacity: 0;
}

/* Pallino: il suo centro è il punto esatto del click */
#nikdrin-cursor .ndc-dot {
  position: absolute;
  left: 0;
  top: 0;
  width: var(--ndc-dot-size);
  height: var(--ndc-dot-size);
  border-radius: 50%;
  translate: -50% -50%;
  background: currentColor;
  /* bordo + ombra (come il cursore classico) + alone luminoso */
  box-shadow:
    0 0 0 var(--ndc-ring-rest) var(--ndc-ring),
    0 1px 3px 1px color-mix(in srgb, var(--ndc-neutral) var(--ndc-shadow-rest), transparent),
    0 0 var(--ndc-glow-size) color-mix(in srgb, currentColor var(--ndc-glow-strength), transparent);
  transition: scale var(--ndc-anim-ms) ease, opacity var(--ndc-anim-ms) ease, box-shadow var(--ndc-anim-ms) ease,
    width var(--ndc-anim-ms) ease, height var(--ndc-anim-ms) ease;
}
/* Sopra link e pulsanti il pallino si ingrandisce (sostituisce la "manina") */
#nikdrin-cursor.ndc-hover .ndc-dot {
  scale: var(--ndc-hover-scale);
  opacity: var(--ndc-hover-opacity);
  box-shadow:
    0 0 0 var(--ndc-ring-hover) var(--ndc-ring),
    0 1px 3px 1px color-mix(in srgb, var(--ndc-neutral) var(--ndc-shadow-hover), transparent),
    0 0 var(--ndc-glow-size) color-mix(in srgb, currentColor var(--ndc-glow-strength), transparent);
}
#nikdrin-cursor.ndc-down .ndc-dot              { scale: var(--ndc-down-scale); }
#nikdrin-cursor.ndc-hover.ndc-down .ndc-dot    { scale: var(--ndc-hover-down-scale); }

/* Stile "anello": sopra link e pulsanti il pallino si riduce a un punto
   circondato da un anello tratteggiato che gira. Forma, rotazione, click e
   animazione di entrata/uscita sono gestiti dallo script (interrompibili). */
#nikdrin-cursor .ndc-orbit {
  display: none;
  position: absolute;
  left: 0;
  top: 0;
  width: var(--ndc-orbit-size);
  height: var(--ndc-orbit-size);
  translate: -50% -50%;
  opacity: 0;
}
#nikdrin-cursor.ndc-style-orbit .ndc-orbit { display: block; }
#nikdrin-cursor .ndc-orbit svg {
  display: block;
  width: 100%;
  height: 100%;
  overflow: visible;
}
#nikdrin-cursor .ndc-orbit circle {
  fill: none;
  stroke: currentColor;
}

/* In questo stile il pallino non usa ingrandimento, bordo e ombra */
#nikdrin-cursor.ndc-style-orbit .ndc-dot {
  transition: opacity var(--ndc-anim-ms) ease, scale var(--ndc-anim-ms) ease;
}
#nikdrin-cursor.ndc-style-orbit.ndc-hover .ndc-dot,
#nikdrin-cursor.ndc-style-orbit.ndc-hover.ndc-down .ndc-dot {
  scale: 1;
  opacity: 1;
  box-shadow:
    0 0 0 0 var(--ndc-ring),
    0 0 0 0 transparent,
    0 0 var(--ndc-glow-size) color-mix(in srgb, currentColor var(--ndc-glow-strength), transparent);
}

/* Etichetta */
#nikdrin-cursor .ndc-label {
  position: absolute;
  left: 0;
  top: 0;
  max-width: var(--ndc-label-max);
  padding: var(--ndc-label-pad-y) var(--ndc-label-pad-x);
  border-radius: var(--ndc-label-radius);
  background: currentColor;
  font-family: var(--ndc-label-font);   /* inherit = tipografia del sito */
  font-size: var(--ndc-label-size);
  font-weight: var(--ndc-label-weight);
  line-height: 1.5;
  letter-spacing: var(--ndc-label-spacing);
  text-transform: var(--ndc-label-transform);
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
  opacity: 0;
  translate: 0 3px;
  transition: opacity 110ms ease, translate 110ms ease;
}
#nikdrin-cursor .ndc-label span { color: var(--ndc-neutral-ink); }
#nikdrin-cursor[data-tone="nik"] .ndc-label span          { color: var(--ndc-nik-ink); }
#nikdrin-cursor[data-tone="drin"] .ndc-label span         { color: var(--ndc-drin-ink); }
#nikdrin-cursor[data-tone="neutral-dark"] .ndc-label span { color: var(--ndc-neutral-dark-ink); }
#nikdrin-cursor.ndc-has-label .ndc-label { opacity: 1; translate: 0 0; }

/* ── 4. Sicurezza: niente effetto su touch, senza hover o in stampa ─────── */
@media (hover: none), (pointer: coarse), (prefers-reduced-motion: reduce), print {
  #nikdrin-cursor { display: none !important; }
}
