/* ===== 数据分析 · 执行健康度（独立页） ===== */
:root{
  --bg:#f6f5f1; --panel:#fff; --panel2:#fbfbf9;
  --ink:#191927; --ink2:#4a4d5e; --ink3:#868a9c;
  --line:#e6e8ef; --line2:#f0f1f6;
  --cyan:#22c2d1; --purple:#7f1785; --pink:#d73782;
  --green:#0e9d57; --red:#e5484d; --amber:#f5a623; --blue:#3b82f6;
  --shadow:0 1px 3px rgba(25,25,39,.06),0 6px 18px rgba(25,25,39,.05);
}
body.dark{
  --bg:#14161d; --panel:#1c1f28; --panel2:#20232d;
  --ink:#e8eaf2; --ink2:#b6bac9; --ink3:#7d8296;
  --line:#2a2e3a; --line2:#232733;
  --shadow:0 1px 3px rgba(0,0,0,.3),0 6px 18px rgba(0,0,0,.25);
}
*{box-sizing:border-box}
body{margin:0;background:var(--bg);color:var(--ink);
  font-family:"PingFang SC","Microsoft YaHei","Hiragino Sans GB",system-ui,-apple-system,sans-serif;
  font-size:13px;line-height:1.5;-webkit-font-smoothing:antialiased}
.an-wrap{padding:14px 18px 26px;max-width:1400px;margin:0 auto}

