/* =========================================================
   办公终端安全基线合规平台 · 基础样式
   ========================================================= */
:root{
  --ink:#0B1220;
  --ink-2:#121C2E;
  --ink-3:#1B2841;
  --ink-soft:#243453;
  --paper:#F1F3F8;
  --paper-2:#F8F9FC;
  --card:#FFFFFF;
  --line:#E3E8F1;
  --line-2:#EEF1F7;
  --line-strong:#CFD7E5;
  --text:#0F172A;
  --text-2:#43506A;
  --muted:#7A8699;
  --faint:#A5AEBE;
  --lime:#C9F45A;
  --lime-2:#AEDD33;
  --lime-soft:#F2FBDD;
  --blue:#2F6BFF;
  --blue-soft:#EDF2FF;
  --cyan:#0EA5C9;
  --green:#12B981;
  --green-soft:#E8F8F1;
  --amber:#F59E0B;
  --amber-soft:#FFF6E6;
  --red:#EF4444;
  --red-soft:#FDECEC;
  --violet:#7C5CFF;
  --violet-soft:#F1EDFF;
  --sky:#0EA5E9;
  --radius-lg:18px;
  --radius:14px;
  --radius-sm:10px;
  --radius-xs:7px;
  --shadow-sm:0 1px 2px rgba(15,23,42,.05);
  --shadow:0 12px 32px -20px rgba(15,23,42,.32),0 2px 6px rgba(15,23,42,.04);
  --shadow-lg:0 38px 80px -34px rgba(15,23,42,.5),0 10px 26px -14px rgba(15,23,42,.2);
  --font:"Microsoft YaHei UI","Microsoft YaHei","PingFang SC","Hiragino Sans GB","Segoe UI",sans-serif;
  --mono:"Cascadia Mono","JetBrains Mono",Consolas,"Courier New",monospace;
}

*,*::before,*::after{box-sizing:border-box;}
html,body{margin:0;padding:0;}
html{-webkit-text-size-adjust:100%;}
body{
  font-family:var(--font);
  font-size:14px;
  line-height:1.6;
  color:var(--text);
  background:var(--paper);
  -webkit-font-smoothing:antialiased;
  text-rendering:optimizeLegibility;
}
body::before{
  content:"";
  position:fixed;
  inset:0;
  pointer-events:none;
  z-index:0;
  background-image:
    linear-gradient(rgba(15,23,42,.022) 1px, transparent 1px),
    linear-gradient(90deg, rgba(15,23,42,.022) 1px, transparent 1px);
  background-size:56px 56px;
  mask-image:linear-gradient(to bottom, rgba(0,0,0,.55), transparent 70%);
}
h1,h2,h3,h4,h5,h6{margin:0;font-weight:700;letter-spacing:.2px;color:var(--text);}
h1{font-size:23px;line-height:1.3;}
h2{font-size:18px;}
h3{font-size:15px;}
p{margin:0;}
a{color:inherit;text-decoration:none;}
button{font-family:inherit;cursor:pointer;border:none;background:none;color:inherit;}
input,select,textarea{font-family:inherit;font-size:inherit;color:inherit;}
ul,ol{margin:0;padding:0;list-style:none;}
img{max-width:100%;display:block;}
::selection{background:var(--lime);color:var(--ink);}
:focus-visible{outline:2px solid rgba(47,107,255,.35);outline-offset:2px;}

::-webkit-scrollbar{width:8px;height:8px;}
::-webkit-scrollbar-track{background:transparent;}
::-webkit-scrollbar-thumb{background:#CBD3E0;border-radius:8px;border:2px solid transparent;background-clip:content-box;}
::-webkit-scrollbar-thumb:hover{background:#AEB9CA;background-clip:content-box;}

.mono{font-family:var(--mono);font-variant-numeric:tabular-nums;}
.muted{color:var(--muted);}
.faint{color:var(--faint);}
.text-right{text-align:right;}
.text-center{text-align:center;}
.nowrap{white-space:nowrap;}
.strong{font-weight:700;}
.flex{display:flex;align-items:center;}
.flex-between{display:flex;align-items:center;justify-content:space-between;}
.flex-wrap{flex-wrap:wrap;}
.gap6{gap:6px;}.gap8{gap:8px;}.gap10{gap:10px;}.gap12{gap:12px;}.gap16{gap:16px;}.gap20{gap:20px;}
.mt8{margin-top:8px;}.mt12{margin-top:12px;}.mt16{margin-top:16px;}.mt20{margin-top:20px;}.mt24{margin-top:24px;}
.mb0{margin-bottom:0!important;}
.hidden{display:none!important;}
.sr-only{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0,0,0,0);}

@keyframes fadeUp{from{opacity:0;transform:translateY(10px);}to{opacity:1;transform:none;}}
@keyframes fadeIn{from{opacity:0;}to{opacity:1;}}
@keyframes pulse{0%,100%{opacity:1;transform:scale(1);}50%{opacity:.45;transform:scale(.82);}}
@keyframes spin{to{transform:rotate(360deg);}}
@keyframes shimmer{0%{background-position:-420px 0;}100%{background-position:420px 0;}}
@keyframes modalIn{from{opacity:0;transform:translateY(18px) scale(.975);}to{opacity:1;transform:none;}}
@keyframes drawerIn{from{transform:translateX(36px);opacity:.4;}to{transform:none;opacity:1;}}
@keyframes toastIn{from{opacity:0;transform:translateY(14px) scale(.96);}to{opacity:1;transform:none;}}
@keyframes barGrow{from{width:0;}}
@keyframes dash{to{stroke-dashoffset:0;}}

.fade-up{animation:fadeUp .45s cubic-bezier(.22,.8,.3,1) both;}
.delay-1{animation-delay:.05s;}.delay-2{animation-delay:.1s;}.delay-3{animation-delay:.15s;}.delay-4{animation-delay:.2s;}
