* { box-sizing: border-box; }
body { margin: 0; font-family: "Microsoft YaHei", -apple-system, "PingFang SC", sans-serif; background: #f4f6f9; color: #1f2329; }
#app { min-height: 100vh; }

/* 登录页 */
.auth-page { min-height: 100vh; display: flex; align-items: center; justify-content: center;
  background: linear-gradient(135deg, #eef2ff, #dbeafe, #c7d2fe); padding: 20px; }
.auth-box { width: 100%; max-width: 860px; display: flex; background: #fff; border-radius: 18px;
  overflow: hidden; box-shadow: 0 20px 60px rgba(60, 80, 180, .18); min-height: 460px; }
.auth-left { width: 42%; background: linear-gradient(160deg, #4f7cff, #6a5bff, #43d2f7); color: #fff;
  padding: 44px 32px; display: flex; flex-direction: column; justify-content: center; }
.auth-left .brand { font-size: 27px; font-weight: 700; margin-bottom: 10px; }
.auth-left .slogan { font-size: 15px; opacity: .92; margin-bottom: 26px; }
.feature-list { list-style: none; padding: 0; margin: 0; line-height: 2.1; font-size: 14px; opacity: .95; }
.feature-list li::before { content: "✓ "; font-weight: 700; }
.auth-right { flex: 1; padding: 40px 44px; display: flex; align-items: center; }
.auth-right > * { width: 100%; }

/* 主框架 */
.layout { display: flex; min-height: 100vh; }
.sidebar { width: 220px; background: #1f2937; color: #fff; flex-shrink: 0; }
.sidebar .logo { padding: 18px 16px; border-bottom: 1px solid #374151; display: flex; align-items: center; gap: 8px; }
.logo-mark { background: #4f7cff; color: #fff; padding: 3px 9px; border-radius: 6px; font-weight: 700; }
.logo-text { font-size: 13px; opacity: .9; }
.side-menu { border-right: none; background: transparent; }

.main { flex: 1; display: flex; flex-direction: column; min-width: 0; }
.topbar { height: 58px; background: #fff; border-bottom: 1px solid #e5e7eb; display: flex;
  align-items: center; justify-content: space-between; padding: 0 22px; }
.crumb { font-size: 16px; font-weight: 600; }
.top-right { display: flex; align-items: center; gap: 14px; }
.pt { font-size: 13px; color: #6b7280; }
.pt b { color: #f59e0b; font-size: 16px; }
.user { cursor: pointer; font-size: 14px; }
.content { padding: 18px; overflow: auto; }

/* 卡片 */
.stat-card { background: #fff; border-radius: 10px; padding: 16px 18px; box-shadow: 0 1px 3px rgba(0,0,0,.06); }
.stat-label { font-size: 13px; color: #6b7280; }
.stat-value { font-size: 26px; font-weight: 700; margin: 6px 0; }
.stat-sub { font-size: 12px; color: #9ca3af; }

.mt8 { margin-top: 8px; } .mt12 { margin-top: 12px; } .mt16 { margin-top: 16px; }
.ml8 { margin-left: 8px; } .ml16 { margin-left: 16px; } .mb8 { margin-bottom: 8px; }
.lbl { font-size: 13px; color: #6b7280; margin-right: 8px; }
.tip { font-size: 12px; color: #9ca3af; margin-left: 12px; }
.flex-row { display: flex; gap: 10px; align-items: center; flex-wrap: wrap; }
.wide { display: flex; width: 100%; }
.checkbox-wide { width: 100%; }

.word-box { background: #fff; border: 1px solid #e5e7eb; border-radius: 8px; padding: 12px; margin-top: 12px;
  max-height: 380px; overflow: auto; }
.word-item { padding: 7px 10px; border-bottom: 1px dashed #eef0f3; font-size: 14px; }
.word-item:last-child { border-bottom: none; }
.article-preview { white-space: pre-wrap; line-height: 1.9; font-size: 14px; background: #fafbfc;
  padding: 16px; border-radius: 8px; max-height: 520px; overflow: auto; }
.el-checkbox.wide { width: 100%; margin-right: 0; }
