/* 一格共享样式 */
:root{
  --primary:#5B6EF5;
  --primary-dark:#4A5AE8;
  --primary-light:#EEF0FE;
  --accent:#F6AD55;
  --accent-light:#FEF3E2;
  --green:#48BB78;
  --green-light:#F0FFF4;
  --red:#F56565;
  --red-light:#FFF5F5;
  --bg:#FAFBFF;
  --card:#FFFFFF;
  --text:#1A202C;
  --text-light:#718096;
  --border:#E2E8F0;
  --shadow:0 4px 24px rgba(91,110,245,.10);
  --shadow-hover:0 8px 40px rgba(91,110,245,.18);
  --radius:14px;
  --radius-sm:8px;
}
*{margin:0;padding:0;box-sizing:border-box}
body{
  font-family:'Noto Sans SC','PingFang SC','Microsoft YaHei',sans-serif;
  background:var(--bg);color:var(--text);
  line-height:1.6;min-height:100vh;
}
a{color:var(--primary);text-decoration:none}
a:hover{color:var(--primary-dark)}
input,select,textarea{
  width:100%;padding:11px 14px;border:2px solid var(--border);
  border-radius:var(--radius-sm);font-size:15px;outline:none;
  transition:border-color .2s;font-family:inherit;
  background:white;
}
input:focus,select:focus,textarea:focus{border-color:var(--primary)}
.btn{
  display:inline-flex;align-items:center;justify-content:center;gap:6px;
  padding:11px 24px;border-radius:var(--radius-sm);
  border:none;cursor:pointer;font-size:15px;font-weight:600;
  font-family:inherit;transition:all .2s;text-decoration:none;
}
.btn-primary{background:var(--primary);color:white;box-shadow:0 2px 12px rgba(91,110,245,.3)}
.btn-primary:hover{background:var(--primary-dark);transform:translateY(-1px);box-shadow:0 4px 16px rgba(91,110,245,.4)}
.btn-secondary{background:var(--primary-light);color:var(--primary)}
.btn-secondary:hover{background:#e0e7ff}
.btn-success{background:var(--green);color:white}
.btn-success:hover{background:#38a169}
.btn-warning{background:var(--accent);color:white}
.btn-warning:hover{background:#ed8936}
.btn-danger{background:#fff5f5;color:var(--red);border:2px solid #fed7d7}
.btn-danger:hover{background:#fed7d7}
.btn-gray{background:#f1f5f9;color:var(--text-light);border:2px solid var(--border)}
.btn-gray:hover{background:#e2e8f0}
.btn-sm{padding:6px 14px;font-size:13px}
.btn-block{width:100%}

/* 卡片 */
.card{
  background:var(--card);border-radius:var(--radius);
  border:1.5px solid var(--border);padding:28px;
  box-shadow:var(--shadow);
}
.card-sm{padding:20px;border-radius:var(--radius-sm)}

/* 表单 */
.form-group{margin-bottom:18px}
.form-group label{display:block;font-size:14px;font-weight:600;margin-bottom:6px;color:var(--text)}
.form-group .hint{font-size:12px;color:var(--text-light);margin-top:4px}
.error-msg{color:var(--red);font-size:13px;margin-top:4px}
.success-msg{color:var(--green);font-size:13px;margin-top:4px}

/* Auth页面通用 */
.auth-page{
  min-height:100vh;display:flex;align-items:center;justify-content:center;
  padding:20px;
  background:linear-gradient(135deg,#EEF0FE 0%,#FEF3E2 50%,#F0FFF4 100%);
}
.auth-card{
  background:white;border-radius:20px;padding:40px;
  width:100%;max-width:420px;
  box-shadow:0 8px 40px rgba(91,110,245,.15);
}
.auth-logo{
  text-align:center;margin-bottom:28px;
  font-size:28px;font-weight:900;
  background:linear-gradient(135deg,var(--primary),#764BA2);
  -webkit-background-clip:text;-webkit-text-fill-color:transparent;
}
.auth-logo span{font-size:36px;-webkit-text-fill-color:initial}
.auth-title{font-size:22px;font-weight:700;text-align:center;margin-bottom:6px}
.auth-sub{font-size:14px;color:var(--text-light);text-align:center;margin-bottom:28px}

/* Toast */
.toast{
  position:fixed;top:20px;right:20px;z-index:9999;
  padding:12px 20px;border-radius:var(--radius-sm);
  font-size:14px;font-weight:600;max-width:320px;
  animation:toastIn .3s ease;
  box-shadow:0 4px 20px rgba(0,0,0,.15);
}
.toast-success{background:#f0fdf4;color:#166534;border:1px solid #bbf7d0}
.toast-error{background:#fef2f2;color:#991b1b;border:1px solid #fecaca}
@keyframes toastIn{
  from{opacity:0;transform:translateX(20px)}
  to{opacity:1;transform:translateX(0)}
}

/* Badge */
.badge{
  display:inline-flex;align-items:center;gap:4px;
  padding:3px 10px;border-radius:50px;font-size:12px;font-weight:600;
}
.badge-pending{background:#FEF3E2;color:#92400E}
.badge-approved{background:#F0FFF4;color:#166534}
.badge-rejected{background:#FFF5F5;color:#991b1b}
.badge-private{background:#f1f5f9;color:#64748b}
.badge-shared{background:#EEF0FE;color:#4f46e5}
.badge-admin{background:#fef2f2;color:#991b1b}

/* 头像 */
.avatar{
  width:40px;height:40px;border-radius:50%;
  background:linear-gradient(135deg,var(--primary),#764BA2);
  display:flex;align-items:center;justify-content:center;
  color:white;font-weight:700;font-size:16px;flex-shrink:0;
  overflow:hidden;
}
.avatar img{width:100%;height:100%;object-fit:cover}
.avatar-sm{width:32px;height:32px;font-size:13px}
.avatar-lg{width:64px;height:64px;font-size:24px}
