/* ==========================================================
   RETRO CURSOR STYLES FOR BENK CLASSIC PLAYSTATION THEME
   Using all assets from retro-4 folder with SVG fallbacks
   ========================================================== */

/* Default cursor - Normal Cursor with fallback */
* {
    cursor: url('retro-4/Normal Cursor.cur'), url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16"><path d="M0,0 L16,8 L8,9 L9,16 L0,0 Z" fill="black" stroke="white" stroke-width="1"/></svg>') 0 0, auto;
}

/* Text cursor - Text Selection with fallback */
input,
textarea,
[contenteditable="true"],
::selection {
    cursor: url('retro-4/Text Selection.cur'), url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" width="8" height="16" viewBox="0 0 8 16"><rect x="3" y="0" width="2" height="16" fill="black" stroke="white" stroke-width="1"/></svg>') 4 8, text;
}

/* Pointer cursor - Hand with fallback */
a,
button,
[role="button"],
.btn-buy,
.btn-secondary,
.clickable,
[onclick] {
    cursor: url('retro-4/Hand.cur'), url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16"><path d="M0,0 L4,0 L4,4 L8,4 L8,8 L12,8 L12,12 L16,12 L16,16 L12,12 L8,8 L4,4 L0,0 Z" fill="black" stroke="white" stroke-width="1"/></svg>') 0 0, pointer;
}

/* Alternative Selection - for checkboxes, radio buttons */
input[type="checkbox"],
input[type="radio"],
select,
option {
    cursor: url('retro-4/Alternative Selection.cur'), url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16"><rect x="2" y="2" width="12" height="12" fill="black" stroke="white" stroke-width="1"/><rect x="4" y="4" width="8" height="8" fill="white"/></svg>') 8 8, default;
}

/* Precise Selection - for fine selection */
.precise-select,
.draggable {
    cursor: url('retro-4/Precise Selection.cur'), url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16"><circle cx="8" cy="8" r="7" fill="none" stroke="black" stroke-width="1"/><line x1="8" y1="1" x2="8" y2="15" stroke="black" stroke-width="1"/><line x1="1" y1="8" x2="15" y2="8" stroke="black" stroke-width="1"/></svg>') 8 8, crosshair;
}

/* Move cursor - for draggable elements */
[draggable="true"],
.movable,
.drag-handle {
    cursor: url('retro-4/Move.cur'), url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16"><path d="M2,2 L14,2 L14,14 L2,14 Z" fill="black" stroke="white" stroke-width="1"/><path d="M6,6 L10,6 L10,10 L6,10 Z" fill="white"/></svg>') 8 8, move;
}

/* Busy cursor - for loading states */
.loading,
.animate-pulse,
.processing,
.wait {
    cursor: url('retro-4/Busy.ani'), url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16"><path d="M2,2 L14,2 L10,6 L6,6 L2,2 M2,14 L14,14 L10,10 L6,10 L2,14" fill="black" stroke="white" stroke-width="1"/></svg>') 8 8, wait;
}

/* Busy while Working - for active processing */
.working,
.processing-active {
    cursor: url('retro-4/Busy while Working.ani'), url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16"><path d="M2,2 L14,2 L10,6 L6,6 L2,2 M2,14 L14,14 L10,10 L6,10 L2,14" fill="black" stroke="white" stroke-width="1"/><circle cx="8" cy="8" r="2" fill="white"/></svg>') 8 8, progress;
}

/* Block cursor - for not-allowed states */
.disabled,
[disabled],
.not-allowed {
    cursor: url('retro-4/Block.cur'), url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16"><circle cx="8" cy="8" r="7" fill="black" stroke="white" stroke-width="1"/><line x1="2" y1="2" x2="14" y2="14" stroke="white" stroke-width="2"/></svg>') 8 8, not-allowed;
}

/* Resize cursors */
/* Horizontal resize */
.resizable-h,
.resize-h,
.resize-x {
    cursor: url('retro-4/Horizontal.cur'), url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16"><path d="M0,8 L16,8" stroke="black" stroke-width="2"/><path d="M6,4 L10,8 L6,12" stroke="black" stroke-width="2" fill="none"/><path d="M10,4 L6,8 L10,12" stroke="black" stroke-width="2" fill="none"/></svg>') 8 8, ew-resize;
}

