/* ===== 安昊玻璃 · 设计底座 ===== */
:root{
  --jade:#0fb39a;
  --jade-deep:#078b78;
  --jade-soft:#e2f7f3;
  --jade-glow:rgba(15,179,154,.25);
  --amber:#efa73c;
  --amber-soft:#fdf2df;
  --rose:#e2604f;
  --rose-soft:#fdeceb;
  --blue:#3d7ea6;
  --blue-soft:#e9f2f8;
  --ink:#0f242b;
  --ink-2:#2c4650;
  --ink-3:#5d747d;
  --ink-4:#8fa3ab;
  --line:#e3ebee;
  --line-2:#eff4f6;
  --bg:#f3f7f8;
  --card:#ffffff;
  --navy:#0a171d;
  --navy-2:#0e2029;
  --navy-line:rgba(255,255,255,.07);
  --shadow-sm:0 1px 2px rgba(15,36,43,.05), 0 4px 12px rgba(15,36,43,.04);
  --shadow-md:0 8px 26px rgba(15,36,43,.09), 0 2px 6px rgba(15,36,43,.04);
  --shadow-lg:0 26px 70px rgba(8,24,30,.22), 0 4px 16px rgba(8,24,30,.08);
  --r-sm:8px; --r-md:12px; --r-lg:16px; --r-xl:22px;
  --font:"PingFang SC","HarmonyOS Sans SC","Microsoft YaHei","Segoe UI",system-ui,-apple-system,sans-serif;
  --mono:"SFMono-Regular",Consolas,"Liberation Mono",Menlo,monospace;
}
*,*::before,*::after{box-sizing:border-box}
html,body{margin:0;padding:0}
body{
  font-family:var(--font);background:var(--bg);color:var(--ink);
  font-size:13.5px;line-height:1.6;-webkit-font-smoothing:antialiased;
  text-rendering:optimizeLegibility;
}
a{color:var(--jade-deep);text-decoration:none}
button{font-family:inherit}
h1,h2,h3,h4,p{margin:0}
ul,ol{margin:0;padding:0;list-style:none}
svg{display:block}
::selection{background:rgba(15,179,154,.2)}
input,select,textarea,button{font-size:13.5px;color:var(--ink);outline:none}
input::placeholder,textarea::placeholder{color:var(--ink-4)}
img{max-width:100%;display:block}

/* 滚动条 */
::-webkit-scrollbar{width:8px;height:8px}
::-webkit-scrollbar-thumb{background:#cfdcdf;border-radius:8px;border:2px solid transparent;background-clip:content-box}
::-webkit-scrollbar-thumb:hover{background:#aec3c8;background-clip:content-box}
::-webkit-scrollbar-track{background:transparent}

/* 图标 */
.icon{width:18px;height:18px;stroke:currentColor;fill:none;stroke-width:1.7;stroke-linecap:round;stroke-linejoin:round;flex:none}
svg use{pointer-events:none}

/* 通用工具 */
.flex{display:flex;align-items:center}
.flex-between{display:flex;align-items:center;justify-content:space-between}
.gap6{gap:6px}.gap8{gap:8px}.gap10{gap:10px}.gap12{gap:12px}.gap16{gap:16px}
.muted{color:var(--ink-4)}
.dim{color:var(--ink-3)}
.mono{font-family:var(--mono);font-variant-numeric:tabular-nums;letter-spacing:-.2px}
.num{font-variant-numeric:tabular-nums;font-weight:600}
.nowrap{white-space:nowrap}
.ellip{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.mt4{margin-top:4px}.mt8{margin-top:8px}.mt12{margin-top:12px}.mt16{margin-top:16px}.mt24{margin-top:24px}
.mb8{margin-bottom:8px}.mb12{margin-bottom:12px}.mb16{margin-bottom:16px}
.hidden{display:none!important}
.text-right{text-align:right}
.text-center{text-align:center}
.w-100{width:100%}

/* 徽标 */
.chip{
  display:inline-flex;align-items:center;gap:5px;height:23px;padding:0 9px;border-radius:6px;
  font-size:11.5px;font-weight:500;letter-spacing:.2px;background:var(--line-2);color:var(--ink-3);
  border:1px solid transparent;white-space:nowrap;
}
.chip::before{content:"";width:5px;height:5px;border-radius:50%;background:currentColor;opacity:.75}
.chip.plain::before{display:none}
.chip.ok{background:var(--jade-soft);color:var(--jade-deep)}
.chip.warn{background:var(--amber-soft);color:#a9711c}
.chip.danger{background:var(--rose-soft);color:#b3412f}
.chip.info{background:var(--blue-soft);color:#2c6584}
.chip.muted{background:#eef2f3;color:#7d9097}
.chip.dark{background:rgba(10,23,29,.85);color:#d8f6f0}
.chip.line{background:transparent;border-color:var(--line);color:var(--ink-3)}

/* 动画 */
@keyframes fadeUp{from{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}
@keyframes fadeIn{from{opacity:0}to{opacity:1}}
@keyframes popIn{from{opacity:0;transform:translateY(14px) scale(.985)}to{opacity:1;transform:none}}
@keyframes drawIn{from{stroke-dashoffset:var(--len,600)}to{stroke-dashoffset:0}}
@keyframes pulse{0%,100%{opacity:1}50%{opacity:.35}}
@keyframes shimmer{0%{background-position:-420px 0}100%{background-position:420px 0}}
.fade-up{animation:fadeUp .4s cubic-bezier(.2,.7,.3,1) both}

/* 空白与加载 */
.empty{
  padding:52px 20px;text-align:center;color:var(--ink-4);
}
.empty-ico{
  width:54px;height:54px;margin:0 auto 12px;border-radius:16px;background:#f1f6f7;
  display:grid;place-items:center;color:#b7c8cc;
}
.empty-ico svg{width:26px;height:26px;stroke:currentColor;fill:none;stroke-width:1.5}
.empty strong{display:block;color:var(--ink-3);font-weight:500;font-size:13px}
.empty span{font-size:12px}
.skeleton{
  border-radius:8px;background:linear-gradient(90deg,#eef3f4 25%,#f7fafa 50%,#eef3f4 75%);
  background-size:840px 100%;animation:shimmer 1.3s linear infinite;
}
.spinner{width:16px;height:16px;border:2px solid rgba(15,179,154,.2);border-top-color:var(--jade);border-radius:50%;animation:spin .7s linear infinite;display:inline-block}
@keyframes spin{to{transform:rotate(360deg)}}
