/* ==========================================================================
   巡湖智慧巡查平台 · UI 2.0 覆盖层
   --------------------------------------------------------------------------
   设计意图：把"发光堆叠"换成"留白与层级"，后台由深色转浅色，主色收敛为太湖青。
   接入方式：在每个页面 </head> 前引入本文件（务必在 app.css 与页面内联样式之后）。
   回滚方式：删掉那一行 <link>，全站即刻回到旧版，无任何副作用。
   约束：只覆盖样式，不改 DOM、不改类名、不改任何脚本逻辑。
   ========================================================================== */

/* --------------------------------------------------------------------------
   1. 设计令牌
   -------------------------------------------------------------------------- */
:root{
  /* 表面 */
  --bg:#F5F7F8; --bg2:#FFFFFF; --bg-soft:#FAFBFB;
  --panel:#FFFFFF; --panel2:#FBFCFC; --panel3:#F4F7F8;
  --card:#FFFFFF; --card-hi:#FBFCFC;
  --line:#E4EAEC; --line2:#D5DEE1; --line3:#C2D0D4;

  /* 文字（全部满足 WCAG AA） */
  --text:#12252E; --muted:#4E636B; --dim:#6E838B;

  /* 主色：太湖青 */
  --acc:#16647F; --acc-d:#0E4A5F; --acc-l:#1B7C9B;
  --acc-soft:#E9F1F4; --acc-line:#BFD8E0;
  --grad:linear-gradient(135deg,#1B7C9B,#16647F);
  --grad-soft:linear-gradient(135deg,#1B7C9B,#16647F);
  --mint:#177F73;

  /* 状态 */
  --green:#16704F; --amber:#8A5A0B; --red:#B42318; --teal:#16647F;
  --green-bg:#E7F4EE; --amber-bg:#FBF2E2; --red-bg:#FCEBE9;
  --blue-bg:#E9F1F4; --gray-bg:#F0F3F4;
  --ok:#16704F; --warn:#8A5A0B; --bad:#B42318;

  /* 兼容旧变量名 */
  --cyan:#1B7C9B; --blue:#16647F; --navy:#16647F; --soft:#16647F;
  --brand:#16647F; --brand-2:#1B7C9B; --brand-soft:#E9F1F4; --brand-line:#BFD8E0;
  --glass:#FBFCFC;

  /* 节奏 */
  --r-card:10px; --r-btn:8px; --r-tag:5px;
  --sh-1:0 1px 2px rgba(16,40,50,.04);
  --sh-2:0 2px 8px rgba(16,40,50,.06);
}

/* --------------------------------------------------------------------------
   2. 基础
   -------------------------------------------------------------------------- */
html{color-scheme:light}
body{
  background:var(--bg); color:var(--text);
  font-family:-apple-system,BlinkMacSystemFont,"Segoe UI","Microsoft YaHei","PingFang SC",sans-serif;
  font-size:13.5px; line-height:1.62; letter-spacing:.01em;
  -webkit-font-smoothing:antialiased; text-rendering:optimizeLegibility;
}
body::before{display:none!important}
a{color:var(--acc);text-decoration:none}
a:hover{color:var(--acc-d)}
::-webkit-scrollbar{width:9px;height:9px}
::-webkit-scrollbar-thumb{background:#CDD9DD;border-radius:99px;border:2px solid transparent;background-clip:content-box}
::-webkit-scrollbar-thumb:hover{background:#AFC1C7;background-clip:content-box}
::-webkit-scrollbar-track{background:transparent}
::selection{background:#CFE4EB;color:#0B2B36}

/* --------------------------------------------------------------------------
   3. 骨架：侧栏 / 顶栏 / 内容区
   -------------------------------------------------------------------------- */
.side{
  width:216px; padding:18px 10px 12px;
  background:#FFFFFF; border-right:1px solid var(--line);
  backdrop-filter:none;
}
.logo{padding:0 8px 16px;font-size:14px;font-weight:650;letter-spacing:.02em;color:#0F2530;line-height:1.35}
.logo small{font-size:11px;font-weight:400;color:var(--dim);margin-top:3px;letter-spacing:.02em}

.nav{padding-right:0}
.nav a{
  position:relative; margin:1px 0; padding:8px 10px; border-radius:var(--r-btn);
  color:#41565E; font-size:13px; font-weight:450; letter-spacing:.01em;
  transition:background .14s,color .14s;
}
.nav a .ic{width:18px;font-size:12.5px;opacity:.55;transition:opacity .14s}
.nav a:hover{background:#F3F7F8;color:#0F2530}
.nav a:hover .ic{opacity:.75}
.nav a.on{background:var(--acc-soft);color:var(--acc-d);font-weight:600;box-shadow:none}
.nav a.on .ic{opacity:1;color:var(--acc)}
.nav a.on::before{
  content:"";position:absolute;left:-10px;top:50%;transform:translateY(-50%);
  width:3px;height:16px;border-radius:0 2px 2px 0;background:var(--acc)
}
.side .me{margin-top:10px;padding:11px 10px 0;border-top:1px solid var(--line);font-size:11.5px;color:var(--dim)}

.main{background:var(--bg)}
.top{
  height:52px;padding:0 22px;background:#FFFFFF;
  border-bottom:1px solid var(--line);backdrop-filter:none;
}
.top h1{font-size:14px;font-weight:650;letter-spacing:.02em;color:#0F2530;gap:0}
.top h1::before{
  content:"";width:3px;height:14px;border-radius:2px;background:var(--acc);box-shadow:none
}
.top .right{font-size:12px;color:var(--dim);gap:14px}
.top .right .btn{font-size:12px}
.view{padding:18px 22px 40px}

/* --------------------------------------------------------------------------
   4. 卡片与面板：一屏一个主容器，其余靠分隔线
   -------------------------------------------------------------------------- */
.grid{gap:12px}
.card{
  background:var(--card);border:1px solid var(--line);border-radius:var(--r-card);
  padding:16px 18px;box-shadow:var(--sh-1);
  transition:border-color .16s;
}
.card:hover{transform:none;border-color:var(--line2);box-shadow:var(--sh-1)}
.card::after{display:none}
.card .k{font-size:12px;color:var(--muted);margin-bottom:6px;letter-spacing:.02em}
.card .v{
  font-size:26px;font-weight:620;color:#0F2530;letter-spacing:-.01em;
  font-variant-numeric:tabular-nums
}
.card .v span{font-size:12px;font-weight:400;color:var(--dim)}

.panel{
  background:var(--panel);border:1px solid var(--line);border-radius:var(--r-card);
  padding:16px 18px;margin-bottom:14px;box-shadow:var(--sh-1);
}
.panel h2{
  font-size:13px;font-weight:650;letter-spacing:.01em;color:#0F2530;gap:9px;margin-bottom:2px
}
.panel h2::before{
  content:"";width:3px;height:13px;border-radius:2px;
  background:var(--acc);box-shadow:none
}
.panel .sub{font-size:12px;color:var(--muted);margin-bottom:12px;line-height:1.6}

/* --------------------------------------------------------------------------
   5. 表格
   -------------------------------------------------------------------------- */
table{font-size:12.5px}
th,td{padding:9px 11px;border-bottom:1px solid var(--line);vertical-align:middle}
th{
  color:#5C727A;font-weight:550;font-size:12px;letter-spacing:.02em;
  background:#F6F9FA;border-bottom:1px solid var(--line)
}
th:first-child,td:first-child{padding-left:12px}
th:last-child,td:last-child{padding-right:12px}
tbody tr:hover td{background:#F7FAFB}
tbody tr:last-child td{border-bottom:0}

/* 状态标签：方角浅底，不用高饱和描边 */
.tag{
  display:inline-block;padding:2px 7px;border-radius:var(--r-tag);
  font-size:11.5px;font-weight:500;line-height:1.6;letter-spacing:.01em;border:1px solid transparent
}
.t-green{background:var(--green-bg);color:var(--green);border-color:#CBE5DA}
.t-amber{background:var(--amber-bg);color:var(--amber);border-color:#EFDCBE}
.t-red{background:var(--red-bg);color:var(--red);border-color:#F3D2CE}
.t-blue,.t-cyan{background:var(--acc-soft);color:var(--acc-d);border-color:var(--acc-line)}
.t-gray{background:var(--gray-bg);color:#5C727A;border-color:#E1E7E9}

/* --------------------------------------------------------------------------
   6. 控件
   -------------------------------------------------------------------------- */
.btn{
  height:32px;padding:0 13px;display:inline-flex;align-items:center;justify-content:center;gap:6px;
  border:1px solid var(--line2);border-radius:var(--r-btn);
  background:#FFFFFF;color:#22383F;font-size:12.5px;font-weight:500;letter-spacing:.01em;
  cursor:pointer;white-space:nowrap;box-shadow:none;
  transition:background .14s,border-color .14s,color .14s;
}
.btn:hover{background:#F3F7F8;border-color:var(--line3);color:#0F2530}
.btn:active{background:#EBF1F3}
.btn.primary{
  background:var(--acc);border-color:var(--acc);color:#FFFFFF;font-weight:550;box-shadow:none
}
.btn.primary:hover{background:var(--acc-d);border-color:var(--acc-d);filter:none;box-shadow:none}
.btn.sm{height:27px;padding:0 10px;font-size:12px}
.btn:disabled{opacity:.45;cursor:not-allowed}
.btn:focus-visible{outline:2px solid var(--acc);outline-offset:2px}

input,select,textarea{
  height:32px;padding:0 10px;border:1px solid var(--line2);border-radius:var(--r-btn);
  font-size:12.5px;color:#172E37;background:#FFFFFF;font-family:inherit;outline:none;
  transition:border-color .14s,box-shadow .14s;
}
textarea{height:auto;padding:8px 10px;line-height:1.6;resize:vertical}
input:hover,select:hover,textarea:hover{border-color:var(--line3)}
input:focus,select:focus,textarea:focus{
  border-color:var(--acc);background:#FFFFFF;box-shadow:0 0 0 3px rgba(22,100,127,.12)
}
input::placeholder,textarea::placeholder{color:#93A6AD}
input[type=date]{min-width:148px}
input[type=checkbox],input[type=radio]{height:auto;accent-color:var(--acc)}
select option{background:#FFFFFF;color:#172E37}
input[type=file]{height:auto;padding:6px}

.row{gap:10px}
.muted{color:var(--muted)}
.mono{font-family:ui-monospace,SFMono-Regular,"Cascadia Mono",Menlo,monospace;
  font-variant-numeric:tabular-nums;letter-spacing:-.01em}

/* 标签页：底部分隔 + 选中下划线，不做胶囊 */
.tabs{gap:2px;margin-bottom:14px;border-bottom:1px solid var(--line);padding-bottom:0}
.tabs button{
  height:34px;padding:0 14px;border:0;border-bottom:2px solid transparent;border-radius:0;
  background:transparent;color:var(--muted);font-size:12.5px;font-weight:500;cursor:pointer;
  transition:color .14s,border-color .14s;box-shadow:none
}
.tabs button:hover{color:#0F2530;border-color:transparent;background:transparent}
.tabs button.on{
  color:var(--acc-d);border-color:transparent;border-bottom-color:var(--acc);
  background:transparent;font-weight:600;box-shadow:none
}

/* --------------------------------------------------------------------------
   7. 图表
   -------------------------------------------------------------------------- */
.bars{height:120px;gap:6px;padding-top:14px}
/* 修复：柱状图容器必须有确定高度，否则子元素百分比高度会塌成一条线 */
.bars .b{height:100%;justify-content:flex-end}
.bars .b i{
  border-radius:3px 3px 0 0;min-height:3px;
  background:#A8CBD6;opacity:1;transition:background .14s
}
.bars .b:hover i{background:#8FBAC8}
.bars .b i.hi{background:var(--acc);opacity:1}
.bars .b span{font-size:10.5px;color:var(--dim)}

/* --------------------------------------------------------------------------
   8. 列表与时间线
   -------------------------------------------------------------------------- */
.list-item{border-bottom:1px solid var(--line);padding:10px 0}
.timeline{border-left:1px solid var(--line2);padding-left:14px}
.timeline div{font-size:12.5px;color:#41565E;padding:3px 0}
.timeline div::before{
  left:-18px;top:9px;width:6px;height:6px;background:var(--acc);box-shadow:0 0 0 3px #E9F1F4
}

/* --------------------------------------------------------------------------
   9. 弹窗 / 空态 / 登录
   -------------------------------------------------------------------------- */
.modal{background:rgba(18,37,46,.32);backdrop-filter:blur(3px)}
.modal .box{
  background:#FFFFFF;border:1px solid var(--line);border-radius:12px;padding:20px;
  box-shadow:0 16px 48px rgba(16,40,50,.16)
}
.modal h3{font-size:14px;font-weight:650;color:#0F2530;margin-bottom:12px}
.field label{font-size:12px;color:var(--muted);margin-bottom:5px}
.empty{padding:40px;color:var(--dim);font-size:12.5px}
.kv{font-size:12px;color:var(--muted)}

#login{background:#F2F6F7}
#login .box{
  background:#FFFFFF;border:1px solid var(--line);border-radius:14px;padding:30px;width:336px;
  box-shadow:0 16px 48px rgba(16,40,50,.12)
}
#login h3{font-size:17px;font-weight:650;color:#0F2530;letter-spacing:.01em}
#login p{font-size:12px;color:var(--muted)}
#login input{height:38px;font-size:13px;margin-bottom:10px}
#login button{
  height:40px;border-radius:var(--r-btn);background:var(--acc);color:#FFFFFF;
  font-size:13px;font-weight:550;letter-spacing:.02em;box-shadow:none
}
#login button:hover{background:var(--acc-d);filter:none}

/* 统一登录弹窗 */
#ulogin .ul-mask{background:rgba(18,37,46,.44);backdrop-filter:blur(4px)}
#ulogin .ul-box{
  width:340px;background:#FFFFFF;border:1px solid var(--line);border-radius:14px;
  padding:24px 24px 18px;box-shadow:0 16px 48px rgba(16,40,50,.16)
}
#ulogin h3{color:#0F2530;font-size:16px;font-weight:650;letter-spacing:.01em;margin:0 0 5px}
#ulogin p{color:var(--muted);font-size:12px;margin:0 0 14px;line-height:1.6}
#ulogin input{
  height:38px;background:#FFFFFF;border:1px solid var(--line2);color:#172E37;
  border-radius:var(--r-btn);padding:0 12px;margin-bottom:9px;font-size:13px
}
#ulogin input:focus{border-color:var(--acc);background:#FFFFFF;box-shadow:0 0 0 3px rgba(22,100,127,.12)}
#ulogin #ulb{
  height:40px;background:var(--acc);color:#FFFFFF;border-radius:var(--r-btn);
  font-size:13px;font-weight:550;letter-spacing:.08em
}
#ulogin #ulb:hover{background:var(--acc-d);filter:none}
#ulogin .ul-err{color:var(--red);font-size:12px}
/* 演示账号：改成三列网格，避免 5 个胶囊折成 4+1 */
#ulogin .ul-demo{
  display:grid;grid-template-columns:repeat(3,1fr);gap:6px;margin-top:12px;align-items:center
}
#ulogin .ul-demo span{grid-column:1/-1;color:var(--dim);font-size:11px;margin-bottom:1px}
#ulogin .ul-demo button{
  width:100%;background:#F6F9FA;border:1px solid var(--line);color:#41565E;border-radius:6px;
  padding:5px 0;font-size:11.5px;text-align:center;transition:all .14s
}
#ulogin .ul-demo button:hover{border-color:var(--acc-line);color:var(--acc-d);background:var(--acc-soft)}

/* --------------------------------------------------------------------------
   10. 主框架（index.html）
   -------------------------------------------------------------------------- */
.sside{width:216px;padding:18px 10px 12px;background:#FFFFFF;border-right:1px solid var(--line);backdrop-filter:none}
.slogo{padding:0 8px 16px;gap:9px}
.slogo .mark{
  width:30px;height:30px;border-radius:8px;background:var(--acc);box-shadow:none
}
.slogo .mark svg{width:16px;height:16px;stroke-width:1.5}
.slogo b{font-size:13.5px;font-weight:650;color:#0F2530;letter-spacing:.01em}
.slogo span{font-size:10.5px;color:var(--dim);margin-top:2px}

.snav .grp{
  margin-top:15px;padding:0 10px 5px;font-size:10.5px;font-weight:600;
  color:#93A6AD;letter-spacing:.1em
}
.snav a{
  padding:7px 10px;border-radius:var(--r-btn);color:#41565E;font-size:13px;font-weight:450
}
.snav a .ic{border-radius:5px;opacity:.55}
.snav a .ic svg{stroke-width:1.6}
.snav a:hover{background:#F3F7F8;color:#0F2530}
.snav a:hover .ic{opacity:.75}
.snav a::before{
  left:-10px;width:3px;height:16px;border-radius:0 2px 2px 0;background:var(--acc)
}
.snav a.on{
  background:var(--acc-soft);color:var(--acc-d);font-weight:600;
  background-image:none
}
.snav a.on .ic{opacity:1;color:var(--acc)}

.sme{
  margin-top:10px;padding:9px;border:1px solid var(--line);border-radius:9px;
  background:#FBFCFC;gap:9px
}
.sme .ava{
  width:27px;height:27px;border-radius:50%;background:var(--acc-soft);
  color:var(--acc-d);font-size:12px;font-weight:650
}
.sme .who b{color:#172E37;font-size:12px;font-weight:550}
.sme .who i{color:var(--dim);font-size:10.5px}

.smain{background:var(--bg)}
.stop{
  height:52px;padding:0 22px;background:#FFFFFF;border-bottom:1px solid var(--line);backdrop-filter:none
}
.stop .ttl{font-size:14px;font-weight:650;letter-spacing:.01em;color:#0F2530;gap:0}
.stop .ttl::before{width:3px;height:14px;border-radius:2px;background:var(--acc);box-shadow:none}
.stop .sub{font-size:12px;color:var(--dim)}
.stop .clk{font-size:12px;color:var(--muted);letter-spacing:.01em}
.stop .dot{background:#1FA971;margin-right:6px}
.framebox{background:var(--bg)}
iframe{background:var(--bg)}
.bootscreen{color:var(--dim);font-size:12px;letter-spacing:.1em}
.bootscreen .ring{border:2px solid var(--line2);border-top-color:var(--acc)}

/* --------------------------------------------------------------------------
   11. 运行概览（dashboard.html）
   -------------------------------------------------------------------------- */
.dash{gap:12px}
.krow{gap:12px}
.krow .kpi{
  background:#FFFFFF;border:1px solid var(--line);border-radius:var(--r-card);
  padding:15px 17px;box-shadow:var(--sh-1)
}
.krow .kpi::after{display:none}
.krow .kpi .lb{font-size:12px;color:var(--muted);letter-spacing:.01em}
.krow .kpi .v{
  font-size:28px;font-weight:620;color:#0F2530;margin-top:4px;letter-spacing:-.02em
}
.krow .kpi .v small{font-size:12.5px;font-weight:500;color:var(--dim);margin-left:3px}
.krow .kpi .foot{font-size:11.5px;color:var(--dim);margin-top:7px}
.krow .kpi .bar{height:4px;border-radius:2px;background:#EEF2F3;margin-top:11px}
.krow .kpi .bar i{background:var(--acc);border-radius:2px}
.krow .kpi.ok .bar i{background:#1FA971}
.krow .kpi.warn .bar i{background:#D89414}
.krow .kpi.bad .bar i{background:#D0453A}

.mrow,.brow{gap:12px}
.trend{height:180px;gap:10px}
.trend .col b{font-size:11.5px;color:var(--muted);font-weight:550}
.trend .col i{
  background:#C3D9E1;border-radius:3px 3px 0 0;
  transition:height .7s cubic-bezier(.22,1,.36,1)
}
.trend .col:hover i{background:#9FC3CE}
.trend .col span{font-size:10.5px;color:var(--dim)}

.envv{border-bottom:1px solid var(--line);font-size:12.5px;padding:8px 0}
.envv b{color:#0F2530;font-weight:600}
.envv .u{color:var(--dim)}

.chips{gap:6px}
.chip{
  padding:4px 9px;border-radius:var(--r-tag);font-size:11.5px;font-weight:500;line-height:1.5
}
.chip.done{background:var(--green-bg);color:var(--green);border-color:#CBE5DA}
.chip.pend{background:var(--gray-bg);color:#5C727A;border-color:#E1E7E9}

.al{
  background:#FBFCFC;border:1px solid var(--line);border-left:3px solid #D89414;
  border-radius:7px;padding:8px 11px;font-size:12px
}
.al.high{border-left-color:#D0453A}
.al .t{color:var(--dim);font-size:11px}
.al+.al{margin-top:7px}

.feed li{border-bottom:1px solid var(--line);font-size:12px;padding:8px 0}
.feed .dot2{background:var(--acc);width:6px;height:6px;margin-top:6px}
.feed .t{color:var(--dim);font-size:11px}

.livechip{
  padding:5px 11px;border-radius:99px;font-size:11.5px;
  border:1px solid var(--line);color:var(--muted);background:#FFFFFF
}
.livechip i{width:6px;height:6px;background:#B6C4C9}
.livechip.on{border-color:#F3D2CE;color:var(--red);background:var(--red-bg)}
.livechip.on i{background:#D0453A}

/* --------------------------------------------------------------------------
   12. 影像 / 对比（media.html、compare.html、daypoints.html）
   -------------------------------------------------------------------------- */
.shot,.dr,.satcard{background:#FFFFFF;border:1px solid var(--line);border-radius:9px}
.shot .cap{background:linear-gradient(180deg,transparent,rgba(9,20,26,.72));color:#FFFFFF;font-size:11px}
.dr:hover{border-color:var(--line2);transform:none;box-shadow:var(--sh-2)}
.dr .badge{background:rgba(9,20,26,.72);color:#E8F4F7;border-color:rgba(255,255,255,.16)}
.dr .cap{color:#41565E;font-size:11px}
.dr .cap b{color:#0F2530}
.ckthumbs img{border:1px solid var(--line);border-radius:6px}
.ckthumbs img:hover{border-color:var(--acc)}
.satcard.on{border-color:var(--acc);box-shadow:0 0 0 2px rgba(22,100,127,.16)}
.satcard .nm{font-size:11.5px;color:#172E37}
.satcard .dt{color:var(--dim)}
.satcard .pick{background:var(--acc);border-color:var(--acc);color:#FFFFFF}
.pair{gap:12px}

.bar{background:#EEF2F3}
.thumbs img{border:1px solid var(--line)}
.thumbs img:hover{border-color:var(--acc)}

/* daypoints 的指标块 */
.kpi{background:#F6FAFB;border:1px solid var(--acc-line);border-radius:8px;color:#0F2530}
.kpi span{color:var(--muted)}

/* linkage 的火花线 */
.spark i{background:#B7D2DB;border-radius:1px 1px 0 0}
.spark i.hi{background:#D0453A}
.metric b{color:#0F2530;font-weight:620}

/* --------------------------------------------------------------------------
   13. 打印
   -------------------------------------------------------------------------- */
@media print{
  body{background:#fff}
  .side,.snav,.top,.stop,.btn{display:none!important}
  .panel{break-inside:avoid;box-shadow:none}
}

/* --------------------------------------------------------------------------
   14. 导航图标：统一为一套 16px 线性图标（覆盖 app.js 里的字符图标）
   -------------------------------------------------------------------------- */
.nav a .ic{width:18px;height:18px;flex:none;font-size:0;line-height:0;
  display:flex;align-items:center;justify-content:center;opacity:1}
.nav a .ic::before{
  content:"";display:block;width:16px;height:16px;background-color:currentColor;opacity:.55;
  -webkit-mask-image:var(--ic);mask-image:var(--ic);
  -webkit-mask-size:16px 16px;mask-size:16px 16px;
  -webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;
  -webkit-mask-position:center;mask-position:center;
  -webkit-mask-mode:alpha;mask-mode:alpha;
  transition:opacity .14s}
.nav a:hover .ic::before{opacity:.82}
.nav a.on .ic::before{opacity:1}
.nav a[href="/admin"] .ic{--ic:url("data:image/svg+xml,%3Csvg%20xmlns%3D%27http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%27%20viewBox%3D%270%200%2016%2016%27%20fill%3D%27none%27%20stroke%3D%27black%27%20stroke-width%3D%271.6%27%20stroke-linecap%3D%27round%27%20stroke-linejoin%3D%27round%27%3E%3Crect%20x%3D%272.2%27%20y%3D%272.2%27%20width%3D%274.6%27%20height%3D%274.6%27%20rx%3D%271.2%27%2F%3E%3Crect%20x%3D%279.2%27%20y%3D%272.2%27%20width%3D%274.6%27%20height%3D%274.6%27%20rx%3D%271.2%27%2F%3E%3Crect%20x%3D%272.2%27%20y%3D%279.2%27%20width%3D%274.6%27%20height%3D%274.6%27%20rx%3D%271.2%27%2F%3E%3Crect%20x%3D%279.2%27%20y%3D%279.2%27%20width%3D%274.6%27%20height%3D%274.6%27%20rx%3D%271.2%27%2F%3E%3C%2Fsvg%3E")}
.nav a[href="/map"] .ic{--ic:url("data:image/svg+xml,%3Csvg%20xmlns%3D%27http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%27%20viewBox%3D%270%200%2016%2016%27%20fill%3D%27none%27%20stroke%3D%27black%27%20stroke-width%3D%271.6%27%20stroke-linecap%3D%27round%27%20stroke-linejoin%3D%27round%27%3E%3Cpath%20d%3D%27M8%2014.2s-4.6-3.9-4.6-7.3A4.6%204.6%200%200%201%208%202.3a4.6%204.6%200%200%201%204.6%204.6c0%203.4-4.6%207.3-4.6%207.3z%27%2F%3E%3Ccircle%20cx%3D%278%27%20cy%3D%276.9%27%20r%3D%271.7%27%2F%3E%3C%2Fsvg%3E")}
.nav a[href="/tasks"] .ic{--ic:url("data:image/svg+xml,%3Csvg%20xmlns%3D%27http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%27%20viewBox%3D%270%200%2016%2016%27%20fill%3D%27none%27%20stroke%3D%27black%27%20stroke-width%3D%271.6%27%20stroke-linecap%3D%27round%27%20stroke-linejoin%3D%27round%27%3E%3Cpath%20d%3D%27M2.8%204.2%204%205.4l2.2-2.2%27%2F%3E%3Cpath%20d%3D%27M2.8%209%204%2010.2%206.2%208%27%2F%3E%3Cpath%20d%3D%27M8.4%204.6h4.8M8.4%209.3h4.8M2.8%2013.4h10.4%27%2F%3E%3C%2Fsvg%3E")}
.nav a[href="/points"] .ic{--ic:url("data:image/svg+xml,%3Csvg%20xmlns%3D%27http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%27%20viewBox%3D%270%200%2016%2016%27%20fill%3D%27none%27%20stroke%3D%27black%27%20stroke-width%3D%271.6%27%20stroke-linecap%3D%27round%27%20stroke-linejoin%3D%27round%27%3E%3Ccircle%20cx%3D%278%27%20cy%3D%278%27%20r%3D%275.3%27%2F%3E%3Ccircle%20cx%3D%278%27%20cy%3D%278%27%20r%3D%271.8%27%2F%3E%3C%2Fsvg%3E")}
.nav a[href="/issues"] .ic{--ic:url("data:image/svg+xml,%3Csvg%20xmlns%3D%27http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%27%20viewBox%3D%270%200%2016%2016%27%20fill%3D%27none%27%20stroke%3D%27black%27%20stroke-width%3D%271.6%27%20stroke-linecap%3D%27round%27%20stroke-linejoin%3D%27round%27%3E%3Cpath%20d%3D%27M8%202.5%2014.2%2013.4H1.8z%27%2F%3E%3Cpath%20d%3D%27M8%206.4v2.8M8%2011.3v.2%27%2F%3E%3C%2Fsvg%3E")}
.nav a[href="/media"] .ic{--ic:url("data:image/svg+xml,%3Csvg%20xmlns%3D%27http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%27%20viewBox%3D%270%200%2016%2016%27%20fill%3D%27none%27%20stroke%3D%27black%27%20stroke-width%3D%271.6%27%20stroke-linecap%3D%27round%27%20stroke-linejoin%3D%27round%27%3E%3Crect%20x%3D%272.2%27%20y%3D%273.4%27%20width%3D%2711.6%27%20height%3D%279.2%27%20rx%3D%271.6%27%2F%3E%3Cpath%20d%3D%27M6.7%206.2v3.6L9.9%208z%27%2F%3E%3C%2Fsvg%3E")}
.nav a[href="/compare"] .ic{--ic:url("data:image/svg+xml,%3Csvg%20xmlns%3D%27http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%27%20viewBox%3D%270%200%2016%2016%27%20fill%3D%27none%27%20stroke%3D%27black%27%20stroke-width%3D%271.6%27%20stroke-linecap%3D%27round%27%20stroke-linejoin%3D%27round%27%3E%3Cpath%20d%3D%27M5%205.6h7.4M10.5%203.6%2012.4%205.6%2010.5%207.6%27%2F%3E%3Cpath%20d%3D%27M11%2010.4H3.6M5.5%208.4%203.6%2010.4%205.5%2012.4%27%2F%3E%3C%2Fsvg%3E")}
.nav a[href="/alerts"] .ic{--ic:url("data:image/svg+xml,%3Csvg%20xmlns%3D%27http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%27%20viewBox%3D%270%200%2016%2016%27%20fill%3D%27none%27%20stroke%3D%27black%27%20stroke-width%3D%271.6%27%20stroke-linecap%3D%27round%27%20stroke-linejoin%3D%27round%27%3E%3Cpath%20d%3D%27M9.1%201.8%204%208.7h3.4L6.9%2014.2l5.1-6.9H8.6z%27%2F%3E%3C%2Fsvg%3E")}
.nav a[href="/linkage"] .ic{--ic:url("data:image/svg+xml,%3Csvg%20xmlns%3D%27http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%27%20viewBox%3D%270%200%2016%2016%27%20fill%3D%27none%27%20stroke%3D%27black%27%20stroke-width%3D%271.6%27%20stroke-linecap%3D%27round%27%20stroke-linejoin%3D%27round%27%3E%3Cpath%20d%3D%27M6.6%209.4a2.8%202.8%200%200%201%200-4l1.4-1.4a2.8%202.8%200%200%201%204%204l-.8.8%27%2F%3E%3Cpath%20d%3D%27M9.4%206.6a2.8%202.8%200%200%201%200%204l-1.4%201.4a2.8%202.8%200%200%201-4-4l.8-.8%27%2F%3E%3C%2Fsvg%3E")}
.nav a[href="/reports"] .ic{--ic:url("data:image/svg+xml,%3Csvg%20xmlns%3D%27http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%27%20viewBox%3D%270%200%2016%2016%27%20fill%3D%27none%27%20stroke%3D%27black%27%20stroke-width%3D%271.6%27%20stroke-linecap%3D%27round%27%20stroke-linejoin%3D%27round%27%3E%3Cpath%20d%3D%27M2.4%2013.4h11.2%27%2F%3E%3Cpath%20d%3D%27M4.4%2013.4V9.2M8%2013.4V4.4M11.6%2013.4V7.2%27%2F%3E%3C%2Fsvg%3E")}
.nav a[href="/screen"] .ic{--ic:url("data:image/svg+xml,%3Csvg%20xmlns%3D%27http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%27%20viewBox%3D%270%200%2016%2016%27%20fill%3D%27none%27%20stroke%3D%27black%27%20stroke-width%3D%271.6%27%20stroke-linecap%3D%27round%27%20stroke-linejoin%3D%27round%27%3E%3Crect%20x%3D%272.2%27%20y%3D%273%27%20width%3D%2711.6%27%20height%3D%278%27%20rx%3D%271.4%27%2F%3E%3Cpath%20d%3D%27M6%2013.4h4M8%2011v2.4%27%2F%3E%3C%2Fsvg%3E")}
.nav a[href="/system"] .ic{--ic:url("data:image/svg+xml,%3Csvg%20xmlns%3D%27http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%27%20viewBox%3D%270%200%2016%2016%27%20fill%3D%27none%27%20stroke%3D%27black%27%20stroke-width%3D%271.6%27%20stroke-linecap%3D%27round%27%20stroke-linejoin%3D%27round%27%3E%3Ccircle%20cx%3D%278%27%20cy%3D%275.8%27%20r%3D%272.6%27%2F%3E%3Cpath%20d%3D%27M3.1%2013.2a5%205%200%200%201%209.8%200%27%2F%3E%3C%2Fsvg%3E")}

/* 外壳（index.html）的内联 SVG 图标对齐同一网格 */
.snav a .ic{width:18px;height:18px;border-radius:0;background:none}
.snav a .ic svg{width:16px;height:16px;stroke-width:1.6}
