/* Native CSS cursors keep browser hit testing, selection, and pointer lock intact. */
@media (any-pointer: fine) {
  :where(body, body *) { cursor: inherit; }
  html { cursor: var(--beatori-cursor-arrow, default); }
  :is(a[href], button, summary, select, [role="button"], [role="tab"], [role="menuitem"], input:is([type="button"], [type="submit"], [type="reset"], [type="checkbox"], [type="radio"], [type="range"])) {
    cursor: var(--beatori-cursor-pointer, pointer);
  }
  :is(input:not([type]), input:is([type="text"], [type="email"], [type="password"], [type="search"], [type="url"], [type="tel"], [type="number"]), textarea, [contenteditable="true"], [contenteditable=""]) {
    cursor: var(--beatori-cursor-text, text);
  }
  /* Set by cursors.js while the pointer is over a line of selectable text. */
  [data-beatori-text-cursor] { cursor: var(--beatori-cursor-text, text); }
  [draggable="true"] { cursor: var(--beatori-cursor-grab, grab); }
  [draggable="true"]:active { cursor: var(--beatori-cursor-grabbing, grabbing); }
  :is(button, a, summary, [role="button"], [role="tab"]) :is(svg, path, span, i, img) { cursor: inherit; }
  :is(:disabled, [aria-disabled="true"]) { cursor: var(--beatori-cursor-not-allowed, not-allowed); }
  :is([aria-busy="true"], .is-loading), :is([aria-busy="true"], .is-loading) * {
    cursor: var(--beatori-cursor-working, progress) !important;
  }
  html:has([data-page-loader].is-transitioning:not(.is-complete)),
  html:has([data-page-loader].is-transitioning:not(.is-complete)) * {
    cursor: var(--beatori-cursor-working, progress) !important;
  }
  /* Explicit semantic states also work in dynamically inserted/Blazor content. */
  [data-beatori-cursor], [data-beatori-cursor] * { cursor: var(--beatori-active-cursor, var(--beatori-cursor-arrow)) !important; }
  html[data-beatori-autoscroll], html[data-beatori-autoscroll] * { cursor: var(--beatori-autoscroll-cursor, all-scroll) !important; }
}
.beatori-autoscroll-anchor {
  position: fixed; width: 40px; height: 40px; transform: translate(-50%, -50%);
  z-index: 2147483647; pointer-events: none; background-size: contain;
  background-image: url("../images/cursors/scroll-all.png");
}
.beatori-autoscroll-anchor[data-axis="ns"] { background-image: url("../images/cursors/scroll-ns.png"); }
.beatori-autoscroll-anchor[data-axis="ew"] { background-image: url("../images/cursors/scroll-ew.png"); }
