*{margin:0;padding:0;box-sizing:border-box}
:root{
  --primary:#4F6BFF;--primary-dark:#3B55E6;--bg:#F6F8FC;--card:#FFFFFF;
  --text:#1B2333;--text2:#6B7280;--border:#E7EAF3;--green:#10B981;--red:#EF4444;--orange:#F59E0B;
}
body{font-family:"PingFang SC","Microsoft YaHei",system-ui,sans-serif;background:var(--bg);color:var(--text);min-height:100vh;display:flex;flex-direction:column}
a{color:var(--primary);text-decoration:none}

/* ---------- 登录页 ---------- */
.login-wrap{flex:1 1 auto;min-height:calc(100vh - 400px);display:flex;align-items:center;justify-content:center;padding:20px}
.login-card{width:100%;max-width:400px;background:var(--card);border-radius:16px;padding:40px 36px;box-shadow:0 8px 30px rgba(30,45,90,.08)}
.logo{display:flex;align-items:center;gap:10px;margin-bottom:28px;justify-content:center}
.logo-mark{width:38px;height:38px;border-radius:10px;background:linear-gradient(135deg,#4F6BFF,#8B5CF6);display:flex;align-items:center;justify-content:center;color:#fff;font-weight:700;font-size:20px}
.logo-name{font-size:22px;font-weight:700}
.login-card h2{font-size:16px;color:var(--text2);text-align:center;margin-bottom:24px;font-weight:400}
.field{margin-bottom:16px}
.field input{width:100%;padding:12px 14px;border:1px solid var(--border);border-radius:10px;font-size:14px;outline:none;transition:.2s}
.field input:focus{border-color:var(--primary);box-shadow:0 0 0 3px rgba(79,107,255,.12)}
.btn{display:inline-block;border:none;cursor:pointer;border-radius:10px;font-size:14px;padding:12px 20px;transition:.2s;background:var(--primary);color:#fff;width:100%}
.btn:hover{background:var(--primary-dark)}
.btn-plain{background:#fff;color:var(--text);border:1px solid var(--border);width:auto}
.btn-plain:hover{background:var(--bg)}
.alt{margin-top:18px;text-align:center;font-size:13px;color:var(--text2)}
.login-tip{margin-top:16px;text-align:center;font-size:12px;color:#A3AAB8}

/* ---------- 主框架 ---------- */
.layout{display:none;min-height:100vh;flex:1 1 auto}
.layout.on{display:block}
.topbar{height:60px;background:#fff;border-bottom:1px solid var(--border);display:flex;align-items:center;padding:0 24px;position:sticky;top:0;z-index:50}
.topbar .logo{margin-bottom:0;justify-content:flex-start}
.topbar .logo-mark{width:30px;height:30px;font-size:15px;border-radius:8px}
.topbar .logo-name{font-size:17px}
.topbar-right{margin-left:auto;display:flex;align-items:center;gap:14px;font-size:13px;color:var(--text2)}
.badge-role{background:rgba(79,107,255,.1);color:var(--primary);padding:3px 10px;border-radius:20px;font-size:12px}
.badge-ent{background:linear-gradient(135deg,#F59E0B,#EF4444);color:#fff;padding:3px 12px;border-radius:20px;font-size:12px;font-weight:600}
.link-logout{cursor:pointer;color:var(--red)}
.link-admin{cursor:pointer}
.body-wrap{display:flex;max-width:1280px;margin:0 auto;gap:20px;padding:20px 24px}
.sidenav{width:180px;flex-shrink:0}
.sidenav a{display:block;padding:11px 16px;border-radius:10px;color:var(--text2);font-size:14px;margin-bottom:4px;cursor:pointer}
.sidenav a.on{background:var(--primary);color:#fff}
.sidenav a:not(.on):hover{background:#EEF1F9}
.content{flex:1;min-width:0}
.page{display:none}
.page.on{display:block}

/* ---------- 通用组件 ---------- */
.card{background:var(--card);border-radius:14px;padding:22px;margin-bottom:18px;box-shadow:0 2px 10px rgba(30,45,90,.04)}
.card h3{font-size:15px;margin-bottom:16px;display:flex;align-items:center;gap:8px}
.grid{display:grid;gap:14px}
.grid-4{grid-template-columns:repeat(4,1fr)}
.grid-3{grid-template-columns:repeat(3,1fr)}
.grid-2{grid-template-columns:repeat(2,1fr)}
.stat{background:var(--card);border-radius:14px;padding:18px 20px;box-shadow:0 2px 10px rgba(30,45,90,.04)}
.stat .lb{font-size:12px;color:var(--text2)}
.stat .val{font-size:24px;font-weight:700;margin-top:6px;font-variant-numeric:tabular-nums}
.stat .sub{font-size:12px;color:var(--text2);margin-top:4px}
table{width:100%;border-collapse:collapse;font-size:13px}
th{text-align:left;color:var(--text2);font-weight:500;padding:10px 12px;border-bottom:1px solid var(--border);white-space:nowrap}
td{padding:11px 12px;border-bottom:1px solid #F0F2F8;word-break:break-all}
tr:last-child td{border-bottom:none}
.tag{display:inline-block;padding:2px 10px;border-radius:20px;font-size:12px}
.tag-green{background:rgba(16,185,129,.1);color:var(--green)}
.tag-red{background:rgba(239,68,68,.1);color:var(--red)}
.tag-gray{background:#F0F2F8;color:var(--text2)}
.tag-blue{background:rgba(79,107,255,.1);color:var(--primary)}
.tag-orange{background:rgba(245,158,11,.12);color:#B45309}
.muted{color:var(--text2);font-size:12px}
.row-actions{display:flex;gap:8px;flex-wrap:wrap}
.row-actions a{cursor:pointer;font-size:12px}
.danger{color:var(--red)}
.empty{text-align:center;color:var(--text2);padding:30px 0;font-size:13px}
.btn-sm{padding:7px 14px;font-size:13px;width:auto}
.head-flex{display:flex;align-items:center;justify-content:space-between;margin-bottom:16px;gap:10px;flex-wrap:wrap}
.head-flex h3{margin-bottom:0}
.filter-row{display:flex;align-items:center;gap:8px;margin-bottom:14px;font-size:13px;flex-wrap:wrap}
.filter-row select{padding:7px 10px;border:1px solid var(--border);border-radius:8px;font-size:13px;background:#fff;color:var(--text1);outline:none;font-family:inherit}
.form-grid{display:grid;grid-template-columns:1fr 1fr;gap:14px}
.form-grid .full{grid-column:1/-1}
.form-grid label{display:block;font-size:12px;color:var(--text2);margin-bottom:5px}
.form-grid input,.form-grid select,.form-grid textarea{width:100%;padding:10px 12px;border:1px solid var(--border);border-radius:8px;font-size:13px;outline:none;font-family:inherit}
.form-grid input:focus,.form-grid select:focus,.form-grid textarea:focus{border-color:var(--primary)}
.modal-mask{display:none;position:fixed;inset:0;background:rgba(15,23,42,.45);z-index:100;align-items:center;justify-content:center;padding:20px}
.modal-mask.on{display:flex}
.modal{background:#fff;border-radius:14px;width:100%;max-width:560px;max-height:88vh;overflow:auto;padding:24px}
.modal h3{margin-bottom:18px}
.toast{position:fixed;top:20px;left:50%;transform:translateX(-50%);background:#1B2333;color:#fff;padding:10px 22px;border-radius:10px;font-size:13px;z-index:200;display:none;max-width:80vw}
.copy-key{font-family:Consolas,monospace;font-size:12px;background:#F6F8FC;padding:2px 6px;border-radius:4px}
.kv{display:flex;gap:10px;margin-bottom:10px;font-size:13px}
.kv b{min-width:90px;color:var(--text2);font-weight:400}
/* tab 页签 */
.tabs{display:flex;gap:4px;border-bottom:1px solid var(--border);margin-bottom:18px}
.tabs a{padding:10px 16px;font-size:14px;color:var(--text2);border-bottom:2px solid transparent;cursor:pointer;margin-bottom:-1px}
.tabs a.on{color:var(--primary);border-bottom-color:var(--primary);font-weight:600}
.tab-page{display:none}
.tab-page.on{display:block}
/* 时间范围按钮组 */
.range-group{display:inline-flex;gap:0;border:1px solid var(--border);border-radius:10px;overflow:hidden;background:#fff}
.range-group a{padding:8px 16px;font-size:13px;color:var(--text2);cursor:pointer;border-right:1px solid var(--border)}
.range-group a:last-child{border-right:none}
.range-group a.on{background:var(--primary);color:#fff}
/* 占比条 */
.dist-bar{display:block;height:6px;border-radius:4px;background:linear-gradient(90deg,#4F6BFF,#8B5CF6);min-width:2px}
.dist-track{background:#EEF1F6;border-radius:4px;margin-top:6px;overflow:hidden}
.chart-canvas{width:100%;display:block}
.alert{background:rgba(245,158,11,.08);border:1px solid rgba(245,158,11,.25);color:#92400E;padding:10px 14px;border-radius:10px;font-size:12px;margin-bottom:16px;line-height:1.7}
/* 阶梯计费概览 */
.tier-panel{background:linear-gradient(120deg,#4F6BFF,#6D5BF1 55%,#8B5CF6);border-radius:14px;padding:20px 22px;color:#fff;display:flex;flex-wrap:wrap;gap:18px;align-items:center}
.tier-panel .tp-info{flex:1 1 260px;min-width:0}
.tier-panel .tp-tag{display:inline-block;background:rgba(255,255,255,.2);padding:3px 12px;border-radius:20px;font-size:12px;margin-bottom:10px}
.tier-panel .tp-name{font-size:22px;font-weight:700}
.tier-panel .tp-rate{margin-top:6px;font-size:13px;opacity:.95}
.tier-panel .tp-extra{margin-top:10px;font-size:12px;opacity:.85;line-height:1.6}
.tier-panel .tp-progress{flex:1 1 300px;min-width:240px}
.tier-panel .tp-row{display:flex;justify-content:space-between;font-size:12.5px;margin-bottom:8px;opacity:.95}
.tier-panel .tp-bar{height:10px;border-radius:6px;background:rgba(255,255,255,.22);overflow:hidden}
.tier-panel .tp-bar i{display:block;height:100%;border-radius:6px;background:linear-gradient(90deg,#fff,#F0ABFC);transition:width .6s ease}
.tier-panel .tp-next{margin-top:10px;font-size:12px;opacity:.9}

/* ---------- 响应式 ---------- */
@media (max-width:1024px){
  .grid-4{grid-template-columns:repeat(2,1fr)}
  .grid-2{grid-template-columns:1fr}
  .body-wrap{padding:16px}
}
@media (max-width:768px){
  .body-wrap{flex-direction:column}
  .sidenav{width:100%;display:flex;flex-wrap:wrap;gap:6px}
  .sidenav a{white-space:nowrap;margin-bottom:0}
  .grid-3{grid-template-columns:1fr}
  .form-grid{grid-template-columns:1fr}
}
@media (max-width:480px){
  .grid-4{grid-template-columns:1fr}
  .topbar{padding:0 14px}
  .card{padding:16px}
}
/* ---------- 企业定制优惠 ---------- */
.enterprise{display:flex;gap:28px;align-items:stretch;flex-wrap:wrap}
.ent-main{flex:1 1 240px;background:linear-gradient(135deg,#4F6BFF,#8B5CF6);border-radius:14px;padding:22px;color:#fff;display:flex;flex-direction:column;justify-content:center}
.ent-tag{display:inline-block;background:rgba(255,255,255,.2);padding:3px 12px;border-radius:20px;font-size:12px;margin-bottom:12px;width:fit-content}
.ent-price{font-size:34px;font-weight:700;font-variant-numeric:tabular-nums}
.ent-price small{font-size:13px;font-weight:400;opacity:.9;margin-left:4px}
.ent-desc{font-size:12.5px;opacity:.92;margin-top:10px;line-height:1.6}
.ent-feats{flex:2 1 380px;display:grid;grid-template-columns:repeat(2,1fr);gap:14px}
.ent-feat{background:#F6F8FC;border:1px solid var(--border);border-radius:12px;padding:14px 16px}
.ent-feat span{font-size:13.5px;font-weight:600;color:var(--text)}
.ent-feat p{font-size:12px;color:var(--text2);margin-top:6px;line-height:1.6}
@media (max-width:768px){.ent-feats{grid-template-columns:1fr 1fr}}
@media (max-width:480px){.ent-feats{grid-template-columns:1fr}}
/* ---------- 全站通知横幅 ---------- */
.notice-bar{height:60px;display:flex;align-items:center;justify-content:center;gap:18px;color:#fff;font-size:14.5px;position:relative;text-align:center;padding:0 70px}
.notice-bar a.notice-close{position:absolute;right:24px;top:50%;transform:translateY(-50%);color:rgba(255,255,255,.85);font-size:12.5px;cursor:pointer;background:rgba(255,255,255,.16);padding:6px 14px;border-radius:20px;text-decoration:none}
.notice-bar a.notice-close:hover{background:rgba(255,255,255,.28)}
@media (max-width:480px){.notice-bar{font-size:13px;padding:0 60px}.notice-bar a.notice-close{right:12px}}
/* ---------- 页脚（与前台 index.html 一致，登录页与各页面均显示） ---------- */
.footer{background:#0B1020;color:#8892A6;padding:56px 0 32px;font-size:13px;flex-shrink:0}
.footer-in{max-width:1280px;margin:0 auto;padding:0 24px}
.footer-grid{display:grid;grid-template-columns:2fr 1fr 1fr 1fr;gap:40px}
.footer .f-logo{display:flex;align-items:center;gap:10px;color:#fff;margin-bottom:14px}
.footer .logo-mark{width:38px;height:38px;border-radius:10px;background:linear-gradient(135deg,#4F6BFF,#8B5CF6);display:flex;align-items:center;justify-content:center;color:#fff;font-weight:700;font-size:20px}
.footer .logo-name{font-size:22px;font-weight:700;color:#fff}
.footer h4{color:#E5E9F2;font-size:14px;margin-bottom:14px}
.footer ul{list-style:none}
.footer li{margin-bottom:9px}
.footer a{color:#8892A6}
.footer a:hover{color:#fff}
.footer .copy{margin-top:44px;padding-top:22px;border-top:1px solid rgba(255,255,255,.08);display:flex;justify-content:space-between;flex-wrap:wrap;gap:10px;font-size:12px}
@media (max-width:1024px){
  .footer-grid{grid-template-columns:1fr 1fr}
}
@media (max-width:480px){
  .footer-grid{grid-template-columns:1fr}
  .footer{padding:40px 0 24px}
}
