:root{
  /* 品牌主色 */
  --blue:#1f5fbf;
  --blue-d:#16468f;
  --blue-l:#3b7de0;
  --blue-50:#eef4fd;
  --blue-100:#dde9fb;
  /* 中性 */
  --bg:#eef1f6;
  --bg-grad:linear-gradient(160deg,#f3f6fb 0%,#e9eef6 100%);
  --card:#ffffff;
  --line:#e6ebf2;
  --line-strong:#d4dce8;
  --text:#1b2430;
  --text-2:#3f4a5a;
  --muted:#8a94a6;
  --muted-2:#aab3c2;
  /* 状态 */
  --ok:#1faa5a;
  --ok-bg:#e8f7ef;
  --warn:#e0922b;
  --warn-bg:#fdf3e6;
  --err:#e0483b;
  --err-bg:#fdecea;
  --info:#1f5fbf;
  --info-bg:#eef4fd;
  /* 尺度 */
  --r-sm:8px; --r-md:12px; --r-lg:16px;
  --sh-sm:0 1px 2px rgba(22,40,80,.05);
  --sh-md:0 4px 14px rgba(22,40,80,.08);
  --sh-lg:0 10px 30px rgba(22,40,80,.12);
  --sp:14px;
}
*{box-sizing:border-box;}
html,body{margin:0;padding:0;}
body{
  font-family:-apple-system,BlinkMacSystemFont,"Segoe UI","PingFang SC","Microsoft YaHei",sans-serif;
  background:var(--bg-grad); color:var(--text); line-height:1.55;
  -webkit-font-smoothing:antialiased; min-height:100vh;
}

/* ---------- 顶栏 ---------- */
.topbar{
  position:sticky; top:0; z-index:20;
  background:linear-gradient(120deg,var(--blue-d) 0%,var(--blue) 55%,var(--blue-l) 100%);
  color:#fff; padding:14px 20px; display:flex; align-items:center; gap:12px; flex-wrap:wrap;
  box-shadow:0 2px 12px rgba(22,40,80,.18);
}
.topbar::after{content:""; position:absolute; left:0; right:0; bottom:0; height:3px;
  background:linear-gradient(90deg,rgba(255,255,255,.0),rgba(255,255,255,.55),rgba(255,255,255,0));}
.brand{font-size:17px; font-weight:700; letter-spacing:.4px; display:flex; align-items:center; gap:10px;}
.brand .logo-dot{width:11px; height:11px; border-radius:50%; background:#7fe0a8; box-shadow:0 0 0 4px rgba(127,224,168,.25); animation:pulse 2.2s infinite;}
.sub{font-size:12px; opacity:.82; font-family:ui-monospace,SFMono-Regular,Menlo,monospace;}

/* ---------- 容器 ---------- */
.container{max-width:1120px; margin:0 auto; padding:0 16px 48px;}
.section-title{font-size:13px; font-weight:700; color:var(--muted); margin:4px 4px 14px; letter-spacing:.5px; text-transform:uppercase;}
.section-title-main{font-size:22px; font-weight:800; color:var(--text); margin:28px 0 20px; letter-spacing:.5px;}

/* ---------- Hero 首屏 ---------- */
.hero-banner{
  position:relative; overflow:hidden; border-radius:var(--r-lg);
  background:linear-gradient(135deg,var(--blue-d) 0%,var(--blue) 40%,#2a7de1 70%,var(--blue-l) 100%);
  padding:52px 36px 44px; margin:22px 0 0; color:#fff;
  box-shadow:0 8px 32px rgba(22,40,80,.2), 0 2px 8px rgba(22,40,80,.12);
}
.hero-bg{
  position:absolute; inset:0; opacity:.06;
  background:url("data:image/svg+xml,%3Csvg width='60' height='60' viewBox='0 0 60 60' xmlns='http://www.w3.org/2000/svg'%3E%3Cg fill='none' fill-rule='evenodd'%3E%3Cg fill='%23ffffff' fill-opacity='1'%3E%3Cpath d='M36 34v-4h-2v4h-4v2h4v4h2v-4h4v-2h-4zm0-30V0h-2v4h-4v2h4v4h2V6h4V4h-4zM6 34v-4H4v4H0v2h4v4h2v-4h4v-2H6zM6 4V0H4v4H0v2h4v4h2V6h4V4H6z'/%3E%3C/g%3E%3C/g%3E%3C/svg%3E");
  pointer-events:none;
}
.hero-content{position:relative; z-index:1;}
.hero-title{font-size:30px; font-weight:900; letter-spacing:1px; margin:0 0 10px; text-shadow:0 2px 8px rgba(0,0,0,.15);}
.hero-sub{font-size:15.5px; opacity:.9; margin:0 0 26px; letter-spacing:.5px; font-weight:400;}
.hero-stats{display:flex; gap:36px;}
.hero-stat{display:flex; flex-direction:column; align-items:center;}
.hero-stat-n{font-size:28px; font-weight:900; line-height:1.2;}
.hero-stat-l{font-size:12px; opacity:.75; margin-top:3px; letter-spacing:.3px;}

/* ---------- 监测点卡片 ---------- */
.point-grid{display:grid; grid-template-columns:repeat(auto-fill,minmax(250px,1fr)); gap:var(--sp);}
.point-card{
  position:relative; background:var(--card); border:1px solid var(--line); border-radius:var(--r-lg);
  padding:16px 16px 14px; cursor:pointer; transition:transform .18s ease, box-shadow .18s ease, border-color .18s ease;
  box-shadow:var(--sh-sm); overflow:hidden; animation:rise .4s ease both;
}
.point-card::before{content:""; position:absolute; left:0; top:0; bottom:0; width:4px; background:var(--ok); transition:background .2s;}
.point-card.s-fault::before{background:var(--err);}
.point-card.s-inactive::before{background:var(--muted-2);}
.point-card:hover{transform:translateY(-3px); box-shadow:var(--sh-lg); border-color:var(--blue-100);}
.pc-top{display:flex; justify-content:space-between; align-items:flex-start; gap:10px;}
.pc-name{font-size:16px; font-weight:700; color:var(--text); line-height:1.3;}
.pc-public{display:inline-block; background:var(--info-bg); color:var(--blue); border:1px solid var(--blue-100);
  border-radius:10px; padding:1px 8px; font-size:10.5px; font-weight:700; margin-left:8px; vertical-align:middle; letter-spacing:.3px;}
.pc-loc{font-size:12.5px; color:var(--muted); margin-top:4px;}
.pc-foot{display:flex; justify-content:space-between; align-items:center; margin-top:14px; font-size:12px; color:var(--muted);}
.pc-stat{display:flex; align-items:center; gap:6px;}
.dot{width:8px; height:8px; border-radius:50%; display:inline-block; background:var(--ok);}
.dot.fault{background:var(--err);} .dot.inactive{background:var(--muted-2);}
.badge{background:var(--err-bg); color:var(--err); border-radius:20px; padding:3px 10px; font-weight:700; font-size:12px; white-space:nowrap;}
.badge.zero{background:var(--ok-bg); color:var(--ok);}

/* ---------- 首页四大板块（升级版） ---------- */
.domain-grid{display:grid; grid-template-columns:1fr 1fr; gap:22px; margin-top:4px;}
.domain-card{
  position:relative; display:flex; gap:16px; align-items:flex-start;
  background:linear-gradient(145deg,#ffffff 0%,#f8fafc 100%);
  border:1px solid var(--line); border-radius:var(--r-lg);
  padding:24px 20px; cursor:pointer; box-shadow:var(--sh-sm);
  transition:transform .2s ease, box-shadow .2s ease, border-color .2s ease;
  animation:rise .45s ease both; overflow:hidden;
}
.domain-card::before{
  content:""; position:absolute; left:0; top:0; bottom:0; width:5px;
  background:var(--blue); border-radius:3px 0 0 3px; transition:background .2s;
}
.domain-card[data-domain="D1"]::before{background:#e0922b;}
.domain-card[data-domain="D2"]::before{background:#1faa5a;}
.domain-card[data-domain="D3"]::before{background:#1f5fbf;}
.domain-card[data-domain="D4"]::before{background:#8b5cf6;}
.domain-card:hover{transform:translateY(-4px); box-shadow:var(--sh-lg); border-color:var(--blue-100);}
.dc-icon{
  flex:0 0 56px; width:56px; height:56px; border-radius:14px;
  background:var(--blue-50); color:var(--blue); display:flex; align-items:center; justify-content:center;
  transition:background .2s, transform .2s;
}
.domain-card:hover .dc-icon{transform:scale(1.08);}
.dc-icon svg{width:30px; height:30px;}
.domain-card[data-domain="D1"] .dc-icon{background:#fdf3e6; color:#e0922b;}
.domain-card[data-domain="D2"] .dc-icon{background:#e8f7ef; color:#1faa5a;}
.domain-card[data-domain="D3"] .dc-icon{background:var(--blue-50); color:var(--blue);}
.domain-card[data-domain="D4"] .dc-icon{background:#f3effd; color:#8b5cf6;}
.dc-body{flex:1 1 auto; min-width:0;}
.dc-name{font-size:18px; font-weight:800; color:var(--text); line-height:1.35;}
.dc-sub{font-size:13px; color:var(--muted); margin-top:5px; line-height:1.5;}
.dc-badge{
  flex:0 0 auto; align-self:flex-start; min-width:28px; height:28px; padding:0 10px;
  border-radius:20px; background:var(--blue-50); color:var(--blue); border:1px solid var(--blue-100);
  font-size:13px; font-weight:700; display:flex; align-items:center; justify-content:center;
}
/* ---------- 平台特性栏 ---------- */
.features-bar{
  display:grid; grid-template-columns:repeat(4,1fr); gap:16px;
  margin-top:32px; padding:24px 20px;
  background:var(--card); border:1px solid var(--line); border-radius:var(--r-lg);
  box-shadow:var(--sh-sm);
}
.feature-item{text-align:center; padding:8px 6px;}
.feature-ic{font-size:30px; margin-bottom:8px;}
.feature-t{font-size:14.5px; font-weight:700; color:var(--text); margin-bottom:3px;}
.feature-d{font-size:12px; color:var(--muted);}

/* ---------- 板块内分类（双列布局） ---------- */
.cat-sub{font-size:13px; color:var(--muted); margin:-4px 4px 12px;}
#pointList{display:grid; grid-template-columns:1fr 1fr; gap:20px;}
.cat-section{background:var(--card); border:1px solid var(--line); border-radius:var(--r-md); padding:16px 18px 18px; box-shadow:var(--sh-sm);}
.cat-h{display:flex; align-items:center; gap:10px; margin:0 0 12px;}
.cat-name{font-size:14.5px; font-weight:700; color:var(--text-2); border-left:3px solid var(--blue); padding-left:8px;}
.cat-count{font-size:12px; color:var(--muted-2);}
.cat-points{display:grid; grid-template-columns:1fr; gap:10px;}
.cat-empty{color:var(--muted-2); font-size:13px; padding:14px 4px; text-align:center;}

/* ---------- 详情 ---------- */
.back-btn{display:inline-flex; align-items:center; gap:6px; background:#fff; border:1px solid var(--line-strong); color:var(--blue);
  border-radius:var(--r-sm); padding:8px 14px; cursor:pointer; font-size:13.5px; font-weight:600; margin-bottom:14px; transition:.15s; box-shadow:var(--sh-sm);}
.back-btn:hover{background:var(--blue-50); border-color:var(--blue-100);}
#detailName{margin:4px 0 6px; font-size:22px; font-weight:800; letter-spacing:.3px;}
.meta{color:var(--muted); font-size:13px; margin-bottom:18px;}
.detail-cols{display:grid; grid-template-columns:1.35fr 1fr; gap:var(--sp); align-items:start;}

/* 导出权限分级（仅管理员可见） */
.export-bar{display:flex; gap:10px; margin-bottom:16px; flex-wrap:wrap;}
.btn-export{display:inline-flex; align-items:center; gap:6px; background:var(--blue); color:#fff; border:none;
  border-radius:var(--r-sm); padding:8px 16px; cursor:pointer; font-size:13.5px; font-weight:600; transition:.15s; box-shadow:var(--sh-sm);}
.btn-export:hover{filter:brightness(1.08);}
.btn-export:disabled{opacity:.55; cursor:wait;}
.btn-export-ghost{background:#fff; color:var(--blue); border:1px solid var(--blue-100);}
.btn-export-ghost:hover{background:var(--blue-50); filter:none;}

/* 打印报表：隐藏导航/按钮，仅保留详情内容 */
/* ---------- 板块介绍页 ---------- */
.intro-hero{display:flex; align-items:center; justify-content:space-between; gap:16px; margin:6px 0 4px;}
.intro-hero-left{display:flex; align-items:center; gap:14px; min-width:0; flex:1;}
.intro-hero-ic{width:54px; height:54px; flex:0 0 54px; border-radius:14px; background:var(--blue-50); color:var(--blue); display:flex; align-items:center; justify-content:center;}
.intro-hero-ic svg{width:30px; height:30px;}
.intro-hero-name{font-size:22px; font-weight:800; color:var(--text);}
.intro-hero-sub{font-size:13.5px; color:var(--muted); margin-top:2px;}
.intro-hero .btn-primary{flex:0 0 auto; width:auto; white-space:nowrap; font-size:14px; padding:10px 20px;}
.intro-lead{font-size:15px; line-height:1.75; color:var(--text); background:var(--blue-50); border:1px solid var(--blue-100); border-left:4px solid var(--blue); border-radius:0 var(--r-md) var(--r-md) 0; padding:14px 16px; margin:14px 0 20px;}
.intro-sec{margin:18px 0;}
.intro-sec-h{font-size:16px; font-weight:700; color:var(--blue-d); border-left:4px solid var(--blue); padding-left:10px; margin-bottom:12px;}
.intro-pain{margin:0; padding-left:20px;}
.intro-pain li{font-size:14px; line-height:1.9; color:var(--text);}
.intro-items{display:grid; grid-template-columns:repeat(auto-fill,minmax(230px,1fr)); gap:12px;}
.intro-item{background:var(--card); border:1px solid var(--line); border-radius:var(--r-md); padding:12px 14px; box-shadow:var(--sh-sm); transition:.15s;}
.intro-item:hover{transform:translateY(-2px); box-shadow:var(--sh-md); border-color:var(--blue-100);}
.ii-k{font-weight:700; color:var(--blue); font-size:14.5px; margin-bottom:4px;}
.ii-d{font-size:13px; color:var(--muted); line-height:1.6;}
.intro-sec svg{width:100%; height:auto; max-width:560px; display:block; margin:0 auto; overflow:visible;}
.intro-arch-cap{text-align:center; font-size:12.5px; color:var(--muted); margin-top:8px;}
.intro-text{font-size:14px; line-height:1.8; color:var(--text); margin:0;}
.intro-src{margin-top:22px; padding-top:12px; border-top:1px dashed var(--line-strong); font-size:12px; color:var(--muted-2); text-align:right;}

@media print{
  body{background:#fff !important;}
  header, .export-bar, .back-btn, .auth-area, #alarmList, .alarm-list, .footer-note,
    .hero-banner, .features-bar{display:none !important;}
  .detail-cols{grid-template-columns:1fr !important; gap:14px !important;}
  .card{box-shadow:none !important; border:1px solid #ddd !important; page-break-inside:avoid;}
  #detailView{display:block !important;}
  #domainView, #introView, #listView, #adminView{display:none !important;}
  .chart-wrap svg{max-height:520px !important;}
}

.card{background:var(--card); border:1px solid var(--line); border-radius:var(--r-lg); padding:16px 18px; margin-bottom:var(--sp); box-shadow:var(--sh-sm);}
.card-h{display:flex; justify-content:space-between; align-items:center; font-weight:700; font-size:14.5px; color:var(--text-2); margin-bottom:12px;}
.card-h .accent{width:4px; height:15px; background:var(--blue); border-radius:3px; margin-right:8px; display:inline-block; vertical-align:-2px;}
.metric-sel{font-size:13px; padding:6px 10px; border:1px solid var(--line-strong); border-radius:var(--r-sm); background:#fff; color:var(--text); cursor:pointer; max-width:60%;}
.metric-sel:focus{outline:none; border-color:var(--blue-l); box-shadow:0 0 0 3px var(--blue-100);}

/* ---------- 图表 ---------- */
.chart-wrap{position:relative; width:100%; min-height:260px;}
.chart-wrap svg{width:100%; height:auto; display:block; overflow:visible;}
.chart-tip{position:absolute; pointer-events:none; transform:translate(-50%,-115%); background:rgba(27,36,48,.92); color:#fff;
  padding:6px 9px; border-radius:7px; font-size:12px; line-height:1.4; white-space:nowrap; box-shadow:var(--sh-md); opacity:0; transition:opacity .12s; z-index:5;}
.chart-tip b{font-size:13px;}
.chart-tip .ct-time{color:#c9d3e0; font-size:11px;}

/* ---------- 最新读数 ---------- */
.latest-list{display:grid; grid-template-columns:1fr 1fr; gap:10px;}
.latest-item{background:var(--blue-50); border:1px solid var(--blue-100); border-radius:var(--r-md); padding:11px 13px; transition:.15s;}
.latest-item:hover{background:#e6effd;}
.latest-item.over{background:var(--err-bg); border-color:#f6cfca;}
.li-name{font-size:12px; color:var(--muted); display:flex; align-items:center; gap:5px;}
.li-val{font-size:19px; font-weight:800; margin-top:3px; color:var(--text); font-variant-numeric:tabular-nums;}
.li-val small{font-size:12px; color:var(--muted); font-weight:500; margin-left:3px;}
.li-val.over{color:var(--err);}

/* ---------- 报警 ---------- */
.alarm-list{display:flex; flex-direction:column; gap:9px;}
.alarm-item{border-left:4px solid var(--warn); background:var(--warn-bg); border-radius:0 var(--r-sm) var(--r-sm) 0; padding:9px 13px; font-size:13px; animation:rise .35s ease both;}
.alarm-item.l1{border-color:var(--err); background:var(--err-bg);}
.alarm-item.l3{border-color:var(--muted-2); background:#f1f3f7;}
.alarm-head{display:flex; justify-content:space-between; align-items:center; gap:8px;}
.alarm-item .a-name{font-weight:700; color:var(--text);}
.alarm-item .a-val{font-weight:800; font-variant-numeric:tabular-nums;}
.alarm-item.l1 .a-val{color:var(--err);} .alarm-item.l2 .a-val{color:var(--warn);} .alarm-item.l3 .a-val{color:var(--muted);}
.alarm-item .a-time{color:var(--muted); font-size:11.5px; margin-top:3px; display:flex; align-items:center; gap:6px;}

.empty{text-align:center; color:var(--muted); padding:48px 0;}
.footer{text-align:center; color:var(--muted); font-size:12px; padding:22px; border-top:1px solid var(--line); margin-top:8px;}
.hidden{display:none !important;}

/* ---------- 动效 ---------- */
@keyframes pulse{0%{box-shadow:0 0 0 0 rgba(127,224,168,.45);}70%{box-shadow:0 0 0 7px rgba(127,224,168,0);}100%{box-shadow:0 0 0 0 rgba(127,224,168,0);}}
@keyframes rise{from{opacity:0; transform:translateY(8px);}to{opacity:1; transform:translateY(0);}}

/* ---------- 移动端 ---------- */
@media (max-width:820px){
  .detail-cols{grid-template-columns:1fr;}
  .latest-list{grid-template-columns:1fr 1fr;}
  .brand{font-size:15.5px;}
  .container{padding:0 12px 40px;}
  .hero-banner{padding:36px 20px 32px; margin:14px 0 0; border-radius:var(--r-md);}
  .hero-title{font-size:24px;}
  .hero-sub{font-size:14px;}
  .hero-stats{gap:24px;}
  .hero-stat-n{font-size:24px;}
  .section-title-main{font-size:19px; margin:22px 0 16px;}
  .domain-grid{grid-template-columns:1fr; gap:14px;}
  .features-bar{grid-template-columns:1fr 1fr; gap:12px; padding:18px 14px; margin-top:22px;}
  /* 账号管理表格：隐藏次要列 */
  .admin-card{overflow:visible;}
  .admin-table{min-width:auto; font-size:12.5px;}
  .admin-table .td-dim{display:none;}
  .admin-table td{padding:9px 8px;}
  .admin-table .td-codes{word-break:break-all; line-height:1.6;}
  .td-ops .op-btn{display:inline-block; margin-bottom:4px;}
  .btn-export{padding:7px 12px; font-size:12.5px;}
  #pointList{grid-template-columns:1fr;}
}
@media (max-width:420px){
  .latest-list{grid-template-columns:1fr;}
  .pc-name{font-size:15px;}
}

/* ---------- 认证区域 ---------- */
.auth-area{margin-left:auto; display:flex; align-items:center; gap:10px;}
.auth-info{color:rgba(255,255,255,.92); font-size:12.5px; display:flex; align-items:center; gap:6px;}
.auth-info .role-tag{background:rgba(255,255,255,.18); padding:2px 8px; border-radius:10px; font-size:11px; font-weight:600;}
.btn-login,.btn-logout{
  background:rgba(255,255,255,.16); color:#fff; border:1px solid rgba(255,255,255,.3);
  border-radius:var(--r-sm); padding:6px 14px; cursor:pointer; font-size:12.5px; font-weight:600;
  transition:.15s; white-space:nowrap;
}
.btn-login:hover{background:rgba(255,255,255,.28); border-color:rgba(255,255,255,.5);}
.btn-logout:hover{background:rgba(255,255,255,.12); border-color:rgba(255,255,255,.2); opacity:.85;}

/* ---------- 登录弹窗 ---------- */
.modal-overlay{position:fixed; inset:0; z-index:100; background:rgba(22,40,80,.45); display:flex; align-items:center; justify-content:center;
  backdrop-filter:blur(3px); animation:fade-in .2s ease;}
.modal-box{background:#fff; border-radius:var(--r-lg); padding:28px 26px 24px; width:360px; max-width:90vw; box-shadow:var(--sh-lg); animation:rise .25s ease;}
.modal-h{font-size:18px; font-weight:800; margin-bottom:20px; color:var(--text); letter-spacing:.3px;}
.lbl{display:block; font-size:12.5px; font-weight:700; color:var(--text-2); margin:8px 0 5px;}
.inp{width:100%; padding:10px 13px; border:1.5px solid var(--line-strong); border-radius:var(--r-sm); font-size:14px;
  transition:border-color .15s; outline:none; font-family:inherit;}
.inp:focus{border-color:var(--blue-l); box-shadow:0 0 0 3px var(--blue-100);}
.btn-primary{width:100%; padding:11px; background:var(--blue); color:#fff; border:none; border-radius:var(--r-sm);
  font-size:15px; font-weight:700; cursor:pointer; margin-top:18px; transition:.15s;}
.btn-primary:hover{background:var(--blue-d);}
.btn-primary:active{transform:scale(.986);}
.login-err{background:var(--err-bg); color:var(--err); border-radius:var(--r-sm); padding:8px 12px; font-size:12.5px; font-weight:600; margin-top:10px;}
.modal-tip{text-align:center; font-size:11.5px; color:var(--muted); margin-top:14px; line-height:1.5;}
.print-guide-body{font-size:13.5px; color:var(--text-2); line-height:1.8; margin-bottom:6px;}
.print-guide-body p{margin:0 0 4px;}

/* ---------- 登录提示条 ---------- */
.login-prompt{background:var(--info-bg); border:1px solid var(--blue-100); border-radius:var(--r-md); padding:18px 20px; text-align:center; margin-top:16px;}
.login-prompt p{margin:0 0 12px; color:var(--text-2); font-size:14px;}
.btn-login-inline{background:var(--blue); color:#fff; border:none; border-radius:var(--r-sm); padding:9px 22px; font-size:14px; font-weight:700; cursor:pointer; transition:.15s;}
.btn-login-inline:hover{background:var(--blue-d);}

@keyframes fade-in{from{opacity:0;}to{opacity:1;}}

/* ---------- 账号管理视图（管理员） ---------- */
.admin-title{font-size:22px; font-weight:800; letter-spacing:.3px; margin:4px 0 8px;}
.admin-toolbar{display:flex; justify-content:space-between; align-items:center; gap:10px; flex-wrap:wrap; margin-bottom:14px;}
.admin-tip{color:var(--muted); font-size:12.5px;}
.btn-primary-small{background:var(--blue); color:#fff; border:none; border-radius:var(--r-sm); padding:9px 18px;
  font-size:13.5px; font-weight:700; cursor:pointer; transition:.15s; white-space:nowrap;}
.btn-primary-small:hover{background:var(--blue-d);}
.admin-card{padding:0; overflow:auto;}
.admin-table{width:100%; border-collapse:collapse; font-size:13.5px; min-width:640px;}
.admin-table th{background:var(--blue-50); color:var(--text-2); text-align:left; font-size:12px; font-weight:700;
  padding:11px 14px; border-bottom:1.5px solid var(--blue-100); white-space:nowrap; letter-spacing:.3px;}
.admin-table td{padding:11px 14px; border-bottom:1px solid var(--line); vertical-align:middle;}
.admin-table tr:last-child td{border-bottom:none;}
.admin-table tr:hover td{background:#f7fafd;}
.td-codes{color:var(--text-2);}
.td-dim{color:var(--muted); font-size:12.5px;}
.td-ops{white-space:nowrap;}
.op-btn{background:#fff; border:1px solid var(--line-strong); color:var(--blue); border-radius:var(--r-sm);
  padding:5px 13px; font-size:12.5px; font-weight:600; cursor:pointer; transition:.15s; margin-right:6px;}
.op-btn:hover{background:var(--blue-50); border-color:var(--blue-100);}
.op-btn.op-danger{color:var(--err);}
.op-btn.op-danger:hover{background:var(--err-bg); border-color:#f6cfca;}
.role-tag-static{background:var(--info-bg); color:var(--blue); border-radius:10px; padding:2px 9px;
  font-size:11px; font-weight:700; white-space:nowrap;}

/* ---------- 账号管理弹窗 ---------- */
.modal-wide{width:480px; max-width:94vw;}
.lbl-tip{color:var(--muted); font-weight:400; font-size:11.5px; margin-left:4px;}
.au-points{display:flex; flex-wrap:wrap; gap:8px; margin-top:6px; max-height:150px; overflow:auto;}
.au-chip{display:inline-flex; align-items:center; gap:6px; background:var(--blue-50); border:1px solid var(--blue-100);
  border-radius:var(--r-sm); padding:7px 11px; font-size:12.5px; color:var(--text-2); cursor:pointer; transition:.15s; user-select:none;}
.au-chip:hover{border-color:var(--blue-l);}
.au-chip input{accent-color:var(--blue); margin:0;}
.admin-form-actions{display:flex; justify-content:flex-end; gap:10px; margin-top:20px;}
.btn-ghost{background:#fff; border:1px solid var(--line-strong); color:var(--text-2); border-radius:var(--r-sm);
  padding:10px 26px; font-size:14px; font-weight:600; cursor:pointer; transition:.15s;}
.btn-ghost:hover{background:var(--blue-50); border-color:var(--blue-100);}
.btn-primary-inline{width:auto; margin:0; padding:10px 30px;}
