/* The mouse wears the game's own look (Goud.Hokm scripts/Pointer.cs): a golden arrowhead where the
   system's arrow was, a painted hand over anything that can be pressed, the closed hand while a card
   is carried, and the rest of the sheet for writing, waiting and what is refused. The cut is the
   game's, at 40, 60 and 80, and the screen takes the one that suits it as the game does by its dpi.
   The point each one presses with is read off the 40 the way Pointer.Tip reads it.
   Every rule elsewhere says var(--point) or var(--arrow), never pointer or default. */
:root {
    --arrow: image-set(url("/art/cursor/arrow-40.png") 1x, url("/art/cursor/arrow-60.png") 1.5x, url("/art/cursor/arrow-80.png") 2x) 0 0, default;
    --point: image-set(url("/art/cursor/point-40.png") 1x, url("/art/cursor/point-60.png") 1.5x, url("/art/cursor/point-80.png") 2x) 14 2, pointer;
    --hold: image-set(url("/art/cursor/hold-40.png") 1x, url("/art/cursor/hold-60.png") 1.5x, url("/art/cursor/hold-80.png") 2x) 20 20, grabbing;
    --text: image-set(url("/art/cursor/text-40.png") 1x, url("/art/cursor/text-60.png") 1.5x, url("/art/cursor/text-80.png") 2x) 20 20, text;
    --no: image-set(url("/art/cursor/no-40.png") 1x, url("/art/cursor/no-60.png") 1.5x, url("/art/cursor/no-80.png") 2x) 20 20, not-allowed;
    --wait: image-set(url("/art/cursor/wait-40.png") 1x, url("/art/cursor/wait-60.png") 1.5x, url("/art/cursor/wait-80.png") 2x) 20 20, wait;
}

html { cursor: var(--arrow); }

/* Every button is something to press, so every button wears the hand without asking for it, as in
   the game; one with nothing to press just now keeps the arrow. :where keeps these the weakest
   rules on the page, so any screen's own word wins. */
:where(button, a[href], label[for], select, summary, [role="button"], input[type="button"], input[type="submit"], input[type="checkbox"], input[type="radio"]) { cursor: var(--point); }
:where(button:disabled, select:disabled) { cursor: var(--arrow); }
:where(input:not([type="button"], [type="submit"], [type="checkbox"], [type="radio"], [type="range"]), textarea, [contenteditable="true"]) { cursor: var(--text); }
:where(input:disabled, textarea:disabled) { cursor: var(--no); }
:where([aria-busy="true"]) { cursor: var(--wait); }
