.hp-cur { display: none; position: fixed; left: 0; top: 0; z-index: 120; pointer-events: none; }
.hp-cursor-on .hp-cur { display: block; }
.hp-cursor-on, .hp-cursor-on * { cursor: none !important; }
.hp-cursor-on.hp-cur-text, .hp-cursor-on.hp-cur-text *,
.hp-cursor-on:has(.hp-bk[open]), .hp-cursor-on:has(.hp-bk[open]) *,
.hp-cursor-on:has(.hp-auth-dlg[open]), .hp-cursor-on:has(.hp-auth-dlg[open]) *,
.hp-cursor-on:has(.hp-chap[open]), .hp-cursor-on:has(.hp-chap[open]) * { cursor: auto !important; }
.hp-cursor-on.hp-cur-text .hp-cur, .hp-cursor-on:has(.hp-bk[open]) .hp-cur,
.hp-cursor-on:has(.hp-auth-dlg[open]) .hp-cur, .hp-cursor-on:has(.hp-chap[open]) .hp-cur { opacity: 0; }
.hp-cur-ring { position: absolute; left: -26px; top: -26px; width: 52px; height: 52px; opacity: 0; transition: opacity 0.25s ease; will-change: transform; overflow: visible; }
.hp-cur.vis .hp-cur-ring, .hp-cur.vis .hp-cur-dot { opacity: 1; }
.hp-cur.hot .hp-cur-ring g { transform: scale(1.28); }
.hp-cur-ring g { transform-origin: 50% 50%; transform-box: fill-box; transition: transform 0.3s cubic-bezier(0.2, 1.2, 0.4, 1); }
.hp-cur-ring path { fill: none; stroke: var(--hpn-accent, var(--accent, #ff0000)); stroke-width: 1.5; stroke-linejoin: round; stroke-linecap: round; vector-effect: non-scaling-stroke; }
.hp-cur.down .hp-cur-ring g { transform: scale(0.82); }
.hp-cur-blob { position: absolute; left: 0; top: 0; width: 0; height: 0; opacity: 0; transition: opacity 0.2s ease; will-change: transform; }

.hp-cur-blob svg { display: block; width: 100%; height: 100%; overflow: visible; }
.hp-cur-blob rect { fill: color-mix(in srgb, var(--hpn-accent, var(--accent, #ff0000)) 7%, transparent); stroke: var(--hpn-accent, var(--accent, #ff0000)); stroke-width: 1.6; vector-effect: non-scaling-stroke; }
.hp-cur.down .hp-cur-blob rect { fill: color-mix(in srgb, var(--hpn-accent, var(--accent, #ff0000)) 18%, transparent); }
.hp-cur-dot { position: absolute; left: -3px; top: -3px; width: 6px; height: 6px; border-radius: 50%; background: var(--hpn-accent, var(--accent, #ff0000)); opacity: 0; transition: opacity 0.3s ease; will-change: transform; }

.hp-cur.icon .hp-cur-ring g { transform: scale(0.92); }
.hp-cur.icon.down .hp-cur-ring g { transform: scale(0.72); }

@media (prefers-reduced-motion: reduce) {
  .hp-cur { display: none !important; }
  .hp-cursor-on, .hp-cursor-on * { cursor: auto !important; }
}
