﻿/* ============================================================
   基础重置与排版
   ============================================================ */
*,*::before,*::after{box-sizing:border-box;}
html,body{height:100%;}
body{
  margin:0;
  font-family:var(--ff);
  font-size: var(--fs-13);
  line-height: var(--lh-5);
  color:var(--ink-500);
  background:var(--canvas);
  -webkit-font-smoothing:antialiased;
  -moz-osx-font-smoothing:grayscale;
  text-rendering:optimizeLegibility;
  overflow:hidden;
}
h1,h2,h3,h4,h5,p,figure,ul,ol,dl{margin:0;}
ul,ol{padding: 0;list-style:none;}
a{color:inherit;text-decoration:none;}
button{font:inherit;color:inherit;border:none;background:none;cursor:pointer;}
input,select,textarea{font:inherit;color:inherit;}
img,svg{display:block;max-width:100%;}
table{border-collapse:collapse;width:100%;}
b,strong{font-weight:600;color:var(--ink-900);}

::-webkit-scrollbar{width:8px;height:8px;}
::-webkit-scrollbar-track{background:transparent;}
::-webkit-scrollbar-thumb{background:var(--ink-200);border-radius: 999px;border:2px solid transparent;background-clip:content-box;}
::-webkit-scrollbar-thumb:hover{background:var(--ink-300);background-clip:content-box;}
.nav ::-webkit-scrollbar-thumb{background:var(--ink-200);background-clip:content-box;}

/* 焦点可见性 */
:focus-visible{outline:2px solid var(--pri);outline-offset:2px;border-radius: 4px;}

/* 工具类 */
.mono{font-family:var(--ff-num);font-variant-numeric:tabular-nums;letter-spacing:.01em;}
.num{font-family:var(--ff-num);font-variant-numeric:tabular-nums;}
.t-11{font-size: var(--fs-11);} .t-12{font-size: var(--fs-12);} .t-13{font-size: var(--fs-13);} .t-14{font-size: var(--fs-14);}
.muted{color:var(--ink-500);}
.faint{color:var(--ink-400);}
.strong{font-weight:600;color:var(--ink-900);}
.right{text-align:right;} .center{text-align:center;}
.nowrap{white-space:nowrap;}
.truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
.grow{flex:1;min-width:0;}
.row{display:flex;align-items:center;gap: 8px;}
.row--wrap{flex-wrap:wrap;}
.col{display:flex;flex-direction:column;}
.gap-4{gap: 4px;} .gap-6{gap: 6px;} .gap-8{gap: 8px;} .gap-12{gap: 12px;} .gap-16{gap: 16px;} .gap-20{gap: 20px;}
.mt-4{margin-top: 4px;} .mt-8{margin-top: 8px;} .mt-12{margin-top: 12px;} .mt-16{margin-top: 16px;} .mt-20{margin-top: 20px;}
.mb-8{margin-bottom: 8px;} .mb-12{margin-bottom: 12px;}
.hide{display:none !important;}

.u-divider{height:1px;background:var(--line-soft);border:0;margin:0;}
.u-dot{width:4px;height:4px;border-radius: 50%;background:var(--ink-200);flex:none;}
.dot{width:7px;height:7px;border-radius: 50%;flex:none;display:inline-block;}
.dot--green{background:var(--ok);}
.dot--amber{background:var(--warn);}
.dot--red{background:var(--dang);}

/* 状态语义文本 */
.t-ok{color:var(--ok);} .t-warn{color:var(--warn);} .t-dang{color:var(--dang);} .t-pri{color:var(--pri);} .t-teal{color:var(--teal);}

@media (prefers-reduced-motion: reduce){
  *{animation-duration:.001ms !important;animation-iteration-count:1 !important;transition-duration:.001ms !important;}
}