/* ---- 头部 ---- */
.an-head{display:flex;align-items:flex-end;justify-content:space-between;gap:16px;flex-wrap:wrap;margin-bottom:14px}
.an-hl h1{margin:0;font-size:19px;font-weight:700;letter-spacing:.01em}
.an-sub{font-size:12px;color:var(--ink3);margin-left:10px}
.an-hr{display:flex;align-items:center;gap:10px}
.an-seg{display:inline-flex;border:1px solid var(--line);border-radius:999px;overflow:hidden;background:var(--panel)}
.an-seg span{padding:5px 14px;font-size:12px;color:var(--ink2);cursor:pointer;user-select:none;white-space:nowrap}
.an-seg span:hover{background:var(--line2)}
.an-seg span.on{background:var(--cyan);color:#fff;font-weight:600}
.an-seg.sm span{padding:4px 12px;font-size:11.5px}
.an-btn{border:1px solid var(--line);background:var(--panel);color:var(--ink2);border-radius:999px;
  padding:5px 16px;font-size:12px;cursor:pointer}
.an-btn:hover{border-color:var(--cyan);color:var(--cyan)}

/* ---- 数据质量提示 ---- */
.an-caveats{display:flex;flex-direction:column;gap:6px;margin-bottom:12px}
.an-cav{display:flex;gap:8px;align-items:flex-start;background:rgba(245,166,35,.1);
  border:1px solid rgba(245,166,35,.35);border-left:3px solid var(--amber);
  border-radius:8px;padding:8px 12px;font-size:12px;color:var(--ink2)}
.an-cav b{color:var(--amber);font-weight:700;flex:none}

/* ---- 四卡 ---- */
.an-cards{display:grid;grid-template-columns:repeat(4,1fr);gap:12px;margin-bottom:14px}
@media (max-width:1080px){.an-cards{grid-template-columns:repeat(2,1fr)}}
.an-card{background:var(--panel);border:1px solid var(--line);border-radius:12px;padding:14px 16px;
  box-shadow:var(--shadow);position:relative;overflow:hidden}
.an-card::before{content:"";position:absolute;left:0;top:0;bottom:0;width:3px;background:var(--cc)}
.an-card.c-green{--cc:var(--green)} .an-card.c-amber{--cc:var(--amber)}
.an-card.c-red{--cc:var(--red)}   .an-card.c-cyan{--cc:var(--cyan)}
.an-ct{font-size:12px;color:var(--ink3);letter-spacing:.02em}
.an-cv{display:flex;align-items:baseline;gap:2px;margin:4px 0 2px}
.an-cv b{font-size:28px;font-weight:700;line-height:1.05;font-variant-numeric:tabular-nums}
.an-cv small{font-size:12px;color:var(--ink3);font-weight:600}
.an-cd{font-size:11.5px;color:var(--ink3);min-height:18px}
.an-cbar{height:4px;border-radius:999px;background:var(--line2);margin-top:8px;overflow:hidden}
.an-cbar i{display:block;height:100%;border-radius:999px;background:var(--cc);transition:width .5s ease}

/* ---- 面板 ---- */
.an-panel{background:var(--panel);border:1px solid var(--line);border-radius:12px;
  box-shadow:var(--shadow);margin-bottom:14px;overflow:hidden}
.an-ph{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap;
  padding:10px 14px;border-bottom:1px solid var(--line2)}
.an-pt{font-size:13.5px;font-weight:600}
.an-hint{font-size:11.5px;color:var(--ink3);font-weight:400;margin-left:8px}
.an-filters{display:flex;gap:6px;flex-wrap:wrap}
.an-chip{border:1px solid var(--line);border-radius:999px;padding:3px 12px;font-size:11.5px;
  color:var(--ink2);cursor:pointer;user-select:none;background:var(--panel2)}
.an-chip:hover{border-color:var(--cyan)}
.an-chip.on{background:var(--cyan);border-color:var(--cyan);color:#fff;font-weight:600}

/* ---- 趋势图 ---- */
.an-chart{padding:10px 8px 4px;min-height:250px;position:relative}
.an-chart svg{display:block;width:100%;height:auto}
.an-grid{stroke:var(--line2);stroke-width:1}
.an-axis{fill:var(--ink3);font-size:10px}
.an-line{fill:none;stroke-width:1.8;stroke-linejoin:round;stroke-linecap:round}
.an-legend{display:flex;flex-wrap:wrap;gap:4px 14px;padding:8px 14px 12px;border-top:1px solid var(--line2)}
.an-lg{display:inline-flex;align-items:center;gap:6px;font-size:11.5px;color:var(--ink2);cursor:pointer;user-select:none}
.an-lg i{width:14px;height:3px;border-radius:2px;flex:none}
.an-lg.off{opacity:.35}
.an-empty{padding:40px 0;text-align:center;color:var(--ink3);font-size:12.5px}

/* ---- 问题清单 ---- */
.an-table-wrap{max-height:460px;overflow:auto}
.an-table{width:100%;border-collapse:collapse;font-size:12.5px}
.an-table th{position:sticky;top:0;background:var(--panel2);text-align:left;font-weight:600;
  color:var(--ink3);font-size:11.5px;padding:8px 10px;border-bottom:1px solid var(--line);white-space:nowrap;z-index:2}
.an-table td{padding:7px 10px;border-bottom:1px solid var(--line2);vertical-align:middle}
.an-table tbody tr{cursor:pointer}
.an-table tbody tr:hover{background:var(--panel2)}
.an-table .c-code{width:64px;color:var(--ink3);font-variant-numeric:tabular-nums;white-space:nowrap}
.an-table .c-flag{width:180px}
.an-table .c-num{width:64px;text-align:right;font-variant-numeric:tabular-nums}
.an-table .c-date{width:104px;white-space:nowrap;font-variant-numeric:tabular-nums}
.an-table .c-st{width:74px}
.an-table .c-prog{width:96px}
.an-t-main{display:flex;flex-direction:column;gap:1px;min-width:0}
.an-t-title{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:520px}
.an-t-path{font-size:11px;color:var(--ink3);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:520px}
.an-flag{display:inline-block;font-size:10.5px;font-weight:600;padding:1px 7px;border-radius:999px;margin:0 4px 2px 0;white-space:nowrap}
.an-flag.stagnant{color:#a15c00;background:rgba(245,166,35,.14)}
.an-flag.overdue{color:#c62a2f;background:rgba(229,72,77,.13)}
.an-flag.not_started{color:var(--ink3);background:var(--line2)}
.an-flag.no_date{color:#1d6fa5;background:rgba(59,130,246,.13)}
.an-flag.no_progress{color:#6b6f80;background:var(--line2)}
body.dark .an-flag.stagnant{color:#f5a623}
body.dark .an-flag.overdue{color:#ff7b7f}
body.dark .an-flag.no_date{color:#5aa9f0}
.an-st{font-size:11.5px;padding:1px 8px;border-radius:999px;white-space:nowrap}
.an-st.not_started{color:var(--ink3);background:var(--line2)}
.an-st.in_progress{color:#0b7ea8;background:rgba(34,194,209,.13)}
.an-st.blocked{color:#a15c00;background:rgba(245,166,35,.14)}
.an-st.done{color:#0b7a45;background:rgba(14,157,87,.13)}
.an-od{color:var(--red);font-weight:600}
.an-pbar{display:flex;align-items:center;gap:6px}
.an-pbar u{flex:1;height:5px;border-radius:999px;background:var(--line2);overflow:hidden;text-decoration:none;min-width:44px}
.an-pbar u i{display:block;height:100%;border-radius:999px;background:var(--cyan)}
.an-pbar b{font-size:11px;color:var(--ink3);font-weight:600;font-variant-numeric:tabular-nums;width:30px;text-align:right}
.an-more{padding:8px 14px;font-size:11.5px;color:var(--ink3);border-top:1px solid var(--line2)}

/* ---- 页脚 / tooltip ---- */
.an-foot{padding:2px 4px 0;font-size:11px;color:var(--ink3);line-height:1.7}
.an-tip{position:fixed;z-index:99;background:rgba(20,22,30,.94);color:#fff;border-radius:8px;
  padding:8px 10px;font-size:11.5px;line-height:1.7;pointer-events:none;box-shadow:0 6px 20px rgba(0,0,0,.25);
  max-width:280px;white-space:nowrap}
.an-tip b{color:#8fe6f0}
.an-tip .d{color:#a8adbd;margin-bottom:3px;font-size:11px}
