/*
 * SG Zeiger – Mauszeiger „Kupferstich“ für sg-owl.de
 * Eigene Zeiger nur für Standard, Link und „Lädt“. Text und Felder behalten den I-Balken.
 * Nur mit Maus/Trackpad, nicht bei erzwungenen Farben oder „Mehr Kontrast“,
 * nicht wenn jemand im Footer „Normaler Mauszeiger“ gewählt hat (html.sg-system-cursor).
 * Reihenfolge der cursor-Zeilen: einfache URL → -webkit-image-set → image-set (Browser nimmt die letzte, die er versteht).
 */
@media (hover: hover) and (pointer: fine) and (forced-colors: none) and (prefers-contrast: no-preference) {

	/* Standard: Pfeil */
	html:not(.sg-system-cursor) body.sg-zeiger {
		cursor: url("zeiger.svg") 3 2, auto;
		cursor: -webkit-image-set(url("zeiger.svg") 1x, url("zeiger@2x.svg") 2x) 3 2, auto;
		cursor: image-set(url("zeiger.svg") 1x, url("zeiger@2x.svg") 2x) 3 2, auto;
	}

	/* Klickbar: Zeigehand */
	html:not(.sg-system-cursor) body.sg-zeiger :is(a[href], button, summary, label[for], [role="button"], [role="switch"], [role="tab"],
		input[type="submit"], input[type="button"], input[type="reset"], input[type="checkbox"], input[type="radio"],
		.leaflet-interactive, .leaflet-marker-icon) {
		cursor: url("hand.svg") 13 2, pointer;
		cursor: -webkit-image-set(url("hand.svg") 1x, url("hand@2x.svg") 2x) 13 2, pointer;
		cursor: image-set(url("hand.svg") 1x, url("hand@2x.svg") 2x) 13 2, pointer;
	}

	/* Lesetext: I-Balken (Text markieren, z. B. Adresse oder Rezept kopieren) – nicht innerhalb von Links und Buttons */
	html:not(.sg-system-cursor) body.sg-zeiger :is(p, li, h1, h2, h3, h4, h5, h6, blockquote, dd, dt, td, th, figcaption, address):not(a *, button *, label *, summary *, [role="button"] *) {
		cursor: text;
	}

	/* Eingabefelder: immer I-Balken */
	html:not(.sg-system-cursor) body.sg-zeiger :is(input:not([type="checkbox"], [type="radio"], [type="submit"], [type="button"], [type="reset"], [type="range"], [type="color"], [type="file"], [type="image"]), textarea, [contenteditable="true"]) {
		cursor: text;
	}

	/* Verlässt die Seite: Zeigehand mit Pfeil ↗ (Klasse setzt sg-zeiger.js an Links auf fremde Domains).
	   Nur Zugabe für Maus – sichtbar bleibt das ↗ am Link selbst (Icon-Regel), Screenreader hören „(neues Fenster)“ */
	html:not(.sg-system-cursor) body.sg-zeiger a.sg-extern[href] {
		cursor: url("extern.svg") 13 2, pointer;
		cursor: -webkit-image-set(url("extern.svg") 1x, url("extern@2x.svg") 2x) 13 2, pointer;
		cursor: image-set(url("extern.svg") 1x, url("extern@2x.svg") 2x) 13 2, pointer;
	}

	/* Gesperrt: Halteschild (Pfeil + Schild auf dem Pfahl), entspricht „not-allowed“ */
	html:not(.sg-system-cursor) body.sg-zeiger :is(:disabled, [aria-disabled="true"], .button.disabled, .disabled > a) {
		cursor: url("halt.svg") 3 2, not-allowed !important;
		cursor: -webkit-image-set(url("halt.svg") 1x, url("halt@2x.svg") 2x) 3 2, not-allowed !important;
		cursor: image-set(url("halt.svg") 1x, url("halt@2x.svg") 2x) 3 2, not-allowed !important;
	}

	/* Lädt (Produkt wandert in den Warenkorb): Gärglas – Seite bleibt bedienbar, daher „progress“, nicht „wait“ */
	html:not(.sg-system-cursor) body.sg-zeiger.sg-zeiger-busy,
	html:not(.sg-system-cursor) body.sg-zeiger.sg-zeiger-busy * {
		cursor: url("gaerglas.svg") 3 2, progress !important;
		cursor: -webkit-image-set(url("gaerglas.svg") 1x, url("gaerglas@2x.svg") 2x) 3 2, progress !important;
		cursor: image-set(url("gaerglas.svg") 1x, url("gaerglas@2x.svg") 2x) 3 2, progress !important;
	}
}

/* Klick-Klecks: ein paar Tintenspritzer an der Zeigerspitze (aria-hidden, klickt nicht mit) */
.sg-klecks { position: fixed; left: 0; top: 0; width: 0; height: 0; pointer-events: none; z-index: 2147483000; }
.sg-klecks i {
	position: absolute;
	width: var(--s);
	height: var(--s);
	margin: calc(var(--s) / -2) 0 0 calc(var(--s) / -2);
	border-radius: 50% 46% 54% 48%;
	background: #1a160b;
	box-shadow: 0 0 0 1px rgba(253, 251, 244, 0.85);
	animation: sg-klecks 520ms cubic-bezier(.2, .7, .3, 1) forwards;
}
@keyframes sg-klecks {
	0% { transform: translate(0, 0) scale(.3); opacity: 1; }
	70% { opacity: 1; }
	100% { transform: translate(var(--dx), var(--dy)) scale(1); opacity: 0; }
}
@media (prefers-reduced-motion: reduce) { .sg-klecks { display: none; } }

/* Schalter „Normaler Mauszeiger“ (Footer) – erbt Schrift und Farbe der Umgebung */
.sg-zeiger-schalter-wrap { margin: 0.5em 0 0; }
.sg-zeiger-schalter {
	all: unset;
	box-sizing: border-box;
	display: inline-flex;
	align-items: center;
	gap: 0.5em;
	min-height: 44px;
	font: inherit;
	font-size: 16px;
	color: inherit;
	cursor: pointer;
}
.sg-zeiger-schalter::before {
	content: "";
	flex: none;
	width: 30px;
	height: 18px;
	border-radius: 9px;
	border: 1.5px solid currentColor;
	box-sizing: border-box;
	background:
		radial-gradient(circle at 8px 50%, currentColor 0 5px, transparent 5.5px) no-repeat;
	transition: background-position 0.15s ease;
}
.sg-zeiger-schalter[aria-checked="true"]::before {
	background:
		radial-gradient(circle at 19px 50%, currentColor 0 5px, transparent 5.5px) no-repeat;
}
.sg-zeiger-schalter:focus-visible {
	outline: 2px solid currentColor;
	outline-offset: 3px;
	border-radius: 4px;
}
@media (prefers-reduced-motion: reduce) {
	.sg-zeiger-schalter::before { transition: none; }
}
/* Ohne Maus oder bei Systemfarben hat der Schalter keine Wirkung → ausblenden */
@media (hover: none), (pointer: coarse), (forced-colors: active), (prefers-contrast: more) {
	.sg-zeiger-schalter-wrap { display: none; }
}
