/* ===== 事项提醒管理系统 · 通用样式 ===== */
:root{
  --primary:#3b6ef2;
  --primary-dark:#2b53c4;
  --primary-light:#eaf0ff;
  --success:#18a058;
  --warning:#f0a020;
  --danger:#e54545;
  --info:#2080f0;
  --text:#1f2937;
  --text-2:#4b5563;
  --text-3:#9ca3af;
  --border:#e5e7eb;
  --bg:#f4f6fb;
  --card:#fff;
  --radius:10px;
  --shadow:0 2px 12px rgba(31,41,55,.08);
}
*{box-sizing:border-box;margin:0;padding:0}
body{
  font-family:-apple-system,BlinkMacSystemFont,"PingFang SC","Microsoft YaHei","Helvetica Neue",Arial,sans-serif;
  font-size:14px;color:var(--text);background:var(--bg);-webkit-font-smoothing:antialiased;
}
a{color:inherit;text-decoration:none}
img{max-width:100%;vertical-align:middle}
ul,ol{list-style:none}

/* --- 按钮 --- */
.btn{
  display:inline-flex;align-items:center;justify-content:center;gap:4px;
  height:34px;padding:0 16px;border:1px solid var(--border);border-radius:6px;
  background:#fff;color:var(--text);font-size:14px;cursor:pointer;
  transition:.15s;white-space:nowrap;
}
.btn:hover{border-color:var(--primary);color:var(--primary)}
.btn-primary{background:var(--primary);border-color:var(--primary);color:#fff}
.btn-primary:hover{background:var(--primary-dark);border-color:var(--primary-dark);color:#fff}
.btn-success{background:var(--success);border-color:var(--success);color:#fff}
.btn-success:hover{opacity:.9;color:#fff}
.btn-warning{background:var(--warning);border-color:var(--warning);color:#fff}
.btn-warning:hover{opacity:.9;color:#fff}
.btn-danger{background:var(--danger);border-color:var(--danger);color:#fff}
.btn-danger:hover{opacity:.9;color:#fff}
.btn-sm{height:28px;padding:0 10px;font-size:13px}
.btn-lg{height:42px;padding:0 24px;font-size:15px}
.btn-block{width:100%}
.btn[disabled]{opacity:.55;cursor:not-allowed}

/* --- 表单 --- */
.form-item{margin-bottom:16px}
.form-label{display:block;margin-bottom:6px;font-size:13px;color:var(--text-2);font-weight:500}
.form-label .req{color:var(--danger);margin-right:2px}
.input,.select,.textarea{
  width:100%;height:38px;padding:0 12px;border:1px solid var(--border);border-radius:6px;
  background:#fff;color:var(--text);font-size:14px;outline:none;transition:.15s;font-family:inherit;
}
.textarea{height:auto;padding:10px 12px;min-height:80px;line-height:1.6;resize:vertical}
.input:focus,.select:focus,.textarea:focus{border-color:var(--primary);box-shadow:0 0 0 3px rgba(59,110,242,.12)}
.input[readonly]{background:#f9fafb;color:var(--text-3)}
.form-inline{display:flex;gap:8px;flex-wrap:wrap;align-items:center}
.form-grid{display:grid;grid-template-columns:1fr 1fr;gap:0 16px}
.form-tip{font-size:12px;color:var(--text-3);margin-top:4px;line-height:1.5}
.switch{display:inline-flex;align-items:center;gap:8px;cursor:pointer;user-select:none}
.switch input{display:none}
.switch i{width:42px;height:22px;border-radius:11px;background:#d1d5db;position:relative;transition:.2s}
.switch i::after{content:"";position:absolute;left:2px;top:2px;width:18px;height:18px;border-radius:50%;background:#fff;transition:.2s}
.switch input:checked + i{background:var(--primary)}
.switch input:checked + i::after{left:22px}

/* --- 卡片 --- */
.card{background:var(--card);border-radius:var(--radius);box-shadow:var(--shadow);margin-bottom:16px}
.card-head{
  display:flex;align-items:center;justify-content:space-between;gap:10px;
  padding:14px 18px;border-bottom:1px solid var(--border);font-weight:600;font-size:15px;
}
.card-body{padding:18px}
.card-head + .card-body{padding-top:16px}

/* --- 表格 --- */
.table-wrap{overflow-x:auto;-webkit-overflow-scrolling:touch}
.table{width:100%;border-collapse:collapse;font-size:13.5px;min-width:640px}
.table th,.table td{padding:11px 12px;border-bottom:1px solid var(--border);text-align:left;white-space:nowrap}
.table th{background:#fafbfd;color:var(--text-2);font-weight:600}
.table tbody tr:hover{background:#fafbff}
.table td .btn{margin-right:4px;margin-bottom:2px}
.table .td-ops{white-space:normal;min-width:200px}

/* --- 标签 --- */
.tag{
  display:inline-block;padding:2px 8px;border-radius:4px;font-size:12px;line-height:18px;
  background:var(--primary-light);color:var(--primary);
}
.tag-success{background:#e7f7ef;color:var(--success)}
.tag-warning{background:#fdf3e3;color:#b7791f}
.tag-danger{background:#fdecec;color:var(--danger)}
.tag-info{background:#e8f2ff;color:var(--info)}
.tag-gray{background:#f1f2f4;color:var(--text-3)}

/* --- 分页 --- */
.pagination{display:flex;gap:6px;flex-wrap:wrap;padding:14px 0;justify-content:center}
.pagination a,.pagination span{
  min-width:32px;height:32px;padding:0 8px;display:inline-flex;align-items:center;justify-content:center;
  border:1px solid var(--border);border-radius:6px;background:#fff;font-size:13px;color:var(--text-2);
}
.pagination .active{background:var(--primary);border-color:var(--primary);color:#fff}

/* --- 提示条 --- */
.alert{padding:10px 14px;border-radius:6px;margin-bottom:14px;font-size:13px;line-height:1.6}
.alert-info{background:#e8f2ff;color:#1d4ed8}
.alert-warning{background:#fdf3e3;color:#b7791f}
.alert-danger{background:#fdecec;color:#c03030}

/* --- 空状态 --- */
.empty{padding:48px 20px;text-align:center;color:var(--text-3);font-size:14px}
.empty .icon{font-size:40px;display:block;margin-bottom:10px;opacity:.5}

/* --- 弹窗 --- */
.modal-mask{
  position:fixed;inset:0;background:rgba(17,24,39,.5);z-index:1000;display:none;
  align-items:center;justify-content:center;padding:16px;
}
.modal-mask.show{display:flex}
.modal{
  background:#fff;border-radius:12px;width:100%;max-width:520px;max-height:86vh;overflow:auto;
  animation:modalIn .2s ease;
}
@keyframes modalIn{from{opacity:0;transform:translateY(12px)}to{opacity:1;transform:none}}
.modal-head{padding:16px 20px;border-bottom:1px solid var(--border);font-weight:600;display:flex;justify-content:space-between;align-items:center}
.modal-body{padding:20px}
.modal-foot{padding:14px 20px;border-top:1px solid var(--border);display:flex;justify-content:flex-end;gap:8px}
.modal-close{cursor:pointer;color:var(--text-3);font-size:20px;line-height:1}

/* --- 通用工具 --- */
.flex{display:flex}.flex-c{display:flex;align-items:center}
.between{display:flex;align-items:center;justify-content:space-between}
.gap8{gap:8px}.gap12{gap:12px}.gap16{gap:16px}
.mt8{margin-top:8px}.mt16{margin-top:16px}.mb8{margin-bottom:8px}.mb16{margin-bottom:16px}
.text-c{text-align:center}.text-r{text-align:right}
.text-mute{color:var(--text-3)}.text-sm{font-size:13px}.text-bold{font-weight:600}
.primary{color:var(--primary)}.danger{color:var(--danger)}.success{color:var(--success)}.warning{color:var(--warning)}
.nowrap{white-space:nowrap}
.hide{display:none !important}

/* --- 移动端 --- */
@media (max-width:767px){
  .form-grid{grid-template-columns:1fr}
  .table{min-width:560px}
}

/* ===== 通用页脚（官网 / 登录页 / 用户端 / 管理后台 共用） ===== */
.site-foot-mini{
  background:var(--bg);color:var(--text-3);padding:16px 20px;text-align:center;
  font-size:12.5px;line-height:1.9;border-top:1px solid var(--border);
}
.site-foot-mini .info{color:var(--text-3)}
.site-foot-mini .info.icp{margin-top:2px;opacity:.9}
@media (max-width:767px){
  .site-foot-mini{padding:14px 16px 78px}
}
