/* Custom Cursors - 21x21 */

/* Default: Arrow cursor */
* {
  cursor: url('data:image/svg+xml,<svg width="21" height="21" viewBox="0 0 21 21" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M9 3H15V6H18V9H12V15H9V12H6V6H3V0H9V3Z" fill="%231A1A21"/></svg>') 3 0, auto !important;
}

/* I-beam: Text elements */
p, h1, h2, h3, h4, h5, h6, td, th,
input,
textarea {
  cursor: url('data:image/svg+xml,<svg width="21" height="21" viewBox="0 0 21 21" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M9 18H6V15H9V18ZM15 18H12V15H15V18ZM12 15H9V6H12V15ZM9 6H6V3H9V6ZM15 6H12V3H15V6Z" fill="%231A1A21"/></svg>') 10 10, text !important;
}

/* Pointer: Interactive elements */
a, button,
input[type="radio"],
input[type="checkbox"],
input[type="submit"],
input[type="button"],
input[type="range"],
select {
  cursor: url('data:image/svg+xml,<svg width="21" height="21" viewBox="0 0 21 21" fill="none" xmlns="http://www.w3.org/2000/svg"><path fill-rule="evenodd" clip-rule="evenodd" d="M9 0V3V6V9V12H6V9H3V12H6V15H9H12H15H18V12V9V6H15H12V3V0H9Z" fill="%231A1A21"/></svg>') 6 0, pointer !important;
}

/* Text inside clickable elements should have pointer */
a *, button * {
  cursor: url('data:image/svg+xml,<svg width="21" height="21" viewBox="0 0 21 21" fill="none" xmlns="http://www.w3.org/2000/svg"><path fill-rule="evenodd" clip-rule="evenodd" d="M9 0V3V6V9V12H6V9H3V12H6V15H9H12H15H18V12V9V6H15H12V3V0H9Z" fill="%231A1A21"/></svg>') 6 0, pointer !important;
}

/* Utility classes */
.cursor-pointer,
.cursor-pointer * {
  cursor: url('data:image/svg+xml,<svg width="21" height="21" viewBox="0 0 21 21" fill="none" xmlns="http://www.w3.org/2000/svg"><path fill-rule="evenodd" clip-rule="evenodd" d="M9 0V3V6V9V12H6V9H3V12H6V15H9H12H15H18V12V9V6H15H12V3V0H9Z" fill="%231A1A21"/></svg>') 6 0, pointer !important;
}

.cursor-text,
.cursor-text * {
  cursor: url('data:image/svg+xml,<svg width="21" height="21" viewBox="0 0 21 21" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M9 18H6V15H9V18ZM15 18H12V15H15V18ZM12 15H9V6H12V15ZM9 6H6V3H9V6ZM15 6H12V3H15V6Z" fill="%231A1A21"/></svg>') 10 10, text !important;
}

.cursor-resize-col,
.cursor-resize-col * {
  cursor: url('data:image/svg+xml,<svg width="21" height="21" viewBox="0 0 21 21" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M12 18H9V3H12V18ZM6 15H3V12H6V15ZM18 15H15V12H18V15ZM3 12H0V9H3V12ZM21 12H18V9H21V12ZM6 9H3V6H6V9ZM18 9H15V6H18V9Z" fill="%231A1A21"/></svg>') 10 10, col-resize !important;
}

.cursor-resize-ew,
.cursor-resize-ew * {
  cursor: url('data:image/svg+xml,<svg width="21" height="21" viewBox="0 0 21 21" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M9 15H6V12H9V15ZM15 15H12V12H15V15ZM6 12H3V9H6V12ZM18 12H15V9H18V12ZM9 9H6V6H9V9ZM15 9H12V6H15V9Z" fill="%23080809"/></svg>') 10 10, ew-resize !important;
}

.cursor-resize-ns,
.cursor-resize-ns * {
  cursor: url('data:image/svg+xml,<svg width="21" height="21" viewBox="0 0 21 21" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M12 18H9V15H12V18ZM9 15H6V12H9V15ZM15 12V15H12V12H15ZM9 9H6V6H9V9ZM15 9H12V6H15V9ZM12 6H9V3H12V6Z" fill="%23080809"/></svg>') 10 10, ns-resize !important;
}

.cursor-not-allowed,
.cursor-not-allowed * {
  cursor: url('data:image/svg+xml,<svg width="21" height="21" viewBox="0 0 21 21" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M15 6H18V15H15V18H6V15H3V6H6V3H15V6ZM6 12H15V9H6V12Z" fill="%231A1A21"/></svg>') 10 10, not-allowed !important;
}

.cursor-wait,
.cursor-wait * {
  cursor: url('data:image/svg+xml,<svg width="21" height="21" viewBox="0 0 21 21" fill="none" xmlns="http://www.w3.org/2000/svg"><path fill-rule="evenodd" clip-rule="evenodd" d="M6 3H3V6H6V9H9V12H6V15H3V18H6H9H12H15H18V15H15V12H12V9H15V6H18V3H15H12H9H6ZM12 9H9V6H12V9Z" fill="%23080809"/></svg>') 10 10, wait !important;
}

