/* 通用样式 - 签到系统（邯郸AI星火荟 深色主题） */
* {
  margin: 0;
  padding: 0;
  box-sizing: border-box;
}

:root {
  --bg-primary: #0b0f0e;        /* 主背景：带深绿调的黑 */
  --bg-secondary: #141817;      /* 次背景：卡片 */
  --bg-tertiary: #1a1f1e;       /* 三级背景：输入框/弹窗 */
  --accent: #34d399;            /* 主色：柔和翡翠绿 */
  --accent-hover: #10b981;      /* 主色悬停：稍暗 */
  --text-primary: #e8e8e8;      /* 主文字：柔白（不刺眼） */
  --text-secondary: #9ca3a0;    /* 次文字：浅灰绿 */
  --text-muted: #6b7270;        /* 弱化文字 */
  --border: #252b29;            /* 边框色 */
  --danger: #e06c6c;            /* 危险：柔红 */
  --success: #34d399;           /* 成功：柔绿 */
}

body {
  font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", "PingFang SC", "Microsoft YaHei", sans-serif;
  background: var(--bg-primary);
  color: var(--text-primary);
  -webkit-font-smoothing: antialiased;
}

/* 通用按钮 */
.btn {
  display: inline-block;
  padding: 10px 20px;
  border: none;
  border-radius: 8px;
  font-size: 15px;
  cursor: pointer;
  transition: all 0.2s;
  font-weight: 500;
}
.btn:hover { opacity: 0.85; }
.btn-primary { background: var(--accent); color: #0d0d0d; }
.btn-success { background: var(--success); color: #0d0d0d; }
.btn-danger  { background: var(--danger); color: #fff; }
.btn-default { background: var(--bg-tertiary); color: var(--text-primary); border: 1px solid var(--border); }

/* 通用输入框 */
.input {
  width: 100%;
  padding: 12px 14px;
  border: 1px solid var(--border);
  border-radius: 8px;
  font-size: 15px;
  outline: none;
  background: var(--bg-tertiary);
  color: var(--text-primary);
  transition: border-color 0.2s;
}
.input:focus { border-color: var(--accent); }
.input::placeholder { color: var(--text-muted); }

/* 通用卡片 */
.card {
  background: var(--bg-secondary);
  border-radius: 12px;
  border: 1px solid var(--border);
}

/* 提示信息 */
.toast {
  position: fixed;
  top: 50%;
  left: 50%;
  transform: translate(-50%, -50%);
  padding: 14px 24px;
  border-radius: 8px;
  color: #fff;
  font-size: 15px;
  z-index: 9999;
  opacity: 0;
  transition: opacity 0.25s;
  pointer-events: none;
}
.toast.show { opacity: 1; }
.toast.success { background: var(--success); color: #0d0d0d; }
.toast.error   { background: var(--danger); }
.toast.info    { background: var(--accent); color: #0d0d0d; }
