:root{
  --coral:#F2553D; --coral-d:#DB4429; --coral-soft:#FDEDE9;
  --cream:#FBF7F1; --ink:#1B1B1D; --ink-2:#4A4A4F; --muted:#8A857D;
  --line:#EBE4D9; --white:#fff; --ok:#1f9d55; --danger:#d23f31;
  --shadow:0 8px 30px rgba(27,27,29,.07);
}
*{box-sizing:border-box;margin:0;padding:0}
body{font-family:-apple-system,BlinkMacSystemFont,"Segoe UI","PingFang SC","Microsoft YaHei",sans-serif;
  background:var(--cream);color:var(--ink);line-height:1.6;-webkit-font-smoothing:antialiased}
.hidden{display:none !important}
input,select,button{font-family:inherit;font-size:14px}
input,select{width:100%;padding:10px 12px;border:1.5px solid var(--line);border-radius:10px;background:#fff;outline:none;transition:border-color .15s}
input:focus,select:focus{border-color:var(--coral)}
label{display:block;font-size:13px;color:var(--ink-2);margin-bottom:6px;font-weight:600}
.field{margin-bottom:14px}
.hint{font-size:12px;color:var(--muted);margin-top:4px;display:block}
.row2{display:grid;grid-template-columns:1fr 1fr;gap:12px}

/* 按钮 */
.btn{border:none;border-radius:10px;padding:10px 18px;font-weight:600;cursor:pointer;transition:all .15s;white-space:nowrap}
.btn-primary{background:var(--coral);color:#fff}
.btn-primary:hover{background:var(--coral-d)}
.btn-line{background:#fff;border:1.5px solid var(--line);color:var(--ink)}
.btn-line:hover{border-color:var(--coral);color:var(--coral)}
.btn-block{width:100%;padding:12px}
.btn-xs{padding:5px 10px;font-size:13px;border-radius:8px}
.btn-danger{color:var(--danger);background:#fff;border:1.5px solid #f2c9c4}
.btn-danger:hover{background:var(--danger);color:#fff}
.err{color:var(--danger);font-size:13px;margin-top:10px;min-height:18px}

/* 登录页 */
.login-wrap{min-height:100vh;display:flex;align-items:center;justify-content:center;padding:20px;
  background:radial-gradient(circle at 50% 0%,rgba(242,85,61,.10),transparent 55%),var(--cream)}
.login-card{background:#fff;border:1px solid var(--line);border-radius:22px;padding:40px 36px;width:100%;max-width:380px;
  box-shadow:var(--shadow);text-align:center}
.login-logo{width:64px;height:64px;border-radius:16px;margin-bottom:16px}
.login-card h1{font-size:21px;font-weight:800}
.login-sub{color:var(--muted);font-size:14px;margin:6px 0 24px}
.login-card .field{text-align:left}
.login-card .btn{margin-top:8px}

/* 布局 */
.app{display:flex;min-height:100vh}
.side{width:220px;background:#fff;border-right:1px solid var(--line);display:flex;flex-direction:column;padding:22px 16px;position:sticky;top:0;height:100vh}
.side-brand{display:flex;align-items:center;gap:10px;font-weight:800;font-size:17px;padding:0 8px 22px}
.side-brand img{width:30px;height:30px;border-radius:8px}
.side-nav{display:flex;flex-direction:column;gap:4px}
.side-nav a{padding:11px 14px;border-radius:10px;color:var(--ink-2);font-weight:600;cursor:pointer;transition:all .15s}
.side-nav a:hover{background:var(--cream)}
.side-nav a.active{background:var(--coral-soft);color:var(--coral-d)}
.side-foot{margin-top:auto;padding:14px 8px 0;border-top:1px solid var(--line);font-size:13px;color:var(--muted);display:flex;flex-direction:column;gap:8px}
.side-foot a{color:var(--coral);cursor:pointer;font-weight:600}
.main{flex:1;padding:28px 32px;max-width:1200px}

/* 统计条 */
.stat-row{display:grid;grid-template-columns:repeat(5,1fr);gap:14px;margin-bottom:24px}
.stat-box{background:#fff;border:1px solid var(--line);border-radius:14px;padding:16px 18px}
.stat-box b{display:block;font-size:26px;font-weight:850}
.stat-box span{font-size:13px;color:var(--muted)}
.stat-box.hl b{color:var(--coral)}

/* 面板 */
.panel-head{display:flex;justify-content:space-between;align-items:center;gap:16px;margin-bottom:18px;flex-wrap:wrap}
.filters{display:flex;gap:10px;align-items:center;flex-wrap:wrap}
.filters input{width:220px}
.filters select{width:130px}

/* 表格 */
.table-wrap{background:#fff;border:1px solid var(--line);border-radius:16px;overflow:hidden}
table{width:100%;border-collapse:collapse}
th{text-align:left;font-size:12.5px;color:var(--muted);font-weight:700;padding:14px 16px;background:#faf6f0;border-bottom:1px solid var(--line);white-space:nowrap}
td{padding:13px 16px;border-bottom:1px solid var(--line);font-size:14px;vertical-align:middle}
tr:last-child td{border-bottom:none}
tbody tr:hover{background:#fdfaf6}
.td-actions{display:flex;gap:6px;flex-wrap:wrap}
.empty{padding:48px;text-align:center;color:var(--muted)}

/* 状态标签（文字+细边框，不用大色块） */
.pill{display:inline-block;font-size:12.5px;font-weight:700;padding:3px 10px;border-radius:999px;border:1.5px solid}
.pill-active{color:var(--ok);border-color:#bfe3cc}
.pill-disabled{color:var(--muted);border-color:var(--line)}
.pill-expired{color:var(--danger);border-color:#f2c9c4}
.mono{font-variant-numeric:tabular-nums}

/* 弹窗 */
.modal{position:fixed;inset:0;background:rgba(27,27,29,.42);display:flex;align-items:center;justify-content:center;z-index:100;padding:20px}
.modal-card{background:#fff;border-radius:20px;padding:28px;width:100%;max-width:440px;box-shadow:0 30px 80px rgba(0,0,0,.25);max-height:90vh;overflow:auto}
.modal-lg{max-width:720px}
.modal-card h3{font-size:19px;font-weight:800;margin-bottom:18px}
.modal-actions{display:flex;justify-content:flex-end;gap:10px;margin-top:20px}

/* 详情块 */
.detail-sec{margin-bottom:20px}
.detail-sec h4{font-size:14px;font-weight:800;margin-bottom:10px;color:var(--ink)}
.kv{display:grid;grid-template-columns:110px 1fr;gap:6px 12px;font-size:14px}
.kv .k{color:var(--muted)}
.mini-table{width:100%;border-collapse:collapse;font-size:13px}
.mini-table th,.mini-table td{padding:8px 10px;border-bottom:1px solid var(--line);text-align:left}

/* toast */
.toast{position:fixed;bottom:28px;left:50%;transform:translateX(-50%);background:var(--ink);color:#fff;
  padding:12px 22px;border-radius:12px;font-size:14px;z-index:200;box-shadow:0 12px 30px rgba(0,0,0,.3)}

@media (max-width:820px){
  .side{width:64px;padding:16px 8px}
  .side-brand span,.side-nav a{font-size:0}
  .side-nav a{text-align:center}
  .stat-row{grid-template-columns:repeat(2,1fr)}
  .main{padding:18px}
}
