/* Bombarera V64 — unified native cursor layer.
   Performance: CSS only. No mousemove, RAF, canvas, DOM follower or JS cursor tracking.
   All legacy cursor declarations resolve through the same semantic tokens, so selector
   specificity can no longer leak an operating-system cursor into the game UI. */

:root{
  --bm-cursor-default:url('../assets/ui/cursors/cursor-default-v64.png') 3 2, default;
  --bm-cursor-action:url('../assets/ui/cursors/cursor-action-v64.png') 3 2, pointer;
  --bm-cursor-disabled:url('../assets/ui/cursors/cursor-disabled-v64.png') 3 2, not-allowed;
  --bm-cursor-move:url('../assets/ui/cursors/cursor-move-v64.png') 16 16, move;
  --bm-cursor-move-active:url('../assets/ui/cursors/cursor-move-active-v64.png') 16 16, move;
  --bm-cursor-wait:url('../assets/ui/cursors/cursor-action-v64.png') 3 2, progress;
}

@media (hover:hover) and (pointer:fine){
  /* Cover the document root, every rendered node and pseudo-element. */
  html,
  body,
  body *,
  body *::before,
  body *::after{
    cursor:var(--bm-cursor-default)!important;
  }

  /* Interactive surface and every nested visual layer. */
  :is(
    a[href], button:not(:disabled), summary, select:not(:disabled), label[for],
    [role='button']:not([aria-disabled='true']),
    [role='switch']:not([aria-disabled='true']),
    [onclick],
    input[type='button']:not(:disabled), input[type='submit']:not(:disabled),
    input[type='reset']:not(:disabled), input[type='checkbox']:not(:disabled),
    input[type='radio']:not(:disabled), input[type='range']:not(:disabled),
    [data-app-link], [data-ui-modal-trigger], [data-achievement-filter],
    [data-achievement-claim], [data-story-open], [data-story-chapter]:not(:disabled),
    [data-sp4-close], [data-skin-filter], [data-skin-page]:not(:disabled),
    [data-skin-step], [data-skin-select], [data-skin-action]:not(:disabled),
    [data-bonus], [data-continue], [data-action], [data-cursor='pointer'],
    .btn, .icon-btn, .runtime-loader-v41__home, .runtime-loader-v41__retry,
    .v42-recovery__actions button, .header-language, .daily-reward-float,
    .ui-dialog__close, .story-briefing__close, .story-briefing__btn,
    .story-region-tab:not(.is-locked), .story-hub--story3 .story-button:not(:disabled),
    .story-hub--story3 .story-region-card:not(.is-locked), .story-picker-v4__close,
    .sp4-chapter:not(.is-locked), .sp4-stage__play:not(:disabled),
    .sp4-mission:not(.is-locked), .skins-locker-v7__hero-nav,
    .skins-locker-v7__cta:not(:disabled):not(.is-locked), .skins-locker-v7__filter,
    .skins-locker-v7__card, .skins-ref-v12__pager button:not(:disabled),
    .achievement-claim-btn:not(:disabled), .achievement-toolbar button:not(:disabled),
    .survival-tutorial__btn:not(:disabled), .survival-bonus-option:not(:disabled),
    .survival-gameover-btn:not(:disabled), .survival-upgrade-confirm__button:not(:disabled),
    .tutorial__close, .tutorial__btn:not(:disabled), .promo-card__close,
    .promo-form__submit:not(:disabled), .contact-card__close, .settings-card__close,
    .settings-card__btn:not(:disabled), .settings-v59__switch:not(:disabled),
    .settings-v59__range:not(:disabled), .settings-v59__select:not(:disabled),
    .live-tutorial__skip
  ),
  :is(
    a[href], button:not(:disabled), summary, select:not(:disabled), label[for],
    [role='button']:not([aria-disabled='true']), [role='switch']:not([aria-disabled='true']),
    [onclick], [data-app-link], [data-ui-modal-trigger], [data-achievement-filter],
    [data-achievement-claim], [data-story-open], [data-story-chapter]:not(:disabled),
    [data-sp4-close], [data-skin-filter], [data-skin-page]:not(:disabled),
    [data-skin-step], [data-skin-select], [data-skin-action]:not(:disabled),
    [data-bonus], [data-continue], [data-action], [data-cursor='pointer'],
    .btn, .icon-btn, .header-language, .daily-reward-float,
    .story-region-tab:not(.is-locked), .story-hub--story3 .story-region-card:not(.is-locked),
    .sp4-chapter:not(.is-locked), .sp4-mission:not(.is-locked),
    .skins-locker-v7__card
  ) *,
  :is(
    a[href], button:not(:disabled), summary, select:not(:disabled), label[for],
    [role='button']:not([aria-disabled='true']), [role='switch']:not([aria-disabled='true']),
    [onclick], [data-app-link], [data-ui-modal-trigger], [data-achievement-filter],
    [data-achievement-claim], [data-story-open], [data-story-chapter]:not(:disabled),
    [data-sp4-close], [data-skin-filter], [data-skin-page]:not(:disabled),
    [data-skin-step], [data-skin-select], [data-skin-action]:not(:disabled),
    [data-bonus], [data-continue], [data-action], [data-cursor='pointer'],
    .btn, .icon-btn, .header-language, .daily-reward-float,
    .story-region-tab:not(.is-locked), .story-hub--story3 .story-region-card:not(.is-locked),
    .sp4-chapter:not(.is-locked), .sp4-mission:not(.is-locked),
    .skins-locker-v7__card
  ) *::before,
  :is(
    a[href], button:not(:disabled), summary, select:not(:disabled), label[for],
    [role='button']:not([aria-disabled='true']), [role='switch']:not([aria-disabled='true']),
    [onclick], [data-app-link], [data-ui-modal-trigger], [data-achievement-filter],
    [data-achievement-claim], [data-story-open], [data-story-chapter]:not(:disabled),
    [data-sp4-close], [data-skin-filter], [data-skin-page]:not(:disabled),
    [data-skin-step], [data-skin-select], [data-skin-action]:not(:disabled),
    [data-bonus], [data-continue], [data-action], [data-cursor='pointer'],
    .btn, .icon-btn, .header-language, .daily-reward-float,
    .story-region-tab:not(.is-locked), .story-hub--story3 .story-region-card:not(.is-locked),
    .sp4-chapter:not(.is-locked), .sp4-mission:not(.is-locked),
    .skins-locker-v7__card
  ) *::after{
    cursor:var(--bm-cursor-action)!important;
  }

  /* Text editing is the only intentionally native-shaped precision cursor. */
  :is(input:not([type]),input[type='text'],input[type='search'],input[type='email'],
      input[type='password'],input[type='url'],input[type='tel'],input[type='number'],
      textarea,[contenteditable='true']),
  :is(input:not([type]),input[type='text'],input[type='search'],input[type='email'],
      input[type='password'],input[type='url'],input[type='tel'],input[type='number'],
      textarea,[contenteditable='true']) *{
    cursor:text!important;
  }

  :is(button,input,select,textarea):disabled,
  :is(button,input,select,textarea):disabled *,
  [aria-disabled='true'], [aria-disabled='true'] *,
  [data-cursor='disabled'], [data-cursor='disabled'] *,
  .is-locked, .is-locked *{
    cursor:var(--bm-cursor-disabled)!important;
  }

  [data-cursor='grab'],[data-cursor='grab'] *{cursor:var(--bm-cursor-move)!important}
  [data-cursor='grab']:active,[data-cursor='grab']:active *,
  [data-cursor='grabbing'],[data-cursor='grabbing'] *{cursor:var(--bm-cursor-move-active)!important}

  [aria-busy='true'],[aria-busy='true'] *,[data-cursor='wait'],[data-cursor='wait'] *{
    cursor:var(--bm-cursor-wait)!important;
  }
}

/* Touch/coarse pointers do not render a desktop cursor. */
@media (hover:none), (pointer:coarse){
  html,body,body *,body *::before,body *::after{cursor:auto!important}
}