/* Vertical resize */
.resizable-v,
.resize-v,
.resize-y {
    cursor: url('retro-4/Vertical.cur'), url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16"><path d="M8,0 L8,16" stroke="black" stroke-width="2"/><path d="M4,6 L8,10 L12,6" stroke="black" stroke-width="2" fill="none"/><path d="M4,10 L8,6 L12,10" stroke="black" stroke-width="2" fill="none"/></svg>') 8 8, ns-resize;
}

/* Diagonal resize - top-left to bottom-right */
.resizable-nwse,
.resize-nwse,
.resize-tlbr {
    cursor: url('retro-4/Diagonal1.cur'), url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16"><path d="M0,0 L16,16" stroke="black" stroke-width="2"/><path d="M4,4 L8,8 L4,12" stroke="black" stroke-width="2" fill="none"/><path d="M12,4 L8,8 L12,12" stroke="black" stroke-width="2" fill="none"/></svg>') 8 8, nw-resize;
}

/* Diagonal resize - top-right to bottom-left */
.resizable-nesw,
.resize-nesw,
.resize-trbl {
    cursor: url('retro-4/Diagonal2.cur'), url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16"><path d="M16,0 L0,16" stroke="black" stroke-width="2"/><path d="M12,4 L8,8 L12,12" stroke="black" stroke-width="2" fill="none"/><path d="M4,4 L8,8 L4,12" stroke="black" stroke-width="2" fill="none"/></svg>') 8 8, ne-resize;
}

/* Special states for different elements */

/* Links with hover effect */
a:hover {
    cursor: url('retro-4/Hand.cur'), url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16"><path d="M0,0 L4,0 L4,4 L8,4 L8,8 L12,8 L12,12 L16,12 L16,16 L12,12 L8,8 L4,4 L0,0 Z" fill="black" stroke="white" stroke-width="1"/></svg>') 0 0, pointer;
}

/* Buttons with different states */
button:hover {
    cursor: url('retro-4/Hand.cur'), url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16"><path d="M0,0 L4,0 L4,4 L8,4 L8,8 L12,8 L12,12 L16,12 L16,16 L12,12 L8,8 L4,4 L0,0 Z" fill="black" stroke="white" stroke-width="1"/></svg>') 0 0, pointer;
}

button:active {
    cursor: url('retro-4/Precise Selection.cur'), url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16"><circle cx="8" cy="8" r="7" fill="none" stroke="black" stroke-width="1"/><line x1="8" y1="1" x2="8" y2="15" stroke="black" stroke-width="1"/><line x1="1" y1="8" x2="15" y2="8" stroke="black" stroke-width="1"/></svg>') 8 8, crosshair;
}

/* Form elements */
input[type="text"]:focus,
input[type="email"]:focus,
input[type="password"]:focus,
textarea:focus {
    cursor: url('retro-4/Text Selection.cur'), url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" width="8" height="16" viewBox="0 0 8 16"><rect x="3" y="0" width="2" height="16" fill="black" stroke="white" stroke-width="1"/></svg>') 4 8, text;
}

/* Loading states for specific elements */
.loading-button,
.loading-link {
    cursor: url('retro-4/Busy.ani'), url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16"><path d="M2,2 L14,2 L10,6 L6,6 L2,2 M2,14 L14,14 L10,10 L6,10 L2,14" fill="black" stroke="white" stroke-width="1"/></svg>') 8 8, wait;
}

/* Drag and drop areas */
.drop-zone {
    cursor: url('retro-4/Move.cur'), url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16"><path d="M2,2 L14,2 L14,14 L2,14 Z" fill="black" stroke="white" stroke-width="1"/><path d="M6,6 L10,6 L10,10 L6,10 Z" fill="white"/></svg>') 8 8, move;
}

.drop-zone.drag-over {
    cursor: url('retro-4/Precise Selection.cur'), url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16"><circle cx="8" cy="8" r="7" fill="none" stroke="black" stroke-width="1"/><line x1="8" y1="1" x2="8" y2="15" stroke="black" stroke-width="1"/><line x1="1" y1="8" x2="15" y2="8" stroke="black" stroke-width="1"/></svg>') 8 8, crosshair;
}

/* Scrollable areas */
.scrollable,
.overflow-auto,
.overflow-scroll {
    cursor: url('retro-4/Normal Cursor.cur'), url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16"><path d="M0,0 L16,8 L8,9 L9,16 L0,0 Z" fill="black" stroke="white" stroke-width="1"/></svg>') 0 0, auto;
}

