/* ===== 控制源平台 — 后台样式 ===== */
:root{--pri:#4f46e5;--prid:#4338ca;--bg:#f5f6fa;--card:#fff;--txt:#1a1a2e;--mt:#888;--bd:#e2e5ea;--gn:#27ae60;--rd:#e74c3c;--y:#e67e22;}
*{margin:0;padding:0;box-sizing:border-box}
body{font:14px/1.6 system-ui,-apple-system,sans-serif;color:var(--txt);background:var(--bg)}
a{color:var(--pri);text-decoration:none}
code{background:#f0f0f5;padding:2px 6px;border-radius:4px;font-size:13px}

/* 登录页 */
.auth-page{display:flex;align-items:center;justify-content:center;min-height:100vh}
.auth-card{background:var(--card);border-radius:12px;box-shadow:0 4px 24px rgba(0,0,0,.08);padding:36px 32px;width:400px;max-width:90vw}
.auth-logo{font-size:20px;font-weight:700;color:var(--pri);text-align:center;margin-bottom:10px}
.auth-card h2{margin:0 0 20px;text-align:center;font-size:18px}
.auth-card label{display:block;font-weight:600;margin:0 0 4px;font-size:13px;color:#555}
.auth-card input[type=text],.auth-card input[type=password]{width:100%;padding:9px 12px;border:1px solid var(--bd);border-radius:6px;font-size:14px;margin-bottom:14px}
.auth-card input:focus{outline:none;border-color:var(--pri);box-shadow:0 0 0 3px rgba(79,70,229,.1)}
.auth-btn{width:100%;padding:12px;background:var(--pri);color:#fff;border:none;border-radius:6px;font-size:15px;font-weight:600;cursor:pointer}
.auth-btn:hover{background:var(--prid)}
.auth-err{background:#fdeaea;color:var(--rd);padding:10px 14px;border-radius:6px;margin-bottom:16px;font-size:13px}

/* 后台布局 */
.aw{display:flex;min-height:100vh}
.as{width:220px;background:var(--card);border-right:1px solid var(--bd);flex:0 0 220px;display:flex;flex-direction:column;position:fixed;top:0;left:0;bottom:0;z-index:10}
.as-logo{font-size:17px;font-weight:700;color:var(--pri);padding:20px;border-bottom:1px solid var(--bd)}
.as-menu{flex:1;display:flex;flex-direction:column;padding:8px}
.as-menu a{display:block;padding:10px 14px;border-radius:8px;color:#555;font-size:14px;margin:2px 0}
.as-menu a:hover{background:var(--bg);color:var(--txt)}
.as-menu a.active{background:var(--pri);color:#fff;font-weight:600}
.as-menu a:last-child{margin-top:auto;color:var(--mt)}
.am{flex:1;margin-left:220px;min-width:0}
.at{display:flex;align-items:center;justify-content:space-between;padding:18px 28px;background:var(--card);border-bottom:1px solid var(--bd);position:sticky;top:0;z-index:5}
.at h1{font-size:20px;margin:0}
.at-user{font-size:13px;color:var(--mt)}
.ab{padding:24px 28px;max-width:1100px}

/* 统计卡片 */
.stat-row{display:flex;gap:16px;margin-bottom:24px;flex-wrap:wrap}
.sc{flex:1;min-width:160px;background:var(--card);border-radius:10px;padding:20px 24px;border:1px solid var(--bd)}
.sn{font-size:28px;font-weight:700;color:var(--pri)}
.sl{font-size:13px;color:var(--mt);margin-top:4px}

/* 面板 */
.pnl{background:var(--card);border-radius:10px;border:1px solid var(--bd);margin-bottom:20px;overflow:hidden}
.pnl-hd{font-weight:700;padding:14px 20px;border-bottom:1px solid var(--bd);background:#fafbfc;font-size:14px}
.pnl-hd a{font-weight:400}

/* 表单 */
.frm{padding:20px}
.frm label{display:block;font-weight:600;margin:0 0 4px;font-size:13px;color:#555}
.frm input[type=text],.frm input[type=password],.frm input[type=url],.frm input[type=file],.frm select,.frm textarea{width:100%;padding:9px 12px;border:1px solid var(--bd);border-radius:6px;font-size:14px;margin-bottom:14px}
.frm input:focus,.frm select:focus,.frm textarea:focus{outline:none;border-color:var(--pri);box-shadow:0 0 0 3px rgba(79,70,229,.1)}
.frm textarea{resize:vertical;min-height:80px}
.frm select{background:#fff;cursor:pointer}
.frm-row{display:flex;gap:14px}
.frm-col{flex:1}
.chk{display:flex;align-items:center;gap:8px;margin-bottom:14px;cursor:pointer;font-weight:400!important}
.chk input[type=checkbox]{width:auto;margin:0}

.btn{padding:11px 24px;background:var(--pri);color:#fff;border:none;border-radius:6px;font-size:14px;font-weight:600;cursor:pointer}
.btn:hover{background:var(--prid)}
.btn-ghost{background:transparent;color:var(--txt);border:1px solid var(--bd)}
.btn-ghost:hover{background:var(--bg)}

.lnk{background:none;border:none;color:var(--pri);cursor:pointer;font-size:13px;padding:0;margin-left:8px;text-decoration:underline}
.lnk.del{color:var(--rd)}
.lnk:hover{opacity:.8}

.mtd{color:var(--mt);font-size:12px;margin-top:4px}

/* 表格 */
.tbl{width:100%;border-collapse:collapse;font-size:14px}
.tbl th{text-align:left;padding:10px 16px;font-size:12px;color:var(--mt);background:#fafbfc;border-bottom:1px solid var(--bd);text-transform:uppercase;letter-spacing:.5px}
.tbl td{padding:10px 16px;border-bottom:1px solid var(--bd)}
.tbl tr:last-child td{border-bottom:none}
.tbl tbody tr:hover{background:#fafbfc}
.td-act{white-space:nowrap}
.td-act a,.td-act form{display:inline-block;margin-right:8px}
.rdesc{white-space:pre-wrap;color:#555;font-size:13px;padding:8px 16px;line-height:1.7;max-height:200px;overflow-y:auto}

/* 空态 */
.empty{color:var(--mt);text-align:center;padding:30px;font-size:14px}

/* 提示 */
.alrt{padding:12px 16px;border-radius:8px;margin-bottom:16px;font-size:14px}
.alrt.ok{background:#eafaf1;color:var(--gn);border:1px solid #abebc6}
.alrt.err{background:#fdeaea;color:var(--rd);border:1px solid #f5b7b1}

/* 响应式 */
@media(max-width:768px){
  .as{display:none}
  .am{margin-left:0}
  .ab{padding:16px}
  .at{padding:14px 16px;flex-wrap:wrap;gap:8px}
  .stat-row{gap:10px}
  .sc{min-width:calc(50% - 10px);padding:14px 16px}
  .sn{font-size:22px}
  .frm-row{flex-direction:column;gap:0}
}
