/* App-wide custom cursor layer (Field Journal drawn set) — web only.
   Mirrors the cursor rules in public/landing.html so the same drawn
   hand follows you across the whole site, not just the marketing page.
   Pointer devices only; touch/coarse pointers keep the system cursor. */
@media (hover: hover) and (pointer: fine) {
  body {
    cursor: url('/cursors/arrow.png') 4 0, default;
    cursor: -webkit-image-set(url('/cursors/arrow.png') 1x, url('/cursors/arrow@2x.png') 2x) 4 0, default;
  }
  /* !important beats React Native Web's inline cursor:pointer on Pressable. */
  a, button, summary, label,
  [role="button"], [role="link"], [role="tab"], [role="switch"], [role="checkbox"], [role="radio"],
  [tabindex]:not([tabindex="-1"]) {
    cursor: url('/cursors/pointer.png') 6 0, pointer !important;
    cursor: -webkit-image-set(url('/cursors/pointer.png') 1x, url('/cursors/pointer@2x.png') 2x) 6 0, pointer !important;
  }
  /* Attribute selector doubled ([disabled][disabled]) to outrank the
     pointer rule above on specificity rather than tie-break order: a
     disabled [role="button"] matches both rules at equal (0,1,0)
     specificity otherwise, and relying on "this rule is later in the file"
     to settle a tie is exactly the kind of thing a future reorder silently
     breaks. Verified this rule was in fact losing that tie before the
     double-attribute bump. */
  [disabled][disabled], [aria-disabled="true"][aria-disabled="true"] {
    cursor: url('/cursors/not-allowed.png') 12 12, not-allowed !important;
    cursor: -webkit-image-set(url('/cursors/not-allowed.png') 1x, url('/cursors/not-allowed@2x.png') 2x) 12 12, not-allowed !important;
  }
  input, textarea, select {
    cursor: url('/cursors/text.png') 6 12, text;
    cursor: -webkit-image-set(url('/cursors/text.png') 1x, url('/cursors/text@2x.png') 2x) 6 12, text;
  }
}
