/* ============================================================================
   指针皮肤 —— 纯 CSS 的 SVG data-URI 光标，零请求、零脚本
   ----------------------------------------------------------------------------
   · 每个风格两条：`--cur-arrow`（默认/画布）与 `--cur-hand`（可点元素）
   · 语法里带热点：`url("data:…") 2 2` 表示箭尖在 (2,2)
   · 只读元素保留系统 `text` 光标，输入框/文本域一律 text
   · 所有图形都是 28×28，笔画 ≥1.5px，浅底深底都能看清
   ========================================================================== */

/* --- 基础落地：默认值与使用规则 ------------------------------------------- */
:root {
  --cur-arrow: auto;
  --cur-hand: pointer;
}

html {
  cursor: var(--cur-arrow), auto;
}

a,
button,
summary,
label,
select,
[role="button"],
.btn,
.menu__link,
.vinyl__item,
.vinyl__nav,
.dock button,
.acc__head,
.row,
.flow__step {
  cursor: var(--cur-hand), pointer;
}

input[type="text"],
input[type="search"],
input[type="email"],
textarea {
  cursor: text;
}

/* --- 1 网站原版：纸片箭头，油墨描边 + 错位影 ------------------------------ */
html[data-theme="collage"] {
  --cur-arrow: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='28' height='28' viewBox='0 0 28 28'%3E%3Cpath d='M3.5 3.5 L3.5 22.5 L9.1 17.1 L12.5 24.5 L16.1 22.9 L12.7 15.7 L20.5 15.7 Z' fill='%231a1714'/%3E%3Cpath d='M2 2 L2 21 L7.6 15.6 L11 23 L14.6 21.4 L11.2 14.2 L19 14.2 Z' fill='%23f2ede3' stroke='%231a1714' stroke-width='1.8' stroke-linejoin='round'/%3E%3C/svg%3E") 2 2;
  --cur-hand: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='28' height='28' viewBox='0 0 28 28'%3E%3Cpath d='M12 3.5c1.3 0 2.3 1 2.3 2.3v7.4l3.4-.9c1.1-.3 2.2.3 2.6 1.4l1.4 4.1c.4 1.1-.2 2.3-1.3 2.7l-6 2.1c-1 .4-2.2 0-2.8-.9l-3.6-5.2c-.7-1-.4-2.4.6-3 .9-.6 2.1-.3 2.7.6l.5.7V5.8c0-1.3 1-2.3 2.2-2.3z' fill='%23f2ede3' stroke='%231a1714' stroke-width='1.8' stroke-linejoin='round'/%3E%3C/svg%3E") 11 2;
}

/* --- 2 包豪斯：黑箭头压在红圆上，几何三原色 -------------------------------- */
html[data-theme="bauhaus"] {
  --cur-arrow: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='28' height='28' viewBox='0 0 28 28'%3E%3Ccircle cx='10' cy='10' r='7.2' fill='%23e1251b'/%3E%3Cpath d='M2 2 L2 21 L7.6 15.6 L11 23 L14.6 21.4 L11.2 14.2 L19 14.2 Z' fill='%23111' stroke='%23f3ece0' stroke-width='1.6' stroke-linejoin='round'/%3E%3Ccircle cx='21.5' cy='21.5' r='2.6' fill='%230f4c9c'/%3E%3C/svg%3E") 2 2;
  --cur-hand: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='28' height='28' viewBox='0 0 28 28'%3E%3Ccircle cx='14' cy='14' r='11' fill='%230f4c9c'/%3E%3Cpath d='M12 4.5c1.3 0 2.3 1 2.3 2.3v7.4l3.4-.9c1.1-.3 2.2.3 2.6 1.4l1.4 4.1c.4 1.1-.2 2.3-1.3 2.7l-6 2.1c-1 .4-2.2 0-2.8-.9l-3.6-5.2c-.7-1-.4-2.4.6-3 .9-.6 2.1-.3 2.7.6l.5.7V6.8c0-1.3 1-2.3 2.2-2.3z' fill='%23f3ece0' stroke='%23111' stroke-width='1.6' stroke-linejoin='round'/%3E%3C/svg%3E") 11 2;
}

