/* 关键布局：即使 Tailwind CDN 加载慢也不会错版 */
*, *::before, *::after { box-sizing: border-box; }
body { margin: 0; font-family: system-ui, -apple-system, "PingFang SC", "Microsoft YaHei", sans-serif; }
img, video, svg { max-width: 100%; height: auto; }

/* 响应式指标卡：400px 宽度下单列，面板变宽自动填充 */
.card-grid {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(min(100%, 210px), 1fr));
  gap: 0.75rem;
}

/* 表格横向滚动 */
.table-wrapper {
  overflow-x: auto;
  -webkit-overflow-scrolling: touch;
}

/* 日志行 */
.log-line { white-space: pre-wrap; word-break: break-all; padding: 1px 0; }
.log-debug { color: #6b7280; }
.log-info  { color: #cbd5e1; }
.log-warn  { color: #fbbf24; }
.log-error { color: #f87171; }
.log-ok    { color: #34d399; font-weight: 600; }
.log-ts    { color: #4b5563; margin-right: 6px; }

/* 数字等宽对齐 */
.tabular-nums { font-variant-numeric: tabular-nums; }

#log-box::-webkit-scrollbar { width: 8px; }
#log-box::-webkit-scrollbar-thumb { background: #374151; border-radius: 4px; }
