/* ---------- Custom cursor: minimal lens, only over project cards ---------- */
.shp-lens {
	position: fixed; top: 0; left: 0; z-index: 9998;
	width: 90px; height: 90px; margin: -45px 0 0 -45px;
	border-radius: 50%;
	pointer-events: none;
	opacity: 0;
	transform: translate(-1000px, -1000px) scale(0.85);
	backdrop-filter: brightness(1.35) contrast(1.08) saturate(1.15);
	-webkit-backdrop-filter: brightness(1.35) contrast(1.08) saturate(1.15);
	border: 1px solid rgba(255,255,255,0.35);
	box-shadow: 0 0 0 1px rgba(0,0,0,0.12), 0 8px 24px rgba(0,0,0,0.18);
	transition: width .3s ease, height .3s ease, margin .3s ease, opacity .25s ease;
}
.shp-lens.active { opacity: 1; }
.shp-lens.hovering {
	width: 130px; height: 130px; margin: -65px 0 0 -65px;
	backdrop-filter: brightness(1.5) contrast(1.12) saturate(1.25);
	-webkit-backdrop-filter: brightness(1.5) contrast(1.12) saturate(1.25);
}
.shp-cursor-dot {
	position: fixed; top: 0; left: 0; z-index: 9999;
	width: 4px; height: 4px; margin: -2px 0 0 -2px;
	background: rgba(255,255,255,0.9); border-radius: 50%;
	pointer-events: none; opacity: 0;
	transform: translate(-1000px, -1000px);
	mix-blend-mode: difference;
	transition: opacity .25s ease;
}
.shp-cursor-dot.active { opacity: 1; }

/* فقط روی خود کارت‌ها، نشانگر پیش‌فرض مرورگر مخفی می‌شه */
@media (pointer: fine) {
	.shp-card { cursor: none; }
}
@media (pointer: coarse) {
	.shp-lens, .shp-cursor-dot { display: none; }
}

/* ---------- Sound toggle: small, playful, position-configurable ---------- */
.shp-sound-toggle {
	position: fixed; z-index: 9997;
	width: 30px; height: 30px; border-radius: 50%;
	border: 1px solid rgba(0,0,0,0.1); background: rgba(255,255,255,0.85);
	backdrop-filter: blur(6px);
	display: flex; align-items: center; justify-content: center;
	cursor: pointer;
	box-shadow: 0 2px 10px rgba(0,0,0,0.12);
	transition: transform .25s cubic-bezier(.34,1.56,.64,1);
}
.shp-sound-toggle:hover { transform: scale(1.12); }

.shp-sound-toggle.pos-top-left    { top: 20px; left: 20px; }
.shp-sound-toggle.pos-top-right   { top: 20px; right: 20px; }
.shp-sound-toggle.pos-bottom-left { bottom: 20px; left: 20px; }
.shp-sound-toggle.pos-bottom-right{ bottom: 20px; right: 20px; }

.shp-sound-toggle .shp-note {
	width: 13px; height: 13px; color: #333;
	transition: transform .3s ease;
}
.shp-sound-toggle.playing .shp-note {
	animation: shp-note-wiggle 1.1s ease-in-out infinite;
}
@keyframes shp-note-wiggle {
	0%, 100% { transform: rotate(0deg) scale(1); }
	25% { transform: rotate(-8deg) scale(1.08); }
	75% { transform: rotate(8deg) scale(1.08); }
}
.shp-sound-toggle .shp-pulse-ring {
	position: absolute; inset: -3px; border-radius: 50%;
	border: 1px solid currentColor; color: #333;
	opacity: 0; transform: scale(1);
}
.shp-sound-toggle.playing .shp-pulse-ring {
	animation: shp-pulse-out 1.6s ease-out infinite;
}
@keyframes shp-pulse-out {
	0% { opacity: 0.5; transform: scale(1); }
	100% { opacity: 0; transform: scale(1.6); }
}
