/* css/cursors.css — Custom cursor theme system */

/* ========================================
   CURSOR SYSTEM
   ======================================== */

/* === Cursor variables === */
:root {
  --cursor-default: url("https://cdn.wolfbard.art/cursors/arrow.cur"), default;
  --cursor-text: url("https://cdn.wolfbard.art/cursors/text.cur"), text;
  --cursor-pointer: url("https://cdn.wolfbard.art/cursors/link_select.cur"),
    pointer;

  --cursor-busy: url("https://cdn.wolfbard.art/cursors/busy.ani"), wait;
  --cursor-starting: url("https://cdn.wolfbard.art/cursors/starting.ani"),
    progress;

  --cursor-help: url("https://cdn.wolfbard.art/cursors/help_select.cur"), help;
  --cursor-alternate: url("https://cdn.wolfbard.art/cursors/alternate_select.cur"),
    alias;

  --cursor-move: url("https://cdn.wolfbard.art/cursors/move.cur"), move;
  --cursor-precision: url("https://cdn.wolfbard.art/cursors/precision_select.cur"),
    crosshair;

  /* Intentionally mapped as you had it */
  --cursor-handwriting: url("https://cdn.wolfbard.art/cursors/handwriting.cur"),
    text;
  --cursor-unavailable: url("https://cdn.wolfbard.art/cursors/handwriting.cur"),
    not-allowed;

  --cursor-resize-h: url("https://cdn.wolfbard.art/cursors/horizontal.cur"),
    ew-resize;
  --cursor-resize-v: url("https://cdn.wolfbard.art/cursors/vertical.cur"),
    ns-resize;
  --cursor-resize-nwse: url("https://cdn.wolfbard.art/cursors/diagonal_resize_1.cur"),
    nwse-resize;
  --cursor-resize-nesw: url("https://cdn.wolfbard.art/cursors/diagonal_resize_2.cur"),
    nesw-resize;

  --cursor-grab: grab;
  --cursor-grabbing: grabbing;
}

/* === Normal (default arrow) === */
html,
body {
  cursor: var(--cursor-default);
}

/* === Text entry (I-beam) === */
input[type="text"],
input[type="search"],
input[type="email"],
input[type="url"],
input[type="password"],
input[type="tel"],
textarea,
[contenteditable],
[contenteditable="true"] {
  cursor: var(--cursor-text);
}

/* === Links / clickable (pointer hand) === */
a,
button,
input[type="button"],
input[type="submit"],
input[type="reset"],
label,
.pointer {
  cursor: var(--cursor-pointer);
}

/* === Disabled states === */
button:disabled,
[aria-disabled="true"],
.btn[disabled],
a[aria-disabled="true"] {
  cursor: var(--cursor-unavailable);
}

/* === Busy / loading === */
.wait,
[aria-busy="true"] {
  cursor: var(--cursor-busy);
}
.starting {
  cursor: var(--cursor-starting);
}

/* === Help / alternate select === */
.help,
[aria-haspopup="dialog"],
[aria-haspopup="menu"] {
  cursor: var(--cursor-help);
}
.alternate {
  cursor: var(--cursor-alternate);
}

/* === Move / precision === */
.move,
[draggable="true"] {
  cursor: var(--cursor-move);
}
.precision {
  cursor: var(--cursor-precision);
}

/* === Handwriting / unavailable === */
.handwriting {
  cursor: var(--cursor-handwriting);
}
.unavailable,
[aria-invalid="true"],
[aria-disabled="true"] {
  cursor: var(--cursor-unavailable);
}

/* === Resize cursors === */
.horizontal,
.ew-resize {
  cursor: var(--cursor-resize-h);
}
.vertical,
.ns-resize {
  cursor: var(--cursor-resize-v);
}
.diagonal1,
.nwse-resize {
  cursor: var(--cursor-resize-nwse);
}
.diagonal2,
.nesw-resize {
  cursor: var(--cursor-resize-nesw);
}

/* === Drag helpers === */
.grab {
  cursor: var(--cursor-grab);
}
.grabbing {
  cursor: var(--cursor-grabbing);
}

/* =========================================================
   Paragraphs / Headings / Lists: arrow box + I-beam text
   ========================================================= */

