/* 前台共享基础样式 - 极简 reset + 通用元素
 * 模板的 theme.css 在此基础上覆盖颜色/布局
 */
*, *::before, *::after { box-sizing: border-box; }
html, body { margin: 0; padding: 0; }
html { -webkit-text-size-adjust: 100%; }
body { min-height: 100vh; }
img, svg { max-width: 100%; height: auto; display: block; }
a { text-decoration: none; color: inherit; }
button { font: inherit; cursor: pointer; }
ul, ol { margin: 0; padding: 0; list-style: none; }
h1, h2, h3, h4, h5, h6 { margin: 0; font-weight: 600; }
table { border-collapse: collapse; }
input, select, textarea { font: inherit; }

.btn {
  display: inline-block;
  padding: 8px 18px;
  border-radius: 6px;
  background: var(--pri, #b8000f);
  color: #fff;
  border: none;
  cursor: pointer;
}
.btn:hover { background: var(--pri-dark, #8a000a); }
.btn-ghost { background: transparent; color: var(--pri, #b8000f); border: 1px solid var(--bd, #e6e9f0); }
.btn-ghost:hover { background: var(--pri-soft, #fef1f2); }

/* 通用辅助 */
.t-text-muted { color: var(--muted, #5a5a5a); }
.t-text-center { text-align: center; }
.t-flex { display: flex; }
.t-flex-gap > * + * { margin-left: 8px; }

/* 移动端响应式 */
@media (max-width: 720px) {
  .t-banner h1 { font-size: 28px !important; }
  .t-banner .stat-row { flex-wrap: wrap; gap: 12px; padding: 12px 18px; }
  .t-search { margin: -24px 12px 0 !important; padding: 16px !important; }
  .t-h2 { font-size: 18px !important; }
}

/* 无障碍 */
:focus-visible { outline: 2px solid var(--pri, #b8000f); outline-offset: 2px; }
.t-sr-only { position: absolute; width: 1px; height: 1px; padding: 0; margin: -1px; overflow: hidden; clip: rect(0,0,0,0); border: 0; }