/*
 * Morshinog cursor system v0.6.53 — preload-aligned cursor URLs + user hotspot coordinates
 * Five user-supplied custom themes + native OS cursor.
 * All custom cursor files are normalized to a 32x32 logical canvas so their
 * visual scale matches the standard 32x32 browser/OS pointer size.
 * Prepared states: default, pointer, click, busy, text, move, zoom-in,
 * zoom-out and help. Future UI can opt in with data-cursor-state="...".
 */

html[data-cursor-theme="crystal"]{
  --mc-default:url('../assets/cursors/crystal-default.png?v=0634-user-cursors') 7 4,auto;
  --mc-pointer:url('../assets/cursors/crystal-pointer.png?v=0634-user-cursors') 11 3,pointer;
  --mc-click:url('../assets/cursors/crystal-click.png?v=0634-user-cursors') 14 5,pointer;
  --mc-busy:url('../assets/cursors/crystal-busy.png?v=0634-user-cursors') 16 17,wait;
  --mc-text:url('../assets/cursors/crystal-text.png?v=0634-user-cursors') 16 16,text;
  --mc-move:url('../assets/cursors/crystal-move.png?v=0634-user-cursors') 16 16,move;
  --mc-zoom-in:url('../assets/cursors/crystal-zoom-in.png?v=0634-user-cursors') 14 14,zoom-in;
  --mc-zoom-out:url('../assets/cursors/crystal-zoom-out.png?v=0634-user-cursors') 14 14,zoom-out;
  --mc-help:url('../assets/cursors/crystal-help.png?v=0634-user-cursors') 16 8,help;
}
html[data-cursor-theme="robot"]{
  --mc-default:url('../assets/cursors/robot-default.png?v=0634-user-cursors') 5 2,auto;
  --mc-pointer:url('../assets/cursors/robot-pointer.png?v=0634-user-cursors') 11 3,pointer;
  --mc-click:url('../assets/cursors/robot-click.png?v=0634-user-cursors') 13 4,pointer;
  --mc-busy:url('../assets/cursors/robot-busy.png?v=0634-user-cursors') 16 17,wait;
  --mc-text:url('../assets/cursors/robot-text.png?v=0634-user-cursors') 16 16,text;
  --mc-move:url('../assets/cursors/robot-move.png?v=0634-user-cursors') 16 16,move;
  --mc-zoom-in:url('../assets/cursors/robot-zoom-in.png?v=0634-user-cursors') 13 13,zoom-in;
  --mc-zoom-out:url('../assets/cursors/robot-zoom-out.png?v=0634-user-cursors') 14 14,zoom-out;
  --mc-help:url('../assets/cursors/robot-help.png?v=0634-user-cursors') 14 12,help;
}
html[data-cursor-theme="cat"]{
  --mc-default:url('../assets/cursors/cat-default.png?v=0634-user-cursors') 7 5,auto;
  --mc-pointer:url('../assets/cursors/cat-pointer.png?v=0634-user-cursors') 16 8,pointer;
  --mc-click:url('../assets/cursors/cat-click.png?v=0634-user-cursors') 18 10,pointer;
  --mc-busy:url('../assets/cursors/cat-busy.png?v=0634-user-cursors') 16 17,wait;
  --mc-text:url('../assets/cursors/cat-text.png?v=0634-user-cursors') 16 16,text;
  --mc-move:url('../assets/cursors/cat-move.png?v=0634-user-cursors') 16 16,move;
  --mc-zoom-in:url('../assets/cursors/cat-zoom-in.png?v=0634-user-cursors') 13 13,zoom-in;
  --mc-zoom-out:url('../assets/cursors/cat-zoom-out.png?v=0634-user-cursors') 13 13,zoom-out;
  --mc-help:url('../assets/cursors/cat-help.png?v=0634-user-cursors') 14 12,help;
}
html[data-cursor-theme="neon"]{
  --mc-default:url('../assets/cursors/neon-default.png?v=0634-user-cursors') 7 4,auto;
  --mc-pointer:url('../assets/cursors/neon-pointer.png?v=0634-user-cursors') 13 4,pointer;
  --mc-click:url('../assets/cursors/neon-click.png?v=0634-user-cursors') 15 5,pointer;
  --mc-busy:url('../assets/cursors/neon-busy.png?v=0634-user-cursors') 16 16,wait;
  --mc-text:url('../assets/cursors/neon-text.png?v=0634-user-cursors') 16 16,text;
  --mc-move:url('../assets/cursors/neon-move.png?v=0634-user-cursors') 16 16,move;
  --mc-zoom-in:url('../assets/cursors/neon-zoom-in.png?v=0634-user-cursors') 14 15,zoom-in;
  --mc-zoom-out:url('../assets/cursors/neon-zoom-out.png?v=0634-user-cursors') 14 14,zoom-out;
  --mc-help:url('../assets/cursors/neon-help.png?v=0634-user-cursors') 16 8,help;
}
html[data-cursor-theme="morshinog"]{
  --mc-default:url('../assets/cursors/morshinog-default.png?v=0634-user-cursors') 7 4,auto;
  --mc-pointer:url('../assets/cursors/morshinog-pointer.png?v=0634-user-cursors') 13 4,pointer;
  --mc-click:url('../assets/cursors/morshinog-click.png?v=0634-user-cursors') 14 5,pointer;
  --mc-busy:url('../assets/cursors/morshinog-busy.png?v=0634-user-cursors') 16 17,wait;
  --mc-text:url('../assets/cursors/morshinog-text.png?v=0634-user-cursors') 16 16,text;
  --mc-move:url('../assets/cursors/morshinog-move.png?v=0634-user-cursors') 16 16,move;
  --mc-zoom-in:url('../assets/cursors/morshinog-zoom-in.png?v=0634-user-cursors') 14 14,zoom-in;
  --mc-zoom-out:url('../assets/cursors/morshinog-zoom-out.png?v=0634-user-cursors') 14 14,zoom-out;
  --mc-help:url('../assets/cursors/morshinog-help.png?v=0634-user-cursors') 16 8,help;
}

