html.has-active { scroll-behavior: auto !important; }

.has-toggle {
	position: fixed;
	right: 16px;
	bottom: 16px;
	z-index: 99999;
	width: 42px;
	height: 42px;
	border: 0;
	border-radius: 50%;
	background: rgba(20, 20, 20, 0.75);
	color: #fff;
	font-size: 14px;
	line-height: 42px;
	text-align: center;
	cursor: pointer;
	padding: 0;
	box-shadow: 0 2px 8px rgba(0, 0, 0, 0.3);
	transition: background 0.2s ease, transform 0.2s ease;
}
.has-toggle:hover,
.has-toggle:focus { background: rgba(0, 0, 0, 0.95); transform: scale(1.06); outline: 2px solid #fff; outline-offset: 2px; }

/* Human-like arrow cursor */
.has-cursor {
	position: fixed;
	left: 0;
	top: 0;
	z-index: 2147483646;
	pointer-events: none;
	opacity: 0;
	transition: opacity 0.4s ease;
	will-change: transform;
}
.has-cursor.is-visible { opacity: 1; }
.has-cursor svg {
	display: block;
	margin: -2px 0 0 -3px;
	filter: drop-shadow(0 1px 2px rgba(0, 0, 0, 0.45));
	transform-origin: 3px 2px;
	transition: transform 0.12s ease;
}
.has-cursor.is-click svg { transform: scale(0.85); }
.has-cursor .has-ripple {
	position: absolute;
	left: -14px;
	top: -14px;
	width: 28px;
	height: 28px;
	border-radius: 50%;
	border: 2px solid rgba(30, 144, 255, 0.85);
	opacity: 0;
	transform: scale(0.2);
}
.has-cursor.is-click .has-ripple { animation: has-ripple 0.42s ease-out; }
@keyframes has-ripple {
	0%   { opacity: 0.9; transform: scale(0.2); }
	100% { opacity: 0;   transform: scale(1.4); }
}
@media (hover: none), (prefers-reduced-motion: reduce) {
	.has-cursor { display: none; }
}
