/* ============================================================
   天眼数据统计分析平台 · 暖金暗调（HUD / 琥珀霓金）
   色板：暖褐黑底 + 琥珀金主色 + 热橙红 / 冷古铜 / 蜜金点缀
   注：变量名沿用旧命名（--cyan 实为琥珀金、--blue 实为铜橙、--jade 实为蜜金、--cold 实为古铜）
   ============================================================ */
:root{
  --bg:        #0b0806;
  --bg-2:      #140d07;
  --panel:     rgba(var(--sf1),.74);
  --panel-2:   rgba(var(--sf3),.85);
  --card:      #1d1409;
  --ink:       #f7efe0;
  --ink-soft:  #d3bd9d;
  --ink-faint: #ac9780;
  --cyan:      #f5b942;
  --cyan-deep: #8a5a16;
  --blue:      #e6963c;
  --gold:      #f5b942;
  --gold-rgb:  245,185,66;   /* 强调色 RGB，供 rgba() 使用 */
  --gold-hi:   #ffe8b8;      /* 强调色高光 */
  --gold-deep: #d99a26;
  --gold-soft: rgba(var(--gold-rgb),.28);
  /* 画布/表面中性色（按彩种换色时整体换调，避免「只有文字变色」） */
  --sf1:38,26,15;        /* 次级面：胶囊、标签底 */
  --sf3:32,21,11;        /* 卡片面 */
  --sf4:20,13,7;         /* 深底：内嵌块、表头 */
  --sf2:12,8,4;          /* 更深：输入框 */
  --panel-hi:40,27,14;   /* 面板渐变上端 */
  --panel-lo:26,17,10;   /* 面板渐变下端 */
  --glow2:230,150,60;    /* 页面背景第二光斑 */
  --hi-rgb:255,232,184;  /* 高光描边 */
  --a2:232,136,64;  /* TOP2 点缀色（跟随主题） */
  --a3:226,96,80;    /* TOP3 点缀色（跟随主题） */
  --alert-rgb:255,90,62;  /* 告警红：不随主题变化，专门用于「已达阈值 / 预警」 */
  /* 号球多色：按号位循环（高光 / 亮面 / 暗面 / 光晕 RGB），避免整屏同色 */
  --b1h:#ffe8b8; --b1a:#f5b942; --b1b:#b26a1b; --b1g:245,185,66;
  --b2h:#b9f2ec; --b2a:#3cc0b3; --b2b:#156a63; --b2g:60,192,179;
  --b3h:#ffd3d0; --b3a:#e3736c; --b3b:#94373d; --b3g:227,115,108;
  --b4h:#cfe4ff; --b4a:#5d97d6; --b4b:#224d7b; --b4g:93,151,214;
  --b5h:#e2f6c9; --b5a:#82bd5a; --b5b:#3d6725; --b5g:130,189,90;
  --b6h:#e2d9ff; --b6a:#9a80dd; --b6b:#4d3889; --b6g:154,128,221;
  --b7h:#f6d6ef; --b7a:#bf75b3; --b7b:#6d2d61; --b7g:191,117,179;
  --jade:      #e0b45c;
  --jade-soft: rgba(224,180,92,.14);
  --crimson:   #ff5f52;
  --cold:      #e0a94a;
  --line:      rgba(233,183,105,.18);
  --line-soft: rgba(233,183,105,.10);
  --shadow:    0 18px 50px rgba(0,0,0,.46);
  --shadow-sm: 0 8px 24px rgba(0,0,0,.36);
  --serif: "HarmonyOS Sans SC","PingFang SC","Microsoft YaHei","Hiragino Sans GB",sans-serif;
  --sans:  "HarmonyOS Sans SC","PingFang SC","Microsoft YaHei","Hiragino Sans GB",sans-serif;
  --num:   "Bahnschrift","DIN Alternate","Segoe UI",var(--sans);
}
*{margin:0;padding:0;box-sizing:border-box;}
html{scrollbar-width:thin;scrollbar-color:rgba(233,183,105,.32) transparent;scroll-padding-top:140px;}
/* 顶栏吸顶：body 不能用固定 height（会把 sticky 的可粘范围锁死在一屏内），改用 min-height */
html,body{min-height:100%;}
body{
  font-family:var(--sans);
  color:var(--ink);
  background:
    radial-gradient(1240px 640px at 8% -8%, rgba(var(--gold-rgb),.11), transparent 62%),
    radial-gradient(1060px 580px at 94% 106%, rgba(var(--glow2),.13), transparent 62%),
    radial-gradient(820px 480px at 52% 46%, rgba(var(--gold-rgb),.04), transparent 72%),
    linear-gradient(180deg, var(--bg) 0%, var(--bg-2) 52%, var(--bg) 100%);
  min-height:100vh;
  position:relative;
  overflow-x:hidden;
  /* clip 不会生成滚动容器，sticky 吸顶才能生效（不支持 clip 的老浏览器退回 hidden） */
  overflow-x:clip;
}
::selection{background:rgba(var(--gold-rgb),.32);color:#fff7e8;}
::-webkit-scrollbar{width:10px;height:10px;}
::-webkit-scrollbar-track{background:transparent;}
::-webkit-scrollbar-thumb{background:rgba(233,183,105,.26);border-radius:7px;border:2px solid transparent;background-clip:content-box;}
::-webkit-scrollbar-thumb:hover{background:rgba(var(--gold-rgb),.45);background-clip:content-box;border:2px solid transparent;}

/* 科技网格底纹 */
.paper-grain{
  position:fixed;inset:0;pointer-events:none;z-index:0;
  background:
    linear-gradient(rgba(233,183,105,.055) 1px, transparent 1px),
    linear-gradient(90deg, rgba(233,183,105,.055) 1px, transparent 1px);
  background-size:46px 46px;
  -webkit-mask-image:radial-gradient(ellipse 90% 70% at 50% 0%, #000 30%, transparent 78%);
  mask-image:radial-gradient(ellipse 90% 70% at 50% 0%, #000 30%, transparent 78%);
}

/* ===== 顶栏 ===== */
.topbar{
  /* 吸顶：下拉浏览下方内容时，彩种切换 + 最新开奖始终可见 */
  position:sticky;top:0;z-index:80;
  display:flex;align-items:center;justify-content:space-between;
  padding:22px 40px;gap:16px;
  transition:padding .2s ease, box-shadow .2s ease;
  /* 单行不换行：顶栏高度只由「品牌行 + 右上区块」决定，不随彩种内容宽度变化 */
  flex-wrap:nowrap;
  background:linear-gradient(180deg, rgba(var(--sf3),.92), rgba(var(--sf4),.72));
  backdrop-filter:blur(14px);-webkit-backdrop-filter:blur(14px);
  border-bottom:1px solid var(--line);
  box-shadow:0 12px 34px rgba(0,0,0,.42);
}
/* 底部能量流动线 */
.topbar::after{
  content:'';position:absolute;left:0;right:0;bottom:-1px;height:2px;
  background:linear-gradient(90deg,transparent,rgba(var(--gold-rgb),.05) 18%,var(--cyan) 46%,var(--blue) 54%,rgba(var(--glow2),.05) 82%,transparent);
  background-size:220% 100%;
  animation:flowline 7s linear infinite;
  filter:drop-shadow(0 0 6px rgba(var(--gold-rgb),.55));
}
@keyframes flowline{0%{background-position:110% 0;}100%{background-position:-110% 0;}}
/* 吸顶后自动收窄：下拉浏览时顶栏变薄，不再长期占用大片可视高度 */
.seal,.brand-text h1{transition:width .2s ease,height .2s ease,font-size .2s ease,letter-spacing .2s ease;}
body.top-compact .topbar{padding:9px 40px;box-shadow:0 8px 24px rgba(0,0,0,.5);}
body.top-compact .seal{width:40px;height:40px;font-size:21px;border-radius:11px;}
body.top-compact .brand{gap:12px;}
body.top-compact .subtitle{display:none;}
body.top-compact .brand-text h1{font-size:19px;letter-spacing:2.5px;}
body.top-compact .topbar-right{gap:8px;}
body.top-compact .tab{padding:6px 15px;font-size:13px;}
body.top-compact .td-status{display:none;}
.brand{display:flex;align-items:center;gap:16px;flex:0 0 auto;}
.seal{
  width:54px;height:54px;border-radius:13px;flex-shrink:0;
  background:linear-gradient(145deg,var(--gold),var(--gold-deep));
  color:#fff;font-family:var(--serif);font-size:28px;font-weight:700;
  display:flex;align-items:center;justify-content:center;
  box-shadow:0 0 0 1px rgba(var(--hi-rgb),.4), 0 0 13px rgba(var(--gold-rgb),.26),
             0 8px 18px rgba(0,0,0,.45), inset 0 1px 0 rgba(255,255,255,.3);
  letter-spacing:2px;
}
.brand-text h1{
  font-family:var(--serif);font-size:23px;font-weight:700;letter-spacing:4px;color:var(--ink);
  text-shadow:0 0 15px rgba(var(--gold-rgb),.16);
}
.subtitle{font-size:12.5px;color:var(--ink-faint);letter-spacing:1.5px;margin-top:4px;}
.topbar-meta{display:flex;gap:8px;align-items:center;flex-wrap:nowrap;min-width:0;justify-content:flex-end;}
/* 首页右上区块内：meta 跟随区块宽度，空间不足时由「状态」小字省略号收缩，整行不换行 */
.topbar-right .topbar-meta{width:100%;}
.pill{
  font-size:11.5px;color:var(--ink-soft);background:rgba(var(--sf1),.66);
  border:1px solid var(--line);padding:5px 10px;border-radius:20px;letter-spacing:.5px;
  flex:0 0 auto;white-space:nowrap;
}
.pill.pulse{color:var(--cyan);border-color:rgba(var(--gold-rgb),.42);box-shadow:0 0 14px rgba(var(--gold-rgb),.12) inset;}
.pill.pulse::before{
  content:"";display:inline-block;width:7px;height:7px;border-radius:50%;
  background:var(--cyan);margin-right:7px;vertical-align:middle;
  box-shadow:0 0 9px var(--cyan);
  animation:beat 1.6s infinite;
}
@keyframes beat{0%,100%{opacity:1;}50%{opacity:.2;}}
/* 右上角紧凑最新开奖（6/7 号位彩种更宽，故整体收紧，保证单行） */
.top-draw{
  display:flex;align-items:center;gap:7px;flex:0 0 auto;
  background:rgba(var(--sf1),.66);border:1px solid var(--line);
  border-radius:20px;padding:5px 10px 5px 10px;
}
.td-label{font-size:11px;color:var(--ink-faint);letter-spacing:1px;white-space:nowrap;}
.td-issue{font-size:12px;color:var(--ink-soft);white-space:nowrap;letter-spacing:.5px;}
.td-issue b{color:var(--cyan);font-size:14px;font-family:var(--num);letter-spacing:.3px;
  text-shadow:0 0 8px rgba(var(--gold-rgb),.26);}
.td-balls{display:flex;gap:3.5px;}
/* 数据状态小字（右上角）：空间不足时省略号收缩，不撑开顶栏 */
.td-status{font-size:11px;color:var(--ink-faint);letter-spacing:.5px;white-space:nowrap;
  align-self:center;font-variant-numeric:tabular-nums;
  flex:0 1 auto;min-width:0;overflow:hidden;text-overflow:ellipsis;}
.td-ball{
  width:20px;height:20px;border-radius:50%;flex:0 0 auto;
  display:flex;align-items:center;justify-content:center;
  font-family:var(--num);font-size:11px;font-weight:700;color:#fff;line-height:1;
  background:radial-gradient(circle at 32% 28%, var(--gold-hi), var(--gold) 46%, var(--gold-deep) 100%);
  box-shadow:0 0 0 1px rgba(var(--hi-rgb),.35), 0 2px 6px rgba(0,0,0,.4),
             inset 0 -2px 4px rgba(0,0,0,.3), inset 0 1px 2px rgba(255,255,255,.35);
}

/* ===== 彩种切换（顶栏右上角） ===== */
.topbar-right{display:flex;flex-direction:column;align-items:flex-end;gap:12px;margin-left:auto;
  flex:0 1 auto;min-width:0;}
.lottery-tabs{
  position:relative;z-index:1;display:flex;gap:10px;justify-content:flex-end;
  flex-wrap:wrap;
}
.tab{
  font-family:var(--serif);font-size:14px;letter-spacing:1.5px;cursor:pointer;
  padding:8px 18px;border-radius:26px;border:1px solid var(--line);
  background:rgba(var(--sf1),.6);color:var(--ink-soft);transition:.25s;user-select:none;
}
.tab:hover{border-color:rgba(var(--gold-rgb),.5);color:var(--cyan);box-shadow:0 0 14px rgba(var(--gold-rgb),.14);}
.tab.active{
  background:linear-gradient(145deg,var(--gold),var(--gold-deep));
  color:#fff;border-color:rgba(var(--hi-rgb),.5);
  box-shadow:0 0 12px rgba(var(--gold-rgb),.26), 0 6px 16px rgba(0,0,0,.4),
             inset 0 1px 0 rgba(255,255,255,.3);
  text-shadow:0 0 12px rgba(255,255,255,.4);
}

.container{position:relative;z-index:1;max-width:1320px;margin:0 auto;padding:22px 40px 60px;}
/* 后台账号列表列较多，后台页单独放宽内容区，避免操作列被挤出（首页不受影响） */
.admin-page .container{max-width:1340px;}

/* ===== 面板（玻璃 + HUD 四角括号） ===== */
.panel{
  position:relative;
  background:linear-gradient(180deg, rgba(var(--panel-hi),.82), rgba(var(--panel-lo),.78));
  border:1px solid var(--line);border-radius:20px;
  padding:26px 30px;margin-bottom:24px;
  box-shadow:var(--shadow), inset 0 1px 0 rgba(var(--hi-rgb),.07);
  backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px);
}
.panel::before,.panel::after{
  content:'';position:absolute;width:15px;height:15px;pointer-events:none;
  border:0 solid rgba(var(--gold-rgb),.55);
}
.panel::before{top:8px;left:8px;border-top-width:1.5px;border-left-width:1.5px;border-top-left-radius:6px;}
.panel::after{bottom:8px;right:8px;border-bottom-width:1.5px;border-right-width:1.5px;border-bottom-right-radius:6px;}
.panel-head{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:18px;flex-wrap:wrap;}
.panel-head-right{display:flex;flex-direction:column;align-items:flex-end;gap:8px;}
/* 期数选择器（最近 10/30/50/100/300/1000） */
.range-seg{display:inline-flex;gap:4px;padding:3px;border-radius:22px;
  border:1px solid var(--line);background:rgba(var(--sf1),.55);}
.range-btn{font-family:var(--sans);font-size:12px;letter-spacing:.5px;cursor:pointer;
  padding:5px 13px;border-radius:18px;border:1px solid transparent;
  background:transparent;color:var(--ink-faint);transition:.22s;white-space:nowrap;}
.range-btn:hover{color:var(--cyan);border-color:rgba(var(--gold-rgb),.4);}
.range-btn.active{color:#fff;border-color:rgba(var(--hi-rgb),.45);
  background:linear-gradient(145deg,var(--gold),var(--gold-deep));
  box-shadow:0 0 10px rgba(var(--gold-rgb),.22), inset 0 1px 0 rgba(255,255,255,.28);}
.section-title{
  font-family:var(--serif);font-size:20px;font-weight:700;letter-spacing:3px;color:var(--ink);
  position:relative;padding-left:14px;line-height:1.25;display:flex;align-items:center;
  text-shadow:0 0 13px rgba(var(--gold-rgb),.14);
}
.section-title::before{
  content:"";position:absolute;left:0;top:50%;transform:translateY(-50%);
  width:4px;height:22px;border-radius:3px;background:linear-gradient(var(--cyan),var(--blue));
  box-shadow:0 0 10px rgba(var(--gold-rgb),.75);
}
.section-title small{font-family:var(--sans);font-size:11px;font-weight:400;color:var(--cyan);opacity:.85;letter-spacing:.5px;margin-left:8px;}
.muted{font-size:12px;color:var(--ink-faint);letter-spacing:.5px;}

/* ===== 面板显隐通用类（历史推荐记录默认隐藏，可随时开关） ===== */
.panel.is-hidden{display:none !important;}
.head-tools{display:flex;align-items:center;gap:12px;}
.head-left{display:flex;align-items:center;gap:10px;min-width:0;}
.hist-toggle{
  display:inline-flex;align-items:center;gap:6px;height:24px;padding:0 11px;border-radius:12px;
  font-family:var(--sans);font-size:11.5px;font-weight:400;letter-spacing:.6px;
  color:var(--ink-faint);background:rgba(var(--glow2),.07);
  border:1px solid rgba(var(--glow2),.26);cursor:pointer;transition:all .16s ease;
}
.hist-toggle:hover{color:var(--gold);border-color:rgba(var(--gold-rgb),.5);background:rgba(var(--gold-rgb),.1);}
.hist-toggle .ht-dot{width:5px;height:5px;border-radius:50%;background:currentColor;opacity:.45;transition:all .16s ease;}
.hist-toggle.on{color:var(--gold);border-color:rgba(var(--gold-rgb),.55);background:rgba(var(--gold-rgb),.13);}
.hist-toggle.on .ht-dot{opacity:1;box-shadow:0 0 7px rgba(var(--gold-rgb),.85);}
/* 顶栏总开关（推荐号码 + 历史推荐记录） */
.top-toggle{height:26px;padding:0 12px;font-size:11.5px;background:rgba(var(--sf1),.66);border-color:var(--line);}
.top-toggle:hover{background:rgba(var(--gold-rgb),.12);}
.top-toggle.on{background:rgba(var(--gold-rgb),.14);}

/* ===== 推荐号码 hero（单行：标题居左居中、内容整体居中） ===== */
.hero{border-color:rgba(var(--gold-rgb),.24);
  display:grid;grid-template-columns:1fr auto 1fr;align-items:center;column-gap:14px;
  padding:15px 30px 24px;
  box-shadow:0 0 26px rgba(var(--gold-rgb),.05), var(--shadow), inset 0 1px 0 rgba(var(--hi-rgb),.08);}
/* 标题与推荐行同列同行，纵向居中（不再压在上方单独占一行） */
.hero .panel-head{grid-column:1;grid-row:1;margin:0;min-width:0;justify-self:start;}
.hero-body{
  grid-column:2;grid-row:1;
  display:flex;align-items:center;justify-content:center;gap:26px;
  padding:0;flex-wrap:wrap;row-gap:10px;
}
/* 两段文字统一 20px 行盒 + 同一基线偏移，与球心落在同一水平线 */
.hero-issue{font-family:var(--serif);font-size:12.5px;line-height:20px;color:var(--ink-soft);letter-spacing:2px;white-space:nowrap;
  transform:translateY(.5px);}
.hero-issue b{color:var(--cyan);font-size:15.5px;line-height:20px;letter-spacing:1px;font-family:var(--num);
  text-shadow:0 0 9px rgba(var(--gold-rgb),.3);}
.hero-balls{display:flex;align-items:center;gap:10px;flex-wrap:nowrap;justify-content:center;padding:0;}
.ball{
  width:38px;height:38px;border-radius:50%;display:flex;align-items:center;justify-content:center;
  font-family:var(--num);font-size:19px;font-weight:700;color:#fff;line-height:1;
  box-shadow:0 0 0 1px rgba(255,255,255,.26), 0 6px 14px rgba(0,0,0,.45),
             inset 0 -4px 8px rgba(0,0,0,.32), inset 0 2px 3px rgba(255,255,255,.4);
  position:relative;
}
/* 推荐球按号位顺序上色（暖色七色循环：金 / 橙 / 红 / 焦糖 / 橄榄 / 藕棕 / 黄绿） */
.ball.h1{background:radial-gradient(circle at 32% 28%,#ecc87e,#c9973f);}
.ball.h2{background:radial-gradient(circle at 32% 28%,#eaa06a,#c97a3f);}
.ball.h3{background:radial-gradient(circle at 32% 28%,#e8907a,#c25a4a);}
.ball.h4{background:radial-gradient(circle at 32% 28%,#e0a86e,#a8692c);}
.ball.h5{background:radial-gradient(circle at 32% 28%,#cfc378,#8a8436);}
.ball.h6{background:radial-gradient(circle at 32% 28%,#d8a2a2,#96645f);}
.ball.h7{background:radial-gradient(circle at 32% 28%,#c2cd77,#7d8c3c);}
.ball .pos-label{
  position:absolute;bottom:-13px;left:50%;transform:translateX(-50%);
  font-family:var(--sans);font-size:10px;color:var(--ink-faint);font-weight:400;
  letter-spacing:1px;white-space:nowrap;
}
.hero-next{font-size:12.5px;line-height:20px;color:var(--ink-faint);letter-spacing:.5px;white-space:nowrap;
  transform:translateY(.5px);}
.hero-next b{color:var(--jade);font-size:13.5px;line-height:20px;text-shadow:0 0 7px rgba(224,180,92,.26);}

/* ===== 号球配色（按号位循环 · 球色随位置变化） ==== */
/* 用法：给球或球所在的容器加 pc1~pc7，球会自动继承 --ba / --bb / --bgw */
.pc1{--bh:var(--b1h);--ba:var(--b1a);--bb:var(--b1b);--bgw:var(--b1g);}
.pc2{--bh:var(--b2h);--ba:var(--b2a);--bb:var(--b2b);--bgw:var(--b2g);}
.pc3{--bh:var(--b3h);--ba:var(--b3a);--bb:var(--b3b);--bgw:var(--b3g);}
.pc4{--bh:var(--b4h);--ba:var(--b4a);--bb:var(--b4b);--bgw:var(--b4g);}
.pc5{--bh:var(--b5h);--ba:var(--b5a);--bb:var(--b5b);--bgw:var(--b5g);}
.pc6{--bh:var(--b6h);--ba:var(--b6a);--bb:var(--b6b);--bgw:var(--b6g);}
.pc7{--bh:var(--b7h);--ba:var(--b7a);--bb:var(--b7b);--bgw:var(--b7g);}

/* ===== 推荐 ===== */
.reco-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:14px;}
.reco-pos{
  background:linear-gradient(180deg, rgba(var(--gold-rgb),.07), rgba(var(--glow2),.035));
  border:1px solid var(--line);border-radius:14px;padding:14px;
  transition:transform .18s ease, box-shadow .18s ease;
}
.reco-pos:hover{transform:translateY(-2px);box-shadow:0 0 22px rgba(var(--gold-rgb),.14);}
.reco-pos h4{font-family:var(--serif);font-size:14px;color:var(--cyan);letter-spacing:2px;margin-bottom:10px;text-align:center;
  text-shadow:0 0 8px rgba(var(--gold-rgb),.2);}
.reco-item{display:flex;align-items:center;gap:10px;margin:8px 0;padding:7px 10px;background:rgba(var(--sf4),.55);border-radius:10px;border:1px solid var(--line-soft);}
.reco-num{
  width:34px;height:34px;border-radius:50%;flex-shrink:0;display:flex;align-items:center;justify-content:center;
  font-family:var(--num);font-weight:700;font-size:18px;color:#2a1607;
  background:radial-gradient(circle at 30% 24%, var(--bh,#ffe8b8) 0%, var(--ba,#f5b942) 30%, var(--bb,#8a5a16) 100%);
  box-shadow:0 0 0 1px rgba(var(--bgw,245,185,66),.20), 0 2px 6px rgba(0,0,0,.4),
             inset 0 -2px 4px rgba(0,0,0,.26), inset 0 1px 2px rgba(255,255,255,.32);
  text-shadow:0 1px 0 rgba(255,255,255,.3);
}
.reco-reason{flex:1;min-width:0;font-size:11.5px;color:var(--ink-soft);line-height:1.35;}
/* 遗漏为纯展示信息（原「冷号回补」选号依据已证伪移除），视觉上必须弱于理由正文 */
.reco-omit{color:var(--ink-faint);font-size:.92em;opacity:.85;}
/* 号码池卡片（六合彩）：整池铺开，号码按波色着色 */
.reco-grid.cols1{grid-template-columns:1fr;}
.reco-pos.pool-card{padding:16px 16px 12px;}
.pool-balls{display:flex;flex-wrap:wrap;gap:8px;justify-content:center;margin:4px 0 12px;}
.pball{
  min-width:42px;height:42px;padding:0 6px;border-radius:11px;display:flex;align-items:center;justify-content:center;
  font-family:var(--num);font-weight:700;font-size:17px;color:#2a1607;cursor:help;
  border:1px solid rgba(255,255,255,.14);transition:transform .15s ease, box-shadow .15s ease;
}
.pball:hover{transform:translateY(-2px);box-shadow:0 4px 14px rgba(0,0,0,.42);}
.pball.wr{background:linear-gradient(180deg,#ff9a7a,#d8442a);box-shadow:0 0 0 1px rgba(216,68,42,.3),inset 0 1px 2px rgba(255,255,255,.28);}
.pball.wb{background:linear-gradient(180deg,#9cc6f5,#3f7fd0);box-shadow:0 0 0 1px rgba(63,127,208,.3),inset 0 1px 2px rgba(255,255,255,.28);color:#0d1d30;}
.pball.wg{background:linear-gradient(180deg,#a5e6bd,#3fa169);box-shadow:0 0 0 1px rgba(63,161,105,.3),inset 0 1px 2px rgba(255,255,255,.28);color:#0d2417;}
.pball.wn{background:linear-gradient(180deg,#e0cfb0,#a08a5c);}
.pool-reasons{border-top:1px dashed var(--line-soft);padding-top:10px;margin-top:4px;}
.reco-domain{font-size:10.5px;color:var(--ink-faint);letter-spacing:.3px;
  margin:-2px 0 8px;font-variant-numeric:tabular-nums;}
/* 号码池波色图例：解释「为什么球有颜色」，避免红球堆里一个绿球被当成 bug */
.pool-wave-legend{display:flex;flex-wrap:wrap;gap:12px;justify-content:center;align-items:center;
  margin:-6px 0 10px;font-size:10.5px;color:var(--ink-faint);letter-spacing:.3px;
  font-variant-numeric:tabular-nums;}
.pwl-label{opacity:.72;}
.pwl-item{display:inline-flex;align-items:center;gap:4px;}
.pwl-item.zero{opacity:.42;}
.pwl-dot{width:8px;height:8px;border-radius:50%;display:inline-block;flex-shrink:0;}
.pwl-dot.wr{background:#d8442a;}
.pwl-dot.wb{background:#3f7fd0;}
.pwl-dot.wg{background:#3fa169;}
.reco-score{flex-shrink:0;margin-left:auto;font-size:11px;color:var(--ink-faint);
  white-space:nowrap;font-variant-numeric:tabular-nums;}
/* 5-7 卡（排列5 / 幸运5星 / 七星彩）：两行式——[球][分数] 一行 + 原因通栏，
   窄卡里原因不再被挤成竖排，分数永远单行右对齐 */
.reco-grid.cols5{gap:12px;}
.reco-grid.cols6,.reco-grid.cols7{gap:8px;}
.reco-grid.cols5 .reco-pos{padding:11px 10px;}
.reco-grid.cols6 .reco-pos,.reco-grid.cols7 .reco-pos{padding:10px 7px;}
.reco-grid.cols5 .reco-pos h4{font-size:13px;letter-spacing:1px;margin-bottom:8px;}
.reco-grid.cols6 .reco-pos h4,.reco-grid.cols7 .reco-pos h4{font-size:12.5px;letter-spacing:0;margin-bottom:7px;}
.reco-grid.cols5 .reco-item,
.reco-grid.cols6 .reco-item,
.reco-grid.cols7 .reco-item{
  display:grid;grid-template-columns:auto 1fr;grid-template-areas:"num score" "reason reason";
  align-items:center;gap:5px 8px;margin:6px 0;padding:7px 8px;}
.reco-grid.cols6 .reco-item,
.reco-grid.cols7 .reco-item{padding:7px 6px;}
.reco-grid.cols5 .reco-num{grid-area:num;width:28px;height:28px;font-size:15px;}
.reco-grid.cols6 .reco-num,.reco-grid.cols7 .reco-num{grid-area:num;width:25px;height:25px;font-size:14px;}
.reco-grid.cols5 .reco-score{grid-area:score;justify-self:end;margin-left:0;font-size:10.5px;}
.reco-grid.cols6 .reco-score,.reco-grid.cols7 .reco-score{grid-area:score;justify-self:end;margin-left:0;font-size:10px;}
.reco-grid.cols5 .reco-reason{grid-area:reason;font-size:11px;line-height:1.35;}
.reco-grid.cols6 .reco-reason,.reco-grid.cols7 .reco-reason{grid-area:reason;font-size:10px;line-height:1.35;}

/* ===== 热号榜 / 冷号榜（按号位独立排名 · TOP10 单列 10 行 · 数字区分色） ===== */
.posrank-block + .posrank-block{margin-top:30px;padding-top:24px;border-top:1px dashed var(--line);}
.posrank-head{display:flex;align-items:center;gap:10px;font-family:var(--serif);font-size:17px;
  letter-spacing:2px;margin-bottom:18px;flex-wrap:wrap;}
.posrank-head .pr-tag{
  width:28px;height:28px;flex-shrink:0;border-radius:9px;display:inline-flex;align-items:center;
  justify-content:center;font-family:var(--sans);font-size:12.5px;font-weight:700;color:#fff;letter-spacing:0;
  box-shadow:0 4px 12px rgba(0,0,0,.4), inset 0 1px 0 rgba(255,255,255,.3);
}
.posrank-head .pr-tag::before{content:'';width:9px;height:9px;border-radius:50%;background:#fff;
  box-shadow:0 0 4px rgba(255,255,255,.5);}
.posrank-head em{font-family:var(--sans);font-style:normal;font-size:12px;color:var(--ink-faint);letter-spacing:.5px;}
.posrank-head.hot{color:#c9a35c;}
.posrank-head.hot .pr-tag{background:rgba(196,136,56,.16);border:1px solid rgba(196,136,56,.45);color:#e0a44a;box-shadow:none;}
.posrank-head.cold{color:#b08a52;}
.posrank-head.cold .pr-tag{background:rgba(168,125,65,.15);border:1px solid rgba(168,125,65,.45);color:#cdab7c;box-shadow:none;}
.posrank-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:16px;}
.posrank-grid.cols4{grid-template-columns:repeat(4,1fr);gap:14px;}
.posrank-grid.cols5{grid-template-columns:repeat(5,1fr);gap:12px;}
.posrank-grid.cols6{grid-template-columns:repeat(6,1fr);gap:10px;}
.posrank-grid.cols7{grid-template-columns:repeat(7,1fr);gap:8px;}
/* 6-7 位窄卡：号码球略缩、表头字号收紧，保证单行不折行 */
.posrank-grid.cols6 .pr-num,.posrank-grid.cols7 .pr-num{width:24px;height:24px;font-size:12.5px;}
.posrank-grid.cols6 .pr-thead,.posrank-grid.cols7 .pr-thead{column-gap:8px;font-size:10px;justify-content:space-between;}
.posrank-grid.cols6 .pr-list li,.posrank-grid.cols7 .pr-list li{column-gap:8px;}
/* ===== 3 卡布局（福彩3D，卡宽 382px）：宽卡行内排版 =====
   元素适度放大（球/字号/条高）+ 进度条限宽 140px，
   剩余空间由 space-evenly 均匀分布到各列间距与两侧 —— 整行饱满、
   无中间死空白、右侧不留空，进度条保持适度长度（参考 8785 排法） */
.posrank-grid.cols3 .pr-thead{column-gap:18px;font-size:11px;justify-content:space-evenly;}
.posrank-grid.cols3 .pr-list li{column-gap:18px;justify-content:space-evenly;}
.posrank-grid.cols3 .pr-th-num{width:32px;}
/* 次数列加宽到 48px：表头「出现次数」(11px≈47px) 与数据同宽，两行彻底对齐 */
.posrank-grid.cols3 .pr-th-cnt{min-width:48px;}
.posrank-grid.cols3 .pr-cnt{min-width:48px;}
.posrank-grid.cols3 .pr-num{width:32px;height:32px;font-size:15px;}
.posrank-grid.cols3 .pr-cnt{font-size:14px;}
.posrank-grid.cols3 .pr-omit,
.posrank-grid.cols3 .pr-sub{font-size:13px;}
.posrank-grid.cols3 .pr-streak{font-size:13.5px;min-width:18px;}
.posrank-grid.cols3 .pr-bar{max-width:140px;height:6px;}
.posrank-grid.cols3 .pr-th-bar{max-width:140px;}
/* 5 卡布局（排列5/幸运5星，卡宽 226px）：行内容较宽，列间距 16→14px 均匀收缩，
   避免把卡片右侧设计留白吃光/数字被裁切（幸运5星次数达 4 位时） */
/* 5 列窄卡（226px）：改 grid 固定轨道 —— 列宽恒定，宽度不足时只压缩进度条，
   不会再把「连出」挤出卡片被裁切；表头与数据同一套轨道，天然对齐 */
.posrank-grid.cols4 .pr-thead,
.posrank-grid.cols4 .pr-list li,
.posrank-grid.cols5 .pr-thead,
.posrank-grid.cols5 .pr-list li{
  display:grid;align-items:center;
  grid-template-columns:26px 42px minmax(22px,1fr) 42px 14px;
  column-gap:7px;
}
.posrank-grid.cols4 .pr-thead,
.posrank-grid.cols5 .pr-thead{letter-spacing:0;}
/* 冷榜只有 4 列（号码/遗漏/进度条/出现次数）：省掉空的「连出」轨道，进度条吃满剩余空间 */
.posrank-grid.cols4 .posrank-card.cold .pr-thead,
.posrank-grid.cols4 .posrank-card.cold .pr-list li,
.posrank-grid.cols5 .posrank-card.cold .pr-thead,
.posrank-grid.cols5 .posrank-card.cold .pr-list li{
  grid-template-columns:26px 42px minmax(22px,1fr) 42px;
}
.posrank-grid.cols4 .pr-cnt,
.posrank-grid.cols4 .pr-omit,
.posrank-grid.cols4 .pr-sub,
.posrank-grid.cols4 .pr-th-cnt,
.posrank-grid.cols4 .pr-th-omit,
.posrank-grid.cols4 .pr-th-sub,
.posrank-grid.cols5 .pr-cnt,
.posrank-grid.cols5 .pr-omit,
.posrank-grid.cols5 .pr-sub,
.posrank-grid.cols5 .pr-th-cnt,
.posrank-grid.cols5 .pr-th-omit,
.posrank-grid.cols5 .pr-th-sub{min-width:0;}
.posrank-grid.cols4 .pr-bar,
.posrank-grid.cols4 .pr-th-bar,
.posrank-grid.cols5 .pr-bar,
.posrank-grid.cols5 .pr-th-bar{width:100%;min-width:0;max-width:88px;}
/* 4 列（卡宽 ~300px）有富余：进度条放宽，避免右侧大面积留白 */
.posrank-grid.cols4 .pr-bar,
.posrank-grid.cols4 .pr-th-bar{max-width:116px;}
.posrank-grid.cols4 .pr-streak,
.posrank-grid.cols4 .pr-th-streak,
.posrank-grid.cols5 .pr-streak,
.posrank-grid.cols5 .pr-th-streak{width:auto;min-width:0;}
.posrank-card{
  position:relative;overflow:hidden;
  background:linear-gradient(180deg, rgba(var(--panel-hi),.92), rgba(var(--sf3),.92));
  border:1px solid var(--line-soft);border-radius:16px;padding:14px 14px 15px;
  box-shadow:0 12px 32px rgba(0,0,0,.38);
  transition:transform .18s ease, box-shadow .18s ease, border-color .18s ease;
}
/* 号码池口径卡（六合彩）：与推荐卡片同口径的有效统计，金色标识 */
.posrank-card.pool{border-color:rgba(var(--gold-rgb,245,185,66),.5);}
.posrank-card.pool .pr-name{color:var(--gold-hi);}
.posrank-card.pool .pr-name::after{content:'· 有效口径';font-size:9.5px;color:var(--gold);
  letter-spacing:.5px;margin-left:4px;font-weight:400;}
.posrank-card::before{
  content:'';position:absolute;top:0;left:0;right:0;height:3px;opacity:.95;
}
.posrank-card.hot::before{background:linear-gradient(90deg,transparent,rgba(var(--gold-rgb),.75),transparent);opacity:.6;}
.posrank-card.cold::before{background:linear-gradient(90deg,transparent,rgba(var(--gold-rgb),.4),transparent);opacity:.55;}
.posrank-card:hover{transform:translateY(-2px);box-shadow:0 18px 42px rgba(0,0,0,.5);}
.posrank-card.hot:hover{border-color:rgba(196,136,56,.42);}
.posrank-card.cold:hover{border-color:rgba(168,125,65,.42);}
/* 卡片头：序号标志 + 号位名（左） · 排序方式（右），参考 8785 */
.posrank-card h5{
  display:flex;align-items:center;gap:10px;
  font-family:var(--serif);font-size:15px;letter-spacing:2px;color:var(--gold);
  padding-bottom:10px;margin-bottom:10px;border-bottom:1px dashed var(--line);
}
.posrank-card.hot h5{color:#c9a35c;}
.posrank-card.cold h5{color:#b08a52;}
.pr-ord{
  width:20px;height:20px;flex-shrink:0;border-radius:6px;
  display:inline-flex;align-items:center;justify-content:center;
  font-family:var(--num);font-size:11px;font-weight:700;color:#fff;letter-spacing:0;
  box-shadow:0 3px 8px rgba(0,0,0,.4), inset 0 1px 0 rgba(255,255,255,.3);
}
.posrank-card.hot .pr-ord{background:rgba(196,136,56,.12);border:1px solid rgba(196,136,56,.4);color:#c9a35c;box-shadow:none;}
.posrank-card.cold .pr-ord{background:rgba(168,125,65,.12);border:1px solid rgba(168,125,65,.4);color:#c2a277;box-shadow:none;}
.pr-sort{
  margin-left:auto;display:inline-flex;align-items:center;gap:5px;
  font-family:var(--sans);font-size:10px;font-weight:400;color:var(--ink-faint);
  letter-spacing:.5px;white-space:nowrap;
}
.pr-sort::before{
  content:'';width:0;height:0;
  border-left:3.5px solid transparent;border-right:3.5px solid transparent;
  border-top:4.5px solid currentColor;opacity:.6;
}
/* TOP10 → 单列 10 行：一个号位就是一列，不拆两列（参考 8785）
   行结构（flex）：[球] [次数] [进度条≤88px] [遗漏] [连出] —— 右侧组紧贴进度条（缩进），
   不再用 margin-left:auto 贴右边缘，彻底消除中间死空白 */
.pr-thead{display:flex;align-items:center;column-gap:16px;
  padding:0 9px 6px 8px;font-size:10px;color:var(--ink-faint);letter-spacing:1px;
  border-bottom:1px dashed var(--line);margin-bottom:7px;}
.pr-thead>span{white-space:nowrap;flex-shrink:0;}
.pr-th-num{width:26px;flex-shrink:0;text-align:center;}
/* 次数 / 遗漏 / 连出：固定列宽 + 右对齐，表头与数据严格同宽同向，数字不再左右抖动 */
.pr-th-cnt{min-width:42px;}
.pr-th-omit{min-width:46px;text-align:right;}
.pr-th-sub{min-width:44px;text-align:right;}
.posrank-card.cold .pr-th-cnt{min-width:46px;text-align:right;}
/* 表头弹性占位：与进度条同规则（flex:1 / min36 / max88），保证表头与内容列对齐 */
.pr-th-bar{flex:1;min-width:36px;max-width:88px;flex-shrink:0;}
.pr-th-streak{width:16px;min-width:16px;flex-shrink:0;text-align:center;}
.pr-list{list-style:none;display:flex;flex-direction:column;gap:5px;}
.pr-list li{
  display:flex;align-items:center;column-gap:16px;
  padding:5px 9px 5px 8px;border-radius:9px;
}
.pr-list li.pr-top{background:rgba(var(--gold-rgb),.035);}
.posrank-card.cold .pr-list li.pr-top{background:rgba(var(--gold-rgb),.03);}
/* 号码球：底色跟随彩种主题（普通球=主题色暗档，TOP3= 主题色亮档 + a2/a3 点缀）
   之前固定暖棕/亮金，切到蓝/紫/青/红主题时是最后一块「褐色残留」。 */
.pr-num{
  flex-shrink:0;
  width:26px;height:26px;border-radius:50%;font-family:var(--num);font-weight:700;
  font-size:13.5px;color:#fff;display:flex;align-items:center;justify-content:center;letter-spacing:0;
  font-variant-numeric:tabular-nums;
  box-shadow:inset 0 -3px 6px rgba(0,0,0,.28), 0 2px 6px rgba(0,0,0,.32);
  background:radial-gradient(circle at 34% 28%, rgba(var(--gold-rgb),.34), rgba(var(--gold-rgb),.12));
}
.posrank-card.hot .pr-num{background:radial-gradient(circle at 34% 28%, rgba(var(--gold-rgb),.30), rgba(var(--gold-rgb),.10));}
.posrank-card.cold .pr-num{background:radial-gradient(circle at 34% 28%, rgba(var(--gold-rgb),.22), rgba(var(--gold-rgb),.07));}
/* TOP3：t1 = 主题色亮档，t2/t3 = 同主题邻近点缀色，保证三档可区分又不跳色 */
.posrank-card.hot .pr-num.t1{background:radial-gradient(circle at 34% 28%, var(--gold-hi), var(--gold) 58%, var(--gold-deep));}
.posrank-card.hot .pr-num.t2{background:radial-gradient(circle at 34% 28%, rgba(var(--a2),1), rgba(var(--a2),.62));}
.posrank-card.hot .pr-num.t3{background:radial-gradient(circle at 34% 28%, rgba(var(--a3),1), rgba(var(--a3),.62));}
.posrank-card.cold .pr-num.t1{background:radial-gradient(circle at 34% 28%, var(--gold-hi), var(--gold) 58%, var(--gold-deep));filter:saturate(.72);}
.posrank-card.cold .pr-num.t2{background:radial-gradient(circle at 34% 28%, rgba(var(--a2),1), rgba(var(--a2),.62));filter:saturate(.72);}
.posrank-card.cold .pr-num.t3{background:radial-gradient(circle at 34% 28%, rgba(var(--a3),1), rgba(var(--a3),.62));filter:saturate(.72);}
/* TOP3 号码球突出：细光环 + 微放大（光环色随球色） */
.pr-list li.pr-top .pr-num{transform:scale(1.12);}
.posrank-card.hot .pr-list li.pr-top .pr-num.t1{box-shadow:0 0 0 1.5px rgba(var(--gold-rgb),.85), 0 0 10px rgba(var(--gold-rgb),.35), inset 0 -3px 6px rgba(0,0,0,.3);}
.posrank-card.hot .pr-list li.pr-top .pr-num.t2{box-shadow:0 0 0 1.5px rgba(var(--a2),.85), 0 0 10px rgba(var(--a2),.35), inset 0 -3px 6px rgba(0,0,0,.3);}
.posrank-card.hot .pr-list li.pr-top .pr-num.t3{box-shadow:0 0 0 1.5px rgba(var(--a3),.85), 0 0 10px rgba(var(--a3),.35), inset 0 -3px 6px rgba(0,0,0,.3);}
.posrank-card.cold .pr-list li.pr-top .pr-num.t1{box-shadow:0 0 0 1.5px rgba(var(--gold-rgb),.7), 0 0 10px rgba(var(--gold-rgb),.28), inset 0 -3px 6px rgba(0,0,0,.3);}
.posrank-card.cold .pr-list li.pr-top .pr-num.t2{box-shadow:0 0 0 1.5px rgba(var(--a2),.7), 0 0 10px rgba(var(--a2),.28), inset 0 -3px 6px rgba(0,0,0,.3);}
.posrank-card.cold .pr-list li.pr-top .pr-num.t3{box-shadow:0 0 0 1.5px rgba(var(--a3),.7), 0 0 10px rgba(var(--a3),.28), inset 0 -3px 6px rgba(0,0,0,.3);}
.pr-cnt{flex-shrink:0;min-width:42px;font-size:13px;color:rgba(var(--gold-rgb),.82);white-space:nowrap;
  letter-spacing:.3px;font-weight:600;font-variant-numeric:tabular-nums;}
.posrank-card.cold .pr-cnt{min-width:46px;text-align:right;color:rgba(var(--gold-rgb),.7);}
.pr-sub{order:2;flex-shrink:0;min-width:44px;text-align:right;font-size:12px;color:rgba(var(--gold-rgb),.62);
  white-space:nowrap;letter-spacing:0;font-variant-numeric:tabular-nums;}
/* 遗漏列：N 期（紧贴进度条，固定列宽右对齐，位数变化不影响连出列） */
.pr-omit{order:2;flex-shrink:0;min-width:46px;text-align:right;font-size:12px;color:var(--ink-soft);
  white-space:nowrap;letter-spacing:0;font-variant-numeric:tabular-nums;}
/* 连出列：纯数字，0 = 当前未连出（弱化），>0 高亮 */
.pr-streak{order:3;width:16px;min-width:16px;flex-shrink:0;text-align:center;
  font-family:var(--num);font-size:12.5px;font-weight:700;color:var(--ink-soft);
  font-variant-numeric:tabular-nums;}
.posrank-card.hot .pr-streak.on{color:#f2b98c;text-shadow:0 0 8px rgba(242,185,140,.4);}
.posrank-card.cold .pr-streak.on{color:#e5c391;text-shadow:0 0 8px rgba(226,193,138,.4);}
/* 进度条：跟在次数后、限宽 88px，右侧组紧贴其后（缩进布局），无中间死空白 */
.pr-bar{order:1;flex:1;min-width:36px;max-width:88px;height:5px;border-radius:4px;
  background:rgba(255,255,255,.085);overflow:hidden;}
.pr-bar-fill{display:block;height:100%;border-radius:5px;position:relative;}
.posrank-card.hot .pr-bar-fill{background:linear-gradient(90deg,rgba(var(--gold-rgb),.9),rgba(var(--gold-rgb),.34));}
.posrank-card.cold .pr-bar-fill{background:linear-gradient(90deg,rgba(var(--gold-rgb),.55),rgba(var(--gold-rgb),.16));}
.pr-bar-fill::after{
  content:'';position:absolute;right:0;top:50%;transform:translateY(-50%);
  width:7px;height:7px;border-radius:50%;background:#fff;box-shadow:0 0 4px rgba(255,255,255,.55);
}
/* 七星彩 7 个号位：统一 5 列一排（5 + 2），与排列5/幸运五星同宽同节奏 */

/* ===== 命中率回测 ===== */
.hitrate-form{background:linear-gradient(180deg, rgba(var(--gold-rgb),.06), rgba(var(--glow2),.03));border:1px solid var(--line);border-radius:14px;padding:18px;}
.hr-input-row{display:flex;flex-direction:column;gap:8px;}
#hrLabel{font-size:13px;color:var(--ink-soft);letter-spacing:.5px;}
.hr-input-inner{display:flex;gap:10px;flex-wrap:wrap;}
#hrCode{
  flex:1;min-width:200px;background:rgba(var(--sf2),.65);border:1px solid var(--line);border-radius:10px;
  padding:11px 14px;font-size:16px;font-family:var(--num);letter-spacing:2px;color:var(--ink);outline:none;transition:.2s;
}
#hrCode:focus{border-color:var(--cyan);background:rgba(var(--sf2),.85);
  box-shadow:0 0 0 3px rgba(var(--gold-rgb),.15), 0 0 18px rgba(var(--gold-rgb),.2);}
#hrCode::placeholder{color:var(--ink-faint);opacity:.7;}
.btn-gold{
  background:linear-gradient(145deg,var(--gold),var(--gold-deep));color:#fff;
  border:1px solid rgba(var(--hi-rgb),.35);
  padding:11px 24px;border-radius:10px;font-size:14px;font-weight:600;letter-spacing:1px;cursor:pointer;
  box-shadow:0 0 12px rgba(var(--gold-rgb),.2), 0 8px 18px rgba(0,0,0,.4), inset 0 1px 0 rgba(255,255,255,.28);
  transition:.2s;
}
.btn-gold:hover{filter:brightness(1.08);transform:translateY(-1px);
  box-shadow:0 0 16px rgba(var(--gold-rgb),.28), 0 10px 22px rgba(0,0,0,.45), inset 0 1px 0 rgba(255,255,255,.3);}
.btn-gold:active{transform:translateY(0);}
.hr-quick{display:flex;gap:8px;flex-wrap:wrap;margin-top:12px;}
.hr-chip{font-size:12px;color:var(--ink-soft);background:rgba(var(--sf1),.6);border:1px solid var(--line);padding:6px 12px;border-radius:16px;cursor:pointer;transition:.2s;}
.hr-chip:hover{border-color:rgba(var(--gold-rgb),.5);color:var(--cyan);box-shadow:0 0 12px rgba(var(--gold-rgb),.14);}
#hitResult{margin-top:18px;}
.hr-table{width:100%;border-collapse:collapse;margin-top:6px;}
.hr-table th,.hr-table td{padding:11px 12px;text-align:center;border-bottom:1px solid var(--line-soft);font-size:13px;}
.hr-table th{font-family:var(--serif);color:var(--ink-soft);font-weight:600;letter-spacing:1px;font-size:13px;}
.hr-table td{color:var(--ink);}
.hr-rate{font-family:var(--num);font-weight:700;color:var(--cyan);text-shadow:0 0 7px rgba(var(--gold-rgb),.2);}
.hr-exact{color:#ff7a68;font-weight:700;}
.hr-pos-pills{display:flex;gap:5px;justify-content:center;flex-wrap:wrap;}
.hr-pos-pills span{font-size:11px;padding:2px 7px;border-radius:8px;background:rgba(var(--gold-rgb),.13);color:var(--gold-hi);}
.hr-note{font-size:12px;color:var(--ink-faint);margin-top:10px;line-height:1.6;}

/* ===== 号码监控中心 ===== */
.monitor-panel{border-color:rgba(var(--gold-rgb),.26);
  box-shadow:0 0 22px rgba(var(--gold-rgb),.045), var(--shadow), inset 0 1px 0 rgba(var(--hi-rgb),.08);}
.head-right{display:flex;align-items:center;gap:10px;flex-wrap:wrap;justify-content:flex-end;}
.head-right .btn-line{margin-left:0;}
.mon-form{background:linear-gradient(180deg, rgba(var(--gold-rgb),.05), rgba(var(--glow2),.03));border:1px solid var(--line);border-radius:14px;padding:16px 18px;}
.mon-form-row{display:flex;flex-direction:column;gap:9px;}
#monLabel{font-size:13px;color:var(--ink-soft);letter-spacing:.5px;}
.mon-inputs{display:flex;gap:10px;align-items:center;flex-wrap:wrap;}
.mon-code{
  flex:1;min-width:180px;background:rgba(var(--sf2),.65);border:1px solid var(--line);border-radius:10px;
  padding:11px 14px;font-size:16px;font-family:var(--num);letter-spacing:2px;color:var(--ink);outline:none;transition:.2s;
}
.mon-code:focus{border-color:var(--cyan);box-shadow:0 0 0 3px rgba(var(--gold-rgb),.15), 0 0 18px rgba(var(--gold-rgb),.2);}
.mon-code::placeholder{color:var(--ink-faint);opacity:.7;}
.mon-combo-wrap{display:flex;flex:1;min-width:180px;}
.mon-textarea{min-height:66px;resize:vertical;line-height:1.55;letter-spacing:1px;
  font-size:15px;white-space:pre;overflow-wrap:normal;overflow-x:auto;}
.mon-batch-wrap{display:flex;flex-direction:column;gap:8px;flex:1;min-width:260px;}
.mon-batch-wrap[hidden]{display:none;}
.mon-batch-bar{display:flex;gap:8px;align-items:center;flex-wrap:wrap;}
.mon-name{flex:1;min-width:180px;background:rgba(var(--sf2),.65);border:1px solid var(--line);
  border-radius:10px;padding:8px 12px;font-size:13px;color:var(--ink);outline:none;transition:.2s;}
.mon-name:focus{border-color:var(--cyan);box-shadow:0 0 0 3px rgba(var(--gold-rgb),.13);}
.mon-name::placeholder{color:var(--ink-faint);opacity:.75;}
.mon-batch-count{font-size:11.5px;color:var(--gold-hi);letter-spacing:.5px;white-space:nowrap;}
.mon-multi-count{font-style:normal;font-size:11.5px;color:var(--ink-faint);margin-left:8px;
  letter-spacing:.5px;white-space:nowrap;}
/* 单号位多选号码面板 */
.mon-dp{position:relative;display:inline-flex;}
.mon-dp-btn{background:rgba(var(--sf2),.65);border:1px solid var(--line);border-radius:10px;
  padding:10px 14px;font-size:14px;color:var(--ink);cursor:pointer;min-width:170px;max-width:280px;
  text-align:left;transition:.2s;font-family:var(--num);letter-spacing:1px;
  white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
.mon-dp-btn:hover,.mon-dp-btn:focus{border-color:var(--cyan);}
.mon-dp-panel{position:absolute;top:calc(100% + 6px);left:0;z-index:80;width:300px;
  background:rgba(var(--panel-lo),.98);border:1px solid var(--line);border-radius:12px;
  padding:10px;box-shadow:0 12px 32px rgba(0,0,0,.55);}
.mon-dp-tools{display:flex;align-items:center;gap:8px;margin-bottom:8px;}
.mon-dp-tool{font-size:11.5px;color:var(--gold-hi);background:none;border:1px solid var(--line);
  border-radius:7px;padding:3px 10px;cursor:pointer;transition:.15s;}
.mon-dp-tool:hover{border-color:var(--gold);color:var(--gold);}
.mon-dp-count{margin-left:auto;font-size:11px;color:var(--ink-faint);white-space:nowrap;}
.mon-dp-grid{display:grid;grid-template-columns:repeat(5,1fr);gap:6px;max-height:216px;overflow:auto;}
.mon-dp-chip{display:flex;align-items:center;justify-content:center;gap:4px;padding:6px 4px;
  background:rgba(var(--sf2),.5);border:1px solid var(--line);border-radius:8px;cursor:pointer;
  font-family:var(--num);font-size:14px;color:var(--ink-soft);transition:.15s;user-select:none;}
.mon-dp-chip:hover{border-color:var(--gold);}
.mon-dp-chip input{accent-color:var(--gold);cursor:pointer;margin:0;}
.mon-dp-chip.on{border-color:var(--gold);color:var(--gold-hi);background:rgba(var(--gold-rgb),.13);}
.mon-dp-note{margin-top:8px;font-size:10.5px;color:var(--ink-faint);letter-spacing:.5px;}
/* 单号位多号：逐号码遗漏行（每个号码一个 chip，达阈值高亮） */
.mon-omit-row{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin:0 0 9px;}
.mon-omit-lab{font-size:11.5px;color:var(--ink-faint);letter-spacing:.5px;}
.mon-omit-chip{font-family:var(--num);font-size:12.5px;letter-spacing:.5px;color:var(--ink-soft);
  background:rgba(var(--sf2),.5);border:1px solid var(--line);border-radius:8px;padding:3px 10px;cursor:default;}
.mon-omit-chip.over{color:#ff8d7a;border-color:rgba(255,110,90,.5);background:rgba(255,90,70,.13);font-weight:700;}
.mon-th{display:inline-flex;align-items:center;gap:7px;background:rgba(var(--sf1),.6);border:1px solid var(--line);border-radius:10px;padding:6px 12px;}
.mon-th-txt{font-size:12px;color:var(--ink-soft);white-space:nowrap;}
#monTh{
  width:56px;background:rgba(var(--sf2),.65);border:1px solid var(--line);border-radius:7px;
  padding:6px 8px;font-size:14px;font-family:var(--num);text-align:center;color:var(--cyan);
  font-weight:700;outline:none;
}
#monTh:focus{border-color:var(--cyan);}
.mon-quick{display:flex;gap:8px;flex-wrap:wrap;margin-top:11px;}
.mon-chip{font-size:12px;color:var(--ink-soft);background:rgba(var(--sf1),.6);border:1px solid var(--line);padding:6px 12px;border-radius:16px;cursor:pointer;transition:.2s;}
.mon-chip:hover{border-color:rgba(var(--gold-rgb),.5);color:var(--cyan);box-shadow:0 0 12px rgba(var(--gold-rgb),.14);}

/* ---- 监控类型切换（组合 / 单号位 / 全盘） ---- */
[hidden]{display:none !important;}
.mon-kind{display:inline-flex;gap:4px;background:rgba(var(--sf2),.6);border:1px solid var(--line);
  border-radius:11px;padding:4px;margin-bottom:12px;}
.mk-btn{background:transparent;border:none;color:var(--ink-soft);font-size:12px;padding:6px 15px;
  border-radius:8px;cursor:pointer;transition:.2s;letter-spacing:.5px;font-family:inherit;}
.mk-btn:hover{color:var(--cyan);}
.mk-btn.active{background:linear-gradient(135deg, rgba(var(--gold-rgb),.22), rgba(var(--glow2),.18));
  color:#f7e2bb;box-shadow:inset 0 0 0 1px rgba(var(--gold-rgb),.28);}
.mon-pos-wrap{display:inline-flex;gap:8px;align-items:center;flex:1 1 auto;min-width:190px;max-width:400px;margin-right:auto;}
.mon-sel{
  background:rgba(var(--sf2),.65);border:1px solid var(--line);border-radius:10px;color:var(--ink);
  padding:11px 12px;font-size:14px;outline:none;cursor:pointer;flex:1 1 140px;max-width:230px;font-family:inherit;
}
.mon-sel:focus{border-color:var(--cyan);box-shadow:0 0 0 3px rgba(var(--gold-rgb),.13);}
.mon-sel.mon-digit{flex:0 0 92px;font-family:var(--num);font-size:16px;font-weight:700;
  color:var(--cyan);text-align:center;}
.mon-all-hint{flex:1;min-width:190px;font-size:11.5px;color:var(--ink-faint);
  background:rgba(var(--sf2),.5);border:1px dashed var(--line);border-radius:10px;padding:12px 14px;}

/* ---- 短信提醒 ---- */
.sms-box{margin-top:12px;padding:14px 18px;border:1px solid var(--line);border-radius:14px;
  background:linear-gradient(180deg, rgba(60,192,179,.05), rgba(var(--sf1),.35));
  display:flex;flex-wrap:wrap;align-items:center;gap:12px 16px;}
.sms-head{display:flex;align-items:center;gap:10px;flex:0 0 auto;}
.sms-actions{display:flex;align-items:center;gap:9px;flex-wrap:wrap;}
#soundBtn{white-space:nowrap;flex:0 0 auto;}
.sms-ico{font-family:var(--num);font-size:10px;letter-spacing:1.5px;font-weight:700;
  color:#8fe3d8;background:rgba(60,192,179,.14);border:1px solid rgba(60,192,179,.32);
  border-radius:7px;padding:5px 8px;flex-shrink:0;}
.sms-info{display:flex;flex-direction:column;gap:3px;min-width:0;}
.sms-info b{font-size:13.5px;color:var(--ink);letter-spacing:.5px;font-weight:600;}
.sms-info em{font-style:normal;font-size:11.5px;color:var(--ink-faint);line-height:1.5;}
.sms-actions{display:flex;align-items:center;gap:9px;flex-wrap:wrap;}
.sms-input{width:196px;background:rgba(var(--sf2),.65);border:1px solid var(--line);border-radius:10px;
  padding:9px 12px;font-size:13.5px;font-family:var(--num);letter-spacing:1px;color:var(--ink);
  outline:none;transition:.2s;}
.sms-input::placeholder{color:var(--ink-faint);font-family:var(--sans);letter-spacing:0;font-size:12.5px;}
.sms-input:focus{border-color:rgba(60,192,179,.55);box-shadow:0 0 0 3px rgba(60,192,179,.12);}
.sms-sel{background:rgba(var(--sf2),.65);border:1px solid var(--line);border-radius:10px;
  padding:9px 10px;font-size:12.5px;color:var(--ink-soft);outline:none;cursor:pointer;font-family:inherit;}
.sms-sel:focus{border-color:rgba(60,192,179,.55);}
.sms-hint{font-size:11.5px;color:#8fe3d8;letter-spacing:.5px;white-space:nowrap;
  opacity:0;transition:opacity .25s;}
.sms-hint.show{opacity:1;}
/* 标题后「待启用」灰标（短信通道未接入） */
.sms-pending{font-style:normal;font-size:10px;letter-spacing:1px;margin-left:8px;
  padding:2px 8px;border-radius:6px;border:1px solid var(--line);
  color:var(--ink-faint);background:rgba(128,128,128,.08);vertical-align:2px;}
/* 短信面板「待上线」灰化禁用态 */
.sms-box.coming-soon{pointer-events:none;opacity:.5;filter:grayscale(.55);
  background:linear-gradient(180deg, rgba(128,128,128,.04), rgba(var(--sf1),.18));
  border-style:dashed;border-color:rgba(160,150,130,.28);}
.sms-box.coming-soon .sms-ico{color:#b9b1a3;background:rgba(128,128,128,.10);
  border-color:rgba(160,150,130,.3);}
.sms-box.coming-soon .sms-pending.soon{color:#cfc6b6;background:rgba(160,150,130,.14);
  border-color:rgba(160,150,130,.35);letter-spacing:1.5px;}

/* ---- 监控列表 ---- */
.mon-list-head{display:flex;align-items:baseline;gap:10px;margin-top:20px;}.mon-list-head span{font-size:12.5px;color:var(--ink-soft);letter-spacing:1.5px;}
.mon-list-head em{font-style:normal;font-size:11px;color:var(--ink-faint);}
.mon-kind-tag{font-size:10px;letter-spacing:.5px;padding:3px 8px;border-radius:6px;
  white-space:nowrap;flex-shrink:0;border:1px solid transparent;}
.mon-kind-tag.kind-combo{background:rgba(var(--gold-rgb),.12);color:#f0cf8a;border-color:rgba(var(--gold-rgb),.28);}
.mon-kind-tag.kind-pos{background:rgba(196,136,56,.15);color:#e0b070;border-color:rgba(196,136,56,.32);}
.mon-kind-tag.kind-multi{background:rgba(var(--gold-rgb),.14);color:#f0cf8a;border-color:rgba(var(--gold-rgb),.3);}
.mon-kind-tag.kind-posmulti{background:rgba(196,136,56,.15);color:#e0b070;border-color:rgba(196,136,56,.32);}
.mon-kind-tag.kind-all{background:rgba(176,156,116,.16);color:#dbc59c;border-color:rgba(176,156,116,.3);}
.mon-kind-tag.sm{font-size:9.5px;padding:2px 6px;}

.mon-item.kind-pos .mon-item-code{color:var(--gold);text-shadow:0 0 8px rgba(196,136,56,.22);}
.mon-item.kind-multi .mon-item-code{color:var(--gold-hi);text-shadow:0 0 8px rgba(var(--gold-rgb),.22);}
.mon-item.kind-posmulti .mon-item-code{color:var(--gold);text-shadow:0 0 8px rgba(196,136,56,.22);}
.mon-item.kind-pos .mon-bar-fill{background:linear-gradient(90deg,rgba(var(--gold-rgb),.85),rgba(var(--gold-rgb),.45));}
.mon-item.kind-all .mon-item-code{color:#dbc59c;text-shadow:0 0 8px rgba(176,156,116,.22);}
.mon-item.kind-all .mon-bar-fill{background:linear-gradient(90deg,rgba(var(--gold-rgb),.6),rgba(var(--gold-rgb),.25));}
.mon-item .mon-item-note{max-width:160px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
.mon-item .mon-saved{color:var(--ink-faint);opacity:.85;margin-left:auto;white-space:nowrap;}

/* 监控项内的今日/7天/30天/90天 命中率 */
.mon-wins{display:flex;gap:6px;flex-wrap:wrap;margin-top:10px;}
.mon-wins .mw{display:inline-flex;align-items:baseline;gap:6px;background:rgba(var(--sf2),.5);
  border:1px solid var(--line-soft);border-radius:8px;padding:4px 9px;}
.mon-wins .mw i{font-style:normal;font-size:10px;color:var(--ink-faint);letter-spacing:.5px;}
.mon-wins .mw b{font-family:var(--num);font-size:12.5px;color:var(--cyan);font-weight:700;}
.mon-wins .mw em{font-style:normal;font-size:9.5px;color:var(--ink-faint);}
.mon-wins .mw.fb{border-style:dashed;opacity:.92;}
.mon-wins .mw.fb b{color:var(--ink-soft);}
.mon-wins-na{font-size:11px;color:var(--ink-faint);font-style:italic;}

/* 全盘：达标/最久未出清单 */
.mon-scan{display:flex;gap:6px;flex-wrap:wrap;align-items:center;margin-top:10px;
  padding-top:9px;border-top:1px dashed var(--line-soft);}
.mon-scan-lab{font-size:10.5px;color:var(--ink-faint);letter-spacing:.5px;}
.scan-chip{font-size:10.5px;font-family:var(--num);background:rgba(var(--sf1),.7);
  border:1px solid var(--line);border-radius:7px;padding:3px 7px;color:var(--ink-soft);}
.scan-chip.over{background:rgba(255,106,61,.12);border-color:rgba(255,106,61,.32);
  color:#ff9d8f;font-weight:700;}

/* ---- 胜率统计（自设置监控以来） ---- */
.mon-stats{margin-top:18px;padding:16px 18px;border:1px solid var(--line);border-radius:14px;
  background:linear-gradient(180deg, rgba(var(--gold-rgb),.05), rgba(var(--glow2),.025));}
.mon-stats-head{display:flex;align-items:baseline;gap:12px;flex-wrap:wrap;margin-bottom:13px;}
.mon-stats-head h4{font-family:var(--serif);font-size:14px;color:var(--cyan);letter-spacing:2px;
  text-shadow:0 0 8px rgba(var(--gold-rgb),.18);}
.mon-stats-head .muted{font-size:11px;}
.mstat-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:10px;}
.mstat{position:relative;overflow:hidden;display:flex;flex-direction:column;gap:4px;
  background:rgba(var(--sf2),.55);border:1px solid var(--line-soft);border-radius:12px;padding:12px 14px;}
.mstat::before{content:'';position:absolute;left:0;top:0;bottom:0;width:2px;
  background:var(--cyan);opacity:.55;}
.mstat .mstat-lab{font-size:11px;color:var(--ink-faint);letter-spacing:1px;}
.mstat .mstat-val{font-family:var(--num);font-size:22px;font-weight:700;color:var(--cyan);
  line-height:1.1;text-shadow:0 0 10px rgba(var(--gold-rgb),.18);}
.mstat .mstat-sub{font-style:normal;font-size:10.5px;color:var(--ink-faint);}
.mstat.fb{border-style:dashed;}
.mstat.fb::before{opacity:.28;}
.mstat.fb .mstat-val{color:var(--ink-soft);text-shadow:none;}
.mstat-foot{display:flex;gap:16px;flex-wrap:wrap;margin-top:12px;font-size:10.5px;color:var(--ink-faint);}
.mstat-foot .dim{opacity:.85;}
.mstat-foot .warn{color:var(--gold);}
.btn-line.on{color:var(--jade);border-color:rgba(224,180,92,.45);
  box-shadow:0 0 10px rgba(224,180,92,.14);}

.mon-list{display:grid;grid-template-columns:repeat(auto-fit,minmax(430px,1fr));gap:12px;margin-top:10px;}
.mon-item{
  background:rgba(var(--sf3),.72);border:1px solid var(--line-soft);border-radius:14px;padding:14px 16px;
  position:relative;transition:.25s;
}
.mon-item:hover{border-color:var(--line);}
.mon-item.triggered{border-color:rgba(255,106,61,.62);background:linear-gradient(180deg, rgba(255,106,61,.16), rgba(255,106,61,.05));
  box-shadow:0 0 15px rgba(255,106,61,.12);}
/* 已触发卡片左侧一条告警红边标，扫一眼就知道哪张在报警 */
.mon-item.triggered::after{
  content:'';position:absolute;left:0;top:16px;bottom:16px;width:3px;border-radius:0 3px 3px 0;
  background:linear-gradient(180deg,#ff8f70,#e0301c);
  box-shadow:0 0 10px rgba(255,77,51,.6);
}
.mon-item-top{display:flex;align-items:center;gap:10px;margin-bottom:10px;}
.mon-item-code{font-family:var(--num);font-size:17px;font-weight:700;letter-spacing:1px;color:var(--cyan);
  text-shadow:0 0 8px rgba(var(--gold-rgb),.22);}
.mon-item-note{font-size:11px;color:var(--ink-faint);}
.mon-del{
  margin-left:auto;width:24px;height:24px;flex-shrink:0;border-radius:50%;cursor:pointer;
  border:1px solid var(--line);background:rgba(var(--sf1),.6);color:var(--ink-faint);font-size:13px;line-height:1;
}
.mon-del:hover{border-color:var(--crimson);color:var(--crimson);box-shadow:0 0 10px rgba(255,106,61,.25);}
.mon-progress{position:relative;height:13px;border-radius:7px;background:rgba(12,7,3,.62);
  border:1px solid rgba(255,255,255,.075);
  box-shadow:inset 0 1px 4px rgba(0,0,0,.6), inset 0 -1px 0 rgba(255,255,255,.045);
  overflow:hidden;margin-bottom:8px;}
.mon-bar-fill{height:100%;border-radius:7px;background:linear-gradient(90deg,#ffd76a,var(--gold));
  box-shadow:0 0 10px rgba(var(--gold-rgb),.5), inset 0 1px 0 rgba(255,255,255,.4);
  transition:width .4s;}
/* 条内百分比数字：进度一眼可读 */
.mon-bar-pct{position:absolute;right:7px;top:50%;transform:translateY(-50%);line-height:1;
  font-family:var(--num);font-size:9.5px;font-weight:700;letter-spacing:.4px;
  color:rgba(255,244,232,.95);text-shadow:0 1px 3px rgba(0,0,0,.85), 0 0 8px rgba(0,0,0,.5);
  pointer-events:none;}
.mon-item.triggered .mon-bar-fill{background:linear-gradient(90deg,#ff9d8f,#ff4a2f);
  box-shadow:0 0 13px rgba(var(--alert-rgb),.62), inset 0 1px 0 rgba(255,255,255,.34);}
.mon-item-meta{display:flex;gap:10px;flex-wrap:wrap;font-size:11.5px;color:var(--ink-soft);}
.mon-item-meta b{color:var(--ink);}
.mon-item-meta .miss{color:#ff7a68;font-weight:700;font-size:12.5px;letter-spacing:.2px;}
/* 「连续未出 N 期」的数字单独放大，和进度条一起构成强弱对比 */
.mon-item-meta .miss b{font-family:var(--num);font-size:16px;font-weight:800;color:#fff3ec;
  text-shadow:0 0 12px rgba(var(--alert-rgb),.55), 0 1px 2px rgba(0,0,0,.5);}
.mon-item-meta .hit{color:var(--jade);font-weight:700;}
.mon-tag{
  font-size:10.5px;letter-spacing:.5px;padding:3px 9px;border-radius:12px;
  margin-left:auto;margin-right:8px;white-space:nowrap;
}
/* 已达阈值：实心告警红 + 白字 + 强光晕，做成「危机」视觉（不再是一颗淡淡的橙字） */
.mon-tag.alert{
  display:inline-flex;align-items:center;font-size:11px;font-weight:700;letter-spacing:.6px;
  background:linear-gradient(180deg,#ff7346,#d92b1b);
  color:#fff;text-shadow:0 1px 2px rgba(110,10,0,.45);
  border:1px solid rgba(255,196,180,.62);
  box-shadow:0 0 0 1px rgba(255,77,51,.32), 0 3px 12px rgba(255,58,34,.42), inset 0 1px 0 rgba(255,255,255,.26);
}
.mon-tag.alert::before{
  content:'';flex:0 0 auto;width:6px;height:6px;border-radius:50%;background:#fff;
  margin-right:5px;box-shadow:0 0 6px rgba(255,255,255,.95), 0 0 12px rgba(255,255,255,.6);
}
/* 刚触发的 20 秒内，标签跟着一起脉动（与 .alarm-halo 同步，过后静止） */
.mon-item.alarm-halo .mon-tag.alert{animation:alertTagPulse 1.2s ease-in-out 16;}
@keyframes alertTagPulse{
  0%,100%{box-shadow:0 0 0 1px rgba(255,77,51,.32), 0 3px 12px rgba(255,58,34,.42), inset 0 1px 0 rgba(255,255,255,.26);}
  50%{box-shadow:0 0 0 4px rgba(255,77,51,.38), 0 3px 20px rgba(255,58,34,.8), inset 0 1px 0 rgba(255,255,255,.3);}
}
.mon-tag.normal{background:var(--jade-soft);color:var(--jade);border:1px solid rgba(224,180,92,.3);}

/* ---- 批量组合：展开查看 / 编辑号码 ---- */
.mon-multi-toggle{flex-shrink:0;cursor:pointer;font-size:11px;letter-spacing:.5px;white-space:nowrap;
  padding:4px 10px;border-radius:8px;border:1px solid var(--line);
  background:rgba(var(--sf1),.6);color:var(--ink-soft);transition:.2s;}
.mon-multi-toggle:hover{border-color:rgba(var(--gold-rgb),.5);color:var(--cyan);
  box-shadow:0 0 10px rgba(var(--gold-rgb),.15);}
.mon-multi-toggle.on{border-color:rgba(var(--gold-rgb),.55);color:var(--gold-hi);
  background:rgba(var(--gold-rgb),.12);}
.mon-multi-panel{margin:2px 0 10px;padding:12px 14px;border:1px dashed var(--line);border-radius:12px;
  background:rgba(var(--sf2),.4);}
.mon-multi-head{display:flex;align-items:baseline;gap:8px;flex-wrap:wrap;margin-bottom:9px;}
.mon-multi-head .mm-title{font-size:12px;color:var(--cyan);letter-spacing:1.5px;}
.mon-multi-head .mm-count{font-style:normal;font-size:11px;color:var(--ink-faint);}
.mon-combo-grid{display:flex;flex-wrap:wrap;gap:6px;max-height:230px;overflow:auto;padding-right:2px;}
.mon-combo-chip{display:inline-flex;align-items:center;gap:3px;padding:3px 4px 3px 8px;border-radius:8px;
  background:rgba(var(--gold-rgb),.08);border:1px solid rgba(var(--gold-rgb),.2);
  font-family:var(--num);font-size:12.5px;color:#f0cf8a;line-height:1.2;}
.mon-combo-chip b{cursor:pointer;font-weight:700;letter-spacing:.5px;}
.mon-combo-chip b:hover{color:var(--cyan);text-decoration:underline dotted;text-underline-offset:2px;}
.mm-x{width:16px;height:16px;line-height:1;padding:0;border-radius:50%;cursor:pointer;font-size:11px;
  border:1px solid transparent;background:rgba(var(--sf1),.5);color:var(--ink-faint);flex-shrink:0;}
.mm-x:hover{border-color:var(--crimson);color:var(--crimson);}
.mm-empty{font-size:11.5px;color:var(--ink-faint);}
.mon-combo-add{display:flex;gap:8px;margin-top:10px;}
.mm-input{flex:1;min-width:0;background:rgba(var(--sf2),.65);border:1px solid var(--line);border-radius:8px;
  padding:7px 10px;font-size:12.5px;color:var(--ink);outline:none;font-family:var(--num);letter-spacing:.5px;}
.mm-input::placeholder{font-family:var(--sans);letter-spacing:0;font-size:12px;color:var(--ink-faint);}
.mm-input:focus{border-color:rgba(var(--gold-rgb),.5);box-shadow:0 0 0 3px rgba(var(--gold-rgb),.08);}
.mm-add{padding:6px 16px;font-size:12px;white-space:nowrap;flex-shrink:0;}

.mon-alerts-head{display:flex;align-items:center;gap:10px;margin-top:18px;}
.mon-alerts-head h4{font-family:var(--serif);font-size:14px;color:var(--cyan);letter-spacing:2px;
  text-shadow:0 0 8px rgba(var(--gold-rgb),.2);}
.btn-line{
  background:rgba(var(--sf1),.6);border:1px solid var(--line);color:var(--ink-soft);
  padding:5px 13px;border-radius:16px;font-size:11.5px;cursor:pointer;transition:.2s;margin-left:auto;
}
.btn-line:hover{border-color:rgba(var(--gold-rgb),.5);color:var(--cyan);box-shadow:0 0 12px rgba(var(--gold-rgb),.15);}
/* 告警记录头部：第二个按钮不重复右推，避免中间出现大空隙 */
.mon-alerts-head .btn-line + .btn-line{margin-left:0;}
.btn-line.danger{color:#ff8a7a;border-color:rgba(255,106,61,.42);}
.btn-line.danger:hover{color:#ffb3a6;border-color:rgba(255,106,61,.75);box-shadow:0 0 12px rgba(255,106,61,.18);}
.mon-alerts{display:flex;flex-direction:column;gap:8px;margin-top:10px;}
.alert-item{
  display:flex;align-items:center;gap:12px;background:linear-gradient(180deg, rgba(255,106,61,.12), rgba(255,106,61,.04));
  border:1px solid rgba(255,106,61,.3);border-radius:12px;padding:10px 14px;font-size:12.5px;
}
.alert-item .a-code{font-family:var(--num);font-size:15px;font-weight:700;letter-spacing:2px;color:#ff7a68;
  text-shadow:0 0 7px rgba(255,106,61,.2);}
.alert-item .a-txt{color:var(--ink-soft);flex:1;}
.alert-item .a-txt b{color:#ff8a7a;}
.alert-item .a-time{font-size:11px;color:var(--ink-faint);}
.alert-item.read{background:rgba(var(--sf3),.6);border-color:var(--line-soft);}
.alert-item.read .a-code{color:var(--ink-soft);text-shadow:none;}
.alert-item.read .a-txt b{color:var(--ink-soft);}

/* ===== 历史表 ===== */
.table-wrap{max-height:420px;overflow-y:auto;overflow-x:auto;border-radius:12px;border:1px solid var(--line-soft);}
.history-table{width:100%;border-collapse:collapse;}
.history-table thead th{
  position:sticky;top:0;z-index:2;
  background:linear-gradient(180deg,rgba(var(--panel-hi),.98),rgba(var(--panel-lo),.98));
  font-family:var(--serif);font-size:13px;color:var(--gold-hi);letter-spacing:2px;
  padding:12px;font-weight:600;border-bottom:1px solid var(--line);
}
.history-table td{padding:10px 12px;text-align:center;font-size:13px;border-bottom:1px solid var(--line-soft);color:var(--ink-soft);}
.history-table tbody tr:hover{background:rgba(var(--glow2),.08);}
.hist-code{font-family:var(--num);font-weight:700;color:var(--cyan);letter-spacing:2px;font-size:15px;
  text-shadow:0 0 8px rgba(var(--gold-rgb),.22);}

.foot{margin-top:30px;text-align:center;font-size:11.5px;color:var(--ink-faint);line-height:1.8;letter-spacing:.5px;}
.foot b{color:#ff7a68;}

.empty{text-align:center;color:var(--ink-faint);padding:30px;font-size:13px;letter-spacing:1px;}
.loading{text-align:center;color:var(--cyan);padding:24px;font-family:var(--serif);letter-spacing:2px;
  text-shadow:0 0 9px rgba(var(--gold-rgb),.22);}

/* ========== 登录体系：用户区 ========== */
.user-box{display:flex;align-items:center;gap:8px;background:rgba(var(--sf1),.66);border:1px solid var(--line);border-radius:20px;padding:5px 12px 5px 8px;flex:0 0 auto;white-space:nowrap;}
.user-name{font-size:13px;color:var(--ink);font-weight:600;letter-spacing:.5px;}
.user-link{font-size:12px;color:var(--cyan);background:none;border:none;cursor:pointer;text-decoration:none;letter-spacing:.5px;padding:2px 4px;font-family:var(--sans);}
.user-link:hover{text-decoration:underline;text-shadow:0 0 7px rgba(var(--gold-rgb),.28);}
.role-badge{font-size:10.5px;letter-spacing:1px;padding:3px 9px;border-radius:12px;font-weight:600;white-space:nowrap;display:inline-block;}
.role-badge.admin{background:linear-gradient(145deg,var(--gold),var(--gold-deep));color:#fff;
  box-shadow:0 0 8px rgba(var(--gold-rgb),.2);}
.role-badge.member{background:var(--jade-soft);color:var(--jade);border:1px solid rgba(224,180,92,.3);}

/* ========== 登录页 ========== */
.login-page{display:flex;align-items:center;justify-content:center;min-height:100vh;padding:30px 18px;}
.login-wrap{position:relative;z-index:1;width:100%;max-width:420px;}
.login-card{
  position:relative;
  background:linear-gradient(180deg, rgba(var(--panel-hi),.9), rgba(var(--panel-lo),.92));
  border:1px solid var(--line);border-radius:20px;
  padding:34px 34px 30px;
  box-shadow:0 26px 64px rgba(0,0,0,.52), 0 0 26px rgba(var(--gold-rgb),.05), inset 0 1px 0 rgba(var(--hi-rgb),.08);
  backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);
}
.login-card::before,.login-card::after{
  content:'';position:absolute;width:15px;height:15px;pointer-events:none;
  border:0 solid rgba(var(--gold-rgb),.55);
}
.login-card::before{top:8px;left:8px;border-top-width:1.5px;border-left-width:1.5px;border-top-left-radius:6px;}
.login-card::after{bottom:8px;right:8px;border-bottom-width:1.5px;border-right-width:1.5px;border-bottom-right-radius:6px;}
.login-brand{display:flex;align-items:center;gap:14px;margin-bottom:26px;}
.login-brand h1{font-family:var(--serif);font-size:19px;font-weight:700;letter-spacing:3px;color:var(--ink);}
.login-brand p{font-size:11.5px;color:var(--ink-faint);letter-spacing:1px;margin-top:4px;}
.login-title{font-family:var(--serif);font-size:17px;font-weight:700;letter-spacing:4px;color:var(--ink);
  margin-bottom:18px;text-align:center;text-shadow:0 0 11px rgba(var(--gold-rgb),.18);}
.login-label{display:block;font-size:12px;color:var(--ink-soft);letter-spacing:1px;margin:14px 0 6px;}
.login-card input{
  width:100%;padding:11px 14px;border:1px solid var(--line);border-radius:10px;
  background:rgba(var(--sf2),.65);font-size:14px;color:var(--ink);outline:none;transition:.2s;
  font-family:var(--sans);
}
.login-card input:focus{border-color:var(--cyan);background:rgba(var(--sf2),.85);
  box-shadow:0 0 0 3px rgba(var(--gold-rgb),.15), 0 0 18px rgba(var(--gold-rgb),.2);}
.login-card input::placeholder{color:var(--ink-faint);opacity:.7;}
.login-err{min-height:20px;font-size:12px;color:#ff7a68;margin-top:10px;letter-spacing:.5px;}
.login-kick{
  margin-top:4px;padding:9px 12px;border-radius:10px;line-height:1.7;
  font-size:12px;color:var(--ink-soft);letter-spacing:.3px;
  background:rgba(var(--gold-rgb),.08);border:1px solid rgba(var(--gold-rgb),.34);
}
.login-kick b{color:var(--gold-hi);font-weight:500;}
.login-btn{width:100%;margin-top:6px;padding:12px;font-size:15px;letter-spacing:4px;}
.login-btn:disabled{opacity:.6;cursor:not-allowed;transform:none;}
.login-tip{font-size:11.5px;color:var(--ink-faint);text-align:center;margin-top:16px;line-height:1.7;letter-spacing:.5px;}
.login-foot{margin-top:22px;text-align:center;font-size:11px;color:var(--ink-faint);line-height:1.8;letter-spacing:.5px;}
.login-foot b{color:#ff7a68;}

/* ========== 联系客服 ========== */
.contact-body{display:flex;gap:26px;align-items:flex-start;flex-wrap:wrap;}
.contact-info{flex:1;min-width:240px;display:flex;flex-direction:column;gap:14px;}
.contact-row{display:flex;align-items:center;gap:12px;flex-wrap:wrap;}
.contact-lab{font-size:12.5px;color:var(--ink-soft);letter-spacing:1px;}
.contact-val{font-family:var(--num);font-size:19px;font-weight:700;color:var(--cyan);letter-spacing:2px;
  text-shadow:0 0 8px rgba(var(--gold-rgb),.22);}
.contact-row .btn-line{padding:5px 14px;font-size:12px;}
.contact-note{font-size:12.5px;color:var(--ink-soft);line-height:1.8;letter-spacing:.5px;background:rgba(var(--glow2),.07);border:1px dashed var(--line);border-radius:10px;padding:10px 14px;}
.contact-qr{display:flex;flex-direction:column;align-items:center;gap:9px;
  padding:12px 12px 10px;border-radius:18px;
  background:linear-gradient(160deg, rgba(var(--gold-rgb),.085), rgba(0,0,0,.20) 72%);
  border:1px solid rgba(var(--gold-rgb),.16);
  box-shadow:inset 0 1px 0 rgba(255,255,255,.05), 0 6px 18px rgba(0,0,0,.28);}
/* 二维码：暖米底 + 暖调滤镜，弱化纯白与深色背景的强烈反差；
   点击/悬停恢复原图（纯白 + 无滤镜），确保扫码所需对比度不受影响 */
.contact-qr img{width:148px;height:148px;object-fit:contain;
  border:1px solid rgba(var(--gold-rgb),.34);border-radius:13px;
  background:#eee4d2;padding:7px;cursor:pointer;
  box-shadow:0 6px 18px rgba(0,0,0,.38), inset 0 0 0 1px rgba(255,255,255,.05);
  filter:sepia(.26) saturate(.86) brightness(.93) contrast(1.06);
  transition:filter .22s ease, background .22s ease, box-shadow .22s ease;}
.contact-qr img:hover,.contact-qr img.qr-clear{
  filter:none;background:#fff;
  box-shadow:0 10px 24px rgba(0,0,0,.46), 0 0 0 1px rgba(var(--gold-rgb),.45);}
.qr-cap{font-size:11.5px;color:var(--ink-faint);letter-spacing:1px;}

/* ========== 系统后台 ========== */
.admin-tabs{position:relative;z-index:1;display:flex;gap:12px;justify-content:center;padding:20px 40px 6px;flex-wrap:wrap;}
.pill-btn{border:1px solid var(--line);cursor:pointer;font-family:var(--sans);}
.pill-btn:hover{border-color:rgba(var(--gold-rgb),.5);color:var(--cyan);box-shadow:0 0 12px rgba(var(--gold-rgb),.14);}
.admin-stats{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:12px;}
.admin-stat{background:rgba(var(--glow2),.07);border:1px solid var(--line-soft);border-radius:14px;padding:16px 18px;display:flex;flex-direction:column;gap:6px;}
.admin-stat .as-num{font-family:var(--num);font-size:26px;font-weight:700;color:var(--ink);letter-spacing:1px;}
.admin-stat .as-lab{font-size:12px;color:var(--ink-faint);letter-spacing:1px;}
.admin-stat.ok .as-num{color:var(--jade);text-shadow:0 0 9px rgba(224,180,92,.22);}
.admin-stat.warn .as-num{color:#ff7a68;text-shadow:0 0 9px rgba(255,106,61,.22);}
.admin-form{display:flex;gap:12px;flex-wrap:wrap;align-items:flex-end;}
.admin-form-col{flex-direction:column;align-items:stretch;max-width:520px;}
.af-field{display:flex;flex-direction:column;gap:6px;min-width:150px;flex:1;}
.af-field label{font-size:12px;color:var(--ink-soft);letter-spacing:1px;}
.af-field input,.af-field select,.af-field textarea{
  padding:9px 12px;border:1px solid var(--line);border-radius:10px;background:rgba(var(--sf2),.65);
  font-size:13.5px;color:var(--ink);outline:none;font-family:var(--sans);transition:.2s;width:100%;
  height:38px;box-sizing:border-box;
}
.af-field input[type=date]{height:38px;line-height:18px;}
.af-field input[type=number]::-webkit-outer-spin-button,
.af-field input[type=number]::-webkit-inner-spin-button{-webkit-appearance:none;margin:0;}
.af-field input[type=number]{-moz-appearance:textfield;appearance:textfield;}
.af-hint{font-size:11px;color:var(--ink-faint);letter-spacing:.5px;margin-left:4px;font-weight:400;}
.af-field input:focus,.af-field select:focus,.af-field textarea:focus{border-color:var(--cyan);background:rgba(var(--sf2),.85);
  box-shadow:0 0 0 3px rgba(var(--gold-rgb),.15);}
.af-field textarea{resize:vertical;}
.admin-form .btn-gold{padding:10px 22px;height:38px;}
.af-actions{margin-top:6px;}
.admin-select{padding:8px 12px;border:1px solid var(--line);border-radius:10px;background:rgba(var(--sf1),.8);font-size:12.5px;color:var(--ink-soft);font-family:var(--sans);outline:none;}
.admin-select:focus{border-color:var(--cyan);}
.admin-select option{background:#1d1409;color:var(--ink);}
.admin-msg{min-height:20px;font-size:12.5px;margin-top:12px;letter-spacing:.5px;}
.admin-msg.ok{color:var(--jade);}
.admin-msg.err{color:#ff7a68;}
.admin-table th{font-size:12px;}
.admin-table td{font-size:12.5px;}
.admin-table th:nth-child(3),.admin-table td:nth-child(3){min-width:80px;}
.admin-table th:nth-child(5),.admin-table td:nth-child(5){min-width:120px;}
.admin-table th:nth-child(6),.admin-table td:nth-child(6){min-width:172px;}
.admin-table th:nth-child(7),.admin-table td:nth-child(7),
.admin-table th:nth-child(8),.admin-table td:nth-child(8){white-space:nowrap;}
.admin-table .uname{font-weight:700;color:var(--ink);font-family:var(--serif);letter-spacing:1px;}
.admin-table .note-cell{max-width:130px;color:var(--ink-faint);}
.admin-table .ua-cell{max-width:180px;color:var(--ink-faint);font-size:11px;word-break:break-all;}
.admin-table .ops-cell{white-space:nowrap;}
.admin-table .ops-cell .btn-line{padding:4px 10px;font-size:11.5px;margin:2px;}
.st-badge{font-size:10.5px;letter-spacing:1px;padding:3px 9px;border-radius:12px;font-weight:600;white-space:nowrap;}
.st-badge.active{background:var(--jade-soft);color:var(--jade);border:1px solid rgba(224,180,92,.3);}
.st-badge.banned{background:rgba(255,106,61,.14);color:#ff8a7a;border:1px solid rgba(255,106,61,.3);}
.st-badge.expired{background:rgba(var(--gold-rgb),.13);color:var(--gold);border:1px solid rgba(var(--gold-rgb),.3);}
.st-badge.pending{background:rgba(var(--gold-rgb),.13);color:var(--cyan);border:1px solid rgba(var(--gold-rgb),.3);}
.ban-reason{font-size:11px;color:#ff8a7a;margin-top:3px;}
/* 到期时间列 */
.exp-none{font-size:11.5px;color:var(--ink-faint);}
.exp-ok{font-size:11.5px;color:var(--jade);white-space:nowrap;}
.exp-warn{font-size:11.5px;color:var(--gold);white-space:nowrap;font-weight:600;}
.exp-bad{font-size:11.5px;color:#ff7a68;white-space:nowrap;font-weight:600;}
.exp-date{display:block;font-size:10.5px;color:var(--ink-faint);margin-top:2px;letter-spacing:.5px;}
.exp-edit{display:flex;align-items:center;gap:5px;flex-wrap:nowrap;}
.exp-inline-input{width:58px;height:26px;padding:2px 7px;border:1px solid var(--cyan);border-radius:7px;
  font-size:12px;outline:none;font-family:var(--sans);box-sizing:border-box;background:rgba(var(--sf2),.8);
  color:var(--ink);flex:0 0 auto;text-align:center;}
.exp-inline-input::-webkit-outer-spin-button,.exp-inline-input::-webkit-inner-spin-button{-webkit-appearance:none;margin:0;}
.exp-edit .btn-line{padding:3px 10px;font-size:11px;border-radius:7px;height:26px;box-sizing:border-box;
  white-space:nowrap;flex:0 0 auto;margin:0;}
.exp-edit .btn-line.ok{border-color:var(--cyan);color:var(--cyan);font-weight:600;}
.btn-line.warn{border-color:rgba(255,106,61,.42);color:#ff8a7a;}
.btn-line.warn:hover{background:rgba(255,106,61,.12);border-color:#ff7a68;box-shadow:0 0 12px rgba(255,106,61,.18);}
.btn-line.danger{border-color:rgba(255,106,61,.58);color:#ff7a68;}
.btn-line.danger:hover{background:rgba(255,106,61,.16);border-color:#ff7a68;box-shadow:0 0 12px rgba(255,106,61,.22);}
.qr-upload{display:flex;gap:16px;align-items:flex-start;flex-wrap:wrap;}
.qr-upload input[type=file]{font-size:12.5px;color:var(--ink-soft);font-family:var(--sans);}
.qr-preview{display:flex;flex-direction:column;align-items:center;gap:6px;}
.qr-preview img{width:120px;height:120px;object-fit:contain;border:1px solid rgba(var(--gold-rgb),.3);border-radius:10px;background:#fff;padding:5px;
  box-shadow:0 0 12px rgba(var(--gold-rgb),.09);}
.qr-tip{font-size:11px;color:var(--ink-faint);letter-spacing:.5px;}
.qr-actions{display:flex;gap:8px;}

/* 顶栏窄屏：整块下移到第二行（高度固定，不随彩种内容宽度变化） */
@media (max-width:1200px){
  .topbar{flex-wrap:wrap;}
  .topbar-right{width:100%;}
  /* 顶栏换行后高度翻倍，吸顶时隐去品牌区，只留彩种 + 最新开奖 */
  body.top-compact .brand{display:none;}
}
/* 更窄：状态小字让位（7 号位彩种最宽），避免整行被迫换行 */
@media (max-width:900px){
  .td-status{display:none;}
}
@media (max-width:760px){
  .td-label{display:none;}
  .td-ball{width:18px;height:18px;font-size:10px;}
  /* 窄屏吸顶后进一步瘦身：只留印章 + 彩种 + 最新开奖 */
  body.top-compact .brand-text{display:none;}
  body.top-compact .brand{gap:0;}
}
/* 窄屏（放不下「标题 + 推荐行」单行）时退回上下两行，标题左对齐 */
@media (max-width:1160px){
  .hero{grid-template-columns:1fr;row-gap:10px;}
  .hero .panel-head{grid-column:1;grid-row:1;justify-self:start;}
  .hero-body{grid-column:1;grid-row:2;justify-content:center;}
}

@media (max-width:640px){
  .topbar,.container,.admin-tabs{padding-left:18px;padding-right:18px;}
  .hero{grid-template-columns:1fr;row-gap:12px;padding:15px 20px 22px;}
  .hero .panel-head{grid-column:1;grid-row:1;justify-self:start;}
  .hero-body{grid-column:1;grid-row:2;flex-direction:column;gap:14px;flex-wrap:wrap;}
  .hero-issue,.hero-next{transform:none;text-align:center;}
  .hero-balls{padding-bottom:16px;flex-wrap:wrap;}
  .ball{width:34px;height:34px;font-size:17px;}
  .tab{font-size:13px;padding:7px 14px;}
  .posrank-grid{grid-template-columns:1fr;}
  .brand-text h1{font-size:19px;}
  .login-card{padding:26px 22px;}
  .user-box{padding:4px 10px 4px 8px;gap:7px;}
  .contact-qr img{width:128px;height:128px;}
}

/* 推荐栏期望说明：低对比、单行折行，不抢推荐卡视觉 */
/* 模型说明：做成「方法论文档」的观感——细金线 + 术语高亮，而不是一坨灰字 */
.reco-note{
  margin:14px 0 0;padding:13px 18px 13px 18px;
  font-size:12px;line-height:1.95;color:rgba(214,199,180,.94);letter-spacing:.25px;
  border:1px solid var(--line-soft);border-left:2px solid rgba(var(--gold-rgb),.55);
  border-radius:4px 10px 10px 4px;
  background:linear-gradient(90deg,rgba(var(--gold-rgb),.055),rgba(var(--panel-hi),.30) 42%,rgba(var(--panel-lo),.24));
}
.reco-note b{color:var(--gold-hi);font-weight:600;letter-spacing:.5px;
  text-shadow:0 0 12px rgba(var(--gold-rgb),.22);}
@media (max-width:640px){
  .reco-note{padding:11px 12px;font-size:11px;line-height:1.85;letter-spacing:.15px;}
}

/* ===== 监控呼吸指示（动态「监控中」提示） =====
   有监控项：金色圆点 + 双层扩散光环（错峰 1s）+ 文字微光，2 秒一轮循环呼吸
   无监控项：静止暗点，文字「监控暂停」 */
.ml-dot{position:relative;display:inline-block;width:8px;height:8px;border-radius:50%;
  background:#6b5c45;flex:0 0 auto;vertical-align:middle;}
.ml-dot::before,.ml-dot::after{content:'';position:absolute;inset:-4px;border-radius:50%;
  border:1px solid rgba(var(--gold-rgb),0);pointer-events:none;}
.ml-dot.on,.mon-live.on .ml-dot{background:var(--gold);box-shadow:0 0 9px rgba(var(--gold-rgb),.85);}
.ml-dot.on::before,.mon-live.on .ml-dot::before{border-color:rgba(var(--gold-rgb),.55);animation:mlBreath 2s ease-out infinite;}
.ml-dot.on::after,.mon-live.on .ml-dot::after{border-color:rgba(var(--gold-rgb),.38);animation:mlBreath 2s ease-out infinite;animation-delay:1s;}
@keyframes mlBreath{
  0%{transform:scale(.55);opacity:.9;}
  70%{transform:scale(2.2);opacity:0;}
  100%{transform:scale(2.2);opacity:0;}
}
/* 运行状态徽标（参照 8794：SVG 圆环 + ringFill 描边扫描转圈） */
.mon-live{display:inline-flex;align-items:center;gap:14px;flex:0 0 auto;white-space:nowrap;}
.ml-ring{position:relative;width:46px;height:46px;border-radius:50%;flex:0 0 auto;
  display:flex;align-items:center;justify-content:center;
  background:radial-gradient(circle at 50% 50%, #241a0d 0%, #150e06 100%);}
.ml-ring-svg{position:absolute;inset:0;width:100%;height:100%;transform:rotate(-90deg);}
.ml-ring-track{fill:none;stroke:#5a4a34;stroke-width:3;}
.ml-ring-arc{fill:none;stroke:#8a7a5c;stroke-width:3;stroke-linecap:round;
  stroke-dasharray:150.8;stroke-dashoffset:150.8;}
.ml-ring-core{position:absolute;inset:8px;border-radius:50%;
  background:radial-gradient(circle at 50% 45%, #2a1f10 0%, #140d05 100%);
  box-shadow:inset 0 0 8px rgba(0,0,0,.65);}
/* 圆心状态指示：核心光点 + 内圈雷达波纹
   原来用播放三角，视觉上像「可点击的播放/停止按钮」，改为无控件语义的脉冲点 */
/* 不裁切：核心点外发光需要溢出到环内 */
.ml-ping{position:absolute;left:50%;top:50%;width:100%;height:100%;border-radius:50%;
  border:1.5px solid rgba(var(--gold-rgb),.55);
  transform:translate(-50%,-50%) scale(.24);opacity:0;}
.mon-live.on .ml-ping{animation:mlPing 3.2s ease-out infinite;}
.ml-core-dot{position:absolute;left:50%;top:50%;width:8px;height:8px;border-radius:50%;
  transform:translate(-50%,-50%);background:#6b5c44;z-index:1;
  transition:background .3s ease, box-shadow .3s ease;}
.mon-live.on .ml-core-dot{background:var(--gold);
  box-shadow:0 0 7px rgba(var(--gold-rgb),.85), 0 0 14px rgba(var(--gold-rgb),.35);
  animation:mlCoreBreath 2.4s ease-in-out infinite;}
@keyframes mlPing{
  0%{transform:translate(-50%,-50%) scale(.24);opacity:0;}
  18%{opacity:.85;}
  100%{transform:translate(-50%,-50%) scale(.94);opacity:0;}
}
@keyframes mlCoreBreath{
  0%,100%{opacity:.82;transform:translate(-50%,-50%) scale(1);}
  50%{opacity:1;transform:translate(-50%,-50%) scale(1.12);}
}
.ml-ring::before{content:'';position:absolute;inset:-3px;border-radius:50%;
  border:1px solid rgba(var(--gold-rgb),0);pointer-events:none;}
.mon-live.on .ml-ring{
  box-shadow:0 0 10px rgba(var(--gold-rgb),.2);
  animation:mlRingGlow 2.4s ease-in-out infinite;}
.mon-live.on .ml-ring::before{border-color:rgba(var(--gold-rgb),.4);
  animation:mlPulse 2.4s ease-out infinite;}
/* 圆环自身外发光呼吸 */
@keyframes mlRingGlow{
  0%,100%{box-shadow:0 0 8px rgba(var(--gold-rgb),.18);}
  50%{box-shadow:0 0 20px rgba(var(--gold-rgb),.46);}
}
/* 贴边细脉冲：最大扩散约 1.4 倍环径，淡出一圈即止，不抢圆环视觉 */
@keyframes mlPulse{
  0%{transform:scale(.85);opacity:.5;}
  70%{transform:scale(1.4);opacity:0;}
  100%{transform:scale(1.4);opacity:0;}
}
/* 运行中：金色弧线绕圈扫描（dashoffset 150.8→0，2s 线性循环，同 8794） */
.mon-live.on .ml-ring-arc{stroke:var(--gold);
  filter:drop-shadow(0 0 4px rgba(var(--gold-rgb),.7));
  animation:mlRingFill 2s linear infinite;}
@keyframes mlRingFill{
  0%{stroke-dashoffset:150.8;}
  100%{stroke-dashoffset:0;}
}
.ml-body{display:flex;flex-direction:column;align-items:flex-start;gap:1px;min-width:0;}
.ml-txt{font-size:17px;font-weight:700;letter-spacing:2px;color:#8a7a5c;line-height:1.3;}
.mon-live.on .ml-txt{color:var(--gold);text-shadow:0 0 10px rgba(var(--gold-rgb),.5);}
.ml-sub{font-style:normal;font-size:12px;letter-spacing:.5px;color:var(--ink-faint);line-height:1.4;}
.mon-live.on .ml-sub{color:#c2a277;}
.ml-ell{display:none;gap:5px;margin-top:4px;}
.mon-live.on .ml-ell{display:inline-flex;}
.ml-ell i{width:6px;height:6px;border-radius:50%;background:var(--gold);opacity:.25;
  animation:mlBlink 1.4s ease-in-out infinite;}
.ml-ell i:nth-child(2){animation-delay:.2s;}
.ml-ell i:nth-child(3){animation-delay:.4s;}
@keyframes mlBlink{
  0%,100%{opacity:.22;transform:scale(.85);}
  50%{opacity:1;transform:scale(1);}
}
.mon-list-head .ml-dot{margin-right:7px;}
@media (prefers-reduced-motion:reduce){
  .ml-dot.on::before,.ml-dot.on::after,.mon-live.on .ml-txt,
  .mon-live.on .ml-ring,.mon-live.on .ml-ring::before,.mon-live.on .ml-ring-arc,.ml-ell i,
  .mon-live.on .ml-ping,.mon-live.on .ml-core-dot{animation:none;}
  .ml-ping{opacity:0;}
  .mon-live.on .ml-ring-arc{stroke-dashoffset:0;}
}

/* ===== 推荐号码 · 历史推荐记录（独立面板，固定最近 300 期） ===== */
.reco-hist-wrap{max-height:560px;}
/* 固定列宽，避免推荐号码列被期号/命中列挤占换行 */
.reco-hist-table{table-layout:fixed;}
.reco-hist-table th,.reco-hist-table td{padding:9px 14px;}
.reco-hist-table .col-time{width:14%;}
.reco-hist-table .col-issue{width:16%;}
.reco-hist-table .col-rec{width:30%;}
.reco-hist-table .col-code{width:28%;}
.reco-hist-table .col-hit{width:12%;}
.reco-hist-table td{white-space:nowrap;}
/* 斑马纹提升长表可读性 */
.reco-hist-table tbody tr:nth-child(even){background:rgba(var(--glow2),.04);}
.reco-hist-table tbody tr:nth-child(even):hover{background:rgba(var(--glow2),.09);}
.hist-issue{font-family:var(--num);color:var(--ink-soft);letter-spacing:.5px;white-space:nowrap;}
/* 表格内小球：推荐=实心金球，开奖=描边数字 */
.hist-balls{display:inline-flex;align-items:center;gap:6px;vertical-align:middle;}
.hb{width:24px;height:24px;border-radius:50%;display:inline-flex;align-items:center;justify-content:center;
  font-family:var(--num);font-size:13px;font-weight:700;color:#2a1607;line-height:1;flex:0 0 auto;
  text-shadow:0 1px 0 rgba(255,255,255,.28);}
.hist-balls.rec .hb{background:radial-gradient(circle at 30% 24%, var(--bh,#ffe8b8) 0%, var(--ba,#f5b942) 30%, var(--bb,#8a5a16) 100%);
  box-shadow:0 0 0 1px rgba(var(--bgw,245,185,66),.18), 0 1px 4px rgba(0,0,0,.34),
             inset 0 -2px 3px rgba(0,0,0,.24), inset 0 1px 2px rgba(255,255,255,.3);}
.hist-balls.draw .hb{background:rgba(var(--bgw,230,150,60),.12);border:1px solid rgba(var(--bgw,245,185,66),.42);
  color:var(--ba,var(--cyan));font-weight:600;transition:all .16s ease;}
/* 逐位相同：推荐/开奖两列同时点亮，一眼看出哪一位命中 */
.hist-balls .hb.same{box-shadow:0 0 0 2px rgba(var(--bgw,245,185,66),.72), 0 0 10px rgba(var(--bgw,245,185,66),.38);}
.hist-balls.draw .hb.same{background:radial-gradient(circle at 30% 24%, var(--bh,#ffe8b8) 0%, var(--ba,#f5b942) 30%, var(--bb,#8a5a16) 100%);color:#2a1607;
  border-color:transparent;font-weight:700;text-shadow:0 1px 0 rgba(255,255,255,.3);}
.hist-wait{font-size:12.5px;color:var(--ink-faint);}
.hist-hit{font-family:var(--num);font-weight:700;letter-spacing:.5px;white-space:nowrap;}
.hist-hit.good{color:var(--gold);text-shadow:0 0 8px rgba(var(--gold-rgb),.4);}
.hist-hit.mid{color:#c2a277;}
.hist-hit.low{color:var(--ink-faint);}
.hist-hit.wait{color:var(--ink-faint);font-weight:400;font-family:var(--sans);}

/* ===== 概率推荐 · 历史推荐记录（每位 3 个候选，随新一期自动滚动） ===== */
.prob-hist{margin-top:16px;}
.prob-hist-head{
  display:flex;align-items:baseline;justify-content:space-between;gap:10px;
  margin-bottom:8px;padding-top:13px;border-top:1px solid rgba(var(--glow2),.16);
}
.ph-title{font-family:var(--serif);font-size:13px;color:var(--ink-soft);letter-spacing:1.6px;}
.prob-hist-head em{font-style:normal;font-size:11.5px;color:var(--ink-faint);letter-spacing:.3px;text-align:right;}
.prob-hist-wrap{max-height:420px;}
.prob-hist-table{table-layout:fixed;}
.prob-hist-table th,.prob-hist-table td{padding:8px 12px;}
.prob-hist-table .col-time{width:13%;}
.prob-hist-table .col-issue{width:13%;}
.prob-hist-table .col-rec{width:42%;}
.prob-hist-table .col-code{width:22%;}
.prob-hist-table .col-hit{width:10%;}
.prob-hist-table td{white-space:nowrap;text-align:center;}
.prob-hist-table tbody tr:nth-child(even){background:rgba(var(--glow2),.04);}
.prob-hist-table tbody tr:nth-child(even):hover{background:rgba(var(--glow2),.09);}

/* 开奖时间列：日期在上、时刻在下，置于期号之前 */
.hist-time{display:flex;flex-direction:column;align-items:center;justify-content:center;
  line-height:1.25;gap:1px;}
.hist-time .ht-date{font-size:12px;color:var(--ink-soft);font-variant-numeric:tabular-nums;}
.hist-time .ht-clock{font-size:10.5px;color:var(--ink-faint);font-variant-numeric:tabular-nums;}

/* 概率推荐：每位候选个数切换（3/4/5 档，宽值域号位自动 +1） */
.k-switch{display:inline-flex;align-items:center;gap:6px;
  background:rgba(var(--bgw,230,150,60),.10);border:1px solid var(--line-soft);
  border-radius:999px;padding:3px 7px;align-self:flex-end;}
/* 号码池彩种（六合彩）无「号位」概念，每位候选 3/4/5 开关隐藏 */
.k-switch.is-hidden{display:none !important;}
.ks-label{font-size:11.5px;color:var(--ink-faint);margin-right:2px;letter-spacing:.5px;white-space:nowrap;}
.ks-btn{appearance:none;border:1px solid transparent;background:transparent;cursor:pointer;
  min-width:24px;height:24px;padding:0 8px;border-radius:999px;font-size:13px;font-weight:600;
  color:var(--ink-soft);transition:all .15s ease;font-variant-numeric:tabular-nums;}
.ks-btn:hover{background:rgba(var(--bgw,230,150,60),.18);}
.ks-btn.active{background:rgb(var(--bgw,245,185,66));color:#3a2400;
  border-color:rgba(var(--bgw,245,185,66),.7);box-shadow:0 0 0 1px rgba(var(--bgw,245,185,66),.35);}

/* 命中率与注数成本（随 k 切换实时更新） */
.reco-meta{margin:10px 2px 0;font-size:12.5px;color:var(--ink-soft);letter-spacing:.3px;
  background:rgba(var(--bgw,230,150,60),.08);border:1px solid var(--line-soft);
  border-radius:10px;padding:8px 12px;line-height:1.6;}
.reco-meta b{color:rgb(var(--bgw,245,185,66));font-weight:700;font-variant-numeric:tabular-nums;}
/* 每位一组胶囊；容器带 pcN → 组内球色随号位变化；命中组整体点亮 */
.prob-groups{display:inline-flex;align-items:center;gap:9px;flex-wrap:wrap;vertical-align:middle;}
.prob-grp{display:inline-flex;align-items:center;gap:2px;padding:2px 5px;border-radius:11px;
  background:rgba(var(--bgw,230,150,60),.11);transition:all .16s ease;}
/* 6~7 位彩种：号码多，缩一档避免换行 */
.prob-groups.dense{gap:6px;}
.prob-groups.dense .prob-grp{padding:2px 3px;gap:1px;}
.prob-groups.dense .hb{width:17px;height:17px;font-size:10.5px;}
/* 号码池（六合彩）：单组 14 个号，允许换行防止撑破单元格 */
.prob-groups .prob-grp{flex-wrap:wrap;}
/* 历史推荐记录的池列：14 个球每行 7 个（7+7，与开奖号排布一致） */
.hist-balls.rec.pool{flex-wrap:wrap;gap:4px;max-width:200px;}
.hist-balls.rec.pool .hb{width:24px;height:24px;font-size:12px;}
.prob-grp.on{background:rgba(var(--bgw,245,185,66),.20);
  box-shadow:0 0 0 1px rgba(var(--bgw,245,185,66),.55), 0 0 10px rgba(var(--bgw,245,185,66),.18);}
.prob-grp .hb{width:20px;height:20px;font-size:11.5px;
  background:radial-gradient(circle at 30% 24%, var(--bh,#ffe8b8) 0%, var(--ba,#f5b942) 30%, var(--bb,#8a5a16) 100%);
  box-shadow:0 0 0 1px rgba(var(--bgw,245,185,66),.16), 0 1px 4px rgba(0,0,0,.32),
             inset 0 -2px 3px rgba(0,0,0,.22), inset 0 1px 2px rgba(255,255,255,.3);
  text-shadow:0 1px 0 rgba(255,255,255,.3);}
.prob-grp.on .hb{box-shadow:0 0 0 1px rgba(var(--bgw,245,185,66),.5), 0 0 9px rgba(var(--bgw,245,185,66),.5),
             inset 0 -2px 3px rgba(0,0,0,.22), inset 0 1px 2px rgba(255,255,255,.34);}
/* 号码池口径（六合彩）：候选组内落在开奖号里的球逐个点亮（替代整组点亮） */
.prob-grp .hb.same{background:radial-gradient(circle at 30% 24%, var(--bh,#ffe8b8) 0%, var(--ba,#f5b942) 30%, var(--bb,#8a5a16) 100%);
  color:#2a1607;box-shadow:0 0 0 1px rgba(var(--bgw,245,185,66),.5), 0 0 9px rgba(var(--bgw,245,185,66),.5);}

/* ===== 彩种主题：切换彩种时整套画布 + 强调色 + 表面中性色一起换 =====
   之前只改 --gold 等文字色，面板/背景仍是暖褐色，切到蓝/紫/绿/红只显得"字变了"。
   现在每个彩种给出：强调色 + 画布底色(--bg/--bg-2) + 四级表面(--sf1~--sf4)
   + 面板渐变两端(--panel-hi/--panel-lo) + 第二光斑(--glow2) + 高光描边(--hi-rgb)，
   亮度保持一致，只换色相 → 整屏换调但不刺眼。 */
body[data-lot="fc3d"]{
  --gold:#f5b942; --gold-rgb:245,185,66; --gold-hi:#ffe8b8; --gold-deep:#b56a1c;
  --cyan:#f5b942; --cyan-deep:#8a5a16;
  --line:rgba(233,183,105,.18); --line-soft:rgba(233,183,105,.10);
  --bg:#0b0806; --bg-2:#140d07;
  --sf1:38,26,15; --sf3:32,21,11; --sf4:20,13,7; --sf2:12,8,4;
  --panel-hi:40,27,14; --panel-lo:26,17,10;
  --glow2:230,150,60; --hi-rgb:255,232,184;
}
body[data-lot="pl5"]{
  --gold:#5ba7e8; --gold-rgb:91,167,232; --gold-hi:#d9ecff; --gold-deep:#2c6a9e;
  --cyan:#5ba7e8; --cyan-deep:#2c6a9e;
  --line:rgba(118,172,230,.20); --line-soft:rgba(118,172,230,.10);
  /* 深海蓝画布 */
  --bg:#060a11; --bg-2:#0b131d;
  --sf1:22,30,41; --sf3:19,26,36; --sf4:11,16,24; --sf2:7,10,16;
  --panel-hi:25,34,46; --panel-lo:15,22,31;
  --glow2:86,140,214; --hi-rgb:217,236,255;
  --a2:74,196,209; --a3:123,142,232;
}
body[data-lot="qxc"]{
  --gold:#a98be8; --gold-rgb:169,139,232; --gold-hi:#e8ddff; --gold-deep:#63479f;
  --cyan:#a98be8; --cyan-deep:#63479f;
  --line:rgba(163,138,225,.20); --line-soft:rgba(163,138,225,.10);
  /* 夜紫画布 */
  --bg:#08070f; --bg-2:#0e0c17;
  --sf1:28,24,41; --sf3:24,20,35; --sf4:14,12,23; --sf2:9,7,15;
  --panel-hi:31,27,47; --panel-lo:19,16,29;
  --glow2:150,120,220; --hi-rgb:232,221,255;
  --a2:201,122,224; --a3:127,140,232;
}
body[data-lot="xy5"]{
  --gold:#4fc3a1; --gold-rgb:79,195,161; --gold-hi:#d4f4e9; --gold-deep:#2a7660;
  --cyan:#4fc3a1; --cyan-deep:#2a7660;
  --line:rgba(92,195,168,.20); --line-soft:rgba(92,195,168,.10);
  /* 墨绿画布 */
  --bg:#050c0a; --bg-2:#08130f;
  --sf1:19,34,30; --sf3:16,29,26; --sf4:9,18,16; --sf2:6,11,10;
  --panel-hi:22,39,34; --panel-lo:12,22,19;
  --glow2:60,192,179; --hi-rgb:212,244,233;
  --a2:74,196,199; --a3:90,169,224;
}
body[data-lot="lhc"]{
  --gold:#e8604f; --gold-rgb:232,96,79; --gold-hi:#ffd9d2; --gold-deep:#9c2f22;
  --cyan:#e8604f; --cyan-deep:#9c2f22;
  --line:rgba(232,110,90,.20); --line-soft:rgba(232,110,90,.10);
  /* 绛红画布 */
  --bg:#0b0605; --bg-2:#150c0a;
  --sf1:38,24,21; --sf3:32,20,18; --sf4:20,12,11; --sf2:12,7,6;
  --panel-hi:42,26,23; --panel-lo:26,16,14;
  --glow2:214,92,74; --hi-rgb:255,217,210;
  --a2:232,138,63; --a3:232,86,127;
}
/* 六合彩号码 01-49 两位显示：顶栏开奖球加宽防挤爆 */
body[data-lot="lhc"] .td-ball{width:27px;font-size:10.5px;}
body[data-lot="lhc"] .ball{width:44px;font-size:16px;}
/* 六合彩 hero 球色 = 波色（与号码池卡片同规则，避免同一号码两处颜色不同） */
body[data-lot="lhc"] .hero-balls .ball.wr{background:radial-gradient(circle at 32% 28%,#ff9a7a,#d8442a);}
body[data-lot="lhc"] .hero-balls .ball.wg{background:radial-gradient(circle at 32% 28%,#a5e6bd,#3fa169);color:#0d2417;}
body[data-lot="lhc"] .hero-balls .ball.wb{background:radial-gradient(circle at 32% 28%,#9cc6f5,#3f7fd0);color:#0d1d30;}
body[data-lot="lhc"] .hero-balls .ball.wn{background:radial-gradient(circle at 32% 28%,#e0cfb0,#a08a5c);color:#2a1607;}
/* 切换时颜色平滑过渡（渐变不参与过渡，仅文字/边框/阴影） */
.tab,.btn-gold,.btn-line,.range-btn,.ml-txt,.user-link{transition:color .35s ease,border-color .35s ease,box-shadow .35s ease;}

/* ============================================================
   六合彩结构分析（波色 / 生肖 / 头尾）
   49 号域才有这些分组口径，其他彩种该面板整体隐藏
   ============================================================ */
.grp-wave{display:grid;grid-template-columns:repeat(3,1fr);gap:14px;margin:4px 0 22px;}
.grp-card{
  position:relative;border:1px solid var(--line);border-radius:14px;padding:14px 16px 12px;
  background:linear-gradient(160deg,rgba(var(--panel-hi),.72),rgba(var(--panel-lo),.86));
  box-shadow:var(--shadow-sm);
}
.grp-card .gc-head{display:flex;align-items:center;gap:8px;margin-bottom:10px;}
.grp-card .gc-dot{width:11px;height:11px;border-radius:50%;box-shadow:0 0 10px currentColor;}
.grp-card .gc-name{font-size:15px;font-weight:700;color:var(--ink);letter-spacing:1px;}
.grp-card .gc-size{font-size:11.5px;color:var(--ink-faint);}
.grp-card .gc-z{margin-left:auto;font-family:var(--num);font-size:12.5px;font-weight:700;
  padding:2px 8px;border-radius:10px;border:1px solid var(--line-soft);}
.grp-card .gc-z.up{color:#ff8b7a;background:rgba(255,95,82,.10);border-color:rgba(255,95,82,.28);}
.grp-card .gc-z.down{color:#7fd3c4;background:rgba(60,192,179,.10);border-color:rgba(60,192,179,.26);}
.grp-card .gc-z.flat{color:var(--ink-faint);}
.grp-card .gc-main{display:flex;align-items:baseline;gap:8px;margin-bottom:6px;}
.grp-card .gc-val{font-family:var(--num);font-size:22px;font-weight:700;color:var(--gold-hi);line-height:1;}
.grp-card .gc-sub{font-size:11.5px;color:var(--ink-faint);}
.grp-card .gc-bar{position:relative;height:6px;border-radius:4px;background:rgba(255,255,255,.06);overflow:hidden;}
.grp-card .gc-bar i{position:absolute;left:0;top:0;bottom:0;border-radius:4px;
  background:linear-gradient(90deg,var(--gold-deep),var(--gold));}
.grp-card .gc-fair{position:absolute;top:-3px;bottom:-3px;width:1.5px;background:rgba(255,255,255,.45);}
.grp-card .gc-nums{margin-top:9px;font-size:11px;color:var(--ink-faint);letter-spacing:.4px;line-height:1.7;}

.grp-sub{font-size:12.5px;color:var(--ink-soft);letter-spacing:.6px;margin:0 0 10px;}
.grp-sub em{font-style:normal;color:var(--ink-faint);font-size:11.5px;margin-left:6px;}
.grp-zodiac{display:grid;grid-template-columns:repeat(4,1fr);gap:10px;margin-bottom:18px;}
.zitem{border:1px solid var(--line-soft);border-radius:10px;padding:9px 11px;
  background:rgba(var(--sf3),.55);}
.zitem.cur{border-color:rgba(var(--gold-rgb),.42);background:rgba(var(--gold-rgb),.08);}
.zitem .zn{display:flex;align-items:baseline;gap:6px;margin-bottom:5px;}
.zitem .zn b{font-size:13.5px;color:var(--ink);letter-spacing:1px;}
.zitem .zn em{font-style:normal;font-size:11px;color:var(--ink-faint);font-family:var(--num);}
.zitem .zn span{margin-left:auto;font-family:var(--num);font-size:11.5px;}
.zitem .zn span.up{color:#ff8b7a;}
.zitem .zn span.down{color:#7fd3c4;}
.zitem .znums{display:flex;flex-wrap:wrap;gap:3px;}
.zitem .znums b{font-family:var(--num);font-size:10.5px;font-weight:600;color:var(--ink-soft);
  padding:1px 4px;border-radius:4px;background:rgba(255,255,255,.05);}

.grp-mini{display:grid;grid-template-columns:1fr 1fr;gap:14px;margin-bottom:16px;}
.gmini{display:flex;flex-wrap:wrap;gap:6px;align-items:center;}
.gmini .gm-tag{font-size:11.5px;color:var(--ink-faint);letter-spacing:.6px;margin-right:2px;}
.gmini .gm{border:1px solid var(--line-soft);border-radius:8px;padding:3px 8px;font-size:11.5px;
  color:var(--ink-soft);font-family:var(--num);}
.gmini .gm.up{border-color:rgba(255,95,82,.28);color:#ff9a8b;}
.gmini .gm.down{border-color:rgba(60,192,179,.26);color:#7fd3c4;}

.grp-note{font-size:11.5px;line-height:1.9;color:var(--ink-faint);letter-spacing:.35px;
  border-top:1px dashed var(--line-soft);padding-top:12px;}
.grp-note b{color:var(--gold-hi);}

@media (max-width:900px){
  .grp-wave{grid-template-columns:1fr;}
  .grp-zodiac{grid-template-columns:repeat(2,1fr);}
  .grp-mini{grid-template-columns:1fr;}
}

/* ============================================================
   响应式适配（mob1028）
   1) 宽屏 ≥1560：内容区放宽，消除两侧大片留白
   2) 平板 ≤1080 / 手机 ≤768 / 小屏 ≤400：降级为单列流式
   ============================================================ */

/* ---------- 宽屏：铺满可视区域 ---------- */
@media (min-width:1560px){
  .container{max-width:1660px;padding-left:34px;padding-right:34px;}
  .posrank-grid .pr-bar,.posrank-grid .pr-th-bar{max-width:150px;}
  .posrank-grid.cols3 .pr-bar,.posrank-grid.cols3 .pr-th-bar{max-width:190px;}
}
@media (min-width:2000px){
  .container{max-width:1900px;}
  .posrank-grid .pr-bar,.posrank-grid .pr-th-bar{max-width:180px;}
  .posrank-grid.cols3 .pr-bar,.posrank-grid.cols3 .pr-th-bar{max-width:220px;}
}

/* ---------- 平板（≤1080）：收紧间距，监控卡降为两列 ---------- */
@media (max-width:1080px){
  .topbar{padding:16px 22px;}
  body.top-compact .topbar{padding:9px 22px;}
  .container{padding:18px 22px 52px;}
  .panel{padding:22px 20px;}
  .mon-list{grid-template-columns:repeat(auto-fit,minmax(min(320px,100%),1fr));}
  /* 中等宽度：表头与监控卡头部允许换行，避免尾部文字被裁 */
  .posrank-grid.cols3 .pr-thead{font-size:9.5px;letter-spacing:0;column-gap:12px;}
  .mon-item{min-width:0;}
  .mon-item-top{flex-wrap:wrap;row-gap:6px;}
  .mon-item .mon-item-note{max-width:120px;}
}

/* ---------- 窄平板（≤980）：号码榜降为两列，避免右侧「遗漏/连出」被裁 ---------- */
@media (max-width:980px){
  .posrank-grid,.posrank-grid.cols3,.posrank-grid.cols4,
  .posrank-grid.cols5,.posrank-grid.cols6,.posrank-grid.cols7{
    grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;}
  .posrank-grid .pr-thead,.posrank-grid .pr-list li{column-gap:10px;}
  .posrank-grid.cols3 .pr-thead,.posrank-grid.cols3 .pr-list li{column-gap:10px;justify-content:space-between;}
}

/* ---------- 手机（≤768）：单列流式 ---------- */
@media (max-width:768px){
  html{scroll-padding-top:104px;}

  /* 顶栏：品牌一行 + 彩种横滑 + 状态换行 */
  .topbar{flex-direction:column;align-items:stretch;gap:9px;
    padding:calc(11px + env(safe-area-inset-top,0px)) 14px 11px;}
  .brand{gap:10px;}
  .seal{width:38px;height:38px;font-size:19px;border-radius:10px;letter-spacing:1px;}
  .brand-text h1{font-size:16px;letter-spacing:1.5px;}
  .subtitle{font-size:10.5px;letter-spacing:.5px;margin-top:2px;
    white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
  .topbar-right{align-items:stretch;gap:7px;width:100%;}
  .lottery-tabs{flex-wrap:nowrap;justify-content:flex-start;overflow-x:auto;
    padding-bottom:2px;-webkit-overflow-scrolling:touch;scrollbar-width:none;}
  .lottery-tabs::-webkit-scrollbar{display:none;}
  .tab{flex:0 0 auto;padding:6px 13px;font-size:12.5px;letter-spacing:1px;}
  .topbar-meta{flex-wrap:wrap;justify-content:flex-start;gap:6px;}
  .top-draw{flex:1 1 auto;min-width:0;padding:4px 9px;}
  .td-label{font-size:10px;letter-spacing:0;}
  .td-issue{font-size:11px;}
  .td-issue b{font-size:12.5px;}
  .pill{font-size:10.5px;padding:4px 8px;}
  .user-box{padding:4px 9px 4px 7px;gap:6px;}
  .user-name{font-size:12px;}
  body.top-compact .topbar{padding:7px 14px;gap:6px;}
  body.top-compact .brand{display:none;}
  body.top-compact .topbar-right{gap:6px;}
  body.top-compact .tab{padding:5px 11px;font-size:12px;}
  body.top-compact .top-draw{padding:3px 8px;}

  /* 内容与面板 */
  .container{padding:11px 11px calc(40px + env(safe-area-inset-bottom,0px));}
  .panel{padding:15px 12px;border-radius:15px;margin-bottom:12px;}
  .panel-head{gap:6px;margin-bottom:12px;align-items:flex-start;}
  .section-title{font-size:16px;letter-spacing:1.5px;padding-left:11px;}
  .section-title::before{width:3px;height:17px;}
  .section-title small{display:block;margin:3px 0 0;font-size:10.5px;letter-spacing:0;opacity:.85;}
  .panel-head-right{width:100%;align-items:flex-start;gap:6px;}
  .panel-head-right>.muted,.head-right>.muted{display:none;}
  .panel-head>.muted{font-size:10.5px;line-height:1.6;}
  .head-right{width:100%;justify-content:flex-start;gap:7px;}
  .range-seg{max-width:100%;overflow-x:auto;scrollbar-width:none;}
  .range-seg::-webkit-scrollbar{display:none;}
  .range-btn{padding:5px 10px;font-size:11.5px;}
  .reco-head-right .k-switch{align-self:flex-start;}
  .panel .btn-line{min-height:30px;}
  .panel .btn-gold{min-height:38px;}

  /* 推荐号码 hero */
  .hero{padding:13px 12px 18px;row-gap:9px;}
  .hero-body{gap:10px;row-gap:8px;}
  .hero-balls{gap:6px;padding-bottom:14px;}
  .ball{width:31px;height:31px;font-size:15px;}
  .ball .pos-label{font-size:8.5px;bottom:-11px;letter-spacing:0;}
  .hero-issue,.hero-next{font-size:11px;letter-spacing:1px;}
  .hero-issue b{font-size:13px;}

  /* 冷热号榜：所有号位一律单列 */
  .posrank-grid,.posrank-grid.cols3,.posrank-grid.cols4,
  .posrank-grid.cols5,.posrank-grid.cols6,.posrank-grid.cols7{grid-template-columns:1fr;gap:10px;}
  .posrank-block+.posrank-block{margin-top:18px;padding-top:14px;}
  .posrank-head{font-size:15px;gap:8px;margin-bottom:12px;}
  .posrank-head em{font-size:10.5px;}
  .posrank-card{padding:12px;}
  .posrank-card h5{font-size:14px;letter-spacing:1.5px;padding-bottom:8px;margin-bottom:8px;}
  .posrank-grid .pr-thead,.posrank-grid .pr-list li{column-gap:9px;}
  .posrank-grid.cols3 .pr-thead,.posrank-grid.cols3 .pr-list li{column-gap:8px;justify-content:space-between;}
  .posrank-grid .pr-bar,.posrank-grid .pr-th-bar{max-width:none;}
  .posrank-grid.cols3 .pr-bar,.posrank-grid.cols3 .pr-th-bar{max-width:none;}

  /* 监控中心：表单控件全部整行 */
  .mon-form{padding:12px 10px;border-radius:12px;}
  .mon-kind{display:flex;width:100%;gap:3px;}
  .mk-btn{flex:1;padding:8px 3px;font-size:12px;letter-spacing:0;}
  .mon-inputs{flex-direction:column;align-items:stretch;gap:8px;}
  .mon-code,.mon-combo-wrap,.mon-batch-wrap,.mon-name,
  .mon-sel,.mon-sel.mon-digit,.mon-dp,.mon-dp-btn,.mon-th{width:100%;min-width:0;max-width:none;}
  .mon-batch-wrap{flex:1 1 auto;}
  .mon-pos-wrap{flex-direction:column;align-items:stretch;gap:7px;margin-right:0;width:100%;}
  .mon-dp-btn{text-align:left;}
  .mon-dp-panel{width:min(320px,calc(100vw - 44px));}
  .mon-th{justify-content:space-between;padding:6px 11px;}
  #monTh{width:78px;}
  #monAdd{width:100%;}
  .mon-quick{gap:6px;}
  .mon-chip{font-size:11px;padding:5px 10px;}
  .sms-box{padding:12px;gap:8px;}
  .sms-actions{width:100%;gap:7px;}
  .sms-input{width:100%;}
  #soundBtn{font-size:11px;padding:5px 10px;}
  .mon-list-head{margin-top:16px;}

  /* 监控卡 */
  .mon-list{grid-template-columns:minmax(0,1fr);gap:9px;}
  .mon-item{padding:12px;min-width:0;}
  .mon-item-top{gap:6px;row-gap:6px;margin-bottom:8px;flex-wrap:wrap;min-width:0;}
  .mon-item-code{font-size:15px;min-width:0;max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
  .mon-item .mon-item-note{max-width:92px;}
  .mon-item .mon-saved{font-size:10px;}
  .mon-item-meta{font-size:11px;gap:8px;}
  .mon-multi-toggle{font-size:10.5px;padding:3px 8px;}
  .mon-multi-panel{padding:10px;}
  .mon-combo-grid{max-height:170px;}
  .mon-combo-chip{font-size:11.5px;}
  /* 删除键固定到卡片右上角，避免窄屏换行后单独占一行、被挤到右边留大空洞 */
  .mon-del{width:28px;height:28px;position:absolute;top:11px;right:11px;margin:0;}
  .mon-item-top{padding-right:32px;}
  .mon-tag.alert{font-size:10.5px;padding:2px 9px;}
  .mon-tag.alert::before{width:5px;height:5px;margin-right:4px;}
  .mm-x{width:20px;height:20px;font-size:12px;}
  .mon-stats{padding:12px;margin-top:14px;}
  .mstat-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;}
  .mstat{padding:9px 11px;}
  .mstat .mstat-lab{font-size:10px;letter-spacing:.5px;}
  .mstat .mstat-val{font-size:18px;}
  .mstat .mstat-sub{font-size:9.5px;}
  .mon-alerts-head{margin-top:14px;flex-wrap:wrap;}
  .alert-item{flex-wrap:wrap;gap:5px 9px;padding:9px 11px;font-size:12px;}
  .alert-item .a-code{font-size:13.5px;letter-spacing:1px;}
  .alert-item .a-time{flex:0 0 100%;text-align:right;font-size:10px;}

  /* 概率推荐（两列紧凑） */
  .reco-grid,.reco-grid.cols5,.reco-grid.cols6,.reco-grid.cols7{
    grid-template-columns:repeat(2,minmax(0,1fr));gap:9px;}
  .reco-grid.cols1{grid-template-columns:1fr;}
  .reco-pos{padding:10px 8px;border-radius:12px;}
  .reco-pos h4{font-size:12px;letter-spacing:1px;margin-bottom:7px;}
  .reco-item{padding:6px;gap:6px;margin:5px 0;}
  .reco-num{width:26px;height:26px;font-size:14px;}
  .reco-reason{font-size:10px;line-height:1.35;}
  .reco-score{font-size:9.5px;}
  .reco-note,.reco-meta{font-size:11px;}
  .pool-balls{gap:6px;}
  .pball{min-width:36px;height:36px;font-size:15px;}

  /* 表格：隐藏开奖时间列，宽度让给号码 */
  .table-wrap{max-height:56vh;border-radius:10px;}
  .reco-hist-wrap,.prob-hist-wrap{max-height:340px;}
  .history-table thead th{padding:8px 6px;font-size:11px;letter-spacing:1px;}
  .history-table td{padding:7px 6px;font-size:11.5px;}
  .hist-code{font-size:12.5px;letter-spacing:1px;}
  .reco-hist-table th:nth-child(1),.reco-hist-table td:nth-child(1),
  .prob-hist-table th:nth-child(1),.prob-hist-table td:nth-child(1){display:none;}
  .reco-hist-table th,.reco-hist-table td{padding:7px 5px;}
  .reco-hist-table .col-issue{width:24%;}
  .reco-hist-table .col-rec{width:36%;}
  .reco-hist-table .col-code{width:28%;}
  .reco-hist-table .col-hit{width:12%;}
  .prob-hist-table th,.prob-hist-table td{padding:7px 4px;}
  .prob-hist-table .col-issue{width:17%;}
  .prob-hist-table .col-rec{width:45%;}
  .prob-hist-table .col-code{width:26%;}
  .prob-hist-table .col-hit{width:12%;}
  .hist-balls{gap:4px;}
  .hist-balls .hb{width:20px;height:20px;font-size:11px;}
  .hist-balls.rec.pool{max-width:100%;gap:3px;}
  .hist-balls.rec.pool .hb{width:19px;height:19px;font-size:10px;}
  .prob-groups{gap:5px;}
  .prob-grp{padding:1px 3px;gap:1px;}
  .prob-groups .hb{width:19px;height:19px;font-size:11px;}

  /* 回测表单 */
  .hitrate-form{padding:12px 10px;border-radius:12px;}
  #hrCode{min-width:0;width:100%;flex:1 1 100%;padding:10px 12px;}
  .hr-input-inner .btn-gold{flex:1 1 100%;width:100%;}
  .hr-quick{gap:6px;}
  .hr-chip{font-size:11px;padding:5px 10px;}
  .hr-table th,.hr-table td{padding:8px 6px;font-size:11.5px;}
  .hr-table th{font-size:11px;letter-spacing:0;}

  /* 联系客服 / 页脚 */
  .contact-body{flex-direction:column;gap:14px;}
  .contact-info{min-width:0;gap:10px;}
  .contact-val{font-size:16px;letter-spacing:1px;}
  .contact-qr{align-self:center;padding:10px 10px 8px;}
  .contact-qr img{width:132px;height:132px;padding:6px;}
  .qr-cap::after{content:" · 点击查看清晰";opacity:.72;}
  .foot{font-size:10.5px;line-height:1.75;margin-top:20px;}
  .empty,.loading{font-size:12px;padding:20px;}

  /* 触摸与 iOS 聚焦：输入框 ≥16px 不触发自动放大 */
  input,textarea,select{touch-action:manipulation;}
  #hrCode,#monCode,#monComboCode,#monName,.mm-input,#smsPhone,
  .af-field input,.af-field select,.af-field textarea{font-size:16px;}

  /* 登录页 */
  .login-page{align-items:flex-start;padding:9vh 12px 24px;}
  .login-card{padding:22px 18px 20px;border-radius:16px;}
  .login-brand{gap:11px;margin-bottom:20px;}
  .login-brand h1{font-size:16px;letter-spacing:2px;}
  .login-title{font-size:15px;letter-spacing:3px;}
  .login-card input{font-size:16px;padding:12px 13px;}
  .login-btn{padding:13px;font-size:14.5px;letter-spacing:2px;}

  /* 后台 */
  .admin-tabs{padding:10px 12px 4px;gap:8px;}
  .admin-stats{grid-template-columns:repeat(2,minmax(0,1fr));gap:9px;}
  .admin-form,.admin-form-col{flex-direction:column;align-items:stretch;max-width:none;}
  .af-field{min-width:0;}
  .admin-table .ops-cell .btn-line{padding:4px 8px;font-size:11px;}
}

/* ---------- 小屏（≤400）：再压一档 ---------- */
@media (max-width:400px){
  .container{padding-left:9px;padding-right:9px;}
  .panel{padding:13px 10px;}
  .section-title{font-size:15px;}
  .brand-text h1{font-size:15px;letter-spacing:1px;}
  .ball{width:28px;height:28px;font-size:14px;}
  .posrank-grid .pr-num,.posrank-grid.cols3 .pr-num{width:26px;height:26px;font-size:13px;}
  .mon-item-code{font-size:14px;}
}

/* ---------- 手机端微调（mob1028b） ---------- */
@media (max-width:768px){
  /* 吸顶时省掉状态胶囊，顶栏再薄一点 */
  body.top-compact .pill.pulse{display:none;}

  /* 推荐卡：球与分数一行、原因通栏，窄卡里不再挤成竖排 */
  .reco-grid .reco-item{display:grid;grid-template-columns:auto 1fr;
    grid-template-areas:"num score" "reason reason";align-items:center;gap:4px 6px;}
  .reco-grid .reco-num{grid-area:num;}
  .reco-grid .reco-score{grid-area:score;justify-self:end;margin-left:0;}
  .reco-grid .reco-reason{grid-area:reason;}
  /* 奇数张卡末位跨列，避免右下留空洞 */
  .reco-grid>.reco-pos:last-child:nth-child(odd){grid-column:1 / -1;}

  /* 历史表格：号码组居中，列宽再平衡 */
  .prob-groups{justify-content:center;}
  .prob-hist-table .col-issue{width:18%;}
  .prob-hist-table .col-rec{width:46%;}
  .prob-hist-table .col-code{width:24%;}
  .prob-hist-table .col-hit{width:12%;}
}

/* 手机端：长号码彩种（排列5/七星彩/幸运五星/六合彩）历史表的号码与期号收紧，避免被裁 */
@media (max-width:768px){
  .history-table .hist-code{font-size:12px;letter-spacing:0;}
  .history-table .hist-issue{font-size:10.5px;letter-spacing:0;}
  #historyTable th:nth-child(1),#historyTable td:nth-child(1){width:26%;}
  #historyTable th:nth-child(2),#historyTable td:nth-child(2){width:42%;}
  #historyTable th:nth-child(3),#historyTable td:nth-child(3){width:32%;}
  #historyTable td{padding-left:4px;padding-right:4px;}
}

/* 手机端：推荐 / 概率历史表的号码球再小一档并允许换行，5 位彩种也不裁切 */
@media (max-width:768px){
  .reco-hist-table .col-issue{width:15%;}
  .reco-hist-table .col-rec{width:40%;}
  .reco-hist-table .col-code{width:33%;}
  .reco-hist-table .col-hit{width:12%;}
  .reco-hist-table .hist-balls,
  .prob-hist-table .hist-balls{flex-wrap:wrap;justify-content:center;gap:3px;}
  .reco-hist-table .hb{width:16px;height:16px;font-size:9.5px;}
  .reco-hist-table .hist-balls.rec.pool .hb{width:15px;height:15px;}
  .prob-hist-table .col-issue{width:18%;}
  .prob-hist-table .col-rec{width:40%;}
  .prob-hist-table .col-code{width:30%;}
  .prob-hist-table .col-hit{width:12%;}
  .prob-hist-table .hb{width:15px;height:15px;font-size:9px;}
  .prob-hist-table .prob-groups .hb{width:16px;height:16px;font-size:10px;}
}

/* ---------- 监控卡第二行：累计命中 / 历史最长漏（mob1028c） ---------- */
.mon-item-meta.sub{margin-top:5px;font-size:11px;gap:9px;color:var(--ink-faint);}
.mon-item-meta.sub b{color:var(--ink);font-weight:700;}
.mon-item-meta.sub .hit{color:#5fbf9a;font-weight:600;}
.mon-item-meta.sub .hit b{color:#7fd7ae;}
.mon-item-meta.sub .maxmiss{color:var(--ink-faint);font-weight:600;}
.mon-item-meta.sub .maxmiss b{color:var(--ink-soft);}
.mon-item.triggered .mon-item-meta.sub .maxmiss b{color:#ffb3a6;}
@media (max-width:768px){
  .mon-item-meta.sub{font-size:10.5px;gap:8px;margin-top:4px;}
}

/* 第二行两字段之间加分隔点，避免「（25.00%）历史最长漏」粘连（mob1028e） */
.mon-item-meta.sub{gap:6px;}
.mon-item-meta.sub .maxmiss::before{content:"·";margin-right:6px;color:var(--ink-faint);opacity:.55;}
@media (max-width:768px){ .mon-item-meta.sub{gap:5px;} }

/* ---------- 监控卡：逐号码 chip 分列「当前遗漏 / 历史最长」（histmax） ---------- */
.mon-omit-chip{display:inline-flex;align-items:center;gap:2px;white-space:nowrap;}
.mon-omit-chip .oc-d{font-style:normal;color:var(--ink-faint);font-weight:400;letter-spacing:0;}
.mon-omit-chip .oc-cur{color:#ff8d7a;font-weight:700;margin-left:5px;}
.mon-omit-chip .oc-unit{color:var(--ink-soft);font-weight:400;margin-left:1px;}
.mon-omit-chip .oc-max{font-style:normal;font-size:11px;font-weight:400;color:var(--ink-faint);
  margin-left:8px;padding-left:8px;border-left:1px solid rgba(255,255,255,.1);letter-spacing:0;}
.mon-omit-chip.over .oc-cur{color:#ffb0a2;}
.mon-omit-chip.over .oc-max{color:rgba(255,160,145,.62);border-left-color:rgba(255,120,100,.28);}
@media (max-width:768px){
  .mon-omit-chip .oc-max{font-size:10px;margin-left:6px;padding-left:6px;}
}

/* 手机端：逐号码 chip 行让标签独占一行，号码从左整齐排布（histmax） */
@media (max-width:768px){
  .mon-omit-row{gap:6px;margin-bottom:8px;}
  .mon-omit-lab{flex:0 0 100%;margin-bottom:0;}
  .mon-omit-chip{padding:3px 8px;font-size:12px;}
}


/* ---------- 跨彩种预警横幅 + 呼吸光环 ---------- */
.mon-alarm-banner{
  display:flex;align-items:center;gap:11px;
  margin:0 0 14px;padding:11px 15px;border-radius:11px;
  background:linear-gradient(95deg, rgba(var(--alert-rgb),.22), rgba(var(--alert-rgb),.08) 55%, rgba(var(--gold-rgb),.06));
  border:1px solid rgba(var(--alert-rgb),.62);
  box-shadow:0 0 0 1px rgba(var(--alert-rgb),.14), 0 8px 22px rgba(0,0,0,.28);
  color:#ffe4dc;font-weight:600;font-size:14px;line-height:1.4;
  animation:bannerPulse 1.7s ease-in-out 7;   /* ≈12 秒，与横幅自动收起同步 */
}
.mon-alarm-banner[hidden]{display:none;}
.mon-alarm-banner .ab-ico{
  flex:0 0 auto;width:11px;height:11px;border-radius:50%;
  background:#ff5a3e;
  box-shadow:0 0 8px rgba(var(--alert-rgb),.95), 0 0 18px rgba(var(--alert-rgb),.6);
  animation:abDot 1.1s ease-in-out 11;
}
.mon-alarm-banner .ab-txt{flex:1 1 auto;min-width:0;}
.mon-alarm-banner .ab-close{
  flex:0 0 auto;margin-left:auto;background:transparent;border:0;cursor:pointer;
  color:var(--gold-hi);font-size:18px;line-height:1;opacity:.7;padding:2px 6px;border-radius:6px;
}
.mon-alarm-banner .ab-close:hover{opacity:1;background:rgba(var(--gold-rgb),.16);}
/* 手机端：横幅窄屏收紧，避免换行过多把监控列表顶下去 */
@media (max-width:768px){
  .mon-alarm-banner{font-size:12.5px;line-height:1.45;padding:9px 12px;gap:8px;border-radius:9px;margin-bottom:11px;}
  .mon-alarm-banner .ab-ico{width:9px;height:9px;}
  .mon-alarm-banner .ab-close{font-size:16px;padding:0 4px;}
}
@keyframes bannerPulse{
  0%,100%{box-shadow:0 0 0 1px rgba(var(--alert-rgb),.14), 0 8px 22px rgba(0,0,0,.28), 0 0 0 0 rgba(var(--alert-rgb),0);}
  50%{box-shadow:0 0 0 1px rgba(var(--alert-rgb),.26), 0 8px 26px rgba(0,0,0,.32), 0 0 16px 2px rgba(var(--alert-rgb),.34);}
}
@keyframes abDot{0%,100%{transform:scale(.82);opacity:.7;}50%{transform:scale(1.18);opacity:1;}}

/* 刚触发预警的监控项 / 告警记录：呼吸光环（只闪 13 轮 ≈ 19.5 秒后自动停，
   CSS 侧限定次数，JS 侧另有 HALO_MS 计时器兜底，双保险不会一直闪）。
   用固定的告警红而不是主题色：蓝/紫主题下用主题色会像“正常高亮”，失去危机感 */
.mon-item.alarm-halo{
  position:relative;z-index:2;
  border-color:rgba(var(--alert-rgb),.9) !important;
  animation:alarmBreath 1.5s ease-in-out 13;
}
.alert-item.alarm-halo{
  border-left:3px solid rgb(var(--alert-rgb));
  background:rgba(var(--alert-rgb),.10);
  animation:alarmBreath 1.5s ease-in-out 13;
}
@keyframes alarmBreath{
  0%,100%{box-shadow:0 0 0 2px rgba(var(--alert-rgb),.18), 0 0 14px 2px rgba(var(--alert-rgb),.22);}
  50%{box-shadow:0 0 0 4px rgba(var(--alert-rgb),.5), 0 0 28px 6px rgba(var(--alert-rgb),.46);}
}
@media (prefers-reduced-motion: reduce){
  .mon-alarm-banner,.mon-alarm-banner .ab-ico,.mon-item.alarm-halo,.alert-item.alarm-halo{
    animation:none !important;
  }
  .mon-item.alarm-halo{border-color:rgba(var(--alert-rgb),.9) !important;box-shadow:0 0 16px 2px rgba(var(--alert-rgb),.4);}
  .alert-item.alarm-halo{box-shadow:0 0 12px rgba(var(--alert-rgb),.35);}
}

/* ============================================================
   账号信息（本人账号 · 自助改密）
   与监控面板同一套暖金表面，不额外加浅色块
   ============================================================ */
.acct-body{display:grid;grid-template-columns:minmax(0,1.05fr) minmax(0,1fr);gap:18px;margin-top:4px;
  align-items:start;}
.acct-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;}
.acct-item{
  display:flex;flex-direction:column;gap:5px;
  padding:11px 14px;border-radius:12px;
  background:linear-gradient(180deg,rgba(var(--panel-hi),.55),rgba(var(--panel-lo),.55));
  border:1px solid var(--line-soft);
}
.acct-k{font-size:11.5px;letter-spacing:1px;color:var(--ink-faint);}
.acct-v{font-size:13.5px;color:var(--ink);letter-spacing:.4px;word-break:break-all;line-height:1.5;}
.acct-pwd{
  display:flex;flex-direction:column;
  padding:14px 16px;border-radius:12px;
  background:linear-gradient(180deg,rgba(var(--panel-hi),.42),rgba(var(--panel-lo),.5));
  border:1px solid var(--line-soft);
}
.acct-pwd-head{display:flex;align-items:baseline;gap:10px;flex-wrap:wrap;margin-bottom:12px;}
.acct-pwd-head b{font-size:13.5px;color:var(--ink);letter-spacing:.6px;font-weight:600;}
.acct-pwd-head em{font-size:11.5px;color:var(--ink-faint);font-style:normal;letter-spacing:.4px;flex:1;min-width:0;}
/* 改密入口：默认收起，点开才出现三个密码框 */
.acct-pwd-toggle{
  margin-left:auto;flex:0 0 auto;padding:7px 16px;border-radius:9px;
  font-size:12.5px;letter-spacing:.5px;
}
.acct-pwd-toggle.on{color:var(--gold-hi);border-color:rgba(var(--gold-rgb),.5);}
.acct-pwd-form{display:flex;flex-direction:column;gap:10px;flex:1;min-height:0;}
.acct-pwd-form[hidden]{display:none;}
.acct-field{display:grid;grid-template-columns:84px minmax(0,1fr);align-items:center;gap:10px;min-width:0;}
.acct-field span{font-size:11.5px;color:var(--ink-faint);letter-spacing:1px;}
.acct-field input{
  width:100%;padding:10px 12px;border-radius:10px;
  background:rgba(var(--sf2),.85);border:1px solid var(--line);
  color:var(--ink);font-size:13.5px;font-family:var(--sans);letter-spacing:.6px;
  transition:border-color .25s ease,box-shadow .25s ease;
}
.acct-field input::placeholder{color:rgba(172,151,128,.66);}
.acct-field input:focus{outline:none;border-color:rgba(var(--gold-rgb),.6);box-shadow:0 0 0 3px rgba(var(--gold-rgb),.12);}
.acct-pwd-actions{display:flex;align-items:center;gap:10px;margin-top:auto;padding-top:4px;flex-wrap:wrap;}
.acct-pwd-actions .btn-line{margin-left:0;}   /* 覆盖全局 .btn-line 的 margin-left:auto */
.acct-save{padding:10px 26px;border-radius:10px;font-size:13px;}
.acct-cancel{padding:9px 18px;border-radius:10px;font-size:12.5px;}
.acct-msg{margin-top:10px;min-height:18px;}
.acct-msg.ok{color:#8fd8b0;}

@media (max-width:980px){
  .acct-body{grid-template-columns:minmax(0,1fr);}
}
@media (max-width:768px){
  .acct-grid{grid-template-columns:minmax(0,1fr);}
  .acct-field{grid-template-columns:minmax(0,1fr);gap:6px;}
  .acct-pwd-head em{display:none;}
  .acct-pwd-toggle{margin-left:0;}
  .acct-pwd-actions{flex-direction:column-reverse;align-items:stretch;}
  .acct-save,.acct-cancel{width:100%;}
}