.cursor-help,
.cursor-help * {
  cursor: url('data:image/svg+xml,<svg width="21" height="21" viewBox="0 0 21 21" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M12 18H9V15H12V18ZM12 12H9V9H12V12ZM15 9H12V6H15V9ZM12 3V6H6V3H12Z" fill="%23080809"/></svg>') 10 10, help !important;
}

.cursor-move,
.cursor-move * {
  cursor: url('data:image/svg+xml,<svg width="21" height="21" viewBox="0 0 21 21" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M12 18H9V15H12V18ZM6 12H3V9H6V12ZM12 12H9V9H12V12ZM18 12H15V9H18V12ZM12 6H9V3H12V6Z" fill="%23080809"/></svg>') 10 10, move !important;
}

.cursor-crosshair,
.cursor-crosshair * {
  cursor: url('data:image/svg+xml,<svg width="21" height="21" viewBox="0 0 21 21" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M12 18H9V12H12V18ZM9 12H3V9H9V12ZM18 9V12H12V9H18ZM12 9H9V3H12V9Z" fill="%23080809"/></svg>') 10 10, crosshair !important;
}

.cursor-resize-nwse,
.cursor-resize-nwse * {
  cursor: url('data:image/svg+xml,<svg width="21" height="21" viewBox="0 0 21 21" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M18 18H12V15H15V12H18V18ZM9 3V6H6V9H3V3H9Z" fill="%23080809"/></svg>') 10 10, nwse-resize !important;
}

.cursor-resize-nesw,
.cursor-resize-nesw * {
  cursor: url('data:image/svg+xml,<svg width="21" height="21" viewBox="0 0 21 21" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M6 15H9V18H3V12H6V15ZM18 9H15V6H12V3H18V9Z" fill="%23080809"/></svg>') 10 10, nesw-resize !important;
}

/* Disabled states */
input:disabled,
textarea:disabled,
button:disabled,
select:disabled,
.disabled,
.disabled * {
  cursor: url('data:image/svg+xml,<svg width="21" height="21" viewBox="0 0 21 21" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M15 6H18V15H15V18H6V15H3V6H6V3H15V6ZM6 12H15V9H6V12Z" fill="%231A1A21"/></svg>') 10 10, not-allowed !important;
}