/* --- 3 瑞士国际：发丝线框箭头 + 一个红点，精密到有点冷 -------------------- */
html[data-theme="swiss"] {
  --cur-arrow: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='28' height='28' viewBox='0 0 28 28'%3E%3Cpath d='M2.75 2.75 L2.75 21 L8.2 15.6 L11.4 22.6 L14.2 21.3 L11 14.3 L18.6 14.3 Z' fill='%23fff' stroke='%23111' stroke-width='1.5' stroke-linejoin='miter'/%3E%3Ccircle cx='3' cy='3' r='1.9' fill='%23ff2d1f'/%3E%3C/svg%3E") 2 2;
  --cur-hand: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='28' height='28' viewBox='0 0 28 28'%3E%3Ccircle cx='14' cy='14' r='8.4' fill='none' stroke='%23111' stroke-width='1.5'/%3E%3Ccircle cx='14' cy='14' r='2.2' fill='%23ff2d1f'/%3E%3C/svg%3E") 14 14;
}

/* --- 4 波普 / 迷幻：洋红实心 + 白描边 + 紫罗兰错位，贴纸感 ------------------ */
html[data-theme="pop"] {
  --cur-arrow: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='28' height='28' viewBox='0 0 28 28'%3E%3Cpath d='M4 4 L4 23 L9.6 17.6 L13 25 L16.6 23.4 L13.2 16.2 L21 16.2 Z' fill='%235b1ecc'/%3E%3Cpath d='M2 2 L2 21 L7.6 15.6 L11 23 L14.6 21.4 L11.2 14.2 L19 14.2 Z' fill='%23e6007a' stroke='%23fff' stroke-width='2.4' stroke-linejoin='round'/%3E%3C/svg%3E") 2 2;
  --cur-hand: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='28' height='28' viewBox='0 0 28 28'%3E%3Cpath d='M13 4.5c1.3 0 2.3 1 2.3 2.3v7.4l3.4-.9c1.1-.3 2.2.3 2.6 1.4l1.4 4.1c.4 1.1-.2 2.3-1.3 2.7l-6 2.1c-1 .4-2.2 0-2.8-.9l-3.6-5.2c-.7-1-.4-2.4.6-3 .9-.6 2.1-.3 2.7.6l.5.7V6.8c0-1.3 1-2.3 2.2-2.3z' fill='%235b1ecc'/%3E%3Cpath d='M12 3.5c1.3 0 2.3 1 2.3 2.3v7.4l3.4-.9c1.1-.3 2.2.3 2.6 1.4l1.4 4.1c.4 1.1-.2 2.3-1.3 2.7l-6 2.1c-1 .4-2.2 0-2.8-.9l-3.6-5.2c-.7-1-.4-2.4.6-3 .9-.6 2.1-.3 2.7.6l.5.7V5.8c0-1.3 1-2.3 2.2-2.3z' fill='%23e6007a' stroke='%23fff' stroke-width='2.2' stroke-linejoin='round'/%3E%3C/svg%3E") 11 2;
}

/* --- 5 孟菲斯：青绿箭头 + 粉色三角碎片，旁边撒一颗点 ---------------------- */
html[data-theme="memphis"] {
  --cur-arrow: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='28' height='28' viewBox='0 0 28 28'%3E%3Cpath d='M20 19 L26 19 L23 25 Z' fill='%23ff5f9e'/%3E%3Cpath d='M2 2 L2 21 L7.6 15.6 L11 23 L14.6 21.4 L11.2 14.2 L19 14.2 Z' fill='%2322c1c3' stroke='%23141414' stroke-width='2' stroke-linejoin='round'/%3E%3Ccircle cx='22.5' cy='9.5' r='2.2' fill='%23ffd93d' stroke='%23141414' stroke-width='1.2'/%3E%3C/svg%3E") 2 2;
  --cur-hand: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='28' height='28' viewBox='0 0 28 28'%3E%3Cpath d='M12 3.5c1.3 0 2.3 1 2.3 2.3v7.4l3.4-.9c1.1-.3 2.2.3 2.6 1.4l1.4 4.1c.4 1.1-.2 2.3-1.3 2.7l-6 2.1c-1 .4-2.2 0-2.8-.9l-3.6-5.2c-.7-1-.4-2.4.6-3 .9-.6 2.1-.3 2.7.6l.5.7V5.8c0-1.3 1-2.3 2.2-2.3z' fill='%23ff5f9e' stroke='%23141414' stroke-width='2' stroke-linejoin='round'/%3E%3Ccircle cx='22' cy='21' r='2.4' fill='%23ffd93d' stroke='%23141414' stroke-width='1.2'/%3E%3C/svg%3E") 11 2;
}

