/* Shared UX polish: hand cursor on interactive things + a full-page load spinner.
   Linked on every page. Kept tiny and framework-agnostic. */

/* ---- pointer cursor for anything clickable ---- */
button:not([disabled]):not([aria-disabled="true"]),
[role="button"]:not([aria-disabled="true"]),
a[href],
summary,
label[for],
label:has(> input[type="checkbox"]),
label:has(> input[type="radio"]),
select,
input[type="checkbox"],
input[type="radio"],
input[type="range"],
input[type="file"],
input[type="submit"],
input[type="reset"],
[data-view], [data-aspect], [data-q], [data-f], [data-seek],
[data-account], [data-signout], [data-google], [data-pp], [data-new-ws], [data-tab],
[onclick],
.cursor-pointer,
[class*="cursor-pointer"] { cursor: pointer; }

button[disabled],
[aria-disabled="true"],
.cursor-not-allowed,
[class*="cursor-not-allowed"] { cursor: not-allowed; }

/* ---- full-page load spinner (white bg, green spinner) ---- */
#pageLoader {
  position: fixed; inset: 0; z-index: 99999;
  display: flex; align-items: center; justify-content: center;
  background: #ffffff;
  opacity: 1; transition: opacity .3s ease;
}
#pageLoader.hide { opacity: 0; pointer-events: none; }
#pageLoader .pl-spin {
  width: 46px; height: 46px; border-radius: 50%;
  border: 4px solid #e3ece7; border-top-color: #10794f;
  animation: pl-rot .7s linear infinite;
}
@keyframes pl-rot { to { transform: rotate(360deg); } }
@media (prefers-reduced-motion: reduce) { #pageLoader .pl-spin { animation-duration: 1.6s; } }
