*{box-sizing:border-box}
body{
  margin:0;
  background:#f5f7fb;
  color:#222;
  font-family:"Microsoft YaHei",Arial,sans-serif;
}
a{text-decoration:none;color:#1677ff}
.layout{display:flex;min-height:100vh}
.sidebar{
  width:240px;
  background:#18222d;
  color:#fff;
  padding:18px 0;
}
.logo{
  font-size:22px;
  font-weight:700;
  padding:0 20px 18px;
  border-bottom:1px solid rgba(255,255,255,.08);
}
.userbox{
  padding:16px 20px;
  border-bottom:1px solid rgba(255,255,255,.08);
  font-size:14px;
  line-height:1.8;
}
.menu a{
  display:block;
  color:#d8e2ee;
  padding:12px 20px;
  border-left:3px solid transparent;
}
.menu a:hover,.menu a.active{
  background:#223042;
  color:#fff;
  border-left-color:#4da3ff;
}
.main{flex:1;display:flex;flex-direction:column}
.topbar{
  background:#fff;
  padding:14px 20px;
  border-bottom:1px solid #e9edf3;
  display:flex;
  justify-content:space-between;
  align-items:center;
}
.page{
  padding:20px;
}
.page-title{
  font-size:24px;
  font-weight:700;
  margin-bottom:18px;
}
.card{
  background:#fff;
  border-radius:12px;
  padding:18px;
  box-shadow:0 2px 10px rgba(0,0,0,.04);
  margin-bottom:18px;
}
.grid{
  display:grid;
  grid-template-columns:repeat(4,1fr);
  gap:16px;
}
.stat{
  background:#fff;
  border-radius:12px;
  padding:18px;
  box-shadow:0 2px 10px rgba(0,0,0,.04);
}
.stat .num{
  font-size:30px;
  font-weight:700;
  margin-top:8px;
}
.table-wrap{overflow:auto}
table{
  width:100%;
  border-collapse:collapse;
  background:#fff;
}
table th,table td{
  padding:12px 10px;
  border-bottom:1px solid #edf0f5;
  text-align:left;
  font-size:14px;
}
table th{background:#fafbfd}
.btn{
  display:inline-block;
  padding:8px 14px;
  border-radius:8px;
  border:none;
  cursor:pointer;
  font-size:14px;
  margin-right:8px;
}
.btn-primary{background:#1677ff;color:#fff}
.btn-success{background:#16a34a;color:#fff}
.btn-warning{background:#f59e0b;color:#fff}
.btn-danger{background:#dc2626;color:#fff}
.btn-default{background:#eef2f7;color:#333}
.form-row{display:flex;gap:16px;margin-bottom:14px;flex-wrap:wrap}
.form-group{flex:1;min-width:220px}
label{
  display:block;
  margin-bottom:6px;
  font-weight:600;
  font-size:14px;
}
input[type=text],
input[type=password],
input[type=email],
input[type=number],
input[type=datetime-local],
select,
textarea{
  width:100%;
  border:1px solid #d8e0ea;
  border-radius:8px;
  padding:10px 12px;
  font-size:14px;
  background:#fff;
}
textarea{min-height:110px;resize:vertical}
.search-bar{
  display:flex;
  gap:10px;
  margin-bottom:16px;
  flex-wrap:wrap;
}
.badge{
  display:inline-block;
  padding:4px 10px;
  border-radius:999px;
  font-size:12px;
}
.badge-success{background:#e8f8ee;color:#15803d}
.badge-danger{background:#fdecec;color:#dc2626}
.badge-warning{background:#fff4db;color:#b45309}
.badge-info{background:#e8f1ff;color:#1d4ed8}
.alert{
  padding:12px 16px;
  border-radius:10px;
  margin-bottom:15px;
}
.alert.success{
  background:#ecfdf3;
  color:#166534;
  border:1px solid #bbf7d0;
}
.alert.error{
  background:#fef2f2;
  color:#991b1b;
  border:1px solid #fecaca;
}
.login-wrap{
  width:420px;
  margin:90px auto;
}
.login-title{
  text-align:center;
  font-size:30px;
  font-weight:700;
  margin-bottom:14px;
}
.muted{color:#666;font-size:13px}
.right{text-align:right}
.progress{
  height:10px;
  background:#edf2f7;
  border-radius:999px;
  overflow:hidden;
}
.progress-bar{
  height:100%;
  background:#1677ff;
}
.list-simple{line-height:2}
@media (max-width: 1200px){
  .grid{grid-template-columns:repeat(2,1fr)}
}
@media (max-width: 768px){
  .layout{flex-direction:column}
  .sidebar{width:100%}
  .grid{grid-template-columns:1fr}
}

.info-pills{display:flex;flex-wrap:wrap;gap:12px;margin-top:12px}
.info-pill{background:#f5f8ff;border:1px solid #d9e6ff;color:#2459c7;border-radius:999px;padding:6px 12px;font-size:13px}
.shortcut-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:14px}
.shortcut-item{display:block;background:#fff;border:1px solid #edf0f5;border-radius:12px;padding:16px;color:#222}
.shortcut-item strong{display:block;margin-bottom:6px}
.forum-item{padding:14px 0;border-bottom:1px solid #edf0f5}
.forum-item:last-child{border-bottom:none}
.reply-box{margin:10px 0 0 18px;padding-left:12px;border-left:3px solid #e5edff}
.note-box{background:#fafbfd;border:1px solid #edf0f5;border-radius:10px;padding:14px}
.question-block{border:1px solid #edf0f5;border-radius:12px;padding:16px;margin-bottom:16px;background:#fff}
.option-list label{display:flex;gap:8px;align-items:flex-start;font-weight:400;margin-bottom:10px}
.option-list input{margin-top:3px}
.score-big{font-size:36px;font-weight:700;line-height:1;margin:10px 0}
.empty-box{padding:24px 16px;text-align:center;color:#666;background:#fafbfd;border-radius:12px;border:1px dashed #d8e0ea}
.kv{display:grid;grid-template-columns:120px 1fr;gap:8px 14px;line-height:1.8}
.text-success{color:#15803d}
.text-danger{color:#dc2626}
.text-warning{color:#b45309}
.sticky-tools{position:sticky;top:12px;z-index:2;background:#fff}
@media (max-width: 992px){
  .shortcut-grid{grid-template-columns:1fr}
  .kv{grid-template-columns:1fr}
}