/* Selection areas */
.selectable,
.user-select-all {
    cursor: url('retro-4/Text Selection.cur'), url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" width="8" height="16" viewBox="0 0 8 16"><rect x="3" y="0" width="2" height="16" fill="black" stroke="white" stroke-width="1"/></svg>') 4 8, text;
}

/* Help cursor for tooltips */
[title],
[data-tooltip] {
    cursor: url('retro-4/Hand.cur'), url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16"><path d="M0,0 L4,0 L4,4 L8,4 L8,8 L12,8 L12,12 L16,12 L16,16 L12,12 L8,8 L4,4 L0,0 Z" fill="black" stroke="white" stroke-width="1"/></svg>') 0 0, help;
}

/* Zoom cursor for zoomable elements */
.zoomable,
.zoom-in,
.zoom-out {
    cursor: url('retro-4/Precise Selection.cur'), url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16"><circle cx="8" cy="8" r="7" fill="none" stroke="black" stroke-width="1"/><line x1="8" y1="1" x2="8" y2="15" stroke="black" stroke-width="1"/><line x1="1" y1="8" x2="15" y2="8" stroke="black" stroke-width="1"/></svg>') 8 8, zoom-in;
}

/* Copy cursor for copyable elements */
.copyable,
[data-copy] {
    cursor: url('retro-4/Hand.cur'), url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16"><path d="M0,0 L4,0 L4,4 L8,4 L8,8 L12,8 L12,12 L16,12 L16,16 L12,12 L8,8 L4,4 L0,0 Z" fill="black" stroke="white" stroke-width="1"/></svg>') 0 0, copy;
}

/* Context menu cursor */
.context-menu,
.right-click {
    cursor: url('retro-4/Alternative Selection.cur'), url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16"><rect x="2" y="2" width="12" height="12" fill="black" stroke="white" stroke-width="1"/><rect x="4" y="4" width="8" height="8" fill="white"/></svg>') 8 8, context-menu;
}

/* Progress cursor for progress bars */
.progress,
.progress-bar {
    cursor: url('retro-4/Busy while Working.ani'), url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16"><path d="M2,2 L14,2 L10,6 L6,6 L2,2 M2,14 L14,14 L10,10 L6,10 L2,14" fill="black" stroke="white" stroke-width="1"/><circle cx="8" cy="8" r="2" fill="white"/></svg>') 8 8, progress;
}

/* Custom cursor classes for specific use cases */
.cursor-normal {
    cursor: url('retro-4/Normal Cursor.cur'), url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16"><path d="M0,0 L16,8 L8,9 L9,16 L0,0 Z" fill="black" stroke="white" stroke-width="1"/></svg>') 0 0, auto;
}

.cursor-text {
    cursor: url('retro-4/Text Selection.cur'), url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" width="8" height="16" viewBox="0 0 8 16"><rect x="3" y="0" width="2" height="16" fill="black" stroke="white" stroke-width="1"/></svg>') 4 8, text;
}

.cursor-pointer {
    cursor: url('retro-4/Hand.cur'), url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16"><path d="M0,0 L4,0 L4,4 L8,4 L8,8 L12,8 L12,12 L16,12 L16,16 L12,12 L8,8 L4,4 L0,0 Z" fill="black" stroke="white" stroke-width="1"/></svg>') 0 0, pointer;
}

.cursor-move {
    cursor: url('retro-4/Move.cur'), url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16"><path d="M2,2 L14,2 L14,14 L2,14 Z" fill="black" stroke="white" stroke-width="1"/><path d="M6,6 L10,6 L10,10 L6,10 Z" fill="white"/></svg>') 8 8, move;
}

.cursor-wait {
    cursor: url('retro-4/Busy.ani'), url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16"><path d="M2,2 L14,2 L10,6 L6,6 L2,2 M2,14 L14,14 L10,10 L6,10 L2,14" fill="black" stroke="white" stroke-width="1"/></svg>') 8 8, wait;
}

.cursor-progress {
    cursor: url('retro-4/Busy while Working.ani'), url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16"><path d="M2,2 L14,2 L10,6 L6,6 L2,2 M2,14 L14,14 L10,10 L6,10 L2,14" fill="black" stroke="white" stroke-width="1"/><circle cx="8" cy="8" r="2" fill="white"/></svg>') 8 8, progress;
}

