/* Cozmo-themed cursors (owner ask 2026-09-26; v3.3: UNIVERSAL).
 *
 * The cursors are the site's own cozmic icon set (the academy UI's
 * lucide-stroke language) — brand-cyan over a navy halo, 20px.
 *
 * One themed cursor per page that NEVER changes shape. v3.2 tried to
 * enumerate clickables and lost: pages wrap anchors around styled
 * DIVs carrying their own `cursor: pointer` (login role cards, the
 * Meet Cozmo video cards), so the theme vanished into the native hand
 * on exactly the fanciest elements. Now the themed cursor applies to
 * body AND every descendant, with two explicit exceptions placed LAST
 * (same specificity tier, later wins): typing surfaces keep the
 * I-beam, disabled controls say not-allowed.
 *
 * Image URLs carry ?v=3 — earlier versions shipped different images
 * at the same paths and browsers kept the cached ones. Bump when
 * regenerating. Cross-origin iframes (embedded players) draw their
 * own cursor; that's a browser boundary nothing outside them crosses.
 *
 * Wrapped in (hover:hover) and (pointer:fine) so phones and tablets
 * never download the images. Every rule ends with a native fallback.
 */
@media (hover: hover) and (pointer: fine) {
    body, body * {
        cursor: url('/static/cursors/rocket.png?v=3') 2 2, auto !important;
    }
    body[data-cursor="arcade"], body[data-cursor="arcade"] * {
        cursor: url('/static/cursors/joystick.png?v=3') 4 4, auto !important;
    }
    body[data-cursor="orbit"], body[data-cursor="orbit"] * {
        cursor: url('/static/cursors/planet.png?v=3') 4 4, auto !important;
    }
    body[data-cursor="market"], body[data-cursor="market"] * {
        cursor: url('/static/cursors/coin.png?v=3') 4 4, auto !important;
    }
    body[data-cursor="life"], body[data-cursor="life"] * {
        cursor: url('/static/cursors/house.png?v=3') 4 4, auto !important;
    }

    /* Exceptions LAST — (0,1,2) ties the theme tier, later wins.
       Typing surfaces keep the I-beam. */
    body input[type="text"], body input[type="email"],
    body input[type="password"], body input[type="number"],
    body input[type="search"], body input[type="tel"],
    body input[type="url"], body textarea,
    body [contenteditable="true"] {
        cursor: text !important;
    }

    /* Disabled things say so. */
    body button:disabled, body input:disabled, body select:disabled,
    body [aria-disabled="true"] {
        cursor: not-allowed !important;
    }
}
