/* ============================================================
   基座层：reset + 排版基线 + 焦点 / 动效全局约定
   ============================================================ */

*,*::before,*::after{box-sizing:border-box;margin:0;padding:0}
html{-webkit-text-size-adjust:100%;scroll-behavior:smooth;scrollbar-gutter:stable}
html,body{overflow-x:hidden;overflow-x:clip}
body{
  font-family:var(--f-sans);
  font-size:var(--t4);
  font-weight:400;
  line-height:1.72;
  color:var(--tx);
  background:var(--bg);
  -webkit-font-smoothing:antialiased;
  text-rendering:optimizeLegibility;
  transition:background-color var(--d-fast) linear,color var(--d-fast) linear;
}
img,svg{display:block;max-width:100%}
a{color:inherit;text-decoration:none;cursor:pointer}
button{font:inherit;color:inherit;background:none;border:none;cursor:pointer}
summary{cursor:pointer}
ul,ol,dl{list-style:none}
dd{margin:0}
::selection{background:var(--mark-soft)}
:focus-visible{outline:2px solid var(--mark);outline-offset:2px;border-radius:var(--r-sm)}

/* 细滚动条（功能化外观） */
html{scrollbar-width:thin;scrollbar-color:color-mix(in srgb,var(--tx3) 55%,transparent) transparent}
::-webkit-scrollbar{width:8px;height:8px}
::-webkit-scrollbar-track{background:transparent}
::-webkit-scrollbar-thumb{background:color-mix(in srgb,var(--tx3) 45%,transparent);
  border-radius:99px;border:2px solid var(--bg)}
::-webkit-scrollbar-thumb:hover{background:var(--tx3)}
@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}}

/* 图标：stroke 继承 currentColor */
.ic{display:inline-block;width:1em;height:1em;vertical-align:-.13em;flex-shrink:0;
  fill:none;stroke:currentColor;stroke-width:1.7;stroke-linecap:round;stroke-linejoin:round}
.ic-sm{width:.82em;height:.82em}

/* 区块进入：只动 transform / opacity，只触发一次（html.js 门控：无 JS 时内容直接可见） */
html.js .rv{opacity:0;transform:translateY(14px);transition:opacity var(--d-slow) linear,transform var(--d-slow) var(--ease)}
html.js .rv.in{opacity:1;transform:none}
/* 重点元素追加高斯模糊进场（文字级元素使用，勿用于大面积卡片） */
html.js .rv-blur{filter:blur(8px);transition:opacity var(--d-slow) linear,transform var(--d-slow) var(--ease),filter var(--d-slow) linear}
html.js .rv-blur.in{filter:blur(0)}
@media (prefers-reduced-motion:reduce){
  *,*::before,*::after{transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}
  .rv,.rv-blur{opacity:1!important;transform:none!important;filter:none!important}
}

/* 页面切换 crossfade（不支持的浏览器直接切换） */
@view-transition{navigation:auto}
::view-transition-old(root),::view-transition-new(root){animation-duration:.15s}