.cursor-not-allowed {
    cursor: url('retro-4/Block.cur'), url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16"><circle cx="8" cy="8" r="7" fill="black" stroke="white" stroke-width="1"/><line x1="2" y1="2" x2="14" y2="14" stroke="white" stroke-width="2"/></svg>') 8 8, not-allowed;
}

.cursor-resize-h {
    cursor: url('retro-4/Horizontal.cur'), url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16"><path d="M0,8 L16,8" stroke="black" stroke-width="2"/><path d="M6,4 L10,8 L6,12" stroke="black" stroke-width="2" fill="none"/><path d="M10,4 L6,8 L10,12" stroke="black" stroke-width="2" fill="none"/></svg>') 8 8, ew-resize;
}

.cursor-resize-v {
    cursor: url('retro-4/Vertical.cur'), url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16"><path d="M8,0 L8,16" stroke="black" stroke-width="2"/><path d="M4,6 L8,10 L12,6" stroke="black" stroke-width="2" fill="none"/><path d="M4,10 L8,6 L12,10" stroke="black" stroke-width="2" fill="none"/></svg>') 8 8, ns-resize;
}

.cursor-resize-nwse {
    cursor: url('retro-4/Diagonal1.cur'), url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16"><path d="M0,0 L16,16" stroke="black" stroke-width="2"/><path d="M4,4 L8,8 L4,12" stroke="black" stroke-width="2" fill="none"/><path d="M12,4 L8,8 L12,12" stroke="black" stroke-width="2" fill="none"/></svg>') 8 8, nw-resize;
}

.cursor-resize-nesw {
    cursor: url('retro-4/Diagonal2.cur'), url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16"><path d="M16,0 L0,16" stroke="black" stroke-width="2"/><path d="M12,4 L8,8 L12,12" stroke="black" stroke-width="2" fill="none"/><path d="M4,4 L8,8 L4,12" stroke="black" stroke-width="2" fill="none"/></svg>') 8 8, ne-resize;
}

.cursor-precise {
    cursor: url('retro-4/Precise Selection.cur'), url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16"><circle cx="8" cy="8" r="7" fill="none" stroke="black" stroke-width="1"/><line x1="8" y1="1" x2="8" y2="15" stroke="black" stroke-width="1"/><line x1="1" y1="8" x2="15" y2="8" stroke="black" stroke-width="1"/></svg>') 8 8, crosshair;
}

.cursor-alternative {
    cursor: url('retro-4/Alternative Selection.cur'), url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16"><rect x="2" y="2" width="12" height="12" fill="black" stroke="white" stroke-width="1"/><rect x="4" y="4" width="8" height="8" fill="white"/></svg>') 8 8, default;
}

/* Fallback for unsupported cursor types */
@media (max-width: 768px) {

    /* On mobile devices, use simpler cursors */
    * {
        cursor: auto;
    }

    a,
    button,
    [role="button"] {
        cursor: pointer;
    }

    input,
    textarea {
        cursor: text;
    }
}

/* High contrast mode support */
@media (prefers-contrast: high) {

    /* Ensure cursors are visible in high contrast mode */
    * {
        cursor: url('retro-4/Normal Cursor.cur'), url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16"><path d="M0,0 L16,8 L8,9 L9,16 L0,0 Z" fill="black" stroke="white" stroke-width="1"/></svg>') 0 0, auto;
    }
}

/* Reduced motion support */
@media (prefers-reduced-motion: reduce) {

    /* Use static cursors instead of animated ones */
    .loading,
    .animate-pulse,
    .processing,
    .wait {
        cursor: url('https://benkinu.fun/retro-4/Busy.cur'), url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16"><path d="M2,2 L14,2 L10,6 L6,6 L2,2 M2,14 L14,14 L10,10 L6,10 L2,14" fill="black" stroke="white" stroke-width="1"/></svg>') 8 8, wait;
    }

    .working,
    .processing-active {
        cursor: url('https://benkinu.fun/retro-4/Busy.cur'), url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16"><path d="M2,2 L14,2 L10,6 L6,6 L2,2 M2,14 L14,14 L10,10 L6,10 L2,14" fill="black" stroke="white" stroke-width="1"/></svg>') 8 8, progress;
    }

    .progress,
    .progress-bar {
        cursor: url('https://benkinu.fun/retro-4/Busy.cur'), url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16"><path d="M2,2 L14,2 L10,6 L6,6 L2,2 M2,14 L14,14 L10,10 L6,10 L2,14" fill="black" stroke="white" stroke-width="1"/></svg>') 8 8, progress;
    }
}