/* ===== 运行日志页（logs.html）专用样式 =====
   同样在 app.css 之后加载，只做补充，不另起配色。 */
:root{
  --bg:#f4f6fb; --card:#fff; --line:#e6e9f2; --text:#1c2333; --muted:#6b7590;
  --pri:#1f57c9; --pri-soft:#eaf1ff; --ok:#16a34a; --warn:#e0850b; --danger:#dc2626;
  --shadow:0 1px 2px rgba(20,30,60,.05),0 8px 24px rgba(20,30,60,.06);
  --r:14px;
  /* 日志级别配色 */
  --lv-info:#6b7590;
  --lv-think:#7c3aed;
  --lv-act:#1f57c9;
  --lv-ok:#16a34a;
  --lv-warn:#e0850b;
  --lv-err:#dc2626;
}

.side a.nav-item{text-decoration:none;color:var(--muted)}
.side a.nav-item:hover{color:var(--text)}
.side a.nav-item.active{color:var(--pri)}

/* ---------------- 概览条 ---------------- */
.overview{display:grid;grid-template-columns:repeat(4,1fr);gap:12px}
.ov{background:#fff;border:1px solid var(--line);border-radius:var(--r);padding:12px 14px;box-shadow:var(--shadow)}
.ov label{display:block;font-size:12px;color:var(--muted)}
.ov b{display:block;font-size:20px;font-weight:700;margin:2px 0 0}
.ov .sub{font-size:11.5px;color:var(--muted);word-break:break-word}

/* ---------------- 筛选 / 工具条 ---------------- */
.toolbar{display:flex;align-items:center;gap:10px;flex-wrap:wrap}
.ftabs{display:flex;gap:6px;flex-wrap:wrap}
.ftab{border:1px solid var(--line);background:#fff;border-radius:999px;padding:6px 13px;font-size:12.5px;
  cursor:pointer;color:var(--muted);transition:.15s;white-space:nowrap}
.ftab:hover{border-color:#cfd9f2;color:var(--pri)}
.ftab.active{background:var(--pri);border-color:var(--pri);color:#fff}
.toolbar .grow{flex:1 1 auto;min-width:0}
.switch{display:inline-flex;align-items:center;gap:9px;cursor:pointer;user-select:none;font-size:12.5px}
.switch input{position:absolute;opacity:0;width:0;height:0}
.switch .track{width:42px;height:24px;border-radius:999px;background:#cfd6e6;position:relative;transition:.18s;flex:0 0 42px}
.switch .track:after{content:'';position:absolute;top:3px;left:3px;width:18px;height:18px;border-radius:50%;
  background:#fff;box-shadow:0 1px 3px rgba(0,0,0,.25);transition:.18s}
.switch input:checked + .track{background:var(--pri)}
.switch input:checked + .track:after{transform:translateX(18px)}

/* ---------------- 日志列表 ----------------
   长文本自动换行不溢出：flex 子项配 min-width:0 + word-break。 */
.log-list{display:flex;flex-direction:column;gap:6px;overflow:auto;
  max-height:min(72vh,680px);padding-right:2px}
.log-list[data-filter="think"] .log-entry:not(.lv-think),
.log-list[data-filter="act"]   .log-entry:not(.lv-act),
.log-list[data-filter="warn"]  .log-entry:not(.lv-warn),
.log-list[data-filter="err"]   .log-entry:not(.lv-err),
.log-list[data-filter="ok"]    .log-entry:not(.lv-ok){display:none}

.log-entry{display:flex;align-items:flex-start;gap:8px;padding:7px 10px;border-radius:9px;
  border:1px solid var(--line);border-left:3px solid var(--lv,var(--line));
  background:#fcfdff;font-size:13px;line-height:1.6}
.log-entry .ic{flex:0 0 auto;width:16px;text-align:center;font-weight:700;color:var(--lv,var(--muted));
  font-size:12.5px;padding-top:1px}
.log-entry .txt{flex:1 1 auto;min-width:0;white-space:pre-wrap;word-break:break-word;overflow-wrap:anywhere}
.log-entry .meta{flex:0 0 auto;display:flex;flex-direction:column;align-items:flex-end;gap:2px;
  font-size:11px;color:var(--muted);white-space:nowrap}
.log-entry .step{background:#f1f3f9;border-radius:999px;padding:0 7px;font-size:10.5px}
.log-empty{padding:28px 14px;text-align:center;color:var(--muted);font-size:13px;
  border:1px dashed var(--line);border-radius:11px;background:#fbfcff}

.lv-info  {--lv:var(--lv-info)}
.lv-think {--lv:var(--lv-think);background:#faf7ff}
.lv-act   {--lv:var(--lv-act);background:#f6f9ff}
.lv-ok    {--lv:var(--lv-ok);background:#f5fdf8}
.lv-warn  {--lv:var(--lv-warn);background:#fffbf3}
.lv-err   {--lv:var(--lv-err);background:#fef6f6}

/* ---------------- 侧栏 ---------------- */
.aside-card{background:var(--card);border:1px solid var(--line);border-radius:var(--r);
  padding:14px 16px;box-shadow:var(--shadow)}
.aside-card h3{font-size:13px;margin:0 0 10px;padding-bottom:9px;border-bottom:1px solid var(--line)}
.count-list{display:flex;flex-direction:column;gap:7px}
.count-row{display:flex;align-items:center;justify-content:space-between;gap:10px;font-size:12.5px}
.count-row .name{display:inline-flex;align-items:center;gap:7px;color:var(--muted)}
.count-row .swatch{width:9px;height:9px;border-radius:3px;background:var(--lv-info)}
.count-row b{font-variant-numeric:tabular-nums}
.legend-think .swatch{background:var(--lv-think)} .legend-think .name{color:var(--lv-think)}
.legend-act .swatch{background:var(--lv-act)}     .legend-act .name{color:var(--lv-act)}
.legend-ok .swatch{background:var(--lv-ok)}       .legend-ok .name{color:var(--lv-ok)}
.legend-warn .swatch{background:var(--lv-warn)}   .legend-warn .name{color:var(--lv-warn)}
.legend-err .swatch{background:var(--lv-err)}     .legend-err .name{color:var(--lv-err)}
.aside-card .btn{width:100%;margin-top:10px}

/* ---------------- 布局 ---------------- */
.logs-layout{display:flex;flex-direction:column;gap:16px}

/* PC 端：日志占主列，统计 / 导出走右侧栏（多列布局），日志仍按时间顺序单列阅读 */
@media (min-width: 1140px){
  .logs-layout{display:grid;grid-template-columns:minmax(0,1fr) 300px;gap:16px;align-items:start}
  .logs-main{min-width:0}
}

/* ---------------- 手机端 ---------------- */
@media (max-width: 900px){
  .overview{grid-template-columns:repeat(2,1fr);gap:10px}
  .ov{padding:10px 12px}
  .ov b{font-size:17px}
  .ftabs{width:100%;overflow-x:auto;flex-wrap:nowrap;-webkit-overflow-scrolling:touch}
  .ftab{flex:0 0 auto}
  .toolbar{gap:8px}
  .log-entry{font-size:13.5px;padding:7px 9px;gap:7px}
  .log-entry .meta{font-size:10.5px}
  .log-list{max-height:calc(100dvh - 300px)}
}
