/* EKKOO 首页光标（来自 design-lab poc/ekkoo/shared/cursor.css）：一个墨点 + 青、品红两层套色残影，和标语、字标是同一个"回响"。
   只在有鼠标的设备上启用（cursor.js 会给 html 加 .has-cursor）。
   墨点用 difference 混合：浅底上是黑的，深色胶片上自动变白，不会看不见。 */
html.has-cursor, html.has-cursor * { cursor: none !important; }
html.has-cursor input, html.has-cursor textarea, html.has-cursor [contenteditable] { cursor: text !important; }

.cur {
  --s: 10px;
  position: fixed; left: 0; top: 0; z-index: 9999; pointer-events: none;
  width: var(--s); height: var(--s); border-radius: 50%;
  display: grid; place-items: center;
  opacity: 0; will-change: transform;
  transition: width .22s cubic-bezier(.2, .8, .2, 1), height .22s cubic-bezier(.2, .8, .2, 1),
    background-color .22s, border-color .22s, opacity .2s;
}
.cur.on { opacity: 1; }
.cur-k { z-index: 10001; background: #fff; mix-blend-mode: difference; }
.cur-c { z-index: 10000; background: var(--c, #27CAEE); mix-blend-mode: multiply; }
.cur-m { z-index: 9999; background: var(--m, #E86DB8); mix-blend-mode: multiply; }
.cur b {
  font: 800 15px/1 var(--sans, "Noto Sans SC", sans-serif); letter-spacing: .02em; white-space: nowrap;
  color: var(--ink, #15110D); opacity: 0; transition: opacity .18s;
}

/* 链接、按钮：变成一个圈，残影也是圈 */
.cur[data-mode="link"] { --s: 36px; background: transparent; border: 1.5px solid #fff; }
.cur-c[data-mode="link"] { border-color: var(--c, #27CAEE); }
.cur-m[data-mode="link"] { border-color: var(--m, #E86DB8); }

/* 作品格：青色实心圆，写一个"玩"；只留品红一层残影 */
.cur-k[data-mode="play"] { --s: 64px; background: var(--c, #27CAEE); mix-blend-mode: normal; }
.cur-k[data-mode="play"] b { opacity: 1; }
.cur-c[data-mode="play"] { --s: 64px; opacity: 0; }
.cur-m[data-mode="play"] { --s: 64px; background: transparent; border: 2px solid var(--m, #E86DB8); }

/* 走马灯：一个圈写"拖"，按下去时写"转" */
.cur[data-mode="drag"] { --s: 64px; background: transparent; border: 1.5px solid #fff; }
.cur-k[data-mode="drag"] b { opacity: 1; color: #fff; }
.cur-c[data-mode="drag"] { border-color: var(--c, #27CAEE); }
.cur-m[data-mode="drag"] { border-color: var(--m, #E86DB8); }

/* 放大镜：墨色镜框，青、品红两道固定的套色错位（不跟着晃）；镜子里是放正、放大的作品画面 */
.cur[data-mode="loupe"] { opacity: 0 !important; }
.cur-lens {
  --d: 210px;
  position: fixed; left: 0; top: 0; z-index: 10002; pointer-events: none;
  width: var(--d); margin: calc(var(--d) / -2) 0 0 calc(var(--d) / -2);
  opacity: 0; transition: opacity .18s; will-change: transform;
}
.cur-lens.on { opacity: 1; }
.cur-lens-glass {
  position: relative; width: var(--d); height: var(--d); border-radius: 50%; overflow: hidden;
  background: #0B0907; border: 4px solid var(--ink, #15110D);
  box-shadow: -3px -2px 0 0 var(--c, #27CAEE), 3px 3px 0 0 var(--m, #E86DB8), 0 22px 44px -14px rgba(21, 17, 13, .55);
  transform: scale(.82); transition: transform .22s cubic-bezier(.2, .8, .2, 1);
}
.cur-lens.on .cur-lens-glass { transform: none; }
.cur-lens-glass::after {   /* 镜片的高光和边缘暗角 */
  content: ""; position: absolute; inset: 0; border-radius: 50%;
  background: radial-gradient(60% 45% at 32% 22%, rgba(255, 255, 255, .22), rgba(255, 255, 255, 0) 70%);
  box-shadow: inset 0 0 0 1.5px rgba(255, 255, 255, .35), inset 0 0 26px 4px rgba(21, 17, 13, .3);
}
.cur-lens-img { position: absolute; left: 0; top: 0; background: center / cover no-repeat; will-change: transform; }
.cur-lens-cap {
  position: absolute; left: 50%; top: calc(100% + 10px); transform: translateX(-50%);
  display: flex; align-items: center; gap: 8px; white-space: nowrap; margin: 0;
  padding: 4px 4px 4px 12px; border-radius: 999px; background: var(--ink, #15110D); color: var(--cream, #EDE6D6);
  font: 500 13px/1 var(--sans, "Noto Sans SC", sans-serif);
}
.cur-lens-cap b { font-weight: 600; }
.cur-lens-cap i { font-style: normal; font-weight: 700; padding: 5px 10px; border-radius: 999px; background: var(--c, #27CAEE); color: var(--ink, #15110D); }
.cur-lens.flip .cur-lens-cap { top: auto; bottom: calc(100% + 10px); }

/* 输入框里用系统的文字光标；离开窗口时隐藏 */
.cur[data-mode="text"] { opacity: 0 !important; }

/* 账号栏在 Shadow DOM 里，事件只报到宿主上，分不出按钮和空白：那一块交还系统光标（home-cursor.js 里同时把自定义光标藏起来） */
html.has-cursor .site-nav { cursor: auto !important; }

/* 深色：青、品红残影用 multiply 在深底上会消失，改成 screen；放大镜标签和"玩"字跟着 --ink 变成奶白，改回片基黑 */
[data-theme=dark] .cur-c, [data-theme=dark] .cur-m { mix-blend-mode: screen; }
[data-theme=dark] .cur-k[data-mode="play"] b, [data-theme=dark] .cur-lens-cap, [data-theme=dark] .cur-lens-cap i { color: var(--film, #0B0907); }
