:root {
    --v152-spade-cursor-image:url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIzMiIgaGVpZ2h0PSIzMiIgdmlld0JveD0iMCAwIDMyIDMyIiByb2xlPSJpbWciIGFyaWEtbGFiZWw9IlNwYWRlIGN1cnNvciI+CiAgPHRpdGxlPlNwYWRlIGN1cnNvcjwvdGl0bGU+CiAgPGcgaWQ9InNwYWRlLXRpbHQiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDE2IDIuMikgcm90YXRlKC0xNCkgc2NhbGUoLjg4KSB0cmFuc2xhdGUoLTE2IC0yLjIpIj4KICAgIDxwYXRoIGlkPSJzcGFkZS1vdXRsaW5lIiBkPSJNMTYgMi4yQzE0LjM1IDYuMjUgNC4xIDExLjM1IDQuMSAxOC4yYzAgMy44MyAyLjczIDYuNDUgNi4yIDYuNDUgMi4xOCAwIDMuNzctMS4wNSA0LjcyLTIuNzktLjE5IDMuNDMtMS4zOCA2LjAxLTMuODIgNy45NGg5LjZjLTIuNDQtMS45My0zLjYzLTQuNTEtMy44Mi03Ljk0Ljk1IDEuNzQgMi41NCAyLjc5IDQuNzIgMi43OSAzLjQ3IDAgNi4yLTIuNjIgNi4yLTYuNDVDMjcuOSAxMS4zNSAxNy42NSA2LjI1IDE2IDIuMloiIGZpbGw9IiMxMTEyMTYiIHN0cm9rZT0iI2ZmZjhlOCIgc3Ryb2tlLXdpZHRoPSIzIiBzdHJva2UtbGluZWpvaW49InJvdW5kIi8+CiAgICA8cGF0aCBpZD0ic3BhZGUtbWFyayIgZD0iTTE2IDIuMkMxNC4zNSA2LjI1IDQuMSAxMS4zNSA0LjEgMTguMmMwIDMuODMgMi43MyA2LjQ1IDYuMiA2LjQ1IDIuMTggMCAzLjc3LTEuMDUgNC43Mi0yLjc5LS4xOSAzLjQzLTEuMzggNi4wMS0zLjgyIDcuOTRoOS42Yy0yLjQ0LTEuOTMtMy42My00LjUxLTMuODItNy45NC45NSAxLjc0IDIuNTQgMi43OSA0LjcyIDIuNzkgMy40NyAwIDYuMi0yLjYyIDYuMi02LjQ1QzI3LjkgMTEuMzUgMTcuNjUgNi4yNSAxNiAyLjJaIiBmaWxsPSIjMTExMjE2IiBzdHJva2U9IiNjYmE5NTciIHN0cm9rZS13aWR0aD0iMSIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCIvPgogICAgPHBhdGggZD0iTTE2IDQuNDVjLTEuMzIgMi4yLTMuNTggNC4xLTUuNzIgNi4wMiIgZmlsbD0ibm9uZSIgc3Ryb2tlPSIjZmZmMmM1IiBzdHJva2Utd2lkdGg9Ii43NSIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIiBvcGFjaXR5PSIuNzIiLz4KICA8L2c+Cjwvc3ZnPgo=");
}

/* A deliberately high-specificity scope overrides the many historical
   pointer declarations while keeping native semantic states below. */
html,
html body:not(#v152-native-cursor) {
    cursor:var(--v152-spade-cursor-image) 16 2,auto !important;
}
html body:not(#v152-native-cursor) * {
    cursor:inherit !important;
}

html body:not(#v152-native-cursor) :is(
    a[href],button:not(:disabled),summary,label[for],select:not(:disabled),
    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="file"]:not(:disabled),
    [role="button"]:not([aria-disabled="true"]),[onclick],
    [tabindex]:not([tabindex="-1"]),.clickable-card
) {
    cursor:var(--v152-spade-cursor-image) 16 2,pointer !important;
}

