/* bbs main bundle. do not edit. */
/* base.css —— 所有站点共用的骨架与组件，站点通过 theme.css 覆盖配色 */
*, *::before, *::after { box-sizing: border-box;  }

:root {
  --bg: #f6f7f9; 
  --fg: #1f2329; 
  --muted: #6b7280; 
  --line: #e5e7eb; 
  --brand: #2563eb; 
  --brand-dark: #1d4ed8; 
  --radius: 10px; 
}

html, body { margin: 0;  padding: 0;  }

body {
  font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", "PingFang SC",
    "Hiragino Sans GB", "Microsoft YaHei", Helvetica, Arial, sans-serif; 
  color: var(--fg); 
  background: var(--bg); 
  line-height: 1.6; 
  font-size: 15px; 
  -webkit-font-smoothing: antialiased; 
}

a { color: var(--brand);  text-decoration: none;  }
a:hover { text-decoration: underline;  }
h1, h2, h3 { line-height: 1.3;  }

.wrap { max-width: 1080px;  margin: 0 auto;  padding: 0 20px;  }

/* 顶部导航 */
.site-head { background: #fff;  border-bottom: 1px solid var(--line);  }
.site-head .wrap { display: flex;  align-items: center;  justify-content: space-between;  height: 64px;  }
.brand { display: flex;  align-items: center;  gap: 10px;  font-weight: 700;  font-size: 18px;  color: var(--fg);  }
.brand .mark { width: 30px;  height: 30px;  border-radius: 8px;  background: var(--brand);  color: #fff; 
  display: grid;  place-items: center;  font-size: 13px;  font-weight: 700;  }
.nav { display: flex;  gap: 22px;  font-size: 14px;  }
.nav a { color: var(--muted);  }
.nav a:hover { color: var(--fg);  text-decoration: none;  }

/* 首页区块 */
.hero { padding: 68px 0 52px;  text-align: center;  }
.hero h1 { font-size: 34px;  margin: 0 0 14px;  letter-spacing: -.5px;  }
.hero p { color: var(--muted);  margin: 0 auto;  max-width: 640px;  font-size: 16px;  }
.grid { display: grid;  grid-template-columns: repeat(auto-fit, minmax(240px, 1fr));  gap: 18px;  padding: 8px 0 64px;  }
.card { background: #fff;  border: 1px solid var(--line);  border-radius: var(--radius);  padding: 22px;  }
.card h3 { margin: 0 0 8px;  font-size: 16px;  }
.card p { margin: 0;  color: var(--muted);  font-size: 14px;  }
.section-title { font-size: 20px;  margin: 0 0 18px;  }

.site-foot { border-top: 1px solid var(--line);  background: #fff;  padding: 24px 0;  }
.site-foot .wrap { display: flex;  justify-content: space-between;  gap: 12px;  flex-wrap: wrap; 
  color: var(--muted);  font-size: 13px;  }

/* 登录 / 表单 */
.auth { min-height: 100vh;  display: flex;  align-items: center;  justify-content: center;  padding: 28px 16px;  }
.auth-card {
  width: 100%;  max-width: 360px;  background: #fff;  border: 1px solid var(--line); 
  border-radius: 12px;  padding: 26px;  box-shadow: 0 12px 32px rgba(15, 23, 42, .07); 
}
.auth-card h1 { font-size: 20px;  margin: 0 0 6px;  }
.auth-card .sub { color: var(--muted);  font-size: 13px;  margin: 0 0 20px;  }

label { display: block;  font-size: 13px;  color: var(--muted);  margin: 0 0 6px;  }
input[type="text"], input[type="password"], input[type="email"], select, textarea {
  width: 100%;  padding: 10px 12px;  border: 1px solid var(--line);  border-radius: 8px; 
  font-size: 14px;  font-family: inherit;  background: #fff;  color: var(--fg);  outline: none; 
}
input:focus, select:focus, textarea:focus {
  border-color: var(--brand);  box-shadow: 0 0 0 3px rgba(37, 99, 235, .12); 
}
textarea { min-height: 110px;  resize: vertical;  }
.field { margin-bottom: 14px;  }
.row { display: flex;  gap: 12px;  }
.row > .field { flex: 1;  }

.btn {
  display: inline-block;  width: 100%;  padding: 11px 14px;  border: 0;  border-radius: 8px; 
  background: var(--brand);  color: #fff;  font-size: 14px;  font-weight: 600; 
  font-family: inherit;  cursor: pointer; 
}
.btn:hover { background: var(--brand-dark);  }
.btn[disabled] { opacity: .65;  cursor: default;  }

.alert {
  background: #fef2f2;  border: 1px solid #fecaca;  color: #b91c1c; 
  border-radius: 8px;  padding: 10px 12px;  font-size: 13px;  margin-bottom: 16px; 
}
.alert-ok { background: #f0fdf4;  border-color: #bbf7d0;  color: #15803d;  }
.hint { color: var(--muted);  font-size: 12px;  margin-top: 14px;  }

.meta { display: flex;  justify-content: space-between;  font-size: 12px;  color: var(--muted);  margin-top: 16px;  }
.center { text-align: center;  }

/* 404 */
.err-page { min-height: 58vh;  display: flex;  flex-direction: column;  align-items: center; 
  justify-content: center;  text-align: center;  padding: 40px 20px;  }
.err-page .code { font-size: 64px;  font-weight: 800;  color: var(--line);  margin: 0;  letter-spacing: 2px;  }
.err-page h2 { margin: 10px 0 8px;  font-size: 18px;  }
.err-page p { color: var(--muted);  margin: 0 0 20px;  font-size: 14px;  }
.err-page .path { font-family: ui-monospace, Menlo, Consolas, monospace;  background: #fff; 
  border: 1px solid var(--line);  border-radius: 6px;  padding: 4px 8px;  color: var(--fg);  }

@media (max-width: 640px) {
  .hero { padding: 44px 0 32px;  }
  .hero h1 { font-size: 26px;  }
  .nav { display: none;  }
}