/* --- 6 早期网页 / Y2K：镀铬渐变 + 荧光绿描边 + 紫罗兰错位 ------------------ */
html[data-theme="y2k"] {
  --cur-arrow: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='28' height='28' viewBox='0 0 28 28'%3E%3Cdefs%3E%3ClinearGradient id='c' x1='0' y1='0' x2='0' y2='1'%3E%3Cstop offset='0' stop-color='%23ffffff'/%3E%3Cstop offset='.5' stop-color='%23dfe6ee'/%3E%3Cstop offset='1' stop-color='%238fa6bd'/%3E%3C/linearGradient%3E%3C/defs%3E%3Cpath d='M4 4 L4 22 L9.6 16.6 L13 24 L15.8 22.7 L12.4 15.5 L20 15.5 Z' fill='%23b026ff'/%3E%3Cpath d='M2 2 L2 21 L7.6 15.6 L11 23 L14.6 21.4 L11.2 14.2 L19 14.2 Z' fill='url(%23c)' stroke='%2300ff66' stroke-width='1.8' stroke-linejoin='round'/%3E%3C/svg%3E") 2 2;
  --cur-hand: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='28' height='28' viewBox='0 0 28 28'%3E%3Cdefs%3E%3ClinearGradient id='h' x1='0' y1='0' x2='0' y2='1'%3E%3Cstop offset='0' stop-color='%23ffffff'/%3E%3Cstop offset='1' stop-color='%2393a7bd'/%3E%3C/linearGradient%3E%3C/defs%3E%3Crect x='9' y='3' width='11' height='19' rx='4' fill='%23b026ff' opacity='.55'/%3E%3Cpath d='M12 3.5c1.3 0 2.3 1 2.3 2.3v7.4l3.4-.9c1.1-.3 2.2.3 2.6 1.4l1.4 4.1c.4 1.1-.2 2.3-1.3 2.7l-6 2.1c-1 .4-2.2 0-2.8-.9l-3.6-5.2c-.7-1-.4-2.4.6-3 .9-.6 2.1-.3 2.7.6l.5.7V5.8c0-1.3 1-2.3 2.2-2.3z' fill='url(%23h)' stroke='%2300ff66' stroke-width='1.6' stroke-linejoin='round'/%3E%3C/svg%3E") 11 2;
}

