/* ==========================================================================
   base.css — 重置、排版、自定义光标、无障碍
   ========================================================================== */

*,*::before,*::after{ box-sizing:border-box; }

html,body{
  height:100%;
  margin:0;
  padding:0;
}

html{
  background:var(--bg-deep);
  -webkit-text-size-adjust:100%;
}

body{
  font-family:var(--font-ui);
  color:var(--ink);
  background:var(--bg);
  overflow:hidden;                 /* 页面不真滚动，改由 JS 虚拟滚动驱动 */
  -webkit-font-smoothing:antialiased;
  -moz-osx-font-smoothing:grayscale;
  text-rendering:optimizeLegibility;
  font-synthesis:none;
}

/* 只有主视觉页需要虚拟滚动，登录页不加 .page-scroll */
body.page-scroll{ overflow:hidden; }
body.page-static{ overflow:auto; }

img,svg,video{ display:block; max-width:100%; }

a{ color:inherit; text-decoration:none; }
button{ font:inherit; color:inherit; background:none; border:0; cursor:pointer; }
input{ font:inherit; color:inherit; }

::selection{ background:rgba(42,107,194,.4); color:#fff; }

/* ---------- 隐藏原生光标：全站使用自定义光标 ---------- */
@media (hover:hover) and (pointer:fine){
  body.custom-cursor,
  body.custom-cursor *{ cursor:none !important; }
}

/* ---------- 自定义光标 ---------- */
.cursor{
  position:fixed;
  left:0; top:0;
  z-index:var(--z-cursor);
  pointer-events:none;
  will-change:transform;
  transform:translate3d(-100px,-100px,0);
  opacity:0;
  transition:opacity .25s ease;
}
.cursor.is-live{ opacity:1; }

.cursor__ring,
.cursor__dot{
  position:absolute;
  left:0; top:0;
  border-radius:50%;
  will-change:transform;
}
.cursor__ring{
  width:var(--cursor-size);
  height:var(--cursor-size);
  margin:calc(var(--cursor-size) / -2) 0 0 calc(var(--cursor-size) / -2);
  border:var(--cursor-ring) solid rgba(11,11,12,.85);
  box-shadow:0 0 0 .5px rgba(0,0,0,.45), 0 0 14px rgba(127,196,255,.28);
  transition:width .22s var(--e-soft), height .22s var(--e-soft),
             margin .22s var(--e-soft), border-color .22s ease,
             background-color .22s ease;
}
.cursor__dot{
  width:var(--cursor-dot);
  height:var(--cursor-dot);
  margin:calc(var(--cursor-dot) / -2) 0 0 calc(var(--cursor-dot) / -2);
  background:#0B0B0C;
  box-shadow:0 0 0 .5px rgba(0,0,0,.5);
}
/* 悬停可点元素：圆环放大、变蓝、中心点缩掉 */
.cursor.is-hover .cursor__ring{
  width:calc(var(--cursor-size) * var(--cursor-grow));
  height:calc(var(--cursor-size) * var(--cursor-grow));
  margin:calc(var(--cursor-size) * var(--cursor-grow) / -2) 0 0 calc(var(--cursor-size) * var(--cursor-grow) / -2);
  border-color:var(--blue-glow);
  background:rgba(127,196,255,.10);
}
.cursor.is-hover .cursor__dot{ background:var(--blue-glow); }
body.custom-cursor input,
body.custom-cursor textarea{ cursor:text !important; }

/* ---------- 焦点可见 ---------- */
:focus-visible{
  outline:2px solid var(--blue-glow);
  outline-offset:3px;
  border-radius:999px;
}

/* ---------- 屏幕阅读器 ---------- */
.sr-only{
  position:absolute; width:1px; height:1px;
  padding:0; margin:-1px; overflow:hidden;
  clip:rect(0 0 0 0); white-space:nowrap; border:0;
}

/* ---------- 降级：减少动态 ---------- */
@media (prefers-reduced-motion: reduce){
  *,*::before,*::after{
    animation-duration:.001ms !important;
    animation-iteration-count:1 !important;
    transition-duration:.001ms !important;
  }
}