/* Keep layout containers neutral */
article,
section,
main,
header,
footer,
.card,
.card-body,
.wrap,
.updates,
.sm-card,
.misc-card,
.blurb {
  cursor: var(--cursor-default);
  user-select: auto;
}

/* Paragraph, heading, list boxes stay arrow */
p,
h2,
ul,
ol,
li,
blockquote {
  cursor: var(--cursor-default) !important;
}

/* Wrapped text runs (via JS) show I-beam */
p > .text-run,
h2 > .text-run,
li > .text-run,
blockquote > .text-run {
  cursor: var(--cursor-text);
  user-select: text !important;
}

/* Inline formatting tags also show I-beam */
p
  :where(
    span,
    strong,
    b,
    em,
    i,
    u,
    s,
    mark,
    small,
    code,
    kbd,
    samp,
    var,
    sub,
    sup,
    time
  ),
h2
  :where(
    span,
    strong,
    b,
    em,
    i,
    u,
    s,
    mark,
    small,
    code,
    kbd,
    samp,
    var,
    sub,
    sup,
    time
  ),
li
  :where(
    span,
    strong,
    b,
    em,
    i,
    u,
    s,
    mark,
    small,
    code,
    kbd,
    samp,
    var,
    sub,
    sup,
    time
  ),
blockquote
  :where(
    span,
    strong,
    b,
    em,
    i,
    u,
    s,
    mark,
    small,
    code,
    kbd,
    samp,
    var,
    sub,
    sup,
    time
  ) {
  cursor: var(--cursor-text);
  user-select: text !important;
}

/* Links remain pointer, even inside paragraphs/headings/lists */
p a,
h2 a,
li a,
a[href] {
  cursor: var(--cursor-pointer);
}

/* ===== Lightbox & Detail pages: arrow box + I-beam text ===== */

/* Keep containers neutral (arrow) so only real text flips to I-beam */
#lightbox,
#lightbox .frame,
#lb-caption,
.variant-strip,
.variant-item,
.variant-thumb,
.cameo-panel,
.detail-wrap,
.detail-hero,
.detail-meta,
.detail-nav {
  cursor: var(--cursor-default);
}

/* Any explicit text-run gets I-beam + selection */
#lb-caption .text-run,
.variant-strip .thumb-label.text-run,
.cameo-panel .text-run,
.detail-wrap .text-run,
.detail-meta .text-run,
.detail-nav .text-run {
  cursor: var(--cursor-text);
  user-select: text !important;
}

/* Inline formatting inside those regions also gets I-beam */
#lb-caption
  :where(
    span,
    strong,
    b,
    em,
    i,
    u,
    s,
    mark,
    small,
    code,
    kbd,
    samp,
    var,
    sub,
    sup,
    time
  ),
.detail-wrap
  :where(
    span,
    strong,
    b,
    em,
    i,
    u,
    s,
    mark,
    small,
    code,
    kbd,
    samp,
    var,
    sub,
    sup,
    time
  ) {
  cursor: var(--cursor-text);
  user-select: text !important;
}

/* Links stay clickable (hand) */
#lb-caption a,
.detail-wrap a,
a[href] {
  cursor: var(--cursor-pointer);
}

/* ===== Cameo chips: clickable chips => hand everywhere; non-links stay arrow ===== */
a.cameo-chip,
a.cameo-chip * {
  cursor: var(--cursor-pointer);
}
.cameo-chip:not(a) {
  cursor: var(--cursor-default);
}

/* ===== Detail/slug views: ensure links always show hand ===== */
.detail-wrap a,
.detail-meta a,
.detail-nav a,
#lb-caption a {
  cursor: var(--cursor-pointer) !important;
}

/* Scope fixes to the full-page slug meta area only */
.detail-meta :is(h1, h2, h3, h4, h5, h6, p, li) {
  /* keep containers neutral; let children decide */
  cursor: var(--cursor-default) !important;
  pointer-events: auto !important;
}

/* Artist URL (and any link) must always be a hand */
.detail-meta a,
.detail-meta a * {
  cursor: var(--cursor-pointer) !important;
  pointer-events: auto !important;
}

/* (Optional) keep plain cameo labels arrow, if they appear in meta */
.detail-meta .cameo-name {
  cursor: var(--cursor-default) !important;
  user-select: none;
}