/* Custom themes use one authoritative runtime state.
   `--mc-live` is switched by JS according to the element currently under the
   pointer. No per-element custom cursor rule is allowed to override it. */
html[data-cursor-theme]:not([data-cursor-theme="system"]) body,
html[data-cursor-theme]:not([data-cursor-theme="system"]) body *{
  cursor:var(--mc-live,var(--mc-default))!important;
}

/* v0.6.53: invisible booster hitboxes must follow the selected custom cursor.
   Older layout CSS gave them cursor:pointer!important, which could outrank
   the global custom-cursor rule and reveal the native OS hand. */
html[data-cursor-theme]:not([data-cursor-theme="system"]) .bottom-actions .booster-button>.booster-hitbox{
  cursor:var(--mc-live,var(--mc-default))!important;
}

/* Sixth option: use exactly the cursors supplied by the operating system/browser. */
html[data-cursor-theme="system"],html[data-cursor-theme="system"] body{cursor:auto}
html[data-cursor-theme="system"] :is(button,a,[role="button"],summary,select,input[type="range"],input[type="button"],input[type="submit"],label[for],[data-cursor-state="pointer"]){cursor:pointer!important}
html[data-cursor-theme="system"] :is(input:not([type]),input[type="text"],input[type="search"],input[type="email"],input[type="password"],input[type="number"],textarea,[contenteditable="true"],[data-cursor-state="text"]){cursor:text!important}
html[data-cursor-theme="system"] :is([aria-busy="true"],.is-loading,[data-cursor-state="busy"]){cursor:wait!important}
html[data-cursor-theme="system"] :is([draggable="true"],.cursor-move,.is-dragging,[data-cursor-state="move"]){cursor:move!important}
html[data-cursor-theme="system"] :is(.cursor-zoom-in,[data-cursor-state="zoom-in"]){cursor:zoom-in!important}
html[data-cursor-theme="system"] :is(.cursor-zoom-out,[data-cursor-state="zoom-out"]){cursor:zoom-out!important}
html[data-cursor-theme="system"] :is(.cursor-help,[data-cursor-state="help"]){cursor:help!important}
