:root {
    --small-cursor: 30px;
    --large-cursor: 120px;
}

/* Hide default cursors globally when custom cursor is active */
body:has(.accessible-cursor--ready),
body:has(.accessible-cursor--ready) * {
    cursor: none !important;
}

/* Base cursor - designed with accessibility in mind */
.accessible-cursor {
    position: fixed;
    top: 0;
    left: 0;
    width: var(--small-cursor);
    height: var(--small-cursor);
    opacity: 0.85;
    background: var(--creamcursor);
    border: none;
    border-radius: 50%;
    pointer-events: none;
    z-index: 9999;
    opacity: 0; /* Start hidden */
    transition: width 0.250s ease-in-out, height 0.250s ease-in-out, background-color 0.250s ease-in-out, opacity 0.250s ease-in-out;
    will-change: transform;
    
    /* Ensure visibility in high contrast mode */
    outline: 1px solid transparent;
}
.accessible-cursor--ready {
    opacity: 0.85; /* Now visible */
}

/* Active state - when hovering over interactive elements */
.accessible-cursor--active {
    width: var(--large-cursor);
    height: var(--large-cursor);
    background: var(--creamcursor);
}

/* High contrast support */
@media (prefers-contrast: high) {
    .accessible-cursor {
        background: #000000 !important;
        border: 3px solid #ffffff !important;
        box-shadow: 0 0 0 1px #000000;
    }
    
    .accessible-cursor--active {
        background: #ffffff !important;
        border: 3px solid #000000 !important;
        box-shadow: 0 0 0 1px #ffffff;
    }
}

/* Reduced motion support */
@media (prefers-reduced-motion: reduce) {
    .accessible-cursor {
        transition: none !important;
        animation: none !important;
    }
}

/* Force cursor to be visible for users who need it */
@media (forced-colors: active) {
    .accessible-cursor {
        forced-color-adjust: none;
        background: Highlight !important;
        border-color: HighlightText !important;
    }
}

/* Message element - positioned offscreen for screen readers */
.accessible-cursor-message {
    position: fixed;
    top: 0;
    left: 0;
    color: var(--brown);
    font-size: 14px;
	font-family: 'FoundersGrotesk-Regular';
    text-transform: uppercase;
    pointer-events: none;
    z-index: 10000;
    opacity: 0;
    transition: opacity 0.250s ease-in-out;
    text-align: center;
}

/* Keyboard navigation mode */
.keyboard-navigation .accessible-cursor {
    display: none !important;
}

.keyboard-navigation {
    cursor: auto !important;
}

/* Mobile and touch device overrides */
@media (hover: none), (pointer: coarse), (max-width: 820px) and (max-height: 600px) {
    .accessible-cursor {
        display: none !important;
    }
    
    body {
        cursor: auto !important;
    }
}

/* Print styles - hide custom cursor */
@media print {
    .accessible-cursor,
    .accessible-cursor-message {
        display: none !important;
    }
    
    body {
        cursor: auto !important;
    }
}

/* Dark mode considerations */
@media (prefers-color-scheme: dark) {
    .accessible-cursor {

    }
    .accessible-cursor--active {

    }
}