/* --- 7 拟物化：玻璃高光 + 细黑边 + 灰色投影，像 2008 年的 Windows ---------- */
html[data-theme="skeuo"] {
  --cur-arrow: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='28' height='28' viewBox='0 0 28 28'%3E%3Cdefs%3E%3ClinearGradient id='s' x1='0' y1='0' x2='1' y2='1'%3E%3Cstop offset='0' stop-color='%23ffffff'/%3E%3Cstop offset='.55' stop-color='%23e9e4db'/%3E%3Cstop offset='1' stop-color='%23b3aa99'/%3E%3C/linearGradient%3E%3C/defs%3E%3Cpath d='M3.5 3.5 L3.5 22.5 L9.1 17.1 L12.5 24.5 L16.1 22.9 L12.7 15.7 L20.5 15.7 Z' fill='%23000' opacity='.28'/%3E%3Cpath d='M2 2 L2 21 L7.6 15.6 L11 23 L14.6 21.4 L11.2 14.2 L19 14.2 Z' fill='url(%23s)' stroke='%2322252b' stroke-width='1.1' stroke-linejoin='round'/%3E%3Cpath d='M4 4 L4 13 L7.5 9.6' fill='none' stroke='%23fff' stroke-width='1.1' opacity='.85'/%3E%3C/svg%3E") 2 2;
  --cur-hand: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='28' height='28' viewBox='0 0 28 28'%3E%3Cdefs%3E%3ClinearGradient id='k' x1='0' y1='0' x2='0' y2='1'%3E%3Cstop offset='0' stop-color='%23ffffff'/%3E%3Cstop offset='1' stop-color='%23c9c1b2'/%3E%3C/linearGradient%3E%3C/defs%3E%3Cpath d='M13 4.5c1.3 0 2.3 1 2.3 2.3v7.4l3.4-.9c1.1-.3 2.2.3 2.6 1.4l1.4 4.1c.4 1.1-.2 2.3-1.3 2.7l-6 2.1c-1 .4-2.2 0-2.8-.9l-3.6-5.2c-.7-1-.4-2.4.6-3 .9-.6 2.1-.3 2.7.6l.5.7V6.8c0-1.3 1-2.3 2.2-2.3z' fill='%23000' opacity='.22'/%3E%3Cpath d='M12 3.5c1.3 0 2.3 1 2.3 2.3v7.4l3.4-.9c1.1-.3 2.2.3 2.6 1.4l1.4 4.1c.4 1.1-.2 2.3-1.3 2.7l-6 2.1c-1 .4-2.2 0-2.8-.9l-3.6-5.2c-.7-1-.4-2.4.6-3 .9-.6 2.1-.3 2.7.6l.5.7V5.8c0-1.3 1-2.3 2.2-2.3z' fill='url(%23k)' stroke='%2322252b' stroke-width='1.1' stroke-linejoin='round'/%3E%3C/svg%3E") 11 2;
}

/* --- 8 扁平化：单色实心，只有一层白描边保证深浅底都看得见 ------------------ */
html[data-theme="flat"] {
  --cur-arrow: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='28' height='28' viewBox='0 0 28 28'%3E%3Cpath d='M2 2 L2 21 L7.6 15.6 L11 23 L14.6 21.4 L11.2 14.2 L19 14.2 Z' fill='%231fb6ff' stroke='%23fff' stroke-width='2' stroke-linejoin='round'/%3E%3C/svg%3E") 2 2;
  --cur-hand: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='28' height='28' viewBox='0 0 28 28'%3E%3Ccircle cx='14' cy='14' r='9.4' fill='%231fb6ff'/%3E%3Ccircle cx='14' cy='14' r='9.4' fill='none' stroke='%23fff' stroke-width='2'/%3E%3Ccircle cx='14' cy='14' r='3' fill='%23fff'/%3E%3C/svg%3E") 14 14;
}

/* --- 9 玻璃拟态：半透明白 + 白描边 + 一层淡紫，像结了层雾 ------------------ */
html[data-theme="glass"] {
  --cur-arrow: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='28' height='28' viewBox='0 0 28 28'%3E%3Cpath d='M2.5 2.5 L2.5 21 L8 15.6 L11.4 22.8 L14.9 21.2 L11.5 14.4 L19.3 14.4 Z' fill='%23ffffff' fill-opacity='.55'/%3E%3Cpath d='M2 2 L2 21 L7.6 15.6 L11 23 L14.6 21.4 L11.2 14.2 L19 14.2 Z' fill='none' stroke='%23ffffff' stroke-width='1.8' stroke-linejoin='round'/%3E%3Cpath d='M2 2 L2 21 L7.6 15.6 L11 23 L14.6 21.4 L11.2 14.2 L19 14.2 Z' fill='none' stroke='%237c5cff' stroke-width='.9' stroke-linejoin='round'/%3E%3C/svg%3E") 2 2;
  --cur-hand: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='28' height='28' viewBox='0 0 28 28'%3E%3Ccircle cx='14' cy='14' r='10' fill='%23ffffff' fill-opacity='.4'/%3E%3Ccircle cx='14' cy='14' r='10' fill='none' stroke='%23ffffff' stroke-width='1.8'/%3E%3Ccircle cx='14' cy='14' r='10' fill='none' stroke='%237c5cff' stroke-width='.9'/%3E%3Ccircle cx='14' cy='14' r='2.4' fill='%23ffffff'/%3E%3C/svg%3E") 14 14;
}

