/*
 * GitHub 中文 · 采集工作台 — 全局基础样式
 * 设计变量、reset、排版、滚动条、焦点样式与全局动画
 * 自包含，无 Tailwind / 外部字体依赖（离线可用）
 * @file public/css/base.css
 * @version 1.9.24
 */
:root {
  --canvas: #f6f8fa;
  --surface: #ffffff;
  --ink: #1c2128;
  --muted: #59636e;
  --faint: #6e7781;
  --border: #d1d9e0;
  --border-soft: #eaeef2;
  --brand: #2ea44f;
  --brand-strong: #2c974b;
  --brand-soft: #dafbe1;
  --rail: #1c2128;
  --rail-2: #21262d;
  --rail-ink: #e6edf3;
  --rail-muted: #8b949e;
  --rail-border: #30363d;
  --term: #3fb950;
  --term-bg: #0d1117;
  --danger: #cf222e;
  --radius: 12px;
  --shadow: 0 1px 0 rgba(27, 31, 36, .04), 0 1px 3px rgba(27, 31, 36, .08);
  --font: -apple-system, BlinkMacSystemFont, "Segoe UI", "Helvetica Neue",
    "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", Arial, sans-serif;
  --mono: ui-monospace, SFMono-Regular, "SF Mono", Menlo, Consolas,
    "Liberation Mono", monospace;
}

*,
*::before,
*::after {
  box-sizing: border-box;
}

html,
body {
  margin: 0;
  height: 100%;
}

body {
  font-family: var(--font);
  color: var(--ink);
  background: var(--canvas);
  display: flex;
  -webkit-font-smoothing: antialiased;
  text-rendering: optimizeLegibility;
}

a {
  color: inherit;
  text-decoration: none;
}

h1,
h2,
h3 {
  margin: 0;
  font-weight: 700;
  letter-spacing: -.01em;
}

/* 无障碍：视觉隐藏但对屏幕阅读器可见 */
.sr-only {
  position: absolute;
  width: 1px;
  height: 1px;
  padding: 0;
  margin: -1px;
  overflow: hidden;
  clip: rect(0, 0, 0, 0);
  white-space: nowrap;
  border: 0;
}

/* JS 控制的原子类 */
.hidden {
  display: none !important;
}

.flex {
  display: flex;
}

/* 滚动条美化 */
.scroll::-webkit-scrollbar {
  width: 8px;
  height: 8px;
}

.scroll::-webkit-scrollbar-thumb {
  background: var(--rail-border);
  border-radius: 8px;
}

.scroll::-webkit-scrollbar-track {
  background: transparent;
}

.scroll {
  scrollbar-width: thin;
  scrollbar-color: var(--rail-border) transparent;
}

:focus-visible {
  outline: 2px solid var(--brand);
  outline-offset: 2px;
  border-radius: 4px;
}

@keyframes pulse {
  0%,
  100% {
    opacity: 1;
  }

  50% {
    opacity: .35;
  }
}

@media (prefers-reduced-motion: reduce) {
  * {
    animation: none !important;
    transition: none !important;
  }
}