/* Dark Mode - Use CSS filter to invert colors */
@media (prefers-color-scheme: dark) {
  * {
    cursor: url('data:image/svg+xml,<svg width="21" height="21" viewBox="0 0 21 21" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M9 3H15V6H18V9H12V15H9V12H6V6H3V0H9V3Z" fill="%23EFEFEF"/></svg>') 3 0, auto !important;
  }

  p, h1, h2, h3, h4, h5, h6, td, th,
  input,
  textarea {
    cursor: url('data:image/svg+xml,<svg width="21" height="21" viewBox="0 0 21 21" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M9 18H6V15H9V18ZM15 18H12V15H15V18ZM12 15H9V6H12V15ZM9 6H6V3H9V6ZM15 6H12V3H15V6Z" fill="%23EFEFEF"/></svg>') 10 10, text !important;
  }

  a, button,
  input[type="radio"],
  input[type="checkbox"],
  input[type="submit"],
  input[type="button"],
  input[type="range"],
  select {
    cursor: url('data:image/svg+xml,<svg width="21" height="21" viewBox="0 0 21 21" fill="none" xmlns="http://www.w3.org/2000/svg"><path fill-rule="evenodd" clip-rule="evenodd" d="M9 0V3V6V9V12H6V9H3V12H6V15H9H12H15H18V12V9V6H15H12V3V0H9Z" fill="%23EFEFEF"/></svg>') 6 0, pointer !important;
  }

  a *, button * {
    cursor: url('data:image/svg+xml,<svg width="21" height="21" viewBox="0 0 21 21" fill="none" xmlns="http://www.w3.org/2000/svg"><path fill-rule="evenodd" clip-rule="evenodd" d="M9 0V3V6V9V12H6V9H3V12H6V15H9H12H15H18V12V9V6H15H12V3V0H9Z" fill="%23EFEFEF"/></svg>') 6 0, pointer !important;
  }

  .cursor-pointer,
  .cursor-pointer * {
    cursor: url('data:image/svg+xml,<svg width="21" height="21" viewBox="0 0 21 21" fill="none" xmlns="http://www.w3.org/2000/svg"><path fill-rule="evenodd" clip-rule="evenodd" d="M9 0V3V6V9V12H6V9H3V12H6V15H9H12H15H18V12V9V6H15H12V3V0H9Z" fill="%23EFEFEF"/></svg>') 6 0, pointer !important;
  }

  .cursor-text,
  .cursor-text * {
    cursor: url('data:image/svg+xml,<svg width="21" height="21" viewBox="0 0 21 21" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M9 18H6V15H9V18ZM15 18H12V15H15V18ZM12 15H9V6H12V15ZM9 6H6V3H9V6ZM15 6H12V3H15V6Z" fill="%23EFEFEF"/></svg>') 10 10, text !important;
  }

  .cursor-resize-col,
  .cursor-resize-col * {
    cursor: url('data:image/svg+xml,<svg width="21" height="21" viewBox="0 0 21 21" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M12 18H9V3H12V18ZM6 15H3V12H6V15ZM18 15H15V12H18V15ZM3 12H0V9H3V12ZM21 12H18V9H21V12ZM6 9H3V6H6V9ZM18 9H15V6H18V9Z" fill="%23EFEFEF"/></svg>') 10 10, col-resize !important;
  }

  .cursor-resize-ew,
  .cursor-resize-ew * {
    cursor: url('data:image/svg+xml,<svg width="21" height="21" viewBox="0 0 21 21" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M9 15H6V12H9V15ZM15 15H12V12H15V15ZM6 12H3V9H6V12ZM18 12H15V9H18V12ZM9 9H6V6H9V9ZM15 9H12V6H15V9Z" fill="%23EFEFEF"/></svg>') 10 10, ew-resize !important;
  }

  .cursor-resize-ns,
  .cursor-resize-ns * {
    cursor: url('data:image/svg+xml,<svg width="21" height="21" viewBox="0 0 21 21" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M12 18H9V15H12V18ZM9 15H6V12H9V15ZM15 12V15H12V12H15ZM9 9H6V6H9V9ZM15 9H12V6H15V9ZM12 6H9V3H12V6Z" fill="%23EFEFEF"/></svg>') 10 10, ns-resize !important;
  }

  .cursor-not-allowed,
  .cursor-not-allowed * {
    cursor: url('data:image/svg+xml,<svg width="21" height="21" viewBox="0 0 21 21" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M15 6H18V15H15V18H6V15H3V6H6V3H15V6ZM6 12H15V9H6V12Z" fill="%23EFEFEF"/></svg>') 10 10, not-allowed !important;
  }

  .cursor-wait,
  .cursor-wait * {
    cursor: url('data:image/svg+xml,<svg width="21" height="21" viewBox="0 0 21 21" fill="none" xmlns="http://www.w3.org/2000/svg"><path fill-rule="evenodd" clip-rule="evenodd" d="M6 3H3V6H6V9H9V12H6V15H3V18H6H9H12H15H18V15H15V12H12V9H15V6H18V3H15H12H9H6ZM12 9H9V6H12V9Z" fill="%23EFEFEF"/></svg>') 10 10, wait !important;
  }

  .cursor-help,
  .cursor-help * {
    cursor: url('data:image/svg+xml,<svg width="21" height="21" viewBox="0 0 21 21" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M12 18H9V15H12V18ZM12 12H9V9H12V12ZM15 9H12V6H15V9ZM12 3V6H6V3H12Z" fill="%23EFEFEF"/></svg>') 10 10, help !important;
  }

  .cursor-move,
  .cursor-move * {
    cursor: url('data:image/svg+xml,<svg width="21" height="21" viewBox="0 0 21 21" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M12 18H9V15H12V18ZM6 12H3V9H6V12ZM12 12H9V9H12V12ZM18 12H15V9H18V12ZM12 6H9V3H12V6Z" fill="%23EFEFEF"/></svg>') 10 10, move !important;
  }

  .cursor-crosshair,
  .cursor-crosshair * {
    cursor: url('data:image/svg+xml,<svg width="21" height="21" viewBox="0 0 21 21" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M12 18H9V12H12V18ZM9 12H3V9H9V12ZM18 9V12H12V9H18ZM12 9H9V3H12V9Z" fill="%23EFEFEF"/></svg>') 10 10, crosshair !important;
  }

  .cursor-resize-nwse,
  .cursor-resize-nwse * {
    cursor: url('data:image/svg+xml,<svg width="21" height="21" viewBox="0 0 21 21" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M18 18H12V15H15V12H18V18ZM9 3V6H6V9H3V3H9Z" fill="%23EFEFEF"/></svg>') 10 10, nwse-resize !important;
  }

  .cursor-resize-nesw,
  .cursor-resize-nesw * {
    cursor: url('data:image/svg+xml,<svg width="21" height="21" viewBox="0 0 21 21" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M6 15H9V18H3V12H6V15ZM18 9H15V6H12V3H18V9Z" fill="%23EFEFEF"/></svg>') 10 10, nesw-resize !important;
  }

  input:disabled,
  textarea:disabled,
  button:disabled,
  select:disabled,
  .disabled,
  .disabled * {
    cursor: url('data:image/svg+xml,<svg width="21" height="21" viewBox="0 0 21 21" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M15 6H18V15H15V18H6V15H3V6H6V3H15V6ZM6 12H15V9H6V12Z" fill="%23EFEFEF"/></svg>') 10 10, not-allowed !important;
  }
}
