@media (pointer: fine) and (prefers-reduced-motion: no-preference) {
    html.has-fire-cursor,
    html.has-fire-cursor * {
        cursor: none !important;
    }

    .fire-cursor {
        position: fixed;
        z-index: 2147483647;
        top: 0;
        left: 0;
        width: 13px;
        height: 13px;
        margin: -7px 0 0 -7px;
        pointer-events: none;
        border: 1px solid #d8ffe7;
        border-radius: 50%;
        background: #00ff75;
        box-shadow: 0 0 9px #00ff75, 0 0 24px rgba(0,255,117,.9), 0 0 45px rgba(0,255,117,.5);
        mix-blend-mode: screen;
        opacity: 0;
        transition: width .12s, height .12s, margin .12s, background .12s, opacity .12s;
    }

    .fire-cursor.is-visible { opacity: 1; }

    .fire-cursor::after {
        content: "";
        position: absolute;
        left: 50%;
        top: 50%;
        width: 5px;
        height: 5px;
        transform: translate(-50%, -50%);
        border-radius: 50%;
        background: #effff4;
        box-shadow: 0 0 5px #effff4, 0 0 13px #00ff75;
    }

    .fire-cursor.is-over-action {
        width: 23px;
        height: 23px;
        margin: -12px 0 0 -12px;
        background: transparent;
    }

    .cursor-ember {
        position: fixed;
        z-index: 2147483646;
        width: var(--ember-size);
        height: var(--ember-size);
        left: var(--ember-x);
        top: var(--ember-y);
        pointer-events: none;
        border-radius: 80% 20% 70% 30%;
        background: radial-gradient(circle at 70% 70%, #d8ffe7 0 8%, #00ff75 26%, rgba(0,255,117,.45) 48%, transparent 72%);
        filter: blur(.35px) drop-shadow(0 0 6px #00ff75);
        transform: rotate(var(--ember-rotate)) scaleY(var(--ember-stretch));
        animation: ember-flight var(--ember-life) cubic-bezier(.12,.66,.2,1) forwards;
    }

    .cursor-ember.is-spark {
        border-radius: 50%;
        background: #d8ffe7;
        filter: drop-shadow(0 0 4px #00ff75);
    }

    @keyframes ember-flight {
        to { transform: translate(var(--ember-dx), var(--ember-dy)) rotate(calc(var(--ember-rotate) + 120deg)) scale(.04); opacity: 0; }
    }
}