html body:not(#v152-native-cursor) input[type="range"],
html body:not(#v152-native-cursor) input[type="range"]::-webkit-slider-thumb {
    cursor:var(--v152-spade-cursor-image) 16 2,pointer !important;
}

/* Editing remains precise: these controls keep the native I-beam. */
html body:not(#v152-native-cursor) :is(
    input[type="text"],input[type="search"],input[type="email"],
    input[type="password"],input[type="number"],input[type="tel"],
    input[type="url"],textarea,
    [contenteditable]:not([contenteditable="false"]),
    [contenteditable]:not([contenteditable="false"]) *
) { cursor:text !important; }

/* Disabled controls retain an unmistakable unavailable state. */
html body:not(#v152-native-cursor) :is(
    :disabled,[aria-disabled="true"],.is-disabled,.is-locked
) { cursor:not-allowed !important; }

html body:not(#v152-native-cursor) :is(
    body.v129-tutorial-live .card.v129-disabled,
    .v120-playing-card:disabled,.v103-nav-button:disabled,
    .v142-option-action:disabled
) { cursor:default !important; }

/* Existing drag, dismissal and asynchronous states are functional feedback. */
html body:not(#v152-native-cursor) .v56-chain-log-backdrop { cursor:zoom-out !important; }
html body:not(#v152-native-cursor) #v56-chain-log-scroll { cursor:grab !important; }
html body:not(#v152-native-cursor) #v56-chain-log-scroll.v56-dragging { cursor:grabbing !important; }
html body:not(#v152-native-cursor) #v135-trial-button[aria-busy="true"] { cursor:progress !important; }
html body:not(#v152-native-cursor) #v129-guide-action:disabled { cursor:wait !important; }
html body.v135-trial-routing:not(#v152-native-cursor),
html body.v135-trial-routing:not(#v152-native-cursor) * { cursor:wait !important; }

/* Future resizable panels can opt in without losing their directional cue. */
html body:not(#v152-native-cursor) :is(.v152-cursor-ew-resize,[data-cursor="ew-resize"],[style*="cursor:ew-resize"],[style*="cursor: ew-resize"]) { cursor:ew-resize !important; }
html body:not(#v152-native-cursor) :is(.v152-cursor-ns-resize,[data-cursor="ns-resize"],[style*="cursor:ns-resize"],[style*="cursor: ns-resize"]) { cursor:ns-resize !important; }
html body:not(#v152-native-cursor) :is(.v152-cursor-nwse-resize,[data-cursor="nwse-resize"],[style*="cursor:nwse-resize"],[style*="cursor: nwse-resize"]) { cursor:nwse-resize !important; }
html body:not(#v152-native-cursor) :is(.v152-cursor-nesw-resize,[data-cursor="nesw-resize"],[style*="cursor:nesw-resize"],[style*="cursor: nesw-resize"]) { cursor:nesw-resize !important; }
html body:not(#v152-native-cursor) :is(.v152-cursor-row-resize,[data-cursor="row-resize"],[style*="cursor:row-resize"],[style*="cursor: row-resize"]) { cursor:row-resize !important; }
html body:not(#v152-native-cursor) :is(.v152-cursor-col-resize,[data-cursor="col-resize"],[style*="cursor:col-resize"],[style*="cursor: col-resize"]) { cursor:col-resize !important; }
html body:not(#v152-native-cursor) textarea::-webkit-resizer,
html body:not(#v152-native-cursor) .opponent-chain-log::-webkit-resizer { cursor:nwse-resize !important; }

@media (forced-colors:active) {
    html,html body:not(#v152-native-cursor),html body:not(#v152-native-cursor) * { cursor:auto !important; }
    html body:not(#v152-native-cursor) :is(input,textarea,[contenteditable]:not([contenteditable="false"])) { cursor:text !important; }
    html body:not(#v152-native-cursor) :is(:disabled,[aria-disabled="true"]) { cursor:not-allowed !important; }
}
