/* Con trỏ riêng trang chủ (chỉ pointer:fine). Tắt: ?hv_no_cur=1 */
.hv-cur-dot, .hv-cur-ring { position: fixed; left: 0; top: 0; z-index: 99999; pointer-events: none; opacity: 0; will-change: transform; }
.hv-cur-dot::before, .hv-cur-ring::before { content: ""; position: absolute; border-radius: 50%; }
.hv-cur-dot::before { width: 8px; height: 8px; left: -4px; top: -4px; background: #E31E24; transition: transform .18s, opacity .18s; }
.hv-cur-ring::before { width: 36px; height: 36px; left: -18px; top: -18px; border: 1.5px solid rgba(var(--cur, 227,30,36), .85); background: rgba(var(--cur, 227,30,36), 0); transition: transform .22s cubic-bezier(.2,.8,.2,1), background .22s, border-color .22s; }
.hv-cur-on .hv-cur-dot, .hv-cur-on .hv-cur-ring { opacity: 1; }
.hv-cur-out .hv-cur-dot, .hv-cur-out .hv-cur-ring, .hv-cur-native .hv-cur-dot, .hv-cur-native .hv-cur-ring { opacity: 0 !important; }
.hv-cur-ring.is-hot::before { transform: scale(1.55); background: rgba(var(--cur, 227,30,36), .14); }
.hv-cur-dot.is-hot::before { transform: scale(.5); }
.hv-cur-ring.is-down::before { transform: scale(.8); }
.hv-cur-ring.is-hot.is-down::before { transform: scale(1.2); }
/* ẩn con trỏ hệ thống chỉ khi con trỏ riêng đang hiển thị */
html.hv-cur-on:not(.hv-cur-native), html.hv-cur-on:not(.hv-cur-native) * { cursor: none !important; }
html.hv-cur-on input, html.hv-cur-on textarea, html.hv-cur-on select, html.hv-cur-on label, html.hv-cur-on .booking, html.hv-cur-on .booking * { cursor: auto !important; }
@media (prefers-reduced-motion: reduce) { .hv-cur-dot::before, .hv-cur-ring::before { transition: none; } }
