:root {
	--cursor-color: #4A7FA7; /* Accent color */
	--cursor-dot-color: #1A3D63; /* Primary color */
}

/* Hide default cursor on desktop screens to allow premium cursor to shine */
@media (pointer: fine) {
	body, a, button, input, select, textarea, [role="button"], .navbar-brand, .nav-link, .btn-default {
		cursor: none !important;
	}
}

.cb-cursor {
	position: fixed;
	top: 0;
	left: 0;
	z-index: 9999;
	contain: layout style size;
	pointer-events: none;
	will-change: transform;
	transition: opacity 0.3s ease;
	opacity: 0;
}

.cb-cursor.-visible {
	opacity: 1;
}

/* Outer hollow ring */
.cb-cursor:before {
	content: "";
	position: absolute;
	top: -15px;
	left: -15px;
	display: block;
	width: 30px;
	height: 30px;
	border: 1.5px solid var(--cursor-color);
	border-radius: 50%;
	transform: scale(1);
	transition: transform 0.3s cubic-bezier(0.25, 1, 0.5, 1), background 0.3s ease, border-color 0.3s ease;
	box-sizing: border-box;
}

/* Inner solid dot */
.cb-cursor:after {
	content: "";
	position: absolute;
	top: -3px;
	left: -3px;
	display: block;
	width: 6px;
	height: 6px;
	background: var(--cursor-dot-color);
	border-radius: 50%;
	transform: scale(1);
	transition: transform 0.2s ease-out;
	box-sizing: border-box;
}

/* Hovering over links/buttons */
.cb-cursor.-pointer:before {
	transform: scale(1.5);
	background: rgba(74, 127, 167, 0.15);
	border-color: var(--cursor-color);
}

.cb-cursor.-pointer:after {
	transform: scale(0);
}

/* Clicking state */
.cb-cursor.-active:before {
	transform: scale(1.1);
	background: rgba(74, 127, 167, 0.3);
}

.cb-cursor.-active:after {
	transform: scale(1.4);
}

/* Text state (like hovering over text headings) */
.cb-cursor.-text:before {
	transform: scale(1.8);
	background: rgba(26, 61, 99, 0.1);
	border-color: var(--cursor-dot-color);
}

.cb-cursor.-text:after {
	transform: scale(0);
}

/* Hide cursor when user leaves window */
.cb-cursor.-hidden {
	opacity: 0;
}

/* Hide custom cursor entirely on mobile and touch devices */
@media (max-width: 1023px) {
	.cb-cursor {
		display: none !important;
		visibility: hidden !important;
		opacity: 0 !important;
		pointer-events: none !important;
	}
}