/* Con trỏ thương hiệu toàn trang — CHỐT 23/09/2026 (xem đầu contro.js). Mặc định bật cho mọi
   trang; `html.pd-contro-on` do contro.js tự gắn trừ khi `?contro=off`. CSS của bản a/b/c (badge
   "P", vòng tròn, đèn rọi ẩn/hiện) đã GỠ HẲN — chỉ còn 2 cụm: cursor tĩnh + phần tử "nhấp nháy". */

/* 1 · Mũi tên mặc định — hotspot (2,2) khớp đúng điểm đầu mũi trong path (M2 2). Lõi #ff8a2b,
   viền #2e1103 ~1,5px để nổi trên cả nền tối lẫn nền cam gradient của trang. */
html.pd-contro-on {
  cursor: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24'><path d='M2 2L2 18L6.5 14.5L9.5 21L12 20L9 13.5L15 13.5Z' fill='%23ff8a2b' stroke='%232e1103' stroke-width='1.5' stroke-linejoin='round'/></svg>") 2 2, auto;
}
/* 2 · Chữ I — ô nhập chữ thật (loại trừ checkbox/radio/submit/button/range, các loại đó vẫn dùng
   mũi tên mặc định vì không gõ chữ). Hotspot (6,12) đúng tâm hình. `cursor:none` chỉ ẩn HÌNH con
   trỏ chuột, không đụng caret gõ chữ — gõ/chọn chữ vẫn hoạt động bình thường (đã kiểm tay). */
html.pd-contro-on :is(input:not([type="checkbox"]):not([type="radio"]):not([type="submit"]):not([type="button"]):not([type="range"]), textarea, [contenteditable="true"]) {
  cursor: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='12' height='24' viewBox='0 0 12 24'><rect x='1' y='1' width='10' height='2.4' rx='1' fill='%23ff8a2b' stroke='%232e1103' stroke-width='1'/><rect x='5' y='1' width='2' height='22' fill='%23ff8a2b' stroke='%232e1103' stroke-width='1'/><rect x='1' y='20.6' width='10' height='2.4' rx='1' fill='%23ff8a2b' stroke='%232e1103' stroke-width='1'/></svg>") 6 12, text;
}
/* 3 · Hover link/nút: icon tĩnh vòng tròn + mũi tên ↗ (hotspot tâm 13,13 — không có "đầu mũi" tự
   nhiên như mũi tên thường nên lấy tâm hình). Đây là bản dự phòng LUÔN đúng nghĩa "mở link", kể cả
   lúc JS chưa chạy hay đang prefers-reduced-motion (khi đó KHÔNG có cờ pd-contro-d-motion nên luật
   cursor:none ở cụm 4 không áp — icon tĩnh này là thứ duy nhất hiện, không mất con trỏ). */
html.pd-contro-on :is(a[href], button, .pd-hang, [role="button"]) {
  cursor: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='26' height='26' viewBox='0 0 26 26'><circle cx='13' cy='13' r='11' fill='%23ff8a2b' stroke='%232e1103' stroke-width='1.5'/><path d='M9 17L17 9M10 9H17V16' fill='none' stroke='%232e1103' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'/></svg>") 13 13, pointer;
}
@media (pointer: coarse) {
  html.pd-contro-on, html.pd-contro-on * { cursor: auto; }
}

/* ---------- Phần tử JS nhấp nháy khi hover link/nút ----------
   Chỉ tồn tại khi JS đã tạo xong VÀ không phải reduced-motion (contro.js tự kiểm trước khi tạo).
   Căn tâm vòng tròn TRÙNG hotspot (13,13) của icon tĩnh ở cụm 3 — `.pop` margin âm bằng nửa cỡ
   svg (22px/2=11px). `display:block` (KHÔNG inline-block) — inline-block chừa khoảng trắng
   descender ~5-6px dưới baseline, từng làm tâm lệch dọc 5,67px lúc QC vòng đầu (23/09). */
.pd-contro-d__pos {
  position: fixed; top: 0; left: 0; z-index: 99999; pointer-events: none;
  transform: translate3d(-999px, -999px, 0);
}
.pd-contro-d__pop {
  margin: -11px 0 0 -11px;
  display: block; transform: scale(.6); opacity: 0;
  transition: transform .18s cubic-bezier(.34, 1.56, .64, 1), opacity .12s ease;
}
.pd-contro-d__pop.hien { transform: scale(1); opacity: 1; }
.pd-contro-d__bounce { display: block; filter: drop-shadow(0 2px 5px rgba(0, 0, 0, .35)); animation: pdDNhapNhay .9s ease-in-out infinite; }
@keyframes pdDNhapNhay { 0%, 100% { opacity: 1; transform: scale(1); } 50% { opacity: .45; transform: scale(.92); } }
@media (prefers-reduced-motion: reduce) {
  .pd-contro-d__bounce { animation: none; }
  .pd-contro-d__pop { transition: none; }
}
@media (pointer: coarse) {
  .pd-contro-d__pos { display: none; }
}
/* 4 · Ẩn con trỏ hệ thống CHỈ khi: cờ motion đã bật (JS chạy, không reduced-motion) VÀ đang thật
   sự :hover đúng phần tử đó — để chỉ còn 1 icon (phần tử JS) hiện ra thay vì chồng 2 icon. Dùng
   `:hover` gốc trình duyệt (không phải JS tự đoán) nên luôn khớp đúng, kể cả rê rất nhanh qua
   nhiều link liên tiếp. Đặt SAU luật cursor:url() ở cụm 3 để thắng cascade (cùng cấu trúc 1 lớp
   html + :is(), specificity bằng nhau, thứ tự source quyết định). */
html.pd-contro-d-motion :is(a[href], button, .pd-hang, [role="button"]):hover {
  cursor: none;
}
