/* ============================================================================
   cursors.css — macOS-style cursor module
   ----------------------------------------------------------------------------
   Modular: include via <link> in index.html, remove the link to disable.
   The default arrow uses an SVG data-URI approximating macOS's classic
   black-with-white-outline pointer. Hotspot is the top-left tip.

   To disable just the custom arrow (keep type consistency rules), comment
   out the `body` rule below.
   ============================================================================ */

/* Custom macOS-style pointer.
   Path data is the canonical macOS arrow geometry from ful1e5/apple_cursor
   (https://github.com/ful1e5/apple_cursor — public domain). Single path with
   stroke-as-halo via paint-order so the white outline renders behind the
   black fill. viewBox cropped to the arrow bounds.

   Rendered size: 12×18, matching the native macOS pointer footprint at
   default System Settings → Pointer size. Hotspot: (1, 1) at the tip.
   Fallback: system default. */
body {
    cursor:
        url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='12' height='18' viewBox='78 42 114 175'><path fill='%23000' stroke='%23fff' stroke-width='11' stroke-linejoin='round' stroke-linecap='round' paint-order='stroke' d='M84.1 48.56V173.06L110.8 146.56L136.3 207.56L158.3 197.06L133.8 139.06H172.8L84.1 48.56Z'/></svg>") 1 1,
        default;
}

/* I-beam for any text input. Browser default is fine but ensures consistency
   when a parent overrides cursor (e.g. body's custom arrow above). */
input[type="text"],
input[type="search"],
input[type="email"],
input[type="password"],
input[type="number"],
input[type="url"],
input[type="tel"],
textarea,
[contenteditable="true"],
[contenteditable=""] {
    cursor: text;
}

/* Pointing finger for clickable affordances. Most existing code already sets
   this; these rules just guarantee no element falls through the cracks. */
a[href],
button:not([disabled]),
[role="button"]:not([aria-disabled="true"]),
[role="link"],
[role="menuitem"],
.menu-item,
.menu-trigger,
.dock-icon,
.dock-context-item,
summary {
    cursor: pointer;
}

/* Disabled affordances visually communicate non-interactivity */
button[disabled],
[role="button"][aria-disabled="true"],
.disabled {
    cursor: not-allowed;
}

/* Grab cursor on draggable surfaces (windows already set this on their
   header; this catches Launchpad icon drag, Finder list rows, etc.) */
[draggable="true"]:not(:active) {
    cursor: grab;
}
[draggable="true"]:active {
    cursor: grabbing;
}
