/* =====================================================================
 * Eldoria custom cursors (2026-06-11, v2)
 *
 * Cursor temático estilo espada — solo dentro de .game-shell.
 * Hotspot: (5, 3) — la punta de la hoja en los 4 SVG.
 *
 * 2026-06-11 v2 — FIX hover/active no funcionaban porque `.game-shell *`
 * pisaba el cursor de los <i>/<span> dentro de los buttons. Solución:
 * cubrir explícitamente los descendientes de cada clickable con `:is(...) *`.
 * ===================================================================== */

/* DEFAULT: shell y todos sus descendientes */
.game-shell,
.game-shell * {
  cursor: url('/assets/cursors/sword_default.svg') 5 3, auto;
}

/* HOVER: clickables Y sus descendientes (icons, spans internos).
   Sin esto, hover sobre el icono <i> mostraba el cursor default. */
.game-shell :is(
  a,
  button,
  [role="button"],
  [data-tab],
  [data-action],
  .nav-item,
  .sv3-icon,
  .sv3-cat,
  .nv2-item,
  .nv2-cat,
  .ev-modal-close,
  .modal-close,
  .clickable,
  .cmg-avatar,
  .qc-mini-badge,
  .chat-widget-tab,
  .top-action-btn,
  .tbv2-btn,
  select,
  summary,
  label[for],
  input[type="checkbox"],
  input[type="radio"],
  input[type="submit"],
  input[type="button"]
),
.game-shell :is(
  a,
  button,
  [role="button"],
  [data-tab],
  [data-action],
  .nav-item,
  .sv3-icon,
  .sv3-cat,
  .nv2-item,
  .nv2-cat,
  .ev-modal-close,
  .modal-close,
  .clickable,
  .cmg-avatar,
  .qc-mini-badge,
  .chat-widget-tab,
  .top-action-btn,
  .tbv2-btn,
  summary,
  label[for]
) * {
  cursor: url('/assets/cursors/sword_hover.svg') 5 3, pointer !important;
}

/* ACTIVE: cuando se mantiene clickeado, chispa en la punta */
.game-shell :is(
  a,
  button,
  [role="button"],
  [data-tab],
  [data-action],
  .nav-item,
  .clickable,
  .top-action-btn,
  .tbv2-btn,
  summary
):active,
.game-shell :is(
  a,
  button,
  [role="button"],
  [data-tab],
  [data-action],
  .nav-item,
  .clickable,
  .top-action-btn,
  .tbv2-btn,
  summary
):active * {
  cursor: url('/assets/cursors/sword_active.svg') 5 3, pointer !important;
}

/* DISABLED: espada gris + prohibición */
.game-shell [disabled],
.game-shell [disabled] *,
.game-shell .is-disabled,
.game-shell .is-disabled *,
.game-shell button:disabled,
.game-shell button:disabled *,
.game-shell input:disabled,
.game-shell select:disabled,
.game-shell .disabled,
.game-shell .disabled * {
  cursor: url('/assets/cursors/sword_disabled.svg') 5 3, not-allowed !important;
}

/* TEXT INPUTS: mantienen cursor I-beam estándar (mejor UX para typing) */
.game-shell input[type="text"],
.game-shell input[type="email"],
.game-shell input[type="password"],
.game-shell input[type="number"],
.game-shell input[type="search"],
.game-shell input[type="tel"],
.game-shell input[type="url"],
.game-shell textarea,
.game-shell [contenteditable="true"] {
  cursor: text !important;
}

/* DRAG handles: grab/grabbing nativos */
.game-shell input[type="range"],
.game-shell .draggable,
.game-shell [draggable="true"] {
  cursor: grab !important;
}
.game-shell input[type="range"]:active,
.game-shell .draggable:active,
.game-shell [draggable="true"]:active {
  cursor: grabbing !important;
}