/* --- 10 AI 时代：紫青渐变 + 深色描边，旁边一颗四角星 ---------------------- */
html[data-theme="ai"] {
  --cur-arrow: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='28' height='28' viewBox='0 0 28 28'%3E%3Cdefs%3E%3ClinearGradient id='g' x1='0' y1='0' x2='1' y2='1'%3E%3Cstop offset='0' stop-color='%237b5cff'/%3E%3Cstop offset='1' stop-color='%2322d3ee'/%3E%3C/linearGradient%3E%3C/defs%3E%3Cpath d='M21 7.5 L24.5 12 L21 16.5 L17.5 12 Z' fill='%2322d3ee' opacity='.9'/%3E%3Cpath d='M2 2 L2 21 L7.6 15.6 L11 23 L14.6 21.4 L11.2 14.2 L19 14.2 Z' fill='url(%23g)' stroke='%230a0a12' stroke-width='1.6' stroke-linejoin='round'/%3E%3C/svg%3E") 2 2;
  --cur-hand: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='28' height='28' viewBox='0 0 28 28'%3E%3Cdefs%3E%3ClinearGradient id='q' x1='0' y1='0' x2='1' y2='1'%3E%3Cstop offset='0' stop-color='%237b5cff'/%3E%3Cstop offset='1' stop-color='%2322d3ee'/%3E%3C/linearGradient%3E%3C/defs%3E%3Cpath d='M12 3.5c1.3 0 2.3 1 2.3 2.3v7.4l3.4-.9c1.1-.3 2.2.3 2.6 1.4l1.4 4.1c.4 1.1-.2 2.3-1.3 2.7l-6 2.1c-1 .4-2.2 0-2.8-.9l-3.6-5.2c-.7-1-.4-2.4.6-3 .9-.6 2.1-.3 2.7.6l.5.7V5.8c0-1.3 1-2.3 2.2-2.3z' fill='url(%23q)' stroke='%230a0a12' stroke-width='1.5' stroke-linejoin='round'/%3E%3C/svg%3E") 11 2;
}

/* --- 无障碍：减少动态偏好下不动任何东西（光标是静态图，这里只兜底） -------- */
@media (prefers-reduced-motion: reduce) {
  html {
    cursor: var(--cur-arrow), auto;
  }
}

/* --- 玻璃拟态加强版：上一版太淡，浅底上几乎看不见，换成紫调半透明 + 白描边 --- */
html[data-theme="glass"] {
  --cur-arrow: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='28' height='28' viewBox='0 0 28 28'%3E%3Cpath d='M2 2 L2 21 L7.6 15.6 L11 23 L14.6 21.4 L11.2 14.2 L19 14.2 Z' fill='%237c5cff' fill-opacity='.30' stroke='%237c5cff' stroke-width='2.2' stroke-linejoin='round'/%3E%3Cpath d='M2 2 L2 21 L7.6 15.6 L11 23 L14.6 21.4 L11.2 14.2 L19 14.2 Z' fill='none' stroke='%23ffffff' stroke-width='1.1' stroke-linejoin='round'/%3E%3C/svg%3E") 2 2;
  --cur-hand: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='28' height='28' viewBox='0 0 28 28'%3E%3Ccircle cx='14' cy='14' r='10' fill='%237c5cff' fill-opacity='.28' stroke='%237c5cff' stroke-width='2.2'/%3E%3Ccircle cx='14' cy='14' r='10' fill='none' stroke='%23ffffff' stroke-width='1.1'/%3E%3Ccircle cx='14' cy='14' r='2.8' fill='%237c5cff'/%3E%3C/svg%3E") 14 14;
}