:root {
  --cursor-default: url("/assets/cursors/arrow.cur"), auto;
  --cursor-pointer: url("/assets/cursors/hand.cur"), pointer;
  --cursor-text: url("/assets/cursors/ibeam.cur"), text;
  --cursor-not-allowed: url("/assets/cursors/no.cur"), not-allowed;
  --cursor-help: url("/assets/cursors/help.cur"), help;
  --cursor-crosshair: url("/assets/cursors/crosshair.cur"), crosshair;
  --cursor-move: url("/assets/cursors/sizeall.cur"), move;
  --cursor-ew-resize: url("/assets/cursors/sizewe.cur"), ew-resize;
  --cursor-ns-resize: url("/assets/cursors/sizens.cur"), ns-resize;
  --cursor-nesw-resize: url("/assets/cursors/sizenesw.cur"), nesw-resize;
  --cursor-nwse-resize: url("/assets/cursors/sizenwse.cur"), nwse-resize;
  --cursor-progress: url("/assets/cursors/wait.ani"), progress;
  --cursor-wait: url("/assets/cursors/wait.ani"), wait;
}

@media (pointer: fine) {
  html,
  body {
    cursor: var(--cursor-default) !important;
  }

  body * {
    cursor: inherit !important;
  }

  a,
  button,
  summary,
  label[for],
  [role="button"],
  [role="link"],
  [role="tab"],
  [role="menuitem"],
  [type="button"],
  [type="submit"],
  [type="reset"],
  [type="checkbox"],
  [type="radio"],
  [type="range"],
  [type="color"],
  [type="file"],
  [onclick],
  [data-page],
  [data-filter],
  [data-sort],
  [tabindex]:not([tabindex="-1"]),
  .btn,
  .nav-item,
  .project-card,
  .instagram-item,
  .skill-tag,
  .menu-toggle,
  .social-link,
  .gitlab-project-item,
  .tool-card,
  .chatbot-send,
  .gitlab-filter,
  .instagram-tab,
  .ig-card,
  .lightbox-close,
  .lightbox-nav {
    cursor: var(--cursor-pointer) !important;
  }

  input:not([type="button"]):not([type="submit"]):not([type="reset"]):not([type="checkbox"]):not([type="radio"]):not([type="range"]):not([type="color"]):not([type="file"]),
  textarea,
  select,
  [contenteditable="true"],
  [contenteditable=""],
  .form-input,
  .form-textarea,
  .chatbot-input {
    cursor: var(--cursor-text) !important;
  }

  button:disabled,
  input:disabled,
  textarea:disabled,
  select:disabled,
  .disabled,
  [aria-disabled="true"] {
    cursor: var(--cursor-not-allowed) !important;
  }

  [aria-busy="true"],
  .is-loading,
  .loading {
    cursor: var(--cursor-progress) !important;
  }

  [data-cursor="help"] {
    cursor: var(--cursor-help) !important;
  }

  [data-cursor="crosshair"] {
    cursor: var(--cursor-crosshair) !important;
  }

  [data-cursor="move"],
  [draggable="true"] {
    cursor: var(--cursor-move) !important;
  }

  [data-cursor="ew-resize"] {
    cursor: var(--cursor-ew-resize) !important;
  }

  [data-cursor="ns-resize"] {
    cursor: var(--cursor-ns-resize) !important;
  }

  [data-cursor="nesw-resize"] {
    cursor: var(--cursor-nesw-resize) !important;
  }

  [data-cursor="nwse-resize"] {
    cursor: var(--cursor-nwse-resize) !important;
  }

  .cursor-glow {
    display: none !important;
  }
}

@media (pointer: coarse) {
  html,
  body,
  body * {
    cursor: auto !important;
  }
}